Index: tags/2.8.3/CHANGELOG
===================================================================
--- tags/2.8.3/CHANGELOG	(nonexistent)
+++ tags/2.8.3/CHANGELOG	(revision 1610)
@@ -0,0 +1,2677 @@
+Change Log
+===============================================================================
+Please note: This change log may not be accurate
+
+$Id$
+
+Legend:
++ = Added
+- = Removed
+# = Bugfix
+! = Update/Change
+===============================================================================
+
+
+----------------------------------- 2.8.3 --------------------------------
+09 Feb-2012 Build 1609 Dietmar Woellbrink (Luisehahne)
+! change Website Baker to WebsiteBaker in installer
+09 Feb-2012 Build 1608 Dietmar Woellbrink (Luisehahne)
+! A small optical correction of the installer.
+09 Feb-2012 Build 1607 Dietmar Woellbrink (Luisehahne)
+# typofix in /modules/form/view.php (Tks to jacobi22)
+08 Feb-2012 Build 1606 Dietmar Woellbrink (Luisehahne)
+# some little changes and fixes in template allcss and round
++ add // register_frontend_modfiles('jquery'); to activate comment out
+! Set version to 2.71
+08 Feb-2012 Build 1605 Dietmar Woellbrink (Luisehahne)
+! login.php fallback to revision 1602
+08 Feb-2012 Build 1604 Dietmar Woellbrink (Luisehahne)
+# fixed parse error in login.php
+08 Feb-2012 Build 1603 Dietmar Woellbrink (Luisehahne)
+! fix local module reload and module manuell install
+! forgot to upload login.php
+08 Feb-2012 Build 1602 Dietmar Woellbrink (Luisehahne)
+! a quick simple stylesheet fix in wb_theme, 
+07 Feb-2012 Build 1601 Dietmar Woellbrink (Luisehahne)
+! little designfix in forgot_form.php
+! fix media if uploading zip files with folder, than create FolderProtectFiles
+07 Feb-2012 Build 1600 Dietmar Woellbrink (Luisehahne)
+# more fixed issues with get_magic_quotes_gpc and FCKeditor
+! remove create and upload in FCKeditor Filemanager
+06 Feb-2012 Build 1599 Dietmar Woellbrink (Luisehahne)
+! update all used files with redirect_url to $_SESSION['HTTP_REFERER']
+06 Feb-2012 Build 1598 Dietmar Woellbrink (Luisehahne)
+# fixed undefined fragment index in initialize.php 
+! add $_SESSION['HTTP_REFERER'] storing active pagelink if page_id != 0
+05 Feb-2012 Build 1597 Dietmar Woellbrink (Luisehahne)
+# fixed issues with get_magic_quotes_gpc and FCKeditor
+04 Feb-2012 Build 1596 Dietmar Woellbrink (Luisehahne)
+# highly critical security-fix
+# announced on http://www.darksecurity.de/advisories/2012/SSCHADV2012-003.txt
+04 Feb-2012 Build 1595 Dietmar Woellbrink (Luisehahne)
+# fix form language vars for better understanding (Tks to Maverik)
+! change request if HTTP_REFERER is not empty in logout.php 
+03 Feb-2012 Build 1594 Dietmar Woellbrink (Luisehahne)
+# fixed use of undefined constant fri in /form/view.php
+01 Feb-2012 Build 1593 Dietmar Woellbrink (Luisehahne)
+# rebuild protectfile in pages/posts
+31 Jan-2012 Build 1592 Werner v.d.Decken(DarkViper)
+# little Typo-fix in database::SqlImport(). (grummel)
+31 Jan-2012 Build 1591 Werner v.d.Decken(DarkViper)
+# little Regex-fix in database::SqlImport().
+25 Jan-2012 Build 1590 Werner v.d.Decken(DarkViper)
+! mod form: added request var to submit a request identifier.
+! argument ?fri=12345 on GET-view will submit 'FormRequestId: 12345' by email
+25 Jan-2012 Build 1589 Dietmar Woellbrink (Luisehahne)
+# fixed starting upgrade-script if missing revision in settings
+25 Jan-2012 Build 1588 Werner v.d.Decken(DarkViper)
+# all module depending code removed, some little fixes, better integration for module-upgrade
+25 Jan-2012 Build 1587 Werner v.d.Decken(DarkViper)
++ module news: added sql-dump to create database tables
+# module news: some little fixes in install/upgrade
+24 Jan-2012 Build 1586 Werner v.d.Decken(DarkViper)
++ added new method SqlImport() to class database
+19 Jan-2012 Build 1585 Dietmar Woellbrink (Luisehahne)
+# fixed double table width in modify.php form module ((Tks to Ruebenwurzel)
+19 Jan-2012 Build 1584 Dietmar Woellbrink (Luisehahne)
+! form module, shows email-adress from body tag
+- remove scrollable table in overview form module 
+19 Jan-2012 Build 1583 Dietmar Woellbrink (Luisehahne)
+! forgot upload save.php in wysiwyg module
+19 Jan-2012 Build 1582 Dietmar Woellbrink (Luisehahne)
+# wysiwyg module, fix issues with magic_quote_gpc if on
+# form module, fix regex for radio and checkbox (Tks to Ruud)
+! form module, make show submission table scrollable
+17 Jan-2012 Build 1581 Werner v.d.Decken(DarkViper)
+# wysiwyg module some little typo fixes a.s.o.
+17 Jan-2012 Build 1580 Dietmar Woellbrink (Luisehahne)
+! dropdown list to choose recipient for email confirmation
+16 Jan-2012 Build 1579 Dietmar Woellbrink (Luisehahne)
+- remove unneeded input fields in form settings
+16 Jan-2012 Build 1578 Dietmar Woellbrink (Luisehahne)
+# fixed warning in domain independend image links
+16 Jan-2012 Build 1577 Dietmar Woellbrink (Luisehahne)
+# fixed save dirmode and filmode to 0 if not superadmin
+16 Jan-2012 Build 1576 Werner v.d.Decken(DarkViper)
+# wysiwyg module changed to domain independend image links
+16 Jan-2012 Build 1575 Dietmar Woellbrink (Luisehahne)
+# fixed captcha error message in form module
+! set form module to version 2.8.4
+16 Jan-2012 Build 1574 Dietmar Woellbrink (Luisehahne)
++ add instruction README.de.txt in form module
+! update jquery to jQuery 1.7.1 and jQuery UI 1.8.17
+16 Jan-2012 Build 1573 Dietmar Woellbrink (Luisehahne)
++ add automatically generated e-mail language form variable
+! send confirmation mail with details to superadmin from SERVER_EMAIL
+! send confirmation mail without details to sender from SERVER_EMAIL
+14 Jan-2012 Build 1572 Dietmar Woellbrink (Luisehahne)
+! security fix, force SMTP Authentifikation
+! server and email settings only for superadmin
+12 Jan-2012 Build 1571 Dietmar Woellbrink (Luisehahne)
+# remove session_start() in /account/logout.php
+10 Jan-2012 Build 1570 Dietmar Woellbrink (Luisehahne)
+!  added $module_directory to make quickskin directory changes dynamically
+10 Jan-2012 Build 1569 Werner v.d.Decken(DarkViper)
+# possible errors on 'save password' fixed. Minimum length of password set to 6 chars
+10 Jan-2012 Build 1568 Dietmar Woellbrink (Luisehahne)
+! fix show_menu2 2th parameter for template round and allcss (Tks to Ruebenwurzel)
+! set fingerprint_with_ip_octets default to 2 in a new installation
+07 Jan-2012 Build 1567 Dietmar Woellbrink (Luisehahne)
+# fix wbmailer_smtp_auth, could not be disabled after enabled 
+07 Jan-2012 Build 1566 Dietmar Woellbrink (Luisehahne)
+# fix class.login, when name and pass are both empty no longer call increase_attemps
+! some redirect updates in frontend account files
+06 Jan-2012 Build 1565 Dietmar Woellbrink (Luisehahne)
+! fixed:: detection of serverdefined charsets more different
+06 Jan-2012 Build 1564 Dietmar Woellbrink (Luisehahne)
+# entities fixes in FI and TR languages files (Tks to Ruebenwurzel)
+06 Jan-2012 Build 1563 Dietmar Woellbrink (Luisehahne)
+! add linebreak in backend message for 'delete install folder...' 
+05 Jan-2012 Build 1562 Dietmar Woellbrink (Luisehahne)
+! only superadmin can start the upgrade-script from backend
+05 Jan-2012 Build 1561 Dietmar Woellbrink (Luisehahne)
+# secureForm Fix for hosting with load balancing
+04 Jan-2012 Build 1560 Dietmar Woellbrink (Luisehahne)
+! upgrade script start automatically after uploading a new version and login to the backend
+04 Jan-2012 Build 1559 Dietmar Woellbrink (Luisehahne)
+! change quickSkin to alpha status, ATTENTION rename folder to quickSkin_alpha 
+02 Jan-2012 Build 1558 Dietmar Woellbrink (Luisehahne)
+# remove backslash in $_CONFIG['extensions_dir']
+! update editor.css for allcssand round  (Tks to Ruebenwurzel)
+# bugfix in forgot_form.php
+02 Jan-2012 Build 1556 Dietmar Woellbrink (Luisehahne)
+# typofix in function make_dir
+02 Jan-2012 Build 1555 Dietmar Woellbrink (Luisehahne)
+! wb_quickSkin_28.php create _skin folders with folder protect file 
+! add a 3th parameter to function make_dir to allows the creation of nested directories specified in the pathname. Defaults to TRUE
+01 Jan-2012 Build 1554 Dietmar Woellbrink (Luisehahne)
+# typofixes in DE languages files (Tks to Ruebenwurzel)
+31 Dez-2011 Build 1553 Dietmar Woellbrink (Luisehahne)
+! recoded  formmodul, add dropdown email_fromname_field
+31 Dez-2011 Build 1552 Dietmar Woellbrink (Luisehahne)
+# fix mdcr.js $scriptLink to absolute url
+! change separator breadcrumb admintools
+27 Dez-2011 Build 1551 Dietmar Woellbrink (Luisehahne)
++ add languages vars in languages files
++ add upload error mesages moduleinstall
++ add index.php if not exists in function createFolderProtectFile
+! corrected changed coding between login_form and forgot_form
+21 Dez-2011 Build 1550 Dietmar Woellbrink (Luisehahne)
+! update php mailer to version 5.2
+19 Dez-2011 Build 1549 Dietmar Woellbrink (Luisehahne)
+! christmas time corrected wrong files
+19 Dez-2011 Build 1548 Dietmar Woellbrink (Luisehahne)
+- remove quickSkin /temp/folder/ for a later solution
+18 Dez-2011 Build 1547 Dietmar Woellbrink (Luisehahne)
++ forgot a file in quickSkin Folder
+18 Dez-2011 Build 1546 Dietmar Woellbrink (Luisehahne)
+! recoded /account/forgot_form.php
+! update quickSkin 
+! update languages files 
++ add /temp/quickSkin/ folder
+! begin fixing sec_anchor in urls
+15 Dez-2011 Build 1545 Dietmar Woellbrink (Luisehahne)
+! update admin/pages/modify.php now you can send page_id with GET and POST
+15 Dez-2011 Build 1544 Dietmar Woellbrink (Luisehahne)
+# fix droplet import after new wb installtion
+14 Dez-2011 Build 1543 Dietmar Woellbrink (Luisehahne)
+# fix droplet sectionPicker
+# fix install config.php not writeable 
+# check table droplet if empty import examples
+12 Dez-2011 Build 1542 Dietmar Woellbrink (Luisehahne)
+# fix wrong background url in "Website Under Construction"
+12 Dez-2011 Build 1541 Dietmar Woellbrink (Luisehahne)
+! change block BEGIN to LOOP in quickskin (Tks to Stefek)
+11 Dez-2011 Build 1540 Dietmar Woellbrink (Luisehahne)
+! did some changes and fixes found by testers
+10 Dez-2011 Build 1539 Dietmar Woellbrink (Luisehahne)
+! update phpmailer to version 5.1
+10 Dez-2011 Build 1538 Dietmar Woellbrink (Luisehahne)
+! add table db engine in module install scripts
+! some small updates in modules
+10 Dez-2011 Build 1537 Dietmar Woellbrink (Luisehahne)
+! continue updating headerinfos, adding upgrade scripts to module
+10 Dez-2011 Build 1536 Dietmar Woellbrink (Luisehahne)
++ add upgrade.php to captcha_control and small changes
++ add FolderProtectFile to quickskin
+10 Dez-2011 Build 1535 Dietmar Woellbrink (Luisehahne)
+! changes in code modul
++ add function getTableEngine to class.database 
++ add Quickskin to include folder
++ add reworkes Droplet SectionPicker to load modules frontend.css
+08 Dez-2011 Build 1534 Werner v.d.Decken(DarkViper)
+# /output_filter/filter-routines.php rel-URL Filter fixed for mailto-links
+08 Dez-2011 Build 1533 Dietmar Woellbrink (Luisehahne)
++ new backend theme handling (Tks to Stefek)
+# some fixes in install
+28 Nov-2011 Build 1532 Dietmar Woellbrink (Luisehahne)
+! small changes in INSTALL and UPGRADE (Tks to unawave2)
+! update upgrade-script showing from Version to Version (Tks to unawave2)
++ add Servicepack version to header.htt
+28 Nov-2011 Build 1531 Dietmar Woellbrink (Luisehahne)
+! add Instructions for droplets
+27 Nov-2011 Build 1530 Dietmar Woellbrink (Luisehahne)
+! update templates allcss and round (Tks to Rübenwurzel)
++ Add UPGRADE Instructions
+! Update INSTALL Instructions
+! Optimize config.php handling for installation
+25 Nov-2011 Build 1529 Dietmar Woellbrink (Luisehahne)
++ add new backend theme handling (Tks to Stefek)
+----------------------------------- Fixes 2.8.2 --------------------------------
+23 Nov-2011 Build 1528 Dietmar Woellbrink (Luisehahne)
+! rework login and show_menu in templates allcss and round 
+22 Nov-2011 Build 1527 Dietmar Woellbrink (Luisehahne)
+# fix redirect login
+20 Nov-2011 Build 1526 Dietmar Woellbrink (Luisehahne)
+# typofix in BG and RU
+15 Nov-2011 Build 1525 Dietmar Woellbrink (Luisehahne)
+# fix versions compare upgrade from WB version 2.7
+13 Nov-2011 Build 1524 Dietmar Woellbrink (Luisehahne)
+! fix secureform was not uploaded
+13 Nov-2011 Build 1523 Dietmar Woellbrink (Luisehahne)
+# fix fingerprint in secureform 
+! update jquery to version 1.7
+12 Nov-2011 Build 1522 Werner v.d.Decken(DarkViper)
+# /modules/output_filter/filter-routines.php little fix to inserting mdcr.js
+# /modules/form/view.php little fix depending from recoded output filter
+09 Nov-2011 Build 1521 Dietmar Woellbrink (Luisehahne)
+! update jquery to version 1.6.4
+09 Nov-2011 Build 1520 Werner v.d.Decken(DarkViper)
+! /modules/output_filter completely recoded
++ new filter for relative-URL added
++ some small fixes
+! /admin/admintools/tool.php completely recoded
+! /wb/index.php output_filter request changed to adopt new output_filter
+08 Nov-2011 Build 1519 Dietmar Woellbrink (Luisehahne)
+! corrected properties
+26 Okt-2011 Build 1518 Dietmar Woellbrink (Luisehahne)
+# fix anchor jump in sections (not work correctly with CKEditor)
+24 Okt-2011 Build 1517 Dietmar Woellbrink (Luisehahne)
+# fix SERVER_EMAIL in language files
+# fix encoded text in sections.php
++ add missing image in argos_theme
+05 Okt-2011 Build 1516 Dietmar Woellbrink (Luisehahne)
++ add forgotten language variable
+05 Okt-2011 Build 1515 Dietmar Woellbrink (Luisehahne)
+# typofix and changes in languages
+04 Okt-2011 Build 1514 Dietmar Woellbrink (Luisehahne)
+# account/signup.php, check if user is already logged
+# fix non object message in framework/functions.php
+04 Okt-2011 Build 1513 Dietmar Woellbrink (Luisehahne)
+! outputfilter now check and add missing slash in empty href if relative urls are enabled
+24 Sep-2011 Build 1512 Werner v.d.Decken(DarkViper)
+! settings for pwgen updated
+14 Sep-2011 Build 1511 Dietmar Woellbrink (Luisehahne)
+# fixed strict notice warning in class.wb
+! change editor for intropage to editarea
+! add missing slash in themes
+14 Sep-2011 Build 1510 Werner v.d.Decken(DarkViper)
++ new constant 'DO_NOT_TRACK' set to true if a client sends the DNT-Header
+07 Sep-2011 Build 1509 Dietmar Woellbrink (Luisehahne)
+# continue fixing frontend account
+07 Sep-2011 Build 1508 Dietmar Woellbrink (Luisehahne)
+# fixed print_error exit in frontend account
+06 Sep-2011 Build 1507 Dietmar Woellbrink (Luisehahne)
+# fixed field_remove
+26 Aug-2011 Build 1506 Werner v.d.Decken(DarkViper)
++ new class PasswordHash
++ new Password-/Hash-generator
+19 Aug-2011 Build 1505 Dietmar Woellbrink (Luisehahne)
+# syntaxfix order::clean()
+19 Aug-2011 Build 1504 Werner v.d.Decken(DarkViper)
+# fixed order::clean()
+18 Aug-2011 Build 1503 Dietmar Woellbrink (Luisehahne)
+! change sql statements to strict in module droplets
+! fix vars in compatibility mode for versions before 2.8.1 in frontend.functions.php
+11 Aug-2011 Build 1502 Werner v.d.Decken(DarkViper)
+# fixed c&p mistake
+11 Aug-2011 Build 1501 Werner v.d.Decken(DarkViper)
+- removed stoneaged code from 2.4
+11 Aug-2011 Build 1500 Werner v.d.Decken(DarkViper)
+# sync working copy
+11 Aug-2011 Build 1499 Werner v.d.Decken(DarkViper)
+# little fix in calling globalExceptionHandler from inner core files
+11 Aug-2011 Build 1498 Werner v.d.Decken(DarkViper)
+# fixed secureform
+11 Aug-2011 Build 1497 Werner v.d.Decken(DarkViper)
+! sync changelog
+11 Aug-2011 Build 1496 Werner v.d.Decken(DarkViper)
+! activate globalExceptionHandler in inner core files
+11 Aug-2011 Build 1495 Werner v.d.Decken(DarkViper)
+# fix SQL-statements to SQL-strict
+11 Aug-2011 Build 1494 Dietmar Woellbrink (Luisehahne)
+# Fixed save wrong template directory in database 
+11 Aug-2011 Build 1493 Dietmar Woellbrink (Luisehahne)
+# Ticket #1106 FatalError in groups module
+11 Aug-2011 Build 1492 Dietmar Woellbrink (Luisehahne)
+# Ticket #1107 Deleting users not possible
+  Change handling, first user will be set to inactive
+  secound inactive user will be show in an extra dropdown
+  and can now deleted from user table or reactivated
+11 Aug-2011 Build 1491 Dietmar Woellbrink (Luisehahne)
+! comment out $email_body .= "\n\nIP: ".$_SERVER['REMOTE_ADDR'];
+11 Aug-2011 Build 1490 Dietmar Woellbrink (Luisehahne)
+! set default  FCKConfig.FillEmptyBlocks to true
+11 Aug-2011 Build 1489 Werner v.d.Decken(DarkViper)
++ little fix in globalExceptionHandler
+11 Aug-2011 Build 1488 Werner v.d.Decken(DarkViper)
++ globalExceptionHandler activated
+10 Aug-2011 Build 1487 Werner v.d.Decken(DarkViper)
+# class.order completely recoded to reduce SQL requests
+# all other files: fix SQL-statements to SQL-strict
+08 Aug-2011 Build 1486 Werner v.d.Decken(DarkViper)
+# database::field_modify() there was a bug to fix
+# all other files: fix SQL-statements to SQL-strict
+01 Aug-2011 Build 1485 Dietmar Woellbrink (Luisehahne)
+! rename config.php.bak to config.php.new
+# fixed rss.php SERVER_EMAIL
+31 Jul-2011 Build 1484 Dietmar Woellbrink (Luisehahne)
+! move fixes 2.8.2 to 2.8.3
+! fixes will be shown in an extra readme
+! an package with the fixed files will be created
+! for all users who downloaded the 2.8.2 before 29 Jul-2011
+------------------------------------- 2.8.2 ------------------------------------
+25 Jul-2011 Build 1480 Dietmar Woellbrink (Luisehahne)
+! Changed version to 2.8.2
+25 Jul-2011 Build 1479 Dietmar Woellbrink (Luisehahne)
+! preparing backend for the new installer
++ add SecureFormSwitcher (Admintool)
+22 Jul-2011 Build 1478 Dietmar Woellbrink (Luisehahne)
+# fix mssing filename in intro.php
+! inactive user in dropwonlist are show with line-through
+21 Jul-2011 Build 1477 Dietmar Woellbrink (Luisehahne)
+! update DA language (Tks to Achrist)
+! update some languages variables (Tks to Rübenwurzel, Testör)
+! move function url_encode from admin/pages to framework/functions.php 
+! add missing svn properties in some headerinfos
+! font-size correction in wb_theme (Tks to Rübenwurzel)
+13 Jul-2011 Build 1476 Dietmar Woellbrink (Luisehahne)
+! optimize blacklist handling, add more separator ",#|;"
+  set of a wildcard ".*?" e.g. ph.*? proof ext like php, php3, php4 etc.
+# fix strict warnings in media if default theme ist not Argos Theme
++ add new settings value in install, upgrade-script and core module
+13 Jul-2011 Build 1476 Dietmar Woellbrink (Luisehahne)
+! optimize blacklist handling, add more separator ",#|;"
+  set of a wildcard ".*?" e.g. ph.*? proof ext like php, php3, php4 etc.
+# fix strict warnings in media if default theme ist not Argos Theme
++ add new settings value in install, upgrade-script and core module
+13 Jul-2011 Build 1475 Dietmar Woellbrink (Luisehahne)
++ add SecureForm.mtab.php under maintenance by WebsiteBaker Community
+! security fixes media, groups, users, sections
+# change lang variable to remove upgrade-script
+! reworked add sections in pages
+! fix set empty href in show_menu2
+! set show_menu2 version to 4.9.6 
+! reworked Droplet LoginBox, add redirect query
+- remove unneeded folder js
+! set Droplet to version 1.1.0
++ add checkboxes to change frontend absolute url to relative urls
+! set output_filter version to 0.2
+12 Jul-2011 Build 1474 Werner v.d.Decken(DarkViper)
+#  for security reasons the 'remember me' functionality is deaktivated in
+   class login
+!  'Get configuration values' is optimized
+09 Jul-2011 Build 1473 Dietmar Woellbrink (Luisehahne)
+# found more backlinks to fix
+- remove not working ftan in frontend
+# fixed redirect in login procedure (Tks to mr-fan)
+! update droplet LoginBox, additional parameter $redirect
+# remove double config call in media (Tks to Testör)
+07 Jul-2011 Build 1472 Dietmar Woellbrink (Luisehahne)
+# fixed version.php
+07 Jul-2011 Build 1471 Dietmar Woellbrink (Luisehahne)
+! change to Release Candiate 7 
+07 Jul-2011 Build 1470 Dietmar Woellbrink (Luisehahne)
+# languages Typo fix (Tks to pcwacht)
+! update intro, fixed saving
+# fixed install/save.php (Tks to pcwacht)
+07 Jul-2011 Build 1469 Dietmar Woellbrink (Luisehahne)
+! Forgotten upload changelog and version.php
+07 Jul-2011 Build 1468 Dietmar Woellbrink (Luisehahne)
+! update jquery-min to version 1.6.2
+! update jquery-ui-min to version 1.8.14
+# fix index error in media upload (Tks to DBS)
++ add missing nopreview.jpg
+! update media browser not to show forbidden files
+- remove unused jquery archiv folder
+02 Jul-2011 Build 1467 Dietmar Woellbrink (Luisehahne)
+! update some headerinfos
+# fix missing header for some error messages
+01 Jul-2011 Build 1466 Dietmar Woellbrink (Luisehahne)
+# fix form modul (tks to our Tester)
+01 Jul-2011 Build 1465 Dietmar Woellbrink (Luisehahne)
+# bugfix in initialize including SecureForm
+! update admintools FTAN handling 
+01 Jul-2011 Build 1464 Werner v.d.Decken(DarkViper)
+#  Ticket 1102 fixed little bug in moveCssToHead() (Tks to Crnogorac081)
+01 Jul-2011 Build 1463 Dietmar Woellbrink (Luisehahne)
+# fixed Ticket 1050 Bug in include/phpmailer/class.phpmailer.php with Lotus Notes
+# fixed Ticket 573, 939 Bad formatting of e-mail received from form submissions
+# fixed Ticket 1009 cannot change user password without changing Email in preference
+30 Jun-2011 Build 1462 Werner v.d.Decken(DarkViper)
++ class-switcher for SecureForm added
+30 Jun-2011 Build 1461 Dietmar Woellbrink (Luisehahne)
+! correct all misspellings on finnish language file (Tks to invisigoth)
+29 Jun-2011 Build 1460 Dietmar Woellbrink (Luisehahne)
+# Ticket 1101, phtml|php5|php4|php|cgi|pl|exe|com|bat|src| will be hardcoded
+  additional you can set more extension in settings extended in field rename_file_types
+  rename_file_types now is a blacklist and will no longer be renamed to .txt
+! update admintools modules to work with SecureForm Patch from NorHei
+26 Jun-2011 Build 1459 Dietmar Woellbrink (Luisehahne)
+# Ticket 1099: change title for add_child_page in page tree
+26 Jun-2011 Build 1458 Dietmar Woellbrink (Luisehahne)
+# Ticket 833 fixed markup for table cells in view.php
+! change themes.css to make style more flexible in success.htt and error.htt
++ backend themes: add js function redirect_to_page(url, timer) to redirect without message
+25 Jun-2011 Build 1457 Dietmar Woellbrink (Luisehahne)
+! Preparing 2.8.2 stable, last tests
+10 Jun-2011 Build 1456 Dietmar Woellbrink (Luisehahne)
++ add PL languages to news and captcha_control (tks to vixrealitum)
+! update PL language for WebsiteBaker (tks to vixrealitum)
+06 Jun-2011 Build 1455 Werner v.d.Decken(DarkViper)
+# fixed Bug-Ticket #1096: editing of files via modules/edit_module_files.php
+06 Jun-2011 Build 1454 Werner v.d.Decken(DarkViper)
+# in /framework/functions.php::media_filename - replace whitespaces by _
+# /upgrade-script.php - some small fixes
+02 Jun-2011 Build 1453 Dietmar Woellbrink (Luisehahne)
+# fix target in admin/media/browse.php 
+# http://www.websitebaker2.org/forum/index.php/topic,21688.msg145812.html#msg145812
+# Tks to the community
+02 Jun-2011 Build 1452 Dietmar Woellbrink (Luisehahne)
+! change status to RC6
+29 May-2011 Build 1451 Dietmar Woellbrink (Luisehahne)
+# replace eregi with pregmatch in search_modext (Tks to Thorn)
+22 May-2011 Build 1450 Werner v.d.Decken(DarkViper)
+# small fix at calling of moveCssToHead() in /index.php
+07 May-2011 Build 1449 Werner v.d.Decken(DarkViper)
+! cleanup some code in edit_module_files.php
+07 May-2011 Build 1448 Dietmar Woellbrink (Luisehahne)
+# secure fix edit_module_files.php
+# fix wb_wrapper_edit_area.php
+03 May-2011 Build 1447 Werner v.d.Decken(DarkViper)
+! syncronice version (no data changes)
+03 May-2011 Build 1446 Werner v.d.Decken(DarkViper)
+# fixed validation of username in users and signup
+27 Apr-2011 Build 1445 Dietmar Woellbrink (Luisehahne)
+# small validation fixes in backend themes
+22 Apr-2011 Build 1444 Dietmar Woellbrink (Luisehahne)
+# fix wrong url in captacha 
+19 Apr-2011 Build 1443 Dietmar Woellbrink (Luisehahne)
+! remove auto including YUI Framework in backend for modules, enable with ->print_footer(true)
+! ->print_error and ->print_success too accept a message as array
+! auto validate in frontend if style block inside body tag
+! captcha now XHTML valide
+15 Apr-2011 Build 1442 Dietmar Woellbrink (Luisehahne)
+# bug fixed in class.database.php methode field_add in call field_exists
+! update search, pls test, (Tks to Thorn)
+10 Apr-2011 Build 1441 Dietmar Woellbrink (Luisehahne)
+# recoded /modules/admin.php info_banner, now compare with modify in pages
+# security fixes remove defined WB_PATH for backend templates
+# fixed class.admin.php missing $TEXT declaration, add get_section_details
+26 Mar-2011 Build 1440 Dietmar Woellbrink (Luisehahne)
+# add missing methode is_group_match in class.wb.php 
+17 Mar-2011 Build 1439 Werner v.d.Decken(DarkViper)
+! syncronice version (no data changes)
+17 Mar-2011 Build 1438 Werner v.d.Decken(DarkViper)
+# little fixes for xhtml-validity in '/include/captcha/captcha.php'
+17 Mar-2011 Build 1437 Werner v.d.Decken(DarkViper)
+# little fixes for xhtml-validity module 'form'
+17 Mar-2011 Build 1436 Dietmar Woellbrink (Luisehahne)
+! update jquery to Version 1.5.1 and jQuery UI to Version 1.8.10
+17 Mar-2011 Build 1435 Dietmar Woellbrink (Luisehahne)
+# fix entities converting in select languages (Tks to the community)
+# see http://www.websitebaker2.org/forum/index.php/topic,20547.msg140512.html#msg140512
+13 Mar-2011 Build 1433 Dietmar Woellbrink (Luisehahne)
+# fixed bug : Call to undefined method wb::preprocess() 
+14 Feb-2011 Build 1432 Dietmar Woellbrink (Luisehahne)
+# update NL language file (Tks to Argos)
+11 Feb-2011 Build 1431 Dietmar Woellbrink (Luisehahne)
++ add page position in get_page_details 
+11 Feb-2011 Build 1430 Dietmar Woellbrink (Luisehahne)
+# fix save settings dir and file mode (Tks to the community)
+09 Feb-2011 Build 1429 Dietmar Woellbrink (Luisehahne)
+# add forgotten javascript variable
+07 Feb-2011 Build 1428 Dietmar Woellbrink (Luisehahne)
+! update Argostheme to version 1.5 (Tks to Argos)
+! validation fixes
+! call edit_full_area on the fly
+04 Feb-2011 Build 1427 Dietmar Woellbrink (Luisehahne)
+! validation fixes in wb_theme
+04 Feb-2011 Build 1426 Dietmar Woellbrink (Luisehahne)
+! validation fixes
+04 Feb-2011 Build 1425 Dietmar Woellbrink (Luisehahne)
+! redefined wrong admin backlinks
+31 Jan-2011 Build 1424 Werner v.d.Decken(DarkViper)
+# typo fix and simplify used_octets calculation
+30 Jan-2011 Build 1423 Werner v.d.Decken(DarkViper)
+! add FINGERPRINT_WITH_IP_OCTETS to table settings
+30 Jan-2011 Build 1422 Dietmar Woellbrink (Luisehahne)
+! update SecureForm.php to work behind Proxies
+27 Jan-2011 Build 1421 Dietmar Woellbrink (Luisehahne)
+# fix Undefined index: WARN_PAGE_LEAVE
+26 Jan-2011 Build 1420 Dietmar Woellbrink (Luisehahne)
+# YGN Ethical Hacker Group (2.8.2 / 2.9.0)
+26 Jan-2011 Build 1419 Dietmar Woellbrink (Luisehahne)
+! update rel handling FCKeditor for urls
+25 Jan-2011 Build 1418 Dietmar Woellbrink (Luisehahne)
+# remove new function see http://www.websitebaker2.org/forum/index.php/topic,20268.msg139557.html#msg139557
+24 Jan-2011 Build 1417 Dietmar Woellbrink (Luisehahne)
+! add redirect timer description in settings.php
+24 Jan-2011 Build 1416 Dietmar Woellbrink (Luisehahne)
+# fixed unsafe sql queries
+24 Jan-2011 Build 1415 Werner v.d.Decken(DarkViper)
+# fixed unsafe sql queries
+23 Jan-2011 Build 1414 Dietmar Woellbrink (Luisehahne)
+# fix wrong error message in media
+! backend start warning if upgrade-script exists
+23 Jan-2011 Build 1413 Frank Heyne (FrankH)
+# Bugfix for Ticket 900
+23 Jan-2011 Build 1412 Werner v.d.Decken(DarkViper)
+# fixed wb::password_chars 
+23 Jan-2011 Build 1411 Frank Heyne (FrankH)
+# Bugfix for Tickets 965, 966 and 910
+23 Jan-2011 Build 1410 Frank Heyne (FrankH)
+# Bugfix for build 1409
+23 Jan-2011 Build 1409 Frank Heyne (FrankH)
++ Ticket 1058 added warn_page_leave (currently only in wysiwyg) 
+23 Jan-2011 Build 1408 Werner v.d.Decken(DarkViper)
+# small changes in sm2menu() [SM2_NO_TITLE + SM2_XHTML_STRICT]
+22 Jan-2011 Build 1407 Frank Heyne (FrankH)
+# various Security fixes, thanks to secunia and others 
+22 Jan-2011 Build 1406 Frank Heyne (FrankH)
+# Security fix to stop users from changing module contents without permission, thanks to Michael Schwarz 
+22 Jan-2011 Build 1405 Frank Heyne (FrankH)
+# Security fix (XSS) in form module, thanks to Michael Schwarz 
+22 Jan-2011 Build 1404 Dietmar Woellbrink (Luisehahne)
+# Security fix in pages 
+22 Jan-2011 Build 1403 Dietmar Woellbrink (Luisehahne)
+! small fix
+22 Jan-2011 Build 1402 Dietmar Woellbrink (Luisehahne)
+! secure peparing and beginning fix admin/pages
+21 Jan-2011 Build 1401 Frank Heyne (FrankH)
+! fixed changelog
+21 Jan-2011 Build 1400 Frank Heyne (FrankH)
+# Security fix in account 
+# Security fix in admin/media, thanks to hal 9000
+21 Jan-2011 Build 1399 Dietmar Woellbrink (Luisehahne)
+# Ticket 1090 fix wrong translation
+20 Jan-2011 Build 1398 Frank Heyne (FrankH)
+# Security fix in admin/admintools and admin/groups
+20 Jan-2011 Build 1397 Dietmar Woellbrink (Luisehahne)
+! recoded rediect timer in print_success (tks to Chio)
+19 Jan-2011 Build 1396 Werner von den Decken (DarkViper)
+! remove header redirect and add a die message 
+17 Jan-2011 Build 1395 Frank Heyne (FrankH)
+# Security fix in admin/addons
+16 Jan-2011 Build 1394 Dietmar Woellbrink (Luisehahne)
+! set construct to FRONTEND class.wb
+! set 2.8.2 to RC5
+16 Jan-2011 Build 1393 Frank Heyne (FrankH)
+# Bugfix in Security fix
+16 Jan-2011 Build 1392 Dietmar Woellbrink (Luisehahne)
+! update headerinfos, change secure messages
+16 Jan-2011 Build 1389-1391 Frank Heyne (FrankH)
+# Security fixes for modules captcha_control, code and droplets
+16 Jan-2011 Build 1388 Dietmar Woellbrink (Luisehahne)
+# more Security fix for admin/pages
+16 Jan-2011 Build 1387 Dietmar Woellbrink (Luisehahne)
+# fix class.wb
+16 Jan-2011 Build 1386 Dietmar Woellbrink (Luisehahne)
+! update headerinfos
+16 Jan-2011 Build 1385 Frank Heyne (FrankH)
+# Security fix to filter out droplets from user input in news and form modules
+16 Jan-2011 Build 1384 Dietmar Woellbrink (Luisehahne)
+! Security fix in admin/pages
+15 Jan-2011 Build 1383 Frank Heyne (FrankH)
+# Security fix for news module
+# Some more Security fixes, thanks to Gerben van Veenendaal
+14 Jan-2011 Build 1382 Dietmar Woellbrink (Luisehahne)
+# fix known error in drag and drop
+14 Jan-2011 Build 1381 Dietmar Woellbrink (Luisehahne)
+! update admin/modules unpack handling, overwrite newer files
+13 Jan-2011 Build 1380 Dietmar Woellbrink (Luisehahne)
++ output fixings, known error in jsadmin will be fix later
+13 Jan-2011 Build 1379 Werner von den Decken (DarkViper)
+# fix class.admin 
+13 Jan-2011 Build 1378 Werner von den Decken (DarkViper)
+! fixed inclusion of SecureForm
++ added IDNA/Punycode to  wb::validate_email()
+11 Jan-2011 Build 1377 Frank Heyne (FrankH)
+# Security fix for modules jsadmin, menu_link and output_filter
+11 Jan-2011 Build 1376 Frank Heyne (FrankH)
+# Security fix for WYSIWYG module 
+# Security fix for Wrapper module 
+10 Jan-2011 Build 1375 Frank Heyne (FrankH)
+# Security fix for Form module (new version is 2.8)
+# bugfix for delete_field in Form module
+10 Jan-2011 Build 1374 Dietmar Woellbrink (Luisehahne)
+# fixed headerinfos
+10 Jan-2011 Build 1373 Dietmar Woellbrink (Luisehahne)
+! update headerinfos
+10 Jan-2011 Build 1372 Dietmar Woellbrink (Luisehahne)
+# fixed class.wb.php to add class SecureForm
+09 Jan-2011 Build 1371 Dietmar Woellbrink (Luisehahne)
+# captcha patch (Tks to FrankH)
+! set status to 2.8.2 RC4
+09 Jan-2011 Build 1370 Dietmar Woellbrink (Luisehahne)
+! update install, changed some default settings to enabled
+06 Jan-2011 Build 1369 Dietmar Woellbrink (Luisehahne)
++ add jquery-include.js (Tks to Stefek)
+! update bind jquery in frontend, jquery-include.js and jquery-insert.js are included
+31 Dec-2010 Build 1368 Dietmar Woellbrink (Luisehahne)
+- delete class.secureform.php
++ add newest SecureForm 
+# fixed Call to a member function read() on a non-object in function register_frontend_modfiles
+29 Dec-2010 Build 1367 Dietmar Woellbrink (Luisehahne)
+# securtiy fix in class.login
+# see http://www.websitebaker2.org/forum/index.php/topic,20347.msg137554.html#msg137554
+29 Dec-2010 Build 1366 Dietmar Woellbrink (Luisehahne)
+# fixed showing system_default for search_template 
+29 Dec-2010 Build 1365 Dietmar Woellbrink (Luisehahne)
+! added some functions 
+! set status to 2.8.2 RC3
+29 Dec-2010 Build 1364 Dietmar Woellbrink (Luisehahne)
+! added function 'db_update_key_value()'
+29 Dec-2010 Build 1363 Dietmar Woellbrink (Luisehahne)
+# Ticket #1053, Ticket #941 show_breadcrumb
+29 Dec-2010 Build 1362 Dietmar Woellbrink (Luisehahne)
+! additional functions added in class.database
+28 Dec-2010 Build 1361 Dietmar Woellbrink (Luisehahne)
+! sync languages files with 2.9.0.dev
+! unzip addons now overwrite newer files
+28 Dec-2010 Build 1360 Dietmar Woellbrink (Luisehahne)
+! show_menu2 display Title-attribute fixed
+! tooltip added, change modul version to 4.9.5
+28 Dec-2010 Build 1359 Dietmar Woellbrink (Luisehahne)
+! upgrade FCKeditor to Version 2.6.6
+28 Dec-2010 Build 1358 Dietmar Woellbrink (Luisehahne)
+! validation fixes in pages backend theme
+27 Dec-2010 Build 1357 Frank Heyne (FrankH)
+# security fix: in path admin/pages/ - added FTAN check
+! had to enhance parameter for getFTAN() in framework/class.secureform.php 
+27 Dec-2010 Build 1356 Dietmar Woellbrink (Luisehahne)
+# more little fixes in settings
+! change to RC2
+27 Dec-2010 Build 1355 Frank Heyne (FrankH)
+# security fix: remaining vulnerabilities mentioned in http://secunia.com/secunia_research/2010-90/
+# security fix: in path admin/templates/ - added FTAN check
+# security fix: in path admin/settings/ - added FTAN check
+26 Dec-2010 Dietmar Woellbrink (Luisehahne)
++ added admin/images
+# fixed save handling settings entries
+! local sync
+26 Dec-2010 Build 1353 Frank Heyne (FrankH)
+# security fix: in modules/admin.php - check whether section belongs to page
+! security fix: changed $section_required into $no_section_required (apparently used by no module at all)
+# security fix: in path admin/users/ - added FTAN check
+# security fix: remaining vulnerabilities mentioned in http://secunia.com/secunia_research/2010-91/
+# security fix:           vulnerabilities mentioned in http://secunia.com/secunia_research/2010-92/
+# security fix: remaining vulnerabilities mentioned in http://secunia.com/secunia_research/2010-93/
+21 Dec-2010 Dietmar Woellbrink (Luisehahne)
+# fix if upgrade module can now overwrite existing newer files in modules folder
+# same for upgrade templates
+21 Dec-2010 Dietmar Woellbrink (Luisehahne)
+# XHTML output fixed in show_menu2
+20 Dec-2010 Dietmar Woellbrink (Luisehahne)
+# syntaxfix in initialize.php
+19 Dec-2010 Dietmar Woellbrink (Luisehahne)
++ add ini_set('display_errors', 1) (Tks to Thorn)
+! update headerinfos
+17 Dec-2010 Dietmar Woellbrink (Luisehahne)
+# fix save access rights in settings
+23 Nov-2010 Dietmar Woellbrink (Luisehahne)
+# fix Droplet LoginBox fronend_signup (tks to Maverik)
+# fix save user e-mail,
+12-May-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #999 wrong sql statement in admin/pages/index.php (Tks to Lucutus)
+12-May-2010 Dietmar Woellbrink (Luisehahne)
+-	remove unneeded flags in backend themes
+-	remove admin/images
+11-May-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #1004 Small typofixes needed in FR lang file (Tks to quinto)
++	Ticket #1005 add FR Language for the admin templates (Tks to quinto)
+06-May-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #998 fix German language file from mixture of du and Sie (Tks to Erpe)
+02-May-2010 Dietmar Woellbrink (Luisehahne)
+!	remove some unneeded code in backend themes templates
+!	see forum: JQuery und Backend-Theme
+02-May-2010 Dietmar Woellbrink (Luisehahne)
+!	add lang variable for new userform
+02-May-2010 Dietmar Woellbrink (Luisehahne)
+!	added IdKey to class secureForm
+30-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	changes Backend javascripts from body to head
+28-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	insert modulename in sections, even for missing module, you can style it with class selector: module_disabled
+27-Apr-2010 Dietmar Woellbrink (Luisehahne)
++	add an extra class class.secureform.php and extends it to class.wb.php
+!	check for installed modules before loading in content 
+27-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	remove forgotten debug line
+27-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Fixed update search settings
+#	Fixed bug in /modules/admin.php 
+22-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Fixed bug in /modules/admin.php 
+22-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	start recoding without style display:none	
+21-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #995 update jquery-ui.css and images (Tks to Ruebenwurzel)
++	add languages files for jquery datepicker (tks to Ralf)	
+!	Ticket #994 WYSIWYG editors sorted by name (tks to Aldus)
+20-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	update class.login.php (tks to Ruud)
+19-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	update class.login.php
+18-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	Validation fix in preference
+18-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	fixed directory_list
+17-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	litte fix to show GMT value in default view
+!	fixed file_list
+15-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	Update headerinfos admin/interface
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	changed e-mail notification for backend login
+!	styling in preference.htt in themes
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Typo fixes with german umlaute
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #985 With #1318 no login in backend possible
+#	Ticket #986 Typo inside the german language file 
+#	Ticket #982 Unnessesary heredoc causes on errors while installation!
+#	Ticket #926/Ticket #928 Mail Notification on new user registration
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #984 Removing outdated comment-block in class.login.php
+#	Ticket #983 Sorting order of modules and templates inside groups.php
+14-Apr-2010 Dietrich Roland Pehlke (Aldus)
+#	Ticket #982 - Wrong use of heredoc-syntax in some language-files (BG, CS and HR) breaks the installation-process.
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #974 Usability bug in /preferences
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #976 Using md5 also for the username inside class.login.php
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #977 Templates sorted in alphabetical order
+14-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #978 Add additional PHP 5.2 check to installation
+#	Ticket #979 False PHP 4 requirements in install
+#	Ticket #980 Usebility - Bug in the settings-interface
+#	Ticket #981 typos in backend-theme "argos" in file groups.htt
+11-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	fix ticket #975 some weird /pages/ header infos
+11-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	little fixes for backwards compatible PHP4, pls test
+11-Apr-2010 Dietmar Woellbrink (Luisehahne)
+!	show_menu2 remove unneeded code for WB < 2.7
+!	class.wb.php, recoding backend preference
++	add a language variable $MESSAGE['PREFERENCES']['INVALID_CHARS']
+!	update theme.css for preference.htt in argos_theme & wb_theme
+-	remove classic_theme
+07-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #971 Using $_POST in Admin - account - login.php (tks to Aldus)
+!	update class.wb.php added tokens function
+07-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #967 Typo in the mysql-query results in "not" upgrading the modul info ( tks to Aldus)
+01-Apr-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket 963 Minor XSS issue in admin login
+!	update jquery-ui-min.js from 1.7.2 to 1.8.0
+#	Fixed typo in the english language file
+26-Mar-2010 Dietmar Woellbrink (Luisehahne)
+!	update changelog
+26-Mar-2010 Dietmar Woellbrink (Luisehahne)
+-	remove deprecated backup modul
+19-Mar-2010 Dietmar Woellbrink (Luisehahne)
+!	rework admin/pages/save.php so that modules can use it
+!	fixed missing global install variable to work in modules
+17-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #957 Wrong status returned for visibility
+17-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #956 Useraccounts, now e-mail is required
+09-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	Fixed e-mail preg pattern, because issues with some php versions
+07-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	fixed search_modext.php ( Tks to Thorn )
+#	Ticket #953 is already fixed 
+#	Ticket #954 styles issues in theme.css ( Tks to Ruebenwurzel )
+07-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	Tickets #932 change deprecated eregi functions 
+#	Tickets #948 fixed Multiple use of same parametrised droplet - parameter handling
+!	Upgrade Droplets to Version 1.0.3
+!	update some headerinfos
+!	non existing pages will be created if clicking save in page settings
+07-Mar-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #950 missing classes in theme.css ( Tks to Ruebenwurzel )
+!	update jquery-min.js to version 1.4.2
+20-Feb-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #944 fixed double sections, with registered User
+20-Feb-2010 Dietmar Woellbrink (Luisehahne)
+#	fix corrupted changelog
+20-Feb-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #945 fixed reloads function 
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	update headerinfo in module droplets
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	Beginning with Ticket #901 
++	add siteadd.png to backend themes
+!	change icon add child page
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	update headerinfo
+!	change $search_pattern for check if Javascript mailto encryption is enabled
+!	module output_filter set to version 0.12
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	change show_menu2 to correct modul version 4.9
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	insert $wb->preprocess($output), preprocess no longer needed in modules
+!	little modifaction in upgrade-script.php in function check_wb_tables
+!	updated module wysiwyg, set to module version 2.8
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	recoded function extract_permission in /framework/functions.php
+!	change URL_HELP to http://www.websitebaker2.org/  in /framework/class.admin.php
+!	recoded function preprocess in /framework/class.frontend.php
+!	optimize function getVersion in /framework/addon.precheck.inc.php
+19-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	change constant EDIT_ONE_SECTION to default false	
+------------------------------------- 2.8.1 -------------------------------------
+08-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	missunderstanding back to old logo
+08-Feb-2010 Dietmar Woellbrink (Luisehahne)
+#	Droplet emailfilter fixed search mdcr.js
+!	some little fixes in upgrade-script
++	new WebsiteBaker Logo in themes
+05-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	Fixed wrong themes path in jquery_theme.js, that plugins works correctly
++	images icons to run base theme
+01-Feb-2010 Dietmar Woellbrink (Luisehahne)
+!	to hold content, install don't drop existing tables (code, form, menu_link, news, wrapper, wysiwyg) 
+!	otherwise do it with uninstall
+30-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #931 bug in admin/access/index.php
+30-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	continue update headertext
+!	fixed tpyo Website Baker to WebsiteBaker in main language files
+30-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	continue update headertext
+#	Ticket #930 disabled SyntaxHighlighter from default WB Installation
+!	change help url to www.websitebaker2.org
+29-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	continue update headertext
+28-Jan-2010 Dietmar Woellbrink (Luisehahne)
++	Ticket #927 news module language file in swedish
+!	update headertext
+28-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #925 Slovak Lang Missing in allowed install languages!
+28-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update headertext
+28-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update jquery 1.4.0 to 1.4.1, 
+-	removed include/jquery/plugins
+!	update backend themes
+#24-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #923 argos_theme: Always Allowed Viewers in page_settings
+#	fixed css for pagetree to show in IE7
+24-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #921 fix issues in IE by using EditArea framework
+23-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #921 Update EditArea framework
+!	fix stylings wb_them
+!	fix upgradescript
+23-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update jquery to version 1.4, rename old one to jquery-min132.js
+#	fixed argos theme  
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	continue update header info
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	set svn keywords
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #869 Droplet-Engine does'nt work in some case
+!	continue update header info
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update header info
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update fckeditor, forgotten to upload a file
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #917 Update backend themes 
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #909 WYSIWYG Editor width destroyes backend layout
+!	Set EDITOR_WIDTH to 0, This way backend theme developper 
+!	can style the WYSIWYG Editor according to their themes.  
+22-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #916 Update backend theme footer
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	updated YUI 2.4.1 to 2.8.0r4
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Beginning header information update
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix login_form.php sometimes produce javascript errors in IE
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix more small css-errors in WB Backend (thanks to Ruebenwurzel)
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update header info
+!	change unknown user to guest in all languages
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update info.php fckeditor
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix wrong settings in image browser dialog
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #912 fix Search Template bug
+21-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #915 fix bug in search (utf-8 characters corrupted)(thanks to Thorn)
+19-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix some more small css-errors in WB Backend (thanks to Ruebenwurzel)
+19-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	removed wb_path as javascript var (thanks to Bianca)
+19-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix some more small css-errors in WB Backend (thanks to Ruebenwurzel)
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fixed snippets including frontend.css and frontend.js 
+#	without register_frontend_modfiles
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
++	Ticket #877 add slovak lang in Captcha and Advanced-Spam-Protection
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	update header
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 5. continue to fix CSS-errors in WB backend
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 4. continue to fix CSS-errors in WB backend
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 3. continue to fix CSS-errors in WB backend
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 2. continue to fix CSS-errors in WB backend
+14-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 1. continue to fix CSS-errors in WB backend
+13-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #911 Beginning to fix More CSS-errors in WB backend
++	add SVN- Revision to backend theme
+12-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #906 Search Template bug
+!	update editor min width, dragableresize table
+12-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	Ticket #907 js files in backend themes are stored at wrong places
++	add include/jquery/plugins/toggle_zip.js
+-	removed toggle_zip.js in backend themes
+12-Jan-2010 Dietmar Woellbrink (Luisehahne)
+#	fix open_basedir restriction in effect in save_post.php
+11-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	fix load_module, load_language (tks to Webbird)
+11-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #904 fix if templatename is equal language
+11-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #905 fix search.php 'registered' hardcoded
+10-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	Ticket #903 fix CSS-errors in WB backend
+!	add title class in show_breadcrumbs, now full css styling
+05-Jan-2010 Dietmar Woellbrink (Luisehahne)
+!	recoded function show_breadcrumbs
+30-Dec-2009 Dietmar Woellbrink (Luisehahne)
+#	fix Warning: stristr() [function.stristr]
+29-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	set revision constant to release version
+29-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	update release version
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+#	fix show date if only short content
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	check if load only one wysiwyg instance
+!	check update svn revision
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+#	fix syntax error
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	update header, check that all tables in WB package are installed 
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	update header, change variable
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	update header
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	update header
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	validate code
+28-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	change page_title to menu_title in dropdown list
+!	validate code
+23-Dec-2009 Dietmar Woellbrink (Luisehahne)
+!	check if revision $id will be updated
+21-Dec-2009 Moritz Stapelfeldt
+#	Ticket #896: Bugfix in framework/functions.php > added test is_dir to function rm_full_dir
+16-Dec-2009 Ruud Eisinga
+#	Ticket #894: Bugfixes in newsmodule > rss.php
+16-DEC-2009 Manuel Lang (MaGnaL)
+#	Minor bugfixes: Use localized messages in preference forms on frontend and backend,
+	correct html/php syntax in upgrade-script.php and NL localization of show_menu2 snippet  
+14-DEC-2009 Manuel lang (MaGnaL)
+#	Ticket #832: Fix wrong configuration of timezone-handling when saving
+	preferences-form on backend and frontend 
+12-DEC-2009 Manuel Lang (MaGnaL)
+#	Ticket #827: Fix false form-parameter when javascript is deactivated
+	on users and groups temps (admintool).
+12-DEC-2009 Manuel Lang	(MaGnaL)
+#	Bugfix of rev. 1211 search_modext.php (ticket #863): Use isset and
+	given unknown-user instead of counting all users. 
+12-Dez-2009 Dietrich Roland Pehlke (Aldus)
+#	Bugfix inside "search_modext.php" to avoid warings if the search found
+	a page last modified by a user witch has been deleted. (ticket #863)
+03-Dez-2009 Dietmar Woellbrink (Luisehahne)
+!	Ticket #890 fixed visability proprty uses non valid value 'none' 
+03-Dez-2009 Dietmar Woellbrink (Luisehahne)
+!	change searchstring mdcr.js, workout crypt emails in output_filter/filter-routines.php
+!	comment out ob_end_flush line 259 in form/view.php
+02-Dez-2009 Dietmar Woellbrink (Luisehahne)
+!	next step to validate backend themes
+01-Dez-2009 Dietmar Woellbrink (Luisehahne)
+!	add Revision IDs to added files - Thanks to Ruebenwurzel
+01-Dez-2009 Dietmar Woellbrink (Luisehahne)
+!	updated pclzip class
+29-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	update module info.php (thanks to Waldschwein)
+29-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	added missing swobject plugin in FCKeditor
+!	bug fixed in flvplayer
+29-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	stop working plugin flvplayer in FCKeditor until fixed
+29-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fixed an undefined index in settings.php
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Update FCKeditor Version 2.6.5 to Modulversion 2.9.3
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	updated theme.css in wb_theme
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Ticket #886 fix validation email, check tld between 2-4 letters
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Ticket #874 add slovak lang in install
+    and validate output
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Ticket #880 fixes language file SK.php
+28-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Ticket #828 fix deprecated eregi
+27-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fixes language file SK.php
+27-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fixed parse error ticket #878 
+26-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	found and fix some deprecated functions
+26-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	validate some output files
+26-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fix some PHP 5.3 deprecated functions 
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Fix to load edit_full_area only if needed
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	change page_title to menu_title for parent dropdown list in index.php and sections.php
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	more bug fixes language file SK.php
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	Many hosts disable error_log() in various and sundry ways. 
+	In WB we do something like this to avoid triggering warnings and errors. 
+	Even this is sometimes not sufficient to avoid problems with some hosts, but accommodates most.
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fix show_menu2 include.php, page crashes, if php error_log is disabled
+25-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fixes language files HU.php and SK.php
+24-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	fixed php 5.3 depricated function in show_menu2
+24-Nov-2009 Dietmar Woellbrink (Luisehahne)
++ 	add two constants in /framework/initialize.php for later feature in database settings
++	define('EDIT_ONE_SECTION', true) to edit only one section with editor in manage sections
+	modify page will be loading all sections with editor
++	define('EDITOR_WIDTH', 900) set min width for editor
++	adding more information in editor header 1) block 2) module 3) section_id
+24-Nov-2009 Dietmar Woellbrink (Luisehahne)
++	add register_frontend_modfiles('jquery'); adds jquery basis scripts in head
++	add register_frontend_modfiles_body('jquery'); adds jquery basis scripts before body end
++	add jquery_theme.js to choose a ui theme, basis is loaded, can be change 
+24-Nov-2009 Dietmar Woellbrink (Luisehahne)
++	add a child page is cumbersome when the parent dropdown list gets to be too large. (Ticket #821)
+24-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	validate captcha control
+13-Oct-2009 Ruud Eisinga
+#	fixed breaking droplets by highlighting search-words in search result pages.
+13-Oct-2009 Dietmar Woellbrink (Luisehahne)
++	added forgotten jquery-fancybox.js Version 1.0
+13-Oct-2009 Dietrich Roland Pehlke (Aldus)
+#	Fixed typo in the finnish language file (ticket #814).
+12-Oct-2009 Dietmar Woellbrink
+!	security update FCKeditor (tks to Ruebenwurzel)
+12-Oct-2009 Dietmar Woellbrink
++	added old version of fancybox.js
+!	rename new version fancybox 
++	added missing language variables in newsmodul
+12-Oct-2009 Dietmar Woellbrink
+#	fixes Bugs headersend errors in some core files
+12-Oct-2009 Dietmar Woellbrink
+!	update function show_bread_crumb in framework/frontend.functions.php
+!	replace separator with entities char, add title for multilingual
+!	set breakcrumb in div container class="breadcrumb"
+!	set separator in span tag class="separator"
+12-Oct-2009 Dietmar Woellbrink
+!	update jquery fancybox from 1.0 to 1.2.1 
++	fancybox imagefolder incl. fancybox.css
+12-Oct-2009 Dietmar Woellbrink
+!	shows more details in wysiwyg editor
+10-Oct-2009 Dietmar Woellbrink
+!	small update upgrade.php to reset newsfiles to created dates
+10-Oct-2009 Dietmar Woellbrink
+!	Update FCKeditor to Version 2.6.5 Modulversion 2.9.1
+09-Oct-2009 Dietmar Woellbrink
+!	Update FCKeditor to Version 2.6.5 Modulversion 2.9.1
+09-Oct-2009 Dietmar Woellbrink
++	upgrade.php to reset newsfiles to created dates
+09-Oct-2009 Dietmar Woellbrink
+#	Ticket #770, #785, #792, #807, #809, 
+#	fixes and recoded news module
+09-Oct-2009 Dietmar Woellbrink
+#	Ticket #815 Fix Warning: open_basedir restriction in effect. File is in wrong directory in load_module
+#	same fix to load_template
+07-Oct-2009 Dietrich Roland Pehlke
+#	Missing contiue inside search.php to avoid access to an non-object if the query fails. (ticket #793). Thanks to Thorn.
+06-Oct-2009 Dietmar Woellbrink
+#	Security fix - wrong placed "exit()" inside class.wb.
+22-Sep-2009 Dietmar Woellbrink
+#   Fixed: Pagetree changed menu titles instead of page titles (ticket #805) thanks to Ralf (Berlin)
+21-Sep-2009 Dietrrich Roland Pehlke
+!	Dutch tranlation(-s) for the captcha-control. [Ticket: #777] (Thanks to Argos)
+#	Missing code inside "framework/addon.precheck.php" (ticket #798).
+#	Changes inside "upgrade-script" to avoid "mysql_list_tables is deprecated" warnings (ticket #800).
+#	Add "global $admin" to the install.php of the droplets-module to avoid (variable isn't declared) warnings. (ticket #800).
+18-Sep-2009 Dietmar Woellbrink
+#   french translation updated for WB 2.8 (tks to Ploc)
+16-Sep-2009 Dietmar Woellbrink
+#	Fixed bug changed URL_HELP in class.admin.php to http://help.websitebaker.org/ (ticket #801).
+#	Fixed bug: inside the FCK-Editor wbmodul: missing 'OK' button when inserting WB link with Safari/Chrome (ticket #795).
+#	Fixed bug changed png fix and path to jquery-pngFix.js inside footer.htt for backend themes (ticket #786).
+#	Fixed bug: inside the FCK-Editor include.php: add $oFCKeditor->Width  = $width; (ticket #799).
+15-Sep-2009 Dietrich Roland Pehlke
+#	Fixed bug: group-restrictions and sections (ticket #791).
+#	Fixed bug inside the FCK-Editor wbmodul: displaying the correct page-tree by
+	adding "order by position"
+25-Aug-2009 Dietrich Roland Pehlke
+#	Fixed bug in upgrate-script. Constant 'DEFAULT_THEME' doesn't exists (ticket #784).
+25-Aug-2009 Ruud Eisinga
+#	Fixed bug in droplets. Multiple droplets with the same parameter did not extract the new parameter.
+	(problem introduced by code optimisations for WB2.8) 
+#	Fixed usage of the depriciated (PHP 5.3.0) split() function in class.wb. (ticket #772)
+#	Fixed notice ob_end_clean..failed to delete buffer. (ticket #779)
+22-Aug-2009 Ruud Eisinga
+# 	Changed the default searchform name in the installer. (ticket #775)
+#	Fixed the recursive redirect problem when a page is called with a wrong language parm (ticket #780)
+------------------------------------- 2.8.0 -------------------------------------
+14-Aug-2009 Matthias Gallas
+#	Fixed typo in dutch language file (Thanks to Argos)
+#	Changed FCKEditor to not show index.php files in browse media window (ticket #774)
+	(Thanks to BerndJM)
+12-Aug-2009 Matthias Gallas
+#	Fixed some display issues in all backend themes
+!	Again updated dutch language file (Thanks to Argos)
+#	Fixed missing language variable in form modul (Thanks to Argos)
++	Added missing images to argos_theme (forgotten in changeset [1117])
+11-Aug-2009 Matthias Gallas
+!	commentet out the droplets logo for a more similar backend design with
+	other admin tools
+!	Updated icons in argos_theme (Thanks to Argos)
+!	Updated Dutch language file (Thanks to Argos)
+!	Updated show_menu2 to version 4.9
+9-Aug-2009 Matthias Gallas
+#	Replaced function mime_content_type as the old one causes shell_exec warnings
+	on some servers (Thanks to Aldus)
+!	updated argos_theme to version 1.4 (Thanks to Argos)
+!	some code cleaning of admin/pages/sections.php
+#	Fixed possible xss injection in login/forgot/index.php
+#	Fixed bug in news modul introduced in changeset [1057]
+#	Added missing variables also to preferences.php. Forgot in Changeset [1112]
+8-Aug-2009 Matthias Gallas
+#	Added some missing variables to backend_themes (Thanks to Stefek)
+6-Aug-2009 Matthias Gallas
+!	Set Version to 2.8
+!	Updated upgrade_script to make use of the changed news settings
++	Added to show_menu2 the aOption 'SM2_HIDEPAGES'. If set all hidden pages are
+	hidden again (Thanks to DarkViper)
+#	Fixed again some bugs in news modul (ticket #756) (Thanks to Aldus and Luisehahne)
+#	Fixed bug that frontend.js, frontend.css and frontend_body.js are not used
+	from snippets (ticket #764) (Thanks to Luisehahne)
++	Added new function 'register_frontend_modfiles_body' to default templates
++	Added option to use a frontend_body.js in modules to include javascript from modules
+	in the body of the frontend (Thanks to Luisehahne)
+!	Updated Danish language Files (Thanks to Achrist)
+#	Fixed some display issues in argos_theme (Thanks to Argos)
+30-July-2009 Ruud Eisinga (Ruud)
+#	Fixed a bug in the /admin/media resizer parameters for dirs with whitespaces (thnx to tiesy)
+#	Fixed a bug in FCKeditor include.php. Now the editor can be used from other 
+	subdirectories than WB_PATH/modules/mymodule
+29-July 2009 Dietrich Roland Pehlke (Aldus)
+#	changes in framework/class.wb.php to avoid the "print->footer()" bug in the frontend,
+	as this function/method doesn't exists for the frontend.
+#	Changes inside index.php and save.php in settings to get rid of the situation
+	that a SMTP-Password could not contain an "<" char (right chars are craped),
+	and also "<" is not transformed into an entitie "&lt;". (Thanks to FrankH)
+#	Modify of "addon.precheck.inc.php" to get rid of the problematic that version_compare
+	could faild if words like "alpha", "beta" are inside a version-string. (missing in changelog 1100)
+28-July 2009 Matthias Gallas
+#	fixed some smaller issues in rss.php (Thanks to Kibmcz)
+27-July 2009 Matthias Gallas
++	Added German language file to droplets
++	Added modul_description to language files of droplets
++	Added Danish language files to modules (Thanks to Achrist)
+!	Updated Danish language file (Thanks to Achrist)
+#	Fixed improper spelling in language files (#754)
+#	Fixed bug introduced in changeset [1092]
+25-July 2009 Matthias Gallas
+#	fixed some language bugs in search.php (Thanks to Thorn)
+23-July 2009 Matthias Gallas
+#	fixed bug with missing filetype icon in media section of classic_theme (ticket #752)
+#	fixed bug with page not showing if 2 sections active (ticket #751) (Thanks to Pumpi)
+#	readded to phplib/template.inc $clear: whether to delete undefined vars or not
+	was already added in WB 2.7 but was deleted for unknown reasons (Thanks to FrankH)
+22-July 2009 Matthias Gallas
+!	set Version to RC2
+!	small modification on german language file (ticket #746)
+#	Fixed E_ALL&E_STRICT warning on PHP5 servers (Thanks to Aldus) 
+#	Fixed bug with home folders are viewable and writable from other users
+	(ticket #605 and #748) (Thanks to Aldus)
+20-July 2009 Matthias Gallas
+!	Moved backend.js back from <body> to <head>
++	Added possibility to add a backend_body.js to modules wich is then called in <body>
++	Readded admin/images folder to keep backward compatibility to old modules
+19-July 2009 Matthias Gallas
+#	Fixed display issue of jsadmin in backend themes (Thanks to Argos)
+18-July 2009 Matthias Gallas
+!	Updated german laguage file in argos_theme
++	Added multilnaguage support to media section of argos_theme (Thanks to Argos)
+#	Fixed smaller display issue in argos_theme (Thanks to Argos)
++	Added more meta tags to backend themes
+!	Updated Argos_theme (Thanks to Argos and Luisehahne)
+#	Again added some &amp; to news and form to get more valid output (Thanks to Luisehahne)
+#	Fixed wrong set </form> tag to get valid output (Thanks to Luisehahne)
+!	Replaced in some alt tags hardcoded signs with language variables (Thanks to argos)
+!	Updated Dutch language File (Thanks to argos)
+!	Updated French language File (Thanks to mylesk42)
+16-July 2009 Matthias Gallas
+#	Fixed E_ALL notice in news/view.php
+!	replaced in form and news delimiter "&amp;" with "&"
+	was introduced with changeset [1069] but didn't work on all servers
+#	Removed double </form> tags in pages/intro.php and wysiwyg/modify.php
+!	replaced all remaining mktime() with time(), except from third party scripts
+15-July 2009 Matthias Gallas
+!	changed in modules/admin.php and admin/pages/add.php mktime() to time()
+!	changed in wrapper modul modify.html to modify.htt
+#	Fixed some validiation bugs in core and different modules (Thanks to luisehahne)
+#	fixed display issue of jscalendar in news modul (Thanks to Aldus)
+!	changed modules/admin.php to also make use of backend theme templates
+!	changed in class_login.php mktime() to time()
+14-July 2009 Matthias Gallas
+#	Fixed bug with sections are only editable in new backend-themes if blocks are enabled
+	(Thanks to Luisehahne)
+#	Fixed some validiation bugs in news modul (ticket #742) (Thanks to Luisehahne)
+14-July 2009 Dietrich Roland Pehlke
+!	changes in frontend.functions.php, line 323: 'date' to 'gmdate' to avoid E_STRICT warnings.
+!	changes in wb-setup.php, line 50: 'date' to 'gmdate' to avoid E_STRICT warnings. See also #741.
+13-July 2009 Matthias Gallas
++	added changes from news/add.php to the upgrade-script.php
+13-July-2009 Ruud Eisinga
+#	admin / media / browse reported an error in E_STRICT mode.
+13-July 2009 Dietrich Roland Pehlke
+!	Change inside "date_formats.php" and "time_formats.php" mktime() within time()
+	to avoid warnings and strict messages. See #741. Minor cosmetic changes.
+#	News-Modul: add the unlink-routine for the ".news" folder inside uninstall.php
+	so the groupe-images are also unlink.
+!	News-Modul: add <tr><td> and </td></tr>-tags to the "none found" part in the view.php to 
+	get valid output inside a table.
+!	Change the setting of $display_image and $display_groupe to avoid the 
+	empty display roule problematic (<tr style="display: ">) for valid output.
+!	Add &gt;&gt; in "add.php" instead of >> to avoid invalid output.
+11-July-2009 Ruud Eisinga
+!	The news module post_title link made unclickable when there is no full post.
+11-July-2009 Matthias Gallas
++	Added changed news settings to upgrade-script
+09-July-2009 Ruud Eisinga
+!	Added a better option to hide the READ_MORE link in the news module. (ticket #739)
+09-July-2009 Matthias Gallas
+#	Fixed bug that backend.js is not loaded in backend themes (ticket #740)
+#	Fixed wrong path to unitpngfix.js and added missing script
+#	Fixed invalid output of page_sections Page in Backend (Thanks to Luisehahne)
+08-July-2009 Matthias Gallas
++	Added PageID and SectionID to all backend themes (Thanks to Luiseshahne)
+#	Fixed some display issues in all backend themes (Thanks to Luisehahne)
+!	Replaced wbmodules.gif in FCKEditor Plugins (Thanks to Stefek)
+08-July-2009 Dietrich Roland Pehlke
+!	Removed unused marker {USERS} inside the "groups.htt" of the wb-theme.
+!	admin -> users -> index.php
+!	admin -> groups -> index.php
+	Codechanges using blocks to avoid to generate the "switch"-link right-top,
+	if the user has no permission to edit the other one.
+!	wb_theme|classic_theme|argos_theme -> templates -> users.htt
+!	wb_theme|classic_theme|argos_theme -> templates -> groups.htt
+ 	Add block-comments
+!	admin -> addons -> index.php	codechanges
+!	admin -> access -> index.php	codechanges
+	Codechanges to get rid of the empty display(style) declaration "style='display: ;'",
+	and to avoid to generate (hidden) elements if the user isn't alowed to edit one.
+!	wb_theme|classic_theme|argos_theme -> templates -> addons.htt
+!	wb_theme|classic_theme|argos_theme -> templates -> access.htt
+	add block-comments
+#	Bugfix inside wb/admin/groups/get_permissions.php - replacing wrong "AND" within "OR" in line 64
+	if one checkbox of "user" or "group" is selected (like in line 178; advanced settings).
+07-July-2009 Matthias Gallas
+#	Fixed some minor bugs in argos_theme (Thanks to Argos)
+#	Fixed bugs in admin additons for argos_theme (Thanks to Argos)
+!	Updated Version Number in upgrade_script to 2.8RC1
+!	Updated FCKEditor Modul Version Number to 2.89
++	added in FCKEditor Advisory Relation to Links (thanks to Luisehahne)
+06-July-2009 Matthias Gallas
+!	Updated FCKEditor to Version 2.6.4.1 (ticket #738) (Thanks to doc)
+#	Fixed Backend-Themes to get more valide output (Thanks to Luisehahne)
++	Added argos_theme
++	Added new functions to admin dir (Thanks Argos and Ruud)
+!	Updated install and upgrade-script
+!	Adapted wb_theme and classic_theme to changed admin dir files
+04-July-2009 Dietrich Roland Pehlke
+!	FCK-Editor Modul: Droplet Select: change "page_list_block" to "droplets_list_block",
+	also "cmbPages" to "cmbDroplets" as we are listen droplets not pages.
+!	Remove unneeded empty lines and spaces/blanks;
+	minor cosmetic changes in the source to keep the string more readable.
+04-July-2009 Matthias Gallas
+!	Replaced droplet icon for FCKEditor Toolbar (thanks to Stefek)
+#	Fixed two bugs in droplets-plugin for FCKEditor (thanks to Aldus)
+!	Changed Template from FCKEditor plugin WBModules to .htt
++	Added Droplets plugin to FCKEditor (ticket #737) (Big Thanks to vizmotion)
+03-July-2009 Matthias Gallas
++	Fixed IE Bug in Wrapper modul (ticket #736)
+03-July-2009 Ruud Eisinga
+#	Fixed the wrong handling of htmlentities in Droplet parameter parsing
+02-July-2009 Matthias Gallas
++	Added missing fancy_progress.png
+01-July-2009 Matthias Gallas
+#	Fixed backend display issues in IE6 and IE7
+!	Set Version to WB2.8RC1
+!	Minor tweaks in pages_sections.htt
++	Added posibility to upload and unzip .zip packages to media section
+	(Thanks to BerndJM)
+!	Updated Browse Media Window in wb_theme now supports file icons, more file
+	informations and a new preview function (Thanks to BerndJM)
+29-June-2009 Matthias Gallas
+#	Replaced in FCKEdiotor folder all index.html with index.php (ticket #691)
+!	Update PHPMailer to version 2.0.4 (ticket #733)
+!	Update Editarea to version 0.8.1.1 (ticket #732)
+!	Update JQuery UI to version 1.7.2 (ticket #731)
+27-June-2009 Ruud Eisinga
+#	Fixed email encryption bug in output filter. Introduced by adding droplets.
+	(Thanks to Luisehahne)
+25-June-2009 Matthias Gallas
++	Added missing admin/settings/setting.js
+!	Changed name of classic theme from "classic" to "classic_theme"
++	Added output-filter warning to all language files
+#	Fixed admintool jsadmin to get XHTML valid output (Thanks to Luisehahne)
+#	Major fixes on backend to get XHTML valid output (Thanks to Luisehahne)
++	Added option to use also MYSQL_ASSOC and MYSQL_NUM with mysql_fetch_array
+	(Thanks to Luisehahne)
+#	Bugfix for Error-Level settings (Thanks to Luisehahne)
+23-June-2009 Matthias Gallas
+#	Moved styles from admin/pages/sections.php to sections.htt in backend themes
+	(Thanks to Luisehahne)
+!	Moved javascript files from admin/pages/index.php to external js files
+	(Thanks to Luisehahne)
+#	Major improovements and changes to all backend files to get more valide Code
+	output (Thanks to Luisehahne)
+22-June-2009 Matthias Gallas
+#	fixed wrong position id when adding a new page
+-	removed obsolete code/modify.html
+22-June-2009 Dietrich Roland Pehlke
+#	Changes on module "code": add the section_id to the name of the textarea,
+	to keep the functionality if you are using more than one code-section on a page.
+!	Moving the html-template inside a "htt" folder and rename the suffix to ".htt" to
+	keep it consitant to other modules. Minor cosmetic changes inside the code.
+22-June-2009 Ruud Eisinga
+#	Fixed a bug in Menu_link module that made childpages of the menu_link page 
+	not selectable. (thnx to Luisehahne)
+21-June-2009 Matthias Gallas
+#	Fixed small bug introduced in changeset [999]
+19-June-2009 Matthias Gallas
+#	Fixed bug that parent pages didn't inherit language settings to kind pages
+17-June-2009 Ruud Eisinga
+#	Bugfix in "droplets/upgrade.php" - wrong parameter order for adding fields.
+	also the query for "normal" upgrades had a typo.
+!	Added warning in output_filter that the function will be removed in 2.9
+17-June-2009 Dietrich Roland Pehlke
+#	Bugfix in "droplets/upgrade.php" - wrong tablename change to the correct one
++	Add upgrade-script to droplets
+!	Changes on upgrade-script to avoid droping droplet-modul-tables if the exists.
+!	calling "upgrate.php" or "install.php" instead of hard-coded lines to avoid
+	future conflicts by upgrading the modul
+15-June-2009 Matthias Gallas
++	Added install routine for droplets to the upgrade script
+#	Fixed bug in menu_link modul with wrong displayed pages tree (Thanks to thorn)
+#	Fixed small bug introduced in changeset [989]
++	Added missing id tags and copyright notices to droplets modul
+15-June-2009 Dietrich Roland Pehlke (aldus)
+#	Bugfix for ticket #725
++	Add "$wb->strip_slashes" again for backslashes are displayed in the output (view.php).
++	Add Droplets (Ruud)
++	modifications inside frontend.functions.php for backwart compatiblity (Ruud)
++	modifications inside the search to get the droplets seachable (Ruud)
+14-June-2009 Dietrich Roland Pehlke (aldus)
+#	Bugfixes for (ticket #728)
++	Add additional constant to "install/save.php" to avoid conflikts during
+	installation inside "/framework/initialize.php".
++	Add condition inside "/framework/initialize.php" to avoid conflikts
+	during installation; table "mod_captcha_control" doesn't exsits at runtime.
++	Add test for tables inside "install/save.php" if the user uncheck "install table" option.
++	Additional Errormessage if nessesary tables are not found (english).
+13-June-2009 Matthias Gallas
++	Added jQuery-insert.js and jQuery plugins (Thanks to Luisehahne)
+!	Moved images in lQuery plugins folder (Thanks to Luisehahne)
+#	fixed small german language issue in jscalendar (Thanks to Luisehahne)
+26-May-2009 Matthias Gallas
++	Added jQuery(1.3.2) and jQueryUI(1.7.1) to WB core (ticket #708)
+21-May-2009 Matthias Gallas
+#	Fixed some strange backend layout issues (ticket #722)
+09-May-2009 Matthias Gallas
++	Added index.php to all WB-Theme folders to prevent directory spoofing
+06-May-2009 Matthias Gallas
+!	Updated Norsk language File (Thanks to oeh)
+#	Fixed bug with not always included stylesheets in backend (ticket #717)
+27-Apr-2009 Matthias Gallas
+#	Fixed bug with missing option for admin-tools in advanced view of access
+	settings (ticket #714)
+#	Fixed bug with backup fails if a user has only permissions to admin-tools (ticket #715)
+#	Fixed bug with missing template object in groups and user settings(ticket #716)
+25-Apr-2009 Matthias Gallas
+!	Updated Dutch language files for modules (Thanks to LuckyLuke)
+23-Apr-2009 Matthias Gallas
+#	Fixed bug with dropdownlist in pages settings (ticket #713)
+20-Apr-2009 Matthias Gallas
+!	Update show_menu2 to version 4.8 (ticket #712)
+#	Fixed small error in Spain language file (ticket #711)
+18-Apr-2009 Matthias Gallas
+!	Updated Dutch language file (Thanks to Luckyluke)
+17-Apr-2009 Matthias Gallas
+#	Fixed MenuLink timeout with many large wysiwyg-pages (ticket #710)
+!	Updated again Norsk language File (Thanks to oeh)
+!	Updated Dutch language file (Thanks to Luckyluke)
+13-Apr-2009 Matthias Gallas
+#	Fixed minor dispay issue in upgrade script
+!	Updated Norsk language File (Thanks to oeh)
+!	Updated French language files (Thanks to Quinto and VotreEspace)
+!	Updated Danish language file (Thanks to Achrist)
+12-Apr-2009 Matthias Gallas
+#	Fixed not defined language variable in account/email.php (Thanks to BlackTiger)
+#	Fixed Typo in group_form.htt (ticket #705)
+01-Mar-2009 Christian Sommer
+!	Added disclaimer to upgrade-script.php	
+28-Feb-2009 Christian Sommer
+#	Removed hardcoded admin path from JSAdmin module (jsadmin/js/dragdrop.js)
+25-Feb-2009 Matthias Gallas
++	Added language support for template_description (affects templates and themes)
+#	fixed wrong path to images in news and form modul
+#	fixed manage section is showed twice (ticket #694)
+-	removed unneeded icons from wb_theme
+-	removed unneeded stylesheet.css from account dir
+#	renamed warning.htt to warning.html to fix display of sourcecode after invalid logins
++	added fixed error.htt also to classic theme
++	corrected info.php of news-modul
+24-Feb-2009 Dietrich Roland Pehlke
+!	Changes in warning.htt templates to get valid XHTL1.1 output - replace the center-tag with div
+#	add "AND section_id='$section_id'" to the delete-query to avoid conflicts if there are more
+	than one Form on one single page.
+#	Modify error.htt template in wb_theme for valid XHTML1.1 output - replace the center-tag with a div
+	and replace the br-tag with valid p-tags.
+22-Feb-2009 Matthias Gallas
++	added skinable Admin Interface
+21-Feb-2009 Christian Sommer
++	added update of search table missing in Changeset 941
+#	fixed wrong index in language array
+!	removed some comment lines (changes are tracked by SVN)
+20-Feb-2009 Dietrich Roland Pehlke (aldus)
+!	add additional tr and td tags to the text_no_results message to get valid XHMTL output
+19-Feb-2009 Christian Sommer
+!	addon overview to show advanced options after redirect from reload.php
+#	fixed bug if language folder contains none language files (XX.php) or sub folders
++	added option to invoke module upgrade.php/uninstall.php files from backend (for modules uploaded via FTP)
+18-Feb-2009 Dietrich Roland Pehlke (aldus)
+#	fixed: typos in the section_id inside the action-link 
+!	Remove test_trash and unused variables in query, added suggetions from #588
+#	Bugfix for form bug (ticket #688)
+17-Feb-2009 Christian Sommer
++	added option to invoke module install.php from backend (for modules uploaded via FTP)
+!	admin Add-on settings no hidden by default (can be set visible via advanced link)
+16-Feb-2009 Christian Sommer
+!	moved reload option of Add-ons to main Add-on section
+!	reworked logout to reset possible remember key in database when logging out
+15-Feb-2009 Christian Sommer
+#	fixed bug with smart login option (remember me) (ticket #689)
+#	special chars like &nbsp; are shown when editing Add-on CSS files (ticket #678)
+!	redirect time for function print_success can now be defined in Settings (ticket #603)
+-	removed reload admin tool
++	added possibility to reload Add-ons via the Add-on section
+14-Feb-2009 Christian Sommer
+!	added option to display current user name in backend template
+#	fixed wrong redirect path and added SVN Id
+13-Feb-2009 Christian Sommer
++	added option to perform pre-installation checks to test requirements of Add-Ons
+#	added error messages to installation process for Add-Ons with wrong file type
+08-Feb-2009 Christian Sommer
+#	fixed warning if database connection failed during installation process
+06-Feb-2009 Christian Sommer
+!	fixed some typos in German language file (thanks to freeSbee)
+!	added new captcha fonts and replaced old background images with the ones created by thorn
+05-Feb-2009 Christian Sommer
+!	mail text for register, signup and forgot mail now taken from WB language file (ticket #684)
+02-Feb-2009 Christian Sommer
+#	removed PHPMailer fix introduced with 2.0.3 to get SMTP working again (line 1041 in class.smtp.php)
+02-Feb-2009 Matthias Gallas
+#	Fixed bug wich causes that install of captcha-control may fail (ticket #682 thanks to thorn)
+01-Feb-2009 Matthias Gallas
+!	Update FCKEditor to version 2.6.4
+22-Jan-2009 Christian Sommer
+!	Added default target attribut to backend menu links
+21-Jan-2009 Matthias Gallas
+!	Copyright notices now includes 2009
+20-Jan-2009 Matthias Gallas
+#	fixed form-module select (multiple) doesn't work (ticket #681 Thanks to thorn)
+17-Jan-2009 Matthias Gallas
++	added French languages to modules
+!	changed handling of post_date in news modul (thanks to susigross)
++	added hour and minute support to default published_when field in news modul
+13-Jan-2009 Christian Sommer
+-	removed the obsolete Codepress framework from the include folder
++	added Javascript syntax highlighting framework EditArea as replacement for Codepress
+!	updated external PHPMailer class to latest version (v2.0.3)
+08-Jan-2009 Christian Sommer
+#	fixed error message in admin class if type array not defined
+05-Jan-2009 Dietrich Roland Pehlke
+#	Code-Snippets are no longer shown as type: unknown. 
++	Additional key in the languagefiles "$TEXT['CODE_SNIPPET']";
+#	fixed bug for the rss of news, see ticket #609
+04-Jan-2009 Matthias Gallas
+#	made news Modul multilingual, see ticket #676 (some additional translations are needed)
+03-Jan-2009 Matthias Gallas
+#	fixed bug in view.php of news module (ticket #676 Thanks to susigross)
+#	fixed another bug in view.php of news modul introduced in changeset [892]
+30-Dec-2008 Matthias Gallas
++	added default new language variables to all language files
+-	modul_uninstall: Removed undefined and unused constants (DB_FETCHMODE_ASSOC)
+!	modul_uninstall: added language variable $TEXT['FILE'] instead of "Datei"
+29-Dec-2008 Dietrich Roland Pehlke
++	add language support for the errormessages inside the uninstall.php files for modules
+	and templates.
+!	add new keys inside the german de.php language-file.
+-	removed my own debugging-code (was in 893 by mistake)
+!	Correct the last date in the changelog
+29-Dec-2008 Matthias Gallas
+!	set version to 2.8 BETA
+#	replaced in news modul special chars with entities to get valid output
+!	changed SESSION ID Separator from '&' to '&amp;' to get valid output 
+-	Removed the <p> tag around the news as it is added from the editor  
+28-Dec-2008 Dietrich Roland Pehlke (aldus)
++	ticket 610: add ip-address to the email-body in the form-modul.
++	ticket 607: include the frontend.css in the comment_page.php file of the news-module.
+#	File: admin/admintools/index.php - add "order by name" to the query to display the admintools in alphabetic order.
+#	File: admin/modules/uninstall.php - remove a db-query to a db-field that doesn't exists in wb 2.7 anymore 
+26-Dec-2008 Thomas Hornik
+#	fixed two issues with searchresult-highlighting: do not highlight in <pre>/<code>-tags, do not convert &lt; to &amp;lt; anymore. 
+13-Dec-2008 Christian Sommer
+!	changed mailer to not extract line break of alternative body text (thanks to freeSbee)
+28-Oct-2008 Christian Sommer
+!	updated output filter regex to exclude mail addresses contained in input fields
+27-Nov-2008 Thomas Hornik
+!	added redirect-type (301/302) to menu_link
+24-Nov-2008 Matthias Gallas
+!	updated upgrade-script.php to add sec_anchor field to settings table
+22-Nov-2008 Thomas Hornik
+!	search: replaced most of $string_ul_umlauts (from search_convert.php) through use of preg's u-switch.
+!	search: replaced strtr() by str_replace() (it's just faster). Changed &#39; to &#039;
+06-Nov-2008 Thomas Hornik
+#	Module code: curly backets get deleted by pparse() from phplib --> old fix in #569 wasn't that smart. Fixed.
+#	fixed some typos in DE language-file, added missing tab in search.php
+02-Nov-2008 Thomas Hornik
+!	news: added PAGE_SPACER to $page_title (creates e.g. title-32.php instead of title32.php)
+01-Nov-2008 Thomas Hornik
+!	improved ext_charset to work with latin1,cp1252,cp1251,latin2,hebrew,greek,latin5,latin7,utf8
++	added config for section anchor. ATTN: add "INSERT INTO TABLE_PREFIX.'settings' (name,value,extra) VALUES ('sec_anchor', 'wb_', '')" to upgrade-script.
+!	updated menulink and search to use configureable section-anchor
+29-Oct-2008 Thomas Hornik
+# News: total number of news wasn't calculated correctly
+!	Captcha: removed IFRAME for Calculation-as-text captcha
+-	removed useless init_utf8funcs()-function
++	search: added search_lang for use in search-form. Using DE, the search will search ä=ae,... (alternate spelling of german umlauts)
+-	search: removed undocumented word-boundary search
+!	search: search_path is now anchored to the beginning of link ("link LIKE '$path%'" instead of "link LIKE '%$path%'")
++	search: added key 'ext_charset' to search-extension to query external databases
+25-Oct-2008 Christian Sommer
+!	updated basic templates according the template guidelines
+24-Oct-2008 Dietrich Roland Pehlke
+#	applied bugfix for ticket #608 (redeclaration of news module)
+23-Oct-2008 Dietrich Roland Pehlke
+!	modified module delete function to provide additional information when module is in use when trying to delete
+!	modified template delete function to provide additional information when template is in when trying to delete
+21-Oct-2008 Matthias Gallas
+#	fixed display issue in news modul
+!	updated show_menu2 to version 4.7
+18-Sep-2008 Thomas Hornik
++	Added captcha-reload
+16-Sep-2008 Thomas Hornik
+#	search: fixed windows-related regex issue
+19-Aug-2008 Matthias Gallas
+!	updated to latest FCKEditor version 2.6.3
+02-Aug-2008 Thomas Hornik
+#	fixed sorting order of search-results
+25-Jul-2008 Thomas Hornik
+#	fixed an issues related to search, changed one SQL inner join (to use USING instead of WHERE)
+!	added $database = new Database(); in front of output-filter
+05-Jul-2008 Thomas Hornik
+#	fixed MODI_DATE/PUBLISHED_DATE issue in news-module. Added PUBLISHED_TIME, removed PUBL_DATE,PUBL_TIME. Thanks to forum-member timorotha
+02-Jul-2008 Christian Sommer
+!	updated to latest FCKEditor version 2.6.2
+01-Jul-2008 Thomas Hornik
+#	page-names with doubled (or more) points can not be handled if php runs as cgi. Thanks to forum member hgi2001.
+29-June-2008 Christian Sommer
+!	applied additional mail check to forgot login form
+28-June-2008 Christian Sommer
+!	class and id attributes in mailto links are no longer ignored by the output filter
+22-Jun-2008 Thomas Hornik
+#	fixed issue with captcha (mt_rand() instead of rand())
+#	fixed bug in search (link to http://.../search/index.php performs a search with string 'unset')
+22-June-2008 Christian Sommer
+!	added output of block number to section admin if no block name is specified
+21-June-2008 Christian Sommer
++	added output of block names to modify pages dialogue if blocks are enabled
+!	updated show_menu2 to version 4.60 (to avoid disappearing menus)
+08-Jun-2008 Thomas Hornik
+#	hebrew-table in charsets-table.php was faultily imported - fixed. Thanks to forum-member iti.
+24-May-2008 Christian Sommer
+!	modified output filter routine to prevent errors if database entries do not exist
+04-May-2008 Thomas Hornik
+!	changed register_backend_modfile() to work with wysiwyg-module, too
+01-May-2008 Thomas Hornik
+#	fixed file-naming issue when old page-names (from before 2.7) contains "&"
+26-Apr-2008 Thomas Hornik
+#	class.admin.php deletes actual query-string while redirection. fixed.
+25-Apr-2008 Matthias Gallas
+#	fixed validiation bug in option fields of form modul
+------------------------------------- 2.7.0 -------------------------------------
+21-Apr-2008 Christian Sommer
+!	set version to 2.7
+#	fixed bug in the PL language file of the JS calendar
++	added some basic functions for module developers
+20-Apr-2008 Thomas Hornik
+#	fix: allow external urls for search-results
+17-Apr-2008 Thomas Hornik
+#	fixed jscalendar's language-files
+16-Apr-2008 Christian Sommer
+#	fixed possible clashes with intro page feature and WB core file /pages/index.php
+15-Apr-2008 Thomas Hornik
+!	revert back to pagename-creation from $page_menu, instead of $page_title
+15-Apr-2008 Christian Sommer
+#	fixed bug introduced with Changeset 826
+14-Apr-2008 Christian Sommer
++	added show_menu2() to pre-installed WB modules (many thanks to Brodie Thiesfield for this great menu function replacment)
+!	allowed tags for multi-lingual module descriptions
+14-Apr-2008 Thomas Hornik
+#	fixed issue with multigroups (level 0 page-creation)
+13-Apr-2008 Thomas Hornik
+!	ASP: off per default. CAPTCHA: removed unneeded $admin. Filename: just convert chars like quote, doublequote, < > & to empty string.
+#	fixed language-files
+10-Apr-2008 Christian Sommer
+!	fixed WB-Link Plugin to work with WB versions below 2.7 ($admin->page_is_visible() only available in WB 2.7)
+09-Apr-2008 Christian Sommer
+!	modified FCKEditor WB-Link Plugin to work also with WB versions below 2.7
+07-Apr-2008 Matthias Gallas
+#	fixed error in german laguage file
+07-Apr-2008 Christian Sommer
++	added the latest FCKEditor v2.60
+-	removed the outdated FCKEditor v2.51
+!	set version from 2.7 (RC3) to 2.7 (RC3a)
+07-Apr-2008 Thomas Hornik
+!	added missing group_id in INSERT-query
+!	removed PHP5 function stripos from installation script
+06-Apr-2008 Christian Sommer
+!	removed some obsolete language variables from news and form module (now defined in global WB language files)
+!	enlarged admin tool icon to match size 50x50px of the other icons
+05-Apr-2008 Matthias Gallas
+!	Moved language variables for edit module CSS from modules language files to core language files
++	Added norwegian translation (Thanks OEH)
+05-Apr-2008 Thomas Hornik
+!	some small fixes: group_id/groups_id-handling, safe_mode-query in install, better work-around for issue with phplib and code-module (removed {})
+#	fixed viewing_groups-handling in /admin/pages/add.php
+!	imported new russian translation from User shlack. Many Thanks
+05-Apr-2008 Christian Sommer
+!	added workaround for template parser class
+!	moved functions to edit module CSS files into the WB core to avoid duplication of code
+!	minor layout change
+!	allowed the character "-" to be used in database names
+04-Apr-2008 Thomas Hornik
+#	fixed: Language-redirect removed query-string from URL
+04-Apr-2008 Christian Sommer
+!	set WB version to 2.7 (RC3) for the next upcoming release candidate
+03-Apr-2008 Christian Sommer
+!	some code clean up in news/form module
+!	small adaption of the edit CSS function file css.functions.php
+!	updated edit module CSS functions to include backend.css into head if possible
+#	fixed bug in Javascript decryption routines of the Output-Filter module
+02-Apr-2008 Matthias Gallas
+#	fixed bug with registration of users are not added to signup group
+02-Apr-2008 Christian Sommer
+#	added handling of missing characters to mailto encryption routines
+!	some code clean-up in News module
+!	fixed some layout issues with Form module (combination with Output-filter)
+!	fixed layout issue with optional subject/body text of encrypted mailto links
+#	fixed bug in the mailto Javascript encryption code of the Output-Filter module
+01-Apr-2008 Christian Sommer
+!	removed typo in English language file
+!	added updated edit CSS functions to the News module
+!	added updated edit CSS functions to the Form module
+31-Mar-2008 Christian Sommer
+#	fixed bug in output filter (mailto links with HTML entities in optional part)
+29-Mar-2008 Christian Sommer
+!	added missing translation to Dutch language file (thanks Bramus)
+28-Mar-2008 Thomas Hornik
+!	Some cleanup in search.php
+!	WYSIWYG: changed field text to LONGTEXT, too.
+25-Mar-2008 Matthias Gallas
+!	Updated Dutch language file (Thanks to Bramus)
+26-Mar-2008 Tomas Hornik
+#	fixed E_NOTICE-message in admin/modules/details.php
+25-Mar-2008 Thomas Hornik
++	search: added search_time_limit in settings (mainly for sites with PHP < 4.3.3 and slow search)
++	search: added missing code to allow query of external data and to process the search data itself
+25-Mar-2008 Matthias Gallas
+#	Fixed missing <body> tag in Admin Interface (ticket #572)
+24-Mar-2008 Matthias Gallas
+!	Updated Danish Language file (Thanks to Achrist)
+! 	Added class nixhier to frontend.css from form and news Modul (required for ASP)
+24-Mar-2008 Thomas Hornik
++	Added RU-language-files, provided by user shlack; converted to entities.
+#	search: great speed-up with large pages - requires PHP >= 4.3.3; small speed-up for PHP < 4.3.3
+#	FCK-Editor: loads large pages faster
+-	removed include/captcha/asp.php. css have to be added to module's css-files.
+23-Mar-2008 Matthias Gallas
+! 	Updated form modul for valid output, removed all javascript (Big thanks to BerndJM)
+17-Mar-2008 Thomas Hornik
+#	fixed an issue with utf8_check() (too slow with many ~100KB pages)
+15-Mar-2008 Thomas Hornik
+#	menulink: link can be menulink or subpage of menulink, too
+#	call_captcha: added parameter 'style', fixed some issue with parameter 'image' and text-style captchas
+13-Mar-2008 Christian Sommer
+! 	adjusted error/warning templates to the updated backend layout
+13-Mar-2008 Matthias Gallas
+! 	replaced one icon in admin interface
+12-Mar-2008 Matthias Gallas
+# 	fixed loading time and some display issues in IE6 of the new admin interface
+!	tweaked the new admin interface a little bit
+12-Mar-2008 Christian Sommer
+! 	adjusted background color of installation and upgrade script
+! 	set version number to 2.7 (RC2) for the upcoming second release candidate
+! 	removed hardcoded /admin folder strings from WB core files where possible
+! 	added WB home folder fix proposed by the forum member spawnferkel (thanks)
+! 	defined <strong> and <em> instead of <b> and <i> as default tags
+12-Mar-2008 Thomas Hornik
++	CAPTCHA: added parameter to call_captcha (can be one of: 'image', 'input' or 'text')
+11-Mar-2008 Christian Sommer
+#	fixed issue with output filter (all .@ in descriptive mailto part: >xxxxx</a> were replaced; now restricted to emails)
+#	fixed issue with WYSIWYG pages (appears if backend language and page frontend language differs)
+08-Mar-2008 Thomas Hornik
+#	fixed issue with news and end-date
+04-Mar-2008 Christian Sommer
+#	fixed issue with smart view URL link
+03-Mar-2008 Thomas Hornik
+#	fixed an issue with text-captcha (default text got saved). Changes default text.
+#	fixed an issue with highlighting
+02-Mar-2008 Thomas Hornik
+#	added missing text in language-files
++	added missing sorting to language dropdown in admin/pages/settings.php
+01-Mar-2008 Thomas Hornik
+#	fixed ticket #562, applied changes from user tavitar with some own additions
++	added check for AddDefaultCharset to install
+29-Feb-2008 Thomas Hornik
+#	fixed issue in pagename generation if AddDefaultCharset is set (as work-around).
+28-Feb-2008 Thomas Hornik
+#	fixed hebrew transliteration-table. Thanks to forum-member iti.
+28-Feb-2008	Christian Sommer
+#	added bugfix from the forum member tavitar to fix an issue with multiple groups (module permission do not add up properly)
+25-Feb-2008	Matthias Gallas
++	added missing Dutch language files for core modules
+24-Feb-2008 Thomas Hornik
+#	issue with menulink in upgrade-script. Fixed.
+23-Feb-2008 Christian Sommer
+!	suppressed warnings in initialize.php if constant already defined; modified upgrade script to make FCK the new default editor
+#	fixed bug in upgrade script (WBMailer setting)
+22-Feb-2008 Christian Sommer
+#	some layout changes on the upgrade-script, fixed error in precheck
+#	restricted database name and table prefix to "a-zA-Z0-9_" (avoid problems with non quoted table/field names)
+20-Feb-2008 Thomas Hornik
+!	added workaround for language sorting-problem
+20-Feb-2008	Christian Sommer
+!	added WYSIWYG DB update and missing WBMAILER settings to upgrade script (added some status messages)
+!	modified upgrade script and suppressed headers already send message (avoid issues with error reporting E_ALL)
+#	added the FCKEditor module PHP connector fix found by the forum member Luisehahne (thanks man)
+!	Updated upgrade script (added WB2.7 basic styles, pre-checks and disclaimer)
+19-Feb-2008	Matthias Gallas
+!	Updated upgrade script
+!	Changed language sorting from directory to name (needs additional to be escaped!)
++	added new languages to install script
+#	fixed some issues and typos in languagefiles
+18-Feb-2008 Thomas Hornik
++	Converted and added some old language-files (BG, CS, PL, RU)
+18-Feb-2008	Christian Sommer
+#	Fixed two broken links
+!	Modified news module to create a default index.php during installation (directory spoofing)
+17-Feb-2008	Matthias Gallas
+-	Removed colloquially german language files as the filename causes issues
+17-Feb-2008	Christian Sommer
+!	removed German Umlauts in some language file (PHP comments)
+#	fixed language bug (backend language switched to the pages language viewed in frontend)
+16-Feb-2008	Thomas Hornik
+!	updated upgrade-script (menulink)
+13-Feb-2008 Thomas Hornik
++	allow externl links in menulink-module
+#	fixed an highlighting-issue: highlighting a page with more than one sections mangled umlauts in the second to last section.
+10-Feb-2008 Matthias Gallas
+#	fixed some errors in standard german language file
++	added new colloquially german language file
+10-Feb-2008 Thomas Hornik
+#	CAPTCHA: Wrong text for calc_ttf-captcha. 
+10-Feb-2008 Christian Sommer
+#	fixed E_NOTICE warning with already defined module frontend constants
+-	removed all stuff other than page_content from the blank template
+!	adapted color for onmouseover effect
+!	added disclaimer to the upgrade-script as the script is not sufficiently tested yet
+!	made Website Header field in Settings visible per default
+!	modified all templates (display Website Header, use show_menu instead of page_menu)
+!	added highlighting of active input elements to all WB backend areas; changed some colors
+!	removed hover highlighting of input fields to avoid possible confusion
+!	added visualization of wrong/empty input fields
+#	fixed a bug with re-enter admin password
+09-Feb-2008 Christian Sommer
+!	modified some colors and CSS definitions of pages, media and section interface
+#	output_filter: fixed bug in regular expression (eats up characters in mailto links)
+#	output_filter: removed word boundary from mailto regex part
+#	fixed bug in menu_link module (IE 7 did not show the select boxes at all)
+#	fixed bug in user signup
+!	output_filter: added word boundary for the mailto regex part
+09-Feb-2008 Thomas Hornwik
+!	jsadmin: added latest changes from swen, fixes most (or all?) issues.
+08-Feb-2008 Matthias Gallas
++	added kewyword id to all new files
+08-Feb-2008 Christian Sommer
+-	Removed admin module mail_filter
++	Added revised version of the output filter module
+08-Feb-2008 Thomas Hornik
+!	module news: set focus on captcha-field if user have to re-enter captcha
+!	Changed maxlength of captcha-fields - don't tell the bots how many chars we want to have.
+-	Removed unused function is_access_denied() from search
+04-Feb-2008 Thomas Hornik
+!	email-addresses are excluded from search-results page.
+#	Fixed possible XSS in account/login.php and forgot-form.php
+04-Feb-2008 Christian Sommer
+#	allowed usage of tags in settings fields: website_header, website_footer
+03-Feb-2008 Thomas Hornik
+#	out-of-date default page isn't shown anymore, instead shows next public page.
+#	fck_wbmodules.php: foreign privates pages in dropdown, fixed.
+03-Feb-2008 Matthias Gallas
++	added kewyword id to all new files
+02-Feb-2008 Christian Sommer
+#	fixed wrong redirect in /admin/images
+02-Feb-2008 Thomas Hornik
+!	search shows email-addresses, even if email-filter is activated (on page with highlighting). Fixed.
++	Added missing text in languages files for jscalendar
+!	settings: pages-directory '/' will be converted to '' (empty string) on save.
+!	changed last remaining call to my_htmlspecialchars() to htmlspecialchars()
+#	fixed path in jscalendar-css
+01-Feb-2008 Christian Sommer
+#	Added default index.php to all folders (directory spoofing)
+01-Feb-2008 Thomas Hornik
+#	Added some missing add_slashes(), get_post_escaped(), and strip_tags() for $_POST, $_GET and $_REQUEST-data. Also for $_SERVER['PHP_SELF'].
+#	Fixed possible XSS-vulnerability in wb/search/search.php
+31-Jan-2008 Thomas Hornik
+!	Adjusted clock-red icon to match wb colors
+#	admin/pages: the parent dropdown-list in index.php and settings.php showed foreign private pages, too. Fixed.
++	Added multi-group to upgrade-script
+30-Jan-2008 Christian Sommer
+#	fixed bug with text Captcha (input was restricted to 10 chars.) and a small layout issue
+30-Jan-2008 Thomas Hornik
+#	registered pages didn't appear in menu. fixed.
+!	Updated upgrade-script. (Some upgrades still missing)
+29-Jan-2008 Thomas Hornik
+#	strtotime()'s behavior differ in PHP4 and PHP5.
+	Had to fix some issues in admin/pages/sections and module news.
+#	Security bugfix: Text file for text-captcha was world-readable. Moved to database.
+#	Text-captcha: empty line in text file, following a question, was accepted as answer. Fixed.
+28-Jan-2008 Matthias Gallas
+#	Replaced all special chars in language files with htmlentities or unicode
++	Added some missing lines in language files
++	Added missing keyword Id
+28-Jan-2008 Christian Sommer
+#	fixed issue with top bar icon alt tag
+!	added some more backend layout modifications
+!	corrected bug in NL.php language file
+!	added missing session cookie forgotten in Changeset 593
+!	added possibility to select the default backend language during installation process
+!	Re-introduced Changeset 593 (filename in pages/ from page_title instead of menu_title)
+#	Fixed some bugs in the Javascript Admin modul
+28-Jan-2008 Thomas Hornik
++	Allow a user-supplied From-Name in form-settings for email und success-email.
+!	changeset 627: menu_link and search/search.php needs some minor changes, too.
++	Added Text-CAPTCHA on request. The captcha-text will be stored in temp/.captcha_text.txt
+27-Jan-2008 Christian Sommer
+!	fixed CSS background color of the installer CSS
+!	replaced static text with variable text from language file
+!	introduced the WB 2.7 backend style developed by Michael Brinsteiner (escpro), thanks man
+!	added missing ID tags
+27-Jan-2008 Christian Sommer
+!	added missing ID tags
+!	added default language for users to avoid empty language fields
+27-Jan-2008 Matthias Gallas
++	added kewyword id to new file
+#	Fixed some spelling errors in german language file
+27-Jan-2008 Thomas Hornik
+!	Module form: user supplied input isn't lost on captcha-failure anymore.
+#	fixed 100%-cpu-load-event in CAPTCHA admin-tool.
++	Added Calc_ttf_image CAPTCHA.
+!	Changed captcha/captcha.php to use table-layout for CAPTCHA.
+!	Some minor changes in CAPTCHA-code.
+!	Added some text to CAPTCHA admin-tool.
+#	Module form: dropdown "success page" listed foreign private pages, too. Fixed.
++	Added preview-images for CAPTCHA.
+!	Improved security: CAPTCHAS can't be loaded from outside WB
+!	CAPTCHA ttf_image: added variant. Adjusted character-pool and one background for better readability.
+26-Jan-2008 Christian Sommer
+!	changed WYSIWYG content field from text to longtext (allows more than 65'534 characters) 
++	Added Javascript Admin module (developed by Stepan Riha, adapted for WB2.7 by Swen Uth)
+26-Jan-2008 Matthias Gallas
+#	fixed bug in Javascript Admin module
++	Added new language files
++	Added keywords to files where they are missing
+26-Jan-2008 Thomas Hornik
+!	fixed some issues with CAPTCHA and ASP. Adjusted baseline of '*' in supplyed fonts to meet
+	baseline of numbers. Added counter to ttf_image generation-loop. Removed now unneeded GD-lib verification.
+	Improved ASP in news-module.
++	module news: added publish_until field to control the visibility of a news-posting by date and time
+!	added strongly "condensed" fonts with many intersections for ttf-CAPTCHA as default fonts.
+	It should be very difficult for spam-bots to recognize intersected characters.
+25-Jan-2008 Christian Sommer
+!	removed changes introduced with changeset 593 (we need to think off if we want to implement that feature)
+25-Jan-2008 Thomas Hornik
++	Added new CAPTCHA. Adapted core: signup and modules: news and form.
++	Added Advanced Spam Protection (ASP) to core: signup and modules news and form.
+#	module news: it was possible to post comments to postings with commenting disabled
+	or to inactive postings. Fixed
+24-Jan-2008 Thomas Hornik
+!	Generate filename in pages/ from page_title instead of menu_title.
+24-Jan-2008 Christian Sommer
+#	fixed bug in Codepress integration (if codepress framework not installed)
++	added language support to all integrated modules (except for news and form module)
+#	fixed another E_NOTICE warning
+24-Jan-2008 Matthias Gallas
++	Added keywords to files where they are missing
+23-Jan-2008 Christian Sommer
++	Added German language file for WB 2.7
+22-Jan-2008 Christian Sommer
++	Added language support for the Admin tools (backup, reload, mail_filter)
+-	Removed all admin tool text outputs from global language file to module language files
+!	Introduced language support for the overview page of the Admin tools
++	Added function get_variable_content to allow extraction of variable content without including files
+!	Changed language support for Addons -> Moduls -> Details
+22-Jan-2008 Matthias Gallas
++	Added keywords to new mail filter files
+22-Jan-2008 Thomas Hornik
++	manage-sections: changed calendar-icon to clock-icon, added second icon to empty date-field.
+21-Jan-2008 Christian Sommer
+!	Removed the manage section icon from the page admin (sections managed by publish by date function) 
+#	Fixed bug with the edit module CSS file implementation (IE7, Opera)
+21-Jan-2008 Thomas Hornik
++	Unique session-identifier for each website baker installation. fixes #354
+20-Jan-2008 Christian Sommer
+#	fixed E_NOTICE-warning in save.php when input data was wrong
++	added the new admin tool email output filter which allows to transform
+	emails before displaying them on the frontend
+20-Jan-2008 Thomas Hornik
+!	upgrade-script.php: fixed mysql_error() handling
+!	upgrade-script.php: added code to update menu_links
+#	fixed a typo in upgrade-script.php
+!	updated admin/pages/sections.php to changed jscalendar-api from changeset 571
+!	module menu_link: after adding a menu_link, the anchor dropdown shows "#"; fixed 
+#	fixed E_NOTICE-warning in news-module (about SECTION_ID in comment.php)
+19-Jan-2008 Christian Sommer
+!	Reduced the success time out and set WYSIWSY background to white
+#	Fixed some errors in form module (only in conjunction with E_ALL)
+!	Added support to configure the mailer settings via the backend
+19-Jan-2008 Matthias Gallas
+#	Fixed bug in news modul with missing variable PAGE_DIRECTORY
++	Added keywords to new files
+19-Jan-2008 Thomas Hornik
+-	Module news: removed old calendar
++	Module news: adapted news to use the new include/jscalendar
++	added installation-instructions to include/jscalendar
+#	Module code: curly backets get deleted by pparse() from phplib. fixed
++	Module menu_link: added dropdown-listbox to select anchor
+!	upgrade-script: added code to convert old menu_links to new ones (partly)
+18-Jan-2008 Matthias Gallas
+!	Updated news modul with features from the advanced news modul
+!	Updated form modul with features from the advanced form modul
+#	Fixed hardcoded /pages issue in intro page feature
++	Added example .htaccess to parse .html files, fixed bug in changeset 555
+!	Revoked parts of changeset 547 and again introduced changeset 540
++	Added keywords to modules/fckeditor and all other new files
+18-Jan-2008 Thomas Hornik
+#	fixed two E_NOTICE-warnings in admin/pages/index.php
++	added new module-based search-function
++	added new publish-by-date code
+17-Jan-2008 Christian Sommer
+#	fixed bug in frontend login and multiple groups (only in conjunction with E_ALL)
+!	removed the PAGE_EXTENSION from frontend login
+17-Jan-2008 Matthias Gallas
+#	Reintroduced changes from changeset 520 and 540 wich where overwritten 
+	by changeset 546
+#	Revoked changeset 541 end removed all PAGE_EXTENSION variables and the related
+	option in WB settings as this function only works on Apache Servers
+	together with .htaccess and mod_rewrite
++	Added keywords to file menu_link/uninstall.php and new admintools files
+17-Jan-2008 Christian Sommer
+!	added the "users in multiple groups" feature (closes parts of ticket #546)
+16-Jan-2008 Thomas Hornik
+!	changed admin/pages/save.php to allow hidden config-elements in table search.
+!	changed module menu_link: added table mod_menu_link, fixed page-deleting-bug,
+	fixed odd behavior in case of menu_link as default-page.
+#	changing PHP-error-level within website baker does not work - fixed (fixed ticket 532)
+14-Jan-2008 Matthias Gallas
+#	Replaced hardcoded .php with the variable PAGE_EXTENSION for the use in pagenames.
+	(!!Attention!! To get extenions other than .php working additional fixes are necessary!)
+#	Replaced the variable PAGE_EXTENSION with hardcoded .php on all places where the
+	pathes points to WB Corefiles with the page extension .php
+#	Replaced hardcoded text in login.php with language variables (fixes ticket 386)
+14-Jan-2008 Christian Sommer
+!	added a missing </tr> tag
+#	re-introduced bugfix of Changeset 472 (fixes ticket 402) accidentally 
+	removed by Changeset 529 (enhanced pages admin)
+13-Jan-2008 Christian Sommer
+#	moved administration tools from Settings to the new section Admin-Tools
+#	this bugfix closes the ticket 529 (WB upgrades modules with identical version)	
+!	increased redirection time after success message, corrected HOME link of the login panel
+!	updated PHPMailer framework to version 2.0.0 (/include/phpmailer)
+#	this bugfix closes ticket 412 (direct call of admin/settings/save.php clears database)
+#	fixed error with redirection to admin panel after installation
+12-Jan-2008 Christian Sommer
+!	introduced smart URL detection for the 'View' menu in the WB backend
+	(if page_id is set, redirect to this page instead of the root)
+!	introduced the enhanced pages admin dialogue (thanks to icouto)
+11-Jan-2008 Christian Sommer
++	added the FCKEditor module files missing in Changeset 527 (/modules/fckeditor)
+-	removed the hmtlarea files in /modules/htmlarea
+!	set the fckeditor as the new default editor /install/save.php
+!	Updated function: register_frontend_modfiles in /framework/frontend.functions.php
+	(added constants MOD_FRONTEND_CSS_REGISTERED, MOD_FRONTEND_JAVASCRIPT_REGISTERED)
+11-Jan-2008 Matthias Gallas
+!	Update codepress to Version 0.9.6
+!	Update phplib to Version 7.4a
+09-Jan-2008 Matthias Gallas
+!	Upgrade pclzip to the newer more php5 complaint version 2.6, see ticket #526
+#	Fixed ticket #542 (Thanks to Thorn)
+23-Dec-2007 Matthias Gallas
+!	Changed all copyright notices to include now 2008
+21-Sep-2007 Matthias Gallas
+#	Fixed a typo in /framework/frontend.functions.php cause that websites using
+	the new register_frontend_modifles() functions do not validate
+24-Jan-2007 Christian Sommer
+!	Replaced some core files to allow configuration of wbmailer via admin settings panel
+------------------------------------- 2.6.7 -------------------------------------
+02-Jan-2007 Christian Sommer
++	Added missing converting file for changeset [504]
+------------------------------------- 2.6.6 -------------------------------------
+01-Jul-2007 Matthias Gallas
+#	Fixed converting issue with some ISO-charsets and speeded up converting on large pages (thanks to Thorn)
+01-Jul-2007 Ryan Djurovich
+#	Fixed bug where error message not displayed when script fails to create a page
+#	Fixed bugs introduced in [484]
+14-May-2007 Matthias Gallas
++	Added support for ISO-8859-6.(Thanks to thorn)
+12-May-2007 Christian Sommer
++	Replaced functions page_css and page_javascript by register_frontend_modfiles
++	Added function register_backend_modfiles to allow backend modules to use optional CSS and JS files
++	Added the JS framework codepress to allow syntax highlighting for JS, HTML, PHP code (textarea)
++	Added the new function register_frontend_modfiles to the built in templates
+08-May-2007 Matthias Gallas
++	Added wrapper to functions.php if mb_string is not available (Thanks to thorn)
++	Added new functions page_css and page_javascript to the built in templates
++	Added search highlight class to css files of the built in templates
+30-Apr-2007 Matthias Gallas
+#	Fixed ticket #392; root_parent not being set correctly (Thanks to eggsurplus)
+10-Apr-2007 Matthias Gallas
++	Optimized search and highlighting funktions (Thanks to thorn)
+03-Apr-2007 Matthias Gallas
+#	Fixed a bug in menulink; if you deleted a menulink page the linked page was also deleted
+	in the pages directory (Special thanks to "Funky_MF" for the fix)
+01-Apr-2007 Matthias Gallas
+#	Fixed issues with some languages when UTF8 is used. Removed all htmlentites
+	from the code (revoked changeset 396) and added new functions instead. Adapted the
+	search and the highlighting to use the new functions. With this changes WB can now
+	be used with charset UTF8 for all languages. Very special thanks to Thorn who wrote
+	and tested this changes.
+12-Mar-2007 Matthias Gallas
++	Added multilingual support to search
+03-Mar-2007 Matthias Gallas
++	Added new function for highlighting search results in the content area
+	(Special thanks to "thorn" and "Funky_MF")
+#	Fixed some issues in search with special chars
+	(Special thanks to "thorn" and "Funky_MF")
+22-Feb-2007 Christian Sommer
+#	Fixed bug in changeset 428 (page files were not deleted in /pages folder due to a typo in wb/framework/function.php)
+16-Feb-2007 Christian Sommer
+!	Suppressed PHP warnings and errors when reading empty intro.php
+16-Feb-2007 Christian Sommer
+#	Applied fix to enable parsing of PHP code in the intro.php 
+12-Feb-2007 Christian Sommer
+!	Added functions page_css and page_javascript which allow to include optional
+	module files module.css and module.js into the <head> section. This allows to 
+	create valid (X)HTML, as CSS definitions of modules are included in the head section
+12-Feb-2007 Christian Sommer
+!	Security enhancement (reduced number of login trials from 50 to 3)
+02-Feb-2007 Matthias Gallas
+#	Applied fix for ticket #380 (Thanks to pcwacht)
+30-Jan-2007 Ryan Djurovich
+#	Applied fix for ticket #376
+29-Jan-2007 Matthias Gallas
++	Added new variable $MODULE_DESCRIPTION wich allows to have optional a language
+	specific description of the modules in the language files of the modules.
+21-Jan-2007 Matthias Gallas
+#	Fixed issue in the search table entries of form modul
+13-Jan-2007 Matthias Gallas
+#	Fixed some bugs in rss.php
+07-Jan-2007 Matthias Gallas
+#	Fixed error when uninstalling the news modul
+02-Jan-2007 Matthias Gallas
++   Added id keywords to all missing files
+#	Fixed issue with Permissions for pages sections
+27-Dec-2006 Matthias Gallas
+#	Fixed form modul stores empty records
+------------------------------------- 2.6.5 -------------------------------------
+25-Dec-2006 Ryan Djurovich
+!	Changed links to WB help website
+24-Dec-2006 Matthias Gallas
+#	Fixed some minor javascript errors in admin (thanks to pcwacht)
+#	Fixed root_parent doesn't get updated when moving item in menu (#305)
+!	Changed all copyright notices to include now 2007
+23-Dec-2006 Matthias Gallas
+#	Fixed IE allows to set a page as parent of itself (#320)
+#	Fixed problem with Page Title has to be escaped (#287)
+#	Fixed the possibility to call the index.php of the templates directly in the browser (#291)
+21-Dec-2006 Matthias Gallas
+#	Fixed missing message when adding a site without page title (#300)
+21-Dec-2006 Ryan Djurovich
+#	Fixed bug with captcha script (#346)
+20-Dec-2006 Matthias Gallas
+#	Fixed Return to Search Results Page (#365)
+!	Set Version to 2.6.5
+-	Removed Changeset 365 because this will be a part of WB 2.7.x
+#	Fixed a little typo error in class.admin.php (#364)
+26-Nov-2006 Ryan Djurovich
++	Added new script that could possibly be apart of 2.7.x as a replacement
+	for having the pages directory 
+17-Nov-2006 Matthias Gallas
+#	Fixed fatal error in line 46 news/comment.php (thanks to eki)(#358)
+15-Nov-2006 Matthias Gallas
+#	Fixed again intropage doesn't work (#71)
+20-Oct-2006 Matthias Gallas
++	Added phpmailer class (thanks to doc)
++	Added Remember-expanded-pages-in-admin (thanks to ephraimt)
++	Added List sorting in admin area (thanks to rsmith)
+#	Fixed table width 100% are wrong displayed in container templates
+	when IE is used (#350)
+#	Fixed large space between menupoints in IE (#349)
+#	Fixed Website description is not displayed when no page description
+	available (#348)
+#	Fixed group images in news modul cannot be stored (#342)
+#	Fixed Typo in form/save_field.php (#341)
+#	Fixed files in /pages/posts folder are not deleted (#340)
+#	Fixed specialchars problem in the news modul (#339)
+#	Fixed news modul stores empty records (#338)
+#	Fixed Captcha didn't work in news comments (#337)
+#	Fixed various php notices (#334)
++	Added new upgrade_function (thanks to kozmoz)
+#	Fixed addons table isn't updated when a modul is updated (#332)
+#	Fixed spelling errors in the signup2.php (#330)
+#	Fixed MySQL 5.x missing default values for INT fields in all system
+	and modules tables (#329)
+#	Fixed installer does not insert admin user (#328)
++	Added support for getting page ID of page that referred search
+	request (#327) (thanks to brofield)
+#	Fixed search results generate invalid XHTML and notify warnings (#326)
+Stefan Braunewell
+#	Fixed Field 'last_reset' doesn't have a default value (#313)
++	Added get_post_escaped to wb class which automatically calls add_slashes
+	on get_post output and used it in form/save_field.php
+------------------------------------- 2.6.4 -------------------------------------
+20-May-2006 Ryan Djurovich
+#	Fixed security issues related to #237
+#	Fixed typo in news save comment page (#282)
+#	Fixed typo in news delete post page (#283)
+!	Added multi-submission protection to form module (#119)
+#	Added notice for when PHP Session Support appears to be disabled in installer,
+	even if it is enabled and the problem actually lies in the users browser (#154)
+19-May-2006 Ryan Djurovich
+#	Fixed problem in forgotten login form where email field is too short (#207)
+#	Fixed typo in forgotten login details email (#190)
+15-May-2006 Stefan Braunewell
+#	Fixed security issues (#237)
+03-May-2006 Stefan Braunewell
+#	Fixed problems with pre-2.6.0 modules in section list
+#	Fixed e-mail bug caused by From: headers in internal mail function calls
+	(#189)
+#	E-mail validation in install script now accepts new top-level domains
+	(#162)
+#	Error status is now overwritten by next database query (#182)
+#	Fixed obscure problem in htmlarea install script
+------------------------------------- 2.6.3 -------------------------------------
+19-Mar-2006 Stefan Braunewell
+#	Fixed ticket #146: problems removing groups from viewers list of a page
+16-Mar-2006 Stefan Braunewell
+!	Changed link target selection. Now self, top and new. (Ticket #145)
+#	Fixed ticket #143. Charset setting is now used in admin login and forgot
+	password pages.
+#	Some changes to the SQL code in the install script for improved 
+	compatibility with new MySQL versions
+#	Fixed ticket #134 - error on browsing media.
++	Improved backup module: new choice between full database or WB-related
+	backup.
+#	Fixed ticket #141 - admin now sees all folders in media
+#	Fixed e-mail sending problems due to additional parameter in mail call.
+#	Applied fix regarding ticket #138: new users now get deleted if
+	sending e-mail fails.
+#	Fixed ticket #137: Last Reset timer not reset in frontend forgotten 
+	password process
+#	Removed duplicate expression from modules/news/install.php which caused
+	problems in installation
+
+01-Mar-2006 Stefan Braunewell
+#	Fixed ticket #68 - Safari problem with displaying all parents.
+#	Fixed ticket #136 - mailing forgotten password in admin login screen leads 
+	to fatal error.
+!	Renamed tag [PROCESSTIME] to [PROCESS_TIME]
+------------------------------------- 2.6.2 -------------------------------------
+03-Feb-2006 Stefan Braunewell (very big special thanks to John and Alex)
+#	Fixed ticket #104 - commas in form field descriptions not allowed.
+#	Cookie REMEMBER_KEY wasn't cleared in account/logout 
+	and expiration date is now set to time in the past.
+#	Smart login not working.
+!	Changed mail calls to new function $wb->mail.
+#	Form: ticket 124 added captcha settings check 
+#	Ticket 118 added formfield type to check for email/text 
+#	Ticket 115 changed comparision /modules/form/view.php 
+#	Added correct timecheck in form submissions
+!	Changed captcha.php call to include timestamp
+!	Changed the e-mail validation code and added a mail function to class wb.
+!	Forgotten password: if sending of e-mail fails, restore old password.
+	Ticket #110
+!	Added more charset options. Ticket #102 - thanks to ruebenwurzel!
+!	Character encoding setting also affects admin backend.
+	Mentioned in ticket #102.
+!	Reintroduced page languages setting. If switched to off, page
+	languages are only used to determine the language file for the
+	universal texts. If on, displayed page and menu are affected by
+	the language session variable.
+#	Fixed bugs in show_breadcrumbs code and added parameter "depth"
+	to set the number of levels to be show.
+#	Fixed a bug where access settings of registered and private pages
+	were displayed incorrectly.
+#	Fixed captcha being cached.
+#	Added an exit call after every heading("Location:...")
+	redirector to prevent unwanted execution of code.
+#	Bug #122. Replaced empty field check by check that setting name is
+	not "wb_version".
+#	Replaced all remaining occurrences of '/media' by MEDIA_DIRECTORY - bug #108.
+#	Fixed bug #99 and two additional instances of typo 
+	catpcha instead of captcha.
+#	Fixed some typos
+#	Fixed some notices and warnings.
+#	Fixed bug #105 - back buttons in addon detail pages not editable.
+!	Replace 'admin' by 'wb' in all account pages. 
+!/#	Moved print_success and print_error code to class.wb.php.
+	Added correct parameters to these functions in account pages. 
+------------------------------------- 2.6.1 -------------------------------------
+12-Dec-2005 Ryan Djurovich
+#	Fixed security vulnerability in class.login.php
+#	Fixed typo in EN language file
+#	Fixed captcha problems (when feature is disabled) in form module and sign-up
+!	Added charset encoding to admin templates
+!	Added extra code to check for selection of addon upon uninstalling
+#	Fixed bugs in RSS news feeder
+#	Fixed bug with PAGE_DESCRIPTION not being set on any page
+------------------------------------- 2.6.0 -------------------------------------
+28-Nov-2005 Ryan Djurovich
++	Added default charset option to (advanced) settings
+#	Form module email fields now have email address validation
+#	Fixed spacing in form submissions
+27-Nov-2005 Ryan Djurovich
++	Added captcha verification to sign-up form
++	Added Captcha to News module
+24-Nov-2005 Stefan Braunewell
+!	Applied aportale's patch to use label instead of javascript toggle code
+20-Nov-2005 Ryan Djurovich
+!	News mod now hides read more link if no need for it (see ticket #56)
++	Added support for mailto: links in the menu link mod
+#	Added direct-access redirection on some files (see ticket #37)
++	Added extra characters to convert.php (see ticket #64)
+#	Fixed ticket #65 (last_reset check in account/forgot_form.php)
+29-Sep-2005 Ryan Djurovich
+!	Cleaned up form buttons in Settings
+!	Moved some options into Advanced Settings
+#	Semi-disabled "separate" page trash option
++	Created a backup module/tool for backing-up the database
+	(thanks to John (pcwacht) for the original code)
++	Created new "blank template", which can be used in case where you don't
+	want anything wrapping page-content.
+19-Sep-2005 Ryan Djurovich
++	Added _license field for all add-ons to specify a license
+!	Renamed _designed_for variables (for all addons) to _platform
++	Created addons table for faster internal referencing of installed addons
+!	Fixed some links, including the "Help" button in Admin
+#	Used nl2br to display body correctly when viewing form-submissions
+15-Sep-2005 Stefan Braunewell
++	Added table module with columns 'name','type' and 'directory' as an
+	index.
++	Added entry to settings table 'wb_version' which holds the version
+	number and can be utilized in future upgrade scripts.
+!	Added upgrade functionality also for templates and languages.
+#/!	Template/modules installation now respects paths.
+!	Moved updates from config.php to database.
+	Created initialize.php (required by config.php) to read settings.
+11-Sep-2005 Stefan Braunewell
+!	HTMLArea is now a module instead of a core component. Files moved
+	from "include" to "modules".
++	Implemented Installation of modules on top of an older version. This is 
+	done via checking $module_version. Instead of install.php, upgrade.php
+	is then called if it exists in the module package. 
+	For module developers: $module_version and $new_module_version are 
+	accessible in upgrade.php to find out what upgrade steps need to be taken.
+!	Changed column names in mod_news_posts from short,long to content_short,
+	content_long.
+09-Sep-2005 Stefan Braunewell
++	Added new advanced setting "Rename Files On Upload". File extensions can be
+	given so that respective files will have a ".txt" appended on media upload.
+#	Fixed "None found" message bug when user has no top level page edit
+	rights.
+#	Fixed missing parent option 'none' - ticket #12 - and a minor scope bug.
++	Added breadcrumbs code. Call using $wb->breadcrumbs().
++	Added utf-8 character encoding meta tag into all stock templates.
+#	Fixed bug when changing a page's parent
+!	Changed the way blocks are treated. Added new frontend class attribute
+	default_block_content that controls what is shown on pages such as
+	search, login, etc. (Ticket #16)
++	Added support for WYSIWYG editor modules (wysiwygmod)
++	When trying to access a registered page, user is automatically redirected
+	there on successful login.
+#	Fixed various issues with system search (mainly related to stripslashes()
+#	Removed stripslashes() in many places in the code. Added check for
+	magic_quotes_gpc to new wb class method add_slashes(). Now database contest
+	is independent of magic_quotes setting..
+05-Sep-2005 Stefan Braunewell
+#	Fixed bug concerning direct access of preferences page.
+#	Reworked page visibility and menu item visibility code (frontend login
+	problem).
+#	Pages in link list in htmlarea popup are now correctly ordered.
+#	Fixed bug where group with existing name can be added.
+04-Sep-2005 Ryan Djurovich
++	Added and RSS newsfeed script to the News module
+04-Sep-2005 Stefan Braunewell
+!	Rewrote menu function. Parameters are now given as attributes to frontend class.
+#	Fixed some occurrences of potential direct access path disclosure
+#	Added directory check to browse.php to prevent xss exploit by trusted users.
+!	Updated code to reflect move to Subversion repository system.
+27-Aug-2005 Stefan Braunewell
+#	Fixed bugs 4,5,6,8,9 in bug tracker
+!	Removed 'USER_LANGUAGE' and 'GET_LANGUAGE' constants.
+	A GET['lang'] now sets the session language variable.
+26-Aug-2005 Stefan Braunewell
+!	Moved redundant code into the new class functions. Created 
+	'compatibility.php' for backward compatibility with
+	modules and templates. Variables and functions can still be accessed
+	in the old way.
+!/+	Reorganized core frontend files, added new base class 'wb' from
+	which 'admin' and the new 'frontend' class inherit. Moved all frontend
+	function into new class. Completely rewrote core index.php.
+	Now all variables and functions that are available to templates and
+	modules are attributes and methods of the frontend and the wb classes
+------------------------------------- 2.5.2 -------------------------------------
+23-Jun-2005 Ryan Djurovich
+!	create_access_file now creates all parent directories if needed
+#	Fixed bug when moving page with subpages to another level
+#	Fixed bug when saving "Settings" (in Admin) on Windows/IIS
+#	Fixed bug where query was not setting error correctly in class.database.php
+22-Jun-2005 Ryan Djurovich
+#	Fixed bug where template permissions were not saved when a adding group
+21-Jun-2005 Ryan Djurovich
+#	Added htmlspecialchars for modifying WYSIWYG, news, etc. modules (Bug #78)
+#	Fixed language problems in some area's of Admin. (Bug #70)
+#	Added a space in website/page keywords (Bug #69)
+#	Fixed bugs on settings2.php (Bug #52)
+!	Links inserted with HTMLArea now use [wblink--PAGE_ID--] instead of raw URL
+13-Jun-2005 Ryan Djurovich
+#	Fixed bug (#88) with news module
+!	Title of Administration login page now taken from language file (Bug #72)
+#	Fixed redirection admin/home to admin/start on admin/index.php
+#	Fixed bug with forgotten password page in admin (Bug #81)
+25-Apr-2005 Ryan Djurovich
+#	Fixed numerous bugs with module uninstallation
+#	Fixed bug when uploading files in Administration -> Media
+!	Installer no-longer requires you to accept the GNU GPL
+------------------------------------- 2.5.1 -------------------------------------
+16-Apr-2005 Ryan Djurovich
+#	Fixed two bugs with account login/logout
+------------------------------------- 2.5.1 -------------------------------------
+15-Apr-2005 Ryan Djurovich
+#	Fixed bug where non-english characters can get used in page filenames. Many
+	measuers have been added (including a new file: wb/framework/convert.php),
+	to prevent any possible errors that can occur in page filenames.
+#	Fixed invalid meta tags in stock templates (meta tags were not closed)
+#	Removed lines 401, 402, and 425 of wb/index.php - not needed
+#	Fixed bug where search and account pages are shown in every block
+	that is in a template
+#	Fixed numerous bugs with media home directories feature
+10-Apr-2005 Ryan Djurovich
+#	Fixed bugs in account/login.php and logout.php where users
+	gets redirected to /pages
+------------------------------------- 2.5.0 -------------------------------------
+08-Apr-2005 Ryan Djurovich
+-	Removed section language feature
++	Added page language feature (replaces need for sections language feature)
+#	Fixed bug where pages using menu_link module can have the URL changed
+-	Page directory no longer stored in link field in pages table, it is now added
+	when the page_link function is called - this makes changing the pages
+	directory much easier and quicker
+!	Pages with visibility of "none" are now no longer directly accessable
++	Added new visibility setting "hidden", acts exactly like none did previously
+!	Template info file can now specify number of menu's available and relative names
+!	Template info file can now specify number of blocks's available and relative names
+------------------------------------- 2.4.3 -------------------------------------
+07-Apr-2005 Ryan Djurovich
+#	page_filename function has been rewritten using str_replace
+	function, which should be faster and will allow characters
+	from other languages into filenames
+!	Created new media_filename function, which is now used
+	by all media functions (create,upload,rename) to determine
+	which characters should be removed from a desired filename
++	New button in Administration page list to view specific page
+#	Updated the page_link function to now be compatible with menu link
+	module when setting pages directory to root
+#	Fixed bugs in search when using "Any Words" option
+#	Fixed bug with news module when pages directory set to root
+!	Changed URL of documentation website on Administration Start page
+------------------------------------- 2.4.2 -------------------------------------
+05-Apr-2005 Ryan Djurovich
+#	Fixed bug where file could be renamed to nothing in Media
+!	Optimised Media create folder, upload file, and rename functions
+#	Fixed bug where stripslashes not run on news post titles in admin
+05-Apr-2005 Stefan Braunewell
+#	Fixed bug concerning usage of the private_sql variable
+#	Fixed bug conerning sub-pages being displayed in menus incorrectly
+------------------------------------- 2.4.1 -------------------------------------
+04-Apr-2005 Ryan Djurovich
+!	Pages with visibility of "none" are again directly accessable
+#	Fixed bugs regarding renaming files and directories in Media section
+!	When home folders disabled, all folders now visible in Media section
+------------------------------------- 2.4.0 -------------------------------------
+03-Apr-2005 Ryan Djurovich
+-	Removed recently added visibility setting of "heading", and relative config vars
++	Added new "menu" field to pages table, and new setting "multiple menus"
+	which replaces the need for the menu headings feature
++	Added links to top of groups and users sections, linking to each other
+!	Change menu width in "Round" template to 170px (was 150px)
+#	Change page "are you sure" deletion message to mention that it will delete
+	all sub-pages as well
+#	Fixed many bugs with news module when viewing posts by group
+!	Pages with visibility of "none" are now no longer directly accessable
+02-Apr-2005 Ryan Djurovich
+-	Removed need to specify DB_URL when calling database class
+#	Stopped fields without a type specified from being shown in form mod
+#	Changed '/media' to MEDIA_DIRECTORY on HTMLArea popup windows
+	for insert link and insert image
++	Added setting which allows you to specify the default WYSIWYG style
++	Added "Server Email" option, to specify what is used in "From" field when
+	sending emails using the PHP mail function. Default is admins email address.
+#	Search now excludes pages which have a visibility of none or heading
+!	Pages are now given modified_when and modified_by when added
+01-Apr-2005 Ryan Djurovich
++	Added option to News module to specify how many posts should be listed
+	per page (by default it is set to unlimited, which functions like previous version)
+#	Added stripslashes when display page titles in search
++	Page descriptions and last updated date now shown in search by default
+30-Mar-2005 Ryan Djurovich
++	Added new feature for Media home folders, where a folder can be specified
+	for a specific user or group of users only
+!	Changed URL of Help button to http://www.websitebaker.org/docs/
++	Added new feature for "Page Trash" - two modes available: inline and separate
+!	When pages are deleted, all sub-pages are now deleted (instead of being moved
+	up a level)
+29-Mar-2005 Ryan Djurovich
+-	Removed Database Settings from Administration Settings (options will not be
+	available in 3.x, so trying to match interface with WB 3.x plans
+!	Changed the name of Path Settings to Filesystem Settings in Administration
+	Settings, and removed ability to change path/url options - matching interface
+	plans for WB 3.x
++	Added same options for OS and file permissions as installer to Settings
+!	Sessions now named with APP_NAME.'_session_id' (e.g. default is wb_session_id)
+28-Mar-2005 Ryan Djurovich
++	New functions available to templates to simplify creation of them. This aims
+	to "future-proof" templates for WB 3.x plans.
+!	Default templates updated to support some of the new functions
++	Added field to pages table "page_trail" which stores a list of the pages
+	parents. This field was needed by the new page_menu function
++	Added option for page visibility "heading" to enabled support for multiple
+	menu's. Also, this helps to "future-proof" templates for WB 3.x plans
++	Added option for page visibility "registered", which acts a little like
+	private, but is still shown in the menu (although users need to log in to view
+	the pages content)
++	Form module submissions now saved to database, and feature now added to
+	limit number of submissions per hour to prevent spamming
++	New field for Form module: email. Allows you to specify their email in
+	"from" field on module settings.
+#	Fixed bug when displaying comments in News module (WB Bug #14)
++	New "under contruction" message if no pages exist
+!	Cleaned-up wb/index.php
+27-Mar-2005 Ryan Djurovich
++	Created advanced mkdir and chmod functions
+#	Fixed bug in media where wrong file/folder is deleted
++	Complete overhall of installer - now only one step! It has been greatly
+	simplified in many ways, has much better validation, reports error much more
+	nicely, and automatically logs the user into the Administrations
++	Must now specify OS type - allows for customizable file permission settings
++	Sections can now have a language code assigned to them
++	Sections can now have a block name/id assigned to them
+!	Home section of Administration renamed to Start, to save confusion with saying
+	Homepage (because this term could either mean the main website or Home section
+	in	Administration). Also, this aims to unify the interface with WB 3.x plans
+!	Moved Users and Groups sections under Access section. This aims to unify the
+	interface with WB 3.x plans, which help to unclutter the menu
+!	Interface for Settings section has been imporved for usability purposes
+#	Fixed HTMLArea where no scrollbar for "insert link" and "insert image" dialogs
+	by placing media list inside an iframe
+#	Fixed stripslashes problem for viewing news comments
+!	Added code from Formesque module (an advanced version of the original Form
+	module, modified by Rudolph Lartey from www.carbonect.com), and made further
+	interface improvements for select box/checkbox group/radio group options.
+#	Possibly fixed bugs where an S appears before file and dir modes
+#	Fixed bug where users can be added with same emails (in Administration)
+-	Removed support for PEAR, as it was deemed an unnecessary addition which only
+	makes code more bulky, and removing it will decrease package size a lot
++	New "homepage redirect" option so first page is included and not redirected to
+#	Fixed text not being shown when module uninstalled
+!	Imporved interface for basic group permissions
+26-Mar-2005 Stefan Braunewell
+#	Fixed bug with front-end logins
+#	Fixed bug when saving intro page 
++	Added check on sign-up if e-mail exists (thanks to P. Melief)
+#	Fixed bugs concerning moving/deleting pages
+#	Fixed list of parents in page settings
+#	Fixed mkdir without mode parameter
+#	Added a check on install to ensure PHP 4.1.x compatibility (thanks to Wanderer)
++	Added support for PAGES_DIRECTORY set to root
++	Search form now supports quotes (thanks to Manafta)
+#	Fixed page section ordering
+#	News items are displayed with name of poster instead of "Unknown"
+#	Deletion confirmation popup window in media section now shows correct file name
+------------------------------------- 2.3.1 -------------------------------------
+03-Fed-2005 Ryan Djurovich
++	Now there is two types of "filesystem modes", one for directories and one
+	for files. Having different settings is very common for most servers, so
+	this addition should fix many problems people had with 2.3.0.
+-	Removed filesystem mode options from installation
+!	Removed duplicate text on installation step 3 for timezone
+!	All "access files" for the news module now stored in pages/posts instead
+	of a sub-dir relative to the page (this fixes many bugs)
+#	Fixed major bugs when deleting pages with sub-pages
+!	Removed the restrictions that prevent a user for changing a pages level
+#	Fixed bug with "toggle" plus/minus in IE for pages list
+#	Fixed some bugs where /pages was not replaced with PAGES_DIRECTORY constant
+------------------------------------- 2.3.0 -------------------------------------
+26-Jan-2005 Ryan Djurovich
+#	Fixed bug in framework/functions.php that made root parent always equal 8
+#	Added missing braces in lines 182 and 208 of admin/pages/settings2.php
+#	Fixed SQL-query on line 172, placing a / after $old_link
+#	Added eregi checks for PAGES_DIRECTORY on lines 140 and 150 of
+	admin/pages/settings2.php
+#	Added ordering cleaning to delete_post.php on line 53 for news module
+!	GMT option is selected for "Default Timezone" in the installer, instead
+	of the old "Please select" message (which had the same value as GMT)
+28-Jan-2005 Ryan Djurovich
+!	Ability to specify the chmod number when WB uploads files, etc.
+!	Modified file headers (copyright/license notice) so they now look almost the
+	same, independant of font. Also, it now covers copyright for 2005.
+30-Jan-2005 Ryan Djurovich
+#	Added code on wb/admin/pages/delete.php to remove sections from the sections
+	table when a page is deleted.
++	New 'Smart Login' prevents users from using external password managers,
+	and can be set to remember the users password using cookies.
+!	SourceForge CVS module now called websitebaker2 (instead of just
+	websitebaker). Also, all file versions have been reset.
+01-Fed-2005 Ryan Djurovich
+!	Added code to prevent from changing a pages level (it simply disables
+	the select box), to prevent many possible bugs.
+------------------------------------- 2.2.4 -------------------------------------
+23-Dec-2004 Ryan Djurovich
+!	Change 'EXACT_PHRASE' to 'EXACT_MATCH' on line 261 of wb/languages/EN.php
+#	Fixed multi-language support in search
++	Added more detailed options to list of PHP error reporting level's
+-	Removed ability to change language and PHP error reporting level
+	on installation to make things easier for newbie's
++	Ability to select custom spacer for page filename's
+!	Changed the way a language code is found on language installation
++	Added template permissions to groups
+#	Fixed bug when trying to change email from Preferences (admin and frontend)
+#	Fixed bug with auto-selection of "System Default" for Preferences
+!	News module now use's WYSIWYG for modifying news posts
++	Ability to specify both the pages and media target directories
+------------------------------------ 2.2.3-c ------------------------------------
+22-Dec-2004 Ryan Djurovich
+#	Fixed problem with DB password being reset if Settings saved in basic mode
+------------------------------------ 2.2.3-b ------------------------------------
+21-Dec-2004 Ryan Djurovich
+#	Fixed minor bug on admin templates section
+#	Fixed bug on rename.php and rename2.php in admin media section
+------------------------------------- 2.2.3 -------------------------------------
+20-Dec-2004 Ryan Djurovich
++	Added WB release version in Administration (top right corner)
+!	New option to prevent users from adding level 0 pages
+#	Fixed bug when deleting post's in News module
++	Added new field in pages table for "root" parent (level 0 parent), for
+	extra flexability in creating templates
+!	Round template now supports unlimited page levels
+------------------------------------- 2.2.2 -------------------------------------
+18-Dec-2004 Ryan Djurovich
++	New option under Search Settings for selecting custom template for search
++	New option when changing page settings to set the target
+#	Fixed error when saving a user after editing
+!	Users can now modify sub-page if they dont have permissions on the parent
+------------------------------------- 2.2.1 -------------------------------------
+15-Dec-2004 Ryan Djurovich
+#	Fixed bug when changing password on preferences form (front-end)
+#	Fixed bug when retrieving user details (administration)
+#	Added check to see if module, template, or language is in use when deleting
+#	Fixed up email that is sent to user from a submitted form
+#	Fixed major problem with module permissions which stopped it from working
+------------------------------------- 2.2.0 -------------------------------------
+14-Dec-2004 (Correct date[s] unkown) Ryan Djurovich
++	Multiple-level page support
++	Multiple section's for pages (including interface)
+!	Removed text created using two words on all areas
+	(e.g. {Intro} {PAGE} is now {INTRO_PAGE})
+	this is for better language support
++	Added Languages section
+!	Moved Templates and Modules under Add-ons section
+!	Changed name of "Default" template to "Round"
++	Added "All CSS" template
++	Added "Jump"
++	Added 
+!	Modified "Box" template to support multiple page levels
++	Added "Menu Link" module
++	Added "News" module
++	Added "Code" module
++	Added "Form" module
++	Added "Wrapper" module
+!	Changed name of "Normal Page" module to "WYSIWYG"
++	Created new admin wrapper script to ease module develpment
++	Media now automatically creates index.php file for every
+	sub-folder made (for security purposes)
+!	Change "Help" link in Administration menu so it now directs
+	to the the new Website Baker documentation website found at:
+	http://www.websitebaker.org/documentation
+!	Password is now required to change email in preferences
++	User can now select custom Language and Date & Time Formats
++	Added search functionality, with three different "methods":
+	1. Using all words  2. Using any words  3. Exact match
++	Added native MySQL database support

Property changes on: tags/2.8.3/CHANGELOG
___________________________________________________________________
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/version.php
===================================================================
--- tags/2.8.3/wb/admin/interface/version.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/version.php	(revision 1610)
@@ -0,0 +1,55 @@
+<?php
+/*
+ * 						About WebsiteBaker
+ *
+ * Website Baker is a PHP-based Content Management System (CMS)
+ * designed with one goal in mind: to enable its users to produce websites
+ * with ease.
+ *
+ * 						LICENSE INFORMATION
+ *
+ * WebsiteBaker is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * WebsiteBaker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * 				WebsiteBaker Extra Information
+ *
+ * This file is where the WB release version is stored.
+ *
+ */
+/**
+ *
+ * @category     	admin
+ * @package      	interface
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @revision     	$Revision$
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * 
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+// check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
+if(!defined('VERSION')) define('VERSION', '2.8.2');
+if(!defined('REVISION')) define('REVISION', '1609');
+if(!defined('SP')) define('SP', 'SP2');

Property changes on: tags/2.8.3/wb/admin/interface/version.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/date_formats.php
===================================================================
--- tags/2.8.3/wb/admin/interface/date_formats.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/date_formats.php	(revision 1610)
@@ -0,0 +1,66 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ * Date format list file
+ * This file is used to generate a list of date formats for the user to select
+ *
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../../../index.php');
+	exit(0);
+}
+
+// Define that this file is loaded
+if(!defined('DATE_FORMATS_LOADED')) {
+	define('DATE_FORMATS_LOADED', true);
+}
+
+// Create array
+$DATE_FORMATS = array();
+
+// Get the current time (in the users timezone if required)
+$actual_time = time()+ ((isset($user_time) && $user_time == true) ? TIMEZONE : DEFAULT_TIMEZONE);
+
+// Add values to list
+$DATE_FORMATS['l,|jS|F,|Y'] = gmdate('l, jS F, Y', $actual_time);
+$DATE_FORMATS['jS|F,|Y'] = gmdate('jS F, Y', $actual_time);
+$DATE_FORMATS['d|M|Y'] = gmdate('d M Y', $actual_time);
+$DATE_FORMATS['M|d|Y'] = gmdate('M d Y', $actual_time);
+$DATE_FORMATS['D|M|d,|Y'] = gmdate('D M d, Y', $actual_time);
+$DATE_FORMATS['d-m-Y'] = gmdate('d-m-Y', $actual_time).' (D-M-Y)';
+$DATE_FORMATS['m-d-Y'] = gmdate('m-d-Y', $actual_time).' (M-D-Y)';
+$DATE_FORMATS['d.m.Y'] = gmdate('d.m.Y', $actual_time).' (D.M.Y)';
+$DATE_FORMATS['m.d.Y'] = gmdate('m.d.Y', $actual_time).' (M.D.Y)';
+$DATE_FORMATS['d/m/Y'] = gmdate('d/m/Y', $actual_time).' (D/M/Y)';
+$DATE_FORMATS['m/d/Y'] = gmdate('m/d/Y', $actual_time).' (M/D/Y)';
+$DATE_FORMATS['j.n.Y'] = gmdate('j.n.Y', $actual_time).' (j.n.Y)';
+
+// Add "System Default" to list (if we need to)
+if(isset($user_time) && $user_time == true)
+{
+	if(isset($TEXT['SYSTEM_DEFAULT']))
+	{
+		$DATE_FORMATS['system_default'] = gmdate(DEFAULT_DATE_FORMAT, $actual_time).' ('.$TEXT['SYSTEM_DEFAULT'].')';
+	} else {
+		$DATE_FORMATS['system_default'] = gmdate(DEFAULT_DATE_FORMAT, $actual_time).' (System Default)';
+	}
+}
+
+// Reverse array so "System Default" is at the top
+$DATE_FORMATS = array_reverse($DATE_FORMATS, true);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/date_formats.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/time_formats.php
===================================================================
--- tags/2.8.3/wb/admin/interface/time_formats.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/time_formats.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ * Time format list file
+ * This file is used to generate a list of time formats for the user to select
+ *
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../../../index.php');
+	exit(0);
+}
+
+// Define that this file is loaded
+if(!defined('TIME_FORMATS_LOADED')) {
+	define('TIME_FORMATS_LOADED', true);
+}
+
+// Create array
+$TIME_FORMATS = array();
+
+// Get the current time (in the users timezone if required)
+$actual_time = time()+ ((isset($user_time) AND $user_time == true) ? TIMEZONE : DEFAULT_TIMEZONE);
+
+// Add values to list
+$TIME_FORMATS['g:i|A'] = gmdate('g:i A', $actual_time);
+$TIME_FORMATS['g:i|a'] = gmdate('g:i a', $actual_time);
+$TIME_FORMATS['H:i:s'] = gmdate('H:i:s', $actual_time);
+$TIME_FORMATS['H:i'] = gmdate('H:i', $actual_time);
+
+// Add "System Default" to list (if we need to)
+if(isset($user_time) AND $user_time == true) {
+	if(isset($TEXT['SYSTEM_DEFAULT'])) {
+		$TIME_FORMATS['system_default'] = gmdate(DEFAULT_TIME_FORMAT, $actual_time).' ('.$TEXT['SYSTEM_DEFAULT'].')';
+	} else {
+		$TIME_FORMATS['system_default'] = gmdate(DEFAULT_TIME_FORMAT, $actual_time).' (System Default)';
+	}
+}
+
+// Reverse array so "System Default" is at the top
+$TIME_FORMATS = array_reverse($TIME_FORMATS, true);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/time_formats.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/charsets.php
===================================================================
--- tags/2.8.3/wb/admin/interface/charsets.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/charsets.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ * Charset list file
+ * This file is used to generate a list of charsets for the user to select
+ *
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+// Create array
+$CHARSETS = array();
+$CHARSETS['utf-8'] = 'Unicode (utf-8)';
+$CHARSETS['iso-8859-1'] = 'Latin-1 Western European (iso-8859-1)';
+$CHARSETS['iso-8859-2'] = 'Latin-2 Central European (iso-8859-2)';
+$CHARSETS['iso-8859-3'] = 'Latin-3 Southern European (iso-8859-3)';
+$CHARSETS['iso-8859-4'] = 'Latin-4 Baltic (iso-8859-4)';
+$CHARSETS['iso-8859-5'] = 'Cyrillic (iso-8859-5)';
+$CHARSETS['iso-8859-6'] = 'Arabic (iso-8859-6)';
+$CHARSETS['iso-8859-7'] = 'Greek (iso-8859-7)';
+$CHARSETS['iso-8859-8'] = 'Hebrew (iso-8859-8)';
+$CHARSETS['iso-8859-9'] = 'Latin-5 Turkish (iso-8859-9)';
+$CHARSETS['iso-8859-10'] = 'Latin-6 Nordic (iso-8859-10)';
+$CHARSETS['iso-8859-11'] = 'Thai (iso-8859-11)';
+$CHARSETS['gb2312'] = 'Chinese Simplified (gb2312)';
+$CHARSETS['big5'] = 'Chinese Traditional (big5)';
+$CHARSETS['iso-2022-jp'] = 'Japanese (iso-2022-jp)';
+$CHARSETS['iso-2022-kr'] = 'Korean (iso-2022-kr)';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/charsets.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/timezones.php
===================================================================
--- tags/2.8.3/wb/admin/interface/timezones.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/timezones.php	(revision 1610)
@@ -0,0 +1,78 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ * Timezone list file
+ * This file is used to generate a list of timezones for the user to select
+ *
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+// Create array
+$TIMEZONES = array();
+$actual_timezone = ( DEFAULT_TIMEZONE <> 0 ) ? DEFAULT_TIMEZONE/3600 : 0;
+
+$TIMEZONES['-12'] = 'GMT - 12 Hours';
+$TIMEZONES['-11'] = 'GMT -11 Hours';
+$TIMEZONES['-10'] = 'GMT -10 Hours';
+$TIMEZONES['-9'] = 'GMT -9 Hours';
+$TIMEZONES['-8'] = 'GMT -8 Hours';
+$TIMEZONES['-7'] = 'GMT -7 Hours';
+$TIMEZONES['-6'] = 'GMT -6 Hours';
+$TIMEZONES['-5'] = 'GMT -5 Hours';
+$TIMEZONES['-4'] = 'GMT -4 Hours';
+$TIMEZONES['-3.5'] = 'GMT -3.5 Hours';
+$TIMEZONES['-3'] = 'GMT -3 Hours';
+$TIMEZONES['-2'] = 'GMT -2 Hours';
+$TIMEZONES['-1'] = 'GMT -1 Hour';
+$TIMEZONES['0'] = 'GMT';
+$TIMEZONES['1'] = 'GMT +1 Hour';
+$TIMEZONES['2'] = 'GMT +2 Hours';
+$TIMEZONES['3'] = 'GMT +3 Hours';
+$TIMEZONES['3.5'] = 'GMT +3.5 Hours';
+$TIMEZONES['4'] = 'GMT +4 Hours';
+$TIMEZONES['4.5'] = 'GMT +4.5 Hours';
+$TIMEZONES['5'] = 'GMT +5 Hours';
+$TIMEZONES['5.5'] = 'GMT +5.5 Hours';
+$TIMEZONES['6'] = 'GMT +6 Hours';
+$TIMEZONES['6.5'] = 'GMT +6.5 Hours';
+$TIMEZONES['7'] = 'GMT +7 Hours';
+$TIMEZONES['8'] = 'GMT +8 Hours';
+$TIMEZONES['9'] = 'GMT +9 Hours';
+$TIMEZONES['9.5'] = 'GMT +9.5 Hours';
+$TIMEZONES['10'] = 'GMT +10 Hours';
+$TIMEZONES['11'] = 'GMT +11 Hours';
+$TIMEZONES['12'] = 'GMT +12 Hours';
+$TIMEZONES['13'] = 'GMT +13 Hours';
+
+// Add "System Default" to list (if we need to)
+if(isset($user_time) && $user_time == true)
+{
+	if(isset($TEXT['SYSTEM_DEFAULT']))
+	{
+		$TIMEZONES['system_default'] = $TIMEZONES[$actual_timezone].' ('.$TEXT['SYSTEM_DEFAULT'].')';
+	} else {
+		$TIMEZONES['system_default'] = $TIMEZONES[$actual_timezone].' (System Default)';
+	}
+}
+
+// Reverse array so "System Default" is at the top
+$TIMEZONES = array_reverse($TIMEZONES, true);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/timezones.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/er_levels.php
===================================================================
--- tags/2.8.3/wb/admin/interface/er_levels.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/er_levels.php	(revision 1610)
@@ -0,0 +1,47 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ * Error Reporting Level's list file
+ * This file is used to generate a list of PHP
+ * Error Reporting Level's for the user to select
+ *
+ */
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+// Define that this file is loaded
+if(!defined('ERROR_REPORTING_LEVELS_LOADED')) {
+	define('ERROR_REPORTING_LEVELS_LOADED', true);
+}
+
+// Create array
+$ER_LEVELS = array();
+
+// Add values to list
+if(isset($TEXT['SYSTEM_DEFAULT'])) {
+	$ER_LEVELS[''] = $TEXT['SYSTEM_DEFAULT'];
+} else {
+	$ER_LEVELS[''] = 'System Default';
+}
+$ER_LEVELS['6135'] = 'E_ALL^E_NOTICE'; // standard: E_ALL without E_NOTICE
+$ER_LEVELS['0'] = 'E_NONE';
+$ER_LEVELS['6143'] = 'E_ALL';
+$ER_LEVELS['8191'] = htmlentities('E_ALL&E_STRICT'); // for programmers
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/er_levels.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/interface/index.php
===================================================================
--- tags/2.8.3/wb/admin/interface/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/interface/index.php	(revision 1610)
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         interface
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+header('Location: '.ADMIN_URL.'/start/index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/interface/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/modules/manual_install.php
===================================================================
--- tags/2.8.3/wb/admin/modules/manual_install.php	(nonexistent)
+++ tags/2.8.3/wb/admin/modules/manual_install.php	(revision 1610)
@@ -0,0 +1,101 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         modules
+ * @author          Ryan Djurovich, Christian Sommer, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/**
+ * check if there is anything to do
+ */
+
+/**
+ * check if user has permissions to access this file
+ */
+// include WB configuration file and WB admin class
+require_once('../../config.php');
+require_once('../../framework/class.admin.php');
+
+// check user permissions for admintools (redirect users with wrong permissions)
+$admin = new admin('Admintools', 'admintools', false, false);
+
+if (!(isset($_POST['action']) && in_array($_POST['action'], array('install', 'upgrade', 'uninstall')))) { die(header('Location: index.php?advanced')); }
+if (!(isset($_POST['file']) && $_POST['file'] != '' && (strpos($_POST['file'], '..') === false))){  die(header('Location: index.php?advanced'));  }
+
+$js_back = ADMIN_URL . '/modules/index.php?advanced';
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back);
+}
+
+if ($admin->get_permission('admintools') == false) { die(header('Location: ../../index.php')); }
+
+// check if the referer URL if available
+$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] :
+	(isset($HTTP_SERVER_VARS['HTTP_REFERER']) ? $HTTP_SERVER_VARS['HTTP_REFERER'] : '');
+$referer = '';
+// if referer is set, check if script was invoked from "admin/modules/index.php"
+$required_url = ADMIN_URL . '/modules/index.php';
+if ($referer != '' && (!(strpos($referer, $required_url) !== false || strpos($referer, $required_url) !== false))) 
+{ die(header('Location: ../../index.php')); }
+
+// include WB functions file
+require_once(WB_PATH . '/framework/functions.php');
+
+// load WB language file
+require_once(WB_PATH . '/languages/' . LANGUAGE .'.php');
+
+// create Admin object with admin header
+$admin = new admin('Addons', '', true, false);
+
+/**
+ * Manually execute the specified module file (install.php, upgrade.php or uninstall.php)
+ */
+// check if specified module folder exists
+$mod_path = WB_PATH . '/modules/' . basename(WB_PATH . '/' . $_POST['file']);
+
+// let the old variablename if module use it
+$module_dir = $mod_path;
+if (!file_exists($mod_path . '/' . $_POST['action'] . '.php'))
+{
+	$admin->print_header();
+    $admin->print_error($TEXT['NOT_FOUND'].': <tt>"'.htmlentities(basename($mod_path)).'/'.$_POST['action'].'.php"</tt> ', $js_back);
+}
+
+// include modules install.php script
+require($mod_path . '/' . $_POST['action'] . '.php');
+
+// load module info into database and output status message
+load_module($mod_path, false);
+$msg = $TEXT['EXECUTE'] . ': <tt>"' . htmlentities(basename($mod_path)) . '/' . $_POST['action'] . '.php"</tt>';
+
+switch ($_POST['action'])
+{
+	case 'install':
+		// $admin->print_header();
+		$admin->print_success($msg, $js_back);
+		break;
+
+	case 'upgrade':
+		upgrade_module(basename($mod_path), false);
+		// $admin->print_header();
+		$admin->print_success($msg, $js_back);
+		break;
+	
+	case 'uninstall':
+		// $admin->print_header();
+		$admin->print_success($msg, $js_back);
+		break;
+}
+

Property changes on: tags/2.8.3/wb/admin/modules/manual_install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/modules/install.php
===================================================================
--- tags/2.8.3/wb/admin/modules/install.php	(nonexistent)
+++ tags/2.8.3/wb/admin/modules/install.php	(revision 1610)
@@ -0,0 +1,200 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         modules
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// do not display notices and warnings during installation
+error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'modules_install', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user uploaded a file
+if(!isset($_FILES['userfile'])) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Set temp vars
+$temp_dir = WB_PATH.'/temp/';
+$temp_file = $temp_dir . $_FILES['userfile']['name'];
+$temp_unzip = WB_PATH.'/temp/unzip/';
+
+if(!$_FILES['userfile']['error']) {
+	// Try to upload the file to the temp dir
+	if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $temp_file))
+	{
+		$admin->print_error($MESSAGE['GENERIC_BAD_PERMISSIONS']);
+	}
+} else {
+// index for language files
+	$key = 'UNKNOW_UPLOAD_ERROR';
+    switch ($error_code) {
+        case UPLOAD_ERR_INI_SIZE:
+            $key = 'UPLOAD_ERR_INI_SIZE';
+        case UPLOAD_ERR_FORM_SIZE:
+            $key = 'UPLOAD_ERR_FORM_SIZE';
+        case UPLOAD_ERR_PARTIAL:
+            $key = 'UPLOAD_ERR_PARTIAL';
+        case UPLOAD_ERR_NO_FILE:
+            $key = 'UPLOAD_ERR_NO_FILE';
+        case UPLOAD_ERR_NO_TMP_DIR:
+            $key = 'UPLOAD_ERR_NO_TMP_DIR';
+        case UPLOAD_ERR_CANT_WRITE:
+            $key = 'UPLOAD_ERR_CANT_WRITE';
+        case UPLOAD_ERR_EXTENSION:
+            $key = 'UPLOAD_ERR_EXTENSION';
+        default:
+            $key = 'UNKNOW_UPLOAD_ERROR';
+    }
+	$admin->print_error($MESSAGE[$key].'<br />'.$MESSAGE['GENERIC_CANNOT_UPLOAD']);
+}
+
+// Include the PclZip class file (thanks to 
+require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
+
+// Remove any vars with name "module_directory"
+unset($module_directory);
+
+// Setup the PclZip object
+$archive = new PclZip($temp_file);
+// Unzip the files to the temp unzip folder
+$list = $archive->extract(PCLZIP_OPT_PATH, $temp_unzip);
+
+// Check if uploaded file is a valid Add-On zip file
+if (!($list && file_exists($temp_unzip . 'index.php')))
+{
+  $admin->print_error($MESSAGE['GENERIC_INVALID_ADDON_FILE']);
+}
+
+// Include the modules info file
+require($temp_unzip.'info.php');
+
+// Perform Add-on requirement checks before proceeding
+require(WB_PATH . '/framework/addon.precheck.inc.php');
+preCheckAddon($temp_file);
+// Delete the temp unzip directory
+rm_full_dir($temp_unzip);
+
+// Check if the file is valid
+if(!isset($module_directory))
+{
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['GENERIC']['INVALID']);
+}
+
+// Check if this module is already installed
+// and compare versions if so
+$new_module_version = $module_version;
+$action="install";
+if(is_dir(WB_PATH.'/modules/'.$module_directory))
+{
+	if(file_exists(WB_PATH.'/modules/'.$module_directory.'/info.php'))
+    {
+		require(WB_PATH.'/modules/'.$module_directory.'/info.php');
+		// Version to be installed is older than currently installed version
+		if (versionCompare($module_version, $new_module_version, '>='))
+        {
+
+			if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+			$admin->print_error($MESSAGE['GENERIC']['ALREADY_INSTALLED']);
+		}
+
+		$action="upgrade";
+
+	}
+}
+
+// Check if module dir is writable
+if(!is_writable(WB_PATH.'/modules/'))
+{
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['GENERIC']['BAD_PERMISSIONS']);
+}
+
+// Set module directory
+$module_dir = WB_PATH.'/modules/'.$module_directory;
+
+// Make sure the module dir exists, and chmod if needed
+make_dir($module_dir);
+
+// Unzip module to the module dir
+if(isset($_POST['overwrite'])){
+	$list = $archive->extract(PCLZIP_OPT_PATH, $module_dir, PCLZIP_OPT_REPLACE_NEWER );
+} else {
+	$list = $archive->extract(PCLZIP_OPT_PATH, $module_dir );
+}
+
+if(!$list)
+{
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNZIP']);
+}
+/*
+
+if ($list == 0) {
+  $admin->print_error("ERROR : ".$archive->errorInfo(true));
+}
+*/
+// Delete the temp zip file
+if(file_exists($temp_file)) { unlink($temp_file); }
+
+// Chmod all the uploaded files
+$dir = dir($module_dir);
+while (false !== $entry = $dir->read())
+{
+	// Skip pointers
+	if(substr($entry, 0, 1) != '.' AND $entry != '.svn' AND !is_dir($module_dir.'/'.$entry))
+    {
+		// Chmod file
+		change_mode($module_dir.'/'.$entry, 'file');
+	}
+}
+/* */
+// Run the modules install // upgrade script if there is one
+if(file_exists($module_dir.'/'.$action.'.php'))
+{
+	require($module_dir.'/'.$action.'.php');
+}
+
+// Print success message
+if ($action=="install")
+{
+	// Load module info into DB
+	load_module(WB_PATH.'/modules/'.$module_directory, false);
+	$admin->print_success($MESSAGE['GENERIC']['INSTALLED']);
+} elseif ($action=="upgrade")
+{
+
+	upgrade_module($module_directory, false);
+	$admin->print_success($MESSAGE['GENERIC']['UPGRADED']);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/modules/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/modules/details.php
===================================================================
--- tags/2.8.3/wb/admin/modules/details.php	(nonexistent)
+++ tags/2.8.3/wb/admin/modules/details.php	(revision 1610)
@@ -0,0 +1,143 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         modules
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include the config file
+require('../../config.php');
+require_once(WB_PATH .'/framework/functions.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// No print admin header
+$admin = new admin('Addons', 'modules_view', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Get module name
+if(!isset($_POST['file']) OR $_POST['file'] == "")
+{
+	header("Location: index.php");
+	exit(0);
+}
+else
+{
+	$file = preg_replace('/[^a-z0-9_-]/i', "", $_POST['file']);  // fix secunia 2010-92-1
+}
+
+// Check if the module exists
+if(!file_exists(WB_PATH.'/modules/'.$file)) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('modules_details.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'modules_details.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'module' AND directory = '$file'");
+if($result->numRows() > 0) {
+	$module = $result->fetchRow();
+}
+
+// check if a module description exists for the displayed backend language
+$tool_description = false;
+if(function_exists('file_get_contents') && file_exists(WB_PATH.'/modules/'.$file.'/languages/'.LANGUAGE .'.php')) {
+	// read contents of the module language file into string
+	$data = @file_get_contents(WB_PATH .'/modules/' .$file .'/languages/' .LANGUAGE .'.php');
+	// use regular expressions to fetch the content of the variable from the string
+	$tool_description = get_variable_content('module_description', $data, false, false);
+	// replace optional placeholder {WB_URL} with value stored in config.php
+	if($tool_description !== false && strlen(trim($tool_description)) != 0) {
+		$tool_description = str_replace('{WB_URL}', WB_URL, $tool_description);
+	} else {
+		$tool_description = false;
+	}
+}		
+if($tool_description !== false) {
+	// Override the module-description with correct desription in users language
+	$module['description'] = $tool_description;
+}
+
+$template->set_var(array(
+								'NAME' => $module['name'],
+								'AUTHOR' => $module['author'],
+								'DESCRIPTION' => $module['description'],
+								'VERSION' => $module['version'],
+								'DESIGNED_FOR' => $module['platform'],
+								'ADMIN_URL' => ADMIN_URL,
+								'WB_URL' => WB_URL,
+								'THEME_URL' => THEME_URL
+								)
+						);
+						
+switch ($module['function']) {
+	case NULL:
+		$type_name = $TEXT['UNKNOWN'];
+		break;
+	case 'page':
+		$type_name = $TEXT['PAGE'];
+		break;
+	case 'wysiwyg':
+		$type_name = $TEXT['WYSIWYG_EDITOR'];
+		break;
+	case 'tool':
+		$type_name = $TEXT['ADMINISTRATION_TOOL'];
+		break;
+	case 'admin':
+		$type_name = $TEXT['ADMIN'];
+		break;
+	case 'administration':
+		$type_name = $TEXT['ADMINISTRATION'];
+		break;
+	case 'snippet':
+		$type_name = $TEXT['CODE_SNIPPET'];
+		break;
+	default:
+		$type_name = $TEXT['UNKNOWN'];
+}
+$template->set_var('TYPE', $type_name);
+
+// Insert language headings
+$template->set_var(array(
+								'HEADING_MODULE_DETAILS' => $HEADING['MODULE_DETAILS']
+								)
+						);
+// Insert language text and messages
+$template->set_var(array(
+								'TEXT_NAME' => $TEXT['NAME'],
+								'TEXT_TYPE' => $TEXT['TYPE'],
+								'TEXT_AUTHOR' => $TEXT['AUTHOR'],
+								'TEXT_VERSION' => $TEXT['VERSION'],
+								'TEXT_DESIGNED_FOR' => $TEXT['DESIGNED_FOR'],
+								'TEXT_DESCRIPTION' => $TEXT['DESCRIPTION'],
+								'TEXT_BACK' => $TEXT['BACK']
+								)
+						);
+
+// Parse module object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/modules/details.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/modules/index.php
===================================================================
--- tags/2.8.3/wb/admin/modules/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/modules/index.php	(revision 1610)
@@ -0,0 +1,137 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         modules
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'modules');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('modules.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'modules.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values into module list
+$template->set_block('main_block', 'module_list_block', 'module_list');
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'module' order by name");
+if($result->numRows() > 0) {
+	while ($addon = $result->fetchRow()) {
+		$template->set_var('VALUE', $addon['directory']);
+		$template->set_var('NAME', $addon['name']);
+		$template->parse('module_list', 'module_list_block', true);
+	}
+}
+
+// Insert modules which includes a install.php file to install list
+$module_files = glob(WB_PATH . '/modules/*');
+$template->set_block('main_block', 'install_list_block', 'install_list');
+$template->set_block('main_block', 'upgrade_list_block', 'upgrade_list');
+$template->set_block('main_block', 'uninstall_list_block', 'uninstall_list');
+$template->set_var(array('INSTALL_VISIBLE' => 'hide', 'UPGRADE_VISIBLE' => 'hide', 'UNINSTALL_VISIBLE' => 'hide'));
+
+$show_block = false;
+foreach ($module_files as $index => $path) {
+	if (is_dir($path)) {
+		if (file_exists($path . '/install.php')) {
+			$show_block = true;
+			$template->set_var('INSTALL_VISIBLE', '');
+			$template->set_var('VALUE', basename($path));
+			$template->set_var('NAME', basename($path));
+			$template->parse('install_list', 'install_list_block', true);
+		}
+
+		if (file_exists($path . '/upgrade.php')) {
+			$show_block = true;
+			$template->set_var('UPGRADE_VISIBLE', '');
+			$template->set_var('VALUE', basename($path));
+			$template->set_var('NAME', basename($path));
+			$template->parse('upgrade_list', 'upgrade_list_block', true);
+		} 
+		
+		if (file_exists($path . '/uninstall.php')) {
+			$show_block = true;
+			$template->set_var('UNINSTALL_VISIBLE', '');
+			$template->set_var('VALUE', basename($path));
+			$template->set_var('NAME', basename($path));
+			$template->parse('uninstall_list', 'uninstall_list_block', true);
+		}
+
+	} else {
+		unset($module_files[$index]);
+	}
+}
+
+// Insert permissions values
+if($admin->get_permission('modules_install') != true) {
+	$template->set_var('DISPLAY_INSTALL', 'hide');
+}
+if($admin->get_permission('modules_uninstall') != true) {
+	$template->set_var('DISPLAY_UNINSTALL', 'hide');
+}
+if($admin->get_permission('modules_view') != true) {
+	$template->set_var('DISPLAY_LIST', 'hide');
+}
+// only show block if there is something to show
+if(!$show_block || count($module_files) == 0 || !isset($_GET['advanced']) || $admin->get_permission('admintools') != true) {
+	$template->set_var('DISPLAY_MANUAL_INSTALL', 'hide');
+}
+
+// Insert language headings
+$template->set_var(array(
+					'HEADING_INSTALL_MODULE' => $HEADING['INSTALL_MODULE'],
+					'HEADING_UNINSTALL_MODULE' => $HEADING['UNINSTALL_MODULE'],
+					'OVERWRITE_NEWER_FILES' => $MESSAGE['ADDON_OVERWRITE_NEWER_FILES'],
+					'HEADING_MODULE_DETAILS' => $HEADING['MODULE_DETAILS'],
+					'HEADING_INVOKE_MODULE_FILES' => $HEADING['INVOKE_MODULE_FILES']
+					)
+				);
+// insert urls
+$template->set_var(array(
+					'ADMIN_URL' => ADMIN_URL,
+					'WB_URL' => WB_URL,
+					'THEME_URL' => THEME_URL,
+					'FTAN' => $admin->getFTAN()
+					)
+				);
+// Insert language text and messages
+$template->set_var(array(
+	'URL_TEMPLATES' => $admin->get_permission('templates') ? 
+		'<a href="' . ADMIN_URL . '/templates/index.php">' . $MENU['TEMPLATES'] . '</a>' : '',
+	'URL_LANGUAGES' => $admin->get_permission('languages') ? 
+		'<a href="' . ADMIN_URL . '/languages/index.php">' . $MENU['LANGUAGES'] . '</a>' : '',
+	'URL_ADVANCED' => $admin->get_permission('admintools') ? 
+		'<a href="' . ADMIN_URL . '/modules/index.php?advanced">' . $TEXT['ADVANCED'] . '</a>' : '',
+	'TEXT_INSTALL' => $TEXT['INSTALL'],
+	'TEXT_UNINSTALL' => $TEXT['UNINSTALL'],
+	'TEXT_VIEW_DETAILS' => $TEXT['VIEW_DETAILS'],
+	'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+	'TEXT_MANUAL_INSTALLATION' => $MESSAGE['ADDON']['MANUAL_INSTALLATION'],
+	'TEXT_MANUAL_INSTALLATION_WARNING' => $MESSAGE['ADDON']['MANUAL_INSTALLATION_WARNING'],
+	'TEXT_EXECUTE' => $TEXT['EXECUTE'],
+	'TEXT_FILE' => $TEXT['FILE']
+	)
+);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/modules/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/modules/uninstall.php
===================================================================
--- tags/2.8.3/wb/admin/modules/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/admin/modules/uninstall.php	(revision 1610)
@@ -0,0 +1,129 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         modules
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'modules_uninstall', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user selected module
+if(!isset($_POST['file']) OR $_POST['file'] == "") {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$file = $admin->add_slashes($_POST['file']);
+}
+
+// Extra protection
+if(trim($file) == '') {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Check if the module exists
+if(!is_dir(WB_PATH.'/modules/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['NOT_INSTALLED']);
+}
+
+if (!function_exists("replace_all")) {
+	function replace_all ($aStr = "", &$aArray ) {
+		foreach($aArray as $k=>$v) $aStr = str_replace("{{".$k."}}", $v, $aStr);
+		return $aStr;
+	}
+}
+
+$info = $database->query("SELECT section_id, page_id FROM ".TABLE_PREFIX."sections WHERE module='".$_POST['file']."'" );
+
+if ( $info->numRows() > 0) {
+	
+	/**
+	*	Modul is in use, so we have to warn the user
+	*/
+	if (!array_key_exists("CANNOT_UNINSTALL_IN_USE_TMPL", $MESSAGE['GENERIC'])) {
+		$add = $info->numRows() == 1 ? "this page" : "these pages";
+		$msg_template_str  = "<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled because it is still in use on {{pages}}";
+		$msg_template_str .= ":<br /><i>click for editing.</i><br /><br />";
+	} else {
+		$msg_template_str = $MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL'];
+		$temp = explode(";",$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL_PAGES']);
+		$add = $info->numRows() == 1 ? $temp[0] : $temp[1];
+	}
+	/**
+	*	The template-string for displaying the Page-Titles ... in this case as a link
+	*/
+	$page_template_str = "- <b><a href='../pages/sections.php?page_id={{id}}'>{{title}}</a></b><br />";
+	
+	$values = array ('type' => 'Modul', 'type_name' => $file, 'pages' => $add );
+	$msg = replace_all ( $msg_template_str,  $values );
+		
+	$page_names = "";
+	
+	while ($data = $info->fetchRow() ) {
+	
+		$temp = $database->query("SELECT page_title from ".TABLE_PREFIX."pages where page_id=".$data['page_id']);
+		$temp_title = $temp->fetchRow();
+		
+		$page_info = array(
+			'id'	=> $data['page_id'], 
+			'title' => $temp_title['page_title']
+		);
+			
+		$page_names .= replace_all ( $page_template_str, $page_info );
+	}
+	
+	/**
+	*	Printing out the error-message and die().
+	*/
+	$admin->print_error(str_replace ($TEXT['FILE'], "Modul", $MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE']).$msg.$page_names);
+}
+
+// Check if we have permissions on the directory
+if(!is_writable(WB_PATH.'/modules/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+}
+
+// Run the modules uninstall script if there is one
+if(file_exists(WB_PATH.'/modules/'.$file.'/uninstall.php')) {
+	require(WB_PATH.'/modules/'.$file.'/uninstall.php');
+}
+
+// Try to delete the module dir
+if(!rm_full_dir(WB_PATH.'/modules/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$file."' AND type = 'module'");
+}
+
+// Print success message
+$admin->print_success($MESSAGE['GENERIC']['UNINSTALLED']);
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/modules/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/addons/reload.php
===================================================================
--- tags/2.8.3/wb/admin/addons/reload.php	(nonexistent)
+++ tags/2.8.3/wb/admin/addons/reload.php	(revision 1610)
@@ -0,0 +1,146 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         addons
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/**
+ * check if there is anything to do
+ */
+$post_check = array('reload_modules', 'reload_templates', 'reload_languages');
+foreach ($post_check as $index => $key) {
+	if (!isset($_POST[$key])) unset($post_check[$index]);
+}
+if (count($post_check) == 0) die(header('Location: index.php?advanced'));
+
+/**
+ * check if user has permissions to access this file
+ */
+// include WB configuration file and WB admin class
+require_once('../../config.php');
+require_once('../../framework/class.admin.php');
+
+// check user permissions for admintools (redirect users with wrong permissions)
+$admin = new admin('Admintools', 'admintools', false, false);
+
+if ($admin->get_permission('admintools') == false) die(header('Location: ../../index.php'));
+
+// check if the referer URL if available
+$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] :
+	(isset($HTTP_SERVER_VARS['HTTP_REFERER']) ? $HTTP_SERVER_VARS['HTTP_REFERER'] : '');
+$referer = '';
+// if referer is set, check if script was invoked from "admin/modules/index.php"
+$required_url = ADMIN_URL . '/addons/index.php';
+if ($referer != '' && (!(strpos($referer, $required_url) !== false || strpos($referer, $required_url) !== false)))
+	die(header('Location: ../../index.php'));
+
+// include WB functions file
+require_once(WB_PATH . '/framework/functions.php');
+
+// load WB language file
+require_once(WB_PATH . '/languages/' . LANGUAGE .'.php');
+
+// create Admin object with admin header
+$admin = new admin('Addons', '', false, false);
+$js_back = ADMIN_URL . '/addons/index.php?advanced';
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back);
+}
+
+/**
+ * Reload all specified Addons
+ */
+$msg = array();
+$table = TABLE_PREFIX . 'addons';
+
+foreach ($post_check as $key) {
+	switch ($key) {
+		case 'reload_modules':
+			if ($handle = opendir(WB_PATH . '/modules')) {
+				// delete modules from database
+				$sql = "DELETE FROM `$table` WHERE `type` = 'module'";
+				$database->query($sql);
+
+				// loop over all modules
+				while(false !== ($file = readdir($handle))) {
+					if ($file != '' && substr($file, 0, 1) != '.' && $file != 'admin.php' && $file != 'index.php') {
+						load_module(WB_PATH . '/modules/' . $file);
+					}
+				}
+				closedir($handle);
+				// add success message
+				$msg[] = $MESSAGE['ADDON']['MODULES_RELOADED'];
+
+			} else {
+				// provide error message and stop
+				$admin->print_error($MESSAGE['ADDON']['ERROR_RELOAD'], $js_back);
+			}
+			break;
+			
+		case 'reload_templates':
+			if ($handle = opendir(WB_PATH . '/templates')) {
+				// delete templates from database
+				$sql = "DELETE FROM `$table` WHERE `type` = 'template'";
+				$database->query($sql);
+
+				// loop over all templates
+				while(false !== ($file = readdir($handle))) {
+					if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'index.php') {
+						load_template(WB_PATH . '/templates/' . $file);
+					}
+				}
+				closedir($handle);
+				// add success message
+				$msg[] = $MESSAGE['ADDON']['TEMPLATES_RELOADED'];
+
+			} else {
+				// provide error message and stop
+				$admin->print_header();
+				$admin->print_error($MESSAGE['ADDON']['ERROR_RELOAD'], $js_back);
+			}
+			break;
+
+		case 'reload_languages':
+			if ($handle = opendir(WB_PATH . '/languages/')) {
+				// delete languages from database
+				$sql = "DELETE FROM `$table` WHERE `type` = 'language'";
+				$database->query($sql);
+			
+				// loop over all languages
+				while(false !== ($file = readdir($handle))) {
+					if ($file != '' && substr($file, 0, 1) != '.' && $file != 'index.php') {
+						load_language(WB_PATH . '/languages/' . $file);
+					}
+				}
+				closedir($handle);
+				// add success message
+				$msg[] = $MESSAGE['ADDON']['LANGUAGES_RELOADED'];
+				
+			} else {
+				// provide error message and stop
+				$admin->print_header();
+				$admin->print_error($MESSAGE['ADDON']['ERROR_RELOAD'], $js_back);
+			}
+			break;
+	}
+}
+
+// output success message
+$admin->print_header();
+$admin->print_success(implode($msg, '<br />'), $js_back);
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/addons/reload.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/addons/index.php
===================================================================
--- tags/2.8.3/wb/admin/addons/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/addons/index.php	(revision 1610)
@@ -0,0 +1,100 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         addons
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'addons');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('addons.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'addons.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values into the template object
+$template->set_var(array(
+		'ADMIN_URL' => ADMIN_URL,
+		'THEME_URL' => THEME_URL,
+		'WB_URL' => WB_URL
+	)
+);
+
+/**
+ *	Setting up the blocks
+ */
+$template->set_block('main_block', "modules_block", "modules");
+$template->set_block('main_block', "templates_block", "templates");
+$template->set_block('main_block', "languages_block", "languages");
+$template->set_block('main_block', "reload_block", "reload");
+
+/**
+ *	Insert permission values into the template object
+ *	Obsolete as we are using blocks ... see "parsing the blocks" section
+ */
+$display_none = "style=\"display: none;\"";
+if($admin->get_permission('modules') != true) 	$template->set_var('DISPLAY_MODULES', $display_none);	
+if($admin->get_permission('templates') != true)	$template->set_var('DISPLAY_TEMPLATES', $display_none);
+if($admin->get_permission('languages') != true)	$template->set_var('DISPLAY_LANGUAGES', $display_none);
+if($admin->get_permission('admintools') != true)	$template->set_var('DISPLAY_ADVANCED', $display_none);
+
+if(!isset($_GET['advanced']) || $admin->get_permission('admintools') != true)
+	$template->set_var('DISPLAY_RELOAD', $display_none);
+
+/**
+ *	Insert section names and descriptions
+ */
+$template->set_var(array(
+	'ADDONS_OVERVIEW' => $MENU['ADDONS'],
+	'MODULES' => $MENU['MODULES'],
+	'TEMPLATES' => $MENU['TEMPLATES'],
+	'LANGUAGES' => $MENU['LANGUAGES'],
+	'MODULES_OVERVIEW' => $OVERVIEW['MODULES'],
+	'TEMPLATES_OVERVIEW' => $OVERVIEW['TEMPLATES'],
+	'LANGUAGES_OVERVIEW' => $OVERVIEW['LANGUAGES'],
+	'TXT_ADMIN_SETTINGS' => $TEXT['ADMIN'] . ' ' . $TEXT['SETTINGS'],
+	'MESSAGE_RELOAD_ADDONS' => $MESSAGE['ADDON']['RELOAD'],
+	'TEXT_RELOAD' => $TEXT['RELOAD'],
+	'RELOAD_URL' => ADMIN_URL . '/addons/reload.php',
+	'URL_ADVANCED' => $admin->get_permission('admintools')
+                ? '<a href="' . ADMIN_URL . '/addons/index.php?advanced">' . $TEXT['ADVANCED'] . '</a>' : '',
+	'ADVANCED_URL' => $admin->get_permission('admintools') ? ADMIN_URL . '/addons/index.php' : '',
+    'TEXT_ADVANCED' => $TEXT['ADVANCED'],
+	'FTAN'			=> $admin->getFTAN()
+	)
+);
+
+/**
+ *	Parsing the blocks ...
+ */
+if ( $admin->get_permission('modules') == true) $template->parse('main_block', "modules_block", true);
+if ( $admin->get_permission('templates') == true) $template->parse('main_block', "templates_block", true);
+if ( $admin->get_permission('languages') == true) $template->parse('main_block', "languages_block", true);
+if ( isset($_GET['advanced']) AND $admin->get_permission('admintools') == true) $template->parse('main_block', "reload_block", true);
+
+/**
+ *	Parse template object
+ */
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+/**
+ *	Print admin footer
+ */
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/addons/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/upload.php
===================================================================
--- tags/2.8.3/wb/admin/media/upload.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/upload.php	(revision 1610)
@@ -0,0 +1,181 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+include_once('resize_img.php');
+include_once('parameters.php');
+
+require_once(WB_PATH.'/framework/class.admin.php');
+// require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');	// Required to unzip file.
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Media', 'media_upload', false);
+
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+}
+// After check print the header
+$admin->print_header();
+
+// Target location
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$target = (isset(${$requestMethod}['target'])) ? ${$requestMethod}['target'] : '';
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+$directory = ($target == '/') ?  '' : $target;
+$dirlink = 'index.php?dir='.$directory;
+$rootlink = 'index.php?dir=';
+
+// Check to see if target contains ../
+if (!check_media_path($target, false))
+{
+	$admin->print_error($MESSAGE['MEDIA']['TARGET_DOT_DOT_SLASH'] );
+}
+
+// Create relative path of the target location for the file
+$relative = WB_PATH.$target.'/';
+$resizepath = str_replace(array('/',' '),'_',$target);
+
+// Find out whether we should replace files or give an error
+$overwrite = ($admin->get_post('overwrite') != '') ? true : false;
+
+// Get list of file types to which we're supposed to append 'txt'
+$get_result=$database->query("SELECT value FROM ".TABLE_PREFIX."settings WHERE name='rename_files_on_upload' LIMIT 1");
+$file_extension_string='';
+if ($get_result->numRows()>0) {
+	$fetch_result=$get_result->fetchRow();
+	$file_extension_string=$fetch_result['value'];
+}
+
+$file_extensions=explode(",",$file_extension_string);
+// get from settings and add to forbidden list
+$forbidden_file_types  = preg_replace( '/\s*[,;\|#]\s*/','|',RENAME_FILES_ON_UPLOAD);
+// Loop through the files
+$good_uploads = 0;
+$sum_dirs = 0;
+$sum_files = 0;
+
+for($count = 1; $count <= 10; $count++)
+{
+	// If file was upload to tmp
+	if(isset($_FILES["file$count"]['name']))
+	{
+		// Remove bad characters
+		$filename = trim(media_filename($_FILES["file$count"]['name']),'.') ;
+		// Check if there is still a filename left
+		// if($filename != '') {
+		$info = pathinfo($filename);
+		$ext = isset($info['extension']) ? $info['extension'] : '';
+
+		if ( ($filename != '') && !preg_match("/" . $forbidden_file_types . "$/i", $ext) )
+		{
+			// Move to relative path (in media folder)
+			if(file_exists($relative.$filename) AND $overwrite == true) {
+				if(move_uploaded_file($_FILES["file$count"]['tmp_name'], $relative.$filename)) {
+					$good_uploads++;
+					$sum_files++;
+					// Chmod the uploaded file
+					change_mode($relative.$filename);
+				}
+			} elseif(!file_exists($relative.$filename)) {
+				if(move_uploaded_file($_FILES["file$count"]['tmp_name'], $relative.$filename)) {
+					$good_uploads++;
+					$sum_files++;
+					// Chmod the uploaded file
+					change_mode($relative.$filename);
+				}
+			}
+
+			if(file_exists($relative.$filename)) {
+				if ($pathsettings[$resizepath]['width'] || $pathsettings[$resizepath]['height'] ) {
+					$rimg=new RESIZEIMAGE($relative.$filename);
+					$rimg->resize_limitwh($pathsettings[$resizepath]['width'],$pathsettings[$resizepath]['height'],$relative.$filename);
+					$rimg->close();
+				}
+			}
+
+			// store file name of first file for possible unzip action
+			if ($count == 1) {
+				$filename1 = $relative . $filename;
+			}
+		}
+	}
+}
+/*
+ * Callback function to skip files in black-list
+ */
+function pclzipCheckValidFile($p_event, &$p_header)
+{
+    //  return 1;
+// Check for potentially malicious files
+	$forbidden_file_types  = preg_replace( '/\s*[,;\|#]\s*/','|',RENAME_FILES_ON_UPLOAD);
+	$info = pathinfo($p_header['filename']);
+	$ext = isset($info['extension']) ? $info['extension'] : '';
+	$dots = (substr($info['basename'], 0, 1) == '.') || (substr($info['basename'], -1, 1) == '.');
+	if( !preg_match('/'.$forbidden_file_types.'$/i', $ext) && $dots != '.' )
+	{	// ----- allowed file types are extracted
+	  return 1;
+	}else
+	{	// ----- all other files are skiped
+	  return 0;
+	}
+}
+/* ********************************* */
+
+// If the user chose to unzip the first file, unzip into the current folder
+if (isset($_POST['unzip']) && isset($filename1) && file_exists($filename1) ) {
+	// Required to unzip file.
+	require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
+	$archive = new PclZip($filename1);
+	$list = $archive->extract(PCLZIP_OPT_PATH, $relative,PCLZIP_CB_PRE_EXTRACT, 'pclzipCheckValidFile');
+
+	if($list == 0) {
+		// error while trying to extract the archive (most likely wrong format)
+		$admin->print_error('UNABLE TO UNZIP FILE' . $archive -> errorInfo(true));
+	}
+	$sum_files = 0;
+	// rename executable files!
+	foreach ($list as $key => $val) {
+	    if( ($val['folder'] ) && change_mode($val['filename']) ) {
+		   $sum_dirs++;
+		} elseif( is_writable($val['filename']) && ($val['status'] == 'ok') && change_mode($val['filename']) )  {
+			$sum_files++;
+		}
+	}
+	if (isset($_POST['delzip'])) { unlink($filename1); }
+	$dir = dirname($filename1);
+    if(file_exists($dir)) {
+		$array = createFolderProtectFile($dir);
+    }
+}
+unset($list);
+
+if($sum_files == 1) {
+	$admin->print_success($sum_files.' '.$MESSAGE['MEDIA']['SINGLE_UPLOADED'] );
+} elseif($sum_files > 1) {
+	$admin->print_success($sum_files.' '.$MESSAGE['MEDIA']['UPLOADED'] );
+} else {
+	$admin->print_error($MESSAGE['MEDIA_NO_FILE_UPLOADED'] );
+}
+
+// Print admin
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/media/upload.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/index.php
===================================================================
--- tags/2.8.3/wb/admin/media/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/index.php	(revision 1610)
@@ -0,0 +1,129 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media');
+
+$starttime = explode(" ", microtime());
+$starttime = $starttime[0]+$starttime[1];
+include ('parameters.php');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('media.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'media.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+
+// Insert values
+$template->set_block('main_block', 'dir_list_block', 'dir_list');
+$dirs = directory_list(WB_PATH.MEDIA_DIRECTORY);
+$currentHome = $admin->get_home_folder();
+
+if ($currentHome){
+	$dirs = directory_list(WB_PATH.MEDIA_DIRECTORY.$currentHome);
+}
+else
+{
+	$dirs = directory_list(WB_PATH.MEDIA_DIRECTORY);
+}
+$array_lowercase = array_map('strtolower', $dirs);
+array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $dirs);
+foreach($dirs AS $name) {
+	if(!isset($home_folders[str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)])) {
+		$template->set_var('NAME', str_replace(WB_PATH, '', $name));
+		$template->parse('dir_list', 'dir_list_block', true);
+	}
+}
+
+// Insert permissions values
+if($admin->get_permission('media_create') != true) {
+	$template->set_var('DISPLAY_CREATE', 'hide');
+}
+if($admin->get_permission('media_upload') != true) {
+	$template->set_var('DISPLAY_UPLOAD', 'hide');
+}
+if ($_SESSION['GROUP_ID'] != 1 && $pathsettings['global']['admin_only']) { // Only show admin the settings link
+	$template->set_var('DISPLAY_SETTINGS', 'hide');
+}
+// Workout if the up arrow should be shown
+if(($dirs == '') or ($dirs==$currentHome) or (!array_key_exists('dir', $_GET))) {
+	$display_up_arrow = 'hide';
+} else {
+	$display_up_arrow = '';
+}
+
+// Insert language headings
+$template->set_var(array(
+					'HEADING_BROWSE_MEDIA' => $HEADING['BROWSE_MEDIA'],
+					'HOME_DIRECTORY' => $currentHome,
+					'DISPLAY_UP_ARROW' => $display_up_arrow, // **!
+					'HEADING_CREATE_FOLDER' => $HEADING['CREATE_FOLDER'],
+					'HEADING_UPLOAD_FILES' => $HEADING['UPLOAD_FILES']
+				)
+			);
+// insert urls
+$template->set_var(array(
+					'ADMIN_URL' => ADMIN_URL,
+					'WB_URL' => WB_URL,
+					'WB_PATH' => WB_PATH,
+					'THEME_URL' => THEME_URL
+				)
+			);
+// Insert language text and messages
+$template->set_var(array(
+					'MEDIA_DIRECTORY' => MEDIA_DIRECTORY,
+					'TEXT_NAME' => $TEXT['TITLE'],
+					'TEXT_RELOAD' => $TEXT['RELOAD'],
+					'TEXT_TARGET_FOLDER' => $TEXT['TARGET_FOLDER'],
+					'TEXT_OVERWRITE_EXISTING' => $TEXT['OVERWRITE_EXISTING'],
+					'TEXT_FILES' => $TEXT['FILES'],
+					'TEXT_CREATE_FOLDER' => $TEXT['CREATE_FOLDER'],
+					'TEXT_UPLOAD_FILES' => $TEXT['UPLOAD_FILES'],
+					'CHANGE_SETTINGS' => $TEXT['MODIFY_SETTINGS'],
+					'OPTIONS' => $TEXT['OPTION'],
+					'TEXT_UNZIP_FILE' => $TEXT['UNZIP_FILE'],
+					'TEXT_DELETE_ZIP' => $TEXT['DELETE_ZIP'],
+					'FTAN' => $admin->getFTAN()
+				)
+			);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+/*
+$endtime=explode(" ", microtime());
+$endtime=$endtime[0]+$endtime[1];
+$debugVMsg = '';
+if($admin->ami_group_member('1') ) {
+	$debugVMsg  = "<p>Mask loaded in ".round($endtime - $starttime,6)." Sec,&nbsp;&nbsp;";
+	$debugVMsg .= "Memory in use ".number_format(memory_get_usage(true), 0, ',', '.')."&nbsp;Byte,&nbsp;&nbsp;";
+	$debugVMsg .= sizeof(get_included_files())."&nbsp;included files</p>";
+	// $debugVMsg = print_message($debugVMsg,'#','debug',-1,false);
+	print $debugVMsg.'<br />';
+ }
+*/
+// Print admin
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/media/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/setparameter.php
===================================================================
--- tags/2.8.3/wb/admin/media/setparameter.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/setparameter.php	(revision 1610)
@@ -0,0 +1,135 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media', false);
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// check if theme language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(THEME_PATH .'/languages/'.LANGUAGE .'.php')) {
+	// no theme language file exists for the language set by the user, include default theme language file EN.php
+	require_once(THEME_PATH .'/languages/EN.php');
+} else {
+	// a theme language file exists for the language defined by the user, load it
+	require_once(THEME_PATH .'/languages/'.LANGUAGE .'.php');
+}
+
+//Save post vars to the parameters file
+if ( !is_null($admin->get_post_escaped("save"))) {
+/*
+	if (!$admin->checkFTAN())
+	{
+		$admin->print_error('::'.$MESSAGE['GENERIC_SECURITY_ACCESS'],'browse.php',false);
+	}
+*/
+
+	if(DEFAULT_THEME != ' wb_theme') {
+		//Check for existing settings entry, if not existing, create a record first!
+		if (!$database->query ( "SELECT * FROM ".TABLE_PREFIX."settings where `name`='mediasettings'" )) {
+			$database->query ( "INSERT INTO ".TABLE_PREFIX."settings (`name`,`value`) VALUES ('mediasettings','')" );
+		}
+	} else {
+		$pathsettings = array();
+	}
+
+	$dirs = directory_list(WB_PATH.MEDIA_DIRECTORY);
+	$dirs[] = WB_PATH.MEDIA_DIRECTORY;
+	foreach($dirs AS $name) {
+		$r = str_replace(WB_PATH, '', $name);
+		$r = str_replace(array('/',' '),'_',$r);
+		$w = (int)$admin->get_post_escaped($r.'-w');
+		$h = (int)$admin->get_post_escaped($r.'-h');
+		$pathsettings[$r]['width']=$w; 
+		$pathsettings[$r]['height']=$h;
+	}
+	$pathsettings['global']['admin_only'] = ($admin->get_post_escaped('admin_only')!=''?'checked':'');
+	$pathsettings['global']['show_thumbs'] = ($admin->get_post_escaped('show_thumbs')!=''?'checked':'');
+	$fieldSerialized = serialize($pathsettings);
+	$database->query ( "UPDATE ".TABLE_PREFIX."settings SET `value` = '$fieldSerialized' WHERE `name`='mediasettings'" );
+	header ("Location: browse.php");
+}
+
+include ('parameters.php');
+if ($_SESSION['GROUP_ID'] != 1 && $pathsettings['global']['admin_only']) {
+	echo "Sorry, settings not available";
+	exit();
+}
+
+// Read data to display
+$caller = "setparameter";
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('setparameter.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'setparameter.htt');
+$template->set_block('page', 'main_block', 'main');
+if ($_SESSION['GROUP_ID'] != 1) {
+	$template->set_var('DISPLAY_ADMIN', 'hide');
+}
+$template->set_var(array( 
+				'TEXT_HEADER' => $TEXT['TEXT_HEADER'],
+				'SAVE_TEXT' => $TEXT['SAVE'],
+				'BACK' => $TEXT['BACK'],
+			)
+		);
+
+$template->set_block('main_block', 'list_block', 'list');
+$row_bg_color = '';
+$dirs = directory_list(WB_PATH.MEDIA_DIRECTORY);
+$dirs[] = WB_PATH.MEDIA_DIRECTORY;
+
+$array_lowercase = array_map('strtolower', $dirs);
+array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $dirs);
+
+foreach($dirs AS $name) {
+	$relative = str_replace(WB_PATH, '', $name);
+	$safepath = str_replace(array('/',' '),'_',$relative);
+	$cur_width = $cur_height = '';
+	if (isset($pathsettings[$safepath]['width'])) $cur_width = $pathsettings[$safepath]['width'];
+	if (isset($pathsettings[$safepath]['height'])) $cur_height = $pathsettings[$safepath]['height'];
+	$cur_width = ($cur_width ? (int)$cur_width : '-');
+	$cur_height = ($cur_height ? (int)$cur_height : '-');
+
+	if($row_bg_color == 'DEDEDE') $row_bg_color = 'EEEEEE';
+	else $row_bg_color = 'DEDEDE';
+
+	$template->set_var(array( 
+					'ADMIN_URL' => ADMIN_URL,
+					'PATH_NAME' => $relative,
+					'WIDTH' => $TEXT['WIDTH'],
+					'HEIGHT' => $TEXT['HEIGHT'],
+					'FIELD_NAME_W' => $safepath.'-w',
+					'FIELD_NAME_H' => $safepath.'-h',
+					'CUR_WIDTH' => $cur_width,
+					'CUR_HEIGHT' => $cur_height,
+					'SETTINGS' => $TEXT['SETTINGS'],
+					'ADMIN_ONLY' => $TEXT['ADMIN_ONLY'],
+					'ADMIN_ONLY_SELECTED' => $pathsettings['global']['admin_only'],
+					'NO_SHOW_THUMBS' => $TEXT['NO_SHOW_THUMBS'],
+					'NO_SHOW_THUMBS_SELECTED' => $pathsettings['global']['show_thumbs'],
+					'ROW_BG_COLOR' => $row_bg_color,
+					'FTAN' => $admin->getFTAN()
+				)
+		);
+	$template->parse('list', 'list_block', true);
+}
+
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');

Property changes on: tags/2.8.3/wb/admin/media/setparameter.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/browse.php
===================================================================
--- tags/2.8.3/wb/admin/media/browse.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/browse.php	(revision 1610)
@@ -0,0 +1,326 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Create admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media', false);
+
+$starttime = explode(" ", microtime());
+$starttime = $starttime[0]+$starttime[1];
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+include ('parameters.php');
+
+// check if theme language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(THEME_PATH .'/languages/'.LANGUAGE .'.php')) {
+	// no theme language file exists for the language set by the user, include default theme language file EN.php
+	require_once(THEME_PATH .'/languages/EN.php');
+} else {
+	// a theme language file exists for the language defined by the user, load it
+	require_once(THEME_PATH .'/languages/'.LANGUAGE .'.php');
+}
+
+// Byte convert for filesize
+function byte_convert($bytes) {
+	$symbol = array(' bytes', ' KB', ' MB', ' GB', ' TB');
+	$exp = 0;
+	$converted_value = 0;
+	if( $bytes > 0 ) {
+		$exp = floor( log($bytes)/log(1024) );
+		$converted_value = ( $bytes/pow(1024,floor($exp)) );
+	}
+	return sprintf( '%.2f '.$symbol[$exp], $converted_value );
+}
+
+// Get file extension
+function get_filetype($fname) {
+	$pathinfo = pathinfo($fname);
+	$extension = (isset($pathinfo['extension'])) ? strtolower($pathinfo['extension']) : '';
+	return $extension;
+}
+
+// Get file extension for icons
+function get_filetype_icon($fname) {
+	$pathinfo = pathinfo($fname);
+	$extension = (isset($pathinfo['extension'])) ? strtolower($pathinfo['extension']) : '';
+	if (file_exists(THEME_PATH.'/images/files/'.$extension.'.png')) {
+		return $extension;
+	} else {
+		return 'blank_16';
+	}
+}
+
+function ShowTip($name,$detail='') {
+$parts = explode(".", $name);
+$ext = strtolower(end($parts));
+if (strpos('.gif.jpg.jpeg.png.bmp.',$ext) )
+	return 'onmouseover="overlib(\'<img src=\\\''.$name.'\\\' maxwidth=\\\'200\\\' maxheight=\\\'200\\\'>\',VAUTO, WIDTH)" onmouseout="nd()" ' ;
+else
+	return '';
+}
+
+function fsize($size) {
+   if($size == 0) return("0 Bytes");
+   $filesizename = array(" bytes", " kB", " MB", " GB", " TB");
+   return round($size/pow(1024, ($i = floor(log($size, 1024)))), 1) . $filesizename[$i];
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('media_browse.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'media_browse.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Get the current dir
+$currentHome = $admin->get_home_folder();
+$directory =	(($currentHome) AND (!array_key_exists('dir',$_GET)))
+				?
+				$currentHome
+				:
+				$admin->strip_slashes($admin->get_get('dir')) ;
+
+if($directory == '/' OR $directory == '\\') {
+	$directory = '';
+}
+
+$dir_backlink = 'browse.php?dir='.$directory;
+
+// Check to see if it contains ../
+if (!check_media_path($directory)) {
+	// $admin->print_header();
+	$admin->print_error($MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH']);
+}
+
+if(!file_exists(WB_PATH.MEDIA_DIRECTORY.$directory)) {
+	// $admin->print_header();
+	$admin->print_error($MESSAGE['MEDIA']['DIR_DOES_NOT_EXIST']);
+}
+
+// Check to see if the user wanted to go up a directory into the parent folder
+if($admin->get_get('up') == 1) {
+	$parent_directory = dirname($directory);
+	header("Location: browse.php?dir=$parent_directory");
+	exit(0);
+}
+
+if ($_SESSION['GROUP_ID'] != 1 && $pathsettings['global']['admin_only']) { // Only show admin the settings link
+	$template->set_var('DISPLAY_SETTINGS', 'hide');
+}
+
+// Workout the parent dir link
+$parent_dir_link = ADMIN_URL.'/media/browse.php?dir='.$directory.'&amp;up=1';
+// Workout if the up arrow should be shown
+if(($directory == '') or ($directory==$currentHome)) {
+	$display_up_arrow = 'hide';
+} else {
+	$display_up_arrow = '';
+}
+
+// Insert values
+$template->set_var(array(
+					'THEME_URL' => THEME_URL,
+					// 'THEME_URL' => '',
+					'CURRENT_DIR' => $directory,
+					'PARENT_DIR_LINK' => $parent_dir_link,
+					'DISPLAY_UP_ARROW' => $display_up_arrow,
+					'INCLUDE_PATH' => WB_URL.'/include'
+				)
+			);
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+
+// Generate list
+$template->set_block('main_block', 'list_block', 'list');
+
+$usedFiles = array();
+// require_once(ADMIN_PATH.'/media/dse.php');
+// $filename =  $currentdir;
+if(!empty($currentdir)) {
+	$usedFiles = $Dse->getMatchesFromDir( $currentdir, DseTwo::RETURN_USED);
+}
+
+// Check for potentially malicious files
+$forbidden_file_types  = preg_replace( '/\s*[,;\|#]\s*/','|',RENAME_FILES_ON_UPLOAD);
+
+if($handle = opendir(WB_PATH.MEDIA_DIRECTORY.'/'.$directory)) {
+	// Loop through the files and dirs an add to list
+   while (false !== ($file = readdir($handle))) {
+		$info = pathinfo($file);
+		$ext = isset($info['extension']) ? $info['extension'] : '';
+		if(substr($file, 0, 1) != '.' AND $file != '.svn' AND $file != 'index.php') {
+			if( !preg_match('/'.$forbidden_file_types.'$/i', $ext) ) {
+				if(is_dir(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$file)) {
+					if(!isset($home_folders[$directory.'/'.$file])) {
+						$DIR[] = $file;
+					}
+				} else {
+					$FILE[] = $file;
+				}
+			}
+		}
+	}
+	// Now parse these values to the template
+	$temp_id = 0;
+	$row_bg_color = 'FFF';
+	if(isset($DIR)) {
+		sort($DIR);
+		foreach($DIR AS $name) {
+			$link_name = str_replace(' ', '%20', $name);
+			$temp_id++;
+			$template->set_var(array(
+								'NAME' => $name,
+								'NAME_SLASHED' => addslashes($name),
+								'TEMP_ID' => $admin->getIDKEY($temp_id),
+								// 'TEMP_ID' => $temp_id,
+								'LINK' => "browse.php?dir=$directory/$link_name",
+								'LINK_TARGET' => '_self',
+								'ROW_BG_COLOR' => $row_bg_color,
+								'FT_ICON' => THEME_URL.'/images/folder_16.png',
+								'FILETYPE_ICON' => THEME_URL.'/images/folder_16.png',
+								'MOUSEOVER' => '',
+								'IMAGEDETAIL' => '',
+								'SIZE' => '',
+								'DATE' => '',
+								'PREVIEW' => '',
+								'IMAGE_TITLE' => $name,
+								'IMAGE_EXIST' => 'blank_16.gif'
+							)
+						);
+			$template->parse('list', 'list_block', true);
+			// Code to alternate row colors
+			if($row_bg_color == 'FFF') {
+				$row_bg_color = 'ECF1F3';
+			} else {
+				$row_bg_color = 'FFF';
+			}
+		}
+	}
+	if(isset($FILE)) {
+		sort($FILE);
+		$filepreview = array('jpg','gif','tif','tiff','png','txt','css','js','cfg','conf','pdf','zip','gz','doc');
+		foreach($FILE AS $name) {
+			$size = filesize('../../'.MEDIA_DIRECTORY.$directory.'/'.$name);
+			$bytes = byte_convert($size);
+			$fdate = filemtime('../../'.MEDIA_DIRECTORY.$directory.'/'.$name);
+			$date = gmdate(DATE_FORMAT.' '.TIME_FORMAT, $fdate);
+			$filetypeicon = get_filetype_icon(WB_URL.MEDIA_DIRECTORY.$directory.'/'.$name);
+			$filetype = get_filetype(WB_URL.MEDIA_DIRECTORY.$directory.'/'.$name);
+
+			if (in_array($filetype, $filepreview)) {
+				$preview = 'preview';
+			} else {
+				$preview = '';
+			}
+			$temp_id++;
+			$imgdetail = '';
+			// $icon = THEME_URL.'/images/blank_16.gif';
+			$icon = '';
+			$tooltip = '';
+
+
+			if (!$pathsettings['global']['show_thumbs']) {
+				$info = getimagesize(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$name);
+				if ($info[0]) {
+					$imgdetail = fsize(filesize(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$name)).'<br /> '.$info[0].' x '.$info[1].' px';
+					$icon = 'thumb.php?t=1&amp;img='.$directory.'/'.$name;
+					$tooltip = ShowTip('thumb.php?t=2&amp;img='.$directory.'/'.$name);
+				}
+			}
+
+			$filetype_url = THEME_URL.'/images/files/'.$filetypeicon.'.png';
+			$template->set_var(array(
+								'NAME' => $name,
+								'NAME_SLASHED' => addslashes($name),
+								'TEMP_ID' => $admin->getIDKEY($temp_id),
+								// 'TEMP_ID' => $temp_id,
+								'LINK' => WB_URL.MEDIA_DIRECTORY.$directory.'/'.$name,
+								'LINK_TARGET' => '_blank',
+								'ROW_BG_COLOR' => $row_bg_color,
+								'FT_ICON' => empty($icon) ? $filetype_url : $icon,
+								'FILETYPE_ICON' => $filetype_url,
+								'MOUSEOVER' => $tooltip,
+								'IMAGEDETAIL' => $imgdetail,
+								'SIZE' => $bytes,
+								'DATE' => $date,
+								'PREVIEW' => $preview,
+								'IMAGE_TITLE' => $name,
+								'IMAGE_EXIST' =>  'blank_16.gif'
+							)
+						);
+			$template->parse('list', 'list_block', true);
+			// Code to alternate row colors
+			if($row_bg_color == 'FFF') {
+				$row_bg_color = 'ECF1F3';
+			} else {
+				$row_bg_color = 'FFF';
+			}
+		}
+	}
+}
+
+// If no files are in the media folder say so
+if($temp_id == 0) {
+	$template->set_var('DISPLAY_LIST_TABLE', 'hide');
+} else {
+	$template->set_var('DISPLAY_NONE_FOUND', 'hide');
+}
+
+// Insert permissions values
+if($admin->get_permission('media_rename') != true) {
+	$template->set_var('DISPLAY_RENAME', 'hide');
+}
+if($admin->get_permission('media_delete') != true) {
+	$template->set_var('DISPLAY_DELETE', 'hide');
+}
+
+// Insert language text and messages
+$template->set_var(array(
+					'MEDIA_DIRECTORY' => MEDIA_DIRECTORY,
+					'TEXT_CURRENT_FOLDER' => $TEXT['CURRENT_FOLDER'],
+					'TEXT_RELOAD' => $TEXT['RELOAD'],
+					'TEXT_RENAME' => $TEXT['RENAME'],
+					'TEXT_DELETE' => $TEXT['DELETE'],
+					'TEXT_SIZE' => $TEXT['SIZE'],
+					'TEXT_DATE' => $TEXT['DATE'],
+					'TEXT_NAME' => $TEXT['NAME'],
+					'TEXT_TYPE' => $TEXT['TYPE'],
+					'TEXT_UP' => $TEXT['UP'],
+					'NONE_FOUND' => $MESSAGE['MEDIA']['NONE_FOUND'],
+					'CHANGE_SETTINGS' => $TEXT['MODIFY_SETTINGS'],
+					'CONFIRM_DELETE' => $MESSAGE['MEDIA']['CONFIRM_DELETE']
+				)
+			);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+/*
+$endtime=explode(" ", microtime());
+$endtime=$endtime[0]+$endtime[1];
+$debugVMsg = '';
+if($admin->ami_group_member('1') ) {
+	$debugVMsg  = "<p>Mask loaded in ".round($endtime - $starttime,6)." Sec,&nbsp;&nbsp;";
+	$debugVMsg .= "Memory in use ".number_format(memory_get_usage(true), 0, ',', '.')."&nbsp;Byte,&nbsp;&nbsp;";
+	$debugVMsg .= sizeof(get_included_files())."&nbsp;included files</p>";
+	// $debugVMsg = print_message($debugVMsg,'#','debug',-1,false);
+	print $debugVMsg.'<br />';
+ }
+*/ 
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/media/browse.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/parameters.php
===================================================================
--- tags/2.8.3/wb/admin/media/parameters.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/parameters.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+function __unserialize($sObject) {  // found in php manual :-)
+	$__ret =preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $sObject );
+	return unserialize($__ret);
+}
+$pathsettings = array();
+if(DEFAULT_THEME != ' wb_theme') {
+	$query = $database->query ( "SELECT * FROM ".TABLE_PREFIX."settings where `name`='mediasettings'" );
+	if ($query && $query->numRows() > 0) {
+		$settings = $query->fetchRow();
+		$pathsettings = __unserialize($settings['value']);
+	} else {
+		$database->query ( "INSERT INTO ".TABLE_PREFIX."settings (`name`,`value`) VALUES ('mediasettings','')" );
+	}
+}
+

Property changes on: tags/2.8.3/wb/admin/media/parameters.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/rename.php
===================================================================
--- tags/2.8.3/wb/admin/media/rename.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/rename.php	(revision 1610)
@@ -0,0 +1,143 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Create admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media_rename', false);
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get the current dir
+$directory = $admin->get_get('dir');
+$directory = ($directory == '/') ?  '' : $directory;
+
+$dirlink = 'browse.php?dir='.$directory;
+$rootlink = 'browse.php?dir=';
+// $file_id = intval($admin->get_get('id'));
+
+// first Check to see if it contains ..
+if (!check_media_path($directory)) {
+	$admin->print_error($MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'],$rootlink, false);
+}
+
+// Get the temp id
+$file_id = intval($admin->checkIDKEY('id', false, $_SERVER['REQUEST_METHOD']));
+if (!$file_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$dirlink, false);
+}
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+// Check for potentially malicious files
+$forbidden_file_types  = preg_replace( '/\s*[,;\|#]\s*/','|',RENAME_FILES_ON_UPLOAD);
+
+// Figure out what folder name the temp id is
+if($handle = opendir(WB_PATH.MEDIA_DIRECTORY.'/'.$directory)) {
+	// Loop through the files and dirs an add to list
+   while (false !== ($file = readdir($handle))) {
+		$info = pathinfo($file);
+		$ext = isset($info['extension']) ? $info['extension'] : '';
+		if(substr($file, 0, 1) != '.' AND $file != '.svn' AND $file != 'index.php') {
+			if( !preg_match('/'.$forbidden_file_types.'$/i', $ext) ) {
+				if(is_dir(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$file)) {
+					if(!isset($home_folders[$directory.'/'.$file])) {
+						$DIR[] = $file;
+					}
+				} else {
+					$FILE[] = $file;
+				}
+			}
+		}
+	}
+
+	$temp_id = 0;
+	if(isset($DIR)) {
+		sort($DIR);
+		foreach($DIR AS $name) {
+			$temp_id++;
+			if($file_id == $temp_id) {
+				$rename_file = $name;
+				$type = 'folder';
+			}
+		}
+	}
+
+	if(isset($FILE)) {
+		sort($FILE);
+		foreach($FILE AS $name) {
+			$temp_id++;
+			if($file_id == $temp_id) {
+				$rename_file = $name;
+				$type = 'file';
+			}
+		}
+	}
+}
+
+if(!isset($rename_file)) {
+	$admin->print_error($MESSAGE['MEDIA']['FILE_NOT_FOUND'], $dirlink, false);
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('media_rename.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'media_rename.htt');
+$template->set_block('page', 'main_block', 'main');
+//echo WB_PATH.'/media/'.$directory.'/'.$rename_file;
+if($type == 'folder') {
+	$template->set_var('DISPlAY_EXTENSION', 'hide');
+	$extension = '';
+} else {
+	$template->set_var('DISPlAY_EXTENSION', '');
+	$extension = strstr($rename_file, '.');
+}
+
+if($type == 'folder') {
+	$type = $TEXT['FOLDER'];
+} else {
+	$type = $TEXT['FILE'];
+}
+
+$template->set_var(array(
+					'THEME_URL' => THEME_URL,
+					'FILENAME' => $rename_file,
+					'DIR' => $directory,
+					'FILE_ID' => $admin->getIDKEY($file_id),
+					// 'FILE_ID' => $file_id,
+					'TYPE' => $type,
+					'EXTENSION' => $extension,
+					'FTAN' => $admin->getFTAN()
+				)
+			);
+
+
+// Insert language text and messages
+$template->set_var(array(
+					'TEXT_TO' => $TEXT['TO'],
+					'TEXT_RENAME' => $TEXT['RENAME'],
+					'TEXT_CANCEL' => $TEXT['CANCEL'],
+					'TEXT_UP' => $TEXT['UP'],
+					'TEXT_OVERWRITE_EXISTING' => $TEXT['OVERWRITE_EXISTING']
+				)
+			);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');

Property changes on: tags/2.8.3/wb/admin/media/rename.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/rename2.php
===================================================================
--- tags/2.8.3/wb/admin/media/rename2.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/rename2.php	(revision 1610)
@@ -0,0 +1,170 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         media
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Create admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media_rename', false);
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get the current dir
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$directory = (isset(${$requestMethod}['dir'])) ? ${$requestMethod}['dir'] : '';
+$directory = ($directory == '/') ?  '' : $directory;
+
+$dirlink = 'browse.php?dir='.$directory;
+$rootlink = 'browse.php?dir=';
+// $file_id = intval($admin->get_post('id'));
+
+// first Check to see if it contains ..
+if (!check_media_path($directory)) {
+	$admin->print_error($MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'],$rootlink, false);
+}
+
+// Get the temp id
+$file_id = intval($admin->checkIDKEY('id', false, $_SERVER['REQUEST_METHOD']));
+if (!$file_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$dirlink, false);
+}
+
+// Check for potentially malicious files
+$forbidden_file_types  = preg_replace( '/\s*[,;\|#]\s*/','|',RENAME_FILES_ON_UPLOAD);
+// Get home folder not to show
+$home_folders = get_home_folders();
+
+// Figure out what folder name the temp id is
+if($handle = opendir(WB_PATH.MEDIA_DIRECTORY.'/'.$directory)) {
+	// Loop through the files and dirs an add to list
+   while (false !== ($file = readdir($handle))) {
+		$info = pathinfo($file);
+		$ext = isset($info['extension']) ? $info['extension'] : '';
+		if(substr($file, 0, 1) != '.' AND $file != '.svn' AND $file != 'index.php') {
+			if( !preg_match('/'.$forbidden_file_types.'$/i', $ext) ) {
+				if(is_dir(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$file)) {
+					if(!isset($home_folders[$directory.'/'.$file])) {
+						$DIR[] = $file;
+					}
+				} else {
+					$FILE[] = $file;
+				}
+			}
+		}
+	}
+	$temp_id = 0;
+	if(isset($DIR)) {
+		sort($DIR);
+		foreach($DIR AS $name) {
+			$temp_id++;
+			if($file_id == $temp_id) {
+				$rename_file = $name;
+				$type = 'folder';
+			}
+		}
+	}
+	if(isset($FILE)) {
+		sort($FILE);
+		foreach($FILE AS $name) {
+			$temp_id++;
+			if($file_id == $temp_id) {
+				$rename_file = $name;
+				$type = 'file';
+			}
+		}
+	}
+}
+
+$file_id = $admin->getIDKEY($file_id);
+
+if(!isset($rename_file)) {
+	$admin->print_error($MESSAGE['MEDIA']['FILE_NOT_FOUND'], $dirlink, false);
+}
+
+// Check if they entered a new name
+if(media_filename($admin->get_post('name')) == "") {
+	$admin->print_error($MESSAGE['MEDIA']['BLANK_NAME'], "rename.php?dir=$directory&id=$file_id", false);
+} else {
+	$old_name = $admin->get_post('old_name');
+	$new_name =  media_filename($admin->get_post('name'));
+}
+
+// Check if they entered an extension
+if($type == 'file') {
+	if(media_filename($admin->get_post('extension')) == "") {
+		$admin->print_error($MESSAGE['MEDIA']['BLANK_EXTENSION'], "rename.php?dir=$directory&id=$file_id", false);
+	} else {
+		$extension = media_filename($admin->get_post('extension'));
+	}
+} else {
+	$extension = '';
+}
+
+// Join new name and extension
+$name = $new_name.$extension;
+
+$info = pathinfo(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$name);
+$ext = isset($info['extension']) ? $info['extension'] : '';
+$dots = (substr($info['basename'], 0, 1) == '.') || (substr($info['basename'], -1, 1) == '.');
+
+if( preg_match('/'.$forbidden_file_types.'$/i', $ext) || $dots == '.' ) {
+	$admin->print_error($MESSAGE['MEDIA']['CANNOT_RENAME'], "rename.php?dir=$directory&id=$file_id", false);
+}
+
+// Check if the name contains ..
+if(strstr($name, '..')) {
+	$admin->print_error($MESSAGE['MEDIA']['NAME_DOT_DOT_SLASH'], "rename.php?dir=$directory&id=$file_id", false);
+}
+
+// Check if the name is index.php
+if($name == 'index.php') {
+	$admin->print_error($MESSAGE['MEDIA']['NAME_INDEX_PHP'], "rename.php?dir=$directory&id=$file_id", false);
+}
+
+// Check that the name still has a value
+if($name == '') {
+	$admin->print_error($MESSAGE['MEDIA']['BLANK_NAME'], "rename.php?dir=$directory&id=$file_id", false);
+}
+
+$info = pathinfo(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$rename_file);
+$ext = isset($info['extension']) ? $info['extension'] : '';
+$dots = (substr($info['basename'], 0, 1) == '.') || (substr($info['basename'], -1, 1) == '.');
+
+if( preg_match('/'.$forbidden_file_types.'$/i', $ext) || $dots == '.' ) {
+	$admin->print_error($MESSAGE['MEDIA']['CANNOT_RENAME'], "rename.php?dir=$directory&id=$file_id", false);
+}
+
+// Check if we should overwrite or not
+if($admin->get_post('overwrite') != 'yes' AND file_exists(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$name) == true) {
+	if($type == 'folder') {
+		$admin->print_error($MESSAGE['MEDIA']['DIR_EXISTS'], "rename.php?dir=$directory&id=$file_id", false);
+	} else {
+		$admin->print_error($MESSAGE['MEDIA']['FILE_EXISTS'], "rename.php?dir=$directory&id=$file_id", false);
+	}
+}
+
+// Try and rename the file/folder
+if(rename(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$rename_file, WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$name)) {
+	$usedFiles = array();
+    // feature freeze
+	// require_once(ADMIN_PATH.'/media/dse.php');
+
+	$admin->print_success($MESSAGE['MEDIA']['RENAMED'], $dirlink);
+} else {
+	$admin->print_error($MESSAGE['MEDIA']['CANNOT_RENAME'], "rename.php?dir=$directory&id=$file_id", false);
+}

Property changes on: tags/2.8.3/wb/admin/media/rename2.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/delete.php
===================================================================
--- tags/2.8.3/wb/admin/media/delete.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/delete.php	(revision 1610)
@@ -0,0 +1,121 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Create admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Media', 'media_delete', false);
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get the current dir
+$directory = $admin->get_get('dir');
+$directory = ($directory == '/') ?  '' : $directory;
+
+$dirlink = 'browse.php?dir='.$directory;
+$rootlink = 'browse.php?dir=';
+
+// Check to see if it contains ..
+if (!check_media_path($directory)) {
+	// $admin->print_header();
+	$admin->print_error($MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'],$rootlink,false );
+}
+
+// Get the file id
+$file_id = $admin->checkIDKEY('id', false, $_SERVER['REQUEST_METHOD']);
+if (!$file_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $dirlink,false);
+}
+
+// Get home folder not to show
+$home_folders = get_home_folders();
+$usedFiles = array();
+// feature freeze
+// require_once(ADMIN_PATH.'/media/dse.php');
+/*
+
+if(!empty($currentdir)) {
+	$usedFiles = $Dse->getMatchesFromDir( $directory, DseTwo::RETURN_USED);
+}
+*/
+// Figure out what folder name the temp id is
+if($handle = opendir(WB_PATH.MEDIA_DIRECTORY.'/'.$directory)) {
+	// Loop through the files and dirs an add to list
+   while (false !== ($file = readdir($handle))) {
+		if(substr($file, 0, 1) != '.' AND $file != '.svn' AND $file != 'index.php') {
+			if(is_dir(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$file)) {
+				if(!isset($home_folders[$directory.'/'.$file])) {
+					$DIR[] = $file;
+				}
+			} else {
+				$FILE[] = $file;
+			}
+		}
+	}
+	$temp_id = 0;
+	if(isset($DIR)) {
+		sort($DIR);
+		foreach($DIR AS $name) {
+			$temp_id++;
+			if(!isset($delete_file) AND $file_id == $temp_id) {
+				$delete_file = $name;
+				$type = 'folder';
+			}
+		}
+	}
+	if(isset($FILE)) {
+		sort($FILE);
+		foreach($FILE AS $name) {
+			$temp_id++;
+			if(!isset($delete_file) AND $file_id == $temp_id) {
+				$delete_file = $name;
+				$type = 'file';
+			}
+		}
+	}
+}
+
+// Check to see if we could find an id to match
+if(!isset($delete_file)) {
+	$admin->print_error($MESSAGE['MEDIA']['FILE_NOT_FOUND'], $dirlink, false);
+}
+$relative_path = WB_PATH.MEDIA_DIRECTORY.'/'.$directory.'/'.$delete_file;
+// Check if the file/folder exists
+if(!file_exists($relative_path)) {
+	$admin->print_error($MESSAGE['MEDIA']['FILE_NOT_FOUND'], $dirlink, false);
+}
+
+// Find out whether its a file or folder
+if($type == 'folder') {
+	// Try and delete the directory
+	if(rm_full_dir($relative_path)) {
+		$admin->print_success($MESSAGE['MEDIA']['DELETED_DIR'], $dirlink);
+	} else {
+		$admin->print_error($MESSAGE['MEDIA']['CANNOT_DELETE_DIR'], $dirlink, false);
+	}
+} else {
+	// Try and delete the file
+	if(unlink($relative_path)) {
+		$admin->print_success($MESSAGE['MEDIA']['DELETED_FILE'], $dirlink);
+	} else {
+		$admin->print_error($MESSAGE['MEDIA']['CANNOT_DELETE_FILE'], $dirlink, false);
+	}
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/media/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/create.php
===================================================================
--- tags/2.8.3/wb/admin/media/create.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/create.php	(revision 1610)
@@ -0,0 +1,77 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+
+require_once(WB_PATH.'/framework/class.admin.php');
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Media', 'media_create', false);
+
+// Get dir name and target location
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$name = (isset(${$requestMethod}['name'])) ? ${$requestMethod}['name'] : '';
+
+// Check to see if name or target contains ../
+if(strstr($name, '..')) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['MEDIA']['NAME_DOT_DOT_SLASH']);
+}
+
+// Remove bad characters
+$name = trim(media_filename($name),'.');
+
+// Target location
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$target = (isset(${$requestMethod}['target'])) ? ${$requestMethod}['target'] : '';
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+if (!check_media_path($target, false)) {
+	$admin->print_error($MESSAGE['MEDIA']['TARGET_DOT_DOT_SLASH']);
+}
+
+// Create relative path of the new dir name
+$directory = WB_PATH.$target.'/'.$name;
+
+// Check to see if the folder already exists
+if(file_exists($directory)) {
+	$admin->print_error($MESSAGE['MEDIA']['DIR_EXISTS']);
+}
+
+if ( sizeof(createFolderProtectFile( $directory )) )
+{
+	$admin->print_error($MESSAGE['MEDIA']['DIR_NOT_MADE']);
+} else {
+	$usedFiles = array();
+    // feature freeze
+	// require_once(ADMIN_PATH.'/media/dse.php');
+	$admin->print_success($MESSAGE['MEDIA']['DIR_MADE']);
+}
+
+// Print admin
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/media/create.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/nopreview.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/jpeg

Property changes on: tags/2.8.3/wb/admin/media/nopreview.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/dse.php
===================================================================
--- tags/2.8.3/wb/admin/media/dse.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/dse.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+if (!defined('WB_PATH')) die(header('Location: index.php'));
+
+/*
+$DB_HOST = DB_HOST;
+$DB_NAME = DB_NAME ;
+$DB_USER = DB_USERNAME;
+$DB_PASS = DB_PASSWORD;
+$link = mysql_connect($DB_HOST, $DB_USER, $DB_PASS);
+mysql_select_db ( $DB_NAME, $link );
+*/
+require_once(WB_PATH.'/framework/DseTwo.php');
+
+$CachePath = WB_PATH.'/temp/mediacache';
+// $ListFile = ADMIN_PATH.'/media/MediaBlackList'; // WhiteList   BlackList
+$ListFile = ADMIN_PATH.'/media/MediaWhiteList'; // WhiteList   BlackList
+
+$link = $database->db_handle;
+$Dse = new DseTwo();
+$Dse->db_handle = $link;
+$Dse->db_name = DB_NAME;
+$Dse->base_dir = WB_PATH.MEDIA_DIRECTORY;
+$Dse->table_prefix = TABLE_PREFIX;
+$Dse->cache_dir = $CachePath;
+
+$Dse->addControllList($ListFile, DseTwo::USE_WHITELIST );  // $type const USE_ALL / USE_BLACKLIST / USE_WHITELIST
+
+if(!empty($directory)) {
+	$usedFiles = $Dse->getMatchesFromDir( $directory, DseTwo::RETURN_USED);
+}
+

Property changes on: tags/2.8.3/wb/admin/media/dse.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/MediaBlackList
===================================================================
--- tags/2.8.3/wb/admin/media/MediaBlackList	(nonexistent)
+++ tags/2.8.3/wb/admin/media/MediaBlackList	(revision 1610)
@@ -0,0 +1,29 @@
+addons
+groups
+mod_addon_file_editor
+mod_bookmarks_groups
+mod_bookmarks_links
+mod_bookmarks_settings
+mod_captcha_control
+mod_download_gallery_file_ext
+mod_download_gallery_settings
+mod_droplets
+mod_form_fields
+mod_form_settings
+mod_jsadmin
+mod_menu_link
+mod_mpform_fields
+od_mpform_settings
+mod_news_settings
+mod_output_filter
+mod_section_pick
+mod_topics_settings
+mod_addons
+mod_wbanner_groups
+mod_wbanner_stats
+mod_wrapper
+pages
+search
+sections
+settings
+users
Index: tags/2.8.3/wb/admin/media/MediaWhiteList
===================================================================
--- tags/2.8.3/wb/admin/media/MediaWhiteList	(nonexistent)
+++ tags/2.8.3/wb/admin/media/MediaWhiteList	(revision 1610)
@@ -0,0 +1,33 @@
+mod_addon_file_editor
+mod_bookmarks_groups
+mod_bookmarks_links
+mod_bookmarks_settings
+mod_brax_highslide_images
+mod_brax_highslide_settings
+mod_capslider_groups
+mod_capslider_slide
+mod_captcha_control
+mod_code
+mod_color4code
+mod_download_gallery_files
+mod_download_gallery_settings
+mod_droplets
+mod_form_fields
+mod_form_settings
+mod_form_submissions
+mod_mpform_settings
+mod_mpform_submissions
+mod_news_comments
+mod_news_groups
+mod_news_posts
+mod_news_settings
+mod_output_filter
+mod_section_pick
+mod_topics
+mod_topics_comments
+mod_topics_settings
+mod_addons
+mod_wbanner_banner
+mod_wrapper
+mod_wysiwyg
+mod_wysiwyg_hist
Index: tags/2.8.3/wb/admin/media/resize_img.php
===================================================================
--- tags/2.8.3/wb/admin/media/resize_img.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/resize_img.php	(revision 1610)
@@ -0,0 +1,286 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+	/**
+	 * Image Resizer. 
+	 * @author : Harish Chauhan
+	 * @copyright : Freeware
+	 * About :This PHP script will resize the given image and can show on the fly or save as image file.
+	 *
+	 */
+	
+
+	define("HAR_AUTO_NAME",1);	
+	Class RESIZEIMAGE
+	{
+		var $imgFile="";
+		var $imgWidth=0;
+		var $imgHeight=0;
+		var $imgType="";
+		var $imgAttr="";
+		var $type=NULL;
+		var $_img=NULL;
+		var $_error="";
+		
+		/**
+		 * Constructor
+		 *
+		 * @param [String $imgFile] Image File Name
+		 * @return RESIZEIMAGE (Class Object)
+		 */
+		
+		function RESIZEIMAGE($imgFile="")
+		{
+			if (!function_exists("imagecreate"))
+			{
+				$this->_error="Error: GD Library is not available.";
+				return false;
+			}
+
+			$this->type=Array(1 => 'GIF', 2 => 'JPG', 3 => 'PNG', 4 => 'SWF', 5 => 'PSD', 6 => 'BMP', 7 => 'TIFF', 8 => 'TIFF', 9 => 'JPC', 10 => 'JP2', 11 => 'JPX', 12 => 'JB2', 13 => 'SWC', 14 => 'IFF', 15 => 'WBMP', 16 => 'XBM');
+			if(!empty($imgFile))
+				$this->setImage($imgFile);
+		}
+		/**
+		 * Error occured while resizing the image.
+		 *
+		 * @return String 
+		 */
+		function error()
+		{
+			return $this->_error;
+		}
+		
+		/**
+		 * Set image file name
+		 *
+		 * @param String $imgFile
+		 * @return void
+		 */
+		function setImage($imgFile)
+		{
+			$this->imgFile=$imgFile;
+			return $this->_createImage();
+		}
+		/**
+		 * 
+		 * @return void
+		 */
+		function close()
+		{
+			return @imagedestroy($this->_img);
+		}
+		/**
+		 * Resize a image to given width and height and keep it's current width and height ratio
+		 * 
+		 * @param Number $imgwidth
+		 * @param Numnber $imgheight
+		 * @param String $newfile
+		 */
+		function resize_limitwh($imgwidth,$imgheight,$newfile=NULL)
+		{
+			$image_per = 100;
+			list($width, $height, $type, $attr) = @getimagesize($this->imgFile);
+			if($width > $imgwidth && $imgwidth > 0)
+				$image_per = (double)(($imgwidth * 100) / $width);
+
+			if(floor(($height * $image_per)/100)>$imgheight && $imgheight > 0)
+				$image_per = (double)(($imgheight * 100) / $height);
+
+			$this->resize_percentage($image_per,$newfile);
+
+		}
+		/**
+		 * Resize an image to given percentage.
+		 *
+		 * @param Number $percent
+		 * @param String $newfile
+		 * @return Boolean
+		 */
+		function resize_percentage($percent=100,$newfile=NULL)
+		{
+			$newWidth=($this->imgWidth*$percent)/100;
+			$newHeight=($this->imgHeight*$percent)/100;
+			return $this->resize($newWidth,$newHeight,$newfile);
+		}
+		/**
+		 * Resize an image to given X and Y percentage.
+		 *
+		 * @param Number $xpercent
+		 * @param Number $ypercent
+		 * @param String $newfile
+		 * @return Boolean
+		 */
+		function resize_xypercentage($xpercent=100,$ypercent=100,$newfile=NULL)
+		{
+			$newWidth=($this->imgWidth*$xpercent)/100;
+			$newHeight=($this->imgHeight*$ypercent)/100;
+			return $this->resize($newWidth,$newHeight,$newfile);
+		}
+		
+		/**
+		 * Resize an image to given width and height
+		 *
+		 * @param Number $width
+		 * @param Number $height
+		 * @param String $newfile
+		 * @return Boolean
+		 */
+		function resize($width,$height,$newfile=NULL)
+		{
+			if(empty($this->imgFile))
+			{
+				$this->_error="File name is not initialised.";
+				return false;
+			}
+			if($this->imgWidth<=0 || $this->imgHeight<=0)
+			{
+				$this->_error="Could not resize given image";
+				return false;
+			}
+			if($width<=0)
+				$width=$this->imgWidth;
+			if($height<=0)
+				$height=$this->imgHeight;
+				
+			return $this->_resize($width,$height,$newfile);
+		}
+		
+		/**
+		 * Get the image attributes
+		 * @access Private
+		 * 		
+		 */
+		function _getImageInfo()
+		{
+			@list($this->imgWidth,$this->imgHeight,$type,$this->imgAttr)=@getimagesize($this->imgFile);
+			$this->imgType=$this->type[$type];
+		}
+		
+		/**
+		 * Create the image resource 
+		 * @access Private
+		 * @return Boolean
+		 */
+		function _createImage()
+		{
+			$this->_getImageInfo($this->imgFile);
+			if($this->imgType=='GIF')
+			{
+				$this->_img=@imagecreatefromgif($this->imgFile);
+			}
+			elseif($this->imgType=='JPG')
+			{
+				$this->_img=@imagecreatefromjpeg($this->imgFile);
+			}
+			elseif($this->imgType=='PNG')
+			{
+				$this->_img=@imagecreatefrompng($this->imgFile);
+			}			
+			if(!$this->_img || !@is_resource($this->_img))
+			{
+				$this->_error="Error loading ".$this->imgFile;
+				return false;
+			}
+			return true;
+		}
+		
+		/**
+		 * Function is used to resize the image
+		 * 
+		 * @access Private
+		 * @param Number $width
+		 * @param Number $height
+		 * @param String $newfile
+		 * @return Boolean
+		 */
+		function _resize($width,$height,$newfile=NULL)
+		{
+			if (!function_exists("imagecreate"))
+			{
+				$this->_error="Error: GD Library is not available.";
+				return false;
+			}
+
+			$newimg=@imagecreatetruecolor($width,$height);
+			//imagecolortransparent( $newimg, imagecolorat( $newimg, 0, 0 ) );
+			
+			if($this->imgType=='GIF' || $this->imgType=='PNG')
+			{
+				/** Code to keep transparency of image **/
+				$colorcount = imagecolorstotal($this->_img);
+				if ($colorcount == 0) $colorcount = 256;
+				imagetruecolortopalette($newimg,true,$colorcount);
+				imagepalettecopy($newimg,$this->_img);
+				$transparentcolor = imagecolortransparent($this->_img);
+				imagefill($newimg,0,0,$transparentcolor);
+				imagecolortransparent($newimg,$transparentcolor); 
+			}
+
+			@imagecopyresampled ( $newimg, $this->_img, 0,0,0,0, $width, $height, $this->imgWidth,$this->imgHeight);
+			
+
+
+			if($newfile===HAR_AUTO_NAME)
+			{
+				if(@preg_match("/\..*+$/",@basename($this->imgFile),$matches))
+			   		$newfile=@substr_replace($this->imgFile,"_har",-@strlen($matches[0]),0);			
+			}
+			elseif(!empty($newfile))
+			{
+				if(!@preg_match("/\..*+$/",@basename($newfile)))
+				{
+					if(@preg_match("/\..*+$/",@basename($this->imgFile),$matches))
+					   $newfile=$newfile.$matches[0];
+				}
+			}
+
+			if($this->imgType=='GIF')
+			{
+				if(!empty($newfile))
+					@imagegif($newimg,$newfile);
+				else
+				{
+					@header("Content-type: image/gif");
+					@imagegif($newimg);
+				}
+			}
+			elseif($this->imgType=='JPG')
+			{
+				if(!empty($newfile))
+					@imagejpeg($newimg,$newfile,85);
+				else
+				{
+					@header("Content-type: image/jpeg");
+					@imagejpeg($newimg);
+				}
+			}
+			elseif($this->imgType=='PNG')
+			{
+				if(!empty($newfile))
+					@imagepng($newimg,$newfile);
+				else
+				{
+					@header("Content-type: image/png");
+					@imagepng($newimg);
+				}
+			}
+			@imagedestroy($newimg);
+		}
+	}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/media/resize_img.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/thumb.php
===================================================================
--- tags/2.8.3/wb/admin/media/thumb.php	(nonexistent)
+++ tags/2.8.3/wb/admin/media/thumb.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ */
+
+require('../../config.php');
+include_once('resize_img.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+if (isset($_GET['img']) && isset($_GET['t'])) {
+	$image = addslashes($_GET['img']);
+
+	// Check to see if it contains ..
+	if (!check_media_path($image)) {
+		$admin->print_error($MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH'], WB_URL, false);
+	}
+
+	$type = addslashes($_GET['t']);
+	$media = WB_PATH.MEDIA_DIRECTORY;
+	$img=new RESIZEIMAGE($media.$image);
+	if ($img->imgWidth) {
+		if ($type == 1) {
+			$img->resize_limitwh(50,50);
+		} else if ($type == 2) {
+			$img->resize_limitwh(200,200);
+		} 
+		$img->close();
+	} else {
+		header ("Content-type: image/jpeg");
+		readfile ( "nopreview.jpg" );
+	}
+}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/media/thumb.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/media/overlib.js
===================================================================
--- tags/2.8.3/wb/admin/media/overlib.js	(nonexistent)
+++ tags/2.8.3/wb/admin/media/overlib.js	(revision 1610)
@@ -0,0 +1,1491 @@
+//\/////
+//\  overLIB 4.21 - You may not remove or change this notice.
+//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
+//\
+//\  Contributors are listed on the homepage.
+//\  This file might be old, always check for the latest version at:
+//\  http://www.bosrup.com/web/overlib/
+//\
+//\  Please read the license agreement (available through the link above)
+//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
+//\
+//\  Do not sell this as your own work or remove this copyright notice. 
+//\  For full details on copying or changing this script please read the
+//\  license agreement at the link above. Please give credit on sites that
+//\  use overLIB and submit changes of the script so other people can use
+//\  them as well.
+//   $Revision: 1.119 $                $Date: 2005/07/02 23:41:44 $
+//\/////
+//\mini
+
+////////
+// PRE-INIT
+// Ignore these lines, configuration is below.
+////////
+var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1);
+var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4;
+var olHideForm=0;  // parameter for hiding SELECT and ActiveX elements in IE5.5+ 
+var olHautoFlag = 0;  // flags for over-riding VAUTO and HAUTO if corresponding
+var olVautoFlag = 0;  // positioning commands are used on the command line
+var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array();
+// for plugins
+registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');
+
+////////
+// DEFAULT CONFIGURATION
+// Settings you want everywhere are set here. All of this can also be
+// changed on your html page or through an overLIB call.
+////////
+if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#ffffff";
+if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#cccccc";
+if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000";
+if (typeof ol_capcolor=='undefined') var ol_capcolor="#000000";
+if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF";
+if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica";
+if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica";
+if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica";
+if (typeof ol_textsize=='undefined') var ol_textsize="1";
+if (typeof ol_captionsize=='undefined') var ol_captionsize="1";
+if (typeof ol_closesize=='undefined') var ol_closesize="1";
+if (typeof ol_width=='undefined') var ol_width="200";
+if (typeof ol_border=='undefined') var ol_border="1";
+if (typeof ol_cellpad=='undefined') var ol_cellpad=7;
+if (typeof ol_offsetx=='undefined') var ol_offsetx=10;
+if (typeof ol_offsety=='undefined') var ol_offsety=10;
+if (typeof ol_text=='undefined') var ol_text="";
+if (typeof ol_cap=='undefined') var ol_cap="";
+if (typeof ol_sticky=='undefined') var ol_sticky=0;
+if (typeof ol_background=='undefined') var ol_background="";
+if (typeof ol_close=='undefined') var ol_close="Close";
+if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
+if (typeof ol_status=='undefined') var ol_status="";
+if (typeof ol_autostatus=='undefined') var ol_autostatus=0;
+if (typeof ol_height=='undefined') var ol_height=-1;
+if (typeof ol_snapx=='undefined') var ol_snapx=0;
+if (typeof ol_snapy=='undefined') var ol_snapy=0;
+if (typeof ol_fixx=='undefined') var ol_fixx=-1;
+if (typeof ol_fixy=='undefined') var ol_fixy=-1;
+if (typeof ol_relx=='undefined') var ol_relx=null;
+if (typeof ol_rely=='undefined') var ol_rely=null;
+if (typeof ol_fgbackground=='undefined') var ol_fgbackground="";
+if (typeof ol_bgbackground=='undefined') var ol_bgbackground="";
+if (typeof ol_padxl=='undefined') var ol_padxl=1;
+if (typeof ol_padxr=='undefined') var ol_padxr=1;
+if (typeof ol_padyt=='undefined') var ol_padyt=1;
+if (typeof ol_padyb=='undefined') var ol_padyb=1;
+if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
+if (typeof ol_vpos=='undefined') var ol_vpos=BELOW;
+if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0;
+if (typeof ol_capicon=='undefined') var ol_capicon="";
+if (typeof ol_frame=='undefined') var ol_frame=self;
+if (typeof ol_timeout=='undefined') var ol_timeout=0;
+if (typeof ol_function=='undefined') var ol_function=null;
+if (typeof ol_delay=='undefined') var ol_delay=0;
+if (typeof ol_hauto=='undefined') var ol_hauto=0;
+if (typeof ol_vauto=='undefined') var ol_vauto=0;
+if (typeof ol_closeclick=='undefined') var ol_closeclick=0;
+if (typeof ol_wrap=='undefined') var ol_wrap=0;
+if (typeof ol_followmouse=='undefined') var ol_followmouse=1;
+if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0;
+if (typeof ol_closetitle=='undefined') var ol_closetitle='Close';
+if (typeof ol_compatmode=='undefined') var ol_compatmode=0;
+if (typeof ol_css=='undefined') var ol_css=CSSOFF;
+if (typeof ol_fgclass=='undefined') var ol_fgclass="";
+if (typeof ol_bgclass=='undefined') var ol_bgclass="";
+if (typeof ol_textfontclass=='undefined') var ol_textfontclass="";
+if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass="";
+if (typeof ol_closefontclass=='undefined') var ol_closefontclass="";
+
+////////
+// ARRAY CONFIGURATION
+////////
+
+// You can use these arrays to store popup text here instead of in the html.
+if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1");
+if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1");
+
+////////
+// END OF CONFIGURATION
+// Don't change anything below this line, all configuration is above.
+////////
+
+
+
+
+
+////////
+// INIT
+////////
+// Runtime variables init. Don't change for config!
+var o3_text="";
+var o3_cap="";
+var o3_sticky=0;
+var o3_background="";
+var o3_close="Close";
+var o3_hpos=RIGHT;
+var o3_offsetx=2;
+var o3_offsety=2;
+var o3_fgcolor="";
+var o3_bgcolor="";
+var o3_textcolor="";
+var o3_capcolor="";
+var o3_closecolor="";
+var o3_width=100;
+var o3_border=1;
+var o3_cellpad=2;
+var o3_status="";
+var o3_autostatus=0;
+var o3_height=-1;
+var o3_snapx=0;
+var o3_snapy=0;
+var o3_fixx=-1;
+var o3_fixy=-1;
+var o3_relx=null;
+var o3_rely=null;
+var o3_fgbackground="";
+var o3_bgbackground="";
+var o3_padxl=0;
+var o3_padxr=0;
+var o3_padyt=0;
+var o3_padyb=0;
+var o3_fullhtml=0;
+var o3_vpos=BELOW;
+var o3_aboveheight=0;
+var o3_capicon="";
+var o3_textfont="Verdana,Arial,Helvetica";
+var o3_captionfont="Verdana,Arial,Helvetica";
+var o3_closefont="Verdana,Arial,Helvetica";
+var o3_textsize="1";
+var o3_captionsize="1";
+var o3_closesize="1";
+var o3_frame=self;
+var o3_timeout=0;
+var o3_timerid=0;
+var o3_allowmove=0;
+var o3_function=null; 
+var o3_delay=0;
+var o3_delayid=0;
+var o3_hauto=0;
+var o3_vauto=0;
+var o3_closeclick=0;
+var o3_wrap=0;
+var o3_followmouse=1;
+var o3_mouseoff=0;
+var o3_closetitle='';
+var o3_compatmode=0;
+var o3_css=CSSOFF;
+var o3_fgclass="";
+var o3_bgclass="";
+var o3_textfontclass="";
+var o3_captionfontclass="";
+var o3_closefontclass="";
+
+// Display state variables
+var o3_x = 0;
+var o3_y = 0;
+var o3_showingsticky = 0;
+var o3_removecounter = 0;
+
+// Our layer
+var over = null;
+var fnRef, hoveringSwitch = false;
+var olHideDelay;
+
+// Decide browser version
+var isMac = (navigator.userAgent.indexOf("Mac") != -1);
+var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
+var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
+var olNs6 = (document.getElementById) ? true : false;
+var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
+var olIe4 = (document.all) ? true : false;
+var olIe5 = false; 
+var olIe55 = false; // Added additional variable to identify IE5.5+
+var docRoot = 'document.body';
+
+// Resize fix for NS4.x to keep track of layer
+if (olNs4) {
+	var oW = window.innerWidth;
+	var oH = window.innerHeight;
+	window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); }
+}
+
+// Microsoft Stupidity Check(tm).
+if (olIe4) {
+	var agent = navigator.userAgent;
+	if (/MSIE/.test(agent)) {
+		var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
+		if (versNum >= 5){
+			olIe5=true;
+			olIe55=(versNum>=5.5&&!olOp) ? true : false;
+			if (olNs6) olNs6=false;
+		}
+	}
+	if (olNs6) olIe4 = false;
+}
+
+// Check for compatability mode.
+if (document.compatMode && document.compatMode == 'CSS1Compat') {
+	docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
+}
+
+// Add window onload handlers to indicate when all modules have been loaded
+// For Netscape 6+ and Mozilla, uses addEventListener method on the window object
+// For IE it uses the attachEvent method of the window object and for Netscape 4.x
+// it sets the window.onload handler to the OLonload_handler function for Bubbling
+if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
+else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);
+
+var capExtent;
+
+////////
+// PUBLIC FUNCTIONS
+////////
+
+// overlib(arg0,...,argN)
+// Loads parameters into global runtime variables.
+function overlib() {
+	if (!olLoaded || isExclusive(overlib.arguments)) return true;
+	if (olCheckMouseCapture) olMouseCapture();
+	if (over) {
+		over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over;
+		cClick();
+	}
+
+	// Load defaults to runtime.
+  olHideDelay=0;
+	o3_text=ol_text;
+	o3_cap=ol_cap;
+	o3_sticky=ol_sticky;
+	o3_background=ol_background;
+	o3_close=ol_close;
+	o3_hpos=ol_hpos;
+	o3_offsetx=ol_offsetx;
+	o3_offsety=ol_offsety;
+	o3_fgcolor=ol_fgcolor;
+	o3_bgcolor=ol_bgcolor;
+	o3_textcolor=ol_textcolor;
+	o3_capcolor=ol_capcolor;
+	o3_closecolor=ol_closecolor;
+	o3_width=ol_width;
+	o3_border=ol_border;
+	o3_cellpad=ol_cellpad;
+	o3_status=ol_status;
+	o3_autostatus=ol_autostatus;
+	o3_height=ol_height;
+	o3_snapx=ol_snapx;
+	o3_snapy=ol_snapy;
+	o3_fixx=ol_fixx;
+	o3_fixy=ol_fixy;
+	o3_relx=ol_relx;
+	o3_rely=ol_rely;
+	o3_fgbackground=ol_fgbackground;
+	o3_bgbackground=ol_bgbackground;
+	o3_padxl=ol_padxl;
+	o3_padxr=ol_padxr;
+	o3_padyt=ol_padyt;
+	o3_padyb=ol_padyb;
+	o3_fullhtml=ol_fullhtml;
+	o3_vpos=ol_vpos;
+	o3_aboveheight=ol_aboveheight;
+	o3_capicon=ol_capicon;
+	o3_textfont=ol_textfont;
+	o3_captionfont=ol_captionfont;
+	o3_closefont=ol_closefont;
+	o3_textsize=ol_textsize;
+	o3_captionsize=ol_captionsize;
+	o3_closesize=ol_closesize;
+	o3_timeout=ol_timeout;
+	o3_function=ol_function;
+	o3_delay=ol_delay;
+	o3_hauto=ol_hauto;
+	o3_vauto=ol_vauto;
+	o3_closeclick=ol_closeclick;
+	o3_wrap=ol_wrap;	
+	o3_followmouse=ol_followmouse;
+	o3_mouseoff=ol_mouseoff;
+	o3_closetitle=ol_closetitle;
+	o3_css=ol_css;
+	o3_compatmode=ol_compatmode;
+	o3_fgclass=ol_fgclass;
+	o3_bgclass=ol_bgclass;
+	o3_textfontclass=ol_textfontclass;
+	o3_captionfontclass=ol_captionfontclass;
+	o3_closefontclass=ol_closefontclass;
+	
+	setRunTimeVariables();
+	
+	fnRef = '';
+	
+	// Special for frame support, over must be reset...
+	o3_frame = ol_frame;
+	
+	if(!(over=createDivContainer())) return false;
+
+	parseTokens('o3_', overlib.arguments);
+	if (!postParseChecks()) return false;
+
+	if (o3_delay == 0) {
+		return runHook("olMain", FREPLACE);
+ 	} else {
+		o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay);
+		return false;
+	}
+}
+
+// Clears popups if appropriate
+function nd(time) {
+	if (olLoaded && !isExclusive()) {
+		hideDelay(time);  // delay popup close if time specified
+
+		if (o3_removecounter >= 1) { o3_showingsticky = 0 };
+		
+		if (o3_showingsticky == 0) {
+			o3_allowmove = 0;
+			if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over);
+		} else {
+			o3_removecounter++;
+		}
+	}
+	
+	return true;
+}
+
+// The Close onMouseOver function for stickies
+function cClick() {
+	if (olLoaded) {
+		runHook("hideObject", FREPLACE, over);
+		o3_showingsticky = 0;	
+	}	
+	return false;
+}
+
+// Method for setting page specific defaults.
+function overlib_pagedefaults() {
+	parseTokens('ol_', overlib_pagedefaults.arguments);
+}
+
+
+////////
+// OVERLIB MAIN FUNCTION
+////////
+
+// This function decides what it is we want to display and how we want it done.
+function olMain() {
+	var layerhtml, styleType;
+ 	runHook("olMain", FBEFORE);
+ 	
+	if (o3_background!="" || o3_fullhtml) {
+		// Use background instead of box.
+		layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml);
+	} else {
+		// They want a popup box.
+		styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass");
+
+		// Prepare popup background
+		if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\"";
+		if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground);
+
+		// Prepare popup colors
+		if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor);
+		if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor);
+
+		// Prepare popup height
+		if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height);
+		else o3_height = "";
+
+		// Decide which kinda box.
+		if (o3_cap=="") {
+			// Plain
+			layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text);
+		} else {
+			// With caption
+			if (o3_sticky) {
+				// Show close text
+				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close);
+			} else {
+				// No close text
+				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, "");
+			}
+		}
+	}	
+
+	// We want it to stick!
+	if (o3_sticky) {
+		if (o3_timerid > 0) {
+			clearTimeout(o3_timerid);
+			o3_timerid = 0;
+		}
+		o3_showingsticky = 1;
+		o3_removecounter = 0;
+	}
+
+	// Created a separate routine to generate the popup to make it easier
+	// to implement a plugin capability
+	if (!runHook("createPopup", FREPLACE, layerhtml)) return false;
+
+	// Prepare status bar
+	if (o3_autostatus > 0) {
+		o3_status = o3_text;
+		if (o3_autostatus > 1) o3_status = o3_cap;
+	}
+
+	// When placing the layer the first time, even stickies may be moved.
+	o3_allowmove = 0;
+
+	// Initiate a timer for timeout
+	if (o3_timeout > 0) {          
+		if (o3_timerid > 0) clearTimeout(o3_timerid);
+		o3_timerid = setTimeout("cClick()", o3_timeout);
+	}
+
+	// Show layer
+	runHook("disp", FREPLACE, o3_status);
+	runHook("olMain", FAFTER);
+
+	return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != '');
+}
+
+////////
+// LAYER GENERATION FUNCTIONS
+////////
+// These functions just handle popup content with tags that should adhere to the W3C standards specification.
+
+// Makes simple table without caption
+function ol_content_simple(text) {
+	var cpIsMultiple = /,/.test(o3_cellpad);
+	var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';
+
+	set_background("");
+	return txt;
+}
+
+// Makes table with caption and optional close link
+function ol_content_caption(text,title,close) {
+	var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad);
+	var closing, closeevent;
+
+	closing = "";
+	closeevent = "onmouseover";
+	if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick";
+	if (o3_capicon != "") {
+	  nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"';
+	  if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
+	  o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
+	}
+
+	if (close != "")
+		closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>';
+	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';
+
+	set_background("");
+	return txt;
+}
+
+// Sets the background picture,padding and lots more. :)
+function ol_content_background(text,picture,hasfullhtml) {
+	if (hasfullhtml) {
+		txt=text;
+	} else {
+		txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';
+	}
+
+	set_background(picture);
+	return txt;
+}
+
+// Loads a picture into the div.
+function set_background(pic) {
+	if (pic == "") {
+		if (olNs4) {
+			over.background.src = null; 
+		} else if (over.style) {
+			over.style.backgroundImage = "none";
+		}
+	} else {
+		if (olNs4) {
+			over.background.src = pic;
+		} else if (over.style) {
+			over.style.width=o3_width + 'px';
+			over.style.backgroundImage = "url("+pic+")";
+		}
+	}
+}
+
+////////
+// HANDLING FUNCTIONS
+////////
+var olShowId=-1;
+
+// Displays the popup
+function disp(statustext) {
+	runHook("disp", FBEFORE);
+	
+	if (o3_allowmove == 0) {
+		runHook("placeLayer", FREPLACE);
+		(olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
+		o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1;
+	}
+	
+	runHook("disp", FAFTER);
+
+	if (statustext != "") self.status = statustext;
+}
+
+// Creates the actual popup structure
+function createPopup(lyrContent){
+	runHook("createPopup", FBEFORE);
+	
+	if (o3_wrap) {
+		var wd,ww,theObj = (olNs4 ? over : over.style);
+		theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
+		layerWrite(lyrContent);
+		wd = (olNs4 ? over.clip.width : over.offsetWidth);
+		if (wd > (ww=windowWidth())) {
+			lyrContent=lyrContent.replace(/\&nbsp;/g, ' ');
+			o3_width=ww;
+			o3_wrap=0;
+		} 
+	}
+
+	layerWrite(lyrContent);
+	
+	// Have to set o3_width for placeLayer() routine if o3_wrap is turned on
+	if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth);
+	
+	runHook("createPopup", FAFTER, lyrContent);
+
+	return true;
+}
+
+// Decides where we want the popup.
+function placeLayer() {
+	var placeX, placeY, widthFix = 0;
+	
+	// HORIZONTAL PLACEMENT, re-arranged to work in Safari
+	if (o3_frame.innerWidth) widthFix=18; 
+	iwidth = windowWidth();
+
+	// Horizontal scroll offset
+	winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;
+
+	placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);
+
+	// VERTICAL PLACEMENT, re-arranged to work in Safari
+	if (o3_frame.innerHeight) {
+		iheight=o3_frame.innerHeight;
+	} else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { 
+		iheight=eval('o3_frame.'+docRoot+'.clientHeight');
+	}			
+
+	// Vertical scroll offset
+	scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
+	placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);
+
+	// Actually move the object.
+	repositionTo(over, placeX, placeY);
+}
+
+// Moves the layer
+function olMouseMove(e) {
+	var e = (e) ? e : event;
+
+	if (e.pageX) {
+		o3_x = e.pageX;
+		o3_y = e.pageY;
+	} else if (e.clientX) {
+		o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
+		o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
+	}
+	
+	if (o3_allowmove == 1) runHook("placeLayer", FREPLACE);
+
+	// MouseOut handler
+	if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
+		(olHideDelay ? hideDelay(olHideDelay) : cClick());
+		hoveringSwitch = !hoveringSwitch;
+	}
+}
+
+// Fake function for 3.0 users.
+function no_overlib() { return ver3fix; }
+
+// Capture the mouse and chain other scripts.
+function olMouseCapture() {
+	capExtent = document;
+	var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove;
+	var re = /function[ ]*(\w*)\(/;
+	
+	wMv = (!olIe4 && window.onmousemove);
+	if (document.onmousemove || wMv) {
+		if (wMv) capExtent = window;
+		f = capExtent.onmousemove.toString();
+		fN = f.match(re);
+		if (fN == null) {
+			str = f+'(e); ';
+		} else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) {
+			if (!olOp && wMv) {
+				l = f.indexOf('{')+1;
+				k = f.lastIndexOf('}');
+				sS = f.substring(l,k);
+				if ((l = sS.indexOf('(')) != -1) {
+					sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
+					if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null;
+					else str = sS + '(e);';
+				}
+			}
+			if (!str) {
+				olCheckMouseCapture = false;
+				return;
+			}
+		} else {
+			if (fN[1]) str = fN[1]+'(e); ';
+			else {
+				l = f.indexOf('{')+1;
+				k = f.lastIndexOf('}');
+				str = f.substring(l,k) + '\n';
+			}
+		}
+		str += 'olMouseMove(e); ';
+		mseHandler = new Function('e', str);
+	}
+
+	capExtent.onmousemove = mseHandler;
+	if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
+}
+
+////////
+// PARSING FUNCTIONS
+////////
+
+// Does the actual command parsing.
+function parseTokens(pf, ar) {
+	// What the next argument is expected to be.
+	var v, i, mode=-1, par = (pf != 'ol_');	
+	var fnMark = (par && !ar.length ? 1 : 0);
+
+	for (i = 0; i < ar.length; i++) {
+		if (mode < 0) {
+			// Arg is maintext,unless its a number between pmStart and pmUpper
+			// then its a command.
+			if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
+				fnMark = (par ? 1 : 0);
+				i--;   // backup one so that the next block can parse it
+			} else {
+				switch(pf) {
+					case 'ol_':
+						ol_text = ar[i].toString();
+						break;
+					default:
+						o3_text=ar[i].toString();  
+				}
+			}
+			mode = 0;
+		} else {
+			// Note: NS4 doesn't like switch cases with vars.
+			if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; }
+			if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; }
+			if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; }
+			if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; }
+			if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; }
+			if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; }
+			if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; }
+			if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; }
+			if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; }
+			if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; }
+			if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
+			if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; }
+			if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
+			if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; }
+			if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; }
+			if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again.
+			if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; }
+			if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; }
+			if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; }
+			if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; }
+			if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; }
+			if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; }
+			if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; }
+			if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; }
+			if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; }
+			if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; }
+			if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; }
+			if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; }
+			if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i];  opt_FUNCTION(v); } continue; }
+			if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; }
+			if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; }
+			if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; }
+			if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; }
+			if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; }
+			if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; }
+			if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; }
+			if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; }
+			if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; }
+			if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; }
+			if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; }
+			if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; }
+			i = parseCmdLine(pf, i, ar);
+		}
+	}
+
+	if (fnMark && o3_function) o3_text = o3_function();
+	
+	if ((pf == 'o3_') && o3_wrap) {
+		o3_width = 0;
+		
+		var tReg=/<.*\n*>/ig;
+		if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, '&nbsp;');
+		if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, '&nbsp;');
+	}
+	if ((pf == 'o3_') && o3_sticky) {
+		if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close;
+		if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' ');
+	}
+}
+
+
+////////
+// LAYER FUNCTIONS
+////////
+
+// Writes to a layer
+function layerWrite(txt) {
+	txt += "\n";
+	if (olNs4) {
+		var lyr = o3_frame.document.layers['overDiv'].document
+		lyr.write(txt)
+		lyr.close()
+	} else if (typeof over.innerHTML != 'undefined') {
+		if (olIe5 && isMac) over.innerHTML = '';
+		over.innerHTML = txt;
+	} else {
+		range = o3_frame.document.createRange();
+		range.setStartAfter(over);
+		domfrag = range.createContextualFragment(txt);
+		
+		while (over.hasChildNodes()) {
+			over.removeChild(over.lastChild);
+		}
+		
+		over.appendChild(domfrag);
+	}
+}
+
+// Make an object visible
+function showObject(obj) {
+	runHook("showObject", FBEFORE);
+
+	var theObj=(olNs4 ? obj : obj.style);
+	theObj.visibility = 'visible';
+
+	runHook("showObject", FAFTER);
+}
+
+// Hides an object
+function hideObject(obj) {
+	runHook("hideObject", FBEFORE);
+
+	var theObj=(olNs4 ? obj : obj.style);
+	if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; }
+	theObj.visibility = 'hidden';
+	theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
+
+	if (o3_timerid > 0) clearTimeout(o3_timerid);
+	if (o3_delayid > 0) clearTimeout(o3_delayid);
+
+	o3_timerid = 0;
+	o3_delayid = 0;
+	self.status = "";
+
+	if (obj.onmouseout||obj.onmouseover) {
+		if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
+		obj.onmouseout = obj.onmouseover = null;
+	}
+
+	runHook("hideObject", FAFTER);
+}
+
+// Move a layer
+function repositionTo(obj, xL, yL) {
+	var theObj=(olNs4 ? obj : obj.style);
+	theObj.left = xL + (!olNs4 ? 'px' : 0);
+	theObj.top = yL + (!olNs4 ? 'px' : 0);
+}
+
+// Check position of cursor relative to overDiv DIVision; mouseOut function
+function cursorOff() {
+	var left = parseInt(over.style.left);
+	var top = parseInt(over.style.top);
+	var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width));
+	var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight);
+
+	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;
+
+	return false;
+}
+
+
+////////
+// COMMAND FUNCTIONS
+////////
+
+// Calls callme or the default function.
+function opt_FUNCTION(callme) {
+	o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function'));
+
+	return 0;
+}
+
+// Handle hovering
+function opt_NOCLOSE(unused) {
+	if (!unused) o3_close = "";
+
+	if (olNs4) {
+		over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
+		over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } }
+		over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); }
+	} else {
+		over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } }
+	}
+
+	return 0;
+}
+
+// Function to scan command line arguments for multiples
+function opt_MULTIPLEARGS(i, args, parameter) {
+  var k=i, re, pV, str='';
+
+  for(k=i; k<args.length; k++) {
+		if(typeof args[k] == 'number' && args[k]>pmStart) break;
+		str += args[k] + ',';
+	}
+	if (str) str = str.substring(0,--str.length);
+
+	k--;  // reduce by one so the for loop this is in works correctly
+	pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
+	eval(parameter + '="' + pV + '"');
+
+	return k;
+}
+
+// Remove &nbsp; in texts when done.
+function nbspCleanup() {
+	if (o3_wrap) {
+		o3_text = o3_text.replace(/\&nbsp;/g, ' ');
+		o3_cap = o3_cap.replace(/\&nbsp;/g, ' ');
+	}
+}
+
+// Escape embedded single quotes in text strings
+function escSglQuote(str) {
+  return str.toString().replace(/'/g,"\\'");
+}
+
+// Onload handler for window onload event
+function OLonLoad_handler(e) {
+	var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;
+
+	if(!olLoaded) olLoaded=1;
+
+  // Remove it for Gecko based browsers
+	if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
+	else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick()
+		window.detachEvent("onload",OLonLoad_handler);
+		var fN = document.body.getAttribute('onload');
+		if (fN) {
+			fN=fN.toString().match(re);
+			if (fN && fN.length) {
+				for (i=0; i<fN.length; i++) {
+					if (/anonymous/.test(fN[i])) continue;
+					while((l=fN[i].search(/\)[;\s]+/)) != -1) {
+						fn=fN[i].substring(0,l+1);
+						fN[i] = fN[i].substring(l+2);
+						if (olre.test(fn)) eval(fn);
+					}
+				}
+			}
+		}
+	}
+}
+
+// Wraps strings in Layer Generation Functions with the correct tags
+//    endWrap true(if end tag) or false if start tag
+//    fontSizeStr - font size string such as '1' or '10px'
+//    whichString is being wrapped -- 'text', 'caption', or 'close'
+function wrapStr(endWrap,fontSizeStr,whichString) {
+	var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr);
+	fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
+	if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>';
+	else {
+		fontStr='o3_'+whichString+'font';
+		fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color';
+		return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">';
+	}
+}
+
+// Quotes Multi word font names; needed for CSS Standards adherence in font-family
+function quoteMultiNameFonts(theFont) {
+	var v, pM=theFont.split(',');
+	for (var i=0; i<pM.length; i++) {
+		v=pM[i];
+		v=v.replace(/^\s+/,'').replace(/\s+$/,'');
+		if(/\s/.test(v) && !/['"]/.test(v)) {
+			v="\'"+v+"\'";
+			pM[i]=v;
+		}
+	}
+	return pM.join();
+}
+
+// dummy function which will be overridden 
+function isExclusive(args) {
+	return false;
+}
+
+// Sets cellpadding style string value
+function setCellPadStr(parameter) {
+	var Str='', j=0, ary = new Array(), top, bottom, left, right;
+
+	Str+='padding: ';
+	ary=parameter.replace(/\s+/g,'').split(',');
+
+	switch(ary.length) {
+		case 2:
+			top=bottom=ary[j];
+			left=right=ary[++j];
+			break;
+		case 3:
+			top=ary[j];
+			left=right=ary[++j];
+			bottom=ary[++j];
+			break;
+		case 4:
+			top=ary[j];
+			right=ary[++j];
+			bottom=ary[++j];
+			left=ary[++j];
+			break;
+	}
+
+	Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;');
+
+	return Str;
+}
+
+// function will delay close by time milliseconds
+function hideDelay(time) {
+	if (time&&!o3_delay) {
+		if (o3_timerid > 0) clearTimeout(o3_timerid);
+
+		o3_timerid=setTimeout("cClick()",(o3_timeout=time));
+	}
+}
+
+// Was originally in the placeLayer() routine; separated out for future ease
+function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
+	var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
+	var parsedWidth = parseInt(o3_width);
+
+	if (o3_fixx > -1 || o3_relx != null) {
+		// Fixed position
+		placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
+	} else {  
+		// If HAUTO, decide what to use.
+		if (o3_hauto == 1) {
+			if ((o3_x - winoffset) > (iwidth / 2)) {
+				o3_hpos = LEFT;
+			} else {
+				o3_hpos = RIGHT;
+			}
+		}  		
+
+		// From mouse
+		if (o3_hpos == CENTER) { // Center
+			placeX = o3_x+o3_offsetx-(parsedWidth/2);
+
+			if (placeX < winoffset) placeX = winoffset;
+		}
+
+		if (o3_hpos == RIGHT) { // Right
+			placeX = o3_x+o3_offsetx;
+
+			if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
+				placeX = iwidth+winoffset - parsedWidth - widthFix;
+				if (placeX < 0) placeX = 0;
+			}
+		}
+		if (o3_hpos == LEFT) { // Left
+			placeX = o3_x-o3_offsetx-parsedWidth;
+			if (placeX < winoffset) placeX = winoffset;
+		}  	
+
+		// Snapping!
+		if (o3_snapx > 1) {
+			var snapping = placeX % o3_snapx;
+
+			if (o3_hpos == LEFT) {
+				placeX = placeX - (o3_snapx+snapping);
+			} else {
+				// CENTER and RIGHT
+				placeX = placeX+(o3_snapx - snapping);
+			}
+
+			if (placeX < winoffset) placeX = winoffset;
+		}
+	}	
+
+	return placeX;
+}
+
+// was originally in the placeLayer() routine; separated out for future ease
+function verticalPlacement(browserHeight,verticalScrollAmount) {
+	var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
+	var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));
+
+	if (o3_fixy > -1 || o3_rely != null) {
+		// Fixed position
+		placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy);
+	} else {
+		// If VAUTO, decide what to use.
+		if (o3_vauto == 1) {
+			if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
+				o3_vpos = ABOVE;
+			} else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) {
+				o3_vpos = BELOW;
+			}
+		}
+
+		// From mouse
+		if (o3_vpos == ABOVE) {
+			if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; 
+
+			placeY = o3_y - (o3_aboveheight+o3_offsety);
+			if (placeY < scrolloffset) placeY = scrolloffset;
+		} else {
+			// BELOW
+			placeY = o3_y+o3_offsety;
+		} 
+
+		// Snapping!
+		if (o3_snapy > 1) {
+			var snapping = placeY % o3_snapy;  			
+
+			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
+				placeY = placeY - (o3_snapy+snapping);
+			} else {
+				placeY = placeY+(o3_snapy - snapping);
+			} 			
+
+			if (placeY < scrolloffset) placeY = scrolloffset;
+		}
+	}
+
+	return placeY;
+}
+
+// checks positioning flags
+function checkPositionFlags() {
+	if (olHautoFlag) olHautoFlag = o3_hauto=0;
+	if (olVautoFlag) olVautoFlag = o3_vauto=0;
+	return true;
+}
+
+// get Browser window width
+function windowWidth() {
+	var w;
+	if (o3_frame.innerWidth) w=o3_frame.innerWidth;
+	else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) 
+		w=eval('o3_frame.'+docRoot+'.clientWidth');
+	return w;			
+}
+
+// create the div container for popup content if it doesn't exist
+function createDivContainer(id,frm,zValue) {
+	id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000);
+	var objRef, divContainer = layerReference(id);
+
+	if (divContainer == null) {
+		if (olNs4) {
+			divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm);
+			objRef = divContainer;
+		} else {
+			var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
+			if (olIe4&&!document.getElementById) {
+				body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
+				divContainer=layerReference(id);
+			} else {
+				divContainer = frm.document.createElement("DIV");
+				divContainer.id = id;
+				body.appendChild(divContainer);
+			}
+			objRef = divContainer.style;
+		}
+
+		objRef.position = 'absolute';
+		objRef.visibility = 'hidden';
+		objRef.zIndex = zValue;
+		if (olIe4&&!olOp) objRef.left = objRef.top = '0px';
+		else objRef.left = objRef.top =  -10000 + (!olNs4 ? 'px' : 0);
+	}
+
+	return divContainer;
+}
+
+// get reference to a layer with ID=id
+function layerReference(id) {
+	return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
+}
+////////
+//  UTILITY FUNCTIONS
+////////
+
+// Checks if something is a function.
+function isFunction(fnRef) {
+	var rtn = true;
+
+	if (typeof fnRef == 'object') {
+		for (var i = 0; i < fnRef.length; i++) {
+			if (typeof fnRef[i]=='function') continue;
+			rtn = false;
+			break;
+		}
+	} else if (typeof fnRef != 'function') {
+		rtn = false;
+	}
+	
+	return rtn;
+}
+
+// Converts an array into an argument string for use in eval.
+function argToString(array, strtInd, argName) {
+	var jS = strtInd, aS = '', ar = array;
+	argName=(argName ? argName : 'ar');
+	
+	if (ar.length > jS) {
+		for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
+		aS = aS.substring(0, aS.length-2);
+	}
+	
+	return aS;
+}
+
+// Places a hook in the correct position in a hook point.
+function reOrder(hookPt, fnRef, order) {
+	var newPt = new Array(), match, i, j;
+
+	if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt;
+	
+	if (typeof order=='function') {
+		if (typeof fnRef=='object') {
+			newPt = newPt.concat(fnRef);
+		} else {
+			newPt[newPt.length++]=fnRef;
+		}
+		
+		for (i = 0; i < hookPt.length; i++) {
+			match = false;
+			if (typeof fnRef == 'function' && hookPt[i] == fnRef) {
+				continue;
+			} else {
+				for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++] = hookPt[i];
+		}
+
+		newPt[newPt.length++] = order;
+
+	} else if (typeof order == 'object') {
+		if (typeof fnRef == 'object') {
+			newPt = newPt.concat(fnRef);
+		} else {
+			newPt[newPt.length++] = fnRef;
+		}
+		
+		for (j = 0; j < hookPt.length; j++) {
+			match = false;
+			if (typeof fnRef == 'function' && hookPt[j] == fnRef) {
+				continue;
+			} else {
+				for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++]=hookPt[j];
+		}
+
+		for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i];
+		newPt.length = 0;
+		
+		for (j = 0; j < hookPt.length; j++) {
+			match = false;
+			for (i = 0; i < order.length; i++) {
+				if (hookPt[j] == order[i]) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) newPt[newPt.length++] = hookPt[j];
+		}
+		newPt = newPt.concat(order);
+	}
+
+	hookPt = newPt;
+
+	return hookPt;
+}
+
+////////
+//  PLUGIN ACTIVATION FUNCTIONS
+////////
+
+// Runs plugin functions to set runtime variables.
+function setRunTimeVariables(){
+	if (typeof runTime != 'undefined' && runTime.length) {
+		for (var k = 0; k < runTime.length; k++) {
+			runTime[k]();
+		}
+	}
+}
+
+// Runs plugin functions to parse commands.
+function parseCmdLine(pf, i, args) {
+	if (typeof cmdLine != 'undefined' && cmdLine.length) { 
+		for (var k = 0; k < cmdLine.length; k++) { 
+			var j = cmdLine[k](pf, i, args);
+			if (j >- 1) {
+				i = j;
+				break;
+			}
+		}
+	}
+
+	return i;
+}
+
+// Runs plugin functions to do things after parse.
+function postParseChecks(pf,args){
+	if (typeof postParse != 'undefined' && postParse.length) {
+		for (var k = 0; k < postParse.length; k++) {
+			if (postParse[k](pf,args)) continue;
+			return false;  // end now since have an error
+		}
+	}
+	return true;
+}
+
+
+////////
+//  PLUGIN REGISTRATION FUNCTIONS
+////////
+
+// Registers commands and creates constants.
+function registerCommands(cmdStr) {
+	if (typeof cmdStr!='string') return;
+
+	var pM = cmdStr.split(',');
+	pms = pms.concat(pM);
+
+	for (var i = 0; i< pM.length; i++) {
+		eval(pM[i].toUpperCase()+'='+pmCount++);
+	}
+}
+
+// Registers no-parameter commands
+function registerNoParameterCommands(cmdStr) {
+	if (!cmdStr && typeof cmdStr != 'string') return;
+	pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr;
+}
+
+// Register a function to hook at a certain point.
+function registerHook(fnHookTo, fnRef, hookType, optPm) {
+	var hookPt, last = typeof optPm;
+	
+	if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return;
+	if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();
+
+	hookPt = hookPts[fnHookTo];
+
+	if (hookType != null) {
+		if (hookType == FREPLACE) {
+			hookPt.ovload = fnRef;  // replace normal overlib routine
+			if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; 
+
+		} else if (hookType == FBEFORE || hookType == FAFTER) {
+			var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);
+
+			if (typeof fnRef == 'object') {
+				hookPt = hookPt.concat(fnRef);
+			} else {
+				hookPt[hookPt.length++] = fnRef;
+			}
+
+			if (optPm) hookPt = reOrder(hookPt, fnRef, optPm);
+
+		} else if (hookType == FALTERNATE) {
+			if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
+		} else if (hookType == FCHAIN) {
+			hookPt = hookPt.chain; 
+			if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions 
+			else hookPt[hookPt.length++]=fnRef;
+		}
+
+		return;
+	}
+}
+
+// Register a function that will set runtime variables.
+function registerRunTimeFunction(fn) {
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			runTime = runTime.concat(fn);
+		} else {
+			runTime[runTime.length++] = fn;
+		}
+	}
+}
+
+// Register a function that will handle command parsing.
+function registerCmdLineFunction(fn){
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			cmdLine = cmdLine.concat(fn);
+		} else {
+			cmdLine[cmdLine.length++] = fn;
+		}
+	}
+}
+
+// Register a function that does things after command parsing. 
+function registerPostParseFunction(fn){
+	if (isFunction(fn)) {
+		if (typeof fn == 'object') {
+			postParse = postParse.concat(fn);
+		} else {
+			postParse[postParse.length++] = fn;
+		}
+	}
+}
+
+////////
+//  PLUGIN REGISTRATION FUNCTIONS
+////////
+
+// Runs any hooks registered.
+function runHook(fnHookTo, hookType) {
+	var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments;
+
+	if (hookType == FREPLACE) {
+		arS = argToString(ar, 2);
+
+		if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')');
+		else rtnVal = eval('l('+arS+')');
+
+	} else if (hookType == FBEFORE || hookType == FAFTER) {
+		if (typeof l != 'undefined') {
+			l=(hookType == 1 ? l.before : l.after);
+	
+			if (l.length) {
+				arS = argToString(ar, 2);
+				for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')');
+			}
+		}
+	} else if (hookType == FALTERNATE) {
+		optPm = ar[2];
+		arS = argToString(ar, 3);
+
+		if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
+			rtnVal = eval(fnHookTo+'('+arS+')');
+		} else {
+			rtnVal = eval('l('+arS+')');
+		}
+	} else if (hookType == FCHAIN) {
+		arS=argToString(ar,2);
+		l=l.chain;
+
+		for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break;
+	}
+
+	return rtnVal;
+}
+
+////////
+// OBJECT CONSTRUCTORS
+////////
+
+// Object for handling hooks.
+function FunctionReference() {
+	this.ovload = null;
+	this.before = new Array();
+	this.after = new Array();
+	this.alt = new Array();
+	this.chain = new Array();
+}
+
+// Object for simple access to the overLIB version used.
+// Examples: simpleversion:351 major:3 minor:5 revision:1
+function Info(version, prerelease) {
+	this.version = version;
+	this.prerelease = prerelease;
+
+	this.simpleversion = Math.round(this.version*100);
+	this.major = parseInt(this.simpleversion / 100);
+	this.minor = parseInt(this.simpleversion / 10) - this.major * 10;
+	this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10;
+	this.meets = meets;
+}
+
+// checks for Core Version required
+function meets(reqdVersion) {
+	return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion));
+}
+
+
+////////
+// STANDARD REGISTRATIONS
+////////
+registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF);
+registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF);
+registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF);
+registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS);
+registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS);
+registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS);
+registerPostParseFunction(checkPositionFlags);
+registerHook("hideObject", nbspCleanup, FAFTER);
+registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
+registerHook("verticalPlacement", verticalPlacement, FCHAIN);
+if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;
+registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
+///////
+// ESTABLISH MOUSECAPTURING
+///////
+
+// Capture events, alt. diffuses the overlib function.
+var olCheckMouseCapture=true;
+if ((olNs4 || olNs6 || olIe4)) {
+	olMouseCapture();
+} else {
+	overlib = no_overlib;
+	nd = no_overlib;
+	ver3fix = true;
+}

Property changes on: tags/2.8.3/wb/admin/media/overlib.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/admin/start/index.php
===================================================================
--- tags/2.8.3/wb/admin/start/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/start/index.php	(revision 1610)
@@ -0,0 +1,194 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         start
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Start','start');
+// ---------------------------------------
+
+if(defined('FINALIZE_SETUP')) {
+	require_once(WB_PATH.'/framework/functions.php');
+	$dirs = array( 'modules'   => WB_PATH.'/modules/',
+	               'templates' => WB_PATH.'/templates/',
+	               'languages' => WB_PATH.'/languages/'
+	             );
+	foreach($dirs AS $type => $dir) {
+		if( ($handle = opendir($dir)) ) {
+			while(false !== ($file = readdir($handle))) {
+				if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'admin.php' AND $file != 'index.php') {
+					// Get addon type
+					if($type == 'modules') {
+						load_module($dir.'/'.$file, true);
+						// Pretty ugly hack to let modules run $admin->set_error
+						// See dummy class definition admin_dummy above
+						if(isset($admin->error) && $admin->error != '') {
+							$admin->print_error($admin->error);
+						}
+					} elseif($type == 'templates') {
+						load_template($dir.'/'.$file);
+					} elseif($type == 'languages') {
+						load_language($dir.'/'.$file);
+					}
+				}
+			}
+		closedir($handle);
+		}
+	}
+	$sql = 'DELETE FROM `'.TABLE_PREFIX.'settings` WHERE `name`=\'FINALIZE_SETUP\'';
+	if($database->query($sql)) { }
+}
+// ---------------------------------------
+$msg = '<br />';
+// check if it is neccessary to start the uograde-script
+if(($admin->get_user_id()==1) && file_exists(WB_PATH.'/upgrade-script.php')) {
+	// check if it is neccessary to start the uograde-script
+	$sql = 'SELECT `value` FROM `'.TABLE_PREFIX.'settings` WHERE `name`=\'wb_revision\'';
+	if($wb_revision=$database->get_one($sql)) {
+	}
+	if (version_compare($wb_revision, REVISION ) < 0) {
+		if(!headers_sent()) {
+			header('Location: '.WB_URL.'/upgrade-script.php');
+		    exit;
+		} else {
+		    echo "<p style=\"text-align:center;\"> The <strong>upgrade script</strong> could not be start automatically.\n" .
+		         "Please click <a style=\"font-weight:bold;\" " .
+		         "href=\"".WB_URL."/upgrade-script.php\">on this link</a> to start the script!</p>\n";
+		    exit;
+		}
+	}
+	$msg .= ''.$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'].'<br />';
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('start.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'start.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values into the template object
+$template->set_var(array(
+					'WELCOME_MESSAGE' => $MESSAGE['START']['WELCOME_MESSAGE'],
+					'CURRENT_USER' => $MESSAGE['START']['CURRENT_USER'],
+					'DISPLAY_NAME' => $admin->get_display_name(),
+					'ADMIN_URL' => ADMIN_URL,
+					'WB_URL' => WB_URL,
+					'THEME_URL' => THEME_URL,
+					'WB_VERSION' => WB_VERSION
+				)
+			);
+
+// Insert permission values into the template object
+if($admin->get_permission('pages') != true)
+{
+	$template->set_var('DISPLAY_PAGES', 'display:none;');
+}
+if($admin->get_permission('media') != true)
+{
+	$template->set_var('DISPLAY_MEDIA', 'display:none;');
+}
+if($admin->get_permission('addons') != true)
+{
+	$template->set_var('DISPLAY_ADDONS', 'display:none;');
+}
+if($admin->get_permission('access') != true)
+{
+	$template->set_var('DISPLAY_ACCESS', 'display:none;');
+}
+if($admin->get_permission('settings') != true)
+{
+	$template->set_var('DISPLAY_SETTINGS', 'display:none;');
+}
+if($admin->get_permission('admintools') != true)
+{
+	$template->set_var('DISPLAY_ADMINTOOLS', 'display:none;');
+}
+
+$msg .= (file_exists(WB_PATH.'/install/')) ?  $MESSAGE['START']['INSTALL_DIR_EXISTS'] : '';
+
+// Check if installation directory still exists
+if(file_exists(WB_PATH.'/install/') || file_exists(WB_PATH.'/upgrade-script.php') ) {
+	// Check if user is part of Adminstrators group
+	if(in_array(1, $admin->get_groups_id()))
+    {
+		$template->set_var('WARNING', $msg );
+	} else {
+		$template->set_var('DISPLAY_WARNING', 'display:none;');
+	}
+} else {
+	$template->set_var('DISPLAY_WARNING', 'display:none;');
+}
+
+// Insert "Add-ons" section overview (pretty complex compared to normal)
+$addons_overview = $TEXT['MANAGE'].' ';
+$addons_count = 0;
+if($admin->get_permission('modules') == true)
+{
+	$addons_overview .= '<a href="'.ADMIN_URL.'/modules/index.php">'.$MENU['MODULES'].'</a>';
+	$addons_count = 1;
+}
+if($admin->get_permission('templates') == true)
+{
+	if($addons_count == 1) { $addons_overview .= ', '; }
+	$addons_overview .= '<a href="'.ADMIN_URL.'/templates/index.php">'.$MENU['TEMPLATES'].'</a>';
+	$addons_count = 1;
+}
+if($admin->get_permission('languages') == true)
+{
+	if($addons_count == 1) { $addons_overview .= ', '; }
+	$addons_overview .= '<a href="'.ADMIN_URL.'/languages/index.php">'.$MENU['LANGUAGES'].'</a>';
+}
+
+// Insert "Access" section overview (pretty complex compared to normal)
+$access_overview = $TEXT['MANAGE'].' ';
+$access_count = 0;
+if($admin->get_permission('users') == true) {
+	$access_overview .= '<a href="'.ADMIN_URL.'/users/index.php">'.$MENU['USERS'].'</a>';
+	$access_count = 1;
+}
+if($admin->get_permission('groups') == true) {
+	if($access_count == 1) { $access_overview .= ', '; }
+	$access_overview .= '<a href="'.ADMIN_URL.'/groups/index.php">'.$MENU['GROUPS'].'</a>';
+	$access_count = 1;
+}
+
+// Insert section names and descriptions
+$template->set_var(array(
+					'PAGES' => $MENU['PAGES'],
+					'MEDIA' => $MENU['MEDIA'],
+					'ADDONS' => $MENU['ADDONS'],
+					'ACCESS' => $MENU['ACCESS'],
+					'PREFERENCES' => $MENU['PREFERENCES'],
+					'SETTINGS' => $MENU['SETTINGS'],
+					'ADMINTOOLS' => $MENU['ADMINTOOLS'],
+					'HOME_OVERVIEW' => $OVERVIEW['START'],
+					'PAGES_OVERVIEW' => $OVERVIEW['PAGES'],
+					'MEDIA_OVERVIEW' => $OVERVIEW['MEDIA'],
+					'ADDONS_OVERVIEW' => $addons_overview,
+					'ACCESS_OVERVIEW' => $access_overview,
+					'PREFERENCES_OVERVIEW' => $OVERVIEW['PREFERENCES'],
+					'SETTINGS_OVERVIEW' => $OVERVIEW['SETTINGS'],
+					'ADMINTOOLS_OVERVIEW' => $OVERVIEW['ADMINTOOLS']
+				)
+			);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/start/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/settings/save.php
===================================================================
--- tags/2.8.3/wb/admin/settings/save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/settings/save.php	(revision 1610)
@@ -0,0 +1,260 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         settings
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly in the browser (would set all entries in DB settings table to '')
+if(!isset($_POST['default_language']) || $_POST['default_language'] == '') die(header('Location: index.php'));
+
+// Find out if the user was view advanced options or not
+$advanced = ($_POST['advanced'] == 'yes') ? '?advanced=yes' : '';
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// suppress to print the header, so no new FTAN will be set
+if($advanced == '')
+{
+	$admin = new admin('Settings', 'settings_basic',false);
+} else {
+	$admin = new admin('Settings', 'settings_advanced',false);
+}
+
+// Create a javascript back link
+$js_back = ADMIN_URL.'/settings/index.php'.$advanced;
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back );
+}
+// After check print the header
+$admin->print_header();
+
+// Ensure that the specified default email is formally valid
+if(isset($_POST['server_email']))
+{
+	$_POST['server_email'] = strip_tags($_POST['server_email']);
+    // $pattern = '/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?\r/im';
+    $pattern = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,6}))$/';
+    if(false == preg_match($pattern, $_POST['server_email']))
+    {
+		$admin->print_error($MESSAGE['USERS_INVALID_EMAIL'].
+			'<br /><strong>Email: '.htmlentities($_POST['server_email']).'</strong>', $js_back);
+	}
+}
+
+if(isset($_POST['wbmailer_routine']) && ($_POST['wbmailer_routine']=='smtp')) {
+
+	$checkSmtpHost = (isset($_POST['wbmailer_smtp_host']) && ($_POST['wbmailer_smtp_host']=='') ? false : true);
+	$checkSmtpUser = (isset($_POST['wbmailer_smtp_username']) && ($_POST['wbmailer_smtp_username']=='') ? false : true);
+	$checkSmtpPassword = (isset($_POST['wbmailer_smtp_password']) && ($_POST['wbmailer_smtp_password']=='') ? false : true);
+	if(!$checkSmtpHost || !$checkSmtpUser || !$checkSmtpPassword) {
+		$admin->print_error($TEXT['REQUIRED'].' '.$TEXT['WBMAILER_SMTP_AUTH'].
+			'<br /><strong>'.$MESSAGE['GENERIC_FILL_IN_ALL'].'</strong>', $js_back);
+	}
+
+}
+
+// Work-out file mode
+if($advanced == '')
+{
+	// Check if should be set to 777 or left alone
+	if(isset($_POST['world_writeable']) && $_POST['world_writeable'] == 'true')
+    {
+		$file_mode = '0777';
+		$dir_mode = '0777';
+	} else {
+		$file_mode = STRING_FILE_MODE;
+		$dir_mode = STRING_DIR_MODE;
+	}
+} else {
+	$file_mode = STRING_FILE_MODE;
+	$dir_mode = STRING_DIR_MODE;
+	if($admin->get_user_id()=='1')
+	{
+		// Work-out the octal value for file mode
+		$u = 0;
+		if(isset($_POST['file_u_r']) && $_POST['file_u_r'] == 'true') {
+			$u = $u+4;
+		}
+		if(isset($_POST['file_u_w']) && $_POST['file_u_w'] == 'true') {
+			$u = $u+2;
+		}
+		if(isset($_POST['file_u_e']) && $_POST['file_u_e'] == 'true') {
+			$u = $u+1;
+		}
+		$g = 0;
+		if(isset($_POST['file_g_r']) && $_POST['file_g_r'] == 'true') {
+			$g = $g+4;
+		}
+		if(isset($_POST['file_g_w']) && $_POST['file_g_w'] == 'true') {
+			$g = $g+2;
+		}
+		if(isset($_POST['file_g_e']) && $_POST['file_g_e'] == 'true') {
+			$g = $g+1;
+		}
+		$o = 0;
+		if(isset($_POST['file_o_r']) && $_POST['file_o_r'] == 'true') {
+			$o = $o+4;
+		}
+		if(isset($_POST['file_o_w']) && $_POST['file_o_w'] == 'true') {
+			$o = $o+2;
+		}
+		if(isset($_POST['file_o_e']) && $_POST['file_o_e'] == 'true') {
+			$o = $o+1;
+		}
+		$file_mode = "0".$u.$g.$o;
+		// Work-out the octal value for dir mode
+		$u = 0;
+		if(isset($_POST['dir_u_r']) && $_POST['dir_u_r'] == 'true') {
+			$u = $u+4;
+		}
+		if(isset($_POST['dir_u_w']) && $_POST['dir_u_w'] == 'true') {
+			$u = $u+2;
+		}
+		if(isset($_POST['dir_u_e']) && $_POST['dir_u_e'] == 'true') {
+			$u = $u+1;
+		}
+		$g = 0;
+		if(isset($_POST['dir_g_r']) && $_POST['dir_g_r'] == 'true') {
+			$g = $g+4;
+		}
+		if(isset($_POST['dir_g_w']) && $_POST['dir_g_w'] == 'true') {
+			$g = $g+2;
+		}
+		if(isset($_POST['dir_g_e']) && $_POST['dir_g_e'] == 'true') {
+			$g = $g+1;
+		}
+		$o = 0;
+		if(isset($_POST['dir_o_r']) && $_POST['dir_o_r'] == 'true') {
+			$o = $o+4;
+		}
+		if(isset($_POST['dir_o_w']) && $_POST['dir_o_w'] == 'true') {
+			$o = $o+2;
+		}
+		if(isset($_POST['dir_o_e']) && $_POST['dir_o_e'] == 'true') {
+			$o = $o+1;
+		}
+		$dir_mode = "0".$u.$g.$o;
+	}
+}
+
+$allow_tags_in_fields = array('website_header', 'website_footer');
+$allow_empty_values = array('website_header','website_footer','sec_anchor','pages_directory','page_spacer');
+$disallow_in_fields = array('pages_directory', 'media_directory','wb_version');
+
+// Query current settings in the db, then loop through them and update the db with the new value
+$settings = array();
+$old_settings = array();
+// Query current settings in the db, then loop through them to get old values
+$sql = 'SELECT `name`, `value` FROM `'.TABLE_PREFIX.'settings`';
+$sql .= 'ORDER BY `name`';
+
+if($res_settings = $database->query($sql)) {
+	$passed = false;
+	while($setting = $res_settings->fetchRow())
+	{
+		$old_settings[$setting['name']] = $setting['value'];
+		$setting_name = $setting['name'];
+		$value = $admin->get_post($setting_name);
+		$value = isset($_POST[$setting_name]) ? $value : $old_settings[$setting_name] ;
+		switch ($setting_name) {
+			case 'default_timezone':
+				$value=$value*60*60;
+				$passed = true;
+				break;
+			case 'string_dir_mode':
+				$value=$dir_mode;
+				$passed = true;
+				break;
+			case 'string_file_mode':
+				$value=$file_mode;
+	 			$passed = true;
+			break;
+			case 'pages_directory':
+				break;
+			case 'wbmailer_smtp_auth':
+				// $value = isset($_POST[$setting_name]) ? $_POST[$setting_name] : '' ;
+				$value = true ;
+	 			$passed = true;
+				break;
+			default :
+			    $passed = in_array($setting_name, $allow_empty_values);
+				break;
+		}
+
+	    if (!in_array($setting_name, $allow_tags_in_fields))
+	    {
+	        $value = strip_tags($value);
+	    }
+
+	    if ( !in_array($value, $disallow_in_fields) && (isset($_POST[$setting_name]) || $passed == true) )
+	    {
+	        $value = trim($admin->add_slashes($value));
+	        $sql = 'UPDATE `'.TABLE_PREFIX.'settings` ';
+	        $sql .= 'SET `value` = \''.$value.'\' ';
+	        $sql .= 'WHERE `name` != \'wb_version\' ';
+	        $sql .= 'AND `name` = \''.$setting_name.'\' ';
+
+	        if (!$database->query($sql))
+	        {
+				if($database->is_error()) {
+					$admin->print_error($database->get_error, $js_back );
+				}
+	        }
+		}
+	}
+}
+
+// Query current search settings in the db, then loop through them and update the db with the new value
+$sql  = 'SELECT `name`, `value` FROM `'.TABLE_PREFIX.'search` ';
+$sql .= 'WHERE `extra` = ""';
+$res_search = $database->query($sql);
+
+if($database->is_error()) {
+	$admin->print_error($database->is_error(), $js_back );
+}
+
+while($search_setting = $res_search->fetchRow())
+{
+	$old_value = $search_setting['value'];
+	$setting_name = $search_setting['name'];
+	$post_name = 'search_'.$search_setting['name'];
+
+    // hold old value if post is empty
+    // check search template
+    $value = ( ($admin->get_post($post_name) == '') && ($setting_name != 'template') ) ? $old_value : $admin->get_post($post_name);
+    // $value =  ( ($admin->get_post($post_name) == '') && ($setting_name == 'template') ) ? DEFAULT_TEMPLATE : $admin->get_post($post_name);
+    if(isset($value))
+	{
+		$value = $admin->add_slashes($value);
+        $sql  = 'UPDATE `'.TABLE_PREFIX.'search` ';
+        $sql .= 'SET `value` = "'.$value.'" ';
+        $sql .= 'WHERE `name` = "'.$setting_name.'" ';
+        $sql .= 'AND `extra` = ""';
+		if($database->query($sql)) {
+		}
+		$sql_info = mysql_info($database->db_handle);
+    }
+}
+
+// Check if there was an error updating the db
+if($database->is_error()) {
+	$admin->print_error($database->get_error, $js_back );
+} else {
+	$admin->print_success($MESSAGE['SETTINGS']['SAVED'], $js_back );
+}
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/settings/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/settings/setting.js
===================================================================
--- tags/2.8.3/wb/admin/settings/setting.js	(nonexistent)
+++ tags/2.8.3/wb/admin/settings/setting.js	(revision 1610)
@@ -0,0 +1,42 @@
+function change_os(type) {
+	if(type == 'linux') {
+		document.getElementById('file_perms_box1').style.display = 'block';
+		document.getElementById('file_perms_box2').style.display = 'block';
+		document.getElementById('file_perms_box3').style.display = 'block';
+	} else if(type == 'windows') {
+		document.getElementById('file_perms_box1').style.display = 'none';
+		document.getElementById('file_perms_box2').style.display = 'none';
+		document.getElementById('file_perms_box3').style.display = 'none';
+	}
+}
+
+function change_wbmailer(type) {
+	if(type == 'smtp') {
+		document.getElementById('row_wbmailer_smtp_settings').style.display = '';
+		document.getElementById('row_wbmailer_smtp_host').style.display = '';
+		document.getElementById('row_wbmailer_smtp_auth_mode').style.display = '';
+		document.getElementById('row_wbmailer_smtp_username').style.display = '';
+		document.getElementById('row_wbmailer_smtp_password').style.display = '';
+	} else if(type == 'phpmail') {
+		document.getElementById('row_wbmailer_smtp_settings').style.display = 'none';
+		document.getElementById('row_wbmailer_smtp_host').style.display = 'none';
+		document.getElementById('row_wbmailer_smtp_auth_mode').style.display = 'none';
+		document.getElementById('row_wbmailer_smtp_username').style.display = 'none';
+		document.getElementById('row_wbmailer_smtp_password').style.display = 'none';
+	}
+}
+/*  */
+function toggle_wbmailer_auth() {
+		document.getElementById('row_wbmailer_smtp_username').style.display = '';
+		document.getElementById('row_wbmailer_smtp_password').style.display = '';
+		document.settings.wbmailer_smtp_auth.checked == true;
+/*
+	if( document.settings.wbmailer_smtp_auth.checked == true ) {
+		document.getElementById('row_wbmailer_smtp_username').style.display = '';
+		document.getElementById('row_wbmailer_smtp_password').style.display = '';
+	} else {
+		document.getElementById('row_wbmailer_smtp_username').style.display = 'none';
+		document.getElementById('row_wbmailer_smtp_password').style.display = 'none';
+	}
+*/
+}

Property changes on: tags/2.8.3/wb/admin/settings/setting.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/settings/index.php
===================================================================
--- tags/2.8.3/wb/admin/settings/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/settings/index.php	(revision 1610)
@@ -0,0 +1,750 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         settings
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+if(isset($_GET['advanced']) && $_GET['advanced'] == 'yes') {
+	$admin = new admin('Settings', 'settings_advanced');
+} else {
+	$admin = new admin('Settings', 'settings_basic');
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+require_once(WB_PATH.'/framework/functions-utf8.php');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('settings.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page',        'settings.htt');
+$template->set_block('page',       'main_block', 'main');
+$template->set_var('FTAN', $admin->getFTAN());
+
+$template->set_block('main_block', 'template_list_block',         'template_list');
+$template->set_block('main_block', 'timezone_list_block',         'timezone_list');
+$template->set_block('main_block', 'language_list_block',         'language_list');
+$template->set_block('main_block', 'date_format_list_block',      'date_format_list');
+$template->set_block('main_block', 'time_format_list_block',      'time_format_list');
+$template->set_block('main_block', 'theme_list_block',            'theme_list');
+$template->set_block('main_block', 'search_template_list_block',  'search_template_list');
+$template->set_block('main_block', 'group_list_block',            'group_list');
+$template->set_block('main_block', 'charset_list_block',          'charset_list');
+$template->set_block('main_block', 'error_reporting_list_block',  'error_reporting_list');
+$template->set_block('main_block', 'editor_list_block',           'editor_list');
+$template->set_block('main_block', 'page_level_limit_list_block', 'page_level_limit_list');
+
+$template->set_block('main_block', 'show_page_level_limit_block', 'show_page_level_limit');
+$template->set_block('main_block', 'show_checkbox_1_block',       'show_checkbox_1');
+$template->set_block('main_block', 'show_checkbox_2_block',       'show_checkbox_2');
+$template->set_block('main_block', 'show_checkbox_3_block',       'show_checkbox_3');
+$template->set_block('main_block', 'show_php_error_level_block',  'show_php_error_level');
+$template->set_block('main_block', 'show_charset_block',          'show_charset');
+$template->set_block('main_block', 'show_wysiwyg_block',          'show_wysiwyg');
+$template->set_block('main_block', 'show_access_block',           'show_access');
+$template->set_block('main_block', 'show_search_block',           'show_search');
+$template->set_block('main_block', 'show_redirect_timer_block',   'show_redirect_timer');
+
+// Query current settings in the db, then loop through them and print them
+$query = "SELECT * FROM ".TABLE_PREFIX."settings";
+$results = $database->query($query);
+while($setting = $results->fetchRow())
+{
+	$setting_name = $setting['name'];
+	$setting_value = ( $setting_name != 'wbmailer_smtp_password' ) ? htmlspecialchars($setting['value']) : $setting['value'];
+	$template->set_var(strtoupper($setting_name),$setting_value);
+}
+
+// Do the same for settings stored in config file as with ones in db
+$database_type = '';
+$is_advanced = (isset($_GET['advanced']) && $_GET['advanced'] == 'yes');
+// Tell the browser whether or not to show advanced options
+if($is_advanced)
+{
+	$template->set_var('DISPLAY_ADVANCED', '');
+	$template->set_var('ADVANCED_FILE_PERMS_ID', 'file_perms_box');
+	$template->set_var('BASIC_FILE_PERMS_ID', 'hide');
+	$template->set_var('ADVANCED', 'yes');
+	$template->set_var('ADVANCED_BUTTON', '&lt;&lt; '.$TEXT['HIDE_ADVANCED']);
+	$template->set_var('ADVANCED_LINK', 'index.php?advanced=no');
+
+} else {
+	$template->set_var('DISPLAY_ADVANCED', ' style="display: none;"');
+	$template->set_var('BASIC_FILE_PERMS_ID', 'file_perms_box');
+	$template->set_var('ADVANCED_FILE_PERMS_ID', 'hide');
+
+	$template->set_var('ADVANCED', 'no');
+	$template->set_var('ADVANCED_BUTTON', $TEXT['SHOW_ADVANCED'].' &gt;&gt;');
+	$template->set_var('ADVANCED_LINK', 'index.php?advanced=yes');
+}
+
+	$query = "SELECT * FROM ".TABLE_PREFIX."search WHERE extra = ''";
+	$results = $database->query($query);
+
+	// Query current settings in the db, then loop through them and print them
+	while($setting = $results->fetchRow())
+	{
+		$setting_name = $setting['name'];
+		$setting_value = htmlspecialchars(($setting['value']));
+		switch($setting_name) {
+			// Search header
+			case 'header':
+				$template->set_var('SEARCH_HEADER', $setting_value);
+			break;
+			// Search results header
+			case 'results_header':
+				$template->set_var('SEARCH_RESULTS_HEADER', $setting_value);
+			break;
+			// Search results loop
+			case 'results_loop':
+				$template->set_var('SEARCH_RESULTS_LOOP', $setting_value);
+			break;
+			// Search results footer
+			case 'results_footer':
+				$template->set_var('SEARCH_RESULTS_FOOTER', $setting_value);
+			break;
+			// Search no results
+			case 'no_results':
+				$template->set_var('SEARCH_NO_RESULTS', $setting_value);
+			break;
+			// Search footer
+			case 'footer':
+				$template->set_var('SEARCH_FOOTER', $setting_value);
+			break;
+			// Search module-order
+			case 'module_order':
+				$template->set_var('SEARCH_MODULE_ORDER', $setting_value);
+			break;
+			// Search max lines of excerpt
+			case 'max_excerpt':
+				$template->set_var('SEARCH_MAX_EXCERPT', $setting_value);
+			break;
+			// time-limit
+			case 'time_limit':
+				$template->set_var('SEARCH_TIME_LIMIT', $setting_value);
+			break;
+			// Search template
+			case 'template':
+				$search_template = $setting_value;
+			break;
+		}
+	}
+
+	$template->set_var(array(
+						'WB_URL' => WB_URL,
+						'THEME_URL' => THEME_URL,
+						'ADMIN_URL' => ADMIN_URL,
+					 ));
+
+	// Insert language values
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' ORDER BY directory");
+	if($result->numRows() > 0)
+	{
+		while($addon = $result->fetchRow()) {
+	        $langIcons = (empty($addon['directory'])) ? 'none' : strtolower($addon['directory']);
+
+			$template->set_var('CODE',        $addon['directory']);
+			$template->set_var('NAME',        $addon['name']);
+			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+			$template->set_var('SELECTED',    (DEFAULT_LANGUAGE == $addon['directory'] ? ' selected="selected"' : '') );
+			$template->parse('language_list', 'language_list_block', true);
+		}
+	}
+
+	// Insert default timezone values
+	require(ADMIN_PATH.'/interface/timezones.php');
+	foreach($TIMEZONES AS $hour_offset => $title)
+	{
+		// Make sure we dont list "System Default" as we are setting this value!
+		if($hour_offset != '-20') {
+			$template->set_var('VALUE', $hour_offset);
+			$template->set_var('NAME', $title);
+			if(DEFAULT_TIMEZONE == $hour_offset*60*60) {
+				$template->set_var('SELECTED', ' selected="selected"');
+			} else {
+				$template->set_var('SELECTED', '');
+			}
+			$template->parse('timezone_list', 'timezone_list_block', true);
+		}
+	}
+
+	// Insert default charset values
+	require(ADMIN_PATH.'/interface/charsets.php');
+	foreach($CHARSETS AS $code => $title) {
+		$template->set_var('VALUE', $code);
+		$template->set_var('NAME', $title);
+		if(DEFAULT_CHARSET == $code) {
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('charset_list', 'charset_list_block', true);
+	}
+
+
+	// Insert date format list
+	require(ADMIN_PATH.'/interface/date_formats.php');
+	foreach($DATE_FORMATS AS $format => $title) {
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		if($format != 'system_default') {
+			$template->set_var('VALUE', $format);
+		} else {
+			$template->set_var('VALUE', '');
+		}
+		$template->set_var('NAME', $title);
+		if(DEFAULT_DATE_FORMAT == $format) {
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('date_format_list', 'date_format_list_block', true);
+	}
+
+	// Insert time format list
+	require(ADMIN_PATH.'/interface/time_formats.php');
+	foreach($TIME_FORMATS AS $format => $title) {
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		if($format != 'system_default') {
+			$template->set_var('VALUE', $format);
+		} else {
+			$template->set_var('VALUE', '');
+		}
+		$template->set_var('NAME', $title);
+		if(DEFAULT_TIME_FORMAT == $format) {
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('time_format_list', 'time_format_list_block', true);
+	}
+
+	// Insert templates
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template' AND function != 'theme' ORDER BY name");
+	if($result->numRows() > 0) {
+		while($addon = $result->fetchRow()) {
+			$template->set_var('FILE', $addon['directory']);
+			$template->set_var('NAME', $addon['name']);
+			if(($addon['directory'] == DEFAULT_TEMPLATE) ? $selected = ' selected="selected"' : $selected = '');
+			$template->set_var('SELECTED', $selected);
+			$template->parse('template_list', 'template_list_block', true);
+		}
+	}
+
+	// Insert backend theme
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template' AND function = 'theme' ORDER BY name");
+	if($result->numRows() > 0) {
+		while($addon = $result->fetchRow()) {
+			$template->set_var('FILE', $addon['directory']);
+			$template->set_var('NAME', $addon['name']);
+			if(($addon['directory'] == DEFAULT_THEME) ? $selected = ' selected="selected"' : $selected = '');
+			$template->set_var('SELECTED', $selected);
+			$template->parse('theme_list', 'theme_list_block', true);
+		}
+	}
+
+	// Insert WYSIWYG modules
+	$file='none';
+	$module_name=$TEXT['NONE'];
+	$template->set_var('FILE', $file);
+	$template->set_var('NAME', $module_name);
+	$selected = (!defined('WYSIWYG_EDITOR') || $file == WYSIWYG_EDITOR) ? ' selected="selected"' : '';
+	$template->set_var('SELECTED', $selected);
+	$template->parse('editor_list', 'editor_list_block', true);
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'module' AND function = 'wysiwyg' ORDER BY name");
+	if($result->numRows() > 0)
+	{
+		while($addon = $result->fetchRow())
+	    {
+			$template->set_var('FILE', $addon['directory']);
+			$template->set_var('NAME', $addon['name']);
+			$selected = (!defined('WYSIWYG_EDITOR') || $addon['directory'] == WYSIWYG_EDITOR) ? ' selected="selected"' : '';
+			$template->set_var('SELECTED', $selected);
+			$template->parse('editor_list', 'editor_list_block', true);
+		}
+	}
+
+// Insert templates for search settings
+	$search_template = ( ($search_template == DEFAULT_TEMPLATE) || ($search_template == '') ) ? '' : $search_template;
+	$selected = ( ($search_template != DEFAULT_TEMPLATE) ) ?  ' selected="selected"' : $selected = '';
+
+	$template->set_var(array(
+	        'FILE' => '',
+	        'NAME' => $TEXT['SYSTEM_DEFAULT'],
+	        'SELECTED' => $selected
+	    ));
+	$template->parse('search_template_list', 'search_template_list_block', true);
+
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template' AND function = 'template' ORDER BY name");
+	if($result->numRows() > 0)
+	{
+		while($addon = $result->fetchRow())
+	    {
+			$template->set_var('FILE', $addon['directory']);
+			$template->set_var('NAME', $addon['name']);
+	        $selected = ($addon['directory'] == $search_template) ? ' selected="selected"' :  $selected = '';
+			$template->set_var('SELECTED', $selected);
+			$template->parse('search_template_list', 'search_template_list_block', true);
+
+		}
+	}
+
+	// Insert default error reporting values
+	require(ADMIN_PATH.'/interface/er_levels.php');
+	foreach($ER_LEVELS AS $value => $title)
+	{
+		$template->set_var('VALUE', $value);
+		$template->set_var('NAME', $title);
+	    $selected = (ER_LEVEL == $value) ? ' selected="selected"' : '';
+	    $template->set_var('SELECTED', $selected);
+		$template->parse('error_reporting_list', 'error_reporting_list_block', true);
+	}
+
+	// Insert permissions values
+	if($admin->get_permission('settings_advanced') != true)
+	{
+		$template->set_var('DISPLAY_ADVANCED_BUTTON', 'hide');
+	}
+
+	// Insert page level limits
+	for($i = 1; $i <= 10; $i++)
+	{
+		$template->set_var('NUMBER', $i);
+		if(PAGE_LEVEL_LIMIT == $i)
+	    {
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('page_level_limit_list', 'page_level_limit_list_block', true);
+	}
+
+	// Work-out if multiple menus feature is enabled
+	if(defined('MULTIPLE_MENUS') && MULTIPLE_MENUS == true)
+	{
+		$template->set_var('MULTIPLE_MENUS_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('MULTIPLE_MENUS_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if page languages feature is enabled
+	if(defined('PAGE_LANGUAGES') && PAGE_LANGUAGES == true)
+	{
+	        $template->set_var('PAGE_LANGUAGES_ENABLED', ' checked="checked"');
+	} else {
+	        $template->set_var('PAGE_LANGUAGES_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if warn_page_leave feature is enabled
+	if (defined('WARN_PAGE_LEAVE') && WARN_PAGE_LEAVE == true)
+	{
+		$template->set_var('WARN_PAGE_LEAVE_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('WARN_PAGE_LEAVE_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if smart login feature is enabled
+	if(defined('SMART_LOGIN') && SMART_LOGIN == true)
+	{
+		$template->set_var('SMART_LOGIN_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('SMART_LOGIN_DISABLED', ' checked="checked"');
+	}
+
+	/* Make's sure GD library is installed */
+	if(extension_loaded('gd') && function_exists('imageCreateFromJpeg'))
+	{
+		$template->set_var('GD_EXTENSION_ENABLED', '');
+	} else {
+		$template->set_var('GD_EXTENSION_ENABLED', ' style="display: none;"');
+	}
+
+	// Work-out if section blocks feature is enabled
+	if(defined('SECTION_BLOCKS') && SECTION_BLOCKS == true)
+	{
+		$template->set_var('SECTION_BLOCKS_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('SECTION_BLOCKS_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if homepage redirection feature is enabled
+	if(defined('HOMEPAGE_REDIRECTION') && HOMEPAGE_REDIRECTION == true)
+	{
+		$template->set_var('HOMEPAGE_REDIRECTION_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('HOMEPAGE_REDIRECTION_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out which server os should be checked
+	if(OPERATING_SYSTEM == 'linux')
+	{
+		$template->set_var('LINUX_SELECTED', ' checked="checked"');
+	} elseif(OPERATING_SYSTEM == 'windows') {
+		$template->set_var('WINDOWS_SELECTED', ' checked="checked"');
+	}
+
+	// Work-out if manage sections feature is enabled
+	if(MANAGE_SECTIONS)
+	{
+		$template->set_var('MANAGE_SECTIONS_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('MANAGE_SECTIONS_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out which wbmailer routine should be checked
+	$template->set_var(array(
+				'TEXT_WBMAILER_DEFAULT_SETTINGS_NOTICE' => $TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'],
+				'TEXT_WBMAILER_DEFAULT_SENDER_MAIL' => $TEXT['WBMAILER_DEFAULT_SENDER_MAIL'],
+				'TEXT_WBMAILER_DEFAULT_SENDER_NAME' => $TEXT['WBMAILER_DEFAULT_SENDER_NAME'],
+				'TEXT_WBMAILER_NOTICE' => $TEXT['WBMAILER_NOTICE'],
+				'TEXT_WBMAILER_FUNCTION' => $TEXT['WBMAILER_FUNCTION'],
+				'TEXT_WBMAILER_SMTP_HOST' => $TEXT['WBMAILER_SMTP_HOST'],
+				'TEXT_WBMAILER_PHP' => $TEXT['WBMAILER_PHP'],
+				'TEXT_WBMAILER_SMTP' => $TEXT['WBMAILER_SMTP'],
+				'TEXT_WBMAILER_SMTP_AUTH' => $TEXT['WBMAILER_SMTP_AUTH'],
+				'TEXT_WBMAILER_SMTP_AUTH_NOTICE' => $TEXT['REQUIRED'].' '.$TEXT['WBMAILER_SMTP_AUTH'],
+				'TEXT_WBMAILER_SMTP_USERNAME' => $TEXT['WBMAILER_SMTP_USERNAME'],
+				'TEXT_WBMAILER_SMTP_PASSWORD' => $TEXT['WBMAILER_SMTP_PASSWORD'],
+				'SMTP_AUTH_SELECTED' => ' checked="checked"'
+				));
+	if(WBMAILER_ROUTINE == 'phpmail')
+	{
+		$template->set_var('PHPMAIL_SELECTED', ' checked="checked"');
+		$template->set_var('SMTP_VISIBILITY', ' style="display: none;"');
+		$template->set_var('SMTP_VISIBILITY_AUTH', '');
+		// $template->set_var('SMTP_AUTH_SELECTED', '');
+	} elseif(WBMAILER_ROUTINE == 'smtp')
+	{
+		$template->set_var('SMTPMAIL_SELECTED', ' checked="checked"');
+		$template->set_var('SMTP_VISIBILITY', '');
+		$template->set_var('SMTP_VISIBILITY_AUTH', '');
+	}
+/* deprecated
+	// Work-out if SMTP authentification should be checked
+	if(WBMAILER_SMTP_AUTH)
+	{
+		$template->set_var('SMTP_AUTH_SELECTED', ' checked="checked"');
+		if(WBMAILER_ROUTINE == 'smtp')
+	    {
+			$template->set_var('SMTP_VISIBILITY_AUTH', '');
+
+		} else {
+			$template->set_var('SMTP_VISIBILITY_AUTH', ' style="display: none;"');
+		}
+	} else {
+		$template->set_var('SMTP_VISIBILITY_AUTH', ' style="display: none;"');
+	}
+*/
+	// Work-out if intro feature is enabled
+	if(INTRO_PAGE)
+	{
+		$template->set_var('INTRO_PAGE_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('INTRO_PAGE_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if frontend login feature is enabled
+	if(FRONTEND_LOGIN)
+	{
+		$template->set_var('PRIVATE_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('PRIVATE_DISABLED', ' checked="checked"');
+	}
+
+	// Work-out if page trash feature is disabled, in-line, or separate
+	if(PAGE_TRASH == 'disabled')
+	{
+		$template->set_var('PAGE_TRASH_DISABLED', ' checked="checked"');
+		$template->set_var('DISPLAY_PAGE_TRASH_SEPARATE', 'display: none;');
+	} elseif(PAGE_TRASH == 'inline')
+	{
+		$template->set_var('PAGE_TRASH_INLINE', ' checked="checked"');
+		$template->set_var('DISPLAY_PAGE_TRASH_SEPARATE', 'display: none;');
+	} elseif(PAGE_TRASH == 'separate')
+	{
+		$template->set_var('PAGE_TRASH_SEPARATE', ' checked="checked"');
+		$template->set_var('DISPLAY_PAGE_TRASH_SEPARATE', 'display: inline;');
+	}
+
+	// Work-out if media home folde feature is enabled
+	if(HOME_FOLDERS)
+	{
+		$template->set_var('HOME_FOLDERS_ENABLED', ' checked="checked"');
+	} else {
+		$template->set_var('HOME_FOLDERS_DISABLED', ' checked="checked"');
+	}
+
+	// Insert search select
+	if(SEARCH == 'private')
+	{
+		$template->set_var('PRIVATE_SEARCH', ' selected="selected"');
+	} elseif(SEARCH == 'registered') {
+		$template->set_var('REGISTERED_SEARCH', ' selected="selected"');
+	} elseif(SEARCH == 'none') {
+		$template->set_var('NONE_SEARCH', ' selected="selected"');
+	}
+
+	// Work-out if 777 permissions are set
+	if(STRING_FILE_MODE == '0777' AND STRING_DIR_MODE == '0777')
+	{
+		$template->set_var('WORLD_WRITEABLE_SELECTED', ' checked="checked"');
+	}
+
+	// Work-out which file mode boxes are checked
+	if(extract_permission(STRING_FILE_MODE, 'u', 'r'))
+	{
+		$template->set_var('FILE_U_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'u', 'w'))
+	{
+		$template->set_var('FILE_U_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'u', 'e'))
+	{
+		$template->set_var('FILE_U_E_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'g', 'r'))
+	{
+		$template->set_var('FILE_G_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'g', 'w'))
+	{
+		$template->set_var('FILE_G_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'g', 'e'))
+	{
+		$template->set_var('FILE_G_E_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'o', 'r'))
+	{
+		$template->set_var('FILE_O_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'o', 'w'))
+	{
+		$template->set_var('FILE_O_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_FILE_MODE, 'o', 'e'))
+	{
+		$template->set_var('FILE_O_E_CHECKED', ' checked="checked"');
+	}
+	// Work-out which dir mode boxes are checked
+	if(extract_permission(STRING_DIR_MODE, 'u', 'r'))
+	{
+		$template->set_var('DIR_U_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'u', 'w'))
+	{
+		$template->set_var('DIR_U_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'u', 'e'))
+	{
+		$template->set_var('DIR_U_E_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'g', 'r'))
+	{
+		$template->set_var('DIR_G_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'g', 'w'))
+	{
+		$template->set_var('DIR_G_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'g', 'e'))
+	{
+		$template->set_var('DIR_G_E_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'o', 'r'))
+	{
+		$template->set_var('DIR_O_R_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'o', 'w'))
+	{
+		$template->set_var('DIR_O_W_CHECKED', ' checked="checked"');
+	}
+	if(extract_permission(STRING_DIR_MODE, 'o', 'e'))
+	{
+		$template->set_var('DIR_O_E_CHECKED', ' checked="checked"');
+	}
+
+	$template->set_var(array(
+						'PAGES_DIRECTORY' => PAGES_DIRECTORY,
+						'MEDIA_DIRECTORY' => MEDIA_DIRECTORY,
+						'PAGE_EXTENSION' => PAGE_EXTENSION,
+						'PAGE_SPACER' => PAGE_SPACER,
+						'TABLE_PREFIX' => TABLE_PREFIX
+					 ));
+
+	// Insert Server Email value into template
+	$template->set_var('SERVER_EMAIL', SERVER_EMAIL);
+
+	// Insert groups into signup list
+	$results = $database->query("SELECT group_id, name FROM ".TABLE_PREFIX."groups WHERE group_id != '1'");
+	if($results->numRows() > 0)
+	{
+		while($group = $results->fetchRow())
+	    {
+			$template->set_var('ID', $group['group_id']);
+			$template->set_var('NAME', $group['name']);
+			if(FRONTEND_SIGNUP == $group['group_id'])
+	        {
+				$template->set_var('SELECTED', ' selected="selected"');
+			} else {
+				$template->set_var('SELECTED', '');
+			}
+			$template->parse('group_list', 'group_list_block', true);
+		}
+	} else {
+		$template->set_var('ID', 'disabled');
+		$template->set_var('NAME', $MESSAGE['GROUPS']['NO_GROUPS_FOUND']);
+		$template->parse('group_list', 'group_list_block', true);
+	}
+
+	// Insert language headings
+	$template->set_var(array(
+					'HEADING_GENERAL_SETTINGS' => $HEADING['GENERAL_SETTINGS'],
+					'HEADING_DEFAULT_SETTINGS' => $HEADING['DEFAULT_SETTINGS'],
+					'HEADING_SEARCH_SETTINGS' => $HEADING['SEARCH_SETTINGS'],
+					'HEADING_SERVER_SETTINGS' => $HEADING['SERVER_SETTINGS'],
+					'HEADING_WBMAILER_SETTINGS' => $HEADING['WBMAILER_SETTINGS'],
+					'HEADING_ADMINISTRATION_TOOLS' => $HEADING['ADMINISTRATION_TOOLS']
+					)
+			);
+	// Insert language text and messages
+	$template->set_var(array(
+					'TEXT_WEBSITE_TITLE' => $TEXT['WEBSITE_TITLE'],
+					'TEXT_WEBSITE_DESCRIPTION' => $TEXT['WEBSITE_DESCRIPTION'],
+					'TEXT_WEBSITE_KEYWORDS' => $TEXT['WEBSITE_KEYWORDS'],
+					'TEXT_WEBSITE_HEADER' => $TEXT['WEBSITE_HEADER'],
+					'TEXT_WEBSITE_FOOTER' => $TEXT['WEBSITE_FOOTER'],
+					'TEXT_HEADER' => $TEXT['HEADER'],
+					'TEXT_FOOTER' => $TEXT['FOOTER'],
+					'TEXT_VISIBILITY' => $TEXT['VISIBILITY'],
+					'TEXT_RESULTS_HEADER' => $TEXT['RESULTS_HEADER'],
+					'TEXT_RESULTS_LOOP' => $TEXT['RESULTS_LOOP'],
+					'TEXT_RESULTS_FOOTER' => $TEXT['RESULTS_FOOTER'],
+					'TEXT_NO_RESULTS' => $TEXT['NO_RESULTS'],
+					'TEXT_TEXT' => $TEXT['TEXT'],
+					'TEXT_DEFAULT' => $TEXT['DEFAULT'],
+					'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
+					'TEXT_TIMEZONE' => $TEXT['TIMEZONE'],
+					'TEXT_CHARSET' => $TEXT['CHARSET'],
+					'TEXT_DATE_FORMAT' => $TEXT['DATE_FORMAT'],
+					'TEXT_TIME_FORMAT' => $TEXT['TIME_FORMAT'],
+					'TEXT_TEMPLATE' => $TEXT['TEMPLATE'],
+					'TEXT_THEME' => $TEXT['THEME'],
+					'TEXT_WYSIWYG_EDITOR' => $TEXT['WYSIWYG_EDITOR'],
+					'TEXT_PAGE_LEVEL_LIMIT' => $TEXT['PAGE_LEVEL_LIMIT'],
+					'TEXT_INTRO_PAGE' => $TEXT['INTRO_PAGE'],
+					'TEXT_FRONTEND' => $TEXT['FRONTEND'],
+					'TEXT_LOGIN' => $TEXT['LOGIN'],
+					'TEXT_REDIRECT_AFTER' => $TEXT['REDIRECT_AFTER'],
+					'TEXT_SIGNUP' => $TEXT['SIGNUP'],
+					'TEXT_PHP_ERROR_LEVEL' => $TEXT['PHP_ERROR_LEVEL'],
+					'TEXT_PAGES_DIRECTORY' => $TEXT['PAGES_DIRECTORY'],
+					'TEXT_MEDIA_DIRECTORY' => $TEXT['MEDIA_DIRECTORY'],
+					'TEXT_PAGE_EXTENSION' => $TEXT['PAGE_EXTENSION'],
+					'TEXT_PAGE_SPACER' => $TEXT['PAGE_SPACER'],
+					'TEXT_RENAME_FILES_ON_UPLOAD' => $TEXT['RENAME_FILES_ON_UPLOAD'],
+					'TEXT_APP_NAME' => $TEXT['APP_NAME'],
+					'TEXT_SESSION_IDENTIFIER' => $TEXT['SESSION_IDENTIFIER'],
+					'TEXT_SEC_ANCHOR' => $TEXT['SEC_ANCHOR'],
+					'TEXT_SERVER_OPERATING_SYSTEM' => $TEXT['SERVER_OPERATING_SYSTEM'],
+					'TEXT_LINUX_UNIX_BASED' => $TEXT['LINUX_UNIX_BASED'],
+					'TEXT_WINDOWS' => $TEXT['WINDOWS'],
+					'TEXT_ADMIN' => $TEXT['ADMIN'],
+					'TEXT_TYPE' => $TEXT['TYPE'],
+					'TEXT_DATABASE' => $TEXT['DATABASE'],
+					'TEXT_HOST' => $TEXT['HOST'],
+					'TEXT_USERNAME' => $TEXT['USERNAME'],
+					'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+					'TEXT_NAME' => $TEXT['NAME'],
+					'TEXT_TABLE_PREFIX' => $TEXT['TABLE_PREFIX'],
+					'TEXT_SAVE' => $TEXT['SAVE'],
+					'TEXT_RESET' => $TEXT['RESET'],
+					'TEXT_CHANGES' => $TEXT['CHANGES'],
+					'TEXT_ENABLED' => $TEXT['ENABLED'],
+					'TEXT_DISABLED' => $TEXT['DISABLED'],
+					'TEXT_MANAGE_SECTIONS' => $HEADING['MANAGE_SECTIONS'],
+					'TEXT_MANAGE' => $TEXT['MANAGE'],
+					'TEXT_SEARCH' => $TEXT['SEARCH'],
+					'TEXT_PUBLIC' => $TEXT['PUBLIC'],
+					'TEXT_PRIVATE' => $TEXT['PRIVATE'],
+					'TEXT_REGISTERED' => $TEXT['REGISTERED'],
+					'TEXT_NONE' => $TEXT['NONE'],
+					'TEXT_FILES' => strtoupper(substr($TEXT['FILES'], 0, 1)).substr($TEXT['FILES'], 1),
+					'TEXT_DIRECTORIES' => $TEXT['DIRECTORIES'],
+					'TEXT_FILESYSTEM_PERMISSIONS' => $TEXT['FILESYSTEM_PERMISSIONS'],
+					'TEXT_USER' => $TEXT['USER'],
+					'TEXT_GROUP' => $TEXT['GROUP'],
+					'TEXT_OTHERS' => $TEXT['OTHERS'],
+					'TEXT_READ' => $TEXT['READ'],
+					'TEXT_WRITE' => $TEXT['WRITE'],
+					'TEXT_EXECUTE' => $TEXT['EXECUTE'],
+					'TEXT_WARN_PAGE_LEAVE' => '',
+					'TEXT_SMART_LOGIN' => $TEXT['SMART_LOGIN'],
+					'TEXT_MULTIPLE_MENUS' => $TEXT['MULTIPLE_MENUS'],
+					'TEXT_HOMEPAGE_REDIRECTION' => $TEXT['HOMEPAGE_REDIRECTION'],
+					'TEXT_SECTION_BLOCKS' => $TEXT['SECTION_BLOCKS'],
+					'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+					'TEXT_PAGE_TRASH' => $TEXT['PAGE_TRASH'],
+					'TEXT_PAGE_LANGUAGES' => $TEXT['PAGE_LANGUAGES'],
+					'TEXT_INLINE' => $TEXT['INLINE'],
+					'TEXT_SEPARATE' => $TEXT['SEPARATE'],
+					'TEXT_HOME_FOLDERS' => $TEXT['HOME_FOLDERS'],
+					'TEXT_WYSIWYG_STYLE' => $TEXT['WYSIWYG_STYLE'],
+					'TEXT_WORLD_WRITEABLE_FILE_PERMISSIONS' => $TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'],
+					'MODE_SWITCH_WARNING' => $MESSAGE['SETTINGS']['MODE_SWITCH_WARNING'],
+					'WORLD_WRITEABLE_WARNING' => $MESSAGE['SETTINGS']['WORLD_WRITEABLE_WARNING'],
+					'TEXT_MODULE_ORDER' => $TEXT['MODULE_ORDER'],
+					'TEXT_MAX_EXCERPT' => $TEXT['MAX_EXCERPT'],
+					'TEXT_TIME_LIMIT' => $TEXT['TIME_LIMIT']
+					));
+
+if($is_advanced)
+{
+	$template->parse('show_page_level_limit', 'show_page_level_limit_block', true);
+	$template->parse('show_checkbox_1',       'show_checkbox_1_block', true);
+ 	$template->parse('show_checkbox_2',       'show_checkbox_2_block', true);
+	$template->parse('show_checkbox_3',       'show_checkbox_3_block', true);
+	$template->parse('show_php_error_level',  'show_php_error_level_block', true);
+	$template->parse('show_charset',          'show_charset_block', true);
+	$template->parse('show_wysiwyg',          'show_wysiwyg_block', true);
+	$template->parse('show_search',           'show_search_block', false);
+	$template->parse('show_redirect_timer',   'show_redirect_timer_block', true);
+}else {
+	$template->set_block('show_page_level_limit', '');
+	$template->set_block('show_checkbox_1', '');
+	$template->set_block('show_checkbox_2', '');
+	$template->set_block('show_checkbox_3', '');
+	$template->set_block('show_php_error_level', '');
+	$template->set_block('show_charset', '');
+	$template->set_block('show_wysiwyg', '');
+	$template->set_block('show_search', '');
+	$template->set_block('show_redirect_timer', '');
+}
+if($is_advanced && $admin->get_user_id()=='1')
+{
+	$template->parse('show_access', 'show_access_block', true);
+}else {
+	$template->set_block('show_access', '');
+}
+
+// Parse template objects output
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/settings/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/themes/templates/settings.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/settings.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/settings.htt	(revision 1610)
@@ -0,0 +1,608 @@
+<!-- BEGIN main_block -->
+
+<form name="settings" action="save.php" method="post">
+<input type="hidden" name="advanced" value="{ADVANCED}" />
+<input type="hidden" name="wbmailer_smtp_auth" id="wbmailer_smtp_auth" value="true"  />
+
+{FTAN}
+
+<table summary="" cellpadding="3" cellspacing="0" border="0" align="center" width="100%" class="settings_table">
+<tr>
+	<td colspan="3"><h2>{HEADING_GENERAL_SETTINGS}</h2></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WEBSITE_TITLE}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="website_title" value="{WEBSITE_TITLE}" />
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WEBSITE_DESCRIPTION}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="website_description" cols="50" rows="3">{WEBSITE_DESCRIPTION}</textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WEBSITE_KEYWORDS}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="website_keywords" cols="50" rows="3" >{WEBSITE_KEYWORDS}</textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WEBSITE_HEADER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="website_header" cols="50" rows="3">{WEBSITE_HEADER}</textarea>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WEBSITE_FOOTER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="website_footer" cols="50" rows="3">{WEBSITE_FOOTER}</textarea>
+	</td>
+</tr>
+<!-- BEGIN show_page_level_limit_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_PAGE_LEVEL_LIMIT}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="page_level_limit">
+		<!-- BEGIN page_level_limit_list_block -->
+			<option value="{NUMBER}"{SELECTED}>{NUMBER}</option>
+		<!-- END page_level_limit_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- END show_page_level_limit_block -->
+<tr>
+	<td class="setting_name">{TEXT_PAGE_TRASH}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="page_trash" id="page_trash_inline" style="width: 14px; height: 14px;" value="inline"{PAGE_TRASH_INLINE} />
+		<label for="page_trash_inline">{TEXT_ENABLED}</label>
+		<input type="radio" name="page_trash" id="page_trash_disabled" style="width: 14px; height: 14px;" value="disabled"{PAGE_TRASH_DISABLED} />
+		<label for="page_trash_disabled">{TEXT_DISABLED}</label>
+		<div style="margin: 0; padding: 0;{DISPLAY_PAGE_TRASH_SEPARATE}">
+			<input type="radio" name="page_trash" id="page_trash_separate" style="width: 14px; height: 14px;" value="separate"{PAGE_TRASH_SEPARATE} />
+			<label for="page_trash_separate">{TEXT_SEPARATE}</label>
+		</div>
+	</td>
+</tr>
+<!-- BEGIN show_checkbox_1_block -->
+<tr{DISPLAY_ADVANCED}>
+        <td class="setting_name">{TEXT_PAGE_LANGUAGES}:</td>
+        <td class="setting_value" colspan="2">
+                <input type="radio" name="page_languages" id="page_languages_true" style="width: 14px; height: 14px;" value="true"{PAGE_LANGUAGES_ENABLED} />
+                <label for="page_languages_true">{TEXT_ENABLED}</label>
+                <input type="radio" name="page_languages" id="page_languages_false" style="width: 14px; height: 14px;" value="false"{PAGE_LANGUAGES_DISABLED} />
+                <label for="page_languages_false">{TEXT_DISABLED}</label>
+		</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_MULTIPLE_MENUS}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="multiple_menus" id="multiple_menus_true" style="width: 14px; height: 14px;" value="true"{MULTIPLE_MENUS_ENABLED} />
+		<label for="multiple_menus_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="multiple_menus" id="multiple_menus_false" style="width: 14px; height: 14px;" value="false"{MULTIPLE_MENUS_DISABLED} />
+		<label for="multiple_menus_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- END show_checkbox_1_block -->
+<tr>
+	<td class="setting_name">{TEXT_HOME_FOLDERS}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="home_folders" id="home_folders_true" style="width: 14px; height: 14px;" value="true"{HOME_FOLDERS_ENABLED} />
+		<label for="home_folders_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="home_folders" id="home_folders_false" style="width: 14px; height: 14px;" value="false"{HOME_FOLDERS_DISABLED} />
+		<label for="home_folders_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- BEGIN show_checkbox_2_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_MANAGE_SECTIONS}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="manage_sections" id="manage_sections_true" style="width: 14px; height: 14px;" value="true"{MANAGE_SECTIONS_ENABLED} />
+		<label for="manage_sections_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="manage_sections" id="manage_sections_false" style="width: 14px; height: 14px;" value="false"{MANAGE_SECTIONS_DISABLED} />
+		<label for="manage_sections_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_SECTION_BLOCKS}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="section_blocks" id="section_blocks_true" style="width: 14px; height: 14px;" value="true"{SECTION_BLOCKS_ENABLED} />
+		<label for="section_blocks_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="section_blocks" id="section_blocks_false" style="width: 14px; height: 14px;" value="false"{SECTION_BLOCKS_DISABLED} />
+		<label for="section_blocks_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- END show_checkbox_2_block -->
+<tr>
+	<td class="setting_name">{TEXT_INTRO_PAGE}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="intro_page" id="intro_page_true" style="width: 14px; height: 14px;" value="true"{INTRO_PAGE_ENABLED} />
+		<label for="intro_page_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="intro_page" id="intro_page_false" style="width: 14px; height: 14px;" value="false"{INTRO_PAGE_DISABLED} />
+		<label for="intro_page_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- BEGIN show_checkbox_3_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_HOMEPAGE_REDIRECTION}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="homepage_redirection" id="homepage_redirection_true" style="width: 14px; height: 14px;" value="true"{HOMEPAGE_REDIRECTION_ENABLED} />
+		<label for="homepage_redirection_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="homepage_redirection" id="homepage_redirection_false" style="width: 14px; height: 14px;" value="false"{HOMEPAGE_REDIRECTION_DISABLED} />
+		<label for="homepage_redirection_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_SMART_LOGIN}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="smart_login" id="smart_login_true" style="width: 14px; height: 14px;" value="true"{SMART_LOGIN_ENABLED} />
+		<label for="smart_login_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="smart_login" id="smart_login_false" style="width: 14px; height: 14px;" value="false"{SMART_LOGIN_DISABLED} />
+		<label for="smart_login_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- END show_checkbox_3_block -->
+<tr>
+	<td class="setting_name">{TEXT_LOGIN}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="frontend_login" id="frontend_login_true" style="width: 14px; height: 14px;" value="true"{PRIVATE_ENABLED} />
+		<label for="frontend_login_true">{TEXT_ENABLED}</label>
+		<input type="radio" name="frontend_login" id="frontend_login_false" style="width: 14px; height: 14px;" value="false"{PRIVATE_DISABLED} />
+		<label for="frontend_login_false">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<!-- BEGIN show_redirect_timer_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_REDIRECT_AFTER}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="redirect_timer" value="{REDIRECT_TIMER}" style="width:50%;" />
+		<label>&nbsp;&nbsp;( <strong>-1</strong> = {TEXT_DISABLED}, <strong>0 -10000</strong> )</label><br />
+	</td>
+</tr>
+<!-- END show_redirect_timer_block -->
+<tr>
+	<td class="setting_name">{TEXT_SIGNUP}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="frontend_signup">
+			<option value="false">{TEXT_DISABLED}</option>
+			<!-- BEGIN group_list_block -->
+				<option value="{ID}" {SELECTED}>{NAME}</option>
+			<!-- END group_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- BEGIN show_php_error_level_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_PHP_ERROR_LEVEL}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="er_level">
+			<option value="">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN error_reporting_list_block -->
+				<option value="{VALUE}"{SELECTED}>{NAME}</option>
+			<!-- END error_reporting_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- END show_php_error_level_block -->
+<!-- BEGIN show_wysiwyg_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_WYSIWYG_STYLE}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="wysiwyg_style" value="{WYSIWYG_STYLE}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_WYSIWYG_EDITOR}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="wysiwyg_editor">
+		<!-- BEGIN editor_list_block -->
+			<option value="{FILE}"{SELECTED}>{NAME}</option>
+		<!-- END editor_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- END show_wysiwyg_block -->
+<tr>
+	<td class="setting_name">&nbsp;</td>
+	<td class="setting_value_permissions">
+		<input type="submit" name="submit" value="{TEXT_SAVE}" class="save" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" class="reset" />
+	</td>
+	<td class="setting_value_permissions" style="text-align: right;">
+		<button title="{MODE_SWITCH_WARNING}" onclick="window.location = '{ADVANCED_LINK}'; return false;" class="{DISPLAY_ADVANCED_BUTTON}">{ADVANCED_BUTTON}</button>
+	</td>
+</tr>
+<tr>
+	<td colspan="3" style="padding-top: 10px;"><h2>{HEADING_DEFAULT_SETTINGS}</h2></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_LANGUAGE}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_language">
+			<!-- BEGIN language_list_block -->
+			<option value="{CODE}"{SELECTED} style="background: url({FLAG}.png) no-repeat center left; padding-left: 20px;">{NAME} ({CODE})</option>
+			<!-- END language_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- BEGIN show_charset_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_CHARSET}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_charset">
+			<option value="">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN charset_list_block -->
+				<option value="{VALUE}" {SELECTED}>{NAME}</option>
+			<!-- END charset_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- END show_charset_block -->
+<tr>
+	<td class="setting_name">{TEXT_TIMEZONE}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_timezone">
+			<option value="0">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN timezone_list_block -->
+				<option value="{VALUE}" {SELECTED}>{NAME}</option>
+			<!-- END timezone_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_DATE_FORMAT}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_date_format">
+			<option value="M d Y">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN date_format_list_block -->
+				<option value="{VALUE}" {SELECTED}>{NAME}</option>
+			<!-- END date_format_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_TIME_FORMAT}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_time_format">
+			<option value="g:i A">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN time_format_list_block -->
+				<option value="{VALUE}" {SELECTED}>{NAME}</option>
+			<!-- END time_format_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_TEMPLATE}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_template">
+		<!-- BEGIN template_list_block -->
+			<option value="{FILE}"{SELECTED}>{NAME}</option>
+		<!-- END template_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_THEME}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="default_theme">
+		<!-- BEGIN theme_list_block -->
+			<option value="{FILE}"{SELECTED}>{NAME}</option>
+		<!-- END theme_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">&nbsp;</td>
+	<td class="setting_value_permissions">
+		<input type="submit" name="submit" value="{TEXT_SAVE}" class="save" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" class="reset" />
+	</td>
+	<td class="setting_value_permissions" style="text-align: right;">
+		<button title="{MODE_SWITCH_WARNING}" onclick="window.location = '{ADVANCED_LINK}'; return false;" class="{DISPLAY_ADVANCED_BUTTON}">{ADVANCED_BUTTON}</button>
+	</td>
+</tr>
+<tr>
+	<td colspan="3" style="padding-top: 10px;"><h2>{HEADING_SEARCH_SETTINGS}</h2></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_VISIBILITY}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="search">
+			<option value="public">{TEXT_PUBLIC}</option>
+			<option value="private" {PRIVATE_SEARCH}>{TEXT_PRIVATE}</option>
+			<option value="registered" {REGISTERED_SEARCH}>{TEXT_REGISTERED}</option>
+			<option value="none" {NONE_SEARCH}>{TEXT_NONE}</option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_TEMPLATE}:</td>
+	<td class="setting_value" colspan="2">
+		<select name="search_template">
+		<!-- BEGIN search_template_list_block -->
+			<option value="{FILE}"{SELECTED}>{NAME}</option>
+		<!-- END search_template_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- BEGIN show_search_block -->
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_HEADER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="search_header" style="height: 100px;" cols="50" rows="3">{SEARCH_HEADER}</textarea>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_RESULTS_HEADER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="search_results_header" cols="50" rows="3">{SEARCH_RESULTS_HEADER}</textarea>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_RESULTS_LOOP}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="search_results_loop" cols="50" rows="3">{SEARCH_RESULTS_LOOP}</textarea>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_RESULTS_FOOTER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="search_results_footer" cols="50" rows="3">{SEARCH_RESULTS_FOOTER}</textarea>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_NO_RESULTS}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="search_no_results" value="{SEARCH_NO_RESULTS}" />
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_FOOTER}:</td>
+	<td class="setting_value" colspan="2">
+		<textarea name="search_footer" cols="50" rows="3">{SEARCH_FOOTER}</textarea>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_MODULE_ORDER}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="search_module_order" value="{SEARCH_MODULE_ORDER}" />
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_MAX_EXCERPT}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="search_max_excerpt" value="{SEARCH_MAX_EXCERPT}" />
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_TIME_LIMIT}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="text" name="search_time_limit" value="{SEARCH_TIME_LIMIT}" />
+	</td>
+</tr>
+<!-- END show_search_block -->
+<!-- BEGIN show_access_block -->
+<tr>
+	<td class="setting_name">&nbsp;</td>
+	<td class="setting_value_permissions">
+		<input type="submit" name="submit" value="{TEXT_SAVE}" class="save" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" class="reset" />
+	</td>
+	<td class="setting_value_permissions" style="text-align: right;">
+		<button title="{MODE_SWITCH_WARNING}" onclick="window.location = '{ADVANCED_LINK}'; return false;" class="{DISPLAY_ADVANCED_BUTTON}">{ADVANCED_BUTTON}</button>
+	</td>
+</tr>
+<tr>
+	<td colspan="3" style="padding-top: 10px;"><h2>{HEADING_SERVER_SETTINGS}</h2></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_SERVER_OPERATING_SYSTEM}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="operating_system" id="operating_system_linux" onclick="javascript: change_os('linux');" style="width: 14px; height: 14px;" value="linux"{LINUX_SELECTED} />
+		<label for="operating_system_linux" onclick="javascript: change_os('linux');">{TEXT_LINUX_UNIX_BASED}</label>
+		<input type="radio" name="operating_system" id="operating_system_windows" onclick="javascript: change_os('windows');" style="width: 14px; height: 14px;" value="windows"{WINDOWS_SELECTED} />
+		<label for="operating_system_windows" onclick="javascript: change_os('windows');">{TEXT_WINDOWS}</label>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name"><div id="{BASIC_FILE_PERMS_ID}1" style="margin: 0; padding: 0;">&nbsp;</div></td>
+	<td class="setting_value" colspan="2">
+		<div id="{BASIC_FILE_PERMS_ID}2" style="margin: 0; padding: 0;">
+			<input type="checkbox" name="world_writeable" id="world_writeable" style="width: 14px; height: 14px;" value="true"{WORLD_WRITEABLE_SELECTED} />
+			<label for="world_writeable">
+				{TEXT_WORLD_WRITEABLE_FILE_PERMISSIONS} (777)
+			</label>
+			<span class="warning">({WORLD_WRITEABLE_WARNING})</span>
+		</div>
+		<div id="{BASIC_FILE_PERMS_ID}3" style="margin: 0; padding: 0;"></div>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name"><div id="{ADVANCED_FILE_PERMS_ID}1" style="margin: 0; padding: 0;">{TEXT_FILESYSTEM_PERMISSIONS}:</div></td>
+	<td class="setting_value_permissions" id="file_mode">
+		<table summary="" cellpadding="2" cellspacing="0" width="90%" border="0" style="border-right: 1px solid #ddd;" id="{ADVANCED_FILE_PERMS_ID}2">
+		<tr>
+			<td colspan="3" style="text-align: center; font-weight: bold;">{TEXT_FILES}: {STRING_FILE_MODE}</td>
+		</tr>
+		<tr>
+			<td>{TEXT_USER}:</td>
+			<td>{TEXT_GROUP}:</td>
+			<td>{TEXT_OTHERS}:</td>
+		</tr>
+		<tr>
+			<td>
+				<input type="checkbox" name="file_u_r" id="file_u_r" value="true"{FILE_U_R_CHECKED} />
+				<label for="file_u_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="file_u_w" id="file_u_w" value="true"{FILE_U_W_CHECKED} />
+				<label for="file_u_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="file_u_e" id="file_u_e" value="true"{FILE_U_E_CHECKED} />
+				<label for="file_u_e">{TEXT_EXECUTE}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="file_g_r" id="file_g_r" value="true"{FILE_G_R_CHECKED} />
+				<label for="file_g_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="file_g_w" id="file_g_w" value="true"{FILE_G_W_CHECKED} />
+				<label for="file_g_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="file_g_e" id="file_g_e" value="true"{FILE_G_E_CHECKED} />
+				<label for="file_g_e">{TEXT_EXECUTE}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="file_o_r" id="file_o_r" value="true"{FILE_O_R_CHECKED} />
+				<label for="file_o_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="file_o_w" id="file_o_w" value="true"{FILE_O_W_CHECKED} />
+				<label for="file_o_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="file_o_e" id="file_o_e" value="true"{FILE_O_E_CHECKED} />
+				<label for="file_o_e">{TEXT_EXECUTE}</label>
+			</td>
+		</tr>
+		</table>
+	</td>
+	<td class="setting_value_permissions" id="dir_mode" style="text-align: right;">
+		<table summary="" cellpadding="2" cellspacing="0" width="90%" border="0" id="{ADVANCED_FILE_PERMS_ID}3">
+		<tr>
+			<td colspan="3" style="text-align: center; font-weight: bold;">{TEXT_DIRECTORIES}: {STRING_DIR_MODE}</td>
+		</tr>
+		<tr>
+			<td>{TEXT_USER}:</td>
+			<td>{TEXT_GROUP}:</td>
+			<td>{TEXT_OTHERS}:</td>
+		</tr>
+		<tr>
+			<td>
+				<input type="checkbox" name="dir_u_r" id="dir_u_r" value="true"{DIR_U_R_CHECKED} />
+				<label for="dir_u_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="dir_u_w" id="dir_u_w" value="true"{DIR_U_W_CHECKED} />
+				<label for="dir_u_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="dir_u_e" id="dir_u_e" value="true"{DIR_U_E_CHECKED} />
+				<label for="dir_u_e">{TEXT_EXECUTE}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="dir_g_r" id="dir_g_r" value="true"{DIR_G_R_CHECKED} />
+				<label for="dir_g_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="dir_g_w" id="dir_g_w" value="true"{DIR_G_W_CHECKED} />
+				<label for="dir_g_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="dir_g_e" id="dir_g_e" value="true"{DIR_G_E_CHECKED} />
+				<label for="dir_g_e">{TEXT_EXECUTE}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="dir_o_r" id="dir_o_r" value="true"{DIR_O_R_CHECKED} />
+				<label for="dir_o_r">{TEXT_READ}</label>
+				<br />
+				<input type="checkbox" name="dir_o_w" id="dir_o_w" value="true"{DIR_O_W_CHECKED} />
+				<label for="dir_o_w">{TEXT_WRITE}</label>
+				<br />
+				<input type="checkbox" name="dir_o_e" id="dir_o_e" value="true"{DIR_O_E_CHECKED} />
+				<label for="dir_o_e">{TEXT_EXECUTE}</label>
+			</td>
+		</tr>
+		</table>
+	</td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_PAGES_DIRECTORY}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="pages_directory" value="{PAGES_DIRECTORY}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_MEDIA_DIRECTORY}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="media_directory" value="{MEDIA_DIRECTORY}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_PAGE_EXTENSION}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="page_extension" value="{PAGE_EXTENSION}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_PAGE_SPACER}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="page_spacer" value="{PAGE_SPACER}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_RENAME_FILES_ON_UPLOAD}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="rename_files_on_upload" value="{RENAME_FILES_ON_UPLOAD}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_SESSION_IDENTIFIER}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="app_name" value="{APP_NAME}" /></td>
+</tr>
+<tr{DISPLAY_ADVANCED}>
+	<td class="setting_name">{TEXT_SEC_ANCHOR}:</td>
+	<td class="setting_value" colspan="2"><input type="text" name="sec_anchor" value="{SEC_ANCHOR}" /></td>
+</tr>
+<!-- BASIC MAILER SETTINGS -->
+<tr>
+	<td colspan="3" style="padding-top: 10px;">
+		<h2>{HEADING_WBMAILER_SETTINGS}</h2>
+		<p style="line-height: 1.4em; margin-top: 0;">{TEXT_WBMAILER_DEFAULT_SETTINGS_NOTICE}</p>
+	</td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WBMAILER_DEFAULT_SENDER_MAIL}:</td>
+	<td class="setting_value" colspan="2"><input type="text" style="width: 250px" name="server_email" value="{SERVER_EMAIL}" /></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WBMAILER_DEFAULT_SENDER_NAME}:</td>
+	<td class="setting_value" colspan="2"><input type="text" style="width: 250px" name="wbmailer_default_sendername" value="{WBMAILER_DEFAULT_SENDERNAME}" /></td>
+</tr>
+<tr>
+	<td class="setting_name">{TEXT_WBMAILER_FUNCTION}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="radio" name="wbmailer_routine" id="wbmailer_routine_phpmail" onclick="javascript: change_wbmailer('phpmail');" style="width: 14px; height: 14px;" value="phpmail"{PHPMAIL_SELECTED} />
+		<label for="wbmailer_routine_phpmail" onclick="javascript: change_wbmailer('phpmail');">{TEXT_WBMAILER_PHP}</label>
+		<input type="radio" name="wbmailer_routine" id="wbmailer_routine_smtp" onclick="javascript: change_wbmailer('smtp');" style="width: 14px; height: 14px;" value="smtp"{SMTPMAIL_SELECTED} />
+		<label for="wbmailer_routine_smtp" onclick="javascript: change_wbmailer('smtp');">{TEXT_WBMAILER_SMTP}</label>
+	</td>
+</tr>
+<!-- MORE ADVANCED SMTP MAILER SETTINGS -->
+<tr id="row_wbmailer_smtp_settings"{SMTP_VISIBILITY}>
+	<td colspan="3" style="padding-top: 10px;"><p style="line-height: 1.4em; margin-top: 0;">{TEXT_WBMAILER_NOTICE}</p></td>
+</tr>
+<tr id="row_wbmailer_smtp_host"{SMTP_VISIBILITY}>
+	<td class="setting_name">{TEXT_WBMAILER_SMTP_HOST}:</td>
+	<td class="setting_value" colspan="2"><input type="text" style="width: 250px" name="wbmailer_smtp_host" value="{WBMAILER_SMTP_HOST}" /></td>
+</tr>
+<!--  -->
+<tr id="row_wbmailer_smtp_auth_mode"{SMTP_VISIBILITY}>
+	<td class="setting_name">{TEXT_WBMAILER_SMTP_AUTH}:</td>
+	<td class="setting_value" colspan="2">
+		<input type="checkbox" name="wbmailer_smtp_auth" id="wbmailer_smtp_auth" onclick="javascript: toggle_wbmailer_auth();" style="width: 14px; height: 14px;" value="true" disabled="disabled" {SMTP_AUTH_SELECTED} />
+		<label for="wbmailer_smtp_auth" onclick="javascript: toggle_wbmailer_auth(this.value);">({TEXT_WBMAILER_SMTP_AUTH_NOTICE})</label>
+	</td>
+</tr>
+
+<tr id="row_wbmailer_smtp_username"{SMTP_VISIBILITY}>
+	<td class="setting_name">{TEXT_WBMAILER_SMTP_USERNAME}:</td>
+	<td class="setting_value" colspan="2"><input type="text" style="width: 250px" name="wbmailer_smtp_username" value="{WBMAILER_SMTP_USERNAME}" /></td>
+</tr>
+<tr id="row_wbmailer_smtp_password"{SMTP_VISIBILITY}>
+	<td class="setting_name">{TEXT_WBMAILER_SMTP_PASSWORD}:</td>
+	<td class="setting_value" colspan="2"><input type="password" style="width: 250px" name="wbmailer_smtp_password" value="{WBMAILER_SMTP_PASSWORD}" /></td>
+</tr>
+<!-- END show_access_block -->
+<tr>
+	<td class="setting_name">&nbsp;</td>
+	<td class="setting_value_permissions">
+		<input type="submit" name="submit" value="{TEXT_SAVE}" class="save" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" class="reset" />
+	</td>
+	<td class="setting_value_permissions" style="text-align: right;">
+		<button title="{MODE_SWITCH_WARNING}" onclick="window.location = '{ADVANCED_LINK}'; return false;" class="{DISPLAY_ADVANCED_BUTTON}">{ADVANCED_BUTTON}</button>
+	</td>
+</tr>
+</table>
+
+</form>
+
+<hr size="1" />
+
+<button title="{MODE_SWITCH_WARNING}" onclick="window.location = '{ADVANCED_LINK}'; return false;" class="{DISPLAY_ADVANCED_BUTTON}">{ADVANCED_BUTTON}</button>
+<br />
+<font class="{DISPLAY_ADVANCED_BUTTON}">{MODE_SWITCH_WARNING}</font>
+<script src="{ADMIN_URL}/settings/setting.js" type="text/javascript"></script>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/header.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/header.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/header.htt	(revision 1610)
@@ -0,0 +1,59 @@
+<!-- BEGIN header_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>{WEBSITE_TITLE}&raquo;{TEXT_ADMINISTRATION}-{SECTION_NAME}</title>
+<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
+<meta http-equiv="content-language" content="{LANGUAGE}" />
+<meta name="description" content="{TEXT_ADMINISTRATION}" />
+<meta name="keywords" content="{TEXT_ADMINISTRATION}" />
+<meta name="author" content="WebsiteBaker Org e.V." />
+<meta http-equiv="Content-Encoding" content="gzip" />
+<meta http-equiv="Accept-Encoding" content="gzip, deflate" />
+<link href="{THEME_URL}/theme.css" rel="stylesheet" type="text/css" />
+{BACKEND_MODULE_CSS}
+<script type="text/javascript">
+var WB_URL = '{WB_URL}';
+var THEME_URL = '{THEME_URL}';
+var ADMIN_URL = '{ADMIN_URL}';
+</script>
+<script src="{WB_URL}/include/jquery/jquery-min.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-insert.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-include.js" type="text/javascript"></script>
+<!--[if lt IE 7]><script type="text/javascript" src="{WB_URL}/include/jquery/plugins/jquery-pngFix.js"></script><![endif]-->
+<script src="{THEME_URL}/jquery/jquery-plugins.js" type="text/javascript"></script>
+<script type="text/javascript">
+function confirm_link(message, url) {
+	if(confirm(message)) location.href = url;
+}
+</script>
+{BACKEND_MODULE_JS}
+</head>
+<body>
+<div id="content_container">
+	<div id="admin_header">
+	  <div id="header_top">
+	    <div id="topmenu"> <a href="{ADMIN_URL}" title="{TITLE_START}">Home</a>| <a href="{URL_VIEW}" target="_blank" title="{TITLE_VIEW}">{TITLE_VIEW}</a>| <a href="{ADMIN_URL}/logout/" title="{TITLE_LOGOUT}">{TITLE_LOGOUT}</a>
+		  <br />
+	      <br />
+	      <span class="version">CMS Version {VERSION} {SP}</span><br/>
+	      <span class="version">Revision {REVISION}</span><br/>
+	      <span class="version">{ADMIN_VERSION}</span>
+		 </div>
+		<div>
+	    <a href="{ADMIN_URL}" title="{TITLE_START}" id="website_title">
+	    {WEBSITE_TITLE} - {TEXT_ADMINISTRATION}
+	    <!-- <img src="{THEME_URL}/images/logo.png" border="0" alt="Logo" /> -->
+	    </a>
+		</div>
+		</div>
+	  <div class="menu">
+	    <ul>
+	      <!-- BEGIN linkBlock -->
+	      <li class="{CLASS}"><a href="{LINK}" target="{TARGET}"><span>{TITLE}</span></a></li>
+	      <!-- END linkBlock -->
+	    </ul>
+	  </div>
+	</div>
+	<div class="content">
+<!-- END header_block -->
Index: tags/2.8.3/wb/admin/themes/templates/login_forgot.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/login_forgot.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/login_forgot.htt	(revision 1610)
@@ -0,0 +1,70 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Retrieve Login Details</title>
+<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
+<meta http-equiv="content-language" content="{LANGUAGE}" />
+<meta name="description" content="Retrieve Login Details" />
+<meta name="keywords" content="Retrieve Login Details" />
+<link href="{THEME_URL}/theme.css" rel="stylesheet" type="text/css" />
+</head>
+<body onload="document.forgot_pass.email.focus();">
+
+<div style="text-align:left;font-size:20px;color:#fff;padding:15px 0 0 50px;height:100px;">
+	<!-- <img src="{THEME_URL}/images/logo.png" alt="Logo" /> -->
+	{SECTION_FORGOT}
+</div> 
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="770" align="center" style="margin-top: 30px;">
+<tr>
+	<td class="content">
+	
+	<form name="forgot_pass" action="{ACTION_URL}" method="post">
+	<input type="hidden" name="url" value="{URL}" />
+		<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="500">
+		<tr>
+			<td height="40" align="center" style="color: #{MESSAGE_COLOR};" colspan="2">{MESSAGE}</td>
+		</tr>
+		<tr style="{DISPLAY_FORM}">
+			<td height="10" colspan="2"></td>
+		</tr>
+		<tr style="{DISPLAY_FORM}">
+			<td width="165" height="30" align="right">{TEXT_EMAIL}:</td>
+			<td><input type="text" maxlength="255" name="email" value="{EMAIL}" style="width: 180px;" /></td>
+		</tr>
+		<tr style="{DISPLAY_FORM}" height="30">
+			<td>&nbsp;</td>
+			<td><input type="submit" name="submit" value="{TEXT_SEND_DETAILS}" style="width: 180px; font-size: 10px; text-transform: uppercase; color: #003366; border: 1px solid #336699; background-color: #DDDDDD; padding: 3px;"></td>
+		</tr>
+		<tr style="{DISPLAY_FORM}">
+			<td height="10" colspan="2"></td>
+		</tr>
+		</table>
+	</form>
+	
+	<center>
+		<a href="{LOGIN_URL}">{TEXT_NEED_TO_LOGIN}</a>
+		<br />
+		<br />
+		<a href="{WB_URL}/">{TEXT_HOME}</a>
+	</center>
+
+	</td>
+</tr>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding: 10px 0px 10px 0px;">
+<tr>
+	<td style="font-size:12px;text-align:center;">
+      <!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+      <a href="http://www.websitebaker2.org/" title="external">WebsiteBaker</a> is released under the
+      <a href="http://www.gnu.org/licenses/gpl.html" title="WebsiteBaker is released under the GNU General Public License">GNU General Public License</a>
+      <!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+	</td>
+</tr>
+</table>
+
+</body>
+</html>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/error.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/error.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/error.htt	(revision 1610)
@@ -0,0 +1,6 @@
+<!-- BEGIN main_block -->
+<div class="error-box rounded">
+	<p>{MESSAGE}</p>
+<input type="button" name="submit" value="{BACK}" onclick="javascript: window.location = '{LINK}';" />
+</div>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/footer.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/footer.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/footer.htt	(revision 1610)
@@ -0,0 +1,19 @@
+<!-- BEGIN footer_block -->
+
+</div>
+</div>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding: 10px 0;">
+  <tr>
+    <td style="font-size:12px;text-align:center;">
+      <!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+      <a href="http://www.websitebaker2.org/" title="external">WebsiteBaker</a> is released under the
+      <a href="http://www.gnu.org/licenses/gpl.html" title="WebsiteBaker is released under the GNU General Public License">GNU General Public License</a>
+      <!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+    </td>
+  </tr>
+</table>
+{BACKEND_BODY_MODULE_JS}
+</body>
+</html>
+<!-- END footer_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/pages.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/pages.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/pages.htt	(revision 1610)
@@ -0,0 +1,90 @@
+<!-- BEGIN main_block -->
+<div class="{DISPLAY_ADD}">
+<h2>{HEADING_ADD_PAGE}</h2>
+<form name="add" action="add.php" method="post">
+{FTAN}
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+  <tr>
+	<td width="70" height="20">{TEXT_TITLE}:</td>
+	<td width="240" height="20"><input type="text" name="title" style="width: 232px;" /></td>
+	<td rowspan="6" valign="top" style="padding-left: 20px; padding-top: 8px;">{TEXT_ADMINISTRATORS}:
+		<ul style="list-style-type: none; margin: 0; padding: 0;">
+			<!-- BEGIN group_list_block -->
+			<li>
+			<input type="checkbox" name="admin_groups[]" id="admin_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+			<label for="admin_group_{TOGGLE}">{NAME}</label>
+			</li>
+			<!-- END group_list_block -->
+		</ul>
+	</td>
+	<td rowspan="6" valign="top" style="padding-left: 20px; padding-top: 8px;">
+		<div id="viewers" style="display: none;">{TEXT_REGISTERED_VIEWERS}:
+			<ul style="list-style-type: none; margin: 0; padding: 0;">
+				<!-- BEGIN group_list_block2 -->
+				<li>
+				<input type="checkbox" name="viewing_groups[]" id="viewing_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+				<label for="viewing_group_{TOGGLE}">{NAME}</label>
+				</li>
+				<!-- END group_list_block2 -->
+			</ul>
+		</div>
+	</td>
+  </tr>
+  <tr>
+	<td width="70">{TEXT_TYPE}:</td>
+	<td width="240">
+		<select name="type" style="width: 240px;">
+			<!-- BEGIN module_list_block -->
+				<option value="{VALUE}"{SELECTED}>{NAME}</option>
+			<!-- END module_list_block -->
+		</select>
+	</td>
+  </tr>
+  <tr>
+	<td width="70">{TEXT_PARENT}:</td>
+	<td width="240">
+		<select  name="parent" style="width: 240px;" onchange="return disabled_hack_for_ie(this);">
+			<!-- BEGIN page_list_block2 -->
+			<option value="{ID}"{DISABLED} style="background: {FLAG_ROOT_ICON} no-repeat center left; padding-left: 20px;">{TITLE}</option>
+			<!-- END page_list_block2 -->
+		</select>
+	</td>
+  </tr>
+  <tr>
+	<td width="70">{TEXT_VISIBILITY}:</td>
+	<td width="240">
+		<select name="visibility" onchange="javascript: toggle_viewers();" style="width: 240px;">
+			<option value="public"{SELECTED}>{TEXT_PUBLIC}</option>
+			<option value="private">{TEXT_PRIVATE}</option>
+			<option value="registered">{TEXT_REGISTERED}</option>
+			<option value="hidden">{TEXT_HIDDEN}</option>
+			<option value="none">{TEXT_NONE}</option>
+		</select>
+	</td>
+  </tr>
+  <tr>
+	<td width="70">&nbsp;</td>
+	<td colspan="4">
+		<input type="submit" name="submit" value="{TEXT_ADD}" style="width: 117px;" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" style="width: 117px;" />
+	</td>
+  </tr>
+  <tr>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+  </tr>
+</table>
+</form>
+</div>
+<div class="{DISPLAY_INTRO}" style="padding-top: 10px;">
+<br />
+<h2>{HEADING_MODIFY_INTRO_PAGE}</h2>
+<a href="intro.php">{INTRO_LINK}</a>
+</div>
+<!-- Addition for remembering expanded state of pages -->
+<script type="text/javascript">
+var THEME_URL = '{THEME_URL}';
+var WB_URL = '{WB_URL}';
+</script>
+<script src="{ADMIN_URL}/pages/page_index.js" type="text/javascript"></script>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/users.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/users.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/users.htt	(revision 1610)
@@ -0,0 +1,32 @@
+<!-- BEGIN main_block -->
+
+<form name="users" action="users.php" method="post">
+<input type="hidden" name="userstatus" value="{USER_STATUS}" />
+{FTAN}
+
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td align="left"><h2>{HEADING_MODIFY_DELETE_USER}</h2></td>
+		<td align="right">
+		<!-- BEGIN manage_groups_block -->
+		<a href="{ADMIN_URL}/groups/index.php">{TEXT_MANAGE_GROUPS}</a>
+		<!-- END manage_groups_block -->
+		</td>
+     </tr>
+</table>
+<button type="button" name="status" title="{TEXT_USERS}" style="width: 30px; background: {STATUS_ICON} no-repeat center" value="{USER_STATUS}" onclick="javascript: window.location = 'index.php?status={USER_STATUS}';" class="status {DISPLAY_MODIFY}" >&nbsp;</button>
+<select name="user_id" style="width: 500px;">
+<!-- BEGIN list_block -->
+	<option value="{VALUE}" {STATUS}>{NAME}</option>
+<!-- END list_block -->
+</select>
+
+<input type="submit" name="modify" style="width: 100px;" value="{TEXT_MODIFY}" class="{DISPLAY_MODIFY}" />
+<input type="submit" name="delete" style="width: 100px;" value="{TEXT_DELETE}" onclick="return confirm('{CONFIRM_DELETE}');" class="{DISPLAY_DELETE}" />
+
+</form>
+
+<br />
+<h2 style="margin-top: 20px;" class="{DISPLAY_ADD}">{HEADING_ADD_USER}</h2>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/access.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/access.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/access.htt	(revision 1610)
@@ -0,0 +1,33 @@
+<!-- BEGIN main_block -->
+<h2>{ACCESS}</h2>
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="99%" align="center">
+	<tr>
+		<td align="center" valign="top">
+			<!-- BEGIN users_block -->	
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_USERS} >
+				<tr>
+					<td class="graphic" align="center" valign="top" rowspan="2">
+						<a href="{ADMIN_URL}/users/index.php"><img src="{THEME_URL}/icons/users.png" alt="{USERS}" /></a>
+					</td>
+					<td class="description" valign="top">
+						<a href="{ADMIN_URL}/users/index.php"><span class="title">{USERS}</span></a><p>{USERS_OVERVIEW}</p>
+					</td>
+				</tr>
+			</table>	
+			<!-- END users_block -->
+			<!-- BEGIN groups_block -->		
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_GROUPS} >
+				<tr>
+					<td class="graphic" align="center" valign="top" rowspan="2">
+						<a href="{ADMIN_URL}/groups/index.php"><img src="{THEME_URL}/icons/groups.png" alt="{GROUPS}" /></a>
+					</td>
+					<td class="description" valign="top">
+						<a href="{ADMIN_URL}/groups/index.php"><span class="title">{GROUPS}</span></a><p>{GROUPS_OVERVIEW}</p>
+					</td>
+				</tr>
+			</table>
+			<!-- END groups_block -->
+		</td>
+	</tr>
+</table>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/templates_details.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/templates_details.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/templates_details.htt	(revision 1610)
@@ -0,0 +1,32 @@
+<!-- BEGIN main_block -->
+
+<h2>{HEADING_TEMPLATE_DETAILS}</h2>
+
+<table summary="" cellpadding="5" cellspacing="0" border="0">
+<tr>
+	<td width="100">{TEXT_NAME}:</td>
+	<td>{NAME}</td>
+</tr>
+<tr>
+	<td>{TEXT_AUTHOR}:</td>
+	<td>{AUTHOR}</td>
+</tr>
+<tr>
+	<td>{TEXT_VERSION}:</td>
+	<td>{VERSION}</td>
+</tr>
+<tr>
+	<td>{TEXT_DESIGNED_FOR}:</td>
+	<td>Website Baker {DESIGNED_FOR}</td>
+</tr>
+<tr>
+	<td valign="top">{TEXT_DESCRIPTION}:</td>
+	<td style="text-align: justify;">{DESCRIPTION}</td>
+</tr>
+</table>
+
+<br />
+
+<button onclick="window.location = 'index.php';">{TEXT_BACK}</button>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/pages_modify.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/pages_modify.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/pages_modify.htt	(revision 1610)
@@ -0,0 +1,25 @@
+<!-- BEGIN main_block -->
+
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+<tr style="background:#f0f0f0;">
+	<td valign="middle" align="left"><h2>{HEADING_MODIFY_PAGE}</h2></td>
+	<td align="left" width="20%">ID: {PAGE_ID}</td>
+	<td align="right">
+		{TEXT_CURRENT_PAGE}:
+		<b>{PAGE_TITLE}</b>
+		- 
+		<a href="{ADMIN_URL}/pages/settings.php?page_id={PAGE_IDKEY}">{TEXT_CHANGE_SETTINGS}</a>
+<!-- BEGIN show_section_block -->
+		<font style="{DISPLAY_MANAGE_SECTIONS}">-</font>
+		<a href="{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}" style="{DISPLAY_MANAGE_SECTIONS}">{TEXT_MANAGE_SECTIONS}</a>
+<!-- END show_section_block -->
+		<font style="color:#999;" class="{CLASS_DISPLAY_MODIFIED}"><br />
+<!-- BEGIN show_modify_block -->
+		{LAST_MODIFIED} {MODIFIED_BY} ({MODIFIED_BY_USERNAME}), {MODIFIED_WHEN}
+<!-- END show_modify_block -->
+		</font>
+	</td>
+</tr>
+</table>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/success.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/success.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/success.htt	(revision 1610)
@@ -0,0 +1,11 @@
+<!-- BEGIN main_block -->
+<div class="msg-box rounded">
+	<p>{MESSAGE}</p>
+<!-- BEGIN show_redirect_block -->
+ <script type="text/javascript">
+  setTimeout("location.href='{REDIRECT}'", {REDIRECT_TIMER});
+ </script>
+<!-- END show_redirect_block -->
+<input type="button" name="submit" value="{BACK}" onclick="javascript: window.location = '{REDIRECT}';" />
+</div>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/modules.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/modules.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/modules.htt	(revision 1610)
@@ -0,0 +1,136 @@
+<!-- BEGIN main_block -->
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td align="right">
+			{URL_TEMPLATES}
+			-
+			{URL_LANGUAGES}
+			-
+			{URL_ADVANCED}
+		</td>
+     </tr>
+</table>
+
+<form name="install" enctype="multipart/form-data" action="install.php" method="post" class="{DISPLAY_INSTALL}">
+{FTAN}
+  <h2>{HEADING_INSTALL_MODULE}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td valign="middle">
+        <input type="file" name="userfile" size="97" />
+        <script type="text/javascript">
+		document.install.userfile.focus();
+		</script><br />
+        <input type="checkbox" name="overwrite" value="false"  />
+		<span>{OVERWRITE_NEWER_FILES}</span>
+      </td>
+      <td width="110" align="left">
+        <input type="submit" name="submit" value="{TEXT_INSTALL}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<form name="uninstall" action="uninstall.php" method="post" class="{DISPLAY_UNINSTALL}">
+{FTAN}
+  <h2>{HEADING_UNINSTALL_MODULE}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td>
+        <select name="file" style="width: 97;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN module_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+          <!-- END module_list_block -->
+        </select>
+      </td>
+      <td width="110">
+        <input type="submit" name="submit" value="{TEXT_UNINSTALL}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<form name="details" action="details.php" method="post" class="{DISPLAY_LIST}">
+{FTAN}
+  <h2>{HEADING_MODULE_DETAILS}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td>
+        <select name="file" style="width: 97%;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN module_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+          <!-- END module_list_block -->
+        </select>
+      </td>
+      <td width="110">
+        <input type="submit" name="submit" value="{TEXT_VIEW_DETAILS}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<div class="{DISPLAY_MANUAL_INSTALL}">
+  <h2>{HEADING_INVOKE_MODULE_FILES}</h2>
+  <p>{TEXT_MANUAL_INSTALLATION}</p>
+  <form name="manual_install" action="manual_install.php" method="post" class="{INSTALL_VISIBLE}">
+{FTAN}
+  <table summary="" cellpadding="0" cellspacing="2" border="0" width="80%">
+	  <tr>
+		<td width="150" valign="middle" nowrap="nowrap">{TEXT_FILE}: "install.php"</td>
+		<td valign="middle">
+			<input type="hidden" name="action" value="install" />
+			<select name="file" style="width: 250px;">
+	        <option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN install_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+			<!-- END install_list_block -->
+			</select>
+			<input type="submit" name="submit" value="{TEXT_EXECUTE}" style="width:100px;" />
+		</td>
+	  </tr>
+  </table>
+  </form>
+  
+  <form name="manual_upgrade" action="manual_install.php" method="post" class="{UPGRADE_VISIBLE}">
+{FTAN}
+  <table summary="" cellpadding="0" cellspacing="2" border="0" width="80%">
+	  <tr>
+		<td width="150" valign="middle" nowrap="nowrap">{TEXT_FILE}: "upgrade.php"</td>
+		<td valign="middle" >
+			<input type="hidden" name="action" value="upgrade" />
+			<select name="file" style="width: 250px;">
+	        <option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN install_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+			<!-- END install_list_block -->
+			</select>
+			<input type="submit" name="submit" value="{TEXT_EXECUTE}" style="width:100px;" />
+		</td>
+	  </tr>
+  </table>
+  </form>
+
+  <form name="manual_uninstall" action="manual_install.php" method="post" class="{UNINSTALL_VISIBLE}">
+{FTAN}
+  <table summary="" cellpadding="0" cellspacing="2" border="0" width="80%">
+	  <tr>
+		<td width="150" valign="middle" nowrap="nowrap">{TEXT_FILE}: "uninstall.php"</td>
+		<td valign="middle">
+			<input type="hidden" name="action" value="uninstall" />
+			<select name="file" style="width: 250px;">
+	        <option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+			<!-- BEGIN install_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+			<!-- END install_list_block -->
+			</select>
+			<input type="submit" name="submit" value="{TEXT_EXECUTE}" style="width:100px;" />
+			</td>
+	  </tr>
+  </table>
+  </form>
+
+  <p style="color:red;">{TEXT_MANUAL_INSTALLATION_WARNING}</p>
+</div>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/addons.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/addons.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/addons.htt	(revision 1610)
@@ -0,0 +1,60 @@
+<!-- BEGIN main_block -->
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td valign="middle" align="left"><h2>{ADDONS_OVERVIEW}</h2></td>
+		<td align="right">{URL_ADVANCED}</td>
+	</tr>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="99%" align="center">
+	<tr>
+		<td align="center" valign="top">
+			<!-- BEGIN modules_block -->
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_MODULES} >
+				<tr>
+					<td class="graphic" align="center" valign="middle" rowspan="2"><a href="{ADMIN_URL}/modules/index.php"><img src="{THEME_URL}/icons/modules.png" alt="0" /> </a> </td>
+					<td class="description" valign="top"><a href="{ADMIN_URL}/modules/index.php"><span class="title">{MODULES}</span></a><p>{MODULES_OVERVIEW}</p></td>
+				</tr>
+			</table>
+			<!-- END modules_block -->
+			<!-- BEGIN templates_block -->
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_TEMPLATES} >
+				<tr>
+					<td class="graphic" align="center" valign="middle" rowspan="2"><a href="{ADMIN_URL}/templates/index.php"><img src="{THEME_URL}/icons/templates.png" alt="{TEMPLATES}" /> </a> </td>
+					<td class="description" valign="top"><a href="{ADMIN_URL}/templates/index.php"><span class="title">{TEMPLATES}</span></a><p>{TEMPLATES_OVERVIEW}</p></td>
+				</tr>
+			</table>
+			<!-- END templates_block -->
+			<!-- BEGIN languages_block -->
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_LANGUAGES} >
+				<tr>
+					<td class="graphic" align="center" valign="middle" rowspan="2"><a href="{ADMIN_URL}/languages/index.php"><img src="{THEME_URL}/icons/languages.png" alt="{LANGUAGES}" /> </a> </td>
+					<td class="description" valign="top"> <a href="{ADMIN_URL}/languages/index.php"><span class="title">{LANGUAGES}</span></a><p>{LANGUAGES_OVERVIEW}</p></td>
+				</tr>
+			</table>
+			<!-- END languages_block -->
+			<!-- BEGIN reload_block -->
+			<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" {DISPLAY_RELOAD} >
+				<tr>
+					<td class="graphic" align="center" valign="middle" rowspan="2"><img src="{THEME_URL}/icons/admintools.png" alt="{TXT_ADMIN_SETTINGS}" /> </td>
+					<td class="description" valign="top"><span class="title">{TXT_ADMIN_SETTINGS}</span>
+						<form action="{RELOAD_URL}" method="post">
+						{FTAN}
+							{MESSAGE_RELOAD_ADDONS}
+							<br style="margin-bottom: 0.5em" />
+							<input {DISPLAY_MODULES} type="checkbox" name="reload_modules" id="reload_modules" value="true" />
+							<label {DISPLAY_MODULES} for="reload_modules">{MODULES}</label>
+							<input {DISPLAY_TEMPLATES} type="checkbox" name="reload_templates" id="reload_templates" value="true" />
+							<label {DISPLAY_TEMPLATES} for="reload_templates">{TEMPLATES}</label>
+							<input {DISPLAY_LANGUAGES} type="checkbox" name="reload_languages" id="reload_languages" value="true" />
+							<label {DISPLAY_LANGUAGES} for="reload_languages">{LANGUAGES}</label>
+							<input type="submit" name="submit" value="{TEXT_RELOAD}" />
+						</form>
+					</td>
+				</tr>
+			</table>
+			<!-- END reload_block -->
+		</td>
+	</tr>
+</table>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/login.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/login.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/login.htt	(revision 1610)
@@ -0,0 +1,83 @@
+<!-- BEGIN mainBlock -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>{TEXT_LOGIN}</title>
+<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
+<meta http-equiv="content-language" content="{LANGUAGE}" />
+<meta name="description" content="{TEXT_LOGIN}" />
+<meta name="keywords" content="{TEXT_LOGIN}" />
+<link href="{THEME_URL}/theme.css" rel="stylesheet" type="text/css" />
+</head>
+<body onload="document.login.{USERNAME_FIELDNAME}.focus();">
+<div style="text-align:left;font-size:20px;color:#fff;padding:15px 0 0 50px;height:100px;">
+	<!-- <img src="{THEME_URL}/images/logo.png" alt="Logo" /> -->
+	{TEXT_LOGIN}
+</div> 
+<table class="container" summary="" cellpadding="0" cellspacing="0" border="0" width="770" align="center" style="margin-top: 30px;">
+  <tr>
+    <td class="content">
+      <form name="login" class="login" action="{ACTION_URL}" method="post">
+        <input type="hidden" name="url" value="{URL}" />
+        <input type="hidden" name="username_fieldname" value="{USERNAME_FIELDNAME}" />
+        <input type="hidden" name="password_fieldname" value="{PASSWORD_FIELDNAME}" />
+        <table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="500">
+          <tr>
+            <td height="40" align="center" colspan="2">{MESSAGE}</td>
+          </tr>
+          <tr>
+            <td height="10" colspan="2"></td>
+          </tr>
+          <tr>
+            <td width="170" height="30" align="right">{TEXT_USERNAME}:</td>
+            <td>
+              <input type="text" maxlength="{MAX_USERNAME_LEN}" name="{USERNAME_FIELDNAME}" value="{USERNAME}" style="width: 180px;" />
+            </td>
+          </tr>
+          <tr>
+            <td width="170" height="30" align="right">{TEXT_PASSWORD}:</td>
+            <td>
+              <input type="password" maxlength="{MAX_PASSWORD_LEN}" name="{PASSWORD_FIELDNAME}" style="width: 180px;" />
+            </td>
+          </tr>
+          <tr style="{DISPLAY_REMEMBER_ME}">
+            <td>&nbsp;</td>
+            <td>
+              <input type="checkbox" name="remember" id="remember" value="true" />
+              <label for="remember">{TEXT_REMEMBER_ME}</label>
+            </td>
+          </tr>
+          <tr>
+            <td>&nbsp;</td>
+            <td>
+              <input type="submit" name="submit" value="{TEXT_LOGIN}" style="width: 180px; font-size: 10px; text-transform: uppercase; color: #003366; border: 1px solid #336699; background-color: #DDDDDD; padding: 3px;" />
+            </td>
+          </tr>
+          <tr>
+            <td height="10" colspan="2"></td>
+          </tr>
+        </table>
+      </form>
+      <center>
+        <a href="{FORGOTTEN_DETAILS_APP}">{TEXT_FORGOTTEN_DETAILS}</a> 
+		<br />
+        <br />
+        <br />
+        <a href="{WB_URL}/">{TEXT_HOME}</a>
+      </center>
+    </td>
+  </tr>
+</table>
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding:10px 0;">
+  <tr>
+    <td style="font-size:10px;text-align:center;">
+      <!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+      <a href="http://www.websitebaker2.org/" title="external">WebsiteBaker</a> is released under the
+      <a href="http://www.gnu.org/licenses/gpl.html" title="WebsiteBaker is released under the GNU General Public License">GNU General Public License</a>
+      <!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+    </td>
+  </tr>
+</table>
+</body>
+</html>
+<!-- END mainBlock -->
Index: tags/2.8.3/wb/admin/themes/templates/admintools.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/admintools.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/admintools.htt	(revision 1610)
@@ -0,0 +1,22 @@
+<!-- BEGIN main_block -->
+<h2>{HEADING_ADMINISTRATION_TOOLS} </h2>
+<div id="admintools">
+	<ul>
+	<!-- BEGIN tool_list_block -->
+	<li>
+		<table summary="" cellpadding="0" cellspacing="0" border="0" class="section" width="100%">
+		<tr>
+			<td class="graphic" align="center" valign="middle" rowspan="2">
+				<a class= "title" href="{ADMIN_URL}/admintools/tool.php?tool={TOOL_DIR}"><img src="{THEME_URL}/icons/admintools.png" border="0" alt="{TOOL_NAME}" align="left" /></a>
+			</td>
+			<td class="description" valign="top">
+				<a href="{ADMIN_URL}/admintools/tool.php?tool={TOOL_DIR}"><span class="title">{TOOL_NAME}</span></a>{TOOL_DESCRIPTION}
+			</td>
+		</tr>
+		</table>
+	</li>
+	<!-- END tool_list_block -->
+	</ul>
+	{TOOL_LIST}
+</div>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/warning.html
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/warning.html	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/warning.html	(revision 1610)
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<title>Maximum Invalid Login Attemps Exceeded</title>
+<style type="text/css"><!--
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	margin: 0px;
+  background: #A8BCCB url(../images/background.png) ;
+  background-repeat:repeat-x;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: underline;
+	color: #336699;
+}
+h1 {
+	text-align: center;
+	font-size: 18px;
+	color: #000;
+	text-transform: uppercase;
+}
+hr {
+	height: 1px;
+	color: #336699;
+	background-color: #336699;
+	border: 0;
+}
+div#message {
+	text-align: center;
+}
+--></style></head>
+<body>
+
+<div id='message'>
+	<h1>Excessive Invalid Logins</h1>
+	You have attempted to login too many times
+</div>
+
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/themes/templates/warning.html
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/html
\ No newline at end of property
Index: tags/2.8.3/wb/admin/themes/templates/languages_details.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/languages_details.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/languages_details.htt	(revision 1610)
@@ -0,0 +1,32 @@
+<!-- BEGIN main_block -->
+
+<h2>{HEADING_LANGUAGE_DETAILS}</h2>
+
+<table summary="" cellpadding="5" cellspacing="0" border="0">
+<tr>
+	<td width="100">{TEXT_NAME}:</td>
+	<td>{NAME}</td>
+</tr>
+<tr>
+	<td>{TEXT_CODE}:</td>
+	<td>{CODE}</td>
+</tr>
+<tr>
+	<td>{TEXT_AUTHOR}:</td>
+	<td>{AUTHOR}</td>
+</tr>
+<tr>
+	<td>{TEXT_VERSION}:</td>
+	<td>{VERSION}</td>
+</tr>
+<tr>
+	<td>{TEXT_DESIGNED_FOR}:</td>
+	<td>Website Baker {DESIGNED_FOR}</td>
+</tr>
+</table>
+
+<br />
+
+<button onclick="window.location = 'index.php';">{TEXT_BACK}</button>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/groups.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/groups.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/groups.htt	(revision 1610)
@@ -0,0 +1,30 @@
+<!-- BEGIN main_block -->
+
+<form name="groups" action="groups.php" method="post">
+ {FTAN}
+  <table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td align="left"><h2>{HEADING_MODIFY_DELETE_GROUP}</h2></td>
+		<td align="right">
+		<!-- BEGIN manage_users_block -->
+		<a href="{ADMIN_URL}/users/index.php">{TEXT_MANAGE_USERS}</a>
+		<!-- END manage_users_block -->
+		</td>
+     </tr>
+</table>
+
+  <select name="group_id" style="width: 500px;">
+    <!-- BEGIN list_block -->
+    <option value="{VALUE}">
+    {NAME}
+    </option>
+    <!-- END list_block -->
+  </select>
+  <input type="submit" name="modify" style="width: 100px;" value="{TEXT_MODIFY}" class="{DISPLAY_MODIFY}" />
+  <input type="submit" name="delete" style="width: 100px;" value="{TEXT_DELETE}" onclick="return confirm('{CONFIRM_DELETE}');" class="{DISPLAY_DELETE}" />
+</form>
+<br />
+<h2 class="{DISPLAY_ADD}">
+  {HEADING_ADD_GROUP}
+</h2>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/users_form.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/users_form.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/users_form.htt	(revision 1610)
@@ -0,0 +1,95 @@
+<!-- BEGIN main_block -->
+
+<script type="text/javascript">
+function toggle_radio(radio_on, radio_off) {
+	document.getElementById(radio_on).checked = true;
+	document.getElementById(radio_off).checked = true;
+}
+</script>
+
+<h2 style="{DISPLAY_EXTRA}">{HEADING_MODIFY_USER}</h2>
+
+<form name="user" action="{ACTION_URL}" method="post" class="{DISPLAY_ADD}">
+<input type="hidden" name="user_id" value="{USER_ID}" />
+<input type="hidden" name="username_fieldname" value="{USERNAME_FIELDNAME}" />
+{FTAN}
+<table summary="" cellpadding="5" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="150">{TEXT_USERNAME}:</td>
+	<td class="value_input">
+		<input type="text" name="{USERNAME_FIELDNAME}" maxlength="30" value="{USERNAME}" />
+	</td>
+</tr>
+<tr>
+	<td>{TEXT_PASSWORD}:</td>
+	<td class="value_input">
+		<input type="password" name="password" maxlength="30" />
+	</td>
+</tr>
+<tr>
+	<td>{TEXT_RETYPE_PASSWORD}:</td>
+	<td class="value_input">
+		<input type="password" name="password2" maxlength="30" />
+	</td>
+</tr>
+<tr style="{DISPLAY_EXTRA}">
+	<td>&nbsp;</td>
+	<td style="font-size: 10px;">
+		{CHANGING_PASSWORD}
+	</td>
+</tr>
+<tr>
+	<td>{TEXT_DISPLAY_NAME}:</td>
+	<td class="value_input">
+		<input type="text" name="display_name" maxlength="255" value="{DISPLAY_NAME}" />
+	</td>
+</tr>
+<tr>
+	<td>{TEXT_EMAIL}:</td>
+	<td class="value_input">
+		<input type="text" name="email" maxlength="255" value="{EMAIL}" />
+	</td>
+</tr>
+<tr style="{DISPLAY_HOME_FOLDERS}">
+	<td>{TEXT_HOME_FOLDER}:</td>
+	<td class="value_input">
+		<select name="home_folder">
+			<option value="">{TEXT_NONE}</option>
+			<!-- BEGIN folder_list_block -->
+			<option value="{FOLDER}"{SELECTED}>{NAME}</option>
+			<!-- END folder_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td>{TEXT_GROUP}:</td>
+	<td class="value_input">
+		<select name="groups[]" multiple="multiple" size="5">
+		<!-- BEGIN group_list_block -->
+			<option value="{ID}" {SELECTED}>{NAME}</option>
+		<!-- END group_list_block -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td>&nbsp;</td>
+	<td>
+		<input type="radio" name="active[]" id="active" value="1" {ACTIVE_CHECKED} />
+		<label for="active">{TEXT_ACTIVE}</label>
+		<input type="radio" name="active[]" id="disabled" value="0" {DISABLED_CHECKED} />
+		<label for="disabled">{TEXT_DISABLED}</label>
+	</td>
+</tr>
+<tr>
+	<td>&nbsp;</td>
+	<td>
+		<input type="submit" name="submit" value="{SUBMIT_TITLE}" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" />
+		<input type="button" style="width: 100px; margin-top: 5px;" onclick="javascript: window.location = 'index.php';" value="{TEXT_CANCEL}">
+	</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/setparameter.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/setparameter.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/setparameter.htt	(revision 1610)
@@ -0,0 +1,64 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Set Upload Parameters</title>
+
+
+<style type="text/css">
+body,td,th,input,textarea {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+}
+body {
+	background-color: #FFF;
+	margin: 0px;
+}
+hr {
+	margin: 0px;
+	color: #003366;
+	height: 1px;
+}
+.hide {
+	display: none;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: none;
+	color: #336699;
+}
+</style>
+</head>
+<body>
+
+<table summary="" cellpadding="4" cellspacing="0" border="0" width="100%" style="border-bottom: 1px solid #666; width: 100%;">
+<tr style="background-color: #DDD;">
+	<td align="center">{TEXT_HEADER}</td>
+</tr>
+</table>
+<form method="post" action="{ADMIN_URL}/media/setparameter.php">
+	{FTAN}
+<table summary="" cellpadding="4" cellspacing="0" border="0" width="100%" class="{DISPLAY_LIST_TABLE}">
+	<tr><td>{SETTINGS}</td><td><input type="checkbox" name="show_thumbs" {NO_SHOW_THUMBS_SELECTED}> {NO_SHOW_THUMBS}</td></tr>
+	<tr class="{DISPLAY_ADMIN}"><td></td>&nbsp;<td><input type="checkbox" name="admin_only" {ADMIN_ONLY_SELECTED}> {ADMIN_ONLY}</td></tr>
+	<tr><td colspan="2" style="border-bottom: 1px solid #666; line-height: 1px;">&nbsp;</td></tr>
+<!-- BEGIN list_block -->
+	<tr style="background-color: #{ROW_BG_COLOR};">
+		<td>{PATH_NAME}</td>
+		<td>{WIDTH} <input size="5" type="text" name="{FIELD_NAME_W}" value="{CUR_WIDTH}"> {HEIGHT} <input size="5" type="text" name="{FIELD_NAME_H}" value="{CUR_HEIGHT}"></td>
+	</tr>
+<!-- END list_block -->
+	<tr>
+		<td><input type="button" onclick="javascript: window.location = 'browse.php'" value="{BACK}"></td>
+		<td><input type="submit" name="save" value="{SAVE_TEXT}"></td>
+	</tr>
+</table>
+</form>
+</body>
+</html>
+
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/start.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/start.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/start.htt	(revision 1610)
@@ -0,0 +1,75 @@
+<!-- BEGIN main_block -->
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="99%" align="center">
+  <tr>
+    <td colspan="3">{WELCOME_MESSAGE}. {CURRENT_USER} {DISPLAY_NAME}. </td>
+  </tr>
+  <tr style="{DISPLAY_WARNING};">
+    <td colspan="3" align="center" style="color: #FF0000; font-weight: bold;">{WARNING}</td>
+  </tr>
+  <tr>
+    <td align="center" valign="top" width="49%">
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_PAGES};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/pages/index.php"> <img src="{THEME_URL}/icons/pages.png" border="0" alt="{PAGES}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/pages/index.php"><span class="title">{PAGES}</span></a>
+		  {PAGES_OVERVIEW}
+		  </td>
+        </tr>
+
+      </table>
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_ADDONS};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/addons/index.php"> <img src="{THEME_URL}/icons/addons.png" border="0" alt="{ADDONS}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/addons/index.php"><span class="title">{ADDONS}</span></a>
+		  {ADDONS_OVERVIEW}
+		  </td>
+        </tr>
+      </table>
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_SETTINGS};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/settings/index.php"> <img src="{THEME_URL}/icons/settings.png" border="0" alt="{SETTINGS}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/settings/index.php"><span class="title">{SETTINGS}</span></a>
+		  {SETTINGS_OVERVIEW}
+		  </td>
+        </tr>
+      </table>
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_ACCESS};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/access/index.php"> <img src="{THEME_URL}/icons/access.png" border="0" alt="{ACCESS}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/access/index.php"><span class="title">{ACCESS}</span></a>
+		  {ACCESS_OVERVIEW}
+		  </td>
+        </tr>
+      </table>
+    </td>
+    <td width="10">&nbsp; </td>
+    <td align="center" valign="top">
+	  <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_MEDIA};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/media/index.php"> <img src="{THEME_URL}/icons/media.png" border="0" alt="{MEDIA}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/media/index.php"><span class="title">{MEDIA}</span></a>
+		  {MEDIA_OVERVIEW}
+		  </td>
+        </tr>
+      </table>	  
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/preferences/index.php"> <img src="{THEME_URL}/icons/preferences.png" border="0" alt="{PREFERENCES}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/preferences/index.php"><span class="title">{PREFERENCES}</span></a>
+		  {PREFERENCES_OVERVIEW}
+		  </td>
+        </tr>
+      </table>
+      <table summary="" cellpadding="0" cellspacing="0" border="0" class="section" style="{DISPLAY_ADMINTOOLS};">
+        <tr>
+          <td class="graphic" align="center" valign="middle" rowspan="2"> <a href="{ADMIN_URL}/admintools/index.php"> <img src="{THEME_URL}/icons/admintools.png" border="0" alt="{ADMINTOOLS}" /> </a> </td>
+          <td class="description" valign="top"> <a href="{ADMIN_URL}/admintools/index.php"><span class="title">{ADMINTOOLS}</span></a>
+		  {ADMINTOOLS_OVERVIEW}
+		  </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/templates.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/templates.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/templates.htt	(revision 1610)
@@ -0,0 +1,88 @@
+<!-- BEGIN main_block -->
+
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td align="left">{CHANGE_TEMPLATE_NOTICE}</td>
+		<td align="right">
+			{URL_MODULES}
+			-
+			{URL_LANGUAGES}
+			-
+			{URL_ADVANCED}
+		</td>
+     </tr>
+</table>
+
+<form name="install" enctype="multipart/form-data" action="install.php" method="post" class="{DISPLAY_INSTALL}">
+{FTAN}
+
+<h2>{HEADING_INSTALL_TEMPLATE}</h2>
+
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td>
+		<input type="file" name="userfile" size="82" />
+		<script type="text/javascript">
+		document.install.userfile.focus();
+		</script><br /><br />
+	</td>
+	<td width="110" align="left">
+		<input type="submit" name="submit" value="{TEXT_INSTALL}" style="width: 100px;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+</form>
+
+<form name="uninstall" action="uninstall.php" method="post" class="{DISPLAY_UNINSTALL}">
+{FTAN}
+
+<h2>{HEADING_UNINSTALL_TEMPLATE}</h2>
+
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td>
+		<select name="file" style="width: 97%;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN template_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+		<!-- END template_list_block -->
+		</select>
+	</td>
+	<td width="110">
+		<input type="submit" name="submit" value="{TEXT_UNINSTALL}" style="width: 100px;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+</form>
+
+<form name="details" action="details.php" method="post" class="{DISPLAY_LIST}">
+{FTAN}
+
+<h2>{HEADING_TEMPLATE_DETAILS}</h2>
+
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td>
+		<select name="file" style="width: 97%;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN template_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+		<!-- END template_list_block -->
+		</select>
+	</td>
+	<td width="110">
+		<input type="submit" name="submit" value="{TEXT_VIEW_DETAILS}" style="width: 100px;" />
+	</td>
+</tr>
+</table>
+
+<br />
+</form>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/index.php
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/themes/templates/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/themes/templates/media_browse.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/media_browse.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/media_browse.htt	(revision 1610)
@@ -0,0 +1,59 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Browse Media</title>
+<link href="{THEME_URL}/browse.css" rel="stylesheet" type="text/css" />
+<script type="text/javascript">
+function confirm_link(message, url) {
+	if(confirm(message)) location.href = url;
+}
+</script>
+<script type="text/javascript" src="overlib.js"></script>
+</head>
+<body onload="parent.document.create.target.value = '{MEDIA_DIRECTORY}{CURRENT_DIR}'; parent.document.upload.target.value = '{MEDIA_DIRECTORY}{CURRENT_DIR}';">
+
+<table summary="" cellpadding="4" cellspacing="0" border="0" width="100%" style="border-bottom: 1px solid #666; width: 100%;">
+<tr style="background-color: #DDD;">
+	<td width="16" align="center" style="padding-left: 10px;">
+		<a href="{PARENT_DIR_LINK}"><img src="{THEME_URL}/images/up_folder_16.png" border="0" class="{DISPLAY_UP_ARROW}" alt="^" /></a>
+	</td>
+	<td width="50">
+		<a href="{PARENT_DIR_LINK}" class="{DISPLAY_UP_ARROW}">{TEXT_UP}</a>
+	</td>
+	<td align="left">
+		<strong>{TEXT_CURRENT_FOLDER}: {MEDIA_DIRECTORY}{CURRENT_DIR}</strong>
+	</td>
+</tr>
+</table>
+
+<table summary="" cellpadding="4" cellspacing="0" border="0" width="100%" class="{DISPLAY_LIST_TABLE}">
+<!-- BEGIN list_block -->
+<tr style="background-color: #{ROW_BG_COLOR};">
+	<td width="18" style="padding-left: 10px;">
+		<a href="{LINK}" target="{LINK_TARGET}"><img {MOUSEOVER} src="{FT_ICON}" class="{DISPLAY_ICON}" border="0" alt="" /></a>
+	</td>
+	<td>
+		<a {MOUSEOVER} href="{LINK}" target="{LINK_TARGET}">{NAME}</a>
+	</td>
+	<td width="120">
+		<small>{IMAGEDETAIL}<br />{DATE}</small>
+	</td>
+	<td width="60" align="right" class="{DISPLAY_RENAME}">
+		<a href="rename.php?dir={CURRENT_DIR}&amp;id={TEMP_ID}"><img src="{THEME_URL}/images/modify_16.png" alt="{TEXT_RENAME}" border="0" /> </a> &nbsp;&nbsp;
+		<a href="#" onclick="javascript: confirm_link('{CONFIRM_DELETE}\n {NAME_SLASHED}', 'delete.php?dir={CURRENT_DIR}&amp;id={TEMP_ID}');"><img src="{THEME_URL}/images/delete_16.png" alt="{TEXT_DELETE}" border="0" /></a>&nbsp;&nbsp;
+	</td>
+   <td width="16" align="right" class="">
+	   <img src="{THEME_URL}/images/{IMAGE_EXIST}" title="{IMAGE_TITLE}" alt="{IMAGE_TITLE}" />
+   </td>
+</tr>
+<!-- END list_block -->
+</table>
+
+
+<font class="{DISPLAY_NONE_FOUND}"><br />&nbsp;&nbsp;{NONE_FOUND}</font>
+</body>
+</html>
+
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/preferences.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/preferences.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/preferences.htt	(revision 1610)
@@ -0,0 +1,114 @@
+<!-- BEGIN main_block -->
+<h2>{HEADING_MY_SETTINGS}</h2>
+<div class="content_box">
+	<form name="{FORM_NAME}" id="{FORM_NAME}" action="{ACTION_URL}" method="post">
+		{FTAN}
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_USERNAME}:</label><br />
+				</div>
+				<div class="c60l">
+					<div id="username">{USERNAME}</div><br />
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_DISPLAY_NAME}:</label><br />
+				</div>
+				<div class="c60l">
+					<input type="text" id="display_name" name="display_name" value="{DISPLAY_NAME}" /><br />
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_LANGUAGE}:</label><br />
+				</div>
+				<div class="c60l">
+				<select name="language" id="language">
+					<!-- BEGIN language_list_block -->
+						<option value="{CODE}"{SELECTED} style="background: url({FLAG}.png) no-repeat center left; padding-left: 20px;">{NAME} ({CODE})</option>
+					<!-- END language_list_block -->
+					</select>
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_TIMEZONE}:</label><br />
+				</div>
+				<div class="c60l">
+					<select name="timezone" id="timezone">
+						<!-- BEGIN timezone_list_block -->
+							<option value="{VALUE}"{SELECTED}>{NAME}</option>
+						<!-- END timezone_list_block -->
+					</select>
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_DATE_FORMAT}:</label><br />
+				</div>
+				<div class="c60l">
+					<select name="date_format" id="date_format">
+						<!-- BEGIN date_format_list_block -->
+							<option value="{VALUE}"{SELECTED}>{NAME}</option>
+						<!-- END date_format_list_block -->
+					</select>
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_TIME_FORMAT}:</label><br />
+				</div>
+				<div class="c60l">
+					<select name="time_format" id="time_format">
+						<!-- BEGIN time_format_list_block -->
+							<option value="{VALUE}"{SELECTED}>{NAME}</option>
+						<!-- END time_format_list_block -->
+					</select>
+				</div>
+			</div>
+
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_EMAIL}:</label><br />
+				</div>
+				<div class="c60l">
+					<input type="text" id="email" name="email" value="{EMAIL}" /><br />
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_NEW_PASSWORD}:</label><br />
+				</div>
+				<div class="c60l">
+					<input type="password" id="new_password_1" name="new_password_1" value="{EMPTY_STRING}" /><br />
+				</div>
+			</div>
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_RETYPE_NEW_PASSWORD}:</label><br />
+				</div>
+				<div class="c60l">
+					<input type="password" id="new_password_2" name="new_password_2" value="{EMPTY_STRING}" /><br />
+				</div>
+			</div>
+			<hr />
+			<div class="subcolumns">
+				<div class="c25l">
+					<label>{TEXT_NEED_CURRENT_PASSWORD}:</label><br />
+				</div>
+				<div class="c60l">
+					<input type="password" id="current_password" name="current_password" value="{EMPTY_STRING}" /><br />
+				</div>
+			</div>
+			<div class="subcolumns save_section">
+				<div class="c60l">
+					<input type="submit" id="submit" name="submit" value="{TEXT_SAVE}" />
+					<input type="reset" id="reset" name="reset" value="{TEXT_RESET}" />
+				</div>
+				<div class="c25l">&nbsp;</div>
+			</div>
+	</form>
+</div>
+
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/groups_form.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/groups_form.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/groups_form.htt	(revision 1610)
@@ -0,0 +1,279 @@
+<!-- BEGIN main_block -->
+<h2 style="{DISPLAY_EXTRA}">{HEADING_MODIFY_GROUP}</h2>
+
+<form name="group" action="{ACTION_URL}" method="post" class="{DISPLAY_ADD}">
+<input type="hidden" name="advanced" value="{ADVANCED}" />
+<input type="hidden" name="group_id" value="{GROUP_ID}" />
+{FTAN}
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="150">{TEXT_NAME}:</td>
+	<td>
+		<input type="text" name="group_name" maxlength="255" value="{GROUP_NAME}" style="width:98%" />
+	</td>
+</tr>
+</table>
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" style="{DISPLAY_BASIC}">
+<tr>
+	<td width="150" valign="top">{TEXT_SYSTEM_PERMISSIONS}:</td>
+	<td>
+		<table summary="" cellpadding="0" cellspacing="0" width="100%" border="0">
+		<tr>
+			<td>
+				<input type="checkbox" name="pages" id="pages" value="1" {pages_checked} />
+				<label for="pages">{SECTION_PAGES}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="media" id="media" value="1" {media_checked} />
+				<label for="media">{SECTION_MEDIA}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="modules" id="modules" value="1" {modules_checked} />
+				<label for="modules">{SECTION_MODULES}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="templates" id="templates" value="1" {templates_checked} />
+				<label for="templates">{SECTION_TEMPLATES}</label>
+			</td>
+		</tr>
+		<tr>
+			<td>
+				<input type="checkbox" name="languages" id="languages" value="1" {languages_checked} />
+				<label for="languages">{SECTION_LANGUAGES}</label>
+			</td>
+			<td>		
+				<input type="checkbox" name="settings" id="settings" value="1" {settings_checked} />
+				<label for="settings">{SECTION_SETTINGS}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="users" id="users" value="1" {users_checked} />
+				<label for="users">{SECTION_USERS}</label>
+			</td>
+			<td>
+				<input type="checkbox" name="groups" id="groups" value="1" {groups_checked} />
+				<label for="groups">{SECTION_GROUPS}</label>
+			</td>
+		</tr>
+		<tr>
+			<td>
+				<input type="checkbox" name="admintools" id="admintools" value="1" {admintools_checked} />
+				<label for="admintools">{SECTION_ADMINTOOLS}</label>
+			</td>
+			<td>&nbsp;</td>
+			<td>&nbsp;</td>
+			<td>&nbsp;</td>
+		</tr>
+		</table>
+	</td>
+</tr>
+</table>
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" style="{DISPLAY_ADVANCED}">
+<tr>
+	<td width="150" valign="top">{TEXT_SYSTEM_PERMISSIONS}:</td>
+	<td align="left">
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="330">
+<tr>
+	<td colspan="4"><h3>{SECTION_PAGES}</h3></td>
+</tr>
+<tr>
+	<td><input name="pages_view" id="pages_view" type="checkbox" value="1" {pages_view_checked} /></td>
+	<td><label for="pages_view">{TEXT_VIEW}</label></td>
+	<td><input name="pages_add" id="pages_add" type="checkbox" value="1" {pages_add_checked} /></td>
+	<td>
+		<label for="pages_add">{TEXT_ADD}</label>
+		&nbsp;
+		(<input name="pages_add_l0" id="pages_add_l0" type="checkbox" value="1" {pages_add_l0_checked} />
+		<label for="pages_add_l0">{TEXT_LEVEL} 0</label>)
+	</td>
+</tr>
+<tr>
+	<td><input name="pages_settings" id="pages_settings" type="checkbox" value="1" {pages_settings_checked} /></td>
+	<td><label for="pages_settings">{TEXT_MODIFY_SETTINGS}</label></td>
+	<td><input name="pages_modify" id="pages_modify" type="checkbox" value="1" {pages_modify_checked} /></td>
+	<td><label for="pages_modify">{TEXT_MODIFY_CONTENT}</label></td>
+</tr>
+<tr>
+	<td><input name="pages_intro" id="pages_intro" type="checkbox" value="1" {pages_intro_checked} /></td>
+	<td><label for="pages_intro">{HEADING_MODIFY_INTRO_PAGE}</label></td>
+	<td><input name="pages_delete" id="pages_delete" type="checkbox" value="1" {pages_delete_checked} /></td>
+	<td><label for="pages_delete">{TEXT_DELETE}</label></td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_MEDIA}</h3></td>
+</tr>
+<tr>
+	<td><input name="media_view" id="media_view" type="checkbox" value="1" {media_view_checked} /></td>
+	<td><label for="media_view">{TEXT_VIEW}</label></td>
+	<td><input name="media_upload" id="media_upload" type="checkbox" value="1" {media_upload_checked} /></td>
+	<td><label for="media_upload">{TEXT_UPLOAD_FILES}</label></td>
+</tr>
+<tr>
+	<td><input name="media_rename" id="media_rename" type="checkbox" value="1" {media_rename_checked} /></td>
+	<td><label for="media_rename">{TEXT_RENAME}</label></td>
+	<td><input name="media_delete" id="media_delete" type="checkbox" value="1" {media_delete_checked} /></td>
+	<td><label for="media_delete">{TEXT_DELETE}</label></td>
+</tr>
+<tr>
+	<td><input name="media_create" id="media_create" type="checkbox" value="1" {media_create_checked} /></td>
+	<td><label for="media_create">{TEXT_CREATE_FOLDER}</label></td>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_MODULES}</h3></td>
+</tr>
+<tr>
+	<td><input name="modules_view" id="modules_view" type="checkbox" value="1" {modules_view_checked} /></td>
+	<td><label for="modules_view">{TEXT_VIEW}</label></td>
+	<td><input name="modules_install" id="modules_install" type="checkbox" value="1" {modules_install_checked} /></td>
+	<td><label for="modules_install">{TEXT_ADD}</label></td>
+</tr>
+<tr>
+	<td><input name="modules_uninstall" id="modules_uninstall" type="checkbox" value="1" {modules_uninstall_checked} /></td>
+	<td><label for="modules_uninstall">{TEXT_DELETE}</label></td>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_TEMPLATES}</h3></td>
+</tr>
+<tr>
+	<td><input name="templates_view" id="templates_view" type="checkbox" value="1" {templates_view_checked} /></td>
+	<td><label for="templates_view">{TEXT_VIEW}</label></td>
+	<td><input name="templates_install" id="templates_install" type="checkbox" value="1" {templates_install_checked} /></td>
+	<td><label for="templates_install">{TEXT_ADD}</label></td>
+</tr>
+<tr>
+	<td><input name="templates_uninstall" id="templates_uninstall" type="checkbox" value="1" {templates_uninstall_checked} /></td>
+	<td><label for="templates_uninstall">{TEXT_DELETE}</label></td>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_LANGUAGES}</h3></td>
+</tr>
+<tr>
+	<td><input name="languages_view" id="languages_view" type="checkbox" value="1" {languages_view_checked} /></td>
+	<td><label for="languages_view">{TEXT_VIEW}</label></td>
+	<td><input name="languages_install" id="languages_install" type="checkbox" value="1" {languages_install_checked} /></td>
+	<td><label for="languages_install">{TEXT_ADD}</label></td>
+</tr>
+<tr>
+	<td><input name="languages_uninstall" id="languages_uninstall" type="checkbox" value="1" {languages_uninstall_checked} /></td>
+	<td><label for="languages_uninstall">{TEXT_DELETE}</label></td>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_SETTINGS}</h3></td>
+</tr>
+<tr>
+	<td><input name="settings_basic" id="settings_basic" type="checkbox" value="1" {settings_basic_checked} /></td>
+	<td><label for="settings_basic">{TEXT_BASIC}</label></td>
+	<td><input name="settings_advanced" id="settings_advanced" type="checkbox" value="1" {settings_advanced_checked} /></td>
+	<td><label for="settings_advanced">{TEXT_ADVANCED}</label></td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_USERS}</h3></td>
+</tr>
+<tr>
+	<td><input name="users_view" id="users_view" type="checkbox" value="1" {users_view_checked} /></td>
+	<td><label for="users_view">{TEXT_VIEW}</label></td>
+	<td><input name="users_add" id="users_add" type="checkbox" value="1" {users_add_checked} /></td>
+	<td><label for="users_add">{TEXT_ADD}</label></td>
+</tr>
+<tr>
+	<td><input name="users_modify" id="users_modify" type="checkbox" value="1" {users_modify_checked} /></td>
+	<td><label for="users_modify">{TEXT_MODIFY}</label></td>
+	<td><input name="users_delete" id="users_delete" type="checkbox" value="1" {users_delete_checked} /></td>
+	<td><label for="users_delete">{TEXT_DELETE}</label></td>
+</tr>
+<tr>
+	<td colspan="4"><h3>{SECTION_GROUPS}</h3></td>
+
+</tr>
+<tr>
+	<td><input name="groups_view" id="groups_view" type="checkbox" value="1" {groups_view_checked} /></td>
+	<td><label for="groups_view">{TEXT_VIEW}</label></td>
+	<td><input name="groups_add" id="groups_add" type="checkbox" value="1" {groups_add_checked} /></td>
+	<td><label for="groups_add">{TEXT_ADD}</label></td>
+</tr>
+<tr>
+	<td><input name="groups_modify" id="groups_modify" type="checkbox" value="1" {groups_modify_checked} /></td>
+	<td><label for="groups_modify">{TEXT_MODIFY}</label></td>
+	<td><input name="groups_delete" id="groups_delete" type="checkbox" value="1" {groups_delete_checked} /></td>
+	<td><label for="groups_delete">{TEXT_DELETE}</label></td>
+</tr>
+<tr>
+	<td colspan="4">
+		<h3>{SECTION_ADMINTOOLS}</h3>
+	</td>
+</tr>
+<tr>
+	<td><input name="admintools_settings" id="admintools_settings" type="checkbox" value="1" {admintools_settings_checked} /></td>
+	<td><label for="admintools_settings">{TEXT_MODIFY_SETTINGS}</label></td>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+</table>
+
+
+	</td>
+</tr>
+</table>
+
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" style="padding-top: 5px; padding-bottom: 5px;">
+<tr>
+	<td valign="top" align="left" width="150">{TEXT_MODULE_PERMISSIONS}:</td>
+	<td valign="top" align="left">
+		<ul style="margin: 0; padding: 0; list-style: none;">
+			<!-- BEGIN module_list_block -->
+			<li>
+				<input type="checkbox" name="module_permissions[]" id="m_{VALUE}" value="{VALUE}" {CHECKED} />
+				<label for="m_{VALUE}">{NAME}</label>
+			</li>
+			<!-- END module_list_block -->
+		</ul>
+	</td>
+	<td valign="top" align="left" width="150">{TEXT_TEMPLATE_PERMISSIONS}:</td>
+	<td valign="top" align="left">
+		<ul style="margin: 0; padding: 0; list-style: none;">
+			<!-- BEGIN template_list_block -->
+			<li>
+				<input type="checkbox" name="template_permissions[]" id="t_{VALUE}" value="{VALUE}" {CHECKED} />
+				<label for="t_{VALUE}">{NAME}</label>
+			</li>
+			<!-- END template_list_block -->
+		</ul>
+	</td>
+</tr>
+<tr style="text-align:center;width:100%">
+    <td>&nbsp;</td>
+	<td style="text-align:right;">
+		<input type="submit" name="save" value="{SUBMIT_TITLE}" />
+	</td>
+	<td style="text-align:left;">
+		<input type="reset" name="reset" value="{TEXT_RESET}" />
+	</td>
+    <td>&nbsp;</td>
+</tr>
+</table>
+</form>
+
+
+<form name="advanced" action="{ADVANCED_LINK}" method="post">
+<input type="hidden" name="group_id" value="{GROUP_ID}" />
+<input type="hidden" name="action" value="modify" />
+{FTAN}
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+    <td>&nbsp;</td>
+	<td style="text-align:center;">
+		<input type="submit" name="advanced" onclick="window.location = '{ADVANCED_LINK}';" value="{ADVANCED_BUTTON}" />
+	</td>
+    <td>&nbsp;</td>
+</tr>
+</table>
+</form>
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/media_rename.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/media_rename.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/media_rename.htt	(revision 1610)
@@ -0,0 +1,61 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Rename Media</title>
+<link href="{THEME_URL}/media.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+
+<!-- BEGIN main_block -->
+
+<style>
+.hide {display:none;}
+</style>
+
+<form name="rename" action="rename2.php" method="post">
+<input type="hidden" name="dir" value="{DIR}" />
+<input type="hidden" name="old_name" value="{FILENAME}" />
+<input type="hidden" name="id" value="{FILE_ID}" />
+{FTAN}
+<table summary="" cellpadding="5" cellspacing="0" border="0" width="400" align="center">
+<tr>
+	<td align="center" colspan="2">{TEXT_RENAME} '{FILENAME}' {TEXT_TO}:</td>
+</tr>
+<tr>
+	<td>
+		<input type="text" name="name" style="width: 100%;" />
+		<script type="text/javascript">
+		document.rename.name.focus();
+		</script>
+	</td>
+	<td width="50" class="{DISPlAY_EXTENSION}">
+		<input type="text" name="extension" style="width: 50px;" value="{EXTENSION}" />
+	</td>
+</tr>
+<tr>
+	<td colspan="2">
+		<input type="checkbox" name="overwrite" id="overwrite" value="yes" />
+		<label for="overwrite">
+		{TEXT_OVERWRITE_EXISTING} {TYPE}
+		</label>
+	</td>
+</tr>
+<tr>
+	<td colspan="2">
+		<input type="submit" name="submit" value="{TEXT_RENAME}" style="width: 49%;" />
+		<input type="button" name="cancel" value="{TEXT_CANCEL}" style="width: 49%;" onclick="javascript: window.location = 'browse.php';" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+</td>
+</tr>
+</table>
+
+</body>
+</html>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/languages.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/languages.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/languages.htt	(revision 1610)
@@ -0,0 +1,74 @@
+<!-- BEGIN main_block -->
+
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td align="left">{CHANGE_TEMPLATE_NOTICE}</td>
+		<td align="right">
+			{URL_MODULES}
+			-
+			{URL_TEMPLATES}
+			-
+			{URL_ADVANCED}
+		</td>
+     </tr>
+</table>
+
+<form name="install" enctype="multipart/form-data" action="install.php" method="post" class="{DISPLAY_INSTALL}">
+{FTAN}
+  <h2>{HEADING_INSTALL_LANGUAGE}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td>
+        <input type="file" name="userfile" size="97" />
+        <script type="text/javascript">
+		document.install.userfile.focus();
+		</script><br /><br />
+      </td>
+      <td width="110" align="left">
+        <input type="submit" name="submit" value="{TEXT_INSTALL}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<form name="uninstall" action="uninstall.php" method="post" class="{DISPLAY_UNINSTALL}">
+{FTAN}
+  <h2>{HEADING_UNINSTALL_LANGUAGE}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td>
+        <select name="code" style="width: 97%;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN language_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+          <!-- END language_list_block -->
+        </select>
+      </td>
+      <td width="110">
+        <input type="submit" name="submit" value="{TEXT_UNINSTALL}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<form name="details" action="details.php" method="post" class="{DISPLAY_LIST}">
+{FTAN}
+  <h2>{HEADING_LANGUAGE_DETAILS}</h2>
+  <table summary="" cellpadding="2" cellspacing="0" border="0" width="100%">
+    <tr>
+      <td>
+        <select name="code" style="width: 97%;">
+		<option value="" selected="selected">{TEXT_PLEASE_SELECT}...</option>
+		<!-- BEGIN language_list_block -->
+			<option value="{VALUE}">{NAME}</option>
+          <!-- END language_list_block -->
+        </select>
+      </td>
+      <td width="110">
+        <input type="submit" name="submit" value="{TEXT_VIEW_DETAILS}" style="width: 100px;" />
+      </td>
+    </tr>
+  </table>
+  <br />
+</form>
+<!-- END main_block -->
Index: tags/2.8.3/wb/admin/themes/templates/pages_sections.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/pages_sections.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/pages_sections.htt	(revision 1610)
@@ -0,0 +1,115 @@
+<!-- BEGIN main_block -->
+<div class="jsadmin jcalendar hide"></div>
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+	<tr style="background:#f0f0f0;">
+		<td valign="middle" align="left"><h2>{HEADING_MANAGE_SECTIONS}</h2></td>
+		<td align="left" width="20%">ID: {PAGE_ID}</td>
+		<td align="right">{TEXT_CURRENT_PAGE}: <b>{PAGE_TITLE}</b>
+			-
+			<a href="{ADMIN_URL}/pages/modify.php?page_id={PAGE_IDKEY}">{HEADING_MODIFY_PAGE}</a>
+			-
+			<a href="{ADMIN_URL}/pages/settings.php?page_id={PAGE_IDKEY}">{TEXT_CHANGE_SETTINGS}</a>
+		</td>
+     </tr>
+</table>
+
+        <form name="section_properties" action="{ADMIN_URL}/pages/sections_save.php?page_id={PAGE_IDKEY}" method="post">
+		{FTAN}
+		
+        <table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" class="img_noborder">
+			<tr class="sections_list">
+				<td class="header_list_type">{TEXT_TYPE}</td>
+				<td class="header_list_block"><span {STYLE_DISPLAY_SECTION_BLOCK}>{TEXT_BLOCK}&nbsp;</span></td>
+				<td class="header_list_pubdate_start">{TEXT_PUBL_START_DATE}</td>
+				<td class="header_list_pubdate_end">{TEXT_PUBL_END_DATE}</td>
+				<td class="header_list_sections_actions" colspan="3">{TEXT_ACTIONS}</td>
+				<td class="header_list_section_id">ID</td>
+				<td {DISPLAY_DEBUG}>{TEXT_PID}</td>
+			</tr>
+<!-- BEGIN section_block -->
+            	<tr class="sectionrow">
+    				<td align="right" style="display:none;">
+                      <input type="hidden" name="page_id" value="{PAGE_IDKEY}"  />
+                      <input type="hidden" name="section_id" value="{VAR_SECTION_ID}"  />
+                      {VAR_SECTION_ID}
+                    </td>
+					
+                    <td>{LINK_MODIFY_URL_VAR_MODUL_NAME}</td>
+					
+                    <td class="{INPUT_ATTRIBUTE}"><span {STYLE_DISPLAY_SECTION_BLOCK}>
+                    	<select name="block{VAR_SECTION_ID}" class="input_normal">
+                        {SET_NONE_DISPLAY_OPTION}
+                    	<!-- BEGIN block_block -->
+                    		<option value="{VALUE}"{SELECTED}>{NAME}</option>
+                    	<!-- END block_block -->
+                    	</select></span>&nbsp;
+                    </td>
+					
+                    <td class="list_pubdate_start"><input type="text" id="start_date{VAR_SECTION_ID}" name="start_date{VAR_SECTION_ID}" value="{VALUE_PUBL_START}" class="input_normal" />
+                        <img src="{THEME_URL}/images/calendar_16.png" id="trigger_start{VAR_SECTION_ID}" style="cursor:pointer;" title="{TEXT_CALENDAR}" alt="{TEXT_CALENDAR}"  />
+                        <img src="{THEME_URL}/images/{CLOCK_DEL_16_PNG}" style="cursor:pointer;" alt="{TEXT_DELETE_DATE}" title="{TEXT_DELETE_DATE}" onclick="document.section_properties.start_date{VAR_SECTION_ID}.value=''" />
+                    </td>
+					
+                    <td class="list_pubdate_end"><input type="text" id="end_date{VAR_SECTION_ID}" name="end_date{VAR_SECTION_ID}" value="{VALUE_PUBL_END}" class="input_normal" />
+                        <img src="{THEME_URL}/images/calendar_16.png" id="trigger_stop{VAR_SECTION_ID}" alt="{TEXT_CALENDAR}" style="cursor: pointer;" title="{TEXT_CALENDAR}"  />
+                        <img src="{THEME_URL}/images/{CLOCK_DEL_16_PNG}" style="cursor:pointer;" alt="{TEXT_DELETE_DATE}" title="{TEXT_DELETE_DATE}" onclick="document.section_properties.end_date{VAR_SECTION_ID}.value=''" />
+                    </td>
+
+					<td>{VAR_MOVE_UP_URL}</td>
+					
+                    <td>{VAR_MOVE_DOWN_URL}</td>
+
+                    <td>
+                        <a href="#" onclick="javascript: confirm_link('{TEXT_ARE_YOU_SURE}', '{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}&amp;section_id={VAR_SECTION_IDKEY}');">
+                        <img src="{THEME_URL}/images/{DELETE_16_PNG}" alt="{TEXT_DELETE}" border="0" />
+                        </a>
+                    </td>
+
+                    <td class="list_section_id">{VAR_SECTION_ID}</td>
+
+                    <td {DISPLAY_DEBUG}>{POSITION}</td>
+                </tr>
+<!-- END section_block -->
+                <tr>
+                    <td align="left" colspan="{DEBUG_COLSPAN_SIZE}">
+					<br />
+					<input type="submit" name="save" value="{TEXT_SAVE}" class="input_medium" />
+					</td>
+    	        </tr>
+	    </table>
+    </form>
+<br />
+	<h2>{TEXT_ADD_SECTION}</h2>
+	<form name="add" action="{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}" method="post">
+        <input type="hidden" name="page_id" value="{PAGE_IDKEY}"  />
+		{FTAN}
+    	<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%">
+    	<tr>
+    		<td width="50%" valign="middle">
+    			<select name="module" class="input_large">
+                <!-- BEGIN module_block -->
+    			 <option value="{VALUE}"{SELECTED}>{NAME}</option>
+                 <!-- END module_block -->
+    			</select>
+				&nbsp;&nbsp;
+				<input type="submit" name="submit" value="{TEXT_ADD}" class="input_medium" />
+   		  </td>
+    	</tr>
+   	  </table>
+	</form>
+    <!-- BEGIN calendar_block -->
+    <script type="text/javascript" >
+         var section_id = '{VAR_SECTION_ID}';
+         var start_date = '{start_date}';
+         var end_date = '{end_date}';
+         var trigger_start = '{trigger_start}';
+         var trigger_end = '{trigger_end}';
+         var jscal_today = '{jscal_today}';
+         var jscal_ifformat = '{jscal_ifformat}';
+         var jscal_firstday = {jscal_firstday};
+         var showsTime = {showsTime};
+         var timeFormat = {timeFormat};
+    </script>
+    <script type="text/javascript" src="{ADMIN_URL}/pages/page_calendar.js" ></script>
+    <!-- END calendar_block -->
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/modules_details.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/modules_details.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/modules_details.htt	(revision 1610)
@@ -0,0 +1,36 @@
+<!-- BEGIN main_block -->
+
+<h2>{HEADING_MODULE_DETAILS}</h2>
+
+<table summary="" cellpadding="5" cellspacing="0" border="0">
+<tr>
+	<td width="100">{TEXT_NAME}:</td>
+	<td>{NAME}</td>
+</tr>
+<tr>
+	<td>{TEXT_TYPE}:</td>
+	<td>{TYPE}</td>
+</tr>
+<tr>
+	<td>{TEXT_AUTHOR}:</td>
+	<td>{AUTHOR}</td>
+</tr>
+<tr>
+	<td>{TEXT_VERSION}:</td>
+	<td>{VERSION}</td>
+</tr>
+<tr>
+	<td>{TEXT_DESIGNED_FOR}:</td>
+	<td>Website Baker {DESIGNED_FOR}</td>
+</tr>
+<tr>
+	<td valign="top">{TEXT_DESCRIPTION}:</td>
+	<td style="text-align: justify;">{DESCRIPTION}</td>
+</tr>
+</table>
+
+<br />
+
+<button onclick="window.location = 'index.php';">{TEXT_BACK}</button>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/themes/templates/media.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/media.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/media.htt	(revision 1610)
@@ -0,0 +1,123 @@
+<!-- BEGIN main_block -->
+<script src="{THEME_URL}/jquery/toggle_zip.js" type="text/javascript"></script>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0">
+  <tr>
+    <td width="300" valign="top" align="left">
+	<h2>{HEADING_UPLOAD_FILES}</h2>
+      <form name="upload" action="upload.php" method="post" enctype="multipart/form-data" class="{DISPLAY_UPLOAD}">
+		{FTAN}
+		<table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+          <tr>
+            <td>{TEXT_TARGET_FOLDER}:<br />
+              <select name="target" style="width:100%;" 
+		   onchange="browse.location.href='browse.php?dir=' +
+		   	document.upload.target.value.substr(6,100);
+		   document.create.target.value = document.upload.target.value;">
+                <option value="{MEDIA_DIRECTORY}{HOME_DIRECTORY}" selected="selected">{MEDIA_DIRECTORY}{HOME_DIRECTORY}</option>
+                <!-- BEGIN dir_list_block -->
+                <option value="{NAME}">{NAME}</option>
+                <!-- END dir_list_block -->
+              </select>
+            </td>
+          </tr>
+        </table>
+        <table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+          <tr>
+		  	<td valign="top">
+				<input type="checkbox" name="unzip" id="unzip"  onclick="toggle();" />
+				<label for="unzip">{TEXT_UNZIP_FILE}</label>
+				<span id="delzip" style="display: none;"><br />
+				<input type="checkbox" name="delzip" id="deletezip" />
+				<label for="deletezip">{TEXT_DELETE_ZIP}</label></span>
+			</td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file1" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file2" id="file2" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file3" id="file3" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file4" id="file4" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file5" id="file5" style="visibility: visible;" /> </td>
+          </tr>
+		  <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file6" id="file6" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file7" id="file7" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file8" id="file8" style="visibility: visible;" /> </td>
+          </tr>
+		  <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file9" id="file9" style="visibility: visible;" /> </td>
+          </tr>
+          <tr>
+            <td width="50%" align="left"><input type="file" size="33" name="file10" id="file10" style="visibility: visible;" /> </td>
+          </tr>
+        </table>
+
+        <table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+          <tr>
+            <td colspan="2"><input type="checkbox" name="overwrite" id="overwrite" value="yes" />
+              <label for="overwrite">{TEXT_OVERWRITE_EXISTING} {TEXT_FILES}</label><br />
+              <input type="submit" name="submit" value="{TEXT_UPLOAD_FILES}" style="width:160px;margin-top:5px;" />
+            </td>
+          </tr>
+        </table>
+      </form>
+<!--
+If you want to HIDE the option of creating folders in the Media-folder (for your clients, for example),
+please set the class below to "hide", else to "show".
+--> 
+      <div class="show">
+	  <br /><br />
+        <form name="create" action="create.php" method="post" class="{DISPLAY_CREATE}">
+		{FTAN}
+          <h2>{HEADING_CREATE_FOLDER}</h2>
+          <table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+            <tr>
+              <td>{TEXT_NAME}:<br />
+              <input type="text" name="name" style="width:98%;" /></td>
+            </tr>
+          </table>
+          <table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+            <tr>
+              <td>{TEXT_TARGET_FOLDER}:<br />
+                <select name="target" style="width:100%;">
+                  <option value="{MEDIA_DIRECTORY}{HOME_DIRECTORY}" selected="selected">{MEDIA_DIRECTORY}{HOME_DIRECTORY}</option>
+                  <!-- BEGIN dir_list_block -->
+                  <option value="{NAME}">{NAME} </option>
+                  <!-- END dir_list_block -->
+                </select>
+              </td>
+            </tr>
+          </table>
+          <table summary="" cellpadding="3" cellspacing="0" border="0" width="100%">
+            <tr>
+              <td><input type="submit" name="submit" value="{TEXT_CREATE_FOLDER}" style="width:160px;" />
+              </td>
+            </tr>
+          </table>
+        </form>
+      </div>
+      <!-- END main_block -->
+    </td>
+	<td width="10">&nbsp;</td>
+    <td width="580" valign="top" align="right">
+	<h2 style="padding-left:3px;">{HEADING_BROWSE_MEDIA}</h2>
+	<span class="{DISPLAY_SETTINGS}" style="margin-bottom:2px;">{OPTIONS}:&nbsp;
+	<a href="setparameter.php" target="browse">{CHANGE_SETTINGS}</a>&nbsp;&nbsp;|&nbsp;
+	<a href="browse.php?dir={CURRENT_DIR}" target="browse">{TEXT_RELOAD}</a>
+	</span>
+	<iframe name="browse" width="99%" height="550" src="browse.php" scrolling="yes" frameborder="0" style="border:1px solid #333;"></iframe>
+    </td>
+  </tr>
+</table>
Index: tags/2.8.3/wb/admin/themes/templates/pages_settings.htt
===================================================================
--- tags/2.8.3/wb/admin/themes/templates/pages_settings.htt	(nonexistent)
+++ tags/2.8.3/wb/admin/themes/templates/pages_settings.htt	(revision 1610)
@@ -0,0 +1,178 @@
+<!-- BEGIN main_block -->
+
+<script src="{ADMIN_URL}/pages/page_settings.js" type="text/javascript"></script>
+
+<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
+  <tr style="background:#f0f0f0;">
+	<td valign="middle" align="left"><h2>{HEADING_MODIFY_PAGE_SETTINGS}</h2></td>
+	<td nowrap="nowrap">ID: {PAGE_ID}</td>
+	<td align="right">
+		{TEXT_CURRENT_PAGE}:
+		<b>{PAGE_TITLE}</b>
+		-
+		<a href="{ADMIN_URL}/pages/modify.php?page_id={PAGE_IDKEY}">{TEXT_MODIFY_PAGE}</a>
+		<font style="{DISPLAY_MANAGE_SECTIONS}">-</font>
+		<a href="{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}" style="{DISPLAY_MANAGE_SECTIONS}">{TEXT_MANAGE_SECTIONS}</a>
+		<br />
+		<font style="color:#999;" class="{DISPLAY_MODIFIED}">
+			{LAST_MODIFIED} {MODIFIED_BY} ({MODIFIED_BY_USERNAME}), {MODIFIED_WHEN}
+		</font>
+	</td>
+  </tr>
+</table>
+
+<form name="settings" action="settings2.php" method="post">
+{FTAN}
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+<tr>
+	<td width="100" height="20">{TEXT_PAGE_TITLE}:</td>
+	<td width="240" height="20">
+		<input type="text" name="page_title" value="{PAGE_TITLE}" style="width: 232px;" />
+	</td>
+	<td rowspan="10" valign="top" style="padding-left: 20px; padding-top: 8px;">
+		{TEXT_ADMINISTRATORS}:
+		<ul style="list-style-type: none; margin: 0; padding: 0;">
+			<!-- BEGIN group_list_block -->
+			<li>
+			<input type="checkbox" name="admin_groups[]" id="admin_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+			<label for="admin_group_{TOGGLE}">{NAME}</label>
+			</li>
+			<!-- END group_list_block -->
+		</ul>
+	</td>
+	<td rowspan="10" valign="top" style="padding:8px 0 0 20px;">
+		<div id="allowed_viewers" style="{DISPLAY_VIEWERS}">
+			{TEXT_ALLOWED_VIEWERS}:
+			<ul style="list-style-type:none;margin:0;padding:0;">
+				<!-- BEGIN group_list_block2 -->
+				<li>
+				<input type="checkbox" name="viewing_groups[]" id="viewing_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+				<label for="viewing_group_{TOGGLE}">{NAME}</label>
+				</li>
+				<!-- END group_list_block2 -->
+			</ul>
+		</div>
+	</td>
+</tr>
+<tr>
+	<td width="100" height="20">{TEXT_MENU_TITLE}:</td>
+	<td width="240" height="20">
+		<input type="text" name="menu_title" value="{MENU_TITLE}" style="width: 232px;" />
+	</td>
+</tr>
+<tr>
+	<td width="100">{TEXT_PARENT}:</td>
+	<td width="240">
+		<select name="parent" style="width: 240px;" onchange="return disabled_hack_for_ie(this);">
+			<!-- BEGIN page_list_block2 -->
+			<option value="{ID}"{SELECTED} style="background: {FLAG_ROOT_ICON} no-repeat center left; padding-left: 20px;">{TITLE}</option>
+			<!-- END page_list_block2 -->
+		</select>
+	</td>
+</tr>
+<tr>
+	<td width="100">{TEXT_VISIBILITY}:</td>
+	<td width="240">
+		<select name="visibility" onchange="javascript: toggle_viewers();" style="width: 240px;">
+			<option value="public"{PUBLIC_SELECTED}>{TEXT_PUBLIC}</option>
+			<option value="private"{PRIVATE_SELECTED}>{TEXT_PRIVATE}</option>
+			<option value="registered"{REGISTERED_SELECTED}>{TEXT_REGISTERED}</option>
+			<option value="hidden"{HIDDEN_SELECTED}>{TEXT_HIDDEN}</option>
+			<option value="none"{NO_VIS_SELECTED}>{TEXT_NONE}</option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td width="100" valign="top">{TEXT_DESCRIPTION}:</td>
+	<td>
+		<textarea name="description" rows="10" cols="1" style="width:236px;height:50px;">{DESCRIPTION}</textarea>
+	</td>
+</tr>
+<tr>
+	<td width="100" valign="top">{TEXT_KEYWORDS}:</td>
+	<td>
+		<textarea name="keywords" rows="10" cols="1" style="width:236px;height:50px;">{KEYWORDS}</textarea>
+	</td>
+</tr>
+<tr>
+	<td>
+		{TEXT_TARGET}:
+	</td>
+	<td>
+		<select name="target" style="width: 240px;" ><!--  value="{TARGET}" -->
+			<option value="_blank"{BLANK_SELECTED}>{TEXT_NEW_WINDOW}</option>
+			<option value="_self"{SELF_SELECTED}>{TEXT_SAME_WINDOW}</option>
+			<option value="_top"{TOP_SELECTED}>{TEXT_TOP_FRAME}</option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td width="100">{TEXT_TEMPLATE}:</td>
+	<td width="240">
+		<select name="template" style="width: 240px;">
+			<option value="">{TEXT_SYSTEM_DEFAULT}</option>
+			<option value="">----------------------</option>
+			<!-- BEGIN template_list_block -->
+			<option value="{VALUE}"{SELECTED}>{NAME}</option>
+			<!-- END template_list_block -->
+		</select>
+	</td>
+</tr>
+<tr style="{DISPLAY_MENU_LIST}">
+	<td width="100">{TEXT_MENU}:</td>
+	<td width="240">
+		<select name="menu" style="width: 240px;">
+			<!-- BEGIN menu_list_block -->
+			<option value="{VALUE}"{SELECTED}>{NAME}</option>
+			<!-- END menu_list_block -->
+		</select>
+	</td>
+</tr>
+<tr style="{DISPLAY_LANGUAGE_LIST}">
+	<td width="100">{TEXT_LANGUAGE}:</td>
+	<td width="240">
+		<select name="language" style="width: 240px;">
+			<!-- BEGIN language_list_block -->
+			<option value="{VALUE}"{SELECTED} style="background: {FLAG_LANG_ICONS} no-repeat center left; padding-left: 20px;">{NAME}</option>
+			<!-- END language_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- insert page_code 20090904-->
+<tr{DISPLAY_CODE_PAGE_LIST}>
+	<td width="100">{TEXT_PAGE_CODE}:</td>
+	<td class="list_page_code">
+		<select name="page_code" class="value_page_code">
+			<!-- BEGIN page_code_list_block -->
+			<option value="{VALUE}"{SELECTED} style="background: {FLAG_CODE_ICON} no-repeat center left; padding-left: 20px;">&nbsp;{PAGE_VALUE}</option>
+			<!-- END page_code_list_block -->
+		</select>
+	</td>
+</tr>
+<!-- page code -->
+<tr>
+	<td width="100">{TEXT_SEARCHING}:</td>
+	<td width="240">
+		<select name="searching" style="width: 240px;">
+			<option value="1">{TEXT_ENABLED}</option>
+			<option value="0"{SEARCHING_DISABLED}>{TEXT_DISABLED}</option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td width="100">&nbsp;</td>
+	<td colspan="4">
+		<input type="submit" name="submit" value="{TEXT_SAVE} {SECTION_SETTINGS}" style="width: 117px;" />
+		<input type="reset" name="reset" value="{TEXT_RESET}" style="width: 117px;" />
+	</td>
+</tr>
+<tr>
+	<td>&nbsp;</td>
+	<td>&nbsp;</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/admin/preferences/save.php
===================================================================
--- tags/2.8.3/wb/admin/preferences/save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/preferences/save.php	(revision 1610)
@@ -0,0 +1,168 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         preferences
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Preferences','start', false);
+
+function save_preferences( &$admin, &$database)
+{
+	global $MESSAGE;
+	$err_msg = array();
+	$iMinPassLength = 6;
+// first check form-tan
+	if(!$admin->checkFTAN()){ $err_msg[] = $MESSAGE['GENERIC_SECURITY_ACCESS']; }
+// Get entered values and validate all
+	// remove any dangerouse chars from display_name
+	$display_name     = $admin->add_slashes(strip_tags(trim($admin->get_post('display_name'))));
+	$display_name     = ( $display_name == '' ? $admin->get_display_name() : $display_name );
+	// check that display_name is unique in whoole system (prevents from User-faking)
+	$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'users` ';
+	$sql .= 'WHERE `user_id` <> '.(int)$admin->get_user_id().' AND `display_name` LIKE "'.$display_name.'"';
+	if( $database->get_one($sql) > 0 ){ $err_msg[] = $MESSAGE['USERS_USERNAME_TAKEN']; }
+// language must be 2 upercase letters only
+	$language         = strtoupper($admin->get_post('language'));
+	$language         = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
+// timezone must be between -12 and +13  or -20 as system_default
+	$timezone         = $admin->get_post('timezone');
+	$timezone         = (is_numeric($timezone) ? $timezone : -20);
+	$timezone         = ( ($timezone >= -12 && $timezone <= 13) ? $timezone : -20 ) * 3600;
+// date_format must be a key from /interface/date_formats
+	$date_format      = $admin->get_post('date_format');
+	$date_format_key  = str_replace(' ', '|', $date_format);
+	$user_time = true;
+	include( ADMIN_PATH.'/interface/date_formats.php' );
+	$date_format = (array_key_exists($date_format_key, $DATE_FORMATS) ? $date_format : 'system_default');
+	$date_format = ($date_format == 'system_default' ? '' : $date_format);
+	unset($DATE_FORMATS);
+// time_format must be a key from /interface/time_formats	
+	$time_format      = $admin->get_post('time_format');
+	$time_format_key  = str_replace(' ', '|', $time_format);
+	$user_time = true;
+	include( ADMIN_PATH.'/interface/time_formats.php' );
+	$time_format = (array_key_exists($time_format_key, $TIME_FORMATS) ? $time_format : 'system_default');
+	$time_format = ($time_format == 'system_default' ? '' : $time_format);
+	unset($TIME_FORMATS);
+// email should be validatet by core
+	$email = trim( $admin->get_post('email') == null ? '' : $admin->get_post('email') );
+	if( !$admin->validate_email($email) )
+	{
+		$email = '';
+		$err_msg[] = $MESSAGE['USERS_INVALID_EMAIL'];
+	}else {
+		if($email != '') {
+		// check that email is unique in whoole system
+			$email = $admin->add_slashes($email);
+			$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE `user_id` <> '.(int)$admin->get_user_id().' AND `email` LIKE "'.$email.'"';
+			if( $database->get_one($sql) > 0 ){ $err_msg[] = $MESSAGE['USERS_EMAIL_TAKEN']; }
+		}
+	}
+// receive password vars and calculate needed action
+	$sCurrentPassword = $admin->get_post('current_password');
+	$sCurrentPassword = (is_null($sCurrentPassword) ? '' : $sCurrentPassword);
+	$sNewPassword = $admin->get_post('new_password_1');
+	$sNewPassword = (is_null($sNewPassword) ? '' : $sNewPassword);
+	$sNewPasswordRetyped = $admin->get_post('new_password_2');
+	$sNewPasswordRetyped= (is_null($sNewPasswordRetyped) ? '' : $sNewPasswordRetyped);
+// Check existing password
+	$sql  = 'SELECT `password` ';
+	$sql .= 'FROM `'.TABLE_PREFIX.'users` ';
+	$sql .= 'WHERE `user_id` = '.$admin->get_user_id();
+	if (md5($sCurrentPassword) != $database->get_one($sql)) {
+// access denied
+		$err_msg[] = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'];
+	}else {
+// validate new password
+		$sPwHashNew = false;
+		if($sNewPassword != '') {
+			if(strlen($sNewPassword) < $iMinPassLength) {
+				$err_msg[] = $MESSAGE['USERS_PASSWORD_TOO_SHORT'];
+			}else {
+				if($sNewPassword != $sNewPasswordRetyped) {
+					$err_msg[] = $MESSAGE['USERS_PASSWORD_MISMATCH'];
+				}else {
+					$pattern = '/[^'.$admin->password_chars.']/';
+					if (preg_match($pattern, $sNewPassword)) {
+						$err_msg[] = $MESSAGE['PREFERENCES_INVALID_CHARS'];
+					}else {
+						$sPwHashNew = md5($sNewPassword);
+					}
+				}
+			}
+		}
+// if no validation errors, try to update the database, otherwise return errormessages
+		if(sizeof($err_msg) == 0)
+		{
+			$sql  = 'UPDATE `'.TABLE_PREFIX.'users` ';
+			$sql .= 'SET `display_name`=\''.$display_name.'\', ';
+			if($sPwHashNew) {
+				$sql .=     '`password`=\''.$sPwHashNew.'\', ';
+			}
+			if($email != '') {
+				$sql .=     '`email`=\''.$email.'\', ';
+			}
+			$sql .=     '`language`=\''.$language.'\', ';
+			$sql .=     '`timezone`=\''.$timezone.'\', ';
+			$sql .=     '`date_format`=\''.$date_format.'\', ';
+			$sql .=     '`time_format`=\''.$time_format.'\' ';
+			$sql .= 'WHERE `user_id`='.(int)$admin->get_user_id();
+			if( $database->query($sql) )
+			{
+				// update successfull, takeover values into the session
+				$_SESSION['DISPLAY_NAME'] = $display_name;
+				$_SESSION['LANGUAGE'] = $language;
+				$_SESSION['TIMEZONE'] = $timezone;
+				$_SESSION['EMAIL'] = $email;
+				// Update date format
+				if($date_format != '') {
+					$_SESSION['DATE_FORMAT'] = $date_format;
+					if(isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) { unset($_SESSION['USE_DEFAULT_DATE_FORMAT']); }
+				} else {
+					$_SESSION['USE_DEFAULT_DATE_FORMAT'] = true;
+					if(isset($_SESSION['DATE_FORMAT'])) { unset($_SESSION['DATE_FORMAT']); }
+				}
+				// Update time format
+				if($time_format != '') {
+					$_SESSION['TIME_FORMAT'] = $time_format;
+					if(isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) { unset($_SESSION['USE_DEFAULT_TIME_FORMAT']); }
+				} else {
+					$_SESSION['USE_DEFAULT_TIME_FORMAT'] = true;
+					if(isset($_SESSION['TIME_FORMAT'])) { unset($_SESSION['TIME_FORMAT']); }
+				}
+			}else {
+				$err_msg[] = 'invalid database UPDATE call in '.__FILE__.'::'.__FUNCTION__.'before line '.__LINE__;
+			}
+		}
+	}
+	return ( (sizeof($err_msg) > 0) ? implode('<br />', $err_msg) : '' );
+}
+$retval = save_preferences($admin, $database);
+if( $retval == '')
+{
+	// print the header
+	$admin->print_header();
+	$admin->print_success($MESSAGE['PREFERENCES_DETAILS_SAVED']);
+	$admin->print_footer();
+}else {
+	// print the header
+	$admin->print_header();
+	$admin->print_error($retval);
+}

Property changes on: tags/2.8.3/wb/admin/preferences/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/preferences/index.php
===================================================================
--- tags/2.8.3/wb/admin/preferences/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/preferences/index.php	(revision 1610)
@@ -0,0 +1,154 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         preferences
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+//if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+//Workaround if this is first page (WBAdmin in use)
+
+// put all inside a function to prevent global vars
+function build_page( &$admin, &$database )
+{
+	global $HEADING, $TEXT;
+	include_once(WB_PATH.'/framework/functions-utf8.php');
+	// Setup template object, parse vars to it, then parse it
+	$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('preferences.htt'));
+	// Create new template object
+	$template = new Template($ThemePath);
+	$template->set_file( 'page', 'preferences.htt' );
+	$template->set_block( 'page', 'main_block', 'main' );
+// read user-info from table users and assign it to template
+	$sql  = 'SELECT `display_name`, `username`, `email` FROM `'.TABLE_PREFIX.'users` ';
+	$sql .= 'WHERE `user_id` = '.(int)$admin->get_user_id();
+	if( $res_user = $database->query($sql) )
+	{
+		if( $rec_user = $res_user->fetchRow() )
+		{
+			$template->set_var('DISPLAY_NAME', $rec_user['display_name']);
+			$template->set_var('USERNAME',     $rec_user['username']);
+			$template->set_var('EMAIL',        $rec_user['email']);
+			$template->set_var('ADMIN_URL',    ADMIN_URL);
+		}
+	}
+// read available languages from table addons and assign it to the template
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+	$sql .= 'WHERE `type` = \'language\' ORDER BY `directory`';
+	if( $res_lang = $database->query($sql) )
+	{
+		$template->set_block('main_block', 'language_list_block', 'language_list');
+		while( $rec_lang = $res_lang->fetchRow() )
+		{
+	        $langIcons = (empty($rec_lang['directory'])) ? 'none' : strtolower($rec_lang['directory']);
+			$template->set_var('CODE',        $rec_lang['directory']);
+			$template->set_var('NAME',        $rec_lang['name']);
+			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
+			$template->parse('language_list', 'language_list_block', true);
+		}
+	}
+// Insert default timezone values
+	$user_time = true;
+	include_once( ADMIN_PATH.'/interface/timezones.php' );
+	$template->set_block('main_block', 'timezone_list_block', 'timezone_list');
+	foreach( $TIMEZONES AS $hour_offset => $title )
+	{
+		$template->set_var('VALUE',    $hour_offset);
+		$template->set_var('NAME',     $title);
+		$template->set_var('SELECTED', ($admin->get_timezone() == ($hour_offset * 3600) ? ' selected="selected"' : '') );
+		$template->parse('timezone_list', 'timezone_list_block', true);
+	}
+// Insert date format list
+	include_once( ADMIN_PATH.'/interface/date_formats.php' );
+	$template->set_block('main_block', 'date_format_list_block', 'date_format_list');
+	foreach( $DATE_FORMATS AS $format => $title )
+	{
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		$template->set_var( 'VALUE', ($format != 'system_default' ? $format : 'system_default') );
+		$template->set_var( 'NAME',  $title );
+		if( (DATE_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
+			('system_default' == $format && isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) )
+		{
+			$template->set_var('SELECTED', ' selected="selected"');
+		}else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('date_format_list', 'date_format_list_block', true);
+	}
+// Insert time format list
+	include_once( ADMIN_PATH.'/interface/time_formats.php' );
+	$template->set_block('main_block', 'time_format_list_block', 'time_format_list');
+	foreach( $TIME_FORMATS AS $format => $title )
+	{
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		$template->set_var('VALUE', $format != 'system_default' ? $format : 'system_default' );
+		$template->set_var('NAME',  $title);
+		if( (TIME_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
+		    ('system_default' == $format && isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) )
+		{
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('time_format_list', 'time_format_list_block', true);
+	}
+
+// assign systemvars to template
+	$template->set_var(array( 'ADMIN_URL'  => ADMIN_URL,
+	                          'WB_URL'     => WB_URL,
+                              'THEME_URL'  => THEME_URL,
+		                      'ACTION_URL' => ADMIN_URL.'/preferences/save.php'
+                            )
+                      );
+	$template->set_var('FTAN', $admin->getFTAN());
+	$template->set_var('FORM_NAME', 'preferences_save');
+// assign language vars
+	$template->set_var(array( 'HEADING_MY_SETTINGS'      => $HEADING['MY_SETTINGS'],
+                              'HEADING_MY_EMAIL'         => $HEADING['MY_EMAIL'],
+                              'HEADING_MY_PASSWORD'      => $HEADING['MY_PASSWORD'],
+                              'TEXT_SAVE'                => $TEXT['SAVE'],
+                              'TEXT_RESET'               => $TEXT['RESET'],
+                              'TEXT_DISPLAY_NAME'        => $TEXT['DISPLAY_NAME'],
+                              'TEXT_USERNAME'            => $TEXT['USERNAME'],
+                              'TEXT_EMAIL'               => $TEXT['EMAIL'],
+                              'TEXT_LANGUAGE'            => $TEXT['LANGUAGE'],
+                              'TEXT_TIMEZONE'            => $TEXT['TIMEZONE'],
+                              'TEXT_DATE_FORMAT'         => $TEXT['DATE_FORMAT'],
+                              'TEXT_TIME_FORMAT'         => $TEXT['TIME_FORMAT'],
+                              'TEXT_CURRENT_PASSWORD'    => $TEXT['CURRENT_PASSWORD'],
+                              'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
+                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
+							  'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
+                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
+							  'TEXT_NEED_CURRENT_PASSWORD' => $TEXT['NEED_CURRENT_PASSWORD'],
+	                          'EMPTY_STRING'             => ''
+                            )
+                      );
+// Parse template for preferences form
+	$template->parse('main', 'main_block', false);
+	$output = $template->finish($template->parse('output', 'page'));
+	return $output;
+}
+// test if valid $admin-object already exists (bit complicated about PHP4 Compatibility)
+if( !(isset($admin) && is_object($admin) && (get_class($admin) == 'admin')) )
+{
+    require( '../../config.php' );
+	require_once( WB_PATH.'/framework/class.admin.php' );
+	$admin = new admin('Preferences');
+}
+echo build_page($admin, $database);
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/preferences/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/preferences
===================================================================
--- tags/2.8.3/wb/admin/preferences	(nonexistent)
+++ tags/2.8.3/wb/admin/preferences	(revision 1610)

Property changes on: tags/2.8.3/wb/admin/preferences
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+details.php
+email.php
+index.php
Index: tags/2.8.3/wb/admin/admintools/tool.php
===================================================================
--- tags/2.8.3/wb/admin/admintools/tool.php	(nonexistent)
+++ tags/2.8.3/wb/admin/admintools/tool.php	(revision 1610)
@@ -0,0 +1,52 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WB-Project, Werner v.d. Decken
+ * @copyright       2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+	$toolDir = (isset($_GET['tool']) && (trim($_GET['tool']) != '') ? trim($_GET['tool']) : '');
+	$doSave = (isset($_POST['save_settings']) || (isset($_POST['action']) && strtolower($_POST['action']) == 'save'));
+// test for valid tool name
+	if(preg_match('/^[a-z][a-z_\-0-9]{2,}$/i', $toolDir)) {
+	// Check if tool is installed
+		$sql = 'SELECT `name` FROM `'.TABLE_PREFIX.'addons` '.
+		       'WHERE `type`=\'module\' AND `function`=\'tool\' '.
+		              'AND `directory`=\''.$toolDir.'\'';
+		if(($toolName = $database->get_one($sql))) {
+		// create admin-object and print header if FTAN is NOT supported AND function 'save' is requested
+			$admin_header = !(is_file(WB_PATH.'/modules/'.$toolDir.'/FTAN_SUPPORTED') && $doSave);
+			$admin = new admin('admintools', 'admintools', $admin_header );
+			if(!$doSave) {
+			// show title if not function 'save' is requested
+				print '<h4><a href="'.ADMIN_URL.'/admintools/index.php" '.
+				      'title="'.$HEADING['ADMINISTRATION_TOOLS'].'">'.
+				      $HEADING['ADMINISTRATION_TOOLS'].'</a>'.
+					  '&nbsp;&raquo;&nbsp;'.$toolName.'</h4>'."\n";
+			}
+			// include modules tool.php
+			require(WB_PATH.'/modules/'.$toolDir.'/tool.php');
+			$admin->print_footer();
+		}else {
+		// no installed module found, jump to index.php of admintools
+			header('location: '.ADMIN_URL.'/admintools/index.php');
+			exit(0);
+		}
+	}else {
+	// invalid module name requested, jump to index.php of admintools
+		header('location: '.ADMIN_URL.'/admintools/index.php');
+		exit(0);
+	}

Property changes on: tags/2.8.3/wb/admin/admintools/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/admintools/index.php
===================================================================
--- tags/2.8.3/wb/admin/admintools/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/admintools/index.php	(revision 1610)
@@ -0,0 +1,63 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         admintools
+ * @author          WB-Project, Werner v.d. Decken
+ * @copyright       2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('admintools', 'admintools');
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('admintools.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'admintools.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert required template variables
+$template->set_var('ADMIN_URL', ADMIN_URL);
+$template->set_var('THEME_URL', THEME_URL);
+$template->set_var('HEADING_ADMINISTRATION_TOOLS', $HEADING['ADMINISTRATION_TOOLS']);
+
+// Insert tools into tool list
+$template->set_block('main_block', 'tool_list_block', 'tool_list');
+$results = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'module' AND function = 'tool' order by name");
+if($results->numRows() > 0) {
+	while($tool = $results->fetchRow()) {
+		$template->set_var('TOOL_NAME', $tool['name']);
+		$template->set_var('TOOL_DIR', $tool['directory']);
+		// check if a module description exists for the displayed backend language
+		$tool_description = false;
+		if(function_exists('file_get_contents') && file_exists(WB_PATH.'/modules/'.$tool['directory'].'/languages/'.LANGUAGE .'.php')) {
+			// read contents of the module language file into string
+			$data = @file_get_contents(WB_PATH .'/modules/' .$tool['directory'] .'/languages/' .LANGUAGE .'.php');
+			$tool_description = get_variable_content('module_description', $data, true, false);
+		}		
+		$template->set_var('TOOL_DESCRIPTION', ($tool_description === False)? $tool['description'] :$tool_description);
+		$template->parse('tool_list', 'tool_list_block', true);
+	}
+} else {
+	$template->set_var('TOOL_LIST', $TEXT['NONE_FOUND']);	
+}
+
+// Parse template objects output
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/admintools/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/modify.php
===================================================================
--- tags/2.8.3/wb/admin/pages/modify.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/modify.php	(revision 1610)
@@ -0,0 +1,207 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+/*
+*/
+// Create new admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+$admin = new admin('Pages', 'pages_modify');
+/*
+// Get page id
+if(!isset($_GET['page_id']) || !is_numeric($_GET['page_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = (int)$_GET['page_id'];
+}
+*/
+// Get page id
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$page_id = intval(isset(${$requestMethod}['page_id'])) ? ${$requestMethod}['page_id'] : 0;
+	if(	($page_id == 0)) {
+		header("Location: index.php");
+		exit(0);
+	}
+
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', $page_id, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+*/
+
+// Get perms
+if(!$admin->get_page_permission($page_id,'admin')) {
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+$sectionId = isset($_GET['wysiwyg']) ? htmlspecialchars($admin->get_get('wysiwyg')) : NULL;
+
+// Get page details
+$results_array=$admin->get_page_details($page_id);
+
+// Get display name of person who last modified the page
+$user=$admin->get_user_details($results_array['modified_by']);
+
+// Convert the unix ts for modified_when to human a readable form
+
+$modified_ts = ($results_array['modified_when'] != 0)
+        ? $modified_ts = date(TIME_FORMAT.', '.DATE_FORMAT, $results_array['modified_when']+TIMEZONE)
+        : 'Unknown';
+// $ftan_module = $GLOBALS['ftan_module'];
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('pages_modify.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'pages_modify.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('FTAN', $admin->getFTAN() );
+
+$template->set_var(array(
+			'PAGE_ID' => $results_array['page_id'],
+			// 'PAGE_IDKEY' => $admin->getIDKEY($results_array['page_id']),
+			'PAGE_IDKEY' => $results_array['page_id'],
+			'PAGE_TITLE' => ($results_array['page_title']),
+			'MENU_TITLE' => ($results_array['menu_title']),
+			'ADMIN_URL' => ADMIN_URL,
+			'WB_URL' => WB_URL,
+			'THEME_URL' => THEME_URL
+			));
+
+$template->set_var(array(
+			'MODIFIED_BY' => $user['display_name'],
+			'MODIFIED_BY_USERNAME' => $user['username'],
+			'MODIFIED_WHEN' => $modified_ts,
+			'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
+			));
+
+$template->set_block('main_block', 'show_modify_block', 'show_modify');
+if($modified_ts == 'Unknown')
+{
+    $template->set_block('show_modify', '');
+	$template->set_var('CLASS_DISPLAY_MODIFIED', 'hide');
+
+} else {
+	$template->set_var('CLASS_DISPLAY_MODIFIED', '');
+    $template->parse('show_modify', 'show_modify_block', true);
+}
+
+// Work-out if we should show the "manage sections" link
+$sql  = 'SELECT `section_id` FROM `'.TABLE_PREFIX.'sections` WHERE `page_id` = '.(int)$page_id.' ';
+$sql .= 'AND `module` = "menu_link"';
+$query_sections = $database->query($sql);
+
+$template->set_block('main_block', 'show_section_block', 'show_section');
+if($query_sections->numRows() > 0)
+{
+	$template->set_block('show_section', '');
+	$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+
+} elseif(MANAGE_SECTIONS == 'enabled')
+{
+
+	$template->set_var('TEXT_MANAGE_SECTIONS', $HEADING['MANAGE_SECTIONS']);
+    $template->parse('show_section', 'show_section_block', true);
+
+} else {
+	$template->set_block('show_section', '');
+	$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+
+}
+
+// Insert language TEXT
+$template->set_var(array(
+				'TEXT_CURRENT_PAGE' => $TEXT['CURRENT_PAGE'],
+				'TEXT_CHANGE_SETTINGS' => $TEXT['CHANGE_SETTINGS'],
+				'HEADING_MODIFY_PAGE' => $HEADING['MODIFY_PAGE']
+				));
+
+// Parse and print header template
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// get template used for the displayed page (for displaying block details)
+if (SECTION_BLOCKS)
+{
+	$sql = "SELECT `template` from `" . TABLE_PREFIX . "pages` WHERE `page_id` = '$page_id' ";
+	$result = $database->query($sql);
+	if ($result && $result->numRows() == 1) {
+		$row = $result->fetchRow();
+		$page_template = ($row['template'] == '') ? DEFAULT_TEMPLATE : $row['template'];
+		// include template info file if exists
+		if (file_exists(WB_PATH . '/templates/' . $page_template . '/info.php'))
+		{
+			include_once(WB_PATH . '/templates/' . $page_template . '/info.php');
+		}
+	}
+}
+
+// Get sections for this page
+$module_permissions = $_SESSION['MODULE_PERMISSIONS'];
+// workout for edit only one section for faster pageloading
+// Constant later set in wb_settings, in meantime defined in framework/initialize.php
+$sql = 'SELECT `section_id`, `module`, `block` FROM `'.TABLE_PREFIX.'sections` ';
+
+$sql .= (defined('EDIT_ONE_SECTION') && EDIT_ONE_SECTION && is_numeric($sectionId))
+		? 'WHERE `section_id` = '.$sectionId
+		: 'WHERE `page_id` = '.intval($page_id);
+$sql .= ' ORDER BY position ASC';
+$query_sections = $database->query($sql);
+if($query_sections->numRows() > 0)
+{
+	while($section = $query_sections->fetchRow())
+    {
+		$section_id = $section['section_id'];
+		$module = $section['module'];
+		//Have permission?
+		if(!is_numeric(array_search($module, $module_permissions)))
+        {
+			// Include the modules editing script if it exists
+			if(file_exists(WB_PATH.'/modules/'.$module.'/modify.php'))
+            {
+				print /* '<a name="'.$section_id.'"></a>'. */"\n";
+				// output block name if blocks are enabled
+				if (SECTION_BLOCKS) {
+					if (isset($block[$section['block']]) && trim(strip_tags(($block[$section['block']]))) != '')
+                    {
+						$block_name = htmlentities(strip_tags($block[$section['block']]));
+					} else {
+						if ($section['block'] == 1)
+                        {
+							$block_name = $TEXT['MAIN'];
+						} else {
+							$block_name = '#' . (int) $section['block'];
+						}
+					}
+
+                    $sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? 'id="'.SEC_ANCHOR.$section['section_id'].'"' : '');
+					print '<div class="section-info" '.$sec_anchor.' ><b>' . $TEXT['BLOCK'] . ': </b>' . $block_name;
+					print '<b>  Modul: </b>' . $section['module']." ";
+					print '<b>  ID: </b>' . $section_id."</div>\n";
+
+				}
+				require(WB_PATH.'/modules/'.$module.'/modify.php');
+			}
+		}
+	}
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/modify.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/settings.php
===================================================================
--- tags/2.8.3/wb/admin/pages/settings.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/settings.php	(revision 1610)
@@ -0,0 +1,629 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/*
+*/
+// Create new admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_settings');
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions-utf8.php');
+
+// Get page id
+if(!isset($_GET['page_id']) || !is_numeric($_GET['page_id']))
+{
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = $_GET['page_id'];
+}
+
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+	exit();
+}
+*/
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
+$results = $database->query($sql);
+$results_array = $results->fetchRow();
+
+$old_admin_groups = explode(',', $results_array['admin_groups']);
+$old_admin_users = explode(',', $results_array['admin_users']);
+
+// Work-out if we should check for existing page_code
+$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
+
+$in_old_group = FALSE;
+foreach($admin->get_groups_id() as $cur_gid)
+{
+	if (in_array($cur_gid, $old_admin_groups))
+    {
+		$in_old_group = TRUE;
+	}
+}
+if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// Get page details
+/* $database = new database();  */
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
+$results = $database->query($sql);
+if($database->is_error()) {
+	$admin->print_header();
+	$admin->print_error($database->get_error());
+}
+if($results->numRows() == 0) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+}
+$results_array = $results->fetchRow();
+
+// Get display name of person who last modified the page
+$user=$admin->get_user_details($results_array['modified_by']);
+
+// Convert the unix ts for modified_when to human a readable form
+if($results_array['modified_when'] != 0)
+{
+	$modified_ts = gmdate(TIME_FORMAT.', '.DATE_FORMAT, $results_array['modified_when']+TIMEZONE);
+} else {
+	$modified_ts = 'Unknown';
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('pages_settings.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'pages_settings.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('FTAN', $admin->getFTAN());
+
+$template->set_var(array(
+				'PAGE_ID' => $results_array['page_id'],
+				// 'PAGE_IDKEY' => $admin->getIDKEY($results_array['page_id']),
+				'PAGE_IDKEY' => $results_array['page_id'],
+				'PAGE_TITLE' => ($results_array['page_title']),
+				'MENU_TITLE' => ($results_array['menu_title']),
+				'DESCRIPTION' => ($results_array['description']),
+				'KEYWORDS' => ($results_array['keywords']),
+				'MODIFIED_BY' => $user['display_name'],
+				'MODIFIED_BY_USERNAME' => $user['username'],
+				'MODIFIED_WHEN' => $modified_ts,
+				'ADMIN_URL' => ADMIN_URL,
+				'WB_URL' => WB_URL,
+				'THEME_URL' => THEME_URL
+				)
+		);
+
+// Work-out if we should show the "manage sections" link
+$sql = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.$page_id.' AND `module`="menu_link"';
+$sections_available = (intval($database->get_one($sql)) != 0);
+if ($sections_available)
+{
+    $template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+} elseif(MANAGE_SECTIONS == 'enabled')
+{
+	$template->set_var('TEXT_MANAGE_SECTIONS', $HEADING['MANAGE_SECTIONS']);
+} else {
+	$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+}
+
+// Visibility
+if($results_array['visibility'] == 'public') {
+	$template->set_var('PUBLIC_SELECTED', ' selected="selected"');
+} elseif($results_array['visibility'] == 'private') {
+	$template->set_var('PRIVATE_SELECTED', ' selected="selected"');
+} elseif($results_array['visibility'] == 'registered') {
+	$template->set_var('REGISTERED_SELECTED', ' selected="selected"');
+} elseif($results_array['visibility'] == 'hidden') {
+	$template->set_var('HIDDEN_SELECTED', ' selected="selected"');
+} elseif($results_array['visibility'] == 'none') {
+	$template->set_var('NO_VIS_SELECTED', ' selected="selected"');
+}
+// Group list 1 (admin_groups)
+	$admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
+
+	$sql = 'SELECT * FROM `'.TABLE_PREFIX.'groups`';
+    $get_groups = $database->query($sql);
+
+	$template->set_block('main_block', 'group_list_block', 'group_list');
+	// Insert admin group and current group first
+	$admin_group_name = $get_groups->fetchRow();
+	$template->set_var(array(
+									'ID' => 1,
+									'TOGGLE' => '',
+									'DISABLED' => ' disabled="disabled"',
+									'LINK_COLOR' => '000000',
+									'CURSOR' => 'default',
+									'NAME' => $admin_group_name['name'],
+									'CHECKED' => ' checked="checked"'
+									)
+							);
+	$template->parse('group_list', 'group_list_block', true);
+	while($group = $get_groups->fetchRow()) {
+		// check if the user is a member of this group
+		$flag_disabled = '';
+		$flag_checked =  '';
+		$flag_cursor =   'pointer';
+		$flag_color =    '';
+		if (in_array($group["group_id"], $admin->get_groups_id())) {
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ''; //' checked';
+			$flag_cursor =   'default';
+			$flag_color =    '000000';
+		}
+
+		// Check if the group is allowed to edit pages
+		$system_permissions = explode(',', $group['system_permissions']);
+		if(is_numeric(array_search('pages_modify', $system_permissions))) {
+			$template->set_var(array(
+											'ID' => $group['group_id'],
+											'TOGGLE' => $group['group_id'],
+											'DISABLED' => $flag_disabled,
+											'LINK_COLOR' => $flag_color,
+											'CURSOR' => $flag_cursor,
+											'NAME' => $group['name'],
+											'CHECKED' => $flag_checked
+											)
+									);
+			if(is_numeric(array_search($group['group_id'], $admin_groups))) {
+				$template->set_var('CHECKED', ' checked="checked"');
+			} else {
+				if (!$flag_checked) $template->set_var('CHECKED', '');
+			}
+			$template->parse('group_list', 'group_list_block', true);
+		}
+	}
+
+// Group list 2 (viewing_groups)
+	$viewing_groups = explode(',', str_replace('_', '', $results_array['viewing_groups']));
+
+    $sql = 'SELECT * FROM `'.TABLE_PREFIX.'groups`';
+    $get_groups = $database->query($sql);
+
+	$template->set_block('main_block', 'group_list_block2', 'group_list2');
+	// Insert admin group and current group first
+	$admin_group_name = $get_groups->fetchRow();
+	$template->set_var(array(
+									'ID' => 1,
+									'TOGGLE' => '',
+									'DISABLED' => ' disabled="disabled"',
+									'LINK_COLOR' => '000000',
+									'CURSOR' => 'default',
+									'NAME' => $admin_group_name['name'],
+									'CHECKED' => ' checked="checked"'
+									)
+							);
+	$template->parse('group_list2', 'group_list_block2', true);
+
+	while($group = $get_groups->fetchRow())
+    {
+		// check if the user is a member of this group
+		$flag_disabled = '';
+		$flag_checked =  '';
+		$flag_cursor =   'pointer';
+		$flag_color =    '';
+		if (in_array($group["group_id"], $admin->get_groups_id()))
+        {
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ''; //' checked';
+			$flag_cursor =   'default';
+			$flag_color =    '000000';
+		}
+
+		$template->set_var(array(
+										'ID' => $group['group_id'],
+										'TOGGLE' => $group['group_id'],
+										'DISABLED' => $flag_disabled,
+										'LINK_COLOR' => $flag_color,
+										'CURSOR' => $flag_cursor,
+										'NAME' => $group['name'],
+										'CHECKED' => $flag_checked
+										)
+								);
+		if(is_numeric(array_search($group['group_id'], $viewing_groups)))
+        {
+			$template->set_var('CHECKED', 'checked="checked"');
+		} else {
+			if (!$flag_checked) {$template->set_var('CHECKED', '');}
+		}
+
+		$template->parse('group_list2', 'group_list_block2', true);
+
+	}
+
+// Show private viewers
+if($results_array['visibility'] == 'private' OR $results_array['visibility'] == 'registered')
+{
+	$template->set_var('DISPLAY_VIEWERS', '');
+} else {
+	$template->set_var('DISPLAY_VIEWERS', 'display:none;');
+}
+
+//-- insert page_code 20090904-->
+$template->set_var('DISPLAY_CODE_PAGE_LIST', ' id="multi_lingual" style="display:none;"');
+
+// Work-out if page languages feature is enabled
+if((defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php') )
+{
+    // workout field is set but module missing
+    $TEXT['PAGE_CODE'] = empty($TEXT['PAGE_CODE']) ? 'Pagecode' : $TEXT['PAGE_CODE'];
+	$template->set_var( array(
+            'DISPLAY_CODE_PAGE_LIST' => ' id="multi_lingual"',
+            'TEXT_PAGE_CODE' => '<a href="'.WB_URL.'/modules/mod_multilingual/update_keys.php?page_id='.$page_id.'">'.$TEXT['PAGE_CODE'].'</a>'
+        )
+    );
+
+	// Page_code list
+   /* 	$database = new database();  */
+	function page_code_list($parent)
+    {
+		global $admin, $database, $template, $results_array, $pageCode;
+		$default_language = DEFAULT_LANGUAGE;
+
+        $sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$parent.' AND `language` = "'.$default_language.'" ORDER BY `position` ASC';
+        $get_pages = $database->query($sql);
+
+		while($page = $get_pages->fetchRow())
+        {
+			if(($admin->page_is_visible($page)==false) && ($page['visibility'] <> 'none') ) { continue; }
+
+			$template->set_var('FLAG_CODE_ICON',' none ');
+			if( $page['parent'] == 0 )
+            {
+				$template->set_var('FLAG_CODE_ICON','url('.THEME_URL.'/images/flags/'.strtolower($page['language']).'.png)');
+			}
+
+			// If the current page cannot be parent, then its children neither
+			$list_next_level = true;
+			// Stop users from adding pages with a level of more than the set page level limit
+			if($page['level']+1 < PAGE_LEVEL_LIMIT)
+            {
+				// Get user perms
+				$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+				$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+
+				$in_group = FALSE;
+				foreach($admin->get_groups_id() as $cur_gid)
+                {
+					if (in_array($cur_gid, $admin_groups))
+					{
+						$in_group = TRUE;
+					}
+				}
+
+				if(($in_group) OR is_numeric(array_search($admin->get_user_id(), $admin_users)))
+                {
+					$can_modify = true;
+				} else {
+					$can_modify = false;
+				}
+
+				$title_prefix = '';
+				for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
+                // $space = str_repeat('&nbsp;', 3);  $space.'&lt;'..'&gt;'
+				$template->set_var(array(
+										'VALUE' => $page['page_code'],
+                                        'PAGE_VALUE' => $title_prefix.$page['menu_title'],
+										'PAGE_CODE' => $title_prefix.$page['page_id']
+										)
+								);
+				if($results_array['page_code'] == $page['page_code'])
+                {
+					$template->set_var('SELECTED', ' selected="selected"');
+				} elseif($results_array['page_code'] == $page['page_code'])
+                {
+					$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
+					$list_next_level=false;
+				} elseif($can_modify != true)
+                {
+					$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
+				} else {
+					$template->set_var('SELECTED', '');
+				}
+				$template->parse('page_code_list', 'page_code_list_block', true);
+			}
+			if ($list_next_level)
+				page_code_list($page['page_id']);
+		}
+	}
+
+	// Insert code_page values from page to modify
+	$template->set_block('main_block', 'page_code_list_block', 'page_code_list');
+	if($admin->get_permission('pages_add_l0') == true OR $results_array['level'] == 0) {
+		if($results_array['parent'] == 0) { $selected = ' selected'; } else { $selected = ''; }
+		$template->set_var(array(
+									'VALUE' => '',
+									'PAGE_CODE' => $TEXT['NONE'],
+                                    'PAGE_VALUE' => '',
+									'SELECTED' => $selected
+								)
+							);
+		$template->parse('page_code_list', 'page_code_list_block', true);
+	}
+	// get pagecode form this page_id
+   	page_code_list(0);
+}
+//-- page code -->
+
+// Parent page list
+/* $database = new database();  */
+function parent_list($parent)
+{
+	global $admin, $database, $template, $results_array,$field_set;
+
+    $sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$parent.' ORDER BY `position` ASC';
+    $get_pages = $database->query($sql);
+
+	while($page = $get_pages->fetchRow())
+    {
+		if($admin->page_is_visible($page)==false)
+        {
+          continue;
+        }
+
+		// if parent = 0 set flag_icon
+		$template->set_var('FLAG_ROOT_ICON',' none ');
+		if( $page['parent'] == 0  && $field_set)
+        {
+			$template->set_var('FLAG_ROOT_ICON','url('.THEME_URL.'/images/flags/'.strtolower($page['language']).'.png)');
+		}
+		// If the current page cannot be parent, then its children neither
+		$list_next_level = true;
+		// Stop users from adding pages with a level of more than the set page level limit
+		if($page['level']+1 < PAGE_LEVEL_LIMIT)
+        {
+			// Get user perms
+			$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+			$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+			$in_group = FALSE;
+			foreach($admin->get_groups_id() as $cur_gid)
+            {
+				if (in_array($cur_gid, $admin_groups))
+                {
+					$in_group = TRUE;
+				}
+			}
+			if(($in_group) OR is_numeric(array_search($admin->get_user_id(), $admin_users)))
+            {
+				$can_modify = true;
+			} else {
+				$can_modify = false;
+			}
+			// Title -'s prefix
+			$title_prefix = '';
+			for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
+			$template->set_var(array(
+								'ID' => $page['page_id'],
+								'TITLE' => ($title_prefix.$page['menu_title']),
+								'MENU-TITLE' => ($title_prefix.$page['menu_title']),
+								'PAGE-TITLE' => ($title_prefix.$page['page_title']),
+								'FLAG_ICON' => ' none ',
+								));
+
+			if($results_array['parent'] == $page['page_id'])
+            {
+				$template->set_var('SELECTED', ' selected="selected"');
+			} elseif($results_array['page_id'] == $page['page_id'])
+            {
+				$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
+				$list_next_level=false;
+			} elseif($can_modify != true)
+            {
+				$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
+			} else {
+				$template->set_var('SELECTED', '');
+			}
+			$template->parse('page_list2', 'page_list_block2', true);
+		}
+		if ($list_next_level)
+        {
+          parent_list($page['page_id']);
+        }
+
+	}
+}
+
+$template->set_block('main_block', 'page_list_block2', 'page_list2');
+if($admin->get_permission('pages_add_l0') == true OR $results_array['level'] == 0) {
+	if($results_array['parent'] == 0)
+    {
+		$selected = ' selected="selected"';
+	} else { 
+		$selected = '';
+	}
+	$template->set_var(array(
+						'ID' => '0',
+						'TITLE' => $TEXT['NONE'],
+						'SELECTED' => $selected
+						) );
+	$template->parse('page_list2', 'page_list_block2', true);
+}
+parent_list(0);
+
+if($modified_ts == 'Unknown')
+{
+	$template->set_var('DISPLAY_MODIFIED', 'hide');
+} else {
+	$template->set_var('DISPLAY_MODIFIED', '');
+}
+
+// Templates list
+$template->set_block('main_block', 'template_list_block', 'template_list');
+
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "template" AND `function` = "template" order by `name`';
+if( ($res_templates = $database->query($sql)) )
+{
+	while($rec_template = $res_templates->fetchRow())
+    {
+		// Check if the user has perms to use this template
+		if($rec_template['directory'] == $results_array['template'] OR $admin->get_permission($rec_template['directory'], 'template') == true)
+        {
+			$template->set_var('VALUE', $rec_template['directory']);
+			$template->set_var('NAME', $rec_template['name']);
+			if($rec_template['directory'] == $results_array['template'])
+            {
+				$template->set_var('SELECTED', ' selected="selected"');
+			} else {
+				$template->set_var('SELECTED', '');
+			}
+			$template->parse('template_list', 'template_list_block', true);
+		}
+	}
+}
+
+// Menu list
+if(MULTIPLE_MENUS == false)
+{
+	$template->set_var('DISPLAY_MENU_LIST', 'display:none;');
+}
+// Include template info file (if it exists)
+if($results_array['template'] != '')
+{
+	$template_location = WB_PATH.'/templates/'.$results_array['template'].'/info.php';
+} else {
+	$template_location = WB_PATH.'/templates/'.DEFAULT_TEMPLATE.'/info.php';
+}
+if(file_exists($template_location))
+{
+	require($template_location);
+}
+// Check if $menu is set
+if(!isset($menu[1]) OR $menu[1] == '')
+{
+	// Make our own menu list
+	$menu[1] = $TEXT['MAIN'];
+}
+// Add menu options to the list
+$template->set_block('main_block', 'menu_list_block', 'menu_list');
+foreach($menu AS $number => $name)
+{
+	$template->set_var('NAME', $name);
+	$template->set_var('VALUE', $number);
+	if($results_array['menu'] == $number)
+    {
+		$template->set_var('SELECTED', ' selected="selected"');
+	} else {
+		$template->set_var('SELECTED', '');
+	}
+	$template->parse('menu_list', 'menu_list_block', true);
+}
+
+// Insert language values
+$template->set_block('main_block', 'language_list_block', 'language_list');
+
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "language" ORDER BY `name`';
+if( ($res_languages = $database->query($sql)) )
+{
+	while($rec_language = $res_languages->fetchRow())
+    {
+		$l_codes[$rec_language['name']] = $rec_language['directory'];
+		$l_names[$rec_language['name']] = entities_to_7bit($rec_language['name']); // sorting-problem workaround
+	}
+	asort($l_names);
+
+	foreach($l_names as $l_name=>$v)
+    {
+        $langIcons = (empty($l_codes[$l_name])) ? 'none' : strtolower($l_codes[$l_name]);
+		// Insert code and name
+		$template->set_var(array(
+								'VALUE' => $l_codes[$l_name],
+								'NAME' => $l_name,
+								'FLAG_LANG_ICONS' => 'url('.THEME_URL.'/images/flags/'.$langIcons.'.png)',
+								));
+		// Check if it is selected
+		if($results_array['language'] == $l_codes[$l_name])
+        {
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('language_list', 'language_list_block', true);
+	}
+}
+
+// Select disabled if searching is disabled
+if($results_array['searching'] == 0)
+{
+	$template->set_var('SEARCHING_DISABLED', ' selected="selected"');
+}
+// Select what the page target is
+switch ($results_array['target'])
+{
+	case '_top':
+		$template->set_var('TOP_SELECTED', ' selected="selected"');
+		break;
+	case '_self':
+		$template->set_var('SELF_SELECTED', ' selected="selected"');
+		break;
+	case '_blank':
+		$template->set_var('BLANK_SELECTED', ' selected="selected"');
+		break;
+}
+
+// Insert language text
+$template->set_var(array(
+				'HEADING_MODIFY_PAGE_SETTINGS' => $HEADING['MODIFY_PAGE_SETTINGS'],
+				'TEXT_CURRENT_PAGE' => $TEXT['CURRENT_PAGE'],
+				'TEXT_MODIFY' => $TEXT['MODIFY'],
+				'TEXT_MODIFY_PAGE' => $HEADING['MODIFY_PAGE'],
+				'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
+				'TEXT_PAGE_TITLE' => $TEXT['PAGE_TITLE'],
+				'TEXT_MENU_TITLE' => $TEXT['MENU_TITLE'],
+				'TEXT_TYPE' => $TEXT['TYPE'],
+				'TEXT_MENU' => $TEXT['MENU'],
+				'TEXT_PARENT' => $TEXT['PARENT'],
+				'TEXT_VISIBILITY' => $TEXT['VISIBILITY'],
+				'TEXT_PUBLIC' => $TEXT['PUBLIC'],
+				'TEXT_PRIVATE' => $TEXT['PRIVATE'],
+				'TEXT_REGISTERED' => $TEXT['REGISTERED'],
+				'TEXT_NONE' => $TEXT['NONE'],
+				'TEXT_HIDDEN' => $TEXT['HIDDEN'],
+				'TEXT_TEMPLATE' => $TEXT['TEMPLATE'],
+				'TEXT_TARGET' => $TEXT['TARGET'],
+				'TEXT_SYSTEM_DEFAULT' => $TEXT['SYSTEM_DEFAULT'],
+				'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+				'TEXT_NEW_WINDOW' => $TEXT['NEW_WINDOW'],
+				'TEXT_SAME_WINDOW' => $TEXT['SAME_WINDOW'],
+				'TEXT_TOP_FRAME' => $TEXT['TOP_FRAME'],
+				'TEXT_ADMINISTRATORS' => $TEXT['ADMINISTRATORS'],
+				'TEXT_ALLOWED_VIEWERS' => $TEXT['ALLOWED_VIEWERS'],
+				'TEXT_DESCRIPTION' => $TEXT['DESCRIPTION'],
+				'TEXT_KEYWORDS' => $TEXT['KEYWORDS'],
+				'TEXT_SEARCHING' => $TEXT['SEARCHING'],
+				'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
+				'TEXT_ENABLED' => $TEXT['ENABLED'],
+				'TEXT_DISABLED' => $TEXT['DISABLED'],
+				'TEXT_SAVE' => $TEXT['SAVE'],
+				'TEXT_RESET' => $TEXT['RESET'],
+				'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
+				'HEADING_MODIFY_PAGE' => $HEADING['MODIFY_PAGE']
+			) );
+
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/settings.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/index.php
===================================================================
--- tags/2.8.3/wb/admin/pages/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/index.php	(revision 1610)
@@ -0,0 +1,601 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages');
+
+$admin->clearIDKEY();
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+// eggsurplus: add child pages for a specific page
+?>
+<script type="text/javascript" src="<?php print ADMIN_URL; ?>/pages/eggsurplus.js"></script>
+<?php
+
+// fixes A URI contains impermissible characters or quotes around the URI are not closed.
+$MESSAGE['PAGES_DELETE_CONFIRM'] = url_encode(  $MESSAGE['PAGES_DELETE_CONFIRM'] );
+
+function set_node ($parent,& $par)
+{
+    $retval = '';
+
+	if($par['num_subs'] )
+	{
+    $retval .= "\n".'<ul id="p'.$parent.'"';
+	if ($parent != 0)
+	{
+		$retval .= ' class="page_list"';
+		if (isset ($_COOKIE['p'.$parent]) && $_COOKIE['p'.$parent] == '1')
+		{
+			 $retval .= ' style="display:block"';
+		}
+	}
+	$retval .= ">\n";
+ 	}
+
+	return $retval;
+}
+
+function make_list($parent = 0, $editable_pages = 0) {
+	// Get objects and vars from outside this function
+	global $admin, $template, $database, $TEXT, $MESSAGE, $HEADING, $par;
+
+    print set_node ($parent,$par);
+
+	// Get page list from database
+    $sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$parent.' ';
+    $sql .= (PAGE_TRASH != 'inline') ?  'AND `visibility` != \'deleted\' ' : ' ';
+    $sql .= 'ORDER BY `position` ASC';
+	$get_pages = $database->query($sql);
+
+	// Insert values into main page list
+	if($get_pages->numRows() > 0)
+	{
+		while($page = $get_pages->fetchRow())
+		{
+			// Get user perms
+			$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+			$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+			$in_group = FALSE;
+			foreach($admin->get_groups_id() as $cur_gid)
+            {
+				if (in_array($cur_gid, $admin_groups))
+                {
+					$in_group = TRUE;
+				}
+			}
+			if(($in_group) || is_numeric(array_search($admin->get_user_id(), $admin_users)))
+            {
+				if($page['visibility'] == 'deleted')
+                {
+					if(PAGE_TRASH == 'inline')
+                    {
+						$can_modify = true;
+						$editable_pages = $editable_pages+1;
+					} else {
+						$can_modify = false;
+					}
+				} elseif($page['visibility'] != 'deleted')
+                {
+					$can_modify = true;
+					$editable_pages = $editable_pages+1;
+				}
+			} else {
+				if($page['visibility'] == 'private')
+                {
+					continue;
+				}
+				else {
+					$can_modify = false;
+				}
+			}
+
+			// Work out if we should show a plus or not
+            $sql = 'SELECT `page_id`,`admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$page['page_id'].' ';
+            $sql .= (PAGE_TRASH != 'inline') ?  'AND `visibility` != \'deleted\' ' : ' ';
+            // $sql .= ' ORDER BY `position` ASC';
+        	$get_page_subs = $database->query($sql);
+			$num_subs = $get_page_subs->numRows();
+			$par['num_subs'] = $num_subs;
+/*
+			if(PAGE_TRASH != 'inline')
+            {
+				$get_page_subs = $database->query("SELECT page_id,admin_groups,admin_users FROM ".TABLE_PREFIX."pages WHERE parent = '".$page['page_id']."' AND visibility!='deleted'");
+			} else {
+				$get_page_subs = $database->query("SELECT page_id,admin_groups,admin_users FROM ".TABLE_PREFIX."pages WHERE parent = '".$page['page_id']."'");
+			}
+*/
+			if($get_page_subs->numRows() > 0)
+            {
+				$display_plus = true;
+			} else {
+				$display_plus = false;
+			}
+			// Work out how many pages there are for this parent
+			$num_pages = $get_pages->numRows();
+			?>
+			<li class="p<?php echo $page['parent']; ?>">
+			<table summary="<?php echo $TEXT['EXPAND'].'/'.$TEXT['COLLAPSE']; ?>" class="pages_view" cellpadding="0" cellspacing="0">
+			<tr>
+				<td valign="middle" width="20" style="padding-left: <?php if($page['level'] > 0){ echo $page['level']*20; } else { echo '7'; } ?>px;">
+					<?php
+					if($display_plus == true) {
+					?>
+					<a href="javascript:toggle_visibility('p<?php echo $page['page_id']; ?>');" title="<?php echo $TEXT['EXPAND'].'/'.$TEXT['COLLAPSE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/<?php if(isset($_COOKIE['p'.$page['page_id']]) && $_COOKIE['p'.$page['page_id']] == '1'){ echo 'minus'; } else { echo 'plus'; } ?>_16.png" onclick="toggle_plus_minus('<?php echo $page['page_id']; ?>');" name="plus_minus_<?php echo $page['page_id']; ?>" alt="+" />
+					</a>
+					<?php
+					}
+					?>
+				</td>
+				<?php if($admin->get_permission('pages_modify') == true && $can_modify == true) { ?>
+				<td class="list_menu_title">
+					<a href="<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo  $page['page_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+						<?php if($page['visibility'] == 'public') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/visible_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PUBLIC']; ?>" class="page_list_rights" />
+						<?php } elseif($page['visibility'] == 'private') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/private_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PRIVATE']; ?>" class="page_list_rights" />
+						<?php } elseif($page['visibility'] == 'registered') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/keys_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['REGISTERED']; ?>" class="page_list_rights" />
+						<?php } elseif($page['visibility'] == 'hidden') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/hidden_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['HIDDEN']; ?>" class="page_list_rights" />
+						<?php } elseif($page['visibility'] == 'none') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/none_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['NONE']; ?>" class="page_list_rights" />
+						<?php } elseif($page['visibility'] == 'deleted') { ?>
+							<img src="<?php echo THEME_URL; ?>/images/deleted_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['DELETED']; ?>" class="page_list_rights" />
+						<?php }
+						echo '<span class="modify_link">'.($page['menu_title']).'</span>'; ?>
+					</a>
+				</td>
+				<?php } else { ?>
+				<td class="list_menu_title">
+					<?php if($page['visibility'] == 'public') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/visible_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PUBLIC']; ?>" class="page_list_rights" />
+					<?php } elseif($page['visibility'] == 'private') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/private_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PRIVATE']; ?>" class="page_list_rights" />
+					<?php } elseif($page['visibility'] == 'registered') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/keys_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['REGISTERED']; ?>" class="page_list_rights" />
+					<?php } elseif($page['visibility'] == 'hidden') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/hidden_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['HIDDEN']; ?>" class="page_list_rights" />
+					<?php } elseif($page['visibility'] == 'none') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/none_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['NONE']; ?>" class="page_list_rights" />
+					<?php } elseif($page['visibility'] == 'deleted') { ?>
+						<img src="<?php echo THEME_URL; ?>/images/deleted_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['DELETED']; ?>" class="page_list_rights" />
+					<?php }
+					echo ($page['menu_title']); ?>
+				</td>
+				<?php } ?>
+				<td class="list_page_title">
+					<?php echo ($page['page_title']); ?>
+				</td>
+				<td class="list_page_id">
+					<?php echo $page['page_id']; ?>
+				</td>
+
+				<td class="list_actions">
+					<?php if($page['visibility'] != 'deleted' && $page['visibility'] != 'none') { ?>
+					<a href="<?php echo $admin->page_link($page['link']); ?>" target="_blank" title="<?php echo $TEXT['VIEW']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/view_16.png" alt="<?php echo $TEXT['VIEW']; ?>" />
+					</a>
+					<?php } ?>
+				</td>
+				<td class="list_actions">
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true && $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/settings.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['SETTINGS']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/modify_16.png" alt="<?php echo $TEXT['SETTINGS']; ?>" />
+						</a>
+						<?php } ?>
+					<?php } else { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/restore.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['RESTORE']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/restore_16.png" alt="<?php echo $TEXT['RESTORE']; ?>" />
+						</a>
+					<?php } ?>
+				</td>
+				<!-- MANAGE SECTIONS AND DATES BUTTONS -->
+				<td class="list_actions">
+				<?php
+				// Work-out if we should show the "manage dates" link
+				if(MANAGE_SECTIONS == 'enabled' && $admin->get_permission('pages_modify')==true && $can_modify==true)
+                {
+                    $sql = 'SELECT `publ_start`, `publ_end` FROM `'.TABLE_PREFIX.'sections` ';
+                    $sql .= 'WHERE `page_id` = '.$page['page_id'].' AND `module` != \'menu_link\' ';
+					// $query_sections = $database->query("SELECT publ_start, publ_end FROM ".TABLE_PREFIX."sections WHERE page_id = '{$page['page_id']}' AND module != 'menu_link'");
+					if( ($query_sections = $database->query($sql)) )
+                    {
+						$mdate_display=false;
+						while($mdate_res = $query_sections->fetchRow())
+                        {
+							if($mdate_res['publ_start']!='0' || $mdate_res['publ_end']!='0')
+                            {
+								$mdate_display=true;
+								break;
+							}
+						}
+						if($mdate_display==1)
+                        {
+							$file=$admin->page_is_active($page)?"clock_16.png":"clock_red_16.png";
+							?>
+							<a href="<?php echo ADMIN_URL; ?>/pages/sections.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $HEADING['MANAGE_SECTIONS']; ?>">
+							<img src="<?php echo THEME_URL."/images/$file"; ?>" alt="<?php echo $HEADING['MANAGE_SECTIONS']; ?>" />
+							</a>
+						<?php } else { ?>
+							<a href="<?php echo ADMIN_URL; ?>/pages/sections.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $HEADING['MANAGE_SECTIONS']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/noclock_16.png" alt="<?php echo $HEADING['MANAGE_SECTIONS']; ?>" /></a>
+						<?php } ?>
+					<?php } ?>
+				<?php } ?>
+				</td>
+				<td class="list_actions">
+				<?php if($page['position'] != 1) { ?>
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true && $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/move_up.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/up_16.png" alt="<?php echo $TEXT['MOVE_UP']; ?>" />
+						</a>
+						<?php } ?>
+					<?php } ?>
+				<?php } ?>
+				</td>
+				<td class="list_actions">
+				<?php if($page['position'] != $num_pages) { ?>
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true && $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/move_down.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/down_16.png" alt="<?php echo $TEXT['MOVE_DOWN']; ?>" />
+						</a>
+						<?php } ?>
+					<?php } ?>
+				<?php } ?>
+				</td>
+				<td class="list_actions">
+					<?php if($admin->get_permission('pages_delete') == true && $can_modify == true) { // add IdKey ?>
+					<a href="javascript:confirm_link('<?php echo $MESSAGE['PAGES_DELETE_CONFIRM']; ?>?','<?php echo ADMIN_URL; ?>/pages/delete.php?page_id=<?php echo $admin->getIDKEY($page['page_id']); ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/delete_16.png" alt="<?php echo $TEXT['DELETE']; ?>" />
+					</a>
+					<?php } ?>
+				</td>
+				<?php
+				// eggsurplus: Add action to add a page as a child
+				?>
+				<td class="list_actions">
+					<?php if(($admin->get_permission('pages_add')) == (true && $can_modify == true) && ($page['visibility'] != 'deleted')) { ?>
+					<a href="javascript:add_child_page('<?php echo $page['page_id']; ?>');" title="<?php echo $HEADING['ADD_CHILD_PAGE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/siteadd.png" name="addpage_<?php echo $page['page_id']; ?>" alt="Add Child Page" />
+					</a>
+					<?php } ?>
+				</td>
+				<?php
+				// end [IC] jeggers 2009/10/14: Add action to add a page as a child
+				?>
+
+			</tr>
+			</table>
+			<?php
+			if ( $page['parent'] == 0)
+            {
+				$page_tmp_id = $page['page_id'];
+			}
+			// Get subs
+			$editable_pages=make_list($page['page_id'], $editable_pages);
+            print '</li>'."\n";
+		}
+	}
+	$output = ($par['num_subs'] )? '</ul>'."\n" : '';
+    $par['num_subs'] = (empty($output) ) ?  1 : $par['num_subs'];
+    print $output;
+	return $editable_pages;
+}
+
+// Generate pages list
+if($admin->get_permission('pages_view') == true) {
+	?>
+	<div class="jsadmin hide"></div>
+	<table summary="<?php echo $HEADING['MODIFY_DELETE_PAGE']; ?>" cellpadding="0" cellspacing="0" width="100%">
+	<tr>
+		<td>
+			<h2><?php echo $HEADING['MODIFY_DELETE_PAGE']; ?></h2>
+		</td>
+		<td align="right"></td>
+	</tr>
+	</table>
+	<div class="pages_list">
+	<table summary="<?php echo $HEADING['MODIFY_DELETE_PAGE']; ?>" cellpadding="0" cellspacing="0">
+	<tr class="pages_list_header">
+		<td class="header_list_menu_title">
+			<?php echo $TEXT['VISIBILITY'] .' / ' .$TEXT['MENU_TITLE']; ?>:
+		</td>
+		<td class="header_list_page_title">
+			<?php echo $TEXT['PAGE_TITLE']; ?>:
+		</td>
+		<td class="header_list_page_id">
+			ID:
+		</td>
+		<td class="header_list_actions">
+			<?php echo $TEXT['ACTIONS']; ?>:
+		</td>
+	</tr>
+	</table>
+	<?php
+	// Work-out if we should check for existing page_code
+	$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
+
+    $par = array();
+	$par['num_subs'] = 1;
+	$editable_pages = make_list(0, 0);
+} else {
+	$editable_pages = 0;
+}
+ ?></div><?php
+
+if(intval($editable_pages) == 0 ) {
+	?>
+	<div class="empty_list">
+		<?php echo $TEXT['NONE_FOUND']; ?>
+	</div>
+	<?php
+}
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('pages.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'pages.htt');
+$template->set_block('page', 'main_block', 'main');
+// Insert values into the add page form
+$template->set_var('FTAN', $admin->getFTAN());
+
+// Group list 1
+
+	$query = "SELECT * FROM ".TABLE_PREFIX."groups";
+	$get_groups = $database->query($query);
+	$template->set_block('main_block', 'group_list_block', 'group_list');
+	// Insert admin group and current group first
+	$admin_group_name = $get_groups->fetchRow();
+	$template->set_var(array(
+									'ID' => 1,
+									'TOGGLE' => '1',
+									'DISABLED' => ' disabled="disabled"',
+									'LINK_COLOR' => '000000',
+									'CURSOR' => 'default',
+									'NAME' => $admin_group_name['name'],
+									'CHECKED' => ' checked="checked"'
+									)
+							);
+	$template->parse('group_list', 'group_list_block', true);
+
+	while($group = $get_groups->fetchRow()) {
+		// check if the user is a member of this group
+		$flag_disabled = '';
+		$flag_checked =  '';
+		$flag_cursor =   'pointer';
+		$flag_color =    '';
+		if (in_array($group["group_id"], $admin->get_groups_id())) {
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ' checked="checked"';
+			$flag_cursor =   'default';
+			$flag_color =    '000000';
+		}
+
+		// Check if the group is allowed to edit pages
+		$system_permissions = explode(',', $group['system_permissions']);
+		if(is_numeric(array_search('pages_modify', $system_permissions))) {
+			$template->set_var(array(
+											'ID' => $group['group_id'],
+											'TOGGLE' => $group['group_id'],
+											'CHECKED' => $flag_checked,
+											'DISABLED' => $flag_disabled,
+											'LINK_COLOR' => $flag_color,
+											'CURSOR' => $flag_checked,
+											'NAME' => $group['name'],
+											)
+									);
+			$template->parse('group_list', 'group_list_block', true);
+		}
+	}
+// Group list 2
+
+	$query = "SELECT * FROM ".TABLE_PREFIX."groups";
+
+	$get_groups = $database->query($query);
+	$template->set_block('main_block', 'group_list_block2', 'group_list2');
+	// Insert admin group and current group first
+	$admin_group_name = $get_groups->fetchRow();
+	$template->set_var(array(
+									'ID' => 1,
+									'TOGGLE' => '1',
+									'DISABLED' => ' disabled="disabled"',
+									'LINK_COLOR' => '000000',
+									'CURSOR' => 'default',
+									'NAME' => $admin_group_name['name'],
+									'CHECKED' => ' checked="checked"'
+									)
+							);
+	$template->parse('group_list2', 'group_list_block2', true);
+
+	while($group = $get_groups->fetchRow()) {
+		// check if the user is a member of this group
+		$flag_disabled = '';
+		$flag_checked =  '';
+		$flag_cursor =   'pointer';
+		$flag_color =    '';
+		if (in_array($group["group_id"], $admin->get_groups_id())) {
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ' checked="checked"';
+			$flag_cursor =   'default';
+			$flag_color =    '000000';
+		}
+
+		$template->set_var(array(
+										'ID' => $group['group_id'],
+										'TOGGLE' => $group['group_id'],
+										'CHECKED' => $flag_checked,
+										'DISABLED' => $flag_disabled,
+										'LINK_COLOR' => $flag_color,
+										'CURSOR' => $flag_cursor,
+										'NAME' => $group['name'],
+										)
+								);
+		$template->parse('group_list2', 'group_list_block2', true);
+	}
+
+
+// Parent page list
+// $database = new database();
+function parent_list($parent)
+{
+	global $admin, $database, $template, $field_set;
+	$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' AND visibility!='deleted' ORDER BY position ASC";
+	$get_pages = $database->query($query);
+	while($page = $get_pages->fetchRow()) {
+		if($admin->page_is_visible($page)==false)
+			continue;
+		// if parent = 0 set flag_icon
+		$template->set_var('FLAG_ROOT_ICON',' none ');
+		if( $page['parent'] == 0 && $field_set) {
+			$template->set_var('FLAG_ROOT_ICON','url('.THEME_URL.'/images/flags/'.strtolower($page['language']).'.png)');
+		}
+		// Stop users from adding pages with a level of more than the set page level limit
+		if($page['level']+1 < PAGE_LEVEL_LIMIT) {
+			// Get user perms
+			$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+			$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+			
+			$in_group = FALSE;
+			foreach($admin->get_groups_id() as $cur_gid) {
+				if (in_array($cur_gid, $admin_groups)) {
+					$in_group = TRUE;
+				}
+			}
+			if(($in_group) || is_numeric(array_search($admin->get_user_id(), $admin_users))) {
+				$can_modify = true;
+			} else {
+				$can_modify = false;
+			}
+			// Title -'s prefix
+			$title_prefix = '';
+			for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
+				$template->set_var(array(
+										'ID' => $page['page_id'],
+										'TITLE' => ($title_prefix.$page['menu_title']),
+										'MENU-TITLE' => ($title_prefix.$page['menu_title']),
+										'PAGE-TITLE' => ($title_prefix.$page['page_title'])
+										));
+				if($can_modify == true) {
+					$template->set_var('DISABLED', '');
+				} else {
+					$template->set_var('DISABLED', ' disabled="disabled" class="disabled"');
+				}
+				$template->parse('page_list2', 'page_list_block2', true);
+		}
+		parent_list($page['page_id']);
+	}
+}
+$template->set_block('main_block', 'page_list_block2', 'page_list2');
+if($admin->get_permission('pages_add_l0') == true) {
+	$template->set_var(array(
+						'ID' => '0',
+						'TITLE' => $TEXT['NONE'],
+						'SELECTED' => ' selected="selected"',
+						'DISABLED' => ''
+					)
+				);
+	$template->parse('page_list2', 'page_list_block2', true);
+}
+parent_list(0);
+
+// Explode module permissions
+$module_permissions = $_SESSION['MODULE_PERMISSIONS'];
+// Modules list
+$template->set_block('main_block', 'module_list_block', 'module_list');
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'module' AND function = 'page' order by name");
+if($result->numRows() > 0) {
+	while ($module = $result->fetchRow()) {
+		// Check if user is allowed to use this module
+		if(!is_numeric(array_search($module['directory'], $module_permissions))) {
+			$template->set_var('VALUE', $module['directory']);
+			$template->set_var('NAME', $module['name']);
+			if($module['directory'] == 'wysiwyg') {
+				$template->set_var('SELECTED', ' selected="selected"');
+			} else {
+				$template->set_var('SELECTED', '');
+			}
+			$template->parse('module_list', 'module_list_block', true);
+		}
+	}
+}
+
+// Insert urls
+$template->set_var(array(
+								'THEME_URL' => THEME_URL,
+								'WB_URL' => WB_URL,
+								'ADMIN_URL' => ADMIN_URL,
+								)
+						);
+
+// Insert language headings
+$template->set_var(array(
+								'HEADING_ADD_PAGE' => $HEADING['ADD_PAGE'],
+								'HEADING_MODIFY_INTRO_PAGE' => $HEADING['MODIFY_INTRO_PAGE']
+								)
+						);
+// Insert language text and messages
+$template->set_var(array(
+								'TEXT_TITLE' => $TEXT['TITLE'],
+								'TEXT_TYPE' => $TEXT['TYPE'],
+								'TEXT_PARENT' => $TEXT['PARENT'],
+								'TEXT_VISIBILITY' => $TEXT['VISIBILITY'],
+								'TEXT_PUBLIC' => $TEXT['PUBLIC'],
+								'TEXT_PRIVATE' => $TEXT['PRIVATE'],
+								'TEXT_REGISTERED' => $TEXT['REGISTERED'],
+								'TEXT_HIDDEN' => $TEXT['HIDDEN'],
+								'TEXT_NONE' => $TEXT['NONE'],
+								'TEXT_NONE_FOUND' => $TEXT['NONE_FOUND'],
+								'TEXT_ADD' => $TEXT['ADD'],
+								'TEXT_RESET' => $TEXT['RESET'],
+								'TEXT_ADMINISTRATORS' => $TEXT['ADMINISTRATORS'],
+								'TEXT_PRIVATE_VIEWERS' => $TEXT['PRIVATE_VIEWERS'],
+								'TEXT_REGISTERED_VIEWERS' => $TEXT['REGISTERED_VIEWERS'],
+								'INTRO_LINK' => $MESSAGE['PAGES']['INTRO_LINK'],
+								)
+						);
+
+// Insert permissions values
+if($admin->get_permission('pages_add') != true) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+} elseif($admin->get_permission('pages_add_l0') != true && $editable_pages == 0) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+}
+if($admin->get_permission('pages_intro') != true || INTRO_PAGE != 'enabled') {
+	$template->set_var('DISPLAY_INTRO', 'hide');
+}
+
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// include the required file for Javascript admin
+if(file_exists(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php'))
+{
+	include(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php');
+}
+
+// Print admin
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/sections.php
===================================================================
--- tags/2.8.3/wb/admin/pages/sections.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/sections.php	(revision 1610)
@@ -0,0 +1,523 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include config file
+require('../../config.php');
+
+// Make sure people are allowed to access this page
+if(MANAGE_SECTIONS != 'enabled')
+{
+	header('Location: '.ADMIN_URL.'/pages/index.php');
+	exit(0);
+}
+/* */
+$debug = false; // to show position and section_id
+If(!defined('DEBUG')) { define('DEBUG',$debug);}
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+// Create new admin object
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+$action = 'show';
+// Get page id
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$page_id = intval((isset(${$requestMethod}['page_id'])) ? ${$requestMethod}['page_id'] : 0);
+$action = ($page_id ? 'show' : $action);
+// Get section id if there is one
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$section_id = ((isset(${$requestMethod}['section_id'])) ? ${$requestMethod}['section_id']  : 0);
+$action = ($section_id ? 'delete' : $action);
+// Get module if there is one
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$module = ((isset(${$requestMethod}['module'])) ? ${$requestMethod}['module']  : 0);
+$action = ($module != '' ? 'add' : $action);
+$admin_header = true;
+$backlink = ADMIN_URL.'/pages/sections.php?page_id='.(int)$page_id;
+
+switch ($action):
+	case 'delete' :
+
+		if( ( !($section_id = intval($admin->checkIDKEY('section_id', 0, $_SERVER['REQUEST_METHOD'])) )) )
+		{
+			if($admin_header) { $admin->print_header(); }
+			$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$backlink);
+		}
+
+		$action = 'show';
+	    $sql  = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` ';
+	    $sql .= 'WHERE `section_id` ='.$section_id;
+        if( ( ($modulname = $database->get_one($sql)) == $module) && ($section_id > 0 ) ) {
+			// Include the modules delete file if it exists
+			if(file_exists(WB_PATH.'/modules/'.$modulname.'/delete.php'))
+		    {
+				require(WB_PATH.'/modules/'.$modulname.'/delete.php');
+			}
+		    $sql  = 'DELETE FROM `'.TABLE_PREFIX.'sections` ';
+		    $sql .= 'WHERE `section_id` ='.(int)$section_id.' LIMIT 1';
+			if( !$database->query($sql) ) {
+				if($admin_header) { $admin->print_header(); }
+				$admin->print_error($database->get_error(),$backlink);
+			}  else {
+				require_once(WB_PATH.'/framework/class.order.php');
+				$order = new order(TABLE_PREFIX.'sections', 'position', 'section_id', 'page_id');
+				$order->clean($page_id);
+				$format = $TEXT['SECTION'].' %d  %s %s '.strtolower( $TEXT['DELETED']);
+				$message = sprintf ($format,$section_id,strtoupper($modulname),strtolower($TEXT['SUCCESS']));
+				if($admin_header) { $admin->print_header(); }
+				$admin_header = false;
+				unset($_POST);
+				$admin->print_success($message, $backlink );
+			}
+        } else {
+			if($admin_header) { $admin->print_header(); }
+			$admin->print_error($module.' '.strtolower($TEXT['NOT_FOUND']),$backlink);
+        }
+
+		break;
+	case 'add' :
+
+		if (!$admin->checkFTAN())
+		{
+			$admin->print_header();
+			$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$backlink);
+		}
+		$action = 'show';
+		$module = preg_replace('/\W/', '', $module );  // fix secunia 2010-91-4
+		require_once(WB_PATH.'/framework/class.order.php');
+		// Get new order
+		$order = new order(TABLE_PREFIX.'sections', 'position', 'section_id', 'page_id');
+		$position = $order->get_new($page_id);
+		// Insert module into DB
+	    $sql  = 'INSERT INTO `'.TABLE_PREFIX.'sections` SET ';
+	    $sql .= '`page_id` = '.(int)$page_id.', ';
+	    $sql .= '`module` = \''.$module.'\', ';
+	    $sql .= '`position` = '.(int)$position.', ';
+	    $sql .= '`block` = 1';
+        if($database->query($sql)) {
+			// Get the section id
+			$section_id = $database->get_one("SELECT LAST_INSERT_ID()");
+			// Include the selected modules add file if it exists
+			if(file_exists(WB_PATH.'/modules/'.$module.'/add.php'))
+		    {
+				require(WB_PATH.'/modules/'.$module.'/add.php');
+			}
+        } elseif ($database->is_error())  {
+			if($admin_header) { $admin->print_header(); }
+			$admin->print_error($database->get_error());
+		}
+		break;
+	default:
+		break;
+endswitch;
+
+switch ($action):
+	default:
+
+		if($admin_header) { $admin->print_header(); }
+		// Get perms
+		$sql  = 'SELECT `admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` ';
+		$sql .= 'WHERE `page_id` = '.$page_id;
+		$results = $database->query($sql);
+
+		$results_array = $results->fetchRow();
+		$old_admin_groups = explode(',', $results_array['admin_groups']);
+		$old_admin_users = explode(',', $results_array['admin_users']);
+		$in_old_group = FALSE;
+		foreach($admin->get_groups_id() as $cur_gid)
+		{
+			if (in_array($cur_gid, $old_admin_groups))
+		    {
+				$in_old_group = TRUE;
+			}
+		}
+		if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
+		{
+			$admin->print_header();
+			$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+		}
+
+		// Get page details
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'pages` ';
+		$sql .= 'WHERE `page_id` = '.$page_id;
+		$results = $database->query($sql);
+
+		if($database->is_error())
+		{
+			// $admin->print_header();
+			$admin->print_error($database->get_error());
+		}
+		if($results->numRows() == 0)
+		{
+			// $admin->print_header();
+			$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+		}
+		$results_array = $results->fetchRow();
+
+		// Set module permissions
+		$module_permissions = $_SESSION['MODULE_PERMISSIONS'];
+
+		// Unset block var
+		unset($block);
+		// Include template info file (if it exists)
+		if($results_array['template'] != '')
+		{
+			$template_location = WB_PATH.'/templates/'.$results_array['template'].'/info.php';
+		} else {
+			$template_location = WB_PATH.'/templates/'.DEFAULT_TEMPLATE.'/info.php';
+		}
+		if(file_exists($template_location))
+		{
+			require($template_location);
+		}
+		// Check if $menu is set
+		if(!isset($block[1]) || $block[1] == '')
+		{
+			// Make our own menu list
+			$block[1] = $TEXT['MAIN'];
+		}
+
+		/*-- load css files with jquery --*/
+		// include jscalendar-setup
+		$jscal_use_time = true; // whether to use a clock, too
+		require_once(WB_PATH."/include/jscalendar/wb-setup.php");
+
+		// Setup template object, parse vars to it, then parse it
+		$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('pages_sections.htt'));
+		// Create new template object
+		$tpl = new Template($ThemePath);
+		// $template->debug = true;
+		$tpl->set_file('page', 'pages_sections.htt');
+		$tpl->set_block('page', 'main_block', 'main');
+		$tpl->set_block('main_block', 'module_block', 'module_list');
+		$tpl->set_block('main_block', 'section_block', 'section_list');
+		$tpl->set_block('section_block', 'block_block', 'block_list');
+		$tpl->set_block('main_block', 'calendar_block', 'calendar_list');
+		$tpl->set_var('FTAN', $admin->getFTAN());
+
+		// set first defaults and messages
+		$tpl->set_var(array(
+						'PAGE_ID' => $results_array['page_id'],
+						// 'PAGE_IDKEY' => $admin->getIDKEY($results_array['page_id']),
+						'PAGE_IDKEY' => $results_array['page_id'],
+						'TEXT_PAGE' => $TEXT['PAGE'],
+						'PAGE_TITLE' => ($results_array['page_title']),
+						'MENU_TITLE' => ($results_array['menu_title']),
+						'TEXT_CURRENT_PAGE' => $TEXT['CURRENT_PAGE'],
+						'HEADING_MANAGE_SECTIONS' => $HEADING['MANAGE_SECTIONS'],
+						'HEADING_MODIFY_PAGE' => $HEADING['MODIFY_PAGE'],
+						'TEXT_CHANGE_SETTINGS' => $TEXT['CHANGE_SETTINGS'],
+						'TEXT_ADD_SECTION' => $TEXT['ADD_SECTION'],
+						'TEXT_ID' => 'ID',
+						'TEXT_TYPE' => $TEXT['TYPE'],
+						'TEXT_BLOCK' => $TEXT['BLOCK'],
+						'TEXT_PUBL_START_DATE' => $TEXT{'PUBL_START_DATE'},
+						'TEXT_PUBL_END_DATE' => $TEXT['PUBL_END_DATE'],
+						'TEXT_ACTIONS' => $TEXT['ACTIONS'],
+						'ADMIN_URL' => ADMIN_URL,
+						'WB_URL' => WB_URL,
+						'THEME_URL' => THEME_URL
+						)
+					);
+
+		// Insert variables
+		$tpl->set_var(array(
+						'PAGE_ID' => $results_array['page_id'],
+						// 'PAGE_IDKEY' => $admin->getIDKEY($results_array['page_id']),
+						'PAGE_IDKEY' => $results_array['page_id'],
+						'VAR_PAGE_TITLE' => $results_array['page_title'],
+						'SETTINGS_LINK' => ADMIN_URL.'/pages/settings.php?page_id='.$results_array['page_id'],
+						'MODIFY_LINK' => ADMIN_URL.'/pages/modify.php?page_id='.$results_array['page_id']
+						)
+					);
+
+		$sql  = 'SELECT `section_id`,`module`,`position`,`block`,`publ_start`,`publ_end` ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE `page_id` = '.$page_id.' ';
+		$sql .= 'ORDER BY `position` ASC';
+		$query_sections = $database->query($sql);
+
+		if($query_sections->numRows() > 0)
+		{
+			$num_sections = $query_sections->numRows();
+			while($section = $query_sections->fetchRow())
+		    {
+				if(!is_numeric(array_search($section['module'], $module_permissions)))
+		        {
+					// Get the modules real name
+		            $sql = 'SELECT `name` FROM `'.TABLE_PREFIX.'addons` ';
+		            $sql .= 'WHERE `directory` = "'.$section['module'].'"';
+		            if(!$database->get_one($sql) || !file_exists(WB_PATH.'/modules/'.$section['module']))
+					{
+						$edit_page = '<span class="module_disabled">'.$section['module'].'</span>';
+					}else
+					{
+						$edit_page = '';
+					}
+					$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? SEC_ANCHOR : '');
+					$edit_page_0 = '<a id="sid'.$section['section_id'].'" href="'.ADMIN_URL.'/pages/modify.php?page_id='.$results_array['page_id'];
+					$edit_page_1  = ($sec_anchor!='') ? '#'.$sec_anchor.$section['section_id'].'">' : '">';
+					$edit_page_1 .= $section['module'].'</a>';
+					if(SECTION_BLOCKS)
+		            {
+						if($edit_page == '')
+						{
+							if(defined('EDIT_ONE_SECTION') && EDIT_ONE_SECTION)
+							{
+								$edit_page = $edit_page_0.'&amp;wysiwyg='.$section['section_id'].$edit_page_1;
+							} else {
+								$edit_page = $edit_page_0.$edit_page_1;
+							}
+						}
+						$input_attribute = 'input_normal';
+						$tpl->set_var(array(
+								'STYLE_DISPLAY_SECTION_BLOCK' => ' style="visibility:visible;"',
+								'NAME_SIZE' => 300,
+								'INPUT_ATTRIBUTE' => $input_attribute,
+								'VAR_SECTION_ID' => $section['section_id'],
+								'VAR_SECTION_IDKEY' => $admin->getIDKEY($section['section_id']),
+								// 'VAR_SECTION_IDKEY' => $section['section_id'],
+								'VAR_POSITION' => $section['position'],
+								'LINK_MODIFY_URL_VAR_MODUL_NAME' => $edit_page,
+								'SELECT' => '',
+								'SET_NONE_DISPLAY_OPTION' => ''
+								)
+							);
+						// Add block options to the section_list
+						$tpl->clear_var('block_list');
+						foreach($block AS $number => $name)
+		                {
+							$tpl->set_var('NAME', htmlentities(strip_tags($name)));
+							$tpl->set_var('VALUE', $number);
+							$tpl->set_var('SIZE', 1);
+							if($section['block'] == $number)
+		                    {
+								$tpl->set_var('SELECTED', ' selected="selected"');
+							} else {
+								$tpl->set_var('SELECTED', '');
+							}
+							$tpl->parse('block_list', 'block_block', true);
+						}
+					} else {
+						if($edit_page == '')
+						{
+							$edit_page = $edit_page_0.'#wb_'.$edit_page_1;
+						}
+						$input_attribute = 'input_normal';
+						$tpl->set_var(array(
+								'STYLE_DISPLAY_SECTION_BLOCK' => ' style="visibility:hidden;"',
+								'NAME_SIZE' => 300,
+								'INPUT_ATTRIBUTE' => $input_attribute,
+								'VAR_SECTION_ID' => $section['section_id'],
+								'VAR_SECTION_IDKEY' => $admin->getIDKEY($section['section_id']),
+								// 'VAR_SECTION_IDKEY' => $section['section_id'],
+								'VAR_POSITION' => $section['position'],
+								'LINK_MODIFY_URL_VAR_MODUL_NAME' => $edit_page,
+								'NAME' => htmlentities(strip_tags($block[1])),
+								'VALUE' => 1,
+								'SET_NONE_DISPLAY_OPTION' => ''
+								)
+							);
+					}
+					// Insert icon and images
+					$tpl->set_var(array(
+								'CLOCK_16_PNG' => 'clock_16.png',
+								'CLOCK_DEL_16_PNG' => 'clock_del_16.png',
+								'DELETE_16_PNG' => 'delete_16.png'
+								)
+							);
+					// set calendar start values
+					if($section['publ_start']==0)
+		            {
+						$tpl->set_var('VALUE_PUBL_START', '');
+					} else {
+						$tpl->set_var('VALUE_PUBL_START', date($jscal_format, $section['publ_start']));
+					}
+					// set calendar start values
+					if($section['publ_end']==0)
+		            {
+						$tpl->set_var('VALUE_PUBL_END', '');
+					} else {
+						$tpl->set_var('VALUE_PUBL_END', date($jscal_format, $section['publ_end']));
+					}
+					// Insert icons up and down
+					if($section['position'] != 1 )
+		            {
+						$tpl->set_var(
+									'VAR_MOVE_UP_URL',
+									'<a href="'.ADMIN_URL.'/pages/move_up.php?page_id='.$page_id.'&amp;section_id='.$section['section_id'].'">
+									<img src="'.THEME_URL.'/images/up_16.png" alt="{TEXT_MOVE_UP}" />
+									</a>' );
+					} else {
+						$tpl->set_var(array(
+									'VAR_MOVE_UP_URL' => ''
+									)
+								);
+					}
+					if($section['position'] != $num_sections ) {
+						$tpl->set_var(
+									'VAR_MOVE_DOWN_URL',
+									'<a href="'.ADMIN_URL.'/pages/move_down.php?page_id='.$page_id.'&amp;section_id='.$section['section_id'].'">
+									<img src="'.THEME_URL.'/images/down_16.png" alt="{TEXT_MOVE_DOWN}" />
+									</a>' );
+					} else {
+						$tpl->set_var(array(
+									'VAR_MOVE_DOWN_URL' => ''
+									)
+								);
+					}
+				} else {
+				  continue;
+				}
+
+					$tpl->set_var(array(
+									'DISPLAY_DEBUG' => ' style="visibility="visible;"',
+									'TEXT_SID' => 'SID',
+									'DEBUG_COLSPAN_SIZE' => 9
+									)
+								);
+				if($debug)
+		        {
+					$tpl->set_var(array(
+									'DISPLAY_DEBUG' => ' style="visibility="visible;"',
+									'TEXT_PID' => 'PID',
+									'TEXT_SID' => 'SID',
+									'POSITION' => $section['position']
+									)
+								);
+				} else {
+					$tpl->set_var(array(
+									'DISPLAY_DEBUG' => ' style="display:none;"',
+									'TEXT_PID' => '',
+									'POSITION' => ''
+									)
+								);
+				}
+				$tpl->parse('section_list', 'section_block', true);
+			}
+		}
+
+		// now add the calendars -- remember to to set the range to [1970, 2037] if the date is used as timestamp!
+		// the loop is simply a copy from above.
+		$sql  = 'SELECT `section_id`,`module` FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE page_id = '.$page_id.' ';
+		$sql .= 'ORDER BY `position` ASC';
+		$query_sections = $database->query($sql);
+
+		if($query_sections->numRows() > 0)
+		{
+			$num_sections = $query_sections->numRows();
+			while($section = $query_sections->fetchRow())
+		    {
+				// Get the modules real name
+		        $sql  = 'SELECT `name` FROM `'.TABLE_PREFIX.'addons` ';
+		        $sql .= 'WHERE `directory` = "'.$section['module'].'"';
+		        $module_name = $database->get_one($sql);
+
+				if(!is_numeric(array_search($section['module'], $module_permissions)))
+		        {
+					$tpl->set_var(array(
+								'jscal_ifformat' => $jscal_ifformat,
+								'jscal_firstday' => $jscal_firstday,
+								'jscal_today' => $jscal_today,
+								'start_date' => 'start_date'.$section['section_id'],
+								'end_date' => 'end_date'.$section['section_id'],
+								'trigger_start' => 'trigger_start'.$section['section_id'],
+								'trigger_end' => 'trigger_stop'.$section['section_id']
+								)
+							);
+					if(isset($jscal_use_time) && $jscal_use_time==TRUE) {
+						$tpl->set_var(array(
+								'showsTime' => "true",
+								'timeFormat' => "24"
+								)
+							);
+					}  else {
+						$tpl->set_var(array(
+								'showsTime' => "false",
+								'timeFormat' => "24"
+								)
+							);
+					}
+				}
+				$tpl->parse('calendar_list', 'calendar_block', true);
+			}
+		}
+
+		// Work-out if we should show the "Add Section" form
+		$sql  = 'SELECT `section_id` FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE `page_id` = '.$page_id.' AND `module` = "menu_link"';
+		$query_sections = $database->query($sql);
+		if($query_sections->numRows() == 0)
+		{
+			// Modules list
+		    $sql  = 'SELECT `name`,`directory`,`type` FROM `'.TABLE_PREFIX.'addons` ';
+		    $sql .= 'WHERE `type` = "module" AND `function` = "page" AND `directory` != "menu_link" ';
+		    $sql .= 'ORDER BY `name`';
+		    $result = $database->query($sql);
+		// if(DEBUG && $database->is_error()) { $admin->print_error($database->get_error()); }
+
+			if($result->numRows() > 0)
+		    {
+				while ($module = $result->fetchRow())
+		        {
+					// Check if user is allowed to use this module   echo  $module['directory'],'<br />';
+					if(!is_numeric(array_search($module['directory'], $module_permissions)))
+		            {
+						$tpl->set_var('VALUE', $module['directory']);
+						$tpl->set_var('NAME', $module['name']);
+						if($module['directory'] == 'wysiwyg')
+		                {
+							$tpl->set_var('SELECTED', ' selected="selected"');
+						} else {
+							$tpl->set_var('SELECTED', '');
+						}
+						$tpl->parse('module_list', 'module_block', true);
+					} else {
+					  continue;
+					}
+				}
+			}
+		}
+		// Insert language text and messages
+		$tpl->set_var(array(
+							'TEXT_MANAGE_SECTIONS' => $HEADING['MANAGE_SECTIONS'],
+							'TEXT_ARE_YOU_SURE' => $TEXT['ARE_YOU_SURE'],
+							'TEXT_TYPE' => $TEXT['TYPE'],
+							'TEXT_ADD' => $TEXT['ADD'],
+							'TEXT_SAVE' =>  $TEXT['SAVE'],
+							'TEXTLINK_MODIFY_PAGE' => $HEADING['MODIFY_PAGE'],
+							'TEXT_CALENDAR' => $TEXT['CALENDAR'],
+							'TEXT_DELETE_DATE' => $TEXT['DELETE_DATE'],
+							'TEXT_ADD_SECTION' => $TEXT['ADD_SECTION'],
+							'TEXT_MOVE_UP' => $TEXT['MOVE_UP'],
+							'TEXT_MOVE_DOWN' => $TEXT['MOVE_DOWN']
+							)
+						);
+		$tpl->parse('main', 'main_block', false);
+		$tpl->pparse('output', 'page');
+		// include the required file for Javascript admin
+		if(file_exists(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php'))
+		{
+			include(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php');
+		}
+		break;
+endswitch;
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/sections.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/intro.php
===================================================================
--- tags/2.8.3/wb/admin/pages/intro.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/intro.php	(revision 1610)
@@ -0,0 +1,65 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Create new admin object
+require('../../config.php');
+
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_intro');
+$content = '';
+
+$filename = WB_PATH.PAGES_DIRECTORY.'/intro'.PAGE_EXTENSION;
+
+if(file_exists($filename) && filesize($filename) > 0) {
+	$content = file_get_contents( $filename ) ;
+} else {
+	$content = file_get_contents( ADMIN_PATH.'/pages/html.php' ) ;
+}
+
+require_once(WB_PATH . '/include/editarea/wb_wrapper_edit_area.php');
+$toolbar = 'search, fullscreen, |, undo, redo, |, select_font, syntax_selection,|,word_wrap, highlight, reset_highlight, |,charmap, |, help';
+echo registerEditArea ('content','php',true,'both',true,true,600,450,$toolbar);
+function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+	echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+}
+?>
+<form action="intro2.php" method="post">
+<?php print $admin->getFTAN(); ?>
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<table cellpadding="0" cellspacing="0" border="0" class="form_submit">
+	<tr>
+		<td colspan="2">
+		<?php
+			show_wysiwyg_editor('content','content',$content,'100%','500px');
+		?>
+		</td>
+	</tr>
+	<tr>
+		<td class="left">
+			<input type="submit" value="<?php echo $TEXT['SAVE'];?>" class="submit" />
+		</td>
+		<td class="right">
+			<input type="button" value="<?php echo $TEXT['CANCEL'];?>" onclick="javascript: window.location = 'index.php';" class="submit" />
+		</td>
+	</tr>
+</table>
+
+</form>
+<?php
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/intro.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/html.php
===================================================================
--- tags/2.8.3/wb/admin/pages/html.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/html.php	(revision 1610)
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<?php
+/**
+ *
+ * @author     WebsiteBaker Project
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1.0
+ * @platform   Website Baker 2.8.2+
+ *
+ *
+ * This html default only loaded if intro.php is not created
+ *
+ */
+
+// TEMPLATE CODE STARTS BELOW
+?><html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="language" content="en" />
+<!-- meta information for search engines -->
+	<title></title>
+	<meta http-equiv="imagetoolbar" content="no" />
+	<meta name="description" content="" />
+	<meta name="keywords" content="" />
+	<meta name="author" content="WebsiteBaker Org e.V." />
+	<meta name="robots" content="index,follow" />
+	<meta http-equiv="Content-Encoding" content="gzip" />
+	<meta http-equiv="Accept-Encoding" content="gzip, deflate" />
+<!-- site stylesheet (site colors and layout definitions) -->
+	<link rel="stylesheet" type="text/css" href="" media="screen,projection" />
+	<script src="" type="text/javascript"></script>
+</head>
+<body>
+	<div class="content">
+		<h3>Put your content here</h3>
+	</div>
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/html.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/intro2.php
===================================================================
--- tags/2.8.3/wb/admin/pages/intro2.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/intro2.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Create new admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_intro',false);
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+
+// Get posted content
+if(!isset($_POST['content'])) {
+	header("Location: intro".PAGE_EXTENSION."");
+	exit(0);
+} else {
+	$content = $admin->strip_slashes($_POST['content']);
+}
+
+// $content = $admin->strip_slashes($content);
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+$admin->print_header();
+// Write new content
+$filename = WB_PATH.PAGES_DIRECTORY.'/intro'.PAGE_EXTENSION;
+if(file_put_contents($filename, utf8_encode($content))===false){
+	$admin->print_error($MESSAGE['PAGES_NOT_SAVED']);
+} else {
+	change_mode($filename);
+	$admin->print_success($MESSAGE['PAGES']['INTRO_SAVED']);
+}
+if(!is_writable($filename)) {
+	$admin->print_error($MESSAGE['PAGES']['INTRO_NOT_WRITABLE']);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/intro2.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/settings2.php
===================================================================
--- tags/2.8.3/wb/admin/pages/settings2.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/settings2.php	(revision 1610)
@@ -0,0 +1,328 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* */
+
+// Create new admin object and print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Pages', 'pages_settings',false);
+
+// Get page id
+if(!isset($_POST['page_id']) || !is_numeric($_POST['page_id']))
+{
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = (int)$_POST['page_id'];
+}
+
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+*/
+$pagetree_url = ADMIN_URL.'/pages/index.php';
+$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$target_url);
+}
+// After check print the header
+$admin->print_header();
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get values
+$page_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('page_title')));
+$menu_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('menu_title')));
+$page_code = intval($admin->get_post('page_code')) ;
+$description = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('description'))));
+$keywords = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('keywords'))));
+$parent = intval($admin->get_post('parent')); // fix secunia 2010-91-3
+$visibility = $admin->get_post_escaped('visibility');
+if (!in_array($visibility, array('public', 'private', 'registered', 'hidden', 'none'))) {$visibility = 'public';} // fix secunia 2010-93-3
+$template = preg_replace('/[^a-z0-9_-]/i', "", $admin->get_post('template')); // fix secunia 2010-93-3
+$template = (($template == DEFAULT_TEMPLATE ) ? '' : $template);
+$target = preg_replace("/\W/", "", $admin->get_post('target'));
+$admin_groups = $admin->get_post_escaped('admin_groups');
+$viewing_groups = $admin->get_post_escaped('viewing_groups');
+$searching = intval($admin->get_post('searching'));
+$language = strtoupper($admin->get_post('language'));
+$language = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
+$menu = intval($admin->get_post('menu')); // fix secunia 2010-91-3
+
+// Validate data
+if($page_title == '' || substr($page_title,0,1)=='.')
+{
+	$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']);
+}
+if($menu_title == '' || substr($menu_title,0,1)=='.')
+{
+	$admin->print_error($MESSAGE['PAGES']['BLANK_MENU_TITLE']);
+}
+
+// Get existing perms
+// $database = new database();
+
+$sql = 'SELECT `parent`,`link`,`position`,`admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
+$results = $database->query($sql);
+
+$results_array = $results->fetchRow();
+$old_parent = $results_array['parent'];
+$old_link = $results_array['link'];
+$old_position = $results_array['position'];
+$old_admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
+$old_admin_users = explode(',', str_replace('_', '', $results_array['admin_users']));
+
+// Work-out if we should check for existing page_code
+$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
+
+$in_old_group = FALSE;
+foreach($admin->get_groups_id() as $cur_gid)
+{
+    if (in_array($cur_gid, $old_admin_groups))
+    {
+	$in_old_group = TRUE;
+    }
+}
+if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// Setup admin groups
+$admin_groups[] = 1;
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$admin_groups[] = implode(",",$admin->get_groups_id());
+//}
+$admin_groups = preg_replace("/[^\d,]/", "", implode(',', $admin_groups));
+// Setup viewing groups
+$viewing_groups[] = 1;
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$viewing_groups[] = implode(",",$admin->get_groups_id());
+//}
+$viewing_groups = preg_replace("/[^\d,]/", "", implode(',', $viewing_groups));
+
+// If needed, get new order
+if($parent != $old_parent)
+{
+	// Include ordering class
+	require(WB_PATH.'/framework/class.order.php');
+	$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
+	// Get new order
+	$position = $order->get_new($parent);
+	// Clean new order
+	$order->clean($parent);
+} else {
+	$position = $old_position;
+}
+
+// Work out level and root parent
+if ($parent!='0')
+{
+	$level = level_count($parent)+1;
+	$root_parent = root_parent($parent);
+}
+else {
+	$level = '0';
+	$root_parent = '0';
+}
+
+// Work-out what the link should be
+if($parent == '0')
+{
+	$link = '/'.page_filename($menu_title);
+	// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php
+	if($link == '/index' || $link == '/intro')
+    {
+		$link .= '_' .$page_id;
+		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).'_'.$page_id .PAGE_EXTENSION;
+	} else {
+		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).PAGE_EXTENSION;
+	}
+} else {
+	$parent_section = '';
+	$parent_titles = array_reverse(get_parent_titles($parent));
+	foreach($parent_titles AS $parent_title)
+    {
+		$parent_section .= page_filename($parent_title).'/';
+	}
+	if($parent_section == '/')
+    {
+      $parent_section = '';
+    }
+	$link = '/'.$parent_section.page_filename($menu_title);
+	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($menu_title).PAGE_EXTENSION;
+}
+
+// Check if a page with same page filename exists
+// $database = new database();
+$sql = 'SELECT `page_id`,`page_title` FROM `'.TABLE_PREFIX.'pages` WHERE `link` = "'.$link.'" AND `page_id` != '.$page_id;
+$get_same_page = $database->query($sql);
+
+if($get_same_page->numRows() > 0)
+{
+	$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']);
+}
+
+// Update page with new order
+$sql = 'UPDATE `'.TABLE_PREFIX.'pages` SET `parent`='.$parent.', `position`='.$position.' WHERE `page_id`='.$page_id.'';
+// $database = new database();
+$database->query($sql);
+
+// Get page trail
+$page_trail = get_page_trail($page_id);
+
+// Update page settings in the pages table
+$sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET ';
+$sql .= '`parent` = '.$parent.', ';
+$sql .= '`page_title` = "'.$page_title.'", ';
+$sql .= '`menu_title` = "'.$menu_title.'", ';
+$sql .= '`menu` = '.$menu.', ';
+$sql .= '`level` = '.$level.', ';
+$sql .= '`page_trail` = "'.$page_trail.'", ';
+$sql .= '`root_parent` = '.$root_parent.', ';
+$sql .= '`link` = "'.$link.'", ';
+$sql .= '`template` = "'.$template.'", ';
+$sql .= '`target` = "'.$target.'", ';
+$sql .= '`description` = "'.$description.'", ';
+$sql .= '`keywords` = "'.$keywords.'", ';
+$sql .= '`position` = '.$position.', ';
+$sql .= '`visibility` = "'.$visibility.'", ';
+$sql .= '`searching` = '.$searching.', ';
+$sql .= '`language` = "'.$language.'", ';
+$sql .= '`admin_groups` = "'.$admin_groups.'", ';
+$sql .= '`viewing_groups` = "'.$viewing_groups.'"';
+$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php')) ? ', `page_code` = '.(int)$page_code.' ' : ' ';
+$sql .= 'WHERE `page_id` = '.$page_id;
+$database->query($sql);
+
+$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), $target_url );
+}
+// Clean old order if needed
+if($parent != $old_parent)
+{
+	$order->clean($old_parent);
+}
+
+/* BEGIN page "access file" code */
+
+// Create a new file in the /pages dir if title changed
+if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/'))
+{
+	$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
+} else {
+    $old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
+	// First check if we need to create a new file
+	if(($old_link != $link) || (!file_exists($old_filename)))
+    {
+		// Delete old file
+		$old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
+		if(file_exists($old_filename))
+        {
+			unlink($old_filename);
+		}
+		// Create access file
+		create_access_file($filename,$page_id,$level);
+		// Move a directory for this page
+		if(file_exists(WB_PATH.PAGES_DIRECTORY.$old_link.'/') && is_dir(WB_PATH.PAGES_DIRECTORY.$old_link.'/'))
+        {
+			rename(WB_PATH.PAGES_DIRECTORY.$old_link.'/', WB_PATH.PAGES_DIRECTORY.$link.'/');
+		}
+		// Update any pages that had the old link with the new one
+		$old_link_len = strlen($old_link);
+        $sql = '';
+		$query_subs = $database->query("SELECT page_id,link,level FROM ".TABLE_PREFIX."pages WHERE link LIKE '%$old_link/%' ORDER BY LEVEL ASC");
+
+		if($query_subs->numRows() > 0)
+        {
+			while($sub = $query_subs->fetchRow())
+            {
+				// Double-check to see if it contains old link
+				if(substr($sub['link'], 0, $old_link_len) == $old_link)
+                {
+					// Get new link
+					$replace_this = $old_link;
+					$old_sub_link_len =strlen($sub['link']);
+					$new_sub_link = $link.'/'.substr($sub['link'],$old_link_len+1,$old_sub_link_len);
+					// Work out level
+					$new_sub_level = level_count($sub['page_id']);
+					// Update level and link
+					$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$new_sub_link', level = '$new_sub_level' WHERE page_id = '".$sub['page_id']."' LIMIT 1");
+					// Re-write the access file for this page
+					$old_subpage_file = WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION;
+					if(file_exists($old_subpage_file))
+                    {
+						unlink($old_subpage_file);
+					}
+					create_access_file(WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION, $sub['page_id'], $new_sub_level);
+				}
+			}
+		}
+	}
+}
+
+// Function to fix page trail of subs
+function fix_page_trail($parent,$root_parent)
+{
+	// Get objects and vars from outside this function
+	global $admin, $template, $database, $TEXT, $MESSAGE;
+	// Get page list from database
+	// $database = new database();
+	$query = "SELECT page_id FROM ".TABLE_PREFIX."pages WHERE parent = '$parent'";
+	$get_pages = $database->query($query);
+	// Insert values into main page list
+	if($get_pages->numRows() > 0)
+    {
+		while($page = $get_pages->fetchRow())
+        {
+			// Fix page trail
+
+			$database->query("UPDATE ".TABLE_PREFIX."pages SET ".($root_parent != 0 ?"root_parent = '$root_parent', ":"")." page_trail = '".get_page_trail($page['page_id'])."' WHERE page_id = '".$page['page_id']."'");
+			// Run this query on subs
+			fix_page_trail($page['page_id'],$root_parent);
+		}
+	}
+}
+
+// Fix sub-pages page trail
+fix_page_trail($page_id,$root_parent);
+
+/* END page "access file" code */
+
+//$pagetree_url = ADMIN_URL.'/pages/index.php';
+//$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+// Check if there is a db error, otherwise say successful
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), $target_url );
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED_SETTINGS'], $target_url );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/settings2.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/add.php
===================================================================
--- tags/2.8.3/wb/admin/pages/add.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/add.php	(revision 1610)
@@ -0,0 +1,245 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Create new admin object and print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Pages', 'pages_add', false);
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get values
+$title = $admin->get_post_escaped('title');
+$title = htmlspecialchars($title);
+$module = preg_replace('/[^a-z0-9_-]/i', "", $admin->get_post('type')); // fix secunia 2010-93-4
+$parent = intval($admin->get_post('parent')); // fix secunia 2010-91-2
+$visibility = $admin->get_post('visibility');
+if (!in_array($visibility, array('public', 'private', 'registered', 'hidden', 'none'))) {$visibility = 'public';} // fix secunia 2010-91-2
+$admin_groups = $admin->get_post('admin_groups');
+$viewing_groups = $admin->get_post('viewing_groups');
+
+// Work-out if we should check for existing page_code
+$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
+
+// add Admin to admin and viewing-groups
+$admin_groups[] = 1;
+$viewing_groups[] = 1;
+
+// After check print the header
+$admin->print_header();
+// check parent page permissions:
+if ($parent!=0) {
+	if (!$admin->get_page_permission($parent,'admin'))
+    {
+        $admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+    }
+
+} elseif (!$admin->get_permission('pages_add_l0','system'))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}	
+
+// check module permissions:
+if (!$admin->get_permission($module, 'module'))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}	
+
+// Validate data
+if($title == '' || substr($title,0,1)=='.')
+{
+	$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']);
+}
+
+// Check to see if page created has needed permissions
+if(!in_array(1, $admin->get_groups_id()))
+{
+	$admin_perm_ok = false;
+	foreach ($admin_groups as $adm_group)
+    {
+		if (in_array($adm_group, $admin->get_groups_id()))
+        {
+			$admin_perm_ok = true;
+		} 
+	}
+	if ($admin_perm_ok == false)
+    {
+		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+	}
+	$admin_perm_ok = false;
+	foreach ($viewing_groups as $view_group)
+    {
+		if (in_array($view_group, $admin->get_groups_id()))
+        {
+			$admin_perm_ok = true;
+		}
+	}
+	if ($admin_perm_ok == false)
+    {
+		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+	}
+}
+
+$admin_groups = implode(',', $admin_groups);
+$viewing_groups = implode(',', $viewing_groups);
+
+// Work-out what the link and page filename should be
+if($parent == '0')
+{
+	$link = '/'.page_filename($title);
+	// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php
+	if($link == '/index' || $link == '/intro')
+    {
+		$link .= '_0';
+		$filename = WB_PATH .PAGES_DIRECTORY .'/' .page_filename($title) .'_0' .PAGE_EXTENSION;
+	} else {
+		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($title).PAGE_EXTENSION;
+	}
+} else {
+	$parent_section = '';
+	$parent_titles = array_reverse(get_parent_titles($parent));
+	foreach($parent_titles AS $parent_title)
+    {
+		$parent_section .= page_filename($parent_title).'/';
+	}
+	if($parent_section == '/') { $parent_section = ''; }
+	$link = '/'.$parent_section.page_filename($title);
+	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($title).PAGE_EXTENSION;
+	make_dir(WB_PATH.PAGES_DIRECTORY.'/'.$parent_section);
+}
+
+// Check if a page with same page filename exists
+$get_same_page = $database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE link = '$link'");
+if($get_same_page->numRows() > 0 OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.PAGE_EXTENSION) OR file_exists(WB_PATH.PAGES_DIRECTORY.$link.'/'))
+{
+	$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']);
+}
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
+// First clean order
+$order->clean($parent);
+// Get new order
+$position = $order->get_new($parent);
+
+// Work-out if the page parent (if selected) has a seperate template or language to the default
+$query_parent = $database->query("SELECT template, language FROM ".TABLE_PREFIX."pages WHERE page_id = '$parent'");
+if($query_parent->numRows() > 0)
+{
+	$fetch_parent = $query_parent->fetchRow();
+	$template = $fetch_parent['template'];
+	$language = $fetch_parent['language'];
+} else {
+	$template = '';
+	$language = DEFAULT_LANGUAGE;
+}
+
+// Insert page into pages table
+$sql  = 'INSERT INTO `'.TABLE_PREFIX.'pages` SET ';
+$sql .= '`parent` = '.$parent.', ';
+$sql .= '`target` = "_top", ';
+$sql .= '`page_title` = "'.$title.'", ';
+$sql .= '`menu_title` = "'.$title.'", ';
+$sql .= '`template` = "'.$template.'", ';
+$sql .= '`visibility` = "'.$visibility.'", ';
+$sql .= '`position` = '.$position.', ';
+$sql .= '`menu` = 1, ';
+$sql .= '`language` = "'.$language.'", ';
+$sql .= '`searching` = 1, ';
+$sql .= '`modified_when` = '.time().', ';
+$sql .= '`modified_by` = '.$admin->get_user_id().', ';
+$sql .= '`admin_groups` = "'.$admin_groups.'", ';
+$sql .= '`viewing_groups` = "'.$viewing_groups.'"';
+
+$database->query($sql);
+/*
+$query = "INSERT INTO ".TABLE_PREFIX."pages
+(page_title,menu_title,parent,template,target,position,visibility,searching,menu,language,admin_groups,viewing_groups,modified_when,modified_by) VALUES
+('$title','$title','$parent','$template','_top','$position','$visibility','1','1','$language','$admin_groups','$viewing_groups','".time()."','".$admin->get_user_id()."')";
+$database->query($query);
+*/
+if($database->is_error())
+{
+	$admin->print_error($database->get_error());
+}
+
+// Get the page id
+$page_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Work out level
+$level = level_count($page_id);
+// Work out root parent
+$root_parent = root_parent($page_id);
+// Work out page trail
+$page_trail = get_page_trail($page_id);
+
+// Update page with new level and link
+$sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET ';
+$sql .= '`root_parent` = '.$root_parent.', ';
+$sql .= '`level` = '.$level.', ';
+$sql .= '`link` = "'.$link.'", ';
+$sql .= '`page_trail` = "'.$page_trail.'"';
+$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES)
+         && $field_set
+         && ($language == DEFAULT_LANGUAGE)
+         && (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php')
+         )
+         ? ', `page_code` = '.(int)$page_id.' ' : ' ';
+$sql .= 'WHERE `page_id` = '.$page_id;
+$database->query($sql);
+/*
+$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$link', level = '$level', root_parent = '$root_parent', page_trail = '$page_trail' WHERE page_id = '$page_id'");
+*/
+if($database->is_error())
+{
+	$admin->print_error($database->get_error());
+}
+// Create a new file in the /pages dir
+create_access_file($filename, $page_id, $level);
+
+// add position 1 to new page
+$position = 1;
+
+// Add new record into the sections table
+$database->query("INSERT INTO ".TABLE_PREFIX."sections (page_id,position,module,block) VALUES ('$page_id','$position', '$module','1')");
+
+// Get the section id
+$section_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Include the selected modules add file if it exists
+if(file_exists(WB_PATH.'/modules/'.$module.'/add.php')) {
+	require(WB_PATH.'/modules/'.$module.'/add.php');
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['PAGES']['ADDED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/sections_save.php
===================================================================
--- tags/2.8.3/wb/admin/pages/sections_save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/sections_save.php	(revision 1610)
@@ -0,0 +1,135 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include config file
+require('../../config.php');
+
+// Make sure people are allowed to access this page
+if(MANAGE_SECTIONS != 'enabled') {
+	header('Location: '.ADMIN_URL.'/pages/index.php');
+	exit(0);
+}
+
+require_once(WB_PATH."/include/jscalendar/jscalendar-functions.php");
+/**/
+// Create new admin object
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Pages', 'pages_modify',false);
+
+// Get page id
+if(!isset($_GET['page_id']) || !is_numeric($_GET['page_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = (int)$_GET['page_id'];
+}
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],ADMIN_URL.'/pages/sections.php?page_id='.$page_id);
+}
+// After check print the header
+$admin->print_header();
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+	exit();
+}
+*/
+// Get perms
+// $database = new database();
+$results = $database->query("SELECT admin_groups,admin_users FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+$results_array = $results->fetchRow();
+$old_admin_groups = explode(',', $results_array['admin_groups']);
+$old_admin_users = explode(',', $results_array['admin_users']);
+$in_old_group = FALSE;
+foreach($admin->get_groups_id() as $cur_gid){
+    if (in_array($cur_gid, $old_admin_groups)) {
+        $in_old_group = TRUE;
+    }
+}
+if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users))) {
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// Get page details
+// $database = new database();
+$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'";
+$results = $database->query($query);
+if($database->is_error()) {
+	$admin->print_header();
+	$admin->print_error($database->get_error());
+}
+if($results->numRows() == 0) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+}
+$results_array = $results->fetchRow();
+
+// Set module permissions
+$module_permissions = $_SESSION['MODULE_PERMISSIONS'];
+
+// Loop through sections
+$query_sections = $database->query("SELECT section_id,module,position FROM ".TABLE_PREFIX."sections WHERE page_id = '$page_id' ORDER BY position ASC");
+if($query_sections->numRows() > 0) {
+	$num_sections = $query_sections->numRows();
+	while($section = $query_sections->fetchRow()) {
+		if(!is_numeric(array_search($section['module'], $module_permissions))) {
+			// Update the section record with properties
+			$section_id = $section['section_id'];
+			$sql = ''; $publ_start = 0; $publ_end = 0;
+			$dst = date("I")?" DST":""; // daylight saving time?
+			if(isset($_POST['block'.$section_id]) && $_POST['block'.$section_id] != '') {
+				$sql = "block = '".$admin->add_slashes($_POST['block'.$section_id])."'";
+			}
+			// update publ_start and publ_end, trying to make use of the strtotime()-features like "next week", "+1 month", ...
+			if(isset($_POST['start_date'.$section_id]) && isset($_POST['end_date'.$section_id])) {
+				if(trim($_POST['start_date'.$section_id]) == '0' || trim($_POST['start_date'.$section_id]) == '') {
+					$publ_start = 0;
+				} else {
+					$publ_start = jscalendar_to_timestamp($_POST['start_date'.$section_id]);
+				}
+				if(trim($_POST['end_date'.$section_id]) == '0' || trim($_POST['end_date'.$section_id]) == '') {
+					$publ_end = 0;
+				} else {
+					$publ_end = jscalendar_to_timestamp($_POST['end_date'.$section_id], $publ_start);
+				}
+				if($sql != '')
+					$sql .= ",";
+				$sql .= " publ_start = '".$admin->add_slashes($publ_start)."'";
+				$sql .= ", publ_end = '".$admin->add_slashes($publ_end)."'";
+			}
+			$query = "UPDATE ".TABLE_PREFIX."sections SET $sql WHERE section_id = '$section_id' LIMIT 1";
+			if($sql != '') {
+				$database->query($query);
+			}
+		}
+	}
+}
+// Check for error or print success message
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/sections.php?page_id='.$page_id );
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SECTIONS_PROPERTIES_SAVED'], ADMIN_URL.'/pages/sections.php?page_id='.$page_id );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/pages/sections_save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/page_calendar.js
===================================================================
--- tags/2.8.3/wb/admin/pages/page_calendar.js	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/page_calendar.js	(revision 1610)
@@ -0,0 +1,26 @@
+Calendar.setup(
+	{
+	inputField  : start_date,
+	ifFormat    : jscal_ifformat,
+	button      : trigger_start,
+	firstDay    : jscal_firstday,
+	showsTime   : showsTime,
+	timeFormat  : timeFormat,
+	date        : jscal_today,
+	range       : [1970, 2037],
+	step        : 1
+	}
+);
+Calendar.setup(
+	{
+	inputField  : end_date,
+	ifFormat    : jscal_ifformat,
+	button      : trigger_end,
+	firstDay    : jscal_firstday,
+	showsTime   : showsTime,
+	timeFormat  : timeFormat,
+	date        : jscal_today,
+	range       : [1970, 2037],
+	step        : 1
+	}
+);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/page_calendar.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/move_down.php
===================================================================
--- tags/2.8.3/wb/admin/pages/move_down.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/move_down.php	(revision 1610)
@@ -0,0 +1,66 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Get id
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
+	if(isset($_GET['section_id']) AND is_numeric($_GET['section_id'])) {
+		$page_id = $_GET['page_id'];
+		$id = $_GET['section_id'];
+		$id_field = 'section_id';
+		$common_field = 'page_id';
+		$table = TABLE_PREFIX.'sections';
+	} else {
+		$id = $_GET['page_id'];
+		$id_field = 'page_id';
+		$common_field = 'parent';
+		$table = TABLE_PREFIX.'pages';
+	}
+} else {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Create new admin object and print admin header
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_settings');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, $common_field);
+if($id_field == 'page_id') {
+	if($order->move_down($id)) {
+		$admin->print_success($MESSAGE['PAGES']['REORDERED']);
+	} else {
+		$admin->print_error($MESSAGE['PAGES']['CANNOT_REORDER']);
+	}
+} else {
+	if($order->move_down($id)) {
+		$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/sections.php?page_id='.$page_id);
+	} else {
+		$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/sections.php?page_id='.$page_id);
+	}
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/move_down.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/save.php
===================================================================
--- tags/2.8.3/wb/admin/pages/save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/save.php	(revision 1610)
@@ -0,0 +1,125 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/*
+*/
+// Create new admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Get page & section id
+if(!isset($_POST['page_id']) || !is_numeric($_POST['page_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = intval($_POST['page_id']);
+}
+
+if(!isset($_POST['section_id']) || !is_numeric($_POST['section_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$section_id = intval($_POST['section_id']);
+}
+
+// $js_back = "javascript: history.go(-1);";
+$js_back = ADMIN_URL.'/pages/modify.php?page_id='.$page_id;
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back );
+}
+// After check print the header
+$admin->print_header();
+
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+
+if( (!($section_id= $admin->checkIDKEY('section_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+*/
+
+// Get perms
+$sql  = 'SELECT `admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` ';
+$sql .= 'WHERE `page_id` = '.$page_id;
+$results = $database->query($sql);
+$results_array = $results->fetchRow();
+$old_admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
+$old_admin_users = explode(',', str_replace('_', '', $results_array['admin_users']));
+$in_old_group = FALSE;
+foreach($admin->get_groups_id() as $cur_gid)
+{
+    if (in_array($cur_gid, $old_admin_groups))
+    {
+        $in_old_group = TRUE;
+    }
+}
+if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+// Get page module
+$sql  = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` ';
+$sql .= 'WHERE `page_id`='.$page_id.' AND `section_id`='.$section_id;
+$module = $database->get_one($sql);
+if(!$module)
+{
+	$admin->print_error( $database->is_error() ? $database->get_error() : $MESSAGE['PAGES']['NOT_FOUND']);
+}
+//$results = $database->query($sql);
+//if($database->is_error()) {
+//	$admin->print_error($database->get_error());
+//}
+//if($results->numRows() == 0) {
+//	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+//}
+//$results_array = $results->fetchRow();
+//$module = $results_array['module'];
+
+// Update the pages table
+$now = time();
+$sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET ';
+$sql .= '`modified_when` = '.$now.', `modified_by` = '.$admin->get_user_id().' ';
+$sql .= 'WHERE `page_id` = '.$page_id;
+$database->query($sql);
+
+// Include the modules saving script if it exists
+if(file_exists(WB_PATH.'/modules/'.$module.'/save.php'))
+{
+	include_once(WB_PATH.'/modules/'.$module.'/save.php');
+}
+// Check if there is a db error, otherwise say successful
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$results_array['page_id'] );
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$results_array['page_id'] );
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/empty_trash.php
===================================================================
--- tags/2.8.3/wb/admin/pages/empty_trash.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/empty_trash.php	(revision 1610)
@@ -0,0 +1,54 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages');
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get page list from database
+// $database = new database();
+$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE visibility = 'deleted' ORDER BY level DESC";
+$get_pages = $database->query($query);
+
+// Insert values into main page list
+if($get_pages->numRows() > 0)	{
+	while($page = $get_pages->fetchRow()) {
+		// Delete page subs
+		$sub_pages = get_subs($page['page_id'], array());
+		foreach($sub_pages AS $sub_page_id) {
+			delete_page($sub_page_id);
+		}	
+		// Delete page
+		delete_page($page['page_id']);
+	}
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($TEXT['TRASH_EMPTIED']);
+}
+
+// Print admin 
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/empty_trash.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/delete.php
===================================================================
--- tags/2.8.3/wb/admin/pages/delete.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/delete.php	(revision 1610)
@@ -0,0 +1,109 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+
+// Create new admin object and print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_delete');
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+	exit();
+}
+
+/* 
+// Get page id
+if(!isset($_GET['page_id']) || !is_numeric($_GET['page_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = $_GET['page_id'];
+}
+*/
+// Get perms
+if (!$admin->get_page_permission($page_id,'admin')) {
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// Find out more about the page
+$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'";
+$results = $database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+}
+if($results->numRows() == 0) {
+	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+}
+
+$results_array = $results->fetchRow();
+
+$visibility = $results_array['visibility'];
+
+// Check if we should delete it or just set the visibility to 'deleted'
+if(PAGE_TRASH != 'disabled' AND $visibility != 'deleted') {
+	// Page trash is enabled and page has not yet been deleted
+	// Function to change all child pages visibility to deleted
+	function trash_subs($parent = 0) {
+		global $database;
+		// Query pages
+		$query_menu = $database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' ORDER BY position ASC");
+		// Check if there are any pages to show
+		if($query_menu->numRows() > 0) {
+			// Loop through pages
+			while($page = $query_menu->fetchRow()) {
+				// Update the page visibility to 'deleted'
+				$database->query("UPDATE ".TABLE_PREFIX."pages SET visibility = 'deleted' WHERE page_id = '".$page['page_id']."' LIMIT 1");
+				// Run this function again for all sub-pages
+				trash_subs($page['page_id']);
+			}
+		}
+	}
+	
+	// Update the page visibility to 'deleted'
+	$database->query("UPDATE ".TABLE_PREFIX."pages SET visibility = 'deleted' WHERE page_id = '$page_id.' LIMIT 1");
+	
+	// Run trash subs for this page
+	trash_subs($page_id);
+} else {
+	// Really dump the page
+	// Delete page subs
+	$sub_pages = get_subs($page_id, array());
+	foreach($sub_pages AS $sub_page_id) {
+		delete_page($sub_page_id);
+	}
+	// Delete page
+	delete_page($page_id);
+}	
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['PAGES']['DELETED']);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/delete.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/page_trash.js
===================================================================
--- tags/2.8.3/wb/admin/pages/page_trash.js	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/page_trash.js	(revision 1610)
@@ -0,0 +1,32 @@
+function toggle_viewers() {
+	if(document.add.visibility.value == 'private') {
+		document.getElementById('private_viewers').style.display = 'block';
+		document.getElementById('registered_viewers').style.display = 'none';
+	} else if(document.add.visibility.value == 'registered') {
+		document.getElementById('private_viewers').style.display = 'none';
+		document.getElementById('registered_viewers').style.display = 'block';
+	} else {
+		document.getElementById('private_viewers').style.display = 'none';
+		document.getElementById('registered_viewers').style.display = 'none';
+	}
+}
+
+function toggle_visibility(id){
+	if(document.getElementById(id).style.display == "block") {
+		document.getElementById(id).style.display = "none";
+	} else {
+		document.getElementById(id).style.display = "block";
+	}
+}
+var plus = new Image;
+plus.src = "<?php echo THEME_URL; ?>/images/plus_16.png";
+var minus = new Image;
+minus.src = "<?php echo THEME_URL; ?>/images/minus_16.png";
+function toggle_plus_minus(id) {
+	var img_src = document.images['plus_minus_' + id].src;
+	if(img_src == plus.src) {
+		document.images['plus_minus_' + id].src = minus.src;
+	} else {
+		document.images['plus_minus_' + id].src = plus.src;
+	}
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/page_trash.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/move_up.php
===================================================================
--- tags/2.8.3/wb/admin/pages/move_up.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/move_up.php	(revision 1610)
@@ -0,0 +1,66 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Get id
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
+	if(isset($_GET['section_id']) AND is_numeric($_GET['section_id'])) {
+		$page_id = $_GET['page_id'];
+		$id = $_GET['section_id'];
+		$id_field = 'section_id';
+		$common_field = 'page_id';
+		$table = TABLE_PREFIX.'sections';
+	} else {
+		$id = $_GET['page_id'];
+		$id_field = 'page_id';
+		$common_field = 'parent';
+		$table = TABLE_PREFIX.'pages';
+	}
+} else {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Create new admin object and print admin header
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_settings');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, $common_field);
+if($id_field == 'page_id') {
+	if($order->move_up($id)) {
+		$admin->print_success($MESSAGE['PAGES']['REORDERED']);
+	} else {
+		$admin->print_error($MESSAGE['PAGES']['CANNOT_REORDER']);
+	}
+} else {
+	if($order->move_up($id)) {
+		$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/sections.php?page_id='.$page_id);
+	} else {
+		$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/sections.php?page_id='.$page_id);
+	}
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/move_up.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/trash.php
===================================================================
--- tags/2.8.3/wb/admin/pages/trash.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/trash.php	(revision 1610)
@@ -0,0 +1,282 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages');
+
+?>
+<script type="text/javascript" language="javascript">
+function toggle_viewers() {
+	if(document.add.visibility.value == 'private') {
+		document.getElementById('private_viewers').style.display = 'block';
+		document.getElementById('registered_viewers').style.display = 'none';
+	} else if(document.add.visibility.value == 'registered') {
+		document.getElementById('private_viewers').style.display = 'none';
+		document.getElementById('registered_viewers').style.display = 'block';
+	} else {
+		document.getElementById('private_viewers').style.display = 'none';
+		document.getElementById('registered_viewers').style.display = 'none';
+	}
+}
+function toggle_visibility(id){
+	if(document.getElementById(id).style.display == "block") {
+		document.getElementById(id).style.display = "none";
+	} else {
+		document.getElementById(id).style.display = "block";
+	}
+}
+var plus = new Image;
+plus.src = "<?php echo THEME_URL; ?>/images/plus_16.png";
+var minus = new Image;
+minus.src = "<?php echo THEME_URL; ?>/images/minus_16.png";
+function toggle_plus_minus(id) {
+	var img_src = document.images['plus_minus_' + id].src;
+	if(img_src == plus.src) {
+		document.images['plus_minus_' + id].src = minus.src;
+	} else {
+		document.images['plus_minus_' + id].src = plus.src;
+	}
+}
+</script>
+
+<?php
+
+function make_list($parent, $editable_pages) {
+	// Get objects and vars from outside this function
+	global $admin, $template, $database, $TEXT, $MESSAGE;
+	?>
+	<ul id="p<?php echo $parent; ?>" <?php if($parent != 0) { echo 'class="page_list"'; } ?>>
+	<?php	
+	// Get page list from database
+	// $database = new database();
+	$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' AND visibility = 'deleted' ORDER BY position ASC";
+	$get_pages = $database->query($query);
+	
+	// Insert values into main page list
+	if($get_pages->numRows() > 0)	{
+		while($page = $get_pages->fetchRow()) {
+			// Get user perms
+			$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+			$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+			$in_old_group = FALSE;
+			foreach($admin->get_groups_id() as $cur_gid){
+			    if (in_array($cur_gid, $old_admin_groups)) {
+				$in_old_group = TRUE;
+			    }
+			}
+			if((!$in_old_group) OR is_numeric(array_search($admin->get_user_id(), $admin_users))) {
+				if($page['visibility'] == 'deleted') {
+					$can_modify = true;
+					$editable_pages = $editable_pages+1;
+				} else {
+					$can_modify = false;
+				}
+			} else {
+				$can_modify = false;
+			}
+						
+			// Work out if we should show a plus or not
+			$get_page_subs = $database->query("SELECT page_id,admin_groups,admin_users FROM ".TABLE_PREFIX."pages WHERE parent = '".$page['page_id']."'");
+			if($get_page_subs->numRows() > 0) {
+				$display_plus = true;
+			} else {
+				$display_plus = false;
+			}
+			
+			// Work out how many pages there are for this parent
+			$num_pages = $get_pages->numRows();
+			?>
+			
+			<li id="p<?php echo $page['parent']; ?>">
+			<table cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td width="20" style="padding-left: <?php echo $page['level']*20; ?>px;">
+					<?php
+					if($display_plus == true) {
+					?>
+					<a href="javascript: toggle_visibility('p<?php echo $page['page_id']; ?>');" title="<?php echo $TEXT['EXPAND'].'/'.$TEXT['COLLAPSE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/plus_16.png" onclick="toggle_plus_minus('<?php echo $page['page_id']; ?>');" name="plus_minus_<?php echo $page['page_id']; ?>" border="0" alt="+" />
+					</a>
+					<?php
+					}
+					?>
+				</td>
+				<?php if($admin->get_permission('pages_modify') == true AND $can_modify == true AND $page['visibility'] != 'heading') { ?>
+				<td>
+					<a href="<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['MODIFY']; ?>"><?php echo ($page['page_title']); ?></a>
+				</td>
+				<?php } else { ?>
+				<td>
+					<?php
+					if($page['visibility'] != 'heading') {
+						echo ($page['page_title']);
+					} else {
+						echo '<b>'.($page['page_title']).'</b>';
+					}
+					?>
+				</td>
+				<?php } ?>
+				<td align="left" width="232">
+					<font color="#999999"><?php echo $page['menu_title']; ?></font>
+				</td>
+				<td align="right" valign="middle" width="30" class="icon_col">
+				<?php if($page['visibility'] == 'public') { ?>
+					<img src="<?php echo THEME_URL; ?>/images/visible_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PUBLIC']; ?>" border="0" />
+				<?php } elseif($page['visibility'] == 'private') { ?>
+					<img src="<?php echo THEME_URL; ?>/images/private_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['PRIVATE']; ?>" border="0" />
+				<?php } elseif($page['visibility'] == 'registered') { ?>
+					<img src="<?php echo THEME_URL; ?>/images/keys_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['REGISTERED']; ?>" border="0" />
+				<?php } elseif($page['visibility'] == 'none') { ?>
+					<img src="<?php echo THEME_URL; ?>/images/hidden_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['NONE']; ?>" border="0" />
+				<?php } elseif($page['visibility'] == 'deleted') { ?>
+					<img src="<?php echo THEME_URL; ?>/images/deleted_16.png" alt="<?php echo $TEXT['VISIBILITY']; ?>: <?php echo $TEXT['DELETED']; ?>" border="0" />
+				<?php } ?>
+				</td>
+				<td width="20">
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true AND $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/settings.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['SETTINGS']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="<?php echo $TEXT['SETTINGS']; ?>" />
+						</a>
+						<?php } ?>
+					<?php } else { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/restore.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['RESTORE']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/restore_16.png" border="0" alt="<?php echo $TEXT['RESTORE']; ?>" />
+						</a>
+					<?php } ?>
+				</td>
+				<td width="20">
+				<?php if($page['position'] != 1) { ?>
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true AND $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/move_up.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/up_16.png" border="0" alt="^" />
+						</a>
+						<?php } ?>
+					<?php } ?>
+				<?php } ?>
+				</td>
+				<td width="20">
+				<?php if($page['position'] != $num_pages) { ?>
+					<?php if($page['visibility'] != 'deleted') { ?>
+						<?php if($admin->get_permission('pages_settings') == true AND $can_modify == true) { ?>
+						<a href="<?php echo ADMIN_URL; ?>/pages/move_down.php?page_id=<?php echo $page['page_id']; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+							<img src="<?php echo THEME_URL; ?>/images/down_16.png" border="0" alt="v" />
+						</a>
+						<?php } ?>
+					<?php } ?>
+				<?php } ?>
+				</td>
+				<td width="20">
+					<?php if($admin->get_permission('pages_delete') == true AND $can_modify == true) { ?>
+					<a href="javascript: confirm_link('<?php echo $MESSAGE['PAGES']['DELETE_CONFIRM']; ?>?', '<?php echo ADMIN_URL; ?>/pages/delete.php?page_id=<?php echo $page['page_id']; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+					</a>
+					<?php } ?>
+				</td>
+			</tr>
+			</table>
+			</li>
+							
+			<?php
+			// Get subs
+			make_list($page['page_id'], $editable_pages);
+		}
+
+	}
+	?>
+	</ul>
+	<?php
+	return $editable_pages;
+}
+
+// Generate pages list
+if($admin->get_permission('pages_view') == true) {
+	?>
+	<table cellpadding="0" cellspacing="0" width="100%" border="0">
+	<tr>
+		<td>
+			<h2><?php echo $HEADING['DELETED_PAGES']; ?></h2>
+		</td>
+		<td align="right">
+				<a href="<?php echo ADMIN_URL; ?>/pages/empty_trash.php">
+				<img src="<?php echo THEME_URL; ?>/images/delete_16.png" alt="<?php echo $TEXT['PAGE_TRASH']; ?>" border="0" />
+				<?php echo $TEXT['EMPTY_TRASH']; ?></a>
+		</td>
+	</tr>
+	</table>
+	<div class="pages_list">
+	<table cellpadding="1" cellspacing="0" width="720" border="0">
+	<tr>
+		<td width="20">
+			&nbsp;
+		</td>
+		<td>
+			<?php echo $TEXT['PAGE_TITLE']; ?>:
+		</td>
+		<td width="198" align="left">
+			<?php echo $TEXT['MENU_TITLE']; ?>:
+		</td>
+		<td width="80" align="center">
+			<?php echo $TEXT['VISIBILITY']; ?>:
+		</td>
+		<td width="90" align="center">
+			<?php echo $TEXT['ACTIONS']; ?>:
+		</td>		
+	</tr>
+	</table>
+	<?php
+	$editable_pages = make_list(0, 0);
+	?>
+	</div>
+	<div class="empty_list">
+		<?php echo $TEXT['NONE_FOUND']; ?>
+	</div>
+	<?php
+} else {
+	$editable_pages = 0;
+}
+
+// Figure out if the no pages found message should be shown or not
+if($editable_pages == 0) {
+	?>
+	<style type="text/css">
+	.pages_list {
+		display: none;
+	}
+	</style>
+	<?php
+} else {
+	?>
+	<style type="text/css">
+	.empty_list {
+		display: none;
+	}
+	</style>
+	<?php
+}
+
+?>
+<br />< <a href="<?php echo ADMIN_URL; ?>/pages/index.php"><?php echo $MESSAGE['PAGES']['RETURN_TO_PAGES']; ?></a>
+<?php
+
+// Print admin 
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/trash.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/page_settings.js
===================================================================
--- tags/2.8.3/wb/admin/pages/page_settings.js	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/page_settings.js	(revision 1610)
@@ -0,0 +1,26 @@
+function toggle_viewers() {
+	if(document.settings.visibility.value == 'private' || document.settings.visibility.value == 'registered') {
+		document.getElementById('allowed_viewers').style.display = 'block';
+	} else {
+		document.getElementById('allowed_viewers').style.display = 'none';
+	}
+}
+var lastselectedindex = new Array();
+
+function disabled_hack_for_ie(sel) {
+	var sels = document.getElementsByTagName("select");
+	var i;
+	var sel_num_in_doc = 0;
+	for (i = 0; i <sels.length; i++) {
+		if (sel == sels[i]) {
+			sel_num_in_doc = i;
+		}
+	}
+	// never true for browsers that support option.disabled
+	if (sel.options[sel.selectedIndex].disabled) {
+		sel.selectedIndex = lastselectedindex[sel_num_in_doc];
+	} else {
+		lastselectedindex[sel_num_in_doc] = sel.selectedIndex;
+	}
+	return true;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/page_settings.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/restore.php
===================================================================
--- tags/2.8.3/wb/admin/pages/restore.php	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/restore.php	(revision 1610)
@@ -0,0 +1,102 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Get page id
+if(!isset($_GET['page_id']) OR !is_numeric($_GET['page_id'])) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$page_id = $_GET['page_id'];
+}
+
+// Create new admin object and print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_delete');
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get perms
+$results = $database->query("SELECT admin_groups,admin_users FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+$results_array = $results->fetchRow();
+
+// Find out more about the page
+$query = "SELECT * FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'";
+$results = $database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+}
+if($results->numRows() == 0) {
+	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
+}
+$results_array = $results->fetchRow();
+$old_admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
+$old_admin_users = explode(',', str_replace('_', '', $results_array['admin_users']));
+
+$in_old_group = FALSE;
+foreach($admin->get_groups_id() as $cur_gid){
+    if (in_array($cur_gid, $old_admin_groups)) {
+	$in_old_group = TRUE;
+    }
+}
+if((!$in_old_group) AND !is_numeric(array_search($admin->get_user_id(), $old_admin_users))) {
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+$visibility = $results_array['visibility'];
+
+if(PAGE_TRASH) {
+	if($visibility == 'deleted') {	
+		// Function to change all child pages visibility to deleted
+		function restore_subs($parent = 0) {
+			global $database;
+			// Query pages
+			$query_menu = $database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' ORDER BY position ASC");
+			// Check if there are any pages to show
+			if($query_menu->numRows() > 0) {
+				// Loop through pages
+				while($page = $query_menu->fetchRow()) {
+					// Update the page visibility to 'deleted'
+					$database->query("UPDATE ".TABLE_PREFIX."pages SET visibility = 'public' WHERE page_id = '".$page['page_id']."' LIMIT 1");
+					// Run this function again for all sub-pages
+					restore_subs($page['page_id']);
+				}
+			}
+		}
+		
+		// Update the page visibility to 'deleted'
+		$database->query("UPDATE ".TABLE_PREFIX."pages SET visibility = 'public' WHERE page_id = '$page_id.' LIMIT 1");
+		
+		// Run trash subs for this page
+		restore_subs($page_id);
+		
+	}
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['PAGES']['RESTORED']);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/restore.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/eggsurplus.js
===================================================================
--- tags/2.8.3/wb/admin/pages/eggsurplus.js	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/eggsurplus.js	(revision 1610)
@@ -0,0 +1,15 @@
+	function add_child_page(page_id)
+    {
+		//find and select the page in the parent dropdown
+		var selectBox = document.add.parent;
+		for (var i = 0; i < selectBox.options.length; i++)
+		{
+			  if (selectBox.options[i].value == page_id)
+			  {
+					selectBox.selectedIndex = i;
+					break;
+			  }
+		}
+		//set focus to add form
+		document.add.title.focus();
+	}

Property changes on: tags/2.8.3/wb/admin/pages/eggsurplus.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/pages/page_index.js
===================================================================
--- tags/2.8.3/wb/admin/pages/page_index.js	(nonexistent)
+++ tags/2.8.3/wb/admin/pages/page_index.js	(revision 1610)
@@ -0,0 +1,35 @@
+/*-- Addition for remembering expanded state of pages --*/
+function writeSessionCookie (cookieName, cookieValue) {
+	document.cookie = escape(cookieName) + "=" + escape(cookieValue) + ";";
+}
+
+function toggle_viewers() {
+	if(document.add.visibility.value == 'private') {
+		document.getElementById('viewers').style.display = 'block';
+	} else if(document.add.visibility.value == 'registered') {
+		document.getElementById('viewers').style.display = 'block';
+	} else {
+		document.getElementById('viewers').style.display = 'none';
+	}
+}
+function toggle_visibility(id){
+	if(document.getElementById(id).style.display == "block") {
+		document.getElementById(id).style.display = "none";
+		writeSessionCookie (id, "0");//Addition for remembering expanded state of pages
+	} else {
+		document.getElementById(id).style.display = "block";
+		writeSessionCookie (id, "1");//Addition for remembering expanded state of pages
+	}
+}
+var plus = new Image;
+plus.src = THEME_URL+"/images/plus_16.png";
+var minus = new Image;
+minus.src = THEME_URL+"/images/minus_16.png";
+function toggle_plus_minus(id) {
+	var img_src = document.images['plus_minus_' + id].src;
+	if(img_src == plus.src) {
+		document.images['plus_minus_' + id].src = minus.src;
+	} else {
+		document.images['plus_minus_' + id].src = plus.src;
+	}
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/pages/page_index.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/groups/get_permissions.php
===================================================================
--- tags/2.8.3/wb/admin/groups/get_permissions.php	(nonexistent)
+++ tags/2.8.3/wb/admin/groups/get_permissions.php	(revision 1610)
@@ -0,0 +1,248 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         groups
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+
+if(!defined('WB_PATH')) { exit('Direct access to this file is not allowed'); }
+
+// Get system permissions
+if($admin->get_post('advanced') != 'yes') {
+	$system_permissions['pages'] = $admin->get_post('pages');
+		$system_permissions['pages_view'] = $system_permissions['pages'];
+		$system_permissions['pages_add'] = $system_permissions['pages'];
+		$system_permissions['pages_add_l0'] = $system_permissions['pages'];
+		$system_permissions['pages_settings'] = $system_permissions['pages'];
+		$system_permissions['pages_modify'] = $system_permissions['pages'];
+		$system_permissions['pages_intro'] = $system_permissions['pages'];
+		$system_permissions['pages_delete'] = $system_permissions['pages'];
+	$system_permissions['media'] = $admin->get_post('media');
+		$system_permissions['media_view'] = $system_permissions['media'];
+		$system_permissions['media_upload'] = $system_permissions['media'];
+		$system_permissions['media_rename'] = $system_permissions['media'];
+		$system_permissions['media_delete'] = $system_permissions['media'];
+		$system_permissions['media_create'] = $system_permissions['media'];
+	if($admin->get_post('modules') != '' OR $admin->get_post('templates') != '' OR $admin->get_post('languages') != '') {
+		$system_permissions['addons'] = 1;
+	} else {
+		$system_permissions['addons'] = 0;
+	}
+		$system_permissions['modules'] = $admin->get_post('modules');
+			$system_permissions['modules_view'] = $system_permissions['modules'];
+			$system_permissions['modules_install'] = $system_permissions['modules'];
+			$system_permissions['modules_uninstall'] = $system_permissions['modules'];
+		$system_permissions['templates'] = $admin->get_post('templates');
+			$system_permissions['templates_view'] = $system_permissions['templates'];
+			$system_permissions['templates_install'] = $system_permissions['templates'];
+			$system_permissions['templates_uninstall'] = $system_permissions['templates'];
+		$system_permissions['languages'] = $admin->get_post('languages');
+			$system_permissions['languages_view'] = $system_permissions['languages'];
+			$system_permissions['languages_install'] = $system_permissions['languages'];
+			$system_permissions['languages_uninstall'] = $system_permissions['languages'];
+	$system_permissions['settings'] = $admin->get_post('settings');
+		$system_permissions['settings_basic'] = $system_permissions['settings'];
+		$system_permissions['settings_advanced'] = $system_permissions['settings'];
+	if($admin->get_post('users') != '' OR $admin->get_post('groups') != '') {
+		$system_permissions['access'] = 1;
+	} else {
+		$system_permissions['access'] = 0;
+	}
+	$system_permissions['users'] = $admin->get_post('users');
+	$system_permissions['users_view'] = $system_permissions['users'];
+	$system_permissions['users_add'] = $system_permissions['users'];
+	$system_permissions['users_modify'] = $system_permissions['users'];
+	$system_permissions['users_delete'] = $system_permissions['users'];
+	$system_permissions['groups'] = $admin->get_post('groups');
+	$system_permissions['groups_view'] = $system_permissions['groups'];
+	$system_permissions['groups_add'] = $system_permissions['groups'];
+	$system_permissions['groups_modify'] = $system_permissions['groups'];
+	$system_permissions['groups_delete'] = $system_permissions['groups'];
+	$system_permissions['admintools'] = $admin->get_post('admintools');
+	$system_permissions['admintools_settings'] = $system_permissions['admintools'];
+} else {
+	// Pages
+	$system_permissions['pages_view'] = $admin->get_post('pages_view');
+		$system_permissions['pages_add'] = $admin->get_post('pages_add');
+	if($admin->get_post('pages_add') != 1 AND $admin->get_post('pages_add_l0') == 1) {
+		$system_permissions['pages_add'] = $admin->get_post('pages_add_l0');
+	}
+	$system_permissions['pages_add_l0'] = $admin->get_post('pages_add_l0');
+	$system_permissions['pages_settings'] = $admin->get_post('pages_settings');
+	$system_permissions['pages_modify'] = $admin->get_post('pages_modify');
+	$system_permissions['pages_intro'] = $admin->get_post('pages_intro');
+	$system_permissions['pages_delete'] = $admin->get_post('pages_delete');
+	if($system_permissions['pages_view'] == 1 OR $system_permissions['pages_add'] == 1 OR $system_permissions['pages_settings'] == 1 OR $system_permissions['pages_modify'] == 1 OR $system_permissions['pages_intro'] == 1 OR $system_permissions['pages_delete'] == 1) {
+		$system_permissions['pages'] = 1;
+	} else {
+		$system_permissions['pages'] = '';
+	}
+	// Media
+	$system_permissions['media_view'] = $admin->get_post('media_view');
+	$system_permissions['media_upload'] = $admin->get_post('media_upload');
+	$system_permissions['media_rename'] = $admin->get_post('media_rename');
+	$system_permissions['media_delete'] = $admin->get_post('media_delete');
+	$system_permissions['media_create'] = $admin->get_post('media_create');
+	if($system_permissions['media_view'] == 1 OR $system_permissions['media_upload'] == 1 OR $system_permissions['media_rename'] == 1 OR $system_permissions['media_delete'] == 1 OR $system_permissions['media_create'] == 1) {
+		$system_permissions['media'] = 1;
+	} else {
+		$system_permissions['media'] = '';
+	}
+	// Add-ons
+		// Modules
+		$system_permissions['modules_view'] = $admin->get_post('modules_view');
+		$system_permissions['modules_install'] = $admin->get_post('modules_install');
+		$system_permissions['modules_uninstall'] = $admin->get_post('modules_uninstall');
+		if($system_permissions['modules_view'] == 1 OR $system_permissions['modules_install'] == 1 OR $system_permissions['modules_uninstall'] == 1) {
+			$system_permissions['modules'] = 1;
+		} else {
+			$system_permissions['modules'] = '';
+		}
+		// Templates
+		$system_permissions['templates_view'] = $admin->get_post('templates_view');
+		$system_permissions['templates_install'] = $admin->get_post('templates_install');
+		$system_permissions['templates_uninstall'] = $admin->get_post('templates_uninstall');
+		if($system_permissions['templates_view'] == 1 OR $system_permissions['templates_install'] == 1 OR $system_permissions['templates_uninstall'] == 1) {
+			$system_permissions['templates'] = 1;
+		} else {
+			$system_permissions['templates'] = '';
+		}
+		// Languages
+		$system_permissions['languages_view'] = $admin->get_post('languages_view');
+		$system_permissions['languages_install'] = $admin->get_post('languages_install');
+		$system_permissions['languages_uninstall'] = $admin->get_post('languages_uninstall');
+		if($system_permissions['languages_install'] == 1 OR $system_permissions['languages_uninstall'] == 1) {
+			$system_permissions['languages'] = 1;
+		} else {
+			$system_permissions['languages'] = '';
+		}
+		// Admintools
+		$system_permissions['admintools_settings'] = $admin->get_post('admintools_settings');
+		if($system_permissions['admintools_settings'] == 1) {
+			$system_permissions['admintools'] = 1;
+		} else {
+			$system_permissions['admintools'] = '';
+		}
+	if($system_permissions['modules'] == 1 OR $system_permissions['templates'] == 1 OR $system_permissions['languages'] == 1) {
+		$system_permissions['addons'] = 1;
+	} else {
+		$system_permissions['addons'] = '';
+	}
+	// Settings
+	$system_permissions['settings_basic'] = $admin->get_post('settings_basic');
+	$system_permissions['settings_advanced'] = $admin->get_post('settings_advanced');
+	if($system_permissions['settings_basic'] == 1 OR $system_permissions['settings_advanced'] == 1) {
+		$system_permissions['settings'] = 1;
+	} else {
+		$system_permissions['settings'] = '';
+	}
+	// Access
+		// Users
+		$system_permissions['users_view'] = $admin->get_post('users_view');
+		$system_permissions['users_add'] = $admin->get_post('users_add');
+		$system_permissions['users_modify'] = $admin->get_post('users_modify');
+		$system_permissions['users_delete'] = $admin->get_post('users_delete');
+		if($system_permissions['users_view'] == 1 OR $system_permissions['users_add'] == 1 OR $system_permissions['users_modify'] == 1 OR $system_permissions['users_delete'] == 1) {
+			$system_permissions['users'] = 1;
+		} else {
+			$system_permissions['users'] = '';
+		}
+		// Groups
+		$system_permissions['groups_view'] = $admin->get_post('groups_view');
+		$system_permissions['groups_add'] = $admin->get_post('groups_add');
+		$system_permissions['groups_modify'] = $admin->get_post('groups_modify');
+		$system_permissions['groups_delete'] = $admin->get_post('groups_delete');
+		if($system_permissions['groups_view'] == 1 OR $system_permissions['groups_add'] == 1 OR $system_permissions['groups_modify'] == 1 OR $system_permissions['groups_delete'] == 1) {
+			$system_permissions['groups'] = 1;
+		} else {
+			$system_permissions['groups'] = '';
+		}
+	if($system_permissions['users'] == 1 OR $system_permissions['groups'] == 1) {
+		$system_permissions['access'] = 1;
+	} else {
+		$system_permissions['access'] = '';
+	}
+}
+
+// Implode system permissions
+$imploded_system_permissions = '';
+foreach($system_permissions AS $name => $value) {
+	if($value == true) {
+		if($imploded_system_permissions == '') {
+			$imploded_system_permissions = $name;
+		} else {
+			$imploded_system_permissions .= ','.$name;
+		}
+	}
+}
+
+$system_permissions = $imploded_system_permissions;
+
+// Get module permissions
+$module_permissions = '';
+if($handle = opendir(WB_PATH.'/modules/')) {
+	while (false !== ($file = readdir($handle))) {
+		if($file != "." AND $file != ".." AND $file != ".svn" AND is_dir(WB_PATH."/modules/$file") AND file_exists(WB_PATH."/modules/$file/info.php")) {
+			// Include the modules info file
+			require(WB_PATH.'/modules/'.$file.'/info.php');
+			// Check if it was selected to be used or not
+			$count = 0;
+			if(is_array($admin->get_post('module_permissions'))) {
+				foreach($admin->get_post('module_permissions') AS $selected_name) {
+					if($file == $selected_name) {
+						$count = $count+1;
+					}
+				}
+			}
+			if($count == 0) {
+				// Add unselected modules to list
+				if($module_permissions == '') {
+					$module_permissions = $file;
+				} else {
+					$module_permissions .= ','.$file;
+				}
+			}
+		}
+	}
+}
+
+// Get template permissions
+$template_permissions = '';
+if($handle = opendir(WB_PATH.'/templates/')) {
+	while (false !== ($file = readdir($handle))) {
+		if($file != "." AND $file != ".." AND $file != ".svn" AND is_dir(WB_PATH."/templates/$file") AND file_exists(WB_PATH."/templates/$file/info.php")) {
+			// Include the modules info file
+			require(WB_PATH.'/templates/'.$file.'/info.php');
+			// Check if it was selected to be used or not
+			$count = 0;
+			if(is_array($admin->get_post('template_permissions'))) {
+				foreach($admin->get_post('template_permissions') AS $selected_name) {
+					if($file == $selected_name) {
+						$count = $count+1;
+					}
+				}
+			}
+			if($count == 0) {
+				// Add unselected modules to list
+				if($template_permissions == '') {
+					$template_permissions = $file;
+				} else {
+					$template_permissions .= ','.$file;
+				}
+			}
+		}
+	}
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/groups/get_permissions.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/groups/groups.php
===================================================================
--- tags/2.8.3/wb/admin/groups/groups.php	(nonexistent)
+++ tags/2.8.3/wb/admin/groups/groups.php	(revision 1610)
@@ -0,0 +1,199 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         groups
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include config file and admin class file
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// Set parameter 'action' as alternative to javascript mechanism
+$action = 'cancel';
+// Set parameter 'action' as alternative to javascript mechanism
+$action = (isset($_POST['action']) && ($_POST['action'] ='modify')   ? 'modify' : $action );
+$action = (isset($_POST['modify']) ? 'modify' : $action );
+$action = (isset($_POST['delete']) ? 'delete' : $action );
+
+switch ($action):
+	case 'modify' :
+
+			// Create new admin object
+			$admin = new admin('Access', 'groups_modify' );
+			// Check if group group_id is a valid number and doesnt equal 1
+			$group_id = intval($admin->checkIDKEY('group_id', 0, $_SERVER['REQUEST_METHOD']));
+            if($group_id == 0){
+				$admin->print_error($MESSAGE['USERS_NO_GROUP'] );
+            }
+			if( ($group_id < 2 ) )
+			{
+				// if($admin_header) { $admin->print_header(); }
+				$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+			}
+
+			// Get existing values
+			$results = $database->query("SELECT * FROM ".TABLE_PREFIX."groups WHERE group_id = '".$group_id."'");
+			$group = $results->fetchRow();
+			// Setup template object, parse vars to it, then parse it
+			$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('groups_form.htt'));
+			// Create new template object
+			$template = new Template($ThemePath);
+			// $template->debug = true;
+			$template->set_file('page', 'groups_form.htt');
+			$template->set_block('page', 'main_block', 'main');
+			$template->set_var(	array(
+									'ACTION_URL' => ADMIN_URL.'/groups/save.php',
+									'SUBMIT_TITLE' => $TEXT['SAVE'],
+									'GROUP_ID' => $admin->getIDKEY($group['group_id']),
+									'GROUP_NAME' => $group['name'],
+									'ADVANCED_LINK' => 'groups.php',
+									'FTAN' => $admin->getFTAN()
+								));
+			// Tell the browser whether or not to show advanced options
+			if( true == (isset( $_POST['advanced']) AND ( strpos( $_POST['advanced'], ">>") > 0 ) ) ) {
+				$template->set_var('DISPLAY_ADVANCED', '');
+				$template->set_var('DISPLAY_BASIC', 'display:none;');
+				$template->set_var('ADVANCED', 'yes');
+				$template->set_var('ADVANCED_BUTTON', '&lt;&lt; '.$TEXT['HIDE_ADVANCED']);
+			} else {
+				$template->set_var('DISPLAY_ADVANCED', 'display:none;');
+				$template->set_var('DISPLAY_BASIC', '');
+				$template->set_var('ADVANCED', 'no');
+				$template->set_var('ADVANCED_BUTTON', $TEXT['SHOW_ADVANCED'].'  &gt;&gt;');
+			}
+
+			// Explode system permissions
+			$system_permissions = explode(',', $group['system_permissions']);
+			// Check system permissions boxes
+			foreach($system_permissions AS $name) {
+					$template->set_var($name.'_checked', ' checked="checked"');
+			}
+			// Explode module permissions
+			$module_permissions = explode(',', $group['module_permissions']);
+			// Explode template permissions
+			$template_permissions = explode(',', $group['template_permissions']);
+
+			// Insert values into module list
+			$template->set_block('main_block', 'module_list_block', 'module_list');
+			$result = $database->query('SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "module" AND `function` = "page" ORDER BY `name`');
+			if($result->numRows() > 0) {
+				while($addon = $result->fetchRow()) {
+					$template->set_var('VALUE', $addon['directory']);
+					$template->set_var('NAME', $addon['name']);
+					if(!is_numeric(array_search($addon['directory'], $module_permissions))) {
+						$template->set_var('CHECKED', ' checked="checked"');
+					} else {
+						$template->set_var('CHECKED', '');
+					}
+					$template->parse('module_list', 'module_list_block', true);
+				}
+			}
+
+			// Insert values into template list
+			$template->set_block('main_block', 'template_list_block', 'template_list');
+			$result = $database->query('SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "template" ORDER BY `name`');
+			if($result->numRows() > 0) {
+				while($addon = $result->fetchRow()) {
+					$template->set_var('VALUE', $addon['directory']);
+					$template->set_var('NAME', $addon['name']);
+					if(!is_numeric(array_search($addon['directory'], $template_permissions))) {
+						$template->set_var('CHECKED', ' checked="checked"');
+					} else {
+						$template->set_var('CHECKED', '');
+					}
+					$template->parse('template_list', 'template_list_block', true);
+				}
+			}
+
+			// Insert language text and messages
+			$template->set_var(array(
+						'TEXT_RESET' => $TEXT['RESET'],
+						'TEXT_ACTIVE' => $TEXT['ACTIVE'],
+						'TEXT_DISABLED' => $TEXT['DISABLED'],
+						'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+						'TEXT_USERNAME' => $TEXT['USERNAME'],
+						'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+						'TEXT_RETYPE_PASSWORD' => $TEXT['RETYPE_PASSWORD'],
+						'TEXT_DISPLAY_NAME' => $TEXT['DISPLAY_NAME'],
+						'TEXT_EMAIL' => $TEXT['EMAIL'],
+						'TEXT_GROUP' => $TEXT['GROUP'],
+						'TEXT_SYSTEM_PERMISSIONS' => $TEXT['SYSTEM_PERMISSIONS'],
+						'TEXT_MODULE_PERMISSIONS' => $TEXT['MODULE_PERMISSIONS'],
+						'TEXT_TEMPLATE_PERMISSIONS' => $TEXT['TEMPLATE_PERMISSIONS'],
+						'TEXT_NAME' => $TEXT['NAME'],
+						'SECTION_PAGES' => $MENU['PAGES'],
+						'SECTION_MEDIA' => $MENU['MEDIA'],
+						'SECTION_MODULES' => $MENU['MODULES'],
+						'SECTION_TEMPLATES' => $MENU['TEMPLATES'],
+						'SECTION_LANGUAGES' => $MENU['LANGUAGES'],
+						'SECTION_SETTINGS' => $MENU['SETTINGS'],
+						'SECTION_USERS' => $MENU['USERS'],
+						'SECTION_GROUPS' => $MENU['GROUPS'],
+						'SECTION_ADMINTOOLS' => $MENU['ADMINTOOLS'],
+						'TEXT_VIEW' => $TEXT['VIEW'],
+						'TEXT_ADD' => $TEXT['ADD'],
+						'TEXT_LEVEL' => $TEXT['LEVEL'],
+						'TEXT_MODIFY' => $TEXT['MODIFY'],
+						'TEXT_DELETE' => $TEXT['DELETE'],
+						'TEXT_MODIFY_CONTENT' => $TEXT['MODIFY_CONTENT'],
+						'TEXT_MODIFY_SETTINGS' => $TEXT['MODIFY_SETTINGS'],
+						'HEADING_MODIFY_INTRO_PAGE' => $HEADING['MODIFY_INTRO_PAGE'],
+						'TEXT_CREATE_FOLDER' => $TEXT['CREATE_FOLDER'],
+						'TEXT_RENAME' => $TEXT['RENAME'],
+						'TEXT_UPLOAD_FILES' => $TEXT['UPLOAD_FILES'],
+						'TEXT_BASIC' => $TEXT['BASIC'],
+						'TEXT_ADVANCED' => $TEXT['ADVANCED'],
+						'CHANGING_PASSWORD' => $MESSAGE['USERS']['CHANGING_PASSWORD'],
+						'HEADING_MODIFY_GROUP' => $HEADING['MODIFY_GROUP'],
+					));
+
+			// Parse template object
+			$template->parse('main', 'main_block', false);
+			$template->pparse('output', 'page');
+			// Print admin footer
+			$admin->print_footer();			break;
+		case 'delete' :
+			// Create new admin object
+			$admin = new admin('Access', 'groups_delete');
+			$group_id = intval($admin->checkIDKEY('group_id', 0, $_SERVER['REQUEST_METHOD']));
+            if($group_id == 0){
+				$admin->print_error($MESSAGE['USERS_NO_GROUP'] );
+            }
+			// Check if user id is a valid number and doesnt equal 1
+			if( ($group_id < 2 ) )
+			{
+				// if($admin_header) { $admin->print_header(); }
+				$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+			}
+			// Print header
+			$admin->print_header();
+			// Delete the group
+			$database->query("DELETE FROM `".TABLE_PREFIX."groups` WHERE `group_id` = '".$group_id."' LIMIT 1");
+			if($database->is_error()) {
+				$admin->print_error($database->get_error());
+			} else {
+				// Delete users in the group
+				$database->query("DELETE FROM `".TABLE_PREFIX."users` WHERE `group_id` = '".$group_id."'");
+				if($database->is_error()) {
+					$admin->print_error($database->get_error());
+				} else {
+					$admin->print_success($MESSAGE['GROUPS']['DELETED']);
+				}
+			}
+			// Print admin footer
+			$admin->print_footer();
+			break;
+	default:
+			break;
+endswitch;

Property changes on: tags/2.8.3/wb/admin/groups/groups.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/groups/index.php
===================================================================
--- tags/2.8.3/wb/admin/groups/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/groups/index.php	(revision 1610)
@@ -0,0 +1,202 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         groups
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Access', 'groups');
+$ftan = $admin->getFTAN();
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('groups.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'groups.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_block('main_block', 'manage_users_block', 'users');
+// insert urls
+$template->set_var(array(
+	'ADMIN_URL' => ADMIN_URL,
+	'WB_URL' => WB_URL,
+	'THEME_URL' => THEME_URL,
+	'FTAN' => $ftan
+	)
+);
+
+// Get existing value from database
+// $database = new database();
+$query = "SELECT group_id,name FROM ".TABLE_PREFIX."groups WHERE group_id != '1'";
+$results = $database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), 'index.php');
+}
+
+// Insert values into the modify/remove menu
+$template->set_block('main_block', 'list_block', 'list');
+if($results->numRows() > 0) {
+	// Insert first value to say please select
+	$template->set_var('VALUE', '');
+	$template->set_var('NAME', $TEXT['PLEASE_SELECT'].'...');
+	$template->parse('list', 'list_block', true);
+	// Loop through groups
+	while($group = $results->fetchRow()) {
+		$template->set_var('VALUE',$admin->getIDKEY($group['group_id']));
+		$template->set_var('NAME', $group['name']);
+		$template->parse('list', 'list_block', true);
+	}
+} else {
+	// Insert single value to say no groups were found
+	$template->set_var('NAME', $TEXT['NONE_FOUND']);
+	$template->parse('list', 'list_block', true);
+}
+
+// Insert permissions values
+if($admin->get_permission('groups_add') != true) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+}
+if($admin->get_permission('groups_modify') != true) {
+	$template->set_var('DISPLAY_MODIFY', 'hide');
+}
+if($admin->get_permission('groups_delete') != true) {
+	$template->set_var('DISPLAY_DELETE', 'hide');
+}
+
+// Insert language headings
+$template->set_var(array(
+	'HEADING_MODIFY_DELETE_GROUP' => $HEADING['MODIFY_DELETE_GROUP'],
+	'HEADING_ADD_GROUP' => $HEADING['ADD_GROUP']
+	)
+);
+// Insert language text and messages
+$template->set_var(array(
+	'TEXT_MODIFY' => $TEXT['MODIFY'],
+	'TEXT_DELETE' => $TEXT['DELETE'],
+	'TEXT_MANAGE_USERS' => ( $admin->get_permission('users') == true ) ? $TEXT['MANAGE_USERS']: "",
+	'CONFIRM_DELETE' => $MESSAGE['GROUPS']['CONFIRM_DELETE']
+	)
+);
+if ( $admin->get_permission('users') == true ) $template->parse("users", "manage_users_block", true);
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('groups_form.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'groups_form.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('DISPLAY_EXTRA', 'display:none;');
+$template->set_var('ACTION_URL', ADMIN_URL.'/groups/add.php');
+$template->set_var('SUBMIT_TITLE', $TEXT['ADD']);
+$template->set_var('ADVANCED_LINK', 'index.php');
+
+// Tell the browser whether or not to show advanced options
+if ( true == (isset( $_POST['advanced']) AND ( strpos( $_POST['advanced'], ">>") > 0 ) ) ) {
+	$template->set_var('DISPLAY_ADVANCED', '');
+	$template->set_var('DISPLAY_BASIC', 'display:none;');
+	$template->set_var('ADVANCED', 'yes');
+	$template->set_var('ADVANCED_BUTTON', '<< '.$TEXT['HIDE_ADVANCED']);
+} else {
+	$template->set_var('DISPLAY_ADVANCED', 'display:none;');
+	$template->set_var('DISPLAY_BASIC', '');
+	$template->set_var('ADVANCED', 'no');
+	$template->set_var('ADVANCED_BUTTON', $TEXT['SHOW_ADVANCED'].' >>');
+}
+
+// Insert permissions values
+if($admin->get_permission('groups_add') != true) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+}
+
+// Insert values into module list
+$template->set_block('main_block', 'module_list_block', 'module_list');
+$result = $database->query('SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "module" AND `function` = "page" ORDER BY `name`');
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		$template->set_var('VALUE', $addon['directory']);
+		$template->set_var('NAME', $addon['name']);
+		$template->parse('module_list', 'module_list_block', true);
+	}
+}
+
+// Insert values into template list
+$template->set_block('main_block', 'template_list_block', 'template_list');
+$result = $database->query('SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "template" ORDER BY `name`');
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		$template->set_var('VALUE', $addon['directory']);
+		$template->set_var('NAME', $addon['name']);
+		$template->parse('template_list', 'template_list_block', true);
+	}
+}
+
+// Insert language text and messages
+$template->set_var(array(
+								'TEXT_RESET' => $TEXT['RESET'],
+								'TEXT_ACTIVE' => $TEXT['ACTIVE'],
+								'TEXT_DISABLED' => $TEXT['DISABLED'],
+								'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+								'TEXT_USERNAME' => $TEXT['USERNAME'],
+								'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+								'TEXT_RETYPE_PASSWORD' => $TEXT['RETYPE_PASSWORD'],
+								'TEXT_DISPLAY_NAME' => $TEXT['DISPLAY_NAME'],
+								'TEXT_EMAIL' => $TEXT['EMAIL'],
+								'TEXT_GROUP' => $TEXT['GROUP'],
+								'TEXT_SYSTEM_PERMISSIONS' => $TEXT['SYSTEM_PERMISSIONS'],
+								'TEXT_MODULE_PERMISSIONS' => $TEXT['MODULE_PERMISSIONS'],
+								'TEXT_TEMPLATE_PERMISSIONS' => $TEXT['TEMPLATE_PERMISSIONS'],
+								'TEXT_NAME' => $TEXT['NAME'],
+								'SECTION_PAGES' => $MENU['PAGES'],
+								'SECTION_MEDIA' => $MENU['MEDIA'],
+								'SECTION_MODULES' => $MENU['MODULES'],
+								'SECTION_TEMPLATES' => $MENU['TEMPLATES'],
+								'SECTION_SETTINGS' => $MENU['SETTINGS'],
+								'SECTION_LANGUAGES' => $MENU['LANGUAGES'],
+								'SECTION_USERS' => $MENU['USERS'],
+								'SECTION_GROUPS' => $MENU['GROUPS'],
+								'SECTION_ADMINTOOLS' => $MENU['ADMINTOOLS'],
+								'TEXT_VIEW' => $TEXT['VIEW'],
+								'TEXT_ADD' => $TEXT['ADD'],
+								'TEXT_LEVEL' => $TEXT['LEVEL'],
+								'TEXT_MODIFY' => $TEXT['MODIFY'],
+								'TEXT_DELETE' => $TEXT['DELETE'],
+								'TEXT_MODIFY_CONTENT' => $TEXT['MODIFY_CONTENT'],
+								'TEXT_MODIFY_SETTINGS' => $TEXT['MODIFY_SETTINGS'],
+								'HEADING_MODIFY_INTRO_PAGE' => $HEADING['MODIFY_INTRO_PAGE'],
+								'TEXT_CREATE_FOLDER' => $TEXT['CREATE_FOLDER'],
+								'TEXT_RENAME' => $TEXT['RENAME'],
+								'TEXT_UPLOAD_FILES' => $TEXT['UPLOAD_FILES'],
+								'TEXT_BASIC' => $TEXT['BASIC'],
+								'TEXT_ADVANCED' => $TEXT['ADVANCED'],
+								'CHANGING_PASSWORD' => $MESSAGE['USERS']['CHANGING_PASSWORD'],
+								'CHECKED' => ' checked="checked"',
+								'ADMIN_URL' => ADMIN_URL,
+								'WB_URL' => WB_URL,
+								'THEME_URL' => THEME_URL,
+								'FTAN' => $ftan
+								)
+						);
+
+// Parse template for add group form
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print the admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/groups/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/groups/save.php
===================================================================
--- tags/2.8.3/wb/admin/groups/save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/groups/save.php	(revision 1610)
@@ -0,0 +1,66 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         groups
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Access', 'groups_modify', false);
+// Create a javascript back link
+$js_back = ADMIN_URL.'/groups/index.php';
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back);
+}
+
+// Check if group group_id is a valid number and doesnt equal 1
+$group_id = intval($admin->checkIDKEY('group_id', 0, $_SERVER['REQUEST_METHOD']));
+if( ($group_id < 2 ) )
+{
+	// if($admin_header) { $admin->print_header(); }
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+}
+
+// Gather details entered
+$group_name = $admin->get_post_escaped('group_name');
+
+// Check values
+if($group_name == "") {
+	$admin->print_error($MESSAGE['GROUPS']['GROUP_NAME_BLANK'], $js_back);
+}
+// After check print the header
+$admin->print_header();
+
+// Get system permissions
+require_once(ADMIN_PATH.'/groups/get_permissions.php');
+
+// Update the database
+$query = "UPDATE `".TABLE_PREFIX."groups` SET `name` = '$group_name', `system_permissions` = '$system_permissions', `module_permissions` = '$module_permissions', `template_permissions` = '$template_permissions' WHERE `group_id` = '$group_id'";
+
+$database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['GROUPS']['SAVED'], ADMIN_URL.'/groups/index.php');
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/groups/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/groups/add.php
===================================================================
--- tags/2.8.3/wb/admin/groups/add.php	(nonexistent)
+++ tags/2.8.3/wb/admin/groups/add.php	(revision 1610)
@@ -0,0 +1,62 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         groups
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Access', 'groups_add', false);
+// Create a javascript back link
+$js_back = ADMIN_URL.'/groups/index.php';
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back);
+}
+// After check print the header
+$admin->print_header();
+
+// Gather details entered
+$group_name = mysql_real_escape_string(strip_tags(trim($admin->get_post('group_name'))));
+
+// Check values
+if($group_name == "") {
+	$admin->print_error($MESSAGE['GROUPS']['GROUP_NAME_BLANK'], $js_back);
+}
+$results = $database->query("SELECT * FROM ".TABLE_PREFIX."groups WHERE name = '$group_name'");  
+if($results->numRows()>0) {
+	$admin->print_error($MESSAGE['GROUPS']['GROUP_NAME_EXISTS'], $js_back);  
+}
+
+// Get system and module permissions
+require(ADMIN_PATH.'/groups/get_permissions.php');
+
+// Update the database
+$query = "INSERT INTO ".TABLE_PREFIX."groups (name,system_permissions,module_permissions,template_permissions) VALUES ('$group_name','$system_permissions','$module_permissions','$template_permissions')";
+
+$database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['GROUPS']['ADDED'], ADMIN_URL.'/groups/index.php');
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/groups/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/index.php
===================================================================
--- tags/2.8.3/wb/admin/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/index.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include config file
+if(!defined('WB_URL')) {
+	require('../config.php');
+}
+
+// Check if the config file has been set-up
+if(!defined('WB_PATH')) {
+	header("Location: ../install/index.php");
+} else {
+	header('Location: '.ADMIN_URL.'/start/index.php');
+}

Property changes on: tags/2.8.3/wb/admin/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/templates/details.php
===================================================================
--- tags/2.8.3/wb/admin/templates/details.php	(nonexistent)
+++ tags/2.8.3/wb/admin/templates/details.php	(revision 1610)
@@ -0,0 +1,113 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         templates
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include the config file
+require('../../config.php');
+require_once(WB_PATH .'/framework/functions.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Addons', 'templates_view', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+
+// Get template name
+if(!isset($_POST['file']) OR $_POST['file'] == "") {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$file = preg_replace('/[^a-z0-9_-]/i', "", $_POST['file']);  // fix secunia 2010-92-2
+}
+
+// Check if the template exists
+if(!file_exists(WB_PATH.'/templates/'.$file)) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Print admin header
+$admin = new admin('Addons', 'templates_view');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('templates_details.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'templates_details.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('FTAN', $admin->getFTAN());
+
+// Insert values
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template' AND directory = '$file'");
+if($result->numRows() > 0) {
+	$row = $result->fetchRow();
+}
+
+// check if a template description exists for the displayed backend language
+$tool_description = false;
+if(function_exists('file_get_contents') && file_exists(WB_PATH.'/templates/'.$file.'/languages/'.LANGUAGE .'.php')) {
+	// read contents of the template language file into string
+	$data = @file_get_contents(WB_PATH .'/templates/' .$file .'/languages/' .LANGUAGE .'.php');
+	// use regular expressions to fetch the content of the variable from the string
+	$tool_description = get_variable_content('template_description', $data, false, false);
+	// replace optional placeholder {WB_URL} with value stored in config.php
+	if($tool_description !== false && strlen(trim($tool_description)) != 0) {
+		$tool_description = str_replace('{WB_URL}', WB_URL, $tool_description);
+	} else {
+		$tool_description = false;
+	}
+}
+if($tool_description !== false) {
+	// Override the template-description with correct desription in users language
+	$row['description'] = $tool_description;
+}	
+
+$template->set_var(array(
+								'NAME' => $row['name'],
+								'AUTHOR' => $row['author'],
+								'DESCRIPTION' => $row['description'],
+								'VERSION' => $row['version'],
+								'DESIGNED_FOR' => $row['platform']
+								)
+						);
+
+// Insert language headings
+$template->set_var(array(
+								'HEADING_TEMPLATE_DETAILS' => $HEADING['TEMPLATE_DETAILS']
+								)
+						);
+// Insert language text and messages
+$template->set_var(array(
+								'TEXT_NAME' => $TEXT['NAME'],
+								'TEXT_AUTHOR' => $TEXT['AUTHOR'],
+								'TEXT_VERSION' => $TEXT['VERSION'],
+								'TEXT_DESIGNED_FOR' => $TEXT['DESIGNED_FOR'],
+								'TEXT_DESCRIPTION' => $TEXT['DESCRIPTION'],
+								'TEXT_BACK' => $TEXT['BACK']
+								)
+						);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/templates/details.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/templates/index.php
===================================================================
--- tags/2.8.3/wb/admin/templates/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/templates/index.php	(revision 1610)
@@ -0,0 +1,89 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         templates
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'templates');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('templates.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'templates.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('FTAN', $admin->getFTAN());
+
+// Insert values into template list
+$template->set_block('main_block', 'template_list_block', 'template_list');
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'template' order by name");
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		$template->set_var('VALUE', $addon['directory']);
+		$template->set_var('NAME', $addon['name']);
+		$template->parse('template_list', 'template_list_block', true);
+	}
+}
+
+// Insert permissions values
+if($admin->get_permission('templates_install') != true) {
+	$template->set_var('DISPLAY_INSTALL', 'hide');
+}
+if($admin->get_permission('templates_uninstall') != true) {
+	$template->set_var('DISPLAY_UNINSTALL', 'hide');
+}
+if($admin->get_permission('templates_view') != true) {
+	$template->set_var('DISPLAY_LIST', 'hide');
+}
+
+// Insert language headings
+$template->set_var(array(
+					'HEADING_INSTALL_TEMPLATE' => $HEADING['INSTALL_TEMPLATE'],
+					'HEADING_UNINSTALL_TEMPLATE' => $HEADING['UNINSTALL_TEMPLATE'],
+					'HEADING_TEMPLATE_DETAILS' => $HEADING['TEMPLATE_DETAILS']
+				)
+			);
+// insert urls
+$template->set_var(array(
+					'ADMIN_URL' => ADMIN_URL,
+					'WB_URL' => WB_URL,
+					'THEME_URL' => THEME_URL,
+					'FTAN' => $admin->getFTAN()
+				)
+			);
+// Insert language text and messages
+$template->set_var(array(
+	'URL_MODULES' => $admin->get_permission('modules') ? 
+		'<a href="' . ADMIN_URL . '/modules/index.php">' . $MENU['MODULES'] . '</a>' : '',
+	'URL_LANGUAGES' => $admin->get_permission('languages') ?
+		'<a href="' . ADMIN_URL . '/languages/index.php">' . $MENU['LANGUAGES'] . '</a>' : '',
+	'URL_ADVANCED' => '&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;',
+	'TEXT_INSTALL' => $TEXT['INSTALL'],
+	'TEXT_UNINSTALL' => $TEXT['UNINSTALL'],
+	'TEXT_VIEW_DETAILS' => $TEXT['VIEW_DETAILS'],
+	'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+	'CHANGE_TEMPLATE_NOTICE' => $MESSAGE['TEMPLATES']['CHANGE_TEMPLATE_NOTICE']
+	)
+);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/templates/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/templates/uninstall.php
===================================================================
--- tags/2.8.3/wb/admin/templates/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/admin/templates/uninstall.php	(revision 1610)
@@ -0,0 +1,153 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         templates
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Addons', 'templates_uninstall', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user selected template
+if(!isset($_POST['file']) OR $_POST['file'] == "") {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$file = $_POST['file'];
+}
+
+// Extra protection
+if(trim($file) == '') {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Check if the template exists
+if(!is_dir(WB_PATH.'/templates/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['NOT_INSTALLED']);
+}
+
+if (!function_exists("replace_all")) {
+	function replace_all ($aStr = "", &$aArray ) {
+		foreach($aArray as $k=>$v) $aStr = str_replace("{{".$k."}}", $v, $aStr);
+		return $aStr;
+	}
+}
+
+/**
+*	Check if the template is the standard-template or still in use
+*/
+if (!array_key_exists('CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE', $MESSAGE['GENERIC'] ) )
+	$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = "Can't uninstall this template <b>{{name}}</b> because it's the standardtemplate!";
+
+// check whether the template is used as default wb theme
+if($file == DEFAULT_THEME) {
+	$temp = array ('name' => $file );
+	$msg = replace_all( $MESSAGE['GENERIC']['CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'], $temp );
+	$admin->print_error( $msg );
+}
+
+if ($file == DEFAULT_TEMPLATE) {
+	$temp = array ('name' => $file );
+	$msg = replace_all( $MESSAGE['GENERIC']['CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'], $temp );
+	$admin->print_error( $msg );
+
+} else {
+	
+	/**
+	*	Check if the template is still in use by a page ...
+	*/
+	$info = $database->query("SELECT page_id, page_title FROM ".TABLE_PREFIX."pages WHERE template='".$file."' order by page_title");
+	
+	if ($info->numRows() > 0) {
+		/**
+		*	Template is still in use, so we're collecting the page-titles
+		*/
+		
+		/**
+		*	The base-message template-string for the top of the message
+		*/
+		if (!array_key_exists("CANNOT_UNINSTALL_IN_USE_TMPL", $MESSAGE['GENERIC'])) {
+			$add = $info->numRows() == 1 ? "this page" : "these pages";
+			$msg_template_str  = "<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled because it is still in use by {{pages}}";
+			$msg_template_str .= ":<br /><i>click for editing.</i><br /><br />";
+		} else {
+			$msg_template_str = $MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL'];
+			$temp = explode(";",$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL_PAGES']);
+			$add = $info->numRows() == 1 ? $temp[0] : $temp[1];
+		}
+		/**
+		*	The template-string for displaying the Page-Titles ... in this case as a link
+		*/
+		$page_template_str = "- <b><a href='../pages/settings.php?page_id={{id}}'>{{title}}</a></b><br />";
+		
+		$values = array ('type' => 'Template', 'type_name' => $file, 'pages' => $add);
+		$msg = replace_all ( $msg_template_str,  $values );
+		
+		$page_names = "";
+		
+		while ($data = $info->fetchRow() ) {
+			
+			$page_info = array(
+				'id'	=> $data['page_id'], 
+				'title' => $data['page_title']
+			);
+			
+			$page_names .= replace_all ( $page_template_str, $page_info );
+		}
+		
+		/**
+		*	Printing out the error-message and die().
+		*/
+		$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE'].$msg.$page_names);
+	}
+}
+
+// Check if we have permissions on the directory
+if(!is_writable(WB_PATH.'/templates/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL'].WB_PATH.'/templates/'.$file);
+}
+
+// Try to delete the template dir
+if(!rm_full_dir(WB_PATH.'/templates/'.$file)) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$file."' AND type = 'template'");
+}
+
+// Update pages that use this template with default template
+// $database = new database();
+$database->query("UPDATE ".TABLE_PREFIX."pages SET template = '".DEFAULT_TEMPLATE."' WHERE template = '$file'");
+
+// Print success message
+$admin->print_success($MESSAGE['GENERIC']['UNINSTALLED']);
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/templates/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/templates/install.php
===================================================================
--- tags/2.8.3/wb/admin/templates/install.php	(nonexistent)
+++ tags/2.8.3/wb/admin/templates/install.php	(revision 1610)
@@ -0,0 +1,146 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         templates
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// do not display notices and warnings during installation
+error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Addons', 'templates_install', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user uploaded a file
+if(!isset($_FILES['userfile'])) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Set temp vars
+$temp_dir = WB_PATH.'/temp/';
+$temp_file = $temp_dir . $_FILES['userfile']['name'];
+$temp_unzip = WB_PATH.'/temp/unzip/';
+
+// Try to upload the file to the temp dir
+if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $temp_file)) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UPLOAD']);
+}
+
+// Include the PclZip class file (thanks to 
+require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
+
+// Remove any vars with name "template_directory" and "theme_directory"
+unset($template_directory);
+unset($theme_directory);
+
+// Setup the PclZip object
+$archive = new PclZip($temp_file);
+// Unzip the files to the temp unzip folder
+$list = $archive->extract(PCLZIP_OPT_PATH, $temp_unzip);
+
+// Check if uploaded file is a valid Add-On zip file
+if (!($list && file_exists($temp_unzip . 'index.php'))) $admin->print_error($MESSAGE['GENERIC']['INVALID_ADDON_FILE']);
+
+// Include the templates info file
+require($temp_unzip.'info.php');
+
+// Perform Add-on requirement checks before proceeding
+require(WB_PATH . '/framework/addon.precheck.inc.php');
+preCheckAddon($temp_file);
+
+// Delete the temp unzip directory
+rm_full_dir($temp_unzip);
+
+// Check if the file is valid
+if(!isset($template_directory)) {
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['GENERIC']['INVALID']);
+}
+
+// Check if this module is already installed
+// and compare versions if so
+$new_template_version=$template_version;
+if(is_dir(WB_PATH.'/templates/'.$template_directory)) {
+	if(file_exists(WB_PATH.'/templates/'.$template_directory.'/info.php')) {
+		require(WB_PATH.'/templates/'.$template_directory.'/info.php');
+		// Version to be installed is older than currently installed version
+		if (versionCompare($template_version, $new_template_version, '>=')) {
+			if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+			$admin->print_error($MESSAGE['GENERIC']['ALREADY_INSTALLED']);
+		}
+	} 
+	$success_message=$MESSAGE['GENERIC']['UPGRADED'];
+} else {
+	$success_message=$MESSAGE['GENERIC']['INSTALLED'];
+}
+
+// Check if template dir is writable
+if(!is_writable(WB_PATH.'/templates/')) {
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['TEMPLATES']['BAD_PERMISSIONS']);
+}
+
+// Set template dir
+$template_dir = WB_PATH.'/templates/'.$template_directory;
+
+// Make sure the template dir exists, and chmod if needed
+if(!file_exists($template_dir)) {
+	make_dir($template_dir);
+} else {
+	change_mode($template_dir, 'dir');
+}
+
+// Unzip template to the template dir
+$list = $archive->extract(PCLZIP_OPT_PATH, $template_dir, PCLZIP_OPT_REPLACE_NEWER);
+if(!$list) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNZIP']);
+}
+
+// Delete the temp zip file
+if(file_exists($temp_file)) { unlink($temp_file); }
+
+// Chmod all the uploaded files
+$dir = dir($template_dir);
+while(false !== $entry = $dir->read()) {
+	// Skip pointers
+	if(substr($entry, 0, 1) != '.' AND $entry != '.svn' AND !is_dir($template_dir.'/'.$entry)) {
+		// Chmod file
+		change_mode($template_dir.'/'.$entry);
+	}
+}
+
+// Load template info into DB
+load_template($template_dir);
+
+// Print success message
+$admin->print_success($success_message);
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/templates/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/users/users.php
===================================================================
--- tags/2.8.3/wb/admin/users/users.php	(nonexistent)
+++ tags/2.8.3/wb/admin/users/users.php	(revision 1610)
@@ -0,0 +1,213 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         users
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+ // Include config file and admin class file
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+$action = 'cancel';
+// Set parameter 'action' as alternative to javascript mechanism
+$action = (isset($_POST['modify']) ? 'modify' : $action );
+$action = (isset($_POST['delete']) ? 'delete' : $action );
+
+switch ($action):
+	case 'modify' :
+			// Print header
+			$admin = new admin('Access', 'users_modify');
+			$user_id = intval($admin->checkIDKEY('user_id', 0, $_SERVER['REQUEST_METHOD']));
+			// Check if user id is a valid number and doesnt equal 1
+			if($user_id == 0){
+			$admin->print_error($MESSAGE['GENERIC_FORGOT_OPTIONS'] );
+            }
+			if( ($user_id < 2 ) )
+			{
+				// if($admin_header) { $admin->print_header(); }
+				$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+			}
+			// Get existing values
+			$results = $database->query("SELECT * FROM `".TABLE_PREFIX."users` WHERE `user_id` = '".$user_id."'");
+			$user = $results->fetchRow();
+
+			// Setup template object, parse vars to it, then parse it
+			$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('users_form.htt'));
+			// Create new template object
+			$template = new Template($ThemePath);
+			// $template->debug = true;
+			$template->set_file('page', 'users_form.htt');
+			$template->set_block('page', 'main_block', 'main');
+			$template->set_var(	array(
+								'ACTION_URL' => ADMIN_URL.'/users/save.php',
+								'SUBMIT_TITLE' => $TEXT['SAVE'],
+								'USER_ID' => $user['user_id'],
+								'USERNAME' => $user['username'],
+								'DISPLAY_NAME' => $user['display_name'],
+								'EMAIL' => $user['email'],
+								'ADMIN_URL' => ADMIN_URL,
+								'WB_URL' => WB_URL,
+								'THEME_URL' => THEME_URL
+								)
+						);
+
+			$template->set_var('FTAN', $admin->getFTAN());
+			if($user['active'] == 1) {
+				$template->set_var('ACTIVE_CHECKED', ' checked="checked"');
+			} else {
+				$template->set_var('DISABLED_CHECKED', ' checked="checked"');
+			}
+			// Add groups to list
+			$template->set_block('main_block', 'group_list_block', 'group_list');
+			$results = $database->query("SELECT group_id, name FROM ".TABLE_PREFIX."groups WHERE group_id != '1' ORDER BY name");
+			if($results->numRows() > 0) {
+				$template->set_var('ID', '');
+				$template->set_var('NAME', $TEXT['PLEASE_SELECT'].'...');
+				$template->set_var('SELECTED', '');
+				$template->parse('group_list', 'group_list_block', true);
+				while($group = $results->fetchRow()) {
+					$template->set_var('ID', $group['group_id']);
+					$template->set_var('NAME', $group['name']);
+					if(in_array($group['group_id'], explode(",",$user['groups_id']))) {
+						$template->set_var('SELECTED', ' selected="selected"');
+					} else {
+						$template->set_var('SELECTED', '');
+					}
+					$template->parse('group_list', 'group_list_block', true);
+				}
+			}
+
+			// Only allow the user to add a user to the Administrators group if they belong to it
+			if(in_array(1, $admin->get_groups_id()))
+		    {
+				$template->set_var('ID', '1');
+				$users_groups = $admin->get_groups_name();
+				$template->set_var('NAME', $users_groups[1]);
+
+				$in_group = FALSE;
+				foreach($admin->get_groups_id() as $cur_gid){
+				    if (in_array($cur_gid, explode(",", $user['groups_id']))) {
+				        $in_group = TRUE;
+				    }
+				}
+
+				if($in_group) {
+					$template->set_var('SELECTED', ' selected="selected"');
+				} else {
+					$template->set_var('SELECTED', '');
+				}
+				$template->parse('group_list', 'group_list_block', true);
+			} else {
+				if($results->numRows() == 0) {
+					$template->set_var('ID', '');
+					$template->set_var('NAME', $TEXT['NONE_FOUND']);
+					$template->set_var('SELECTED', ' selected="selected"');
+					$template->parse('group_list', 'group_list_block', true);
+				}
+			}
+
+			// Generate username field name
+			$username_fieldname = 'username_';
+			$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+			srand((double)microtime()*1000000);
+			$i = 0;
+			while ($i <= 7) {
+				$num = rand() % 33;
+				$tmp = substr($salt, $num, 1);
+				$username_fieldname = $username_fieldname . $tmp;
+				$i++;
+			}
+
+			// Work-out if home folder should be shown
+			if(!HOME_FOLDERS) {
+				$template->set_var('DISPLAY_HOME_FOLDERS', 'display:none;');
+			}
+
+			// Include the WB functions file
+			require_once(WB_PATH.'/framework/functions.php');
+
+			// Add media folders to home folder list
+			$template->set_block('main_block', 'folder_list_block', 'folder_list');
+			foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name)
+		    {
+				$template->set_var('NAME', str_replace(WB_PATH, '', $name));
+				$template->set_var('FOLDER', str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name));
+				if($user['home_folder'] == str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name)) {
+					$template->set_var('SELECTED', ' selected="selected"');
+				} else {
+					$template->set_var('SELECTED', ' ');
+				}
+				$template->parse('folder_list', 'folder_list_block', true);
+			}
+
+			// Insert language text and messages
+			$template->set_var(array(
+								'TEXT_RESET' => $TEXT['RESET'],
+								'TEXT_CANCEL' => $TEXT['CANCEL'],
+								'TEXT_ACTIVE' => $TEXT['ACTIVE'],
+								'TEXT_DISABLED' => $TEXT['DISABLED'],
+								'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+								'TEXT_USERNAME' => $TEXT['USERNAME'],
+								'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+								'TEXT_RETYPE_PASSWORD' => $TEXT['RETYPE_PASSWORD'],
+								'TEXT_DISPLAY_NAME' => $TEXT['DISPLAY_NAME'],
+								'TEXT_EMAIL' => $TEXT['EMAIL'],
+								'TEXT_GROUP' => $TEXT['GROUP'],
+								'TEXT_NONE' => $TEXT['NONE'],
+								'TEXT_HOME_FOLDER' => $TEXT['HOME_FOLDER'],
+								'USERNAME_FIELDNAME' => $username_fieldname,
+								'CHANGING_PASSWORD' => $MESSAGE['USERS']['CHANGING_PASSWORD'],
+								'HEADING_MODIFY_USER' => $HEADING['MODIFY_USER']
+								)
+						);
+
+			// Parse template object
+			$template->parse('main', 'main_block', false);
+			$template->pparse('output', 'page');
+			// Print admin footer
+			$admin->print_footer();
+			break;
+		case 'delete' :
+			// Print header
+			$admin = new admin('Access', 'users_delete');
+			$user_id = intval($admin->checkIDKEY('user_id', 0, $_SERVER['REQUEST_METHOD']));
+			// Check if user id is a valid number and doesnt equal 1
+			if($user_id == 0){
+			$admin->print_error($MESSAGE['GENERIC_FORGOT_OPTIONS'] );
+            }
+			if( ($user_id < 2 ) )
+			{
+				// if($admin_header) { $admin->print_header(); }
+				$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'] );
+			}
+			$sql  = 'SELECT `active` FROM `'.TABLE_PREFIX.'users` ';
+            $sql .= 'WHERE `user_id` = '.$user_id.'';
+            if( ($iDeleteUser = $database->get_one($sql)) == 1 ) {
+				// Delete the user
+				$database->query("UPDATE `".TABLE_PREFIX."users` SET `active` = 0 WHERE `user_id` = '".$user_id."' ");
+            } else {
+				$database->query("DELETE FROM `".TABLE_PREFIX."users` WHERE `user_id` = ".$user_id);
+            }
+
+			if($database->is_error()) {
+				$admin->print_error($database->get_error());
+			} else {
+				$admin->print_success($MESSAGE['USERS_DELETED']);
+			}
+			// Print admin footer
+			$admin->print_footer();
+			break;
+	default:
+			break;
+endswitch;

Property changes on: tags/2.8.3/wb/admin/users/users.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/users/index.php
===================================================================
--- tags/2.8.3/wb/admin/users/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/users/index.php	(revision 1610)
@@ -0,0 +1,228 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         users
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Access', 'users');
+
+$iUserStatus = 1;
+$iUserStatus = ( ( $admin->get_get('status')==1 ) ? 0 : $iUserStatus );
+unset($_GET);
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('users.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+
+$template->set_file('page', 'users.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_block("main_block", "manage_groups_block", "groups");
+$template->set_var('ADMIN_URL', ADMIN_URL);
+$template->set_var('FTAN', $admin->getFTAN());
+$template->set_var('USER_STATUS', $iUserStatus );
+
+$UserStatusActive = 'url('.THEME_URL.'/images/user.png)';
+$UserStatusInactive = 'url('.THEME_URL.'/images/user_red.png)';
+
+$sUserTitle = ($iUserStatus == 0) ? $MENU['USERS'].' '.strtolower($TEXT['ACTIVE']) : $MENU['USERS'].' '.strtolower($TEXT['DELETED']) ;
+
+$template->set_var('TEXT_USERS', $sUserTitle.' '.$TEXT['SHOW'] );
+$template->set_var('STATUS_ICON', ( ($iUserStatus==0) ? $UserStatusActive : $UserStatusInactive) );
+
+// Get existing value from database
+$sql  = 'SELECT `user_id`, `username`, `display_name`, `active` FROM `'.TABLE_PREFIX.'users` ' ;
+$sql .= 'WHERE user_id != 1 ';
+$sql .=     'AND active = '.$iUserStatus.' ';
+$sql .= 'ORDER BY `display_name`,`username`';
+
+$query = "SELECT user_id, username, display_name, active FROM ".TABLE_PREFIX."users WHERE user_id != '1' ORDER BY display_name,username";
+$results = $database->query($sql);
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), 'index.php');
+}
+
+$sUserList  = $TEXT['LIST_OPTIONS'].' ';
+$sUserList .= ($iUserStatus == 1) ? $MENU['USERS'].' '.strtolower($TEXT['ACTIVE']) : $MENU['USERS'].' '.strtolower($TEXT['DELETED']) ;
+// Insert values into the modify/remove menu
+$template->set_block('main_block', 'list_block', 'list');
+if($results->numRows() > 0) {
+	// Insert first value to say please select
+	$template->set_var('VALUE', '');
+	$template->set_var('NAME', $sUserList);
+	$template->set_var('STATUS', 'class="user-active"' );
+	$template->parse('list', 'list_block', true);
+	// Loop through users
+	while($user = $results->fetchRow()) {
+		$template->set_var('VALUE',$admin->getIDKEY($user['user_id']));
+		$template->set_var('STATUS', ($user['active']==false ? 'class="user-inactive"' : 'class="user-active"') );
+		$template->set_var('NAME', $user['display_name'].' ('.$user['username'].')');
+		$template->parse('list', 'list_block', true);
+	}
+} else {
+	// Insert single value to say no users were found
+	$template->set_var('NAME', $TEXT['NONE_FOUND']);
+	$template->parse('list', 'list_block', true);
+}
+
+// Insert permissions values
+if($admin->get_permission('users_add') != true) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+}
+if($admin->get_permission('users_modify') != true) {
+	$template->set_var('DISPLAY_MODIFY', 'hide');
+}
+if($admin->get_permission('users_delete') != true) {
+	$template->set_var('DISPLAY_DELETE', 'hide');
+}
+$HeaderTitle = $HEADING['MODIFY_DELETE_USER'].' ';
+$HeaderTitle .= (($iUserStatus == 1) ? strtolower($TEXT['ACTIVE']) : strtolower($TEXT['DELETED']));
+// Insert language headings
+$template->set_var(array(
+		'HEADING_MODIFY_DELETE_USER' => $HeaderTitle,
+		'HEADING_ADD_USER' => $HEADING['ADD_USER']
+		)
+);
+// insert urls
+$template->set_var(array(
+		'ADMIN_URL' => ADMIN_URL,
+		'WB_URL' => WB_URL,
+		'THEME_URL' => THEME_URL
+		)
+);
+// Insert language text and messages
+$template->set_var(array(
+		'TEXT_MODIFY' => $TEXT['MODIFY'],
+		'TEXT_DELETE' => $TEXT['DELETE'],
+		'TEXT_MANAGE_GROUPS' => ( $admin->get_permission('groups') == true ) ? $TEXT['MANAGE_GROUPS'] : "**",
+		'CONFIRM_DELETE' => (($iUserStatus == 1) ? $TEXT['ARE_YOU_SURE'] : $MESSAGE['USERS']['CONFIRM_DELETE'])
+		)
+);
+if ( $admin->get_permission('groups') == true ) $template->parse("groups", "manage_groups_block", true);
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('users_form.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'users_form.htt');
+$template->set_block('page', 'main_block', 'main');
+$template->set_var('DISPLAY_EXTRA', 'display:none;');
+$template->set_var('ACTIVE_CHECKED', ' checked="checked"');
+$template->set_var('ACTION_URL', ADMIN_URL.'/users/add.php');
+$template->set_var('SUBMIT_TITLE', $TEXT['ADD']);
+$template->set_var('FTAN', $admin->getFTAN());
+// insert urls
+$template->set_var(array(
+		'ADMIN_URL' => ADMIN_URL,
+		'WB_URL' => WB_URL,
+		'THEME_URL' => THEME_URL
+		)
+);
+
+// Add groups to list
+$template->set_block('main_block', 'group_list_block', 'group_list');
+$results = $database->query("SELECT group_id, name FROM ".TABLE_PREFIX."groups WHERE group_id != '1'");
+if($results->numRows() > 0) {
+	$template->set_var('ID', '');
+	$template->set_var('NAME', $TEXT['PLEASE_SELECT'].'...');
+	$template->set_var('SELECTED', ' selected="selected"');
+	$template->parse('group_list', 'group_list_block', true);
+	while($group = $results->fetchRow()) {
+		$template->set_var('ID', $group['group_id']);
+		$template->set_var('NAME', $group['name']);
+		$template->set_var('SELECTED', '');
+		$template->parse('group_list', 'group_list_block', true);
+	}
+}
+// Only allow the user to add a user to the Administrators group if they belong to it
+if(in_array(1, $admin->get_groups_id())) {
+	$users_groups = $admin->get_groups_name();
+	$template->set_var('ID', '1');
+	$template->set_var('NAME', $users_groups[1]);
+	$template->set_var('SELECTED', '');
+	$template->parse('group_list', 'group_list_block', true);
+} else {
+	if($results->numRows() == 0) {
+		$template->set_var('ID', '');
+		$template->set_var('NAME', $TEXT['NONE_FOUND']);
+		$template->parse('group_list', 'group_list_block', true);
+	}
+}
+
+// Insert permissions values
+if($admin->get_permission('users_add') != true) {
+	$template->set_var('DISPLAY_ADD', 'hide');
+}
+
+// Generate username field name
+$username_fieldname = 'username_';
+$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+srand((double)microtime()*1000000);
+$i = 0;
+while ($i <= 7) {
+	$num = rand() % 33;
+	$tmp = substr($salt, $num, 1);
+	$username_fieldname = $username_fieldname . $tmp;
+	$i++;
+}
+
+// Work-out if home folder should be shown
+if(!HOME_FOLDERS) {
+	$template->set_var('DISPLAY_HOME_FOLDERS', 'display:none;');
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Add media folders to home folder list
+$template->set_block('main_block', 'folder_list_block', 'folder_list');
+foreach(directory_list(WB_PATH.MEDIA_DIRECTORY) AS $name) {
+	$template->set_var('NAME', str_replace(WB_PATH, '', $name));
+	$template->set_var('FOLDER', str_replace(WB_PATH.MEDIA_DIRECTORY, '', $name));
+	$template->set_var('SELECTED', ' ');
+	$template->parse('folder_list', 'folder_list_block', true);
+}
+
+// Insert language text and messages
+$template->set_var(array(
+			'TEXT_CANCEL' => $TEXT['CANCEL'],
+			'TEXT_RESET' => $TEXT['RESET'],
+			'TEXT_ACTIVE' => $TEXT['ACTIVE'],
+			'TEXT_DISABLED' => $TEXT['DISABLED'],
+			'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
+			'TEXT_USERNAME' => $TEXT['USERNAME'],
+			'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+			'TEXT_RETYPE_PASSWORD' => $TEXT['RETYPE_PASSWORD'],
+			'TEXT_DISPLAY_NAME' => $TEXT['DISPLAY_NAME'],
+			'TEXT_EMAIL' => $TEXT['EMAIL'],
+			'TEXT_GROUP' => $TEXT['GROUP'],
+			'TEXT_NONE' => $TEXT['NONE'],
+			'TEXT_HOME_FOLDER' => $TEXT['HOME_FOLDER'],
+			'USERNAME_FIELDNAME' => $username_fieldname,
+			'CHANGING_PASSWORD' => $MESSAGE['USERS']['CHANGING_PASSWORD']
+			)
+	);
+
+// Parse template for add user form
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/users/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/users/add.php
===================================================================
--- tags/2.8.3/wb/admin/users/add.php	(nonexistent)
+++ tags/2.8.3/wb/admin/users/add.php	(revision 1610)
@@ -0,0 +1,109 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         users
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Access', 'users_add',false);
+
+// Create a javascript back link
+$js_back = ADMIN_URL.'/users/index.php';
+
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $js_back);
+}
+// After check print the header
+$admin->print_header();
+
+// Get details entered
+$groups_id = (isset($_POST['groups'])) ? implode(",", $admin->add_slashes($_POST['groups'])) : ''; //should check permissions
+$groups_id = trim($groups_id, ','); // there will be an additional ',' when "Please Choose" was selected, too
+$active = $admin->add_slashes($_POST['active'][0]);
+$username_fieldname = $admin->get_post_escaped('username_fieldname');
+$username = strtolower($admin->get_post_escaped($username_fieldname));
+$password = $admin->get_post('password');
+$password2 = $admin->get_post('password2');
+$display_name = $admin->get_post_escaped('display_name');
+$email = $admin->get_post_escaped('email');
+$home_folder = $admin->get_post_escaped('home_folder');
+$default_language = DEFAULT_LANGUAGE;
+
+// Check values
+if($groups_id == '') {
+	$admin->print_error($MESSAGE['USERS']['NO_GROUP'], $js_back);
+}
+if(!preg_match('/^[a-z]{1}[a-z0-9_-]{2,}$/i', $username)) {
+	$admin->print_error( $MESSAGE['USERS_NAME_INVALID_CHARS'].' / '.
+	                  $MESSAGE['USERS_USERNAME_TOO_SHORT'], $js_back);
+}
+if(strlen($password) < 2) {
+	$admin->print_error($MESSAGE['USERS']['PASSWORD_TOO_SHORT'], $js_back);
+}
+if($password != $password2) {
+	$admin->print_error($MESSAGE['USERS']['PASSWORD_MISMATCH'], $js_back);
+}
+if($email != '')
+{
+	if($admin->validate_email($email) == false)
+    {
+		$admin->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back);
+	}
+} else { // e-mail must be present
+	$admin->print_error($MESSAGE['SIGNUP']['NO_EMAIL'], $js_back);
+}
+
+// choose group_id from groups_id - workaround for still remaining calls to group_id (to be cleaned-up)
+$gid_tmp = explode(',', $groups_id);
+if(in_array('1', $gid_tmp)) $group_id = '1'; // if user is in administrator-group, get this group
+else $group_id = $gid_tmp[0]; // else just get the first one
+unset($gid_tmp);
+
+// Check if username already exists
+$results = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE username = '$username'");
+if($results->numRows() > 0) {
+	$admin->print_error($MESSAGE['USERS']['USERNAME_TAKEN'], $js_back);
+}
+
+// Check if the email already exists
+$results = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE email = '".$admin->add_slashes($_POST['email'])."'");
+if($results->numRows() > 0)
+{
+	if(isset($MESSAGE['USERS']['EMAIL_TAKEN']))
+    {
+		$admin->print_error($MESSAGE['USERS']['EMAIL_TAKEN'], $js_back);
+	} else {
+		$admin->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back);
+	}
+}
+
+// MD5 supplied password
+$md5_password = md5($password);
+
+// Inser the user into the database
+$query = "INSERT INTO ".TABLE_PREFIX."users (group_id,groups_id,active,username,password,display_name,home_folder,email,timezone, language) VALUES ('$group_id', '$groups_id', '$active', '$username','$md5_password','$display_name','$home_folder','$email','-72000', '$default_language')";
+$database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error());
+} else {
+	$admin->print_success($MESSAGE['USERS']['ADDED']);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/users/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/users/save.php
===================================================================
--- tags/2.8.3/wb/admin/users/save.php	(nonexistent)
+++ tags/2.8.3/wb/admin/users/save.php	(revision 1610)
@@ -0,0 +1,117 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         users
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Access', 'users_modify', false);
+
+// Create a javascript back link
+$js_back = ADMIN_URL.'/users/index.php';
+
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$js_back);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user id is a valid number and doesnt equal 1
+if(!isset($_POST['user_id']) OR !is_numeric($_POST['user_id']) OR $_POST['user_id'] == 1) {
+	header("Location: index.php");
+	exit(0);
+} else {
+	$user_id = $_POST['user_id'];
+}
+
+// Gather details entered
+$groups_id = (isset($_POST['groups'])) ? implode(",", $admin->add_slashes($_POST['groups'])) : '';
+$active = $admin->add_slashes($_POST['active'][0]);
+$username_fieldname = $admin->get_post_escaped('username_fieldname');
+$username = strtolower($admin->get_post_escaped($username_fieldname));
+$password = $admin->get_post('password');
+$password2 = $admin->get_post('password2');
+$display_name = $admin->get_post_escaped('display_name');
+$email = $admin->get_post_escaped('email');
+$home_folder = $admin->get_post_escaped('home_folder');
+
+// Check values
+if($groups_id == "") {
+	$admin->print_error($MESSAGE['USERS']['NO_GROUP'], $js_back);
+}
+if(!preg_match('/^[a-z]{1}[a-z0-9_-]{2,}$/i', $username)) {
+	$admin->print_error( $MESSAGE['USERS_NAME_INVALID_CHARS'].' / '.
+	                  $MESSAGE['USERS_USERNAME_TOO_SHORT'], $js_back);
+}
+if($password != "") {
+	if(strlen($password) < 2) {
+		$admin->print_error($MESSAGE['USERS']['PASSWORD_TOO_SHORT'], $js_back);
+	}
+	if($password != $password2) {
+		$admin->print_error($MESSAGE['USERS']['PASSWORD_MISMATCH'], $js_back);
+	}
+}
+
+if($email != "")
+{
+	if($admin->validate_email($email) == false)
+    {
+        $admin->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back);
+	}
+} else { // e-mail must be present
+	$admin->print_error($MESSAGE['SIGNUP']['NO_EMAIL'], $js_back);
+}
+
+// Check if the email already exists
+$results = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE email = '".$admin->add_slashes($_POST['email'])."' AND user_id <> '".$user_id."' ");
+if($results->numRows() > 0)
+{
+	if(isset($MESSAGE['USERS']['EMAIL_TAKEN']))
+    {
+		$admin->print_error($MESSAGE['USERS']['EMAIL_TAKEN'], $js_back);
+	} else {
+		$admin->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back);
+	}
+}
+
+// Prevent from renaming user to "admin"
+if($username != 'admin') {
+	$username_code = ", username = '$username'";
+} else {
+	$username_code = '';
+}
+
+// Update the database
+if($password == "") {
+	$query = "UPDATE ".TABLE_PREFIX."users SET groups_id = '$groups_id', active = '$active'$username_code, display_name = '$display_name', home_folder = '$home_folder', email = '$email' WHERE user_id = '$user_id'";
+} else {
+	// MD5 supplied password
+	$md5_password = md5($password);
+	$query = "UPDATE ".TABLE_PREFIX."users SET groups_id = '$groups_id', active = '$active'$username_code, display_name = '$display_name', home_folder = '$home_folder', email = '$email', password = '$md5_password' WHERE user_id = '$user_id'";
+}
+$database->query($query);
+if($database->is_error()) {
+	$admin->print_error($database->get_error(),$js_back);
+} else {
+	$admin->print_success($MESSAGE['USERS']['SAVED']);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/users/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/access/index.php
===================================================================
--- tags/2.8.3/wb/admin/access/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/access/index.php	(revision 1610)
@@ -0,0 +1,70 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         access
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date:  $
+ *
+ *
+ */
+ 
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Access', 'access');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('access.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'access.htt');
+
+$template->set_block('page', 'main_block', 'main');
+$template->set_block('main_block', 'users_block', 'user');
+$template->set_block('main_block', 'groups_block', 'group');
+
+// Insert values into the template object
+$template->set_var(array(
+		'ADMIN_URL' => ADMIN_URL,
+		'THEME_URL' => THEME_URL,
+		'WB_URL' => WB_URL
+	)
+);
+
+/**
+ *	Insert permission values into the template object
+ *	Deprecated - as we are using blocks.
+ */
+$display_none = "style=\"display: none;\"";
+if($admin->get_permission('users') != true)	$template->set_var('DISPLAY_USERS', $display_none);
+if($admin->get_permission('groups') != true) $template->set_var('DISPLAY_GROUPS', $display_none);
+
+// Insert section names and descriptions
+$template->set_var(array(
+		'USERS' => $MENU['USERS'],
+		'GROUPS' => $MENU['GROUPS'],
+		'ACCESS' => $MENU['ACCESS'],
+		'USERS_OVERVIEW' => $OVERVIEW['USERS'],
+		'GROUPS_OVERVIEW' => $OVERVIEW['GROUPS'],
+	)
+);
+
+if ( $admin->get_permission('users') == true )	$template->parse('main_block', "users_block", true);
+if ( $admin->get_permission('groups') == true )	$template->parse('main_block', "groups_block", true);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/access/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/languages/details.php
===================================================================
--- tags/2.8.3/wb/admin/languages/details.php	(nonexistent)
+++ tags/2.8.3/wb/admin/languages/details.php	(revision 1610)
@@ -0,0 +1,99 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         languages
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ *
+ */
+
+// Include the config code
+require('../../config.php');
+
+// Print admin header
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'languages_view', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Get language name
+if(!isset($_POST['code']) OR $_POST['code'] == "") {
+	$code = '';
+} else {
+	$code = $_POST['code'];
+}
+
+// fix secunia 2010-93-2
+if (!preg_match('/^[A-Z]{2}$/', $code)) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Check if the language exists
+if(!file_exists(WB_PATH.'/languages/'.$code.'.php')) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('languages_details.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'languages_details.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values
+require(WB_PATH.'/languages/'.$code.'.php');
+$template->set_var(array(
+								'CODE' => $language_code,
+								'NAME' => $language_name,
+								'AUTHOR' => $language_author,
+								'VERSION' => $language_version,
+								'DESIGNED_FOR' => $language_platform,
+								'ADMIN_URL' => ADMIN_URL,
+								'WB_URL' => WB_URL,
+								'THEME_URL' => THEME_URL
+								)
+						);
+
+// Restore language to original code
+require(WB_PATH.'/languages/'.LANGUAGE.'.php');
+
+// Insert language headings
+$template->set_var(array(
+								'HEADING_LANGUAGE_DETAILS' => $HEADING['LANGUAGE_DETAILS']
+								)
+						);
+// Insert language text and messages
+$template->set_var(array(
+								'TEXT_CODE' => $TEXT['CODE'],
+								'TEXT_NAME' => $TEXT['NAME'],
+								'TEXT_TYPE' => $TEXT['TYPE'],
+								'TEXT_AUTHOR' => $TEXT['AUTHOR'],
+								'TEXT_VERSION' => $TEXT['VERSION'],
+								'TEXT_DESIGNED_FOR' => $TEXT['DESIGNED_FOR'],
+								'TEXT_BACK' => $TEXT['BACK']
+								)
+						);
+
+// Parse language object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/languages/details.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/languages/index.php
===================================================================
--- tags/2.8.3/wb/admin/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/languages/index.php	(revision 1610)
@@ -0,0 +1,88 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         languages
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ *
+ */
+
+// Print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'languages');
+
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('languages.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+// $template->debug = true;
+$template->set_file('page', 'languages.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Insert values into language list
+$template->set_block('main_block', 'language_list_block', 'language_list');
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' order by directory");
+if($result->numRows() > 0) {
+	while($addon = $result->fetchRow()) {
+		$template->set_var('VALUE', $addon['directory']);
+		$template->set_var('NAME', $addon['name'].' ('.$addon['directory'].')');
+		$template->parse('language_list', 'language_list_block', true);
+	}
+}
+
+// Insert permissions values
+if($admin->get_permission('languages_install') != true) {
+	$template->set_var('DISPLAY_INSTALL', 'hide');
+}
+if($admin->get_permission('languages_uninstall') != true) {
+	$template->set_var('DISPLAY_UNINSTALL', 'hide');
+}
+if($admin->get_permission('languages_view') != true) {
+	$template->set_var('DISPLAY_LIST', 'hide');
+}
+
+// Insert language headings
+$template->set_var(array(
+				'HEADING_INSTALL_LANGUAGE' => $HEADING['INSTALL_LANGUAGE'],
+				'HEADING_UNINSTALL_LANGUAGE' => $HEADING['UNINSTALL_LANGUAGE'],
+				'HEADING_LANGUAGE_DETAILS' => $HEADING['LANGUAGE_DETAILS']
+			)
+		);
+// insert urls
+$template->set_var(array(
+				'ADMIN_URL' => ADMIN_URL,
+				'WB_URL' => WB_URL,
+				'THEME_URL' => THEME_URL,
+				'FTAN' => $admin->getFTAN()
+			)
+		);
+// Insert language text and messages
+$template->set_var(array(
+	'URL_MODULES' => $admin->get_permission('modules') ?
+		'<a href="' . ADMIN_URL . '/modules/index.php">' . $MENU['MODULES'] . '</a>' : '',
+	'URL_ADVANCED' => '&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;',
+	'URL_TEMPLATES' => $admin->get_permission('templates') ?
+		'<a href="' . ADMIN_URL . '/templates/index.php">' . $MENU['TEMPLATES'] . '</a>' : '',
+	'TEXT_INSTALL' => $TEXT['INSTALL'],
+	'TEXT_UNINSTALL' => $TEXT['UNINSTALL'],
+	'TEXT_VIEW_DETAILS' => $TEXT['VIEW_DETAILS'],
+	'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT']
+	)
+);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/admin/languages/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/languages/uninstall.php
===================================================================
--- tags/2.8.3/wb/admin/languages/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/admin/languages/uninstall.php	(revision 1610)
@@ -0,0 +1,76 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         languages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ *
+ */
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'languages_uninstall', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user selected language
+if(!isset($_POST['code']) OR $_POST['code'] == "") {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Extra protection
+if(trim($_POST['code']) == '') {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Check if the language exists
+if(!file_exists(WB_PATH.'/languages/'.$_POST['code'].'.php')) {
+	$admin->print_error($MESSAGE['GENERIC']['NOT_INSTALLED']);
+}
+
+// Check if the language is in use
+if($_POST['code'] == DEFAULT_LANGUAGE OR $_POST['code'] == LANGUAGE) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE']);
+} else {
+	$query_users = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE language = '".$admin->add_slashes($_POST['code'])."' LIMIT 1");
+	if($query_users->numRows() > 0) {
+		$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE']);
+	}
+}
+
+// Try to delete the language code
+if(!unlink(WB_PATH.'/languages/'.$_POST['code'].'.php')) {
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UNINSTALL']);
+} else {
+	// Remove entry from DB
+	$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE directory = '".$_POST['code']."' AND type = 'language'");
+}
+
+// Print success message
+$admin->print_success($MESSAGE['GENERIC']['UNINSTALLED']);
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/languages/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/languages/install.php
===================================================================
--- tags/2.8.3/wb/admin/languages/install.php	(nonexistent)
+++ tags/2.8.3/wb/admin/languages/install.php	(revision 1610)
@@ -0,0 +1,131 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         languages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ *
+ */
+
+// do not display notices and warnings during installation
+error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
+
+// Setup admin object
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'languages_install', false);
+if( !$admin->checkFTAN() )
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+// After check print the header
+$admin->print_header();
+
+// Check if user uploaded a file
+if(!isset($_FILES['userfile'])) {
+	header("Location: index.php");
+	exit(0);
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Create temp string
+$temp_string = '';
+$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+srand((double)microtime()*1000000);
+$i = 0;
+while ($i <= 7) {
+	$num = rand() % 33;
+	$tmp = substr($salt, $num, 1);
+	$temp_string = $temp_string . $tmp;
+	$i++;
+}
+
+// Set temp vars
+$temp_dir = WB_PATH.'/temp/';
+$temp_file = $temp_dir . 'language'.$temp_string;
+
+// Check if language dir is writable
+if(!is_writable(WB_PATH.'/languages/')) {
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['GENERIC']['BAD_PERMISSIONS']);
+}
+
+// Try to upload the file to the temp dir
+if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $temp_file)) {
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	$admin->print_error($MESSAGE['GENERIC']['CANNOT_UPLOAD']);
+}
+
+// Check if uploaded file is a valid language file (no binary file etc.)
+$content = file_get_contents($temp_file);
+if (strpos($content, '<?php') === false) $admin->print_error($MESSAGE['GENERIC']['INVALID_LANGUAGE_FILE']);
+
+// Remove any vars with name "language_code"
+unset($language_code);
+
+// Include precheck files for versionCompare routine
+require(WB_PATH . '/framework/addon.precheck.inc.php');
+
+// Read the temp file and look for a language code
+require($temp_file);
+$new_language_version=$language_version;
+
+// Check if the file is valid
+if(!isset($language_code)) {
+	if(file_exists($temp_file)) { unlink($temp_file); } // Remove temp file
+	// Restore to correct language
+	require(WB_PATH.'/languages/'.LANGUAGE.'.php');
+	$admin->print_error($MESSAGE['GENERIC']['INVALID_LANGUAGE_FILE']);
+}
+
+// Set destination for language file
+$language_file = WB_PATH.'/languages/'.$language_code.'.php';
+$action="install";
+
+// Move to new location
+if (file_exists($language_file)) {
+	require($language_file);
+	if (versionCompare($language_version, $new_language_version, '>=')) {
+		// Restore to correct language
+		require(WB_PATH . '/languages/' . LANGUAGE . '.php');
+		$admin->print_error($MESSAGE['GENERIC']['ALREADY_INSTALLED']);
+	}
+	$action="upgrade";
+	unlink($language_file);
+}
+
+rename($temp_file, $language_file);
+
+// Chmod the file
+change_mode($language_file, 'file');
+
+// Load language info into DB
+load_language($language_file);
+
+// Restore to correct language
+require(WB_PATH.'/languages/'.LANGUAGE.'.php');
+
+// Print success message
+if ($action=="install") {
+	$admin->print_success($MESSAGE['GENERIC']['INSTALLED']);
+} else {
+	$admin->print_success($MESSAGE['GENERIC']['UPGRADED']);
+}
+
+// Print admin footer
+$admin->print_footer();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/languages/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/login/forgot/index.php
===================================================================
--- tags/2.8.3/wb/admin/login/forgot/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/login/forgot/index.php	(revision 1610)
@@ -0,0 +1,162 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         login
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// Include the configuration file
+require('../../../config.php');
+// Include the language file
+require(WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php');
+// Include the database class file and initiate an object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Start', 'start', false, false);
+
+// Get the website title
+$results = $database->query("SELECT value FROM ".TABLE_PREFIX."settings WHERE name = 'title'");
+$results = $results->fetchRow();
+$website_title = $results['value'];
+
+// Check if the user has already submitted the form, otherwise show it
+if(isset($_POST['email']) AND $_POST['email'] != "") {
+	
+	$email = htmlspecialchars($_POST['email'],ENT_QUOTES);
+	
+	// Check if the email exists in the database
+	$query = "SELECT user_id,username,display_name,email,last_reset,password FROM ".TABLE_PREFIX."users WHERE email = '".$admin->add_slashes($_POST['email'])."'";
+	$results = $database->query($query);
+	if($results->numRows() > 0) {
+
+		// Get the id, username, email, and last_reset from the above db query
+		$results_array = $results->fetchRow();
+		
+		// Check if the password has been reset in the last 2 hours
+		$last_reset = $results_array['last_reset'];
+		$time_diff = time()-$last_reset; // Time since last reset in seconds
+		$time_diff = $time_diff/60/60; // Time since last reset in hours
+		if($time_diff < 2) {
+			
+			// Tell the user that their password cannot be reset more than once per hour
+			$message = $MESSAGE['FORGOT_PASS']['ALREADY_RESET'];
+			
+		} else {
+			
+			$old_pass = $results_array['password'];
+			
+			// Generate a random password then update the database with it
+			$new_pass = '';
+			$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+			srand((double)microtime()*1000000);
+			$i = 0;
+			while ($i <= 7) {
+				$num = rand() % 33;
+				$tmp = substr($salt, $num, 1);
+				$new_pass = $new_pass . $tmp;
+				$i++;
+			}
+			
+			$database->query("UPDATE ".TABLE_PREFIX."users SET password = '".md5($new_pass)."', last_reset = '".time()."' WHERE user_id = '".$results_array['user_id']."'");
+			
+			if($database->is_error()) {
+				// Error updating database
+				$message = $database->get_error();
+			} else {
+				// Setup email to send
+				$mail_to = $email;
+				$mail_subject = $MESSAGE['SIGNUP2']['SUBJECT_LOGIN_INFO'];
+
+				// Replace placeholders from language variable with values
+				$search = array('{LOGIN_DISPLAY_NAME}', '{LOGIN_WEBSITE_TITLE}', '{LOGIN_NAME}', '{LOGIN_PASSWORD}');
+				$replace = array($results_array['display_name'], WEBSITE_TITLE, $results_array['username'], $new_pass); 
+				$mail_message = str_replace($search, $replace, $MESSAGE['SIGNUP2']['BODY_LOGIN_FORGOT']);
+
+				// Try sending the email
+				if($admin->mail(SERVER_EMAIL,$mail_to,$mail_subject,$mail_message)) { 
+					$message = $MESSAGE['FORGOT_PASS']['PASSWORD_RESET'];
+					$display_form = false;
+				} else {
+					$database->query("UPDATE ".TABLE_PREFIX."users SET password = '".$old_pass."' WHERE user_id = '".$results_array['user_id']."'");
+					$message = $MESSAGE['FORGOT_PASS']['CANNOT_EMAIL'];
+				}
+			}
+		
+		}
+		
+	} else {
+		// Email doesn't exist, so tell the user
+		$message = $MESSAGE['FORGOT_PASS']['EMAIL_NOT_FOUND'];
+		// and delete the wrong Email
+		$email = '';
+	}
+	
+} else {
+	$email = '';
+}
+
+if(!isset($message)) {
+	$message = $MESSAGE['FORGOT_PASS']['NO_DATA'];
+	$message_color = '000000';
+} else {
+	$message_color = 'FF0000';
+}
+	
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('login_forgot.htt'));
+// Create new template object
+$template = new Template($ThemePath);
+$template->set_file('page', 'login_forgot.htt');
+$template->set_block('page', 'main_block', 'main');
+if(defined('FRONTEND')) {
+	$template->set_var('ACTION_URL', 'forgot.php');
+} else {
+	$template->set_var('ACTION_URL', 'index.php');
+}
+$template->set_var('EMAIL', $email);
+
+if(isset($display_form)) {
+	$template->set_var('DISPLAY_FORM', 'display:none;');
+}
+
+$template->set_var(array(
+								'SECTION_FORGOT' => $MENU['FORGOT'],
+								'MESSAGE_COLOR' => $message_color,
+								'MESSAGE' => $message,
+								'WB_URL' => WB_URL,
+								'ADMIN_URL' => ADMIN_URL,
+								'THEME_URL' => THEME_URL,
+								'LANGUAGE' => strtolower(LANGUAGE),
+								'TEXT_EMAIL' => $TEXT['EMAIL'],
+								'TEXT_SEND_DETAILS' => $TEXT['SEND_DETAILS'],
+								'TEXT_HOME' => $TEXT['HOME'],
+								'TEXT_NEED_TO_LOGIN' => $TEXT['NEED_TO_LOGIN']
+								)
+						);
+
+if(defined('FRONTEND')) {
+	$template->set_var('LOGIN_URL', WB_URL.'/account/login.php');
+} else {
+	$template->set_var('LOGIN_URL', ADMIN_URL);
+}
+$template->set_var('INTERFACE_URL', ADMIN_URL.'/interface');	
+
+if(defined('DEFAULT_CHARSET')) {
+	$charset=DEFAULT_CHARSET;
+} else {
+	$charset='utf-8';
+}
+
+$template->set_var('CHARSET', $charset);	
+
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');

Property changes on: tags/2.8.3/wb/admin/login/forgot/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/login/index.php
===================================================================
--- tags/2.8.3/wb/admin/login/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/login/index.php	(revision 1610)
@@ -0,0 +1,64 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         login
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require_once("../../config.php");
+require_once(WB_PATH."/framework/class.login.php");
+
+if(defined('SMART_LOGIN') AND SMART_LOGIN == 'enabled') {
+	// Generate username field name
+	$username_fieldname = 'username_';
+	$password_fieldname = 'password_';
+	$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+	srand((double)microtime()*1000000);
+	$i = 0;
+	while ($i <= 7) {
+		$num = rand() % 33;
+		$tmp = substr($salt, $num, 1);
+		$username_fieldname = $username_fieldname . $tmp;
+		$password_fieldname = $password_fieldname . $tmp;
+		$i++;
+	}
+} else {
+	$username_fieldname = 'username';
+	$password_fieldname = 'password';
+}
+
+$admin = new admin('Start', '', false, false);
+$ThemeUrl = WB_URL.$admin->correct_theme_source('warning.html');
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('login.htt'));
+
+$thisApp = new Login( array(
+						'MAX_ATTEMPS' => "3",
+						'WARNING_URL' => $ThemeUrl.'/warning.html',
+						'USERNAME_FIELDNAME' => $username_fieldname,
+						'PASSWORD_FIELDNAME' => $password_fieldname,
+						'REMEMBER_ME_OPTION' => SMART_LOGIN,
+						'MIN_USERNAME_LEN' => "2",
+						'MIN_PASSWORD_LEN' => "2",
+						'MAX_USERNAME_LEN' => "30",
+						'MAX_PASSWORD_LEN' => "30",
+						'LOGIN_URL' => ADMIN_URL."/login/index.php",
+						'DEFAULT_URL' => ADMIN_URL."/start/index.php",
+						'TEMPLATE_DIR' => $ThemePath,
+						'TEMPLATE_FILE' => "login.htt",
+						'FRONTEND' => false,
+						'FORGOTTEN_DETAILS_APP' => ADMIN_URL."/login/forgot/index.php",
+						'USERS_TABLE' => TABLE_PREFIX."users",
+						'GROUPS_TABLE' => TABLE_PREFIX."groups",
+				)
+		);

Property changes on: tags/2.8.3/wb/admin/login/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/admin/logout/index.php
===================================================================
--- tags/2.8.3/wb/admin/logout/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/logout/index.php	(revision 1610)
@@ -0,0 +1,54 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         logout
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/admin/users/save.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10. Jan 2011) $
+ *
+ */
+
+require('../../config.php');
+
+// delete remember key of current user from database
+if (isset($_SESSION['USER_ID']) && isset($database)) {
+	$table = TABLE_PREFIX . 'users';
+	$sql = "UPDATE `$table` SET `remember_key` = '' WHERE `user_id` = '" . (int) $_SESSION['USER_ID'] . "'";
+	$database->query($sql);
+}
+
+// delete remember key cookie if set
+if (isset($_COOKIE['REMEMBER_KEY'])) {
+	setcookie('REMEMBER_KEY', '', time() - 3600, '/');
+}
+
+// delete most critical session variables manually
+$_SESSION['USER_ID'] = null;
+$_SESSION['GROUP_ID'] = null;
+$_SESSION['GROUPS_ID'] = null;
+$_SESSION['USERNAME'] = null;
+$_SESSION['PAGE_PERMISSIONS'] = null;
+$_SESSION['SYSTEM_PERMISSIONS'] = null;
+
+// overwrite session array
+$_SESSION = array();
+
+// delete session cookie if set
+if (isset($_COOKIE[session_name()])) {
+    setcookie(session_name(), '', time() - 42000, '/');
+}
+
+// delete the session itself
+session_destroy();
+
+// redirect to admin login
+die(header('Location: ' . ADMIN_URL . '/login/index.php'));
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/logout/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/modify.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/modify.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/modify_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/modify_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/noclock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/noclock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/minus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/minus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/hidden_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/hidden_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/clock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/clock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/visible_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/visible_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/none_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/none_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/delete_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/delete_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/blank.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/admin/images/blank.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/index.php
===================================================================
--- tags/2.8.3/wb/admin/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/admin/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2008, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/images/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/reload_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/reload_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/deleted_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/deleted_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/down_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/down_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/view_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/view_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/private_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/private_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/keys_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/keys_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/clock_del_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/clock_del_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/up_folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/up_folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/README.txt
===================================================================
--- tags/2.8.3/wb/admin/images/README.txt	(nonexistent)
+++ tags/2.8.3/wb/admin/images/README.txt	(revision 1610)
@@ -0,0 +1,10 @@
+The folder admin/images isn't needed for WB 2.8. anymore.
+
+It remains only to keep backward compatibility to old modules
+wich make use of the images from this folder.
+
+Modules should be adapted as soon as possible to use images
+from the backend themes instead.
+
+If you are shure you have only Modules wich uses images from
+backend themes, this folder can be deleted.
\ No newline at end of file

Property changes on: tags/2.8.3/wb/admin/images/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/restore_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/restore_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/plus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/plus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/up_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/up_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/admin/images/clock_red_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/admin/images/clock_red_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/install/index.php
===================================================================
--- tags/2.8.3/wb/install/index.php	(nonexistent)
+++ tags/2.8.3/wb/install/index.php	(revision 1610)
@@ -0,0 +1,508 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         install
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, WebsiteBaker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Start a session
+if(!defined('SESSION_STARTED')) {
+	session_name('wb_session_id');
+	session_start();
+	define('SESSION_STARTED', true);
+}
+
+$mod_path = dirname(str_replace('\\', '/', __FILE__));
+$doc_root = rtrim(realpath($_SERVER['DOCUMENT_ROOT']),'/');
+$mod_name = basename($mod_path);
+$wb_path = dirname(dirname(realpath( __FILE__)));
+$wb_root = str_replace(realpath($doc_root),'',$wb_path);
+
+// Function to highlight input fields which contain wrong/missing data
+function field_error($field_name='') {
+	if(!defined('SESSION_STARTED') || $field_name == '') return;
+	if(isset($_SESSION['ERROR_FIELD']) && $_SESSION['ERROR_FIELD'] == $field_name) {
+		return ' class="wrong"';
+	}
+}
+
+$installFlag = true;
+// Check if the page has been reloaded
+if(!isset($_GET['sessions_checked']) OR $_GET['sessions_checked'] != 'true') {
+	// Set session variable
+	$_SESSION['session_support'] = '<font class="good">Enabled</font>';
+	// Reload page
+	header('Location: index.php?sessions_checked=true');
+	exit(0);
+} else {
+	// Check if session variable has been saved after reload
+	if(isset($_SESSION['session_support'])) {
+		$session_support = $_SESSION['session_support'];
+	} else {
+		$installFlag = false;
+		$session_support = '<font class="bad">Disabled</font>';
+	}
+}
+// Check if AddDefaultCharset is set
+$e_adc=false;
+$sapi=php_sapi_name();
+if(strpos($sapi, 'apache')!==FALSE || strpos($sapi, 'nsapi')!==FALSE) {
+	flush();
+	$apache_rheaders=apache_response_headers();
+	foreach($apache_rheaders AS $h) {
+		if(strpos($h, 'html; charset')!==FALSE) {
+			preg_match('/charset\s*=\s*([a-zA-Z0-9- _]+)/', $h, $match);
+			$apache_charset=$match[1];
+			$e_adc=$apache_charset;
+		}
+	}
+}
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>WebsiteBaker Installation Wizard</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<link href="stylesheet.css" rel="stylesheet" type="text/css" />
+<script language="javascript" type="text/javascript">
+
+function confirm_link(message, url) {
+	if(confirm(message)) location.href = url;
+}
+function change_os(type) {
+	if(type == 'linux') {
+		document.getElementById('operating_system_linux').checked = true;
+		document.getElementById('operating_system_windows').checked = false;
+		document.getElementById('file_perms_box').style.display = 'none';
+	} else if(type == 'windows') {
+		document.getElementById('operating_system_linux').checked = false;
+		document.getElementById('operating_system_windows').checked = true;
+		document.getElementById('file_perms_box').style.display = 'none';
+	}
+}
+</script>
+</head>
+<body>
+<div class="body">
+<table summary="" cellpadding="0" cellspacing="0">
+<tr style="background: #a9c9ea;">
+	<td valign="top">
+		<img src="../templates/wb_theme/images/logo.png" alt="Logo" />
+	</td>
+	<td>
+		<h1 style="border:none; margin-top:1em;font-size:150%;">Installation Wizard</h1>
+	</td>
+</tr>
+</table>
+
+<form name="website_baker_installation_wizard" action="save.php" method="post">
+<input type="hidden" name="url" value="" />
+<input type="hidden" name="username_fieldname" value="admin_username" />
+<input type="hidden" name="password_fieldname" value="admin_password" />
+<input type="hidden" name="remember" id="remember" value="true" />
+
+		<div style="padding: 5px; text-align: center; font-weight: bold;">
+			Welcome to the WebsiteBaker Installation Wizard.
+		</div>
+		<?php
+		if(isset($_SESSION['message']) AND $_SESSION['message'] != '') {
+			?><div  style="width: 700px; padding: 10px; margin-bottom: 5px; border: 1px solid #FF0000; background-color: #FFDBDB;"><b>Error:</b> <?php echo $_SESSION['message']; ?></div><?php
+		}
+		?>
+		<table summary="" cellpadding="0" cellspacing="0" border="0">
+		<tr>
+			<td colspan="6" class="step-row"><h1 class="step-row">Step 1</h1>&nbsp;Please check the following requirements are met before continuing...</td>
+		</tr>
+		<?php if($session_support != '<font class="good">Enabled</font>') { ?>
+		<tr>
+			<td colspan="6" class="error">Please note: PHP Session Support may appear disabled if your browser does not support cookies.</td>
+		</tr>
+		<?php } ?>
+		<tr>
+			<td style="color: #666666;">PHP Version > 5.2.1</td>
+			<td>
+				<?php
+			   if (version_compare(PHP_VERSION, '5.2.1', '>'))
+			   {
+					?><font class="good">Yes</font><?php
+				} else {
+					$installFlag = false;
+					?><font class="bad">No</font><?php
+				}
+				?>
+			</td>
+			<td style="color: #666666;">PHP Session Support</td>
+			<td><?php echo $session_support; ?></td>
+		</tr>
+	<tr>
+		<td style="color: #666666;">Server DefaultCharset</td>
+			<td>
+				<?php
+					$chrval = (($e_adc != '') && (strtolower($e_adc) != 'utf-8') ? true : false);
+					if($chrval == false) {
+						?><font class="good">
+						<?php echo (($e_adc=='') ? 'OK' : $e_adc) ?>
+						</font>
+						<?php
+					} else {
+						?><font class="bad"><?php echo $e_adc ?></font><?php
+					}
+
+				?>
+			</td>
+			<td style="color: #666666;">PHP Safe Mode</td>
+			<td>
+				<?php
+				if(ini_get('safe_mode')=='' || strpos(strtolower(ini_get('safe_mode')), 'off')!==FALSE || ini_get('safe_mode')==0) {
+					?><font class="good">Disabled</font><?php
+				} else {
+					$installFlag = false;
+					?><font class="bad">Enabled</font><?php
+				}
+				?>
+			</td>
+		</tr>
+		<?php if($chrval == true) {
+		?>
+		<tr>
+			<td colspan="6" style="font-size: 10px;" class="bad">
+<p class="warning">
+<b>Please note:</b> Yor webserver is configured to deliver <b><?php echo $e_adc;?></b> charset only.<br />
+To display national special characters (e.g.: &auml; &aacute;) in clear manner, switch off this preset please(or let it do by your hosting provider).<br />
+In any case you can choose <b><?php echo $e_adc;?></b> in the settings of WebsiteBaker.<br />
+But this solution does not guarranty a correct displaying of the content from all modules!
+</p>
+</td>
+</tr>
+<?php } ?>
+</table>
+<table summary="" cellpadding="3" cellspacing="0">
+<tr>
+	<td colspan="8" class="step-row"><h1 class="step-row">Step 2</h1>&nbsp;Please check the following files/folders are writeable before continuing...</td>
+</tr>
+<?php
+	$config = '<font class="good">Writeable</font>';
+	$config_content = "<?php\n";
+	$configFile = '/config.php';
+	if(!isset($_SESSION['config_rename']) )
+	{
+// cnfig.php or config.php.new
+		if( (file_exists($wb_path.$configFile)==true))
+		{
+// next operation only if file is writeable
+			if(is_writeable($wb_path.$configFile))
+			{
+// already installed? it's not empty
+				if ( filesize($wb_path.$configFile) > 128)
+				{
+					$installFlag = false;
+					$config = '<font class="bad">Not empty!!?</font>';
+// try to open and to write
+				} elseif( !$handle = fopen($wb_path.$configFile, 'w') )
+				{
+					$installFlag = false;
+	                $config = '<font class="bad">Not Writeable</font>';
+				} else {
+					if (fwrite($handle, $config_content) === FALSE) {
+						$installFlag = false;
+		                $config = '<font class="bad">Not Writeable</font>';
+					} else {
+						$config = '<font class="good">Writeable</font>';
+						$_SESSION['config_rename'] = true;
+					}
+					// Close file
+					fclose($handle);
+					}
+			} else {
+				$installFlag = false;
+                $config = '<font class="bad">Not Writeable</font>';
+			}
+// it's config.php.new
+		} elseif((file_exists($wb_path.'/config.php.new')==true))
+		{
+			$configFile = '/config.php.new';
+			$installFlag = false;
+			$config = '<font class="bad">Please rename</font>';
+		} else
+		{
+			$installFlag = false;
+			$config = '<font class="bad">Missing!!?</font>';
+		}
+	}
+?>
+		<tr>
+			<td style="color: #666666;"><?php print $wb_root.$configFile ?></td>
+			<td colspan="2" ><?php echo $config ?></td>
+		</tr>
+		<tr>
+			<td style="color: #666666;"><?php print $wb_root ?>/pages/</td>
+			<td><?php if(is_writable('../pages/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../pages/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+			<td style="color: #666666;"><?php print $wb_root ?>/media/</td>
+			<td><?php if(is_writable('../media/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../media/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+			<td style="color: #666666;"><?php print $wb_root ?>/templates/</td>
+			<td><?php if(is_writable('../templates/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../templates/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+		</tr>
+		<tr>
+			<td style="color: #666666;"><?php print $wb_root ?>/modules/</td>
+			<td><?php if(is_writable('../modules/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../modules/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+			<td style="color: #666666;"><?php print $wb_root ?>/languages/</td>
+			<td><?php if(is_writable('../languages/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../languages/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+			<td style="color: #666666;"><?php print $wb_root ?>/temp/</td>
+			<td><?php if(is_writable('../temp/')) { echo '<font class="good">Writeable</font>'; } elseif(!file_exists('../temp/')) {$installFlag = false; echo '<font class="bad">Directory Not Found</font>'; } else { echo '<font class="bad">Unwriteable</font>'; } ?></td>
+			<td>&nbsp;</td>
+			<td>&nbsp;</td>
+		</tr>
+		</table>
+		<table summary="" cellpadding="3" cellspacing="0" >
+		<tr>
+			<td colspan="2" class="step-row"><h1 class="step-row">Step 3</h1>&nbsp;Please check URL settings, and select a default timezone and a default backend language...</td>
+		</tr>
+		<tr>
+			<td class="name">
+				Absolute URL:
+			</td>
+			<td class="value">
+				<?php
+				// Try to guess installation URL
+				$guessed_url = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
+				$guessed_url = rtrim(dirname($guessed_url), 'install');
+				?>
+				<input <?php echo field_error('wb_url');?> type="text" tabindex="1" name="wb_url" style="width: 99%;" value="<?php if(isset($_SESSION['wb_url'])) { echo $_SESSION['wb_url']; } else { echo $guessed_url; } ?>" />
+			</td>
+		</tr>
+		<tr>
+			<td class="name">
+				Default Timezone:
+			</td>
+			<td>
+				<select <?php echo field_error('default_timezone');?> tabindex="3" name="default_timezone" style="width: 100%;">
+					<?php
+					$TIMEZONES['-12'] = 'GMT - 12 Hours';
+					$TIMEZONES['-11'] = 'GMT -11 Hours';
+					$TIMEZONES['-10'] = 'GMT -10 Hours';
+					$TIMEZONES['-9'] = 'GMT -9 Hours';
+					$TIMEZONES['-8'] = 'GMT -8 Hours';
+					$TIMEZONES['-7'] = 'GMT -7 Hours';
+					$TIMEZONES['-6'] = 'GMT -6 Hours';
+					$TIMEZONES['-5'] = 'GMT -5 Hours';
+					$TIMEZONES['-4'] = 'GMT -4 Hours';
+					$TIMEZONES['-3.5'] = 'GMT -3.5 Hours';
+					$TIMEZONES['-3'] = 'GMT -3 Hours';
+					$TIMEZONES['-2'] = 'GMT -2 Hours';
+					$TIMEZONES['-1'] = 'GMT -1 Hour';
+					$TIMEZONES['0'] = 'GMT';
+					$TIMEZONES['1'] = 'GMT +1 Hour';
+					$TIMEZONES['2'] = 'GMT +2 Hours';
+					$TIMEZONES['3'] = 'GMT +3 Hours';
+					$TIMEZONES['3.5'] = 'GMT +3.5 Hours';
+					$TIMEZONES['4'] = 'GMT +4 Hours';
+					$TIMEZONES['4.5'] = 'GMT +4.5 Hours';
+					$TIMEZONES['5'] = 'GMT +5 Hours';
+					$TIMEZONES['5.5'] = 'GMT +5.5 Hours';
+					$TIMEZONES['6'] = 'GMT +6 Hours';
+					$TIMEZONES['6.5'] = 'GMT +6.5 Hours';
+					$TIMEZONES['7'] = 'GMT +7 Hours';
+					$TIMEZONES['8'] = 'GMT +8 Hours';
+					$TIMEZONES['9'] = 'GMT +9 Hours';
+					$TIMEZONES['9.5'] = 'GMT +9.5 Hours';
+					$TIMEZONES['10'] = 'GMT +10 Hours';
+					$TIMEZONES['11'] = 'GMT +11 Hours';
+					$TIMEZONES['12'] = 'GMT +12 Hours';
+					$TIMEZONES['13'] = 'GMT +13 Hours';
+					foreach($TIMEZONES AS $hour_offset => $title) {
+						?>
+							<option value="<?php echo $hour_offset; ?>"<?php if(isset($_SESSION['default_timezone']) AND $_SESSION['default_timezone'] == $hour_offset) { echo ' selected="selected"'; } elseif(!isset($_SESSION['default_timezone']) AND $hour_offset == 0) { echo ' selected="selected"'; } ?>><?php echo $title; ?></option>
+						<?php
+					}
+					?>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="name">
+				Default Language:
+			</td>
+			<td>
+				<select <?php echo field_error('default_language');?> tabindex="3" name="default_language" style="width: 100%;">
+					<?php
+					$DEFAULT_LANGUAGE = array(
+						'BG'=>'Bulgarian', 'CA'=>'Catalan', 'CS'=>'&#268;e&scaron;tina', 'DA'=>'Danish', 'DE'=>'Deutsch', 'EN'=>'English',
+						'ES'=>'Spanish', 'ET'=>'Eesti', 'FI'=>'Suomi', 'FR'=>'Fran&ccedil;ais',
+						'HR'=>'Hrvatski', 'HU'=>'Magyar','IT'=>'Italiano', 'LV'=>'Latviesu',
+						'NL'=>'Nederlands', 'NO'=>'Norsk', 'PL'=>'Polski', 'PT'=>'Portuguese (Brazil)', 'RU'=>'Russian', 'SE'=>'Svenska','SK'=>'Slovensky','TR'=>'Turkish'
+					);
+					foreach($DEFAULT_LANGUAGE as $lang_id => $lang_title) {
+						?>
+							<option value="<?php echo $lang_id; ?>"<?php if(isset($_SESSION['default_language']) AND $_SESSION['default_language'] == $lang_id) { echo ' selected="selected"'; } elseif(!isset($_SESSION['default_language']) AND $lang_id == 'EN') { echo ' selected="selected"'; } ?>><?php echo $lang_title; ?></option>
+						<?php
+					}
+					?>
+				</select>
+			</td>
+		</tr>
+		</table>
+		<table border="0" summary="" cellpadding="0" cellspacing="0">
+		<tr>
+			<td class="step-row" colspan="3"><h1 class="step-row">Step 4</h1>&nbsp;Please specify your operating system information below...</td>
+		</tr>
+		<tr>
+			<td class="name">&nbsp;
+				Server Operating System:
+			</td>
+			<td style="">
+				<input type="radio" tabindex="4" name="operating_system" id="operating_system_linux" onclick="document.getElementById('file_perms_box').style.display = 'none';" value="linux"<?php if(!isset($_SESSION['operating_system']) OR $_SESSION['operating_system'] == 'linux') { echo ' checked="checked"'; } ?> />
+				<span style="cursor: pointer;" onclick="javascript: change_os('linux');">Linux/Unix based</span>
+				<br />
+				<input type="radio" tabindex="5" name="operating_system" id="operating_system_windows" onclick="document.getElementById('file_perms_box').style.display = 'none';" value="windows"<?php if(isset($_SESSION['operating_system']) AND $_SESSION['operating_system'] == 'windows') { echo ' checked="checked"'; } ?> />
+				<span style="cursor: pointer;" onclick="javascript: change_os('windows');">Windows</span>
+			</td>
+		</tr>
+		<tr>
+			<td class="name">&nbsp;</td>
+			<td class="value">
+				<div id="file_perms_box" style="line-height:2em; position: relative; width: 100%;float:left; margin: 0; padding: 0; display: <?php if(isset($_SESSION['operating_system']) AND $_SESSION['operating_system'] == 'windows') { echo 'none'; } else { echo 'none'; } ?>;">
+					<input type="checkbox" tabindex="6" name="world_writeable" id="world_writeable" value="true"<?php if(isset($_SESSION['world_writeable']) AND $_SESSION['world_writeable'] == true) { echo ' checked="checked'; } ?> />
+ 					<label style=" margin: 0;  " for="world_writeable">
+						World-writeable file permissions (777)
+					</label>
+				<br />
+					<p class="warning">(Please note: only recommended for testing environments)</p>
+				</div>
+			</td>
+		</tr>
+		</table>
+		<table summary="" cellpadding="0" cellspacing="0">
+    		<tr>
+    			<td colspan="2" class="step-row"><h1 class="step-row">Step 5</h1>&nbsp;Please enter your MySQL database server details below...</td>
+    		</tr>
+    		<tr>
+    			<td class="name">Host Name</td>
+    			<td class="value">
+    				<input <?php echo field_error('database_host');?> type="text" tabindex="7" name="database_host" value="<?php if(isset($_SESSION['database_host'])) { echo $_SESSION['database_host']; } else { echo 'localhost'; } ?>" />
+    			</td>
+    		</tr>
+    		<tr>
+    			<td class="name">Database Name&nbsp;([a-zA-Z0-9_-])</td>
+    			<td class="value">
+    				<input <?php echo field_error('database_name')?> type="text" tabindex="8" name="database_name" value="<?php if(isset($_SESSION['database_name'])) { echo $_SESSION['database_name']; } else { echo 'DatabaseName'; } ?>" />
+    			</td>
+    		</tr>
+		<tr>
+			<td class="name">Table Prefix&nbsp;([a-zA-Z0-9_])</td>
+			<td class="value">
+				<input <?php echo field_error('table_prefix')?> type="text" tabindex="11" name="table_prefix" value="<?php if(isset($_SESSION['table_prefix'])) { echo $_SESSION['table_prefix']; } else { echo 'wb_'; } ?>" />
+			</td>
+		</tr>
+		<tr>
+    			<td class="name">Username:</td>
+    			<td class="value">
+    				<input <?php echo field_error('database_username');?> type="text" tabindex="9" name="database_username" value="<?php if(isset($_SESSION['database_username'])) { echo $_SESSION['database_username']; } else { echo 'root'; } ?>" />
+    			</td>
+		</tr>
+		<tr>
+    			<td class="name">Password:</td>
+    			<td class="value">
+    				<input type="password" tabindex="10" name="database_password" value="<?php if(isset($_SESSION['database_password'])) { echo $_SESSION['database_password']; } ?>" />
+    			</td>
+		</tr>
+		<tr>
+			<td class="name hide" colspan="2">
+				<input type="checkbox" tabindex="12" name="install_tables" id="install_tables" value="true"<?php if(!isset($_SESSION['install_tables'])) { echo ' checked="checked"'; } elseif($_SESSION['install_tables'] == 'true') { echo ' checked="checked"'; } ?> />
+				<label for="install_tables" style="color: #666666;">Install Tables</label>
+				<br />
+				<span style="font-size: 1px; color: #666666;">(Please note: May remove existing tables and data)</span>
+			</td>
+		</tr>
+		</table>
+		<table summary="" cellpadding="0" cellspacing="0" >
+		<tbody>
+		<tr>
+			<td colspan="2" class="step-row"><h1 class="step-row">Step 6</h1>&nbsp;Please enter your website title below...</td>
+		</tr>
+		<tr>
+			<td class="name">Website Title:</td>
+			<td class="value">
+				<input <?php echo field_error('website_title');?> type="text" tabindex="13" name="website_title" value="<?php if(isset($_SESSION['website_title'])) { echo $_SESSION['website_title']; } else { echo 'Enter your website title'; } ?>" />
+			</td>
+		</tr>
+		</tbody>
+		</table>
+		<table summary="" cellpadding="0" cellspacing="0" border="0">
+		<tr>
+			<td colspan="2" class="step-row"><h1 class="step-row">Step 7</h1> Please enter your Administrator account details below...</td>
+		</tr>
+		<tr>
+			<td class="name">Loginname:</td>
+			<td class="value">
+				<input <?php echo field_error('admin_username');?> type="text" tabindex="14" name="admin_username" value="<?php if(isset($_SESSION['admin_username'])) { echo $_SESSION['admin_username']; } else { echo 'admin'; } ?>" />
+			</td>
+		</tr>
+		<tr>
+			<td class="name">Email:</td>
+			<td class="value">
+				<input <?php echo field_error('admin_email');?> type="text" tabindex="15" name="admin_email" value="<?php if(isset($_SESSION['admin_email'])) { echo $_SESSION['admin_email']; } ?>" />
+			</td>
+		</tr>
+		<tr>
+			<td class="name">Password:</td>
+			<td class="value">
+				<input <?php echo field_error('admin_password');?> type="password" tabindex="16" name="admin_password" value="" />
+			</td>
+		</tr>
+		<tr>
+			<td class="name">Re-Password:</td>
+			<td class="value">
+				<input <?php echo field_error('admin_repassword');?> type="password" tabindex="17" name="admin_repassword" value=""  />
+			</td>
+		</tr>
+		</table>
+		<table summary="" cellpadding="0" cellspacing="0">
+				<tr valign="top">
+					<td><strong>Please note: &nbsp;</strong></td>
+				</tr>
+				<tr valign="top">
+					<td>
+						<p class="warning">
+						WebsiteBaker is released under the
+						<a href="http://www.gnu.org/licenses/gpl.html" target="_blank" tabindex="19">GNU General Public License</a>
+						<br />
+						By clicking install, you are accepting the license.
+						</p>
+					</td>
+				</tr>
+				<tr valign="top">
+			<td>
+			<p class="center">
+				<?php if($installFlag == true) { ?>
+				<input type="submit" tabindex="20" name="install" value="Install WebsiteBaker" />
+				<?php } else { ?>
+				<input type="button" tabindex="20" name="restart" value="Check your Settings in Step1 or Step2" class="submit" onclick="javascript: window.location = '<?php print $_SERVER['SCRIPT_NAME'] ?>';" />
+				<?php } ?>
+			</p>
+			</td>
+		</tr>
+		</table>
+
+</form>
+
+	<div style="padding: 10px 0px 10px 0px; text-align:center;">
+		<!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+		<a href="http://www.websitebaker2.org/" style="color: #000000;" target="_blank">WebsiteBaker</a>
+		is	released under the
+		<a href="http://www.gnu.org/licenses/gpl.html" style="color: #000000;" target="_blank">GNU General Public License</a>
+		<!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+	</div >
+</div>
+
+</body>
+</html>

Property changes on: tags/2.8.3/wb/install/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/install/stylesheet.css
===================================================================
--- tags/2.8.3/wb/install/stylesheet.css	(nonexistent)
+++ tags/2.8.3/wb/install/stylesheet.css	(revision 1610)
@@ -0,0 +1,179 @@
+@charset "UTF-8";
+/* <![CDATA[ */
+/*
+*/
+* { margin :0px auto; padding :0px; }
+* html body * { overflow :visible; }
+
+html {
+	padding:0; 	margin:0; border:0;
+	font-size:85%; font-family: Arial, Verdana, Helvetica, sans-serif;
+	color: #202020;
+   overflow :-moz-scrollbars-vertical; overflow-x :auto;
+}
+table {font-size: 1em;}
+body {
+	padding: 0; border:0; margin: 0;
+	background: url('background.png') repeat-x 0px 0px;
+	background-color: #a8bccb;
+	height: 101%;
+}
+
+div.body {
+	width: 790px;
+	margin: 1em auto;
+	padding: 20px 20px 5px 20px;
+	background-color: #ffffff;
+	border: solid 1px #305c8d
+}
+div.content {
+	margin-top:20px;
+}
+
+/*
+	TABLE Elements
+*/
+table {
+	background-color: #f8f8ff;
+	margin-top: 15px;
+	margin-bottom: 5px;
+	width: 100%;
+	border-style: solid;
+	border-width: 1px 2px 2px 1px;
+	border-color: #a3baca;
+}
+	table > thead {
+		background-color: #f2f1ff;
+	}
+		table > thead > tr {
+		}
+			table > thead > tr > th {
+				color: #555758;
+				font-size: 1.15em;
+				padding: 1.2em 1em;
+			}
+			table > thead > tr > td {
+				color: #555758;
+				font-size: 1.08em;
+				padding: 1.2em 1em;
+			}
+	table > tbody {
+		display: block;
+	}
+		table > tbody > tr {
+   border-bottom :1px solid #222222; /* #d2d1cc; */
+   padding :0.8em 0 0.2em 0;
+   width :100%;
+}
+			table > tbody > tr > th {
+				font-size: 1em;
+				width: 1%;
+				padding-left: 0.8em; padding-right: 0.8em;
+				vertical-align: top;
+				text-align: right;
+				white-space: nowrap;
+			}
+			table > tbody > tr > td {
+				font-size: 1em;
+				width: 19%;
+				padding-left: 0.8em; padding-right: 0.8em;
+				vertical-align: top;
+				text-align: left;
+            line-height :2em;
+			}
+
+td.step-row {
+   line-height : 3em;
+   color : #666666;
+   font-weight : bold;
+   font-size : 100%;
+}
+td.name { 
+   width : 180px;
+   color: #666666;
+   vertical-align :middle;
+   font-weight : bold;
+   font-size : 90%;
+   float :left;
+ }
+td.value { 
+   width : 100%;
+   vertical-align :middle;
+ }
+td.value input { 
+   width : 100%;
+   vertical-align :middle;
+ }
+ 
+ 
+h1.step-row {
+   margin : 0;
+   display :inline;
+   color : #6699ff;
+}
+/*
+	FORM Elements
+*/
+form { margin: 0; }
+input, select { padding: 2px; border: solid 1px #a3baca; }
+input:focus, select:focus { background: #fdf8e8; }
+input.submit    {
+	color: #305c8d;
+	font-size: 12px;
+	font-weight: bold;
+	text-transform: uppercase;
+	letter-spacing: 1px;
+	padding: 6px;
+	margin: 1em 0;
+	cursor: pointer;
+	border: outset 2px green;
+}
+input.submit:hover  {
+	border-style: inset;
+}
+input.submit.bad {
+	background-color: #fde8e8;
+	border-color: red;
+}
+input.submit.good {
+	background-color: #deffde;
+	border-color: green;
+}
+/*
+	COMMON Elements
+*/
+img {border: none; }
+p  { margin: 11px 0 4px 0 }
+h1 { color: #3a628f; font-size: 1.3em; margin: 10px 0 5px; border-top: medium none }
+a, a:link, a:visited, a:active  { color: #003366; text-decoration: underline }
+a:focus {outline: none; }
+a:hover  { color: #336699 }
+/*
+	HINTS
+*/
+
+.warning, .error {
+	color: #b70000;
+	line-height: 1.2em;
+	background-color: #fde8e8;
+	margin-top: 0.5em;
+	padding: 0.3em 0.5em;
+	border: solid 1px
+}
+.warning {
+	color: #ca6800;
+}
+.bad { color: #b70000; }
+.good { color: #118301; }
+.warn { color: #ca6800; }
+.hint { color: #464646; font-size: 0.85em; }
+.small { font-size: 0.85em; }
+.italic { font-style: italic; }
+.center { text-align: center; }
+.hide { display: none; }
+/*
+	List Elements
+*/
+ul  { margin: 0; padding: 2px 0 2px 15px; }
+li  { list-style-type: square; margin: 0; }
+/* ************************************************************************** */

Property changes on: tags/2.8.3/wb/install/stylesheet.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/install/background.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/install/background.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/install/logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/install/logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/install/save.php
===================================================================
--- tags/2.8.3/wb/install/save.php	(nonexistent)
+++ tags/2.8.3/wb/install/save.php	(revision 1610)
@@ -0,0 +1,809 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         install
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL:  $
+ * @lastmodified    $Date: $
+ *
+ */
+
+$debug = true;
+
+if (true === $debug) {
+	ini_set('display_errors', 1);
+	error_reporting(E_ALL);
+}
+// Start a session
+if(!defined('SESSION_STARTED')) {
+	session_name('wb_session_id');
+	session_start();
+	define('SESSION_STARTED', true);
+}
+// get random-part for session_name()
+list($usec,$sec) = explode(' ',microtime());
+srand((float)$sec+((float)$usec*100000));
+$session_rand = rand(1000,9999);
+
+// Function to set error
+function set_error($message, $field_name = '') {
+	global $_POST;
+	if(isset($message) AND $message != '') {
+		// Copy values entered into session so user doesn't have to re-enter everything
+		if(isset($_POST['website_title'])) {
+			$_SESSION['wb_url'] = $_POST['wb_url'];
+			$_SESSION['default_timezone'] = $_POST['default_timezone'];
+			$_SESSION['default_language'] = $_POST['default_language'];
+			if(!isset($_POST['operating_system'])) {
+				$_SESSION['operating_system'] = 'linux';
+			} else {
+				$_SESSION['operating_system'] = $_POST['operating_system'];
+			}
+			if(!isset($_POST['world_writeable'])) {
+				$_SESSION['world_writeable'] = false;
+			} else {
+				$_SESSION['world_writeable'] = true;
+			}
+			$_SESSION['database_host'] = $_POST['database_host'];
+			$_SESSION['database_username'] = $_POST['database_username'];
+			$_SESSION['database_password'] = $_POST['database_password'];
+			$_SESSION['database_name'] = $_POST['database_name'];
+			$_SESSION['table_prefix'] = $_POST['table_prefix'];
+			if(!isset($_POST['install_tables'])) {
+				$_SESSION['install_tables'] = false;
+			} else {
+				$_SESSION['install_tables'] = true;
+			}
+			$_SESSION['website_title'] = $_POST['website_title'];
+			$_SESSION['admin_username'] = $_POST['admin_username'];
+			$_SESSION['admin_email'] = $_POST['admin_email'];
+			$_SESSION['admin_password'] = $_POST['admin_password'];
+			$_SESSION['admin_repassword'] = $_POST['admin_repassword'];
+		}
+		// Set the message
+		$_SESSION['message'] = $message;
+		// Set the element(s) to highlight
+		if($field_name != '') {
+			$_SESSION['ERROR_FIELD'] = $field_name;
+		}
+		// Specify that session support is enabled
+		$_SESSION['session_support'] = '<font class="good">Enabled</font>';
+		// Redirect to first page again and exit
+		header('Location: index.php?sessions_checked=true');
+		exit();
+	}
+}
+/* */
+
+// Function to workout what the default permissions are for files created by the webserver
+function default_file_mode($temp_dir) {
+	$v = explode(".",PHP_VERSION);
+	$v = $v[0].$v[1];
+	if($v > 41 AND is_writable($temp_dir)) {
+		$filename = $temp_dir.'/test_permissions.txt';
+		$handle = fopen($filename, 'w');
+		fwrite($handle, 'This file is to get the default file permissions');
+		fclose($handle);
+		$default_file_mode = '0'.substr(sprintf('%o', fileperms($filename)), -3);
+		unlink($filename);
+	} else {
+		$default_file_mode = '0777';
+	}
+	return $default_file_mode;
+}
+
+// Function to workout what the default permissions are for directories created by the webserver
+function default_dir_mode($temp_dir) {
+	$v = explode(".",PHP_VERSION);
+	$v = $v[0].$v[1];
+	if($v > 41 AND is_writable($temp_dir)) {
+		$dirname = $temp_dir.'/test_permissions/';
+		mkdir($dirname);
+		$default_dir_mode = '0'.substr(sprintf('%o', fileperms($dirname)), -3);
+		rmdir($dirname);
+	} else {
+		$default_dir_mode = '0777';
+	}
+	return $default_dir_mode;
+}
+
+function add_slashes($input) {
+	if ( get_magic_quotes_gpc() || ( !is_string($input) ) ) {
+		return $input;
+	}
+	$output = addslashes($input);
+	return $output;
+}
+
+// Begin check to see if form was even submitted
+// Set error if no post vars found
+if(!isset($_POST['website_title'])) {
+	set_error('Please fill-in the form below');
+}
+// End check to see if form was even submitted
+
+// Begin path and timezone details code
+
+// Check if user has entered the installation url
+if(!isset($_POST['wb_url']) OR $_POST['wb_url'] == '') {
+	set_error('Please enter an absolute URL', 'wb_url');
+} else {
+	$wb_url = $_POST['wb_url'];
+}
+// Remove any slashes at the end of the URL
+if(substr($wb_url, strlen($wb_url)-1, 1) == "/") {
+	$wb_url = substr($wb_url, 0, strlen($wb_url)-1);
+}
+if(substr($wb_url, strlen($wb_url)-1, 1) == "\\") {
+	$wb_url = substr($wb_url, 0, strlen($wb_url)-1);
+}
+if(substr($wb_url, strlen($wb_url)-1, 1) == "/") {
+	$wb_url = substr($wb_url, 0, strlen($wb_url)-1);
+}
+if(substr($wb_url, strlen($wb_url)-1, 1) == "\\") {
+	$wb_url = substr($wb_url, 0, strlen($wb_url)-1);
+}
+// Get the default time zone
+if(!isset($_POST['default_timezone']) OR !is_numeric($_POST['default_timezone'])) {
+	set_error('Please select a valid default timezone', 'default_timezone');
+} else {
+	$default_timezone = $_POST['default_timezone']*60*60;
+}
+// End path and timezone details code
+
+// Get the default language
+$allowed_languages = array('BG','CA', 'CS', 'DA', 'DE', 'EN', 'ES', 'ET', 'FI', 'FR', 'HR', 'HU', 'IT', 'LV', 'NL', 'NO', 'PL', 'PT', 'RU','SE','SK','TR');
+if(!isset($_POST['default_language']) OR !in_array($_POST['default_language'], $allowed_languages)) {
+	set_error('Please select a valid default backend language','default_language');
+} else {
+	$default_language = $_POST['default_language'];
+	// make sure the selected language file exists in the language folder
+	if(!file_exists('../languages/' .$default_language .'.php')) {
+		set_error('The language file: \'' .$default_language .'.php\' is missing. Upload file to language folder or choose another language','default_language');
+	}
+}
+// End default language details code
+
+// Begin operating system specific code
+// Get operating system
+if(!isset($_POST['operating_system']) OR $_POST['operating_system'] != 'linux' AND $_POST['operating_system'] != 'windows') {
+	set_error('Please select a valid operating system');
+} else {
+	$operating_system = $_POST['operating_system'];
+}
+// Work-out file permissions
+if($operating_system == 'windows') {
+	$file_mode = '0777';
+	$dir_mode = '0777';
+} elseif(isset($_POST['world_writeable']) AND $_POST['world_writeable'] == 'true') {
+	$file_mode = '0777';
+	$dir_mode = '0777';
+} else {
+	$file_mode = default_file_mode('../temp');
+	$dir_mode = default_dir_mode('../temp');
+}
+// End operating system specific code
+
+// Begin database details code
+// Check if user has entered a database host
+if(!isset($_POST['database_host']) OR $_POST['database_host'] == '') {
+	set_error('Please enter a database host name', 'database_host');
+} else {
+	$database_host = $_POST['database_host'];
+}
+// Check if user has entered a database username
+if(!isset($_POST['database_username']) OR $_POST['database_username'] == '') {
+	set_error('Please enter a database username','database_username');
+} else {
+	$database_username = $_POST['database_username'];
+}
+// Check if user has entered a database password
+if(!isset($_POST['database_password'])) {
+	set_error('Please enter a database password', 'database_password');
+} else {
+	$database_password = $_POST['database_password'];
+}
+// Check if user has entered a database name
+if(!isset($_POST['database_name']) OR $_POST['database_name'] == '') {
+	set_error('Please enter a database name', 'database_name');
+} else {
+	// make sure only allowed characters are specified
+	if(preg_match('/[^a-z0-9_-]+/i', $_POST['database_name'])) {
+		// contains invalid characters (only a-z, A-Z, 0-9 and _ allowed to avoid problems with table/field names)
+		set_error('Only characters a-z, A-Z, 0-9, - and _ allowed in database name.', 'database_name');
+	}
+	$database_name = $_POST['database_name'];
+}
+// Get table prefix
+if(preg_match('/[^a-z0-9_]+/i', $_POST['table_prefix'])) {
+	// contains invalid characters (only a-z, A-Z, 0-9 and _ allowed to avoid problems with table/field names)
+	set_error('Only characters a-z, A-Z, 0-9 and _ allowed in table_prefix.', 'table_prefix');
+} else {
+	$table_prefix = $_POST['table_prefix'];
+}
+
+// Find out if the user wants to install tables and data
+if(isset($_POST['install_tables']) AND $_POST['install_tables'] == 'true') {
+	$install_tables = true;
+} else {
+	$install_tables = false;
+}
+// End database details code
+
+// Begin website title code
+// Get website title
+if(!isset($_POST['website_title']) OR $_POST['website_title'] == '') {
+	set_error('Please enter a website title', 'website_title');
+} else {
+	$website_title = add_slashes($_POST['website_title']);
+}
+// End website title code
+
+// Begin admin user details code
+// Get admin username
+if(!isset($_POST['admin_username']) OR $_POST['admin_username'] == '') {
+	set_error('Please enter a username for the Administrator account','admin_username');
+} else {
+	$admin_username = $_POST['admin_username'];
+}
+// Get admin email and validate it
+if(!isset($_POST['admin_email']) OR $_POST['admin_email'] == '') {
+	set_error('Please enter an email for the Administrator account','admin_email');
+} else {
+	if(preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i', $_POST['admin_email'])) {
+		$admin_email = $_POST['admin_email'];
+	} else {
+		set_error('Please enter a valid email address for the Administrator account','admin_email');
+	}
+}
+// Get the two admin passwords entered, and check that they match
+if(!isset($_POST['admin_password']) OR $_POST['admin_password'] == '') {
+	set_error('Please enter a password for the Administrator account','admin_password');
+} else {
+	$admin_password = $_POST['admin_password'];
+}
+if(!isset($_POST['admin_repassword']) OR $_POST['admin_repassword'] == '') {
+	set_error('Please make sure you re-enter the password for the Administrator account','admin_repassword');
+} else {
+	$admin_repassword = $_POST['admin_repassword'];
+}
+if($admin_password != $admin_repassword) {
+	set_error('Sorry, the two Administrator account passwords you entered do not match','admin_repassword');
+}
+// End admin user details code
+
+// Try and write settings to config file
+$config_content = "" .
+"<?php\n".
+"\n".
+"define('DB_TYPE', 'mysql');\n".
+"define('DB_HOST', '$database_host');\n".
+"define('DB_NAME', '$database_name');\n".
+"define('DB_USERNAME', '$database_username');\n".
+"define('DB_PASSWORD', '$database_password');\n".
+"define('TABLE_PREFIX', '$table_prefix');\n".
+"\n".
+"define('WB_PATH', dirname(__FILE__));\n".
+"define('WB_URL', '$wb_url');\n".
+"define('ADMIN_PATH', WB_PATH.'/admin');\n".
+"define('ADMIN_URL', WB_URL.'/admin');\n".
+"\n".
+"require_once(WB_PATH.'/framework/initialize.php');\n".
+"\n".
+"";
+
+$config_filename = '../config.php';
+// Check if the file exists and is writable first.
+if(file_exists($config_filename) AND is_writable($config_filename)) {
+	if(!$handle = fopen($config_filename, 'w')) {
+		set_error("Cannot open the configuration file ($config_filename)");
+	} else {
+		if (fwrite($handle, $config_content) === FALSE) {
+			set_error("Cannot write to the configuration file ($config_filename)");
+		}
+		// Close file
+		fclose($handle);
+	}
+} else {
+	set_error("The configuration file $config_filename is not writable. Change its permissions so it is, then re-run step 4.");
+}
+
+// Define configuration vars
+define('DB_TYPE', 'mysql');
+define('DB_HOST', $database_host);
+define('DB_NAME', $database_name);
+define('DB_USERNAME', $database_username);
+define('DB_PASSWORD', $database_password);
+define('TABLE_PREFIX', $table_prefix);
+define('WB_PATH', str_replace(array('/install','\install'), '',dirname(__FILE__)));
+define('WB_URL', $wb_url);
+define('ADMIN_PATH', WB_PATH.'/admin');
+define('ADMIN_URL', $wb_url.'/admin');
+
+// Check if the user has entered a correct path
+if(!file_exists(WB_PATH.'/framework/class.admin.php')) {
+	set_error('It appears the Absolute path that you entered is incorrect');
+}
+
+// Try connecting to database	
+if(!@mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD)) {
+	set_error('Database host name, username and/or password incorrect. MySQL Error:<br />'.mysql_error());
+}
+
+// Try to create the database
+mysql_query('CREATE DATABASE `'.$database_name.'`');
+
+// Close the mysql connection
+mysql_close();
+
+$sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
+$sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
+require_once($sSecMod);
+
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// Dummy class to allow modules' install scripts to call $admin->print_error
+class admin_dummy extends admin
+{
+	var $error='';
+	function print_error($message)
+	{
+		$this->error=$message;
+	}
+}
+
+// Include WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Re-connect to the database, this time using in-build database class
+require_once(WB_PATH.'/framework/class.login.php');
+
+$database=new database();
+
+// Check if we should install tables
+if($install_tables == true) {
+	if (!defined('WB_INSTALL_PROCESS')) define ('WB_INSTALL_PROCESS', true);
+	// Remove tables if they exist
+
+	// Pages table
+	$pages = "DROP TABLE IF EXISTS `".TABLE_PREFIX."pages`";
+	$database->query($pages);
+	// Sections table
+	$sections = "DROP TABLE IF EXISTS `".TABLE_PREFIX."sections`";
+	$database->query($sections);
+	// Settings table
+	$settings = "DROP TABLE IF EXISTS `".TABLE_PREFIX."settings`";
+	$database->query($settings);
+	// Users table
+	$users = "DROP TABLE IF EXISTS `".TABLE_PREFIX."users`";
+	$database->query($users);
+	// Groups table
+	$groups = "DROP TABLE IF EXISTS `".TABLE_PREFIX."groups`";
+	$database->query($groups);
+	// Search table
+	$search = "DROP TABLE IF EXISTS `".TABLE_PREFIX."search`";
+	$database->query($search);
+	// Addons table
+	$addons = "DROP TABLE IF EXISTS `".TABLE_PREFIX."addons`";
+	$database->query($addons);
+				
+	// Try installing tables
+	
+	// Pages table
+	$pages = 'CREATE TABLE `'.TABLE_PREFIX.'pages` ( `page_id` INT NOT NULL auto_increment,'
+	       . ' `parent` INT NOT NULL DEFAULT \'0\','
+	       . ' `root_parent` INT NOT NULL DEFAULT \'0\','
+	       . ' `level` INT NOT NULL DEFAULT \'0\','
+	       . ' `link` TEXT NOT NULL,'
+	       . ' `target` VARCHAR( 7 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `page_title` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `menu_title` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `description` TEXT NOT NULL ,'
+	       . ' `keywords` TEXT NOT NULL ,'
+	       . ' `page_trail` TEXT NOT NULL  ,'
+	       . ' `template` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `visibility` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `position` INT NOT NULL DEFAULT \'0\','
+	       . ' `menu` INT NOT NULL DEFAULT \'0\','
+	       . ' `language` VARCHAR( 5 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `searching` INT NOT NULL DEFAULT \'0\','
+	       . ' `admin_groups` TEXT NOT NULL ,'
+	       . ' `admin_users` TEXT NOT NULL ,'
+	       . ' `viewing_groups` TEXT NOT NULL ,'
+	       . ' `viewing_users` TEXT NOT NULL ,'
+	       . ' `modified_when` INT NOT NULL DEFAULT \'0\','
+	       . ' `modified_by` INT NOT NULL  DEFAULT \'0\','
+	       . ' PRIMARY KEY ( `page_id` ) '
+	       . ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($pages);
+	
+	// Sections table
+	$pages = 'CREATE TABLE `'.TABLE_PREFIX.'sections` ( `section_id` INT NOT NULL auto_increment,'
+	       . ' `page_id` INT NOT NULL DEFAULT \'0\','
+	       . ' `position` INT NOT NULL DEFAULT \'0\','
+	       . ' `module` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `block` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `publ_start` VARCHAR( 255 ) NOT NULL DEFAULT \'0\' ,'
+	       . ' `publ_end` VARCHAR( 255 ) NOT NULL DEFAULT \'0\' ,' 
+	       . ' PRIMARY KEY ( `section_id` ) '
+	       . ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($pages);
+
+	require(ADMIN_PATH.'/interface/version.php');
+	
+	// Settings table
+	$settings='CREATE TABLE `'.TABLE_PREFIX.'settings` ( `setting_id` INT NOT NULL auto_increment,'
+		. ' `name` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+		. ' `value` TEXT NOT NULL ,'
+		. ' PRIMARY KEY ( `setting_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($settings);
+
+	$settings_rows=	"INSERT INTO `".TABLE_PREFIX."settings` "
+	." (name, value) VALUES "
+	." ('wb_version', '".VERSION."'),"
+	." ('wb_revision', '".REVISION."'),"
+ 	." ('wb_sp', '".SP."'),"
+	." ('website_title', '$website_title'),"
+	." ('website_description', ''),"
+	." ('website_keywords', ''),"
+	." ('website_header', ''),"
+	." ('website_footer', ''),"
+	." ('wysiwyg_style', 'font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;'),"
+	." ('er_level', ''),"
+	." ('default_language', '$default_language'),"
+	." ('app_name', 'wb_$session_rand'),"
+	." ('sec_anchor', 'wb_'),"
+	." ('default_timezone', '$default_timezone'),"
+	." ('default_date_format', 'M d Y'),"
+	." ('default_time_format', 'g:i A'),"
+	." ('redirect_timer', '1500'),"
+	." ('home_folders', 'true'),"
+	." ('warn_page_leave', '1'),"
+	." ('default_template', 'round'),"
+	." ('default_theme', 'wb_theme'),"
+	." ('default_charset', 'utf-8'),"
+	." ('multiple_menus', 'true'),"
+	." ('page_level_limit', '4'),"
+	." ('intro_page', 'false'),"
+	." ('page_trash', 'inline'),"
+	." ('homepage_redirection', 'false'),"
+	." ('page_languages', 'true'),"
+	." ('wysiwyg_editor', 'fckeditor'),"
+	." ('manage_sections', 'true'),"
+	." ('section_blocks', 'true'),"
+	." ('smart_login', 'true'),"
+	." ('frontend_login', 'false'),"
+	." ('frontend_signup', 'false'),"
+	." ('search', 'public'),"
+	." ('page_extension', '.php'),"
+	." ('page_spacer', '-'),"
+	." ('pages_directory', '/pages'),"
+	." ('rename_files_on_upload', 'ph.*?,cgi,pl,pm,exe,com,bat,pif,cmd,src,asp,aspx'),"
+	." ('media_directory', '/media'),"
+	." ('operating_system', '$operating_system'),"
+	." ('string_file_mode', '$file_mode'),"
+	." ('string_dir_mode', '$dir_mode'),"
+	." ('wbmailer_routine', 'phpmail'),"
+	." ('server_email', '$admin_email'),"		// avoid that mail provider (e.g. mail.com) reject mails like yourname@mail.com
+	." ('wbmailer_default_sendername', 'WB Mailer'),"
+	." ('wbmailer_smtp_host', ''),"
+	." ('wbmailer_smtp_auth', ''),"
+	." ('wbmailer_smtp_username', ''),"
+	." ('wbmailer_smtp_password', ''),"
+	." ('fingerprint_with_ip_octets', '2'),"
+	." ('secure_form_module', ''),"
+	." ('mediasettings', '')";
+	$database->query($settings_rows);
+	
+	// Users table
+	$users = 'CREATE TABLE `'.TABLE_PREFIX.'users` ( `user_id` INT NOT NULL auto_increment,'
+	       . ' `group_id` INT NOT NULL DEFAULT \'0\','
+	       . ' `groups_id` VARCHAR( 255 ) NOT NULL DEFAULT \'0\','
+	       . ' `active` INT NOT NULL DEFAULT \'0\','
+	       . ' `username` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `password` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `remember_key` VARCHAR( 255 ) NOT NULL DEFAULT \'\','
+	       . ' `last_reset` INT NOT NULL DEFAULT \'0\','
+	       . ' `display_name` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `email` TEXT NOT NULL ,'
+	       . ' `timezone` INT NOT NULL DEFAULT \'0\','
+	       . ' `date_format` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `time_format` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	       . ' `language` VARCHAR( 5 ) NOT NULL DEFAULT \'' .$default_language .'\' ,'
+	       . ' `home_folder` TEXT NOT NULL ,'
+	       . ' `login_when` INT NOT NULL  DEFAULT \'0\','
+	       . ' `login_ip` VARCHAR( 15 ) NOT NULL DEFAULT \'\' ,'
+	       . ' PRIMARY KEY ( `user_id` ) '
+	       . ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($users);
+	
+	// Groups table
+	$groups = 'CREATE TABLE `'.TABLE_PREFIX.'groups` ( `group_id` INT NOT NULL auto_increment,'
+	        . ' `name` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	        . ' `system_permissions` TEXT NOT NULL ,'
+	        . ' `module_permissions` TEXT NOT NULL ,'
+	        . ' `template_permissions` TEXT NOT NULL ,'
+	        . ' PRIMARY KEY ( `group_id` ) '
+	        . ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($groups);
+	
+	// Search settings table
+	$search = 'CREATE TABLE `'.TABLE_PREFIX.'search` ( `search_id` INT NOT NULL auto_increment,'
+	        . ' `name` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+	        . ' `value` TEXT NOT NULL ,'
+	        . ' `extra` TEXT NOT NULL ,'
+	        . ' PRIMARY KEY ( `search_id` ) '
+	        . ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($search);
+	
+	// Addons table
+	$addons = 'CREATE TABLE `'.TABLE_PREFIX.'addons` ( '
+			.'`addon_id` INT NOT NULL auto_increment ,'
+			.'`type` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`directory` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`name` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`description` TEXT NOT NULL ,'
+			.'`function` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`version` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`platform` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`author` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.'`license` VARCHAR( 255 ) NOT NULL DEFAULT \'\' ,'
+			.' PRIMARY KEY ( `addon_id` ) '
+			.' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($addons);
+
+	// Insert default data
+	
+	// Admin group
+	$full_system_permissions = 'pages,pages_view,pages_add,pages_add_l0,pages_settings,pages_modify,pages_intro,pages_delete,media,media_view,media_upload,media_rename,media_delete,media_create,addons,modules,modules_view,modules_install,modules_uninstall,templates,templates_view,templates_install,templates_uninstall,languages,languages_view,languages_install,languages_uninstall,settings,settings_basic,settings_advanced,access,users,users_view,users_add,users_modify,users_delete,groups,groups_view,groups_add,groups_modify,groups_delete,admintools';
+	$insert_admin_group = "INSERT INTO `".TABLE_PREFIX."groups` VALUES ('1', 'Administrators', '$full_system_permissions', '', '')";
+	$database->query($insert_admin_group);
+	// Admin user
+	$insert_admin_user = "INSERT INTO `".TABLE_PREFIX."users` (user_id,group_id,groups_id,active,username,password,email,display_name) VALUES ('1','1','1','1','$admin_username','".md5($admin_password)."','$admin_email','Administrator')";
+	$database->query($insert_admin_user);
+	
+	// Search header
+	$search_header = addslashes('
+<h1>[TEXT_SEARCH]</h1>
+
+<form name="searchpage" action="[WB_URL]/search/index.php" method="get">
+<table cellpadding="3" cellspacing="0" border="0" width="500">
+<tr>
+<td>
+<input type="hidden" name="search_path" value="[SEARCH_PATH]" />
+<input type="text" name="string" value="[SEARCH_STRING]" style="width: 100%;" />
+</td>
+<td width="150">
+<input type="submit" value="[TEXT_SEARCH]" style="width: 100%;" />
+</td>
+</tr>
+<tr>
+<td colspan="2">
+<input type="radio" name="match" id="match_all" value="all"[ALL_CHECKED] />
+<label for="match_all">[TEXT_ALL_WORDS]</label>
+<input type="radio" name="match" id="match_any" value="any"[ANY_CHECKED] />
+<label for="match_any">[TEXT_ANY_WORDS]</label>
+<input type="radio" name="match" id="match_exact" value="exact"[EXACT_CHECKED] />
+<label for="match_exact">[TEXT_EXACT_MATCH]</label>
+</td>
+</tr>
+</table>
+
+</form>
+
+<hr />
+	');
+	$insert_search_header = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'header', '$search_header', '')";
+	$database->query($insert_search_header);
+	// Search footer
+	$search_footer = addslashes('');
+	$insert_search_footer = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'footer', '$search_footer', '')";
+	$database->query($insert_search_footer);
+	// Search results header
+	$search_results_header = addslashes(''.
+'[TEXT_RESULTS_FOR] \'<b>[SEARCH_STRING]</b>\':
+<table cellpadding="2" cellspacing="0" border="0" width="100%" style="padding-top: 10px;">');
+	$insert_search_results_header = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'results_header', '$search_results_header', '')";
+	$database->query($insert_search_results_header);
+	// Search results loop
+	$search_results_loop = addslashes(''.
+'<tr style="background-color: #F0F0F0;">
+<td><a href="[LINK]">[TITLE]</a></td>
+<td align="right">[TEXT_LAST_UPDATED_BY] [DISPLAY_NAME] ([USERNAME]) [TEXT_ON] [DATE]</td>
+</tr>
+<tr><td colspan="2" style="text-align: justify; padding-bottom: 5px;">[DESCRIPTION]</td></tr>
+<tr><td colspan="2" style="text-align: justify; padding-bottom: 10px;">[EXCERPT]</td></tr>');
+
+	$insert_search_results_loop = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'results_loop', '$search_results_loop', '')";
+	$database->query($insert_search_results_loop);
+	// Search results footer
+	$search_results_footer = addslashes("</table>");
+	$insert_search_results_footer = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'results_footer', '$search_results_footer', '')";
+	$database->query($insert_search_results_footer);
+	// Search no results
+	$search_no_results = addslashes('<tr><td><p>[TEXT_NO_RESULTS]</p></td></tr>');
+	$insert_search_no_results = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'no_results', '$search_no_results', '')";
+	$database->query($insert_search_no_results);
+	// Search module-order
+	$search_module_order = addslashes('faqbaker,manual,wysiwyg');
+	$insert_search_module_order = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'module_order', '$search_module_order', '')";
+	$database->query($insert_search_module_order);
+	// Search max lines of excerpt
+	$search_max_excerpt = addslashes('15');
+	$insert_search_max_excerpt = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'max_excerpt', '$search_max_excerpt', '')";
+	$database->query($insert_search_max_excerpt);
+	// max time to search per module
+	$search_time_limit = addslashes('0');
+	$insert_search_time_limit = "INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'time_limit', '$search_time_limit', '')";
+	$database->query($insert_search_time_limit);
+	// some config-elements
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_enable_old_search', 'true', '')");
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_search_keywords', 'true', '')");
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_search_description', 'true', '')");
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_show_description', 'true', '')");
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_enable_flush', 'false', '')");
+	// Search template
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` (name) VALUES ('template')");
+
+	require_once(WB_PATH.'/framework/initialize.php');
+
+	// Include the PclZip class file (thanks to
+	require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
+
+	// Install add-ons
+	if(file_exists(WB_PATH.'/install/modules')) {
+		// Unpack pre-packaged modules
+			
+	}
+	if(file_exists(WB_PATH.'/install/templates')) {
+		// Unpack pre-packaged templates
+		
+	}
+	if(file_exists(WB_PATH.'/install/languages')) {
+		// Unpack pre-packaged languages
+		
+	}
+
+	$admin=new admin_dummy('Start','',false,false);
+
+	// Load addons into DB
+	$dirs['modules'] = WB_PATH.'/modules/';
+	$dirs['templates'] = WB_PATH.'/templates/';
+	$dirs['languages'] = WB_PATH.'/languages/';
+
+	foreach($dirs AS $type => $dir) {
+		if($handle = opendir($dir)) {
+			while(false !== ($file = readdir($handle))) {
+				if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'admin.php' AND $file != 'index.php') {
+					// Get addon type
+					if($type == 'modules') {
+						load_module($dir.'/'.$file, true);
+						// Pretty ugly hack to let modules run $admin->set_error
+						// See dummy class definition admin_dummy above
+						if ($admin->error!='') {
+							set_error($admin->error);
+						}
+					} elseif($type == 'templates') {
+						load_template($dir.'/'.$file);
+					} elseif($type == 'languages') {
+						load_language($dir.'/'.$file);
+					}
+				}
+			}
+		closedir($handle);
+		}
+	}
+	
+	// Check if there was a database error
+	if($database->is_error()) {
+		set_error($database->get_error());
+	}
+
+// end of if install_tables	
+} else {
+	/**
+	 *	DB - Exists
+	 *	Tables also?
+	 *
+	 */
+	$requested_tables = array("pages","sections","settings","users","groups","search","addons");
+	for($i=0;$i<count($requested_tables);$i++) $requested_tables[$i] = $table_prefix.$requested_tables[$i];
+	
+	$result = mysql_list_tables( DB_NAME );
+	$all_tables = array();
+	for($i=0; $i < mysql_num_rows($result); $i++) $all_tables[] = mysql_table_name($result, $i);
+
+	$missing_tables = array();
+	foreach($requested_tables as $temp_table) {
+		if (!in_array($temp_table, $all_tables)) {
+			$missing_tables[] = $temp_table;
+		}
+	}
+	
+	/**
+	 *	If one or more needed tables are missing, so 
+	 *	we can't go on and have to display an error
+	 */
+	if ( count($missing_tables) > 0 ) {
+		$error_message  = "One or more tables are missing in the selected database <b><font color='#990000'>".DB_NAME."</font></b>.<br />";
+		$error_message .= "Please install the missing tables or choose 'install tables' as recommend.<br />";
+		$error_message .= "Missing tables are: <b>".implode(", ", $missing_tables)."</b>";
+		
+		set_error( $error_message );
+	}
+	
+	/**
+	 *	Try to get some default settings ...
+	 */
+	$vars = array(
+		'DEFAULT_THEME'	=> "wb_theme",
+		'THEME_URL'		=> WB_URL."/templates/wb_theme",
+		'THEME_PATH'	=> WB_PATH."/templates/wb_theme",
+		'LANGUAGE'		=> $_POST['default_language'],
+		'SERVER_EMAIL'	=> "admin@yourdomain.com",
+		'SMART_LOGIN'	=> false
+	);
+	foreach($vars as $k => $v) if (!defined($k)) define($k, $v);
+	
+	if (!isset($MESSAGE)) include (WB_PATH."/languages/".LANGUAGE.".php");
+	
+	/**
+	 *	The important part ...
+	 *	Is there an valid user?
+	 */
+	$result = $database->query("SELECT * from ".$table_prefix."users where username='".$_POST['admin_username']."'");
+	if ( $database->is_error() ) {
+		set_error ($database->get_error() );
+	}
+	if ($result->numRows() == 0) {
+		/**
+		 *	No matches found ... user properly unknown
+	 	 */
+	 	set_error ("Unkown user. Please use a valid username.");
+	} else {
+	 	
+		$data = $result->fetchRow();
+	 	/**
+	 	 *	Does the password match
+	 	 */
+	 	if ( md5($_POST['admin_password']) != $data['password']) {
+	 		set_error ("Password didn't match");
+	 	}
+	}
+}
+
+$ThemeUrl = WB_URL.$admin->correct_theme_source('warning.html');
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('login.htt'));
+
+// Log the user in and go to Website Baker Administration
+$thisApp = new Login(
+		array(
+				"MAX_ATTEMPS" => "50",
+				"WARNING_URL" => $ThemeUrl."/warning.html",
+				"USERNAME_FIELDNAME" => 'admin_username',
+				"PASSWORD_FIELDNAME" => 'admin_password',
+				"REMEMBER_ME_OPTION" => SMART_LOGIN,
+				"MIN_USERNAME_LEN" => "2",
+				"MIN_PASSWORD_LEN" => "3",
+				"MAX_USERNAME_LEN" => "30",
+				"MAX_PASSWORD_LEN" => "30",
+				'LOGIN_URL' => ADMIN_URL."/login/index.php",
+				'DEFAULT_URL' => ADMIN_URL."/start/index.php",
+				'TEMPLATE_DIR' => $ThemePath,
+				'TEMPLATE_FILE' => 'login.htt',
+				'FRONTEND' => false,
+				'FORGOTTEN_DETAILS_APP' => ADMIN_URL."/login/forgot/index.php",
+				'USERS_TABLE' => TABLE_PREFIX."users",
+				'GROUPS_TABLE' => TABLE_PREFIX."groups",
+		)
+);

Property changes on: tags/2.8.3/wb/install/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/view.php
===================================================================
--- tags/2.8.3/wb/modules/form/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/view.php	(revision 1610)
@@ -0,0 +1,534 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+include_once(WB_PATH .'/framework/functions.php');
+/*
+function removebreaks($value) {
+	return trim(preg_replace('=((<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r)\S).*=i', null, $value));
+}
+function checkbreaks($value) {
+	return $value === removebreaks($value);
+}
+*/
+
+if (!function_exists('emailAdmin')) {
+	function emailAdmin() {
+		global $database,$admin;
+        $retval = $admin->get_email();
+        if($admin->get_user_id()!='1') {
+			$sql  = 'SELECT `email` FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE `user_id`=\'1\' ';
+	        $retval = $database->get_one($sql);
+
+        }
+		return $retval;
+	}
+}
+
+// Function for generating an optionsfor a select field
+if (!function_exists('make_option')) {
+	function make_option(&$n, $k, $values) {
+		// start option group if it exists
+		if (substr($n,0,2) == '[=') {
+		 	$n = '<optgroup label="'.substr($n,2,strlen($n)).'">'.PHP_EOL;
+		} elseif ($n == ']') {
+			$n = '</optgroup>'.PHP_EOL;
+		} else {
+			if(in_array($n, $values)) {
+				$n = '<option selected="selected" value="'.$n.'">'.$n.'</option>'.PHP_EOL;
+			} else {
+				$n = '<option value="'.$n.'">'.$n.'</option>'.PHP_EOL;
+			}
+		}
+	}
+}
+// Function for generating a checkbox
+if (!function_exists('make_checkbox')) {
+	function make_checkbox(&$key, $idx, $params) {
+		$field_id = $params[0][0];
+		$seperator = $params[0][1];
+
+		$label_id = 'wb_'.preg_replace('/[^a-z0-9]/i', '_', $key).$field_id;
+		if(in_array($key, $params[1])) {
+			$key = '<input class="frm-field_checkbox" type="checkbox" id="'.$label_id.'" name="field'.$field_id.'['.$idx.']" value="'.$key.'" />'.'<label for="'.$label_id.'" class="frm-checkbox_label">'.$key.'</lable>'.$seperator.PHP_EOL;
+		} else {
+			$key = '<input class="frm-field_checkbox" type="checkbox" id="'.$label_id.'" name="field'.$field_id.'['.$idx.']" value="'.$key.'" />'.'<label for="'.$label_id.'" class="frm-checkbox_label">'.$key.'</label>'.$seperator.PHP_EOL;
+		}
+	}
+}
+// Function for generating a radio button
+if (!function_exists('make_radio')) {
+	function make_radio(&$n, $idx, $params) {
+		$field_id = $params[0];
+		$group = $params[1];
+		$seperator = $params[2];
+		$label_id = 'wb_'.preg_replace('/[^a-z0-9]/i', '_', $n).$field_id;
+		if($n == $params[3]) {
+			$n = '<input class="frm-field_checkbox" type="radio" id="'.$label_id.'" name="field'.$field_id.'" value="'.$n.'" checked="checked" />'.'<label for="'.$label_id.'" class="frm-checkbox_label">'.$n.'</label>'.$seperator.PHP_EOL;
+		} else {
+			$n = '<input class="frm-field_checkbox" type="radio" id="'.$label_id.'" name="field'.$field_id.'" value="'.$n.'" />'.'<label for="'.$label_id.'" class="frm-checkbox_label">'.$n.'</label>'.$seperator.PHP_EOL;
+		}
+	}
+}
+
+if (!function_exists("new_submission_id") ) {
+	function new_submission_id() {
+		$submission_id = '';
+		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+		srand((double)microtime()*1000000);
+		$i = 0;
+		while ($i <= 7) {
+			$num = rand() % 33;
+			$tmp = substr($salt, $num, 1);
+			$submission_id = $submission_id . $tmp;
+			$i++;
+		}
+		return $submission_id;
+	}
+}
+
+// Work-out if the form has been submitted or not
+if($_POST == array()) {
+	require_once(WB_PATH.'/include/captcha/captcha.php');
+
+	// Set new submission ID in session
+	$_SESSION['form_submission_id'] = new_submission_id();
+    $out = '';
+	$header = '';
+	$field_loop = '';
+	$footer = '';
+	$form_name = 'form';
+	$use_xhtml_strict = false;
+	// Get settings
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_settings` ';
+	$sql .= 'WHERE section_id = '.$section_id.' ';
+	if($query_settings = $database->query($sql)) {
+		if($query_settings->numRows() > 0) {
+			$fetch_settings = $query_settings->fetchRow(MYSQL_ASSOC);
+			$header = str_replace('{WB_URL}',WB_URL,$fetch_settings['header']);
+			$field_loop = $fetch_settings['field_loop'];
+			$footer = str_replace('{WB_URL}',WB_URL,$fetch_settings['footer']);
+			$use_captcha = $fetch_settings['use_captcha'];
+			$form_name = 'form';
+			$use_xhtml_strict = false;
+		}
+	}
+
+// do not use sec_anchor, can destroy some layouts
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+	// Get list of fields
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+	$sql .= 'WHERE section_id = '.$section_id.' ';
+	$sql .= 'ORDER BY position ASC ';
+
+	if($query_fields = $database->query($sql)) {
+		if($query_fields->numRows() > 0) {
+?>
+			<form <?php echo ( ( (strlen($form_name) > 0) AND (false == $use_xhtml_strict) ) ? "name=\"".$form_name."\"" : ""); ?> action="<?php echo htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'';?>" method="post">
+				<input type="hidden" name="submission_id" value="<?php echo $_SESSION['form_submission_id']; ?>" />
+				<?php
+				$iFormRequestId = isset($_GET['fri']) ? intval($_GET['fri']) : 0;
+				if($iFormRequestId) {
+					echo '<input type="hidden" name="fri" value="'.$iFormRequestId.'" />'."\n";
+				}
+				?>
+				<?php // echo $admin->getFTAN(); ?>
+				<?php
+				if(ENABLED_ASP) { // first add some honeypot-fields
+				?>
+					<input type="hidden" name="submitted_when" value="<?php $t=time(); echo $t; $_SESSION['submitted_when']=$t; ?>" />
+					<p class="frm-nixhier">
+					email address:
+					<label for="email">Leave this field email-address blank:</label>
+					<input id="email" name="email" size="56" value="" /><br />
+					Homepage:
+					<label for="homepage">Leave this field homepage blank:</label>
+					<input id="homepage" name="homepage" size="55" value="" /><br />
+					URL:
+					<label for="url">Leave this field url blank:</label>
+					<input id="url" name="url" size="61" value="" /><br />
+					Comment:
+					<label for="comment">Leave this field comment blank:</label>
+					<textarea id="comment" name="comment" cols="50" rows="10"></textarea><br />
+					</p>
+			<?php }
+
+	// Print header  MYSQL_ASSOC
+   echo $header.PHP_EOL;
+			while($field = $query_fields->fetchRow(MYSQL_ASSOC)) {
+				// Set field values
+				$field_id = $field['field_id'];
+				$value = $field['value'];
+				// Print field_loop after replacing vars with values
+				$vars = array('{TITLE}', '{REQUIRED}');
+				if (($field['type'] == "radio") || ($field['type'] == "checkbox")) {
+					$field_title = $field['title'];
+				} else {
+					$field_title = '<label for="field'.$field_id.'">'.$field['title'].'</label>'.PHP_EOL;
+				}
+				$values = array($field_title);
+				if ($field['required'] == 1) {
+					$values[] = '<span class="frm-required">*</span>'.PHP_EOL;
+				} else {
+					$values[] = '';
+				}
+				if($field['type'] == 'textfield') {
+					$vars[] = '{FIELD}';
+					$max_lenght_para = (intval($field['extra']) ? ' maxlength="'.intval($field['extra']).'"' : '');
+					$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'"'.$max_lenght_para.' value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" class="frm-textfield" />'.PHP_EOL;
+				} elseif($field['type'] == 'textarea') {
+					$vars[] = '{FIELD}';
+					$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="frm-textarea" cols="30" rows="8">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>'.PHP_EOL;
+				} elseif($field['type'] == 'select') {
+					$vars[] = '{FIELD}';
+					$options = explode(',', $value);
+					array_walk($options, 'make_option', (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array()));
+					$field['extra'] = explode(',',$field['extra']);
+					$values[] = '<select name="field'.$field_id.'[]" id="field'.$field_id.'" size="'.$field['extra'][0].'" '.$field['extra'][1].' class="frm-select">'.implode($options).'</select>'.PHP_EOL;
+				} elseif($field['type'] == 'heading') {
+					$vars[] = '{FIELD}';
+					$str = '<input type="hidden" name="field'.$field_id.'" id="field'.$field_id.'" value="===['.$field['title'].']===" />';
+					$values[] = ( true == $use_xhtml_strict) ? "<div>".$str."</div>" : $str;
+					$tmp_field_loop = $field_loop;		// temporarily modify the field loop template
+					$field_loop = $field['extra'];
+				} elseif($field['type'] == 'checkbox') {
+					$vars[] = '{FIELD}';
+					$options = explode(',', $value);
+					array_walk($options, 'make_checkbox', array(array($field_id,$field['extra']),(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array())));
+                    $x = sizeof($options)-1;
+					$options[$x]=substr($options[$x],0,strlen($options[$x]));
+					$values[] = implode($options);
+				} elseif($field['type'] == 'radio') {
+					$vars[] = '{FIELD}';
+					$options = explode(',', $value);
+					array_walk($options, 'make_radio', array($field_id,$field['title'],$field['extra'], (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'')));
+                    $x = sizeof($options)-1;
+					$options[$x]=substr($options[$x],0,strlen($options[$x]));
+					$values[] = implode($options);
+				} elseif($field['type'] == 'email') {
+					$vars[] = '{FIELD}';
+					$max_lenght_para = (intval($field['extra']) ? ' maxlength="'.intval($field['extra']).'"' : '');
+					$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'').'"'.$max_lenght_para.' class="frm-email" />'.PHP_EOL;
+				}
+				if(isset($_SESSION['field'.$field_id])) unset($_SESSION['field'.$field_id]);
+				if($field['type'] != '') {
+					echo str_replace($vars, $values, $field_loop);
+				}
+				if (isset($tmp_field_loop)){ $field_loop = $tmp_field_loop; }
+			}
+			// Captcha
+			if($use_captcha) { ?>
+				<tr>
+				<td class="frm-field_title"><?php echo $TEXT['VERIFICATION']; ?>:</td>
+				<td><?php call_captcha(); ?></td>
+				</tr>
+				<?php
+			}
+		// Print footer
+		// $out = $footer.PHP_EOL;
+		$out .= str_replace('{SUBMIT_FORM}', $MOD_FORM['SUBMIT_FORM'], $footer);
+		echo $out;
+// Add form end code
+?>
+</form>
+<?php
+		}
+	}
+
+} else {
+
+	// Check that submission ID matches
+	if(isset($_SESSION['form_submission_id']) AND isset($_POST['submission_id']) AND $_SESSION['form_submission_id'] == $_POST['submission_id']) {
+
+		// Set new submission ID in session
+		$_SESSION['form_submission_id'] = new_submission_id();
+
+		if(ENABLED_ASP && ( // form faked? Check the honeypot-fields.
+			(!isset($_POST['submitted_when']) OR !isset($_SESSION['submitted_when'])) OR
+			($_POST['submitted_when'] != $_SESSION['submitted_when']) OR
+			(!isset($_POST['email']) OR $_POST['email']) OR
+			(!isset($_POST['homepage']) OR $_POST['homepage']) OR
+			(!isset($_POST['comment']) OR $_POST['comment']) OR
+			(!isset($_POST['url']) OR $_POST['url'])
+		)) {
+			// spam
+			header("Location: ".WB_URL.PAGES_DIRECTORY."");
+            exit();
+		}
+		// Submit form data
+		// First start message settings
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_settings` ';
+		$sql .= 'WHERE `section_id` = '.(int)$section_id.'';
+		if($query_settings = $database->query($sql) ) {
+			if($query_settings->numRows() > 0) {
+				$fetch_settings = $query_settings->fetchRow(MYSQL_ASSOC);
+
+				// $email_to = $fetch_settings['email_to'];
+				$email_to = (($fetch_settings['email_to'] != '') ? $fetch_settings['email_to'] : emailAdmin());
+				$email_from = $admin->add_slashes(SERVER_EMAIL);
+/*
+				if(substr($email_from, 0, 5) == 'field') {
+					// Set the email from field to what the user entered in the specified field
+					$email_from = htmlspecialchars($wb->add_slashes($_POST[$email_from]));
+				}
+*/
+				$email_fromname = $fetch_settings['email_fromname'];
+				if(substr($email_fromname, 0, 5) == 'field') {
+					// Set the email_fromname to field to what the user entered in the specified field
+					$email_fromname = htmlspecialchars($wb->add_slashes($_POST[$email_fromname]));
+				}
+				$email_subject = (($fetch_settings['email_subject'] != '') ? $fetch_settings['email_subject'] : $MOD_FORM['EMAIL_SUBJECT']);
+				$success_page = $fetch_settings['success_page'];
+				$success_email_to = (($fetch_settings['success_email_to'] != '') ? $fetch_settings['success_email_to'] : '');
+				if(substr($success_email_to, 0, 5) == 'field') {
+					// Set the success_email to field to what the user entered in the specified field
+					$success_email_to = htmlspecialchars($wb->add_slashes($_POST[$success_email_to]));
+				}
+				$success_email_from = $admin->add_slashes(SERVER_EMAIL);
+				$success_email_fromname = $fetch_settings['success_email_fromname'];
+				$success_email_text = htmlspecialchars($wb->add_slashes($fetch_settings['success_email_text']));
+				$success_email_text = (($success_email_text != '') ? $success_email_text : $MOD_FORM['SUCCESS_EMAIL_TEXT']);
+				$success_email_subject = (($fetch_settings['success_email_subject'] != '') ? $fetch_settings['success_email_subject'] : $MOD_FORM['SUCCESS_EMAIL_SUBJECT']);
+				$max_submissions = $fetch_settings['max_submissions'];
+				$stored_submissions = $fetch_settings['stored_submissions'];
+				$use_captcha = $fetch_settings['use_captcha'];
+			} else {
+				exit($TEXT['UNDER_CONSTRUCTION']);
+			}
+		}
+		$email_body = '';
+
+		// Create blank "required" array
+		$required = array();
+
+		// Captcha
+		if($use_captcha) {
+			if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){
+				// Check for a mismatch get email user_id
+				if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) {
+					$replace = array('webmaster_email' => emailAdmin() );
+					$captcha_error = replace_vars($MOD_FORM['INCORRECT_CAPTCHA'], $replace);
+				}
+			} else {
+				$replace = array('webmaster_email'=>emailAdmin() );
+				$captcha_error = replace_vars($MOD_FORM['INCORRECT_CAPTCHA'],$replace );
+			}
+		}
+		if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); }
+
+		// Loop through fields and add to message body
+		// Get list of fields
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+		$sql .= 'WHERE `section_id` = '.(int)$section_id.' ';
+		$sql .= 'ORDER BY position ASC';
+		if($query_fields = $database->query($sql)) {
+			if($query_fields->numRows() > 0) {
+				while($field = $query_fields->fetchRow(MYSQL_ASSOC)) {
+					// Add to message body
+					if($field['type'] != '') {
+						if(!empty($_POST['field'.$field['field_id']])) {
+							// do not allow droplets in user input!
+							if (is_array($_POST['field'.$field['field_id']])) {
+								$_SESSION['field'.$field['field_id']] = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), $_POST['field'.$field['field_id']]);
+							} else {
+								$_SESSION['field'.$field['field_id']] = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), htmlspecialchars($_POST['field'.$field['field_id']]));
+							}
+							if($field['type'] == 'email' AND $admin->validate_email($_POST['field'.$field['field_id']]) == false) {
+								$email_error = $MESSAGE['USERS_INVALID_EMAIL'];
+							}
+							if($field['type'] == 'heading') {
+								$email_body .= $_POST['field'.$field['field_id']]."\n\n";
+							} elseif (!is_array($_POST['field'.$field['field_id']])) {
+								$email_body .= $field['title'].': '.$_POST['field'.$field['field_id']]."\n\n";
+							} else {
+								$email_body .= $field['title'].": \n";
+								foreach ($_POST['field'.$field['field_id']] as $k=>$v) {
+									$email_body .= $v."\n";
+								}
+								$email_body .= "\n";
+							}
+						} elseif($field['required'] == 1) {
+							$required[] = $field['title'];
+						}
+					}
+				} //  while
+			}  // numRows
+		} //  query
+// Check if the user forgot to enter values into all the required fields
+		if(sizeof($required )) {
+
+			if(!isset($MESSAGE['MOD_FORM_REQUIRED_FIELDS'])) {
+				echo '<h3>You must enter details for the following fields</h3>';
+			} else {
+				echo '<h3>'.$MESSAGE['MOD_FORM_REQUIRED_FIELDS'].'</h3>';
+			}
+			echo '<ul>'.PHP_EOL;
+			foreach($required AS $field_title) {
+				echo '<li>'.$field_title.PHP_EOL;
+			}
+			if(isset($email_error)) {
+				echo '<li>'.$email_error.'</li>'.PHP_EOL;
+			}
+			if(isset($captcha_error)) {
+				echo '<li>'.$captcha_error.'</li>'.PHP_EOL;
+			}
+			// Create blank "required" array
+			$required = array();
+			echo '</ul>'.PHP_EOL;
+			echo '<p>&nbsp;</p>'.PHP_EOL.'<p><a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.$TEXT['BACK'].'</a></p>'.PHP_EOL;
+		} else {
+			if(isset($email_error)) {
+				echo '<br /><ul>'.PHP_EOL;
+				echo '<li>'.$email_error.'</li>'.PHP_EOL;
+				echo '</ul>'.PHP_EOL;
+				echo '<a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.$TEXT['BACK'].'</a>';
+			} elseif(isset($captcha_error)) {
+				echo '<br /><ul>'.PHP_EOL;
+				echo '<li>'.$captcha_error.'</li>'.PHP_EOL;
+				echo '</ul>'.PHP_EOL;
+				echo '<p>&nbsp;</p>'.PHP_EOL.'<p><a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.$TEXT['BACK'].'</a></p>'.PHP_EOL;
+			} else {
+				// Check how many times form has been submitted in last hour
+				$last_hour = time()-3600;
+				$sql  = 'SELECT `submission_id` FROM `'.TABLE_PREFIX.'mod_form_submissions` ';
+				$sql .= 'WHERE `submitted_when` >= '.$last_hour.'';
+				$sql .= '';
+				if($query_submissions = $database->query($sql)){
+					if($query_submissions->numRows() > $max_submissions) {
+						// Too many submissions so far this hour
+						echo $MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'];
+						$success = false;
+					} else {
+						// Adding the IP to the body and try to send the email
+						// $email_body .= "\n\nIP: ".$_SERVER['REMOTE_ADDR'];
+						$iFormRequestId = isset($_POST['fri']) ? intval($_POST['fri']) : 0;
+						if($iFormRequestId) {
+							$email_body .= "\n\nFormRequestID: ".$iFormRequestId;
+						}
+						$recipient = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $email_fromname );
+						$email_fromname = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $recipient );
+						$email_body = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $email_body );
+						if($email_to != '') {
+							if($email_from != '') {
+								if($wb->mail(SERVER_EMAIL,$email_to,$email_subject,$email_body,$email_fromname)) {
+									$success = true;
+								}
+							} else {
+								if($wb->mail('',$email_to,$email_subject,$email_body,$email_fromname)) {
+									$success = true;
+								}
+							}
+						}
+
+						$recipient = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $success_email_fromname );
+						$success_email_fromname = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $recipient );
+						$success_email_text = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $success_email_text );
+						if($success_email_to != '') {
+							if($success_email_from != '') {
+								if($wb->mail(SERVER_EMAIL,$success_email_to,$success_email_subject,($success_email_text).$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'],$success_email_fromname)) {
+									$success = true;
+								}
+							} else {
+								if($wb->mail('',$success_email_to,$success_email_subject,($success_email_text).$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'],$success_email_fromname)) {
+									$success = true;
+								}
+							}
+						}
+
+						// Write submission to database
+						if(isset($admin) AND $admin->is_authenticated() AND $admin->get_user_id() > 0) {
+							$submitted_by = $admin->get_user_id();
+						} else {
+							$submitted_by = 0;
+						}
+						$email_body = htmlspecialchars($wb->add_slashes($email_body));
+						$sql  = 'INSERT INTO '.TABLE_PREFIX.'mod_form_submissions ';
+						$sql .= 'SET ';
+						$sql .= 'page_id='.$wb->page_id.',';
+						$sql .= 'section_id='.$section_id.',';
+						$sql .= 'submitted_when='.time().',';
+						$sql .= 'submitted_by=\''.$submitted_by.'\', ';
+						$sql .= 'body=\''.$email_body.'\' ';
+						if($database->query($sql)) {
+
+						if(!$database->is_error()) {
+							$success = true;
+						}
+						// Make sure submissions table isn't too full
+						$query_submissions = $database->query("SELECT submission_id FROM ".TABLE_PREFIX."mod_form_submissions ORDER BY submitted_when");
+						$num_submissions = $query_submissions->numRows();
+						if($num_submissions > $stored_submissions) {
+							// Remove excess submission
+							$num_to_remove = $num_submissions-$stored_submissions;
+							while($submission = $query_submissions->fetchRow(MYSQL_ASSOC)) {
+								if($num_to_remove > 0) {
+									$submission_id = $submission['submission_id'];
+									$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
+									$num_to_remove = $num_to_remove-1;
+								}
+							}
+						}
+					}  // numRows
+	 			}
+	 			}
+			}
+		}  // email_error
+	} else {
+
+	echo '<p>&nbsp;</p>'.PHP_EOL.'<p><a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.$TEXT['BACK'].'</a></p>'.PHP_EOL;
+	}
+
+	// Now check if the email was sent successfully
+	if(isset($success) AND $success == true) {
+	   if ($success_page=='none') {
+			echo str_replace("\n","<br />",($success_email_text));
+				echo '<p>&nbsp;</p>'.PHP_EOL.'<p><a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.$TEXT['BACK'].'</a></p>'.PHP_EOL;
+  		} else {
+			$query_menu = $database->query("SELECT link,target FROM ".TABLE_PREFIX."pages WHERE `page_id` = '$success_page'");
+			if($query_menu->numRows() > 0) {
+  	        	$fetch_settings = $query_menu->fetchRow(MYSQL_ASSOC);
+			   $link = WB_URL.PAGES_DIRECTORY.$fetch_settings['link'].PAGE_EXTENSION;
+			   echo "<script type='text/javascript'>location.href='".$link."';</script>";
+			}
+		}
+		// clearing session on success
+		$query_fields = $database->query("SELECT field_id FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id'");
+		while($field = $query_fields->fetchRow(MYSQL_ASSOC)) {
+			$field_id = $field['field_id'];
+			if(isset($_SESSION['field'.$field_id])) unset($_SESSION['field'.$field_id]);
+		}
+	} else {
+		if(isset($success) AND $success == false) {
+			echo $TEXT['ERROR'];
+		}
+	}
+
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/NL.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = 'Deze module makt het mogelijk om aangepaste online formulieren te maken zoals een feedback formulier. Met dank aan Rudolph Lartey voor het aanpassen van deze module.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/NO.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = 'Med denne modulen kan du lage d&iacute;ne egne spesialtilpassede elektroniske skjemaer, som for eksempe et tilbakemeldings skjema. En stor takk til Rudolph Lartey for hjelpen med &aring; videreutvikkle denne modulen, og for bidrag med koding av ekstra felt typer , osv.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/EN.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = 'This module allows you to create customised online forms, such as a feedback form. Thank-you to Rudolph Lartey who help enhance this module, providing code for extra field types, etc.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/DA.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = 'Dette modul giver mulighed for at lave tilpassede online formularer, f.eks. en kontaktformular. Tak til  Rudolph Lartey som har hjulpet med at forbedre dette modul ved at lave kode for ekstra felttyper osv.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/RU.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1100; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1089;&#1086;&#1079;&#1076;&#1072;&#1074;&#1072;&#1090;&#1100; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1072;&#1080;&#1074;&#1072;&#1077;&#1084;&#1099;&#1077; &#1092;&#1086;&#1088;&#1084;&#1099;, &#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088; &#1092;&#1086;&#1088;&#1084;&#1099; &#1086;&#1073;&#1088;&#1072;&#1090;&#1085;&#1086;&#1081; &#1089;&#1074;&#1103;&#1079;&#1080;. Rudolph Lartey &#1087;&#1086;&#1084;&#1086;&#1075; &#1091;&#1083;&#1091;&#1095;&#1096;&#1080;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &#1084;&#1086;&#1076;&#1091;&#1083;&#1100;.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/FR.php	(revision 1610)
@@ -0,0 +1,50 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modul Description
+$module_description = 'This module allows you to create customised online forms, such as a feedback form. Thank-you to Rudolph Lartey who help enhance this module, providing code for extra field types, etc.';
+
+//Variables for the  backend
+$MOD_FORM['SETTINGS'] = 'Form Settings';
+$MOD_FORM['CONFIRM'] = 'Confirmation';
+$MOD_FORM['SUBMIT_FORM'] = 'Submit';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Delivering a message from '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'You have submitted a message to '.WEBSITE_TITLE;
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Thank you for sending your message to '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'****************************************************************************'.PHP_EOL
+.'This is an automatically generated e-mail. The sender\'s address of this e-mail'.PHP_EOL
+.'is furnished only for dispatch, not to receive messages!'.PHP_EOL
+.'If you have received this e-mail by mistake, please contact us and delete this message'.PHP_EOL
+.'****************************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Sender';
+$MOD_FORM['TO'] = 'Recipient';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email to the <a href="mailto:{{webmaster_email}}">webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'You must enter details for the following fields';

Property changes on: tags/2.8.3/wb/modules/form/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/DE.php	(revision 1610)
@@ -0,0 +1,51 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: svn://isteam.dynxs.de/wb_svn/wb280/branches/2.8.x/wb/modules/form/view.php $
+ * @lastmodified    $Date: 2011-12-31 16:03:03 +0100 (Sa, 31. Dez 2011) $
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//Modulbeschreibung
+$module_description = 'Mit diesem Modul k&ouml;nnen sie ein beliebiges Formular f&uuml;r ihre Seite erzeugen';
+
+//Variablen fuer backend Texte
+$MOD_FORM['SETTINGS'] = 'Formular Einstellungen';
+$MOD_FORM['CONFIRM'] = 'Best&auml;tigung';
+$MOD_FORM['SUBMIT_FORM'] = 'Absenden';
+$MOD_FORM['EMAIL_SUBJECT'] = 'Erhalten einer Nachricht von '.WEBSITE_TITLE;
+$MOD_FORM['SUCCESS_EMAIL_SUBJECT'] = 'Sie haben ein Forumlar an '.WEBSITE_TITLE.' gesendet';
+
+$MOD_FORM['SUCCESS_EMAIL_TEXT'] = 'Vielen Dank f&uuml;r die &Uuml;bermittlung Ihrer Nachricht an '.WEBSITE_TITLE.'';
+$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED'] = PHP_EOL.PHP_EOL.PHP_EOL
+.'*************************************************************'.PHP_EOL
+.'Dies ist eine automatisch generierte E-Mail. Die Absenderadresse dieser E-Mail'.PHP_EOL
+.'ist nur zum Versand, und nicht zum Empfang von Nachrichten eingerichtet!'.PHP_EOL
+.'Falls Sie diese E-Mail versehentlich erhalten haben, setzen Sie sich bitte'.PHP_EOL
+.'mit uns in Verbindung und l&ouml;schen diese Nachricht von Ihrem Computer.'.PHP_EOL
+.'**************************************************************'.PHP_EOL;
+
+$MOD_FORM['FROM'] = 'Absender';
+$MOD_FORM['TO'] = 'Empf&auml;nger';
+
+$MOD_FORM['EXCESS_SUBMISSIONS'] = 'Dieses Formular wurde zu oft aufgerufen. Bitte versuchen Sie es in einer Stunde noch einmal.';
+$MOD_FORM['INCORRECT_CAPTCHA'] = 'Die eingegebene Pr&uuml;fziffer stimmt nicht &uuml;berein. Wenn Sie Probleme mit dem Lesen der Pr&uuml;fziffer haben, bitte schreiben Sie eine E-Mail an den <a href="mailto:{{webmaster_email}}">Webmaster</a>';
+$MOD_FORM['REQUIRED_FIELDS'] = 'Bitte folgende Angaben erg&auml;nzen';

Property changes on: tags/2.8.3/wb/modules/form/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/form/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/modify.php
===================================================================
--- tags/2.8.3/wb/modules/form/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/modify.php	(revision 1610)
@@ -0,0 +1,292 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//overwrite php.ini on Apache servers for valid SESSION ID Separator
+if(function_exists('ini_set')) {
+	ini_set('arg_separator.output', '&amp;');
+}
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+include_once(WB_PATH.'/framework/functions.php');
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+//Delete all form fields with no title
+$sql  = 'DELETE FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+$sql .= 'WHERE page_id = '.(int)$page_id.' ';
+$sql .=   'AND section_id = '.(int)$section_id.' ';
+$sql .=   'AND title=\'\' ';
+if( !$database->query($sql) ) {
+// error msg
+}
+
+?>
+<table summary="" width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr>
+	<td align="left" width="50%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['FIELD']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/add_field.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="right" width="50%">
+		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/modify_settings.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['FIELD']; ?></h2>
+<?php
+
+// Loop through existing fields
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+$sql .= 'WHERE `section_id` = '.(int)$section_id.' ';
+$sql .= 'ORDER BY `position` ASC';
+if($query_fields = $database->query($sql)) {
+	if($query_fields->numRows() > 0) {
+		$num_fields = $query_fields->numRows();
+		$row = 'a';
+		?>
+		<table summary="" width="100%" cellpadding="2" cellspacing="0" border="0">
+		<thead>
+			<tr style="background-color: #dddddd; font-weight: bold;">
+				<th width="20" style="padding-left: 5px;">&nbsp;</th>
+				<th width="30" style="text-align: right;">ID</th>
+				<th width="400"><?php print $TEXT['FIELD']; ?></th>
+				<th width="175"><?php print $TEXT['TYPE']; ?></th>
+				<th width="100"><?php print $TEXT['REQUIRED']; ?></th>
+				<th width="175">
+				<?php
+					echo $TEXT['MULTISELECT'];
+				?>
+				</th>
+				<th width="175" colspan="3">
+				<?php
+					echo $TEXT['ACTIONS'];
+				?>
+				</th>
+			</tr>
+		</thead>
+		<tbody>
+		<?php
+		while($field = $query_fields->fetchRow(MYSQL_ASSOC)) {
+			?>
+			<tr class="row_<?php echo $row; ?>">
+				<td style="padding-left: 5px;">
+					<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;field_id=<?php echo $admin->getIDKEY($field['field_id']); ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="^" />
+					</a>
+				</td>
+				<td style="text-align: right;">
+					<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;field_id=<?php echo $admin->getIDKEY($field['field_id']); ?>">
+						<?php echo $field['field_id']; ?>
+					</a>
+				</td>
+				<td>
+					<a href="<?php echo WB_URL; ?>/modules/form/modify_field.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;field_id=<?php echo $admin->getIDKEY($field['field_id']); ?>">
+						<?php echo $field['title']; ?>
+					</a>
+				</td>
+				<td>
+					<?php
+					if($field['type'] == 'textfield') {
+						echo $TEXT['SHORT_TEXT'];
+					} elseif($field['type'] == 'textarea') {
+						echo $TEXT['LONG_TEXT'];
+					} elseif($field['type'] == 'heading') {
+						echo $TEXT['HEADING'];
+					} elseif($field['type'] == 'select') {
+						echo $TEXT['SELECT_BOX'];
+					} elseif($field['type'] == 'checkbox') {
+						echo $TEXT['CHECKBOX_GROUP'];
+					} elseif($field['type'] == 'radio') {
+						echo $TEXT['RADIO_BUTTON_GROUP'];
+					} elseif($field['type'] == 'email') {
+						echo $TEXT['EMAIL_ADDRESS'];
+					}
+					?>
+				</td>
+				<td style="text-align: center;">
+				<?php
+				if ($field['type'] != 'group_begin') {
+					if($field['required'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
+				}
+				?>
+				</td>
+				<td>
+				<?php
+				if ($field['type'] == 'select') {
+					$field['extra'] = explode(',',$field['extra']);
+					 if($field['extra'][1] == 'multiple') { echo $TEXT['YES']; } else { echo $TEXT['NO']; }
+				}
+				?>
+				</td>
+				<td width="20" style="text-align: center;">
+				<?php if($field['position'] != 1) { ?>
+					<a href="<?php echo WB_URL; ?>/modules/form/move_up.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;field_id=<?php echo $admin->getIDKEY($field['field_id']); ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/up_16.png" border="0" alt="^" />
+					</a>
+				<?php } ?>
+				</td>
+				<td width="20" style="text-align: center;">
+				<?php if($field['position'] != $num_fields) { ?>
+					<a href="<?php echo WB_URL; ?>/modules/form/move_down.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;field_id=<?php echo $admin->getIDKEY($field['field_id']); ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/down_16.png" border="0" alt="v" />
+					</a>
+				<?php } ?>
+				</td>
+				<td width="20" style="text-align: center;">
+<?php
+				$url = (WB_URL.'/modules/form/delete_field.php?page_id='.$page_id.'&amp;section_id='.$section_id.'&amp;field_id='.$admin->getIDKEY($field['field_id']))
+?>
+					<a href="javascript: confirm_link('<?php echo url_encode($TEXT['ARE_YOU_SURE']); ?>', '<?php echo $url; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+					</a>
+				</td>
+			</tr>
+<?php
+			// Alternate row color
+			if($row == 'a') {
+				$row = 'b';
+			} else {
+				$row = 'a';
+			}
+		}
+?>
+		</tbody>
+		</table>
+		<?php
+	} else {
+		echo $TEXT['NONE_FOUND'];
+	}
+}
+?>
+
+<br /><br />
+
+<h2><?php echo $TEXT['SUBMISSIONS']; ?></h2>
+
+<?php
+// Query submissions table
+/*
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_submissions`  ';
+$sql .= 'WHERE `section_id` = '.(int)$section_id.' ';
+$sql .= 'ORDER BY `submitted_when` ASC ';
+*/
+$sql  = 'SELECT s.*, u.`display_name`, u.`email` ';
+$sql .=            'FROM `'.TABLE_PREFIX.'mod_form_submissions` s ';
+$sql .= 'LEFT OUTER JOIN `'.TABLE_PREFIX.'users` u ';
+$sql .= 'ON u.`user_id` = s.`submitted_by` ';
+$sql .= 'WHERE s.`section_id` = '.(int)$section_id.' ';
+$sql .= 'ORDER BY s.`submitted_when` ASC ';
+
+if($query_submissions = $database->query($sql)) {
+?>
+<!-- submissions -->
+		<table summary="" width="100%" cellpadding="2" cellspacing="0" border="0" class="" id="frm-ScrollTable" >
+		<thead>
+		<tr style="background-color: #dddddd; font-weight: bold;">
+			<th width="23" style="text-align: center;">&nbsp;</th>
+			<th width="33" style="text-align: right;"> ID </th>
+			<th width="250" style="padding-left: 10px;"><?php echo $TEXT['SUBMITTED'] ?></th>
+			<th width="240" style="padding-left: 10px;"><?php echo $TEXT['USER']; ?></th>
+			<th width="250"><?php echo $TEXT['EMAIL'].' '.$MOD_FORM['FROM'] ?></th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+		</tr>
+		</thead>
+		<tbody>
+<?php
+	if($query_submissions->numRows() > 0) {
+		// List submissions
+		$row = 'a';
+		while($submission = $query_submissions->fetchRow(MYSQL_ASSOC)) {
+	        $submission['display_name'] = (($submission['display_name']!=null) ? $submission['display_name'] : '');
+			$sBody = $submission['body'];
+			$regex = "/[a-z0-9\-_]?[a-z0-9.\-_]+[a-z0-9\-_]?@[a-z0-9.-]+\.[a-z]{2,}/iU";
+			preg_match ($regex, $sBody, $output);
+			$submission['email'] = $output['0'];
+?>
+			<tr class="row_<?php echo $row; ?>">
+				<td width="20" style="padding-left: 5px;text-align: center;">
+					<a href="<?php echo WB_URL; ?>/modules/form/view_submission.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;submission_id=<?php echo $admin->getIDKEY($submission['submission_id']); ?>" title="<?php echo $TEXT['OPEN']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/folder_16.png" alt="<?php echo $TEXT['OPEN']; ?>" border="0" />
+					</a>
+				</td>
+				<td width="30" style="padding-right: 5px;text-align: right;"><?php echo $submission['submission_id']; ?></td>
+				<td width="250" style="padding-left: 10px;"><?php echo gmdate(DATE_FORMAT.', '.TIME_FORMAT, $submission['submitted_when']+TIMEZONE ); ?></td>
+				<td width="250" style="padding-left: 10px;"><?php echo $submission['display_name']; ?></td>
+				<td width="240"><?php echo $submission['email']; ?></td>
+				<td width="20" style="text-align: center;">&nbsp;</td>
+				<td width="20">&nbsp;</td>
+				<td width="20" style="text-align: center;">
+<?php
+				$url = (WB_URL.'/modules/form/delete_submission.php?page_id='.$page_id.'&amp;section_id='.$section_id.'&amp;submission_id='.$admin->getIDKEY($submission['submission_id']))
+?>
+					<a href="javascript: confirm_link('<?php echo url_encode($TEXT['ARE_YOU_SURE']); ?>', '<?php echo $url; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+						<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+					</a>
+				</td>
+				<td width="20">&nbsp;</td>
+			</tr>
+<?php
+			// Alternate row color
+			if($row == 'a') {
+				$row = 'b';
+			} else {
+				$row = 'a';
+			}
+		}
+	} else {
+?>
+<tr><td><?php echo $TEXT['NONE_FOUND'] ?></td></tr>
+<?php
+	}
+?>
+		</tbody>
+		<tfoot>
+		<tr style="background-color: #dddddd; font-weight: bold;">
+			<th width="23" style="text-align: center;">&nbsp;</th>
+			<th width="33" style="text-align: right;"> ID </th>
+			<th width="250" style="padding-left: 10px;"><?php echo $TEXT['SUBMITTED'] ?></th>
+			<th width="250" style="padding-left: 10px;"><?php echo $TEXT['USER']; ?></th>
+			<th width="250"><?php echo $TEXT['EMAIL'].' '.$MOD_FORM['FROM'] ?></th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+			<th width="20">&nbsp;</th>
+		</tr>
+		</tfoot>
+		</table>
+<?php
+} else {
+	echo $database->get_error().'<br />';
+	echo $sql;
+}

Property changes on: tags/2.8.3/wb/modules/form/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/backend.css
===================================================================
--- tags/2.8.3/wb/modules/form/backend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/form/backend.css	(revision 1610)
@@ -0,0 +1,19 @@
+.frm-setting_name { vertical-align :top; width :30%; white-space :nowrap; }
+.frm-setting_value { vertical-align :top; width :70%; }
+.frm-newsection { border-top :1px dashed #ffffff; }
+.row_a { background : transparent; }
+.row_b { background : #dfebff; }
+/* 
+  The definitions below provide the style for the edit CSS button 
+  Required CSS class name: input.mod_moduledirectory_edit_css
+*/
+input.mod_form_edit_css { color :#000000; background-color :#f0f0f0; border :1px solid #808080; padding :2px; margin :0; margin-left :625px; margin-top :-20px; margin-bottom :5px; width :110px; }
+
+/*
+  table#frm-ScrollTable { text-align :left; font-size :12px; border :1px ridge #dadada; font-family :verdana; background :transparent; color :#0066ff; }
+  table#frm-ScrollTable thead  { cursor :pointer; }
+  table#frm-ScrollTable thead tr,
+  table#frm-ScrollTable tfoot tr { background :transparent; }
+  table#frm-ScrollTable tbody tr {  }
+  td, th { border :0px ridge #dadada; }
+*/
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/backend.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/view_submission.php
===================================================================
--- tags/2.8.3/wb/modules/form/view_submission.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/view_submission.php	(revision 1610)
@@ -0,0 +1,82 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+/* */
+
+// Get id
+$submission_id = intval($admin->checkIDKEY('submission_id', false, 'GET'));
+if (!$submission_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Get submission details
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_submissions` ';
+$sql .= 'WHERE submission_id = '.$submission_id.' ';
+if($query_content = $database->query($sql)) {
+	$submission = $query_content->fetchRow(MYSQL_ASSOC);
+}
+// Get the user details of whoever did this submission
+$sql  = 'SELECT `username`,`display_name` FROM `'.TABLE_PREFIX.'users` ';
+$sql .= 'WHERE `user_id` = '.$submission['submitted_by'];
+if($get_user = $database->query($sql)) {
+	if($get_user->numRows() != 0) {
+		$user = $get_user->fetchRow(MYSQL_ASSOC);
+	} else {
+		$user['display_name'] = 'Unknown';
+		$user['username'] = 'unknown';
+	}
+}
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+?>
+<table class="frm-submission" summary="" cellpadding="0" cellspacing="0" border="0">
+<tr>
+	<td><?php echo $TEXT['SUBMISSION_ID']; ?>:</td>
+	<td><?php echo $submission['submission_id']; ?></td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['SUBMITTED']; ?>:</td>
+	<td><?php echo gmdate(DATE_FORMAT .', '.TIME_FORMAT, $submission['submitted_when']+TIMEZONE); ?></td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['USER']; ?>:</td>
+	<td><?php echo $user['display_name'].' ('.$user['username'].')'; ?></td>
+</tr>
+<tr>
+	<td colspan="2">
+		<hr />
+	</td>
+</tr>
+<tr>
+	<td colspan="2">
+		<?php echo nl2br($submission['body']); ?>
+	</td>
+</tr>
+</table>
+
+<br />
+
+<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id.$sec_anchor; ?>';" style="width: 150px; margin-top: 5px;" />
+<input type="button" value="<?php echo $TEXT['DELETE']; ?>" onclick="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/form/delete_submission.php?page_id=<?php echo $page_id; ?>&section_id=<?php echo $section_id; ?>&submission_id=<?php echo $admin->getIDKEY($submission_id); ?>');" style="width: 150px; margin-top: 5px;" />
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/view_submission.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/modify_settings.php
===================================================================
--- tags/2.8.3/wb/modules/form/modify_settings.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/modify_settings.php	(revision 1610)
@@ -0,0 +1,255 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+$print_info_banner = true;
+// Tells script to update when this page was last updated
+$update_when_modified = false;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// include core functions of WB 2.7 to edit the optional module CSS files (frontend.css, backend.css)
+include_once(WB_PATH .'/framework/module.functions.php');
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+if (!function_exists('emailAdmin')) {
+	function emailAdmin() {
+		global $database,$admin;
+        $retval = $admin->get_email();
+        if($admin->get_user_id()!='1') {
+			$sql  = 'SELECT `email` FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE `user_id`=\'1\' ';
+	        $retval = $database->get_one($sql);
+        }
+		return $retval;
+	}
+}
+
+// Get Settings from DB
+$sql  = 'SELECT * FROM '.TABLE_PREFIX.'mod_form_settings ';
+$sql .= 'WHERE `section_id` = '.(int)$section_id.'';
+if($query_content = $database->query($sql)) {
+	$setting = $query_content->fetchRow(MYSQL_ASSOC);
+	$setting['email_to'] = ($setting['email_to'] != '' ? $setting['email_to'] : emailAdmin());
+	$setting['email_subject'] = ($setting['email_subject']  != '') ? $setting['email_subject'] : '';
+	$setting['success_email_subject'] = ($setting['success_email_subject']  != '') ? $setting['success_email_subject'] : '';
+	$setting['success_email_from'] = $admin->add_slashes(SERVER_EMAIL);
+	$setting['success_email_fromname'] = ($setting['success_email_fromname'] != '' ? $setting['success_email_fromname'] : WBMAILER_DEFAULT_SENDERNAME);
+	$setting['success_email_subject'] = ($setting['success_email_subject']  != '') ? $setting['success_email_subject'] : '';
+}
+
+// Set raw html <'s and >'s to be replace by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+/*
+// check if backend.css file needs to be included into the <body></body> of modify.php
+if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH ."/modules/form/backend.css")) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/form/backend.css');
+	echo "\n</style>\n";
+}
+*/
+?>
+<h2><?php echo $MOD_FORM['SETTINGS']; ?></h2>
+<?php
+// include the button to edit the optional module CSS files
+// Note: CSS styles for the button are defined in backend.css (div class="mod_moduledirectory_edit_css")
+// Place this call outside of any <form></form> construct!!!
+if(function_exists('edit_module_css')) {
+	edit_module_css('form');
+}
+?>
+
+<form name="edit" action="<?php echo WB_URL; ?>/modules/form/save_settings.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<?php echo $admin->getFTAN(); ?>
+
+<table summary="" class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%">
+	<tr>
+		<td colspan="2"><strong><?php echo $HEADING['GENERAL_SETTINGS']; ?></strong></td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['CAPTCHA_VERIFICATION']; ?>:</td>
+		<td>
+			<input type="radio" name="use_captcha" id="use_captcha_true" value="1"<?php if($setting['use_captcha'] == true) { echo ' checked="checked"'; } ?> />
+			<label for="use_captcha_true"><?php echo $TEXT['ENABLED']; ?></label>
+			<input type="radio" name="use_captcha" id="use_captcha_false" value="0"<?php if($setting['use_captcha'] == false) { echo ' checked="checked"'; } ?> />
+			<label for="use_captcha_false"><?php echo $TEXT['DISABLED']; ?></label>
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['MAX_SUBMISSIONS_PER_HOUR']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="max_submissions" style="width: 30px;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['max_submissions'])); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['SUBMISSIONS_STORED_IN_DATABASE']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="stored_submissions" style="width: 30px;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['stored_submissions'])); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['HEADER']; ?>:</td>
+		<td class="frm-setting_value">
+			<textarea name="header" cols="80" rows="6" style="width: 98%; height: 80px;"><?php echo ($setting['header']); ?></textarea>
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['FIELD'].' '.$TEXT['LOOP']; ?>:</td>
+		<td class="frm-setting_value">
+			<textarea name="field_loop" cols="80" rows="6" style="width: 98%; height: 80px;"><?php echo ($setting['field_loop']); ?></textarea>
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
+		<td class="frm-setting_value">
+			<textarea name="footer" cols="80" rows="6" style="width: 98%; height: 80px;"><?php echo str_replace($raw, $friendly, ($setting['footer'])); ?></textarea>
+		</td>
+	</tr>
+</table>	
+<!-- E-Mail Optionen -->
+<table summary="<?php echo $TEXT['EMAIL'].' '.$TEXT['SETTINGS']; ?>" class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%" style="margin-top: 3px;">
+	<tr>
+		<td colspan="2"><strong><?php echo $TEXT['EMAIL'].' '.$TEXT['SETTINGS']; ?></strong></td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['EMAIL'].' '.$MOD_FORM['TO']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="email_to" style="width: 98%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['email_to'])); ?>" />
+		</td>
+	</tr>
+
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['DISPLAY_NAME']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="email_fromname" id="email_fromname" style="width: 98%;  ?>;" maxlength="255" value="<?php  echo $setting['success_email_fromname'];  ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['SUBJECT']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="email_subject" style="width: 98%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['email_subject'])); ?>" />
+		</td>
+	</tr>
+	<tr><td>&nbsp;</td></tr>
+</table>
+<!-- Erfolgreich Optionen -->
+<table summary="<?php echo $TEXT['EMAIL'].' '.$MOD_FORM['CONFIRM']; ?>" class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%" style="margin-top: 3px;">
+	<thead>
+	<tr>
+		<th colspan="2"><strong><?php echo $TEXT['EMAIL'].' '.$MOD_FORM['CONFIRM']; ?></strong></th>
+	</tr>
+	</thead>
+	<tbody>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['EMAIL'].' '.$MOD_FORM['TO']; ?>:</td>
+		<td class="frm-setting_value">
+			<select name="success_email_to" style="width: 98%;">
+			<option value="" onclick="javascript: document.getElementById('success_email_to').style.display = 'block';"><?php echo $TEXT['NONE']; ?></option>
+			<?php
+			$success_email_to = str_replace($raw, $friendly, ($setting['success_email_to']));
+			$sql  = 'SELECT `field_id`, `title` FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+			$sql .= 'WHERE `section_id` = '.(int)$section_id.' ';
+			$sql .= '  AND  `type` = \'email\' ';
+			$sql .= 'ORDER BY `position` ASC ';
+			if($query_email_fields = $database->query($sql)) {
+				if($query_email_fields->numRows() > 0) {
+					while($field = $query_email_fields->fetchRow(MYSQL_ASSOC)) {
+						?>
+						<option value="field<?php echo $field['field_id']; ?>"<?php if($success_email_to == 'field'.$field['field_id']) { echo ' selected'; $selected = true; } ?> onclick="javascript: document.getElementById('email_from').style.display = 'none';">
+							<?php echo $TEXT['FIELD'].': '.$field['title']; ?>
+						</option>
+						<?php
+					}
+				}
+			}
+			?>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['DISPLAY_NAME']; ?>:</td>
+		<td class="frm-setting_value">
+			<?php $setting['success_email_fromname'] = ($setting['success_email_fromname'] != '' ? $setting['success_email_fromname'] : WBMAILER_DEFAULT_SENDERNAME); ?>
+			<input type="text" name="success_email_fromname" style="width: 98%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['success_email_fromname'])); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['SUBJECT']; ?>:</td>
+		<td class="frm-setting_value">
+			<input type="text" name="success_email_subject" style="width: 98%;" maxlength="255" value="<?php echo str_replace($raw, $friendly, ($setting['success_email_subject'])); ?>" />
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-setting_name"><?php echo $TEXT['EMAIL'].' '.$TEXT['TEXT']; ?>:</td>
+		<td class="frm-setting_value">
+			<textarea name="success_email_text" cols="80" rows="1" style="width: 98%; height: 80px;"><?php echo str_replace($raw, $friendly, ($setting['success_email_text'])); ?></textarea>
+		</td>
+	</tr>
+	<tr>
+		<td class="frm-newsection"><?php echo $TEXT['SUCCESS'].' '.$TEXT['PAGE']; ?>:</td>
+		<td class="frm-newsection">
+			<select name="success_page">
+			<option value="none"><?php echo $TEXT['NONE']; ?></option>
+			<?php 
+			// Get exisiting pages and show the pagenames
+			$query = $database->query("SELECT * FROM ".TABLE_PREFIX."pages WHERE visibility <> 'deleted'");
+			while($mail_page = $query->fetchRow(MYSQL_ASSOC)) {
+				if(!$admin->page_is_visible($mail_page))
+					continue;
+				$mail_pagename = $mail_page['menu_title'];		
+				$success_page = $mail_page['page_id'];
+			  //	echo $success_page.':'.$setting['success_page'].':'; not vailde
+				if($setting['success_page'] == $success_page) {
+					$selected = ' selected="selected"';
+				} else {
+					$selected = '';
+				}
+				echo '<option value="'.$success_page.'"'.$selected.'>'.$mail_pagename.'</option>';
+		 	}
+			?>
+			</select>
+		</td>
+	</tr>
+	</tbody>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%">
+	<tr>
+		<td align="left">
+			<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;">
+		</td>
+		<td align="right">
+			<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id.$sec_anchor; ?>';" style="width: 100px; margin-top: 5px;" />
+		</td>
+	</tr>
+</table>
+</form>
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/modify_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/README.de.txt
===================================================================
--- tags/2.8.3/wb/modules/form/README.de.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/form/README.de.txt	(revision 1610)
@@ -0,0 +1,19 @@
+
+Maileinstellungen in Optionen ( nur vom Superadmin einzurichten )
+-----------------------------------------------------------------
+Standard "VON" Adresse: SERVER_EMAIL
+Standard Absender Name: WBMAILER_DEFAULT_SENDERNAME
+
+E-Mail Optionen in Formular Einstellungen
+-----------------------------------------
+E-Mail Empfänger: wenn leer dann wird automatisch mit Superadmin (user_id==1) E-Mail vorbelegt
+Angezeigter Name: Benutzerdefiniert oder WBMAILER_DEFAULT_SENDERNAME
+E-Mail Betreff:   Benutzerdefiniert oder wenn leer dann senden mit $MOD_FORM['EMAIL_SUBJECT']
+
+E-Mail Bestätigung in Formular Einstellungen
+--------------------------------------------
+E-Mail Empfänger: Auswahlliste, wenn Auswahl "keine"" dann keine Bestätigungs E-Mail an Sender
+Angezeigter Name: Benutzerdefiniert oder WBMAILER_DEFAULT_SENDERNAME (Eintrag unter Optionen Maileinstellungen)
+E-Mail Betreff:   Benutzerdefiniert oder wenn leer dann senden mit $MOD_FORM['SUCCESS_EMAIL_SUBJECT']
+E-Mail Text:      Benutzerdefiniert oder wenn leer dann senden mit $MOD_FORM['SUCCESS_EMAIL_TEXT'].$MOD_FORM['SUCCESS_EMAIL_TEXT_GENERATED']
+
Index: tags/2.8.3/wb/modules/form/save_settings.php
===================================================================
--- tags/2.8.3/wb/modules/form/save_settings.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/save_settings.php	(revision 1610)
@@ -0,0 +1,131 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+if (!function_exists('emailAdmin')) {
+	function emailAdmin() {
+		global $database,$admin;
+        $retval = $admin->get_email();
+        if($admin->get_user_id()!='1') {
+			$sql  = 'SELECT `email` FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE `user_id`=\'1\' ';
+	        $retval = $database->get_one($sql);
+        }
+		return $retval;
+	}
+}
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+// This code removes any <?php tags and adds slashes
+$friendly = array('&lt;', '&gt;', '?php');
+$raw = array('<', '>', '');
+$header = $admin->add_slashes($_POST['header']);
+$field_loop = $admin->add_slashes($_POST['field_loop']);
+$footer = $admin->add_slashes($_POST['footer']);
+$email_to = $admin->add_slashes($_POST['email_to']);
+$email_to = ($email_to != '' ? $email_to : emailAdmin());
+$email_from = $admin->add_slashes(SERVER_EMAIL);
+$use_captcha = $admin->add_slashes($_POST['use_captcha']);
+/*
+if( isset($_POST['email_from_field']) && ($_POST['email_from_field'] != '')) {
+	$email_from = $admin->add_slashes($_POST['email_from_field']);
+} else {
+	$email_from = $admin->add_slashes($_POST['email_from']);
+}
+*/
+if( isset($_POST['email_fromname_field']) && ($_POST['email_fromname_field'] != '')) {
+	$email_fromname = $admin->add_slashes($_POST['email_fromname_field']);
+} else {
+	$email_fromname = $admin->add_slashes($_POST['email_fromname']);
+}
+
+$email_subject = $admin->add_slashes($_POST['email_subject']);
+$email_subject = (($email_subject  != '') ? $email_subject : '');
+$success_page = $admin->add_slashes($_POST['success_page']);
+$success_email_to = $admin->add_slashes($_POST['success_email_to']);
+$success_email_from = $admin->add_slashes(SERVER_EMAIL);
+$success_email_fromname = $admin->add_slashes($_POST['success_email_fromname']);
+$success_email_fromname = ($success_email_fromname != '' ? $success_email_fromname : WBMAILER_DEFAULT_SENDERNAME);
+$success_email_text = $admin->add_slashes($_POST['success_email_text']);
+$success_email_text = (($success_email_text != '') ? $success_email_text : '');
+$success_email_subject = $admin->add_slashes($_POST['success_email_subject']);
+$success_email_subject = (($success_email_subject  != '') ? $success_email_subject : '');
+
+if(!is_numeric($_POST['max_submissions'])) {
+	$max_submissions = 50;
+} else {
+	$max_submissions = $_POST['max_submissions'];
+}
+if(!is_numeric($_POST['stored_submissions'])) {
+	$stored_submissions = 100;
+} else {
+	$stored_submissions = $_POST['stored_submissions'];
+}
+// Make sure max submissions is not greater than stored submissions if stored_submissions <>0
+if($max_submissions > $stored_submissions) {
+	$max_submissions = $stored_submissions;
+}
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+// Update settings
+$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_form_settings` SET ';
+$sql .= '`header` = \''.$header.'\', ';
+$sql .= '`field_loop` = \''.$field_loop.'\', ';
+$sql .= '`footer` = \''.$footer.'\', ';
+$sql .= '`email_to` = \''.$email_to.'\', ';
+$sql .= '`email_from` = \''.$email_from.'\', ';
+$sql .= '`email_fromname` = \''.$email_fromname.'\', ';
+$sql .= '`email_subject` = \''.$email_subject.'\', ';
+$sql .= '`success_page` = \''.$success_page.'\', ';
+$sql .= '`success_email_to` = \''.$success_email_to.'\', ';
+$sql .= '`success_email_from` = \''.$success_email_from.'\', ';
+$sql .= '`success_email_fromname` = \''.$success_email_fromname.'\', ';
+$sql .= '`success_email_text` = \''.$success_email_text.'\', ';
+$sql .= '`success_email_subject` = \''.$success_email_subject.'\', ';
+$sql .= '`max_submissions` = \''.$max_submissions.'\', ';
+$sql .= '`stored_submissions` = \''.$stored_submissions.'\', ';
+$sql .= '`use_captcha` = \''.$use_captcha.'\' ';
+$sql .= 'WHERE `section_id` = '.(int)$section_id.' ';
+$sql .= '';
+if($database->query($sql)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/save_settings.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/info.php
===================================================================
--- tags/2.8.3/wb/modules/form/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/info.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+$module_directory = 'form';
+$module_name = 'Form';
+$module_function = 'page';
+$module_version = '2.8.4';
+$module_platform = '2.8.x';
+$module_author = 'Ryan Djurovich & Rudolph Lartey - additions John Maats - PCWacht';
+$module_license = 'GNU General Public License';
+$module_description = 'This module allows you to create customised online forms, such as a feedback form. '.
+'Thank-you to Rudolph Lartey who help enhance this module, providing code for extra field types, etc.';

Property changes on: tags/2.8.3/wb/modules/form/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/delete_submission.php
===================================================================
--- tags/2.8.3/wb/modules/form/delete_submission.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/delete_submission.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Get id
+$submission_id = intval($admin->checkIDKEY('submission_id', false, 'GET'));
+if (!$submission_id) {
+	$admin->clearIDKEY();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Delete row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_submissions WHERE submission_id = '$submission_id'");
+	$admin->clearIDKEY();
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/delete_submission.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/add.php
===================================================================
--- tags/2.8.3/wb/modules/form/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/add.php	(revision 1610)
@@ -0,0 +1,80 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+// Insert an extra rows into the database
+$header = '<table class="frm-field_table" cellpadding=\"2\" cellspacing=\"0\" border=\"0\" summary=\"form\">';
+$field_loop = '<tr>'.PHP_EOL.'<td class=\"frm-field_title\">{TITLE}{REQUIRED}:</td>'.PHP_EOL.'<td>{FIELD}</td>'.PHP_EOL.'</tr>';
+$footer = '<tr>'.PHP_EOL.'<td>&nbsp;</td>'.PHP_EOL.'
+<td>'.PHP_EOL.'
+<input type=\"submit\" name=\"submit\" value=\"{SUBMIT_FORM}\" />'.PHP_EOL.'
+</td>'.PHP_EOL.'
+</tr>'.PHP_EOL.'
+</table>'.PHP_EOL;
+$email_to = '';
+$email_from = '';
+$email_fromname = '';
+$email_subject = '';
+$success_page = 'none';
+$success_email_to = '';
+$success_email_from = '';
+$success_email_fromname = '';
+$success_email_text = '';
+// $success_email_text = addslashes($success_email_text);
+$success_email_subject = '';
+$max_submissions = 50;
+$stored_submissions = 50;
+$use_captcha = true;
+
+// $database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id,header,field_loop,footer,email_to,email_from,email_fromname,email_subject,success_page,success_email_to,success_email_from,success_email_fromname,success_email_text,success_email_subject,max_submissions,stored_submissions,use_captcha) VALUES ('$page_id','$section_id','$header','$field_loop','$footer','$email_to','$email_from','$email_fromname','$email_subject','$success_page','$success_email_to','$success_email_from','$success_email_fromname','$success_email_text','$success_email_subject','$max_submissions','$stored_submissions','$use_captcha')");
+
+// Insert settings
+$sql  = 'INSERT INTO  `'.TABLE_PREFIX.'mod_form_settings` SET ';
+$sql .= '`section_id` = \''.$section_id.'\', ';
+$sql .= '`page_id` = \''.$page_id.'\', ';
+$sql .= '`header` = \''.$header.'\', ';
+$sql .= '`field_loop` = \''.$field_loop.'\', ';
+$sql .= '`footer` = \''.$footer.'\', ';
+$sql .= '`email_to` = \''.$email_to.'\', ';
+$sql .= '`email_from` = \''.$email_from.'\', ';
+$sql .= '`email_fromname` = \''.$email_fromname.'\', ';
+$sql .= '`email_subject` = \''.$email_subject.'\', ';
+$sql .= '`success_page` = \''.$success_page.'\', ';
+$sql .= '`success_email_to` = \''.$success_email_to.'\', ';
+$sql .= '`success_email_from` = \''.$success_email_from.'\', ';
+$sql .= '`success_email_fromname` = \''.$success_email_fromname.'\', ';
+$sql .= '`success_email_text` = \''.$success_email_text.'\', ';
+$sql .= '`success_email_subject` = \''.$success_email_subject.'\', ';
+$sql .= '`max_submissions` = \''.$max_submissions.'\', ';
+$sql .= '`stored_submissions` = \''.$stored_submissions.'\', ';
+$sql .= '`use_captcha` = \''.$use_captcha.'\' ';
+$sql .= '';
+if($database->query($sql)) {
+	// $admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}

Property changes on: tags/2.8.3/wb/modules/form/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/modify_field.php
===================================================================
--- tags/2.8.3/wb/modules/form/modify_field.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/modify_field.php	(revision 1610)
@@ -0,0 +1,221 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+$print_info_banner = true;
+// Tells script to update when this page was last updated
+$update_when_modified = false;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+/* */
+// Get id
+$field_id = intval($admin->checkIDKEY('field_id', false, 'GET'));
+if (!$field_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+$type = 'none';
+// Get header and footer
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_form_fields` ';
+$sql .= 'WHERE `field_id` = '.$field_id.'';
+$sql .= '';
+if($query_content = $database->query($sql)) {
+	$form = $query_content->fetchRow(MYSQL_ASSOC);
+	$type = (($form['type'] == '') ? 'none' : $form['type']);
+}
+// set new idkey for save_field
+$field_id = $admin->getIDKEY($form['field_id']);
+// Set raw html <'s and >'s to be replaced by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+?>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/form/save_field_new.php" method="post" style="margin: 0;">
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="field_id" value="<?php echo $field_id; ?>" />
+<?php echo $admin->getFTAN(); ?>
+
+<table summary="" class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%">
+	<tr>
+		<td colspan="2"><strong><?php echo $TEXT['MODIFY'].' '.$TEXT['FIELD']; ?></strong></td>
+	</tr>
+	<tr>
+		<td width="20%"><?php echo $TEXT['TITLE']; ?>:</td>
+		<td>
+			<input type="text" name="title" value="<?php echo htmlspecialchars(($form['title'])); ?>" style="width: 98%;" maxlength="255" />
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $TEXT['TYPE']; ?>:</td>
+		<td>
+			<select name="type" style="width: 98%;">
+				<option value=""><?php echo $TEXT['PLEASE_SELECT']; ?>...</option>
+				<option value="heading"<?php if($type == 'heading') { echo ' selected="selected"'; } ?>><?php echo $TEXT['HEADING']; ?></option>
+				<option value="textfield"<?php if($type == 'textfield') { echo ' selected="selected"'; } ?>><?php echo $TEXT['SHORT'].' '.$TEXT['TEXT']; ?> (input)</option>
+				<option value="textarea"<?php if($type == 'textarea') { echo ' selected="selected"'; } ?>><?php echo $TEXT['LONG'].' '.$TEXT['TEXT']; ?> (textarea)</option>
+				<option value="select"<?php if($type == 'select') { echo ' selected="selected"'; } ?>><?php echo $TEXT['SELECT_BOX']; ?> (select)</option>
+				<option value="checkbox"<?php if($type == 'checkbox') { echo ' selected="selected"'; } ?>><?php echo $TEXT['CHECKBOX_GROUP']; ?> (checkbox)</option>
+				<option value="radio"<?php if($type == 'radio') { echo ' selected="selected"'; } ?>><?php echo $TEXT['RADIO_BUTTON_GROUP']; ?> (radiobox)</option>
+				<option value="email"<?php if($type == 'email') { echo ' selected="selected"'; } ?>><?php echo $TEXT['EMAIL_ADDRESS']; ?></option>
+			</select>
+		</td>
+	</tr>
+<?php if($type != 'none' AND $type != 'email') { ?>
+	<?php if($type == 'heading') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['TEMPLATE']; ?>:</td>
+		<td>
+			<textarea name="template" style="width: 98%; height: 20px;"><?php echo htmlspecialchars(($form['extra'])); ?></textarea>
+		</td>
+	</tr>
+	<?php } elseif($type == 'textfield') { ?>
+	<tr>
+		<td><?php echo $TEXT['LENGTH']; ?>:</td>
+		<td>
+			<input type="text" name="length" value="<?php echo $form['extra']; ?>" style="width: 98%;" maxlength="3" />
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
+		<td>
+			<input type="text" name="value" value="<?php echo $form['value']; ?>" style="width: 98%;" />
+		</td>
+	</tr>
+	<?php } elseif($type == 'textarea') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['DEFAULT_TEXT']; ?>:</td>
+		<td>
+			<textarea name="value" style="width: 98%; height: 100px;"><?php echo $form['value']; ?></textarea>
+		</td>
+	</tr>
+	<?php } elseif($type == 'select' OR $type = 'radio' OR $type = 'checkbox') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['LIST_OPTIONS']; ?>:</td>
+		<td>
+			<table summary="<?php echo $TEXT['LIST_OPTIONS']; ?>" cellpadding="3" cellspacing="0" width="100%" border="0">
+			<?php
+			$option_count = 0;
+			$list = explode(',', $form['value']);
+			foreach($list AS $option_value) {
+				$option_count = $option_count+1;
+				?>
+				<tr>
+					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
+					<td>
+						<input type="text" name="value<?php echo $option_count; ?>" value="<?php echo $option_value; ?>" style="width: 250px;" />
+					</td>
+				</tr>
+				<?php
+			}
+			for($i = 0; $i < 2; $i++) {
+				$option_count = $option_count+1;
+				?>
+				<tr>
+					<td width="70"><?php echo $TEXT['OPTION'].' '.$option_count; ?>:</td>
+					<td>
+						<input type="text" name="value<?php echo $option_count; ?>" value="" style="width: 250px;" />
+					</td>
+				</tr>
+				<?php
+			}
+			?>
+				</table>
+			<input type="hidden" name="list_count" value="<?php echo $option_count; ?>" />
+		</td>
+	</tr>
+	<?php } ?>
+	<?php if($type == 'select') { ?>
+	<tr>
+		<td><?php echo $TEXT['SIZE']; ?>:</td>
+		<td>
+			<?php $form['extra'] = explode(',',$form['extra']); ?>
+			<input type="text" name="size" value="<?php echo trim($form['extra'][0]); ?>" style="width: 98%;" maxlength="3" />
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $TEXT['ALLOW_MULTIPLE_SELECTIONS']; ?>:</td>
+		<td>
+			<input type="radio" name="multiselect" id="multiselect_true" value="multiple" <?php if($form['extra'][1] == 'multiple') { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('multiselect_true').checked = true;">
+			<?php echo $TEXT['YES']; ?>
+			</a>
+			&nbsp;
+			<input type="radio" name="multiselect" id="multiselect_false" value="" <?php if($form['extra'][1] == '') { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('multiselect_false').checked = true;">
+			<?php echo $TEXT['NO']; ?>
+			</a>
+		</td>
+	</tr>
+	<?php } elseif($type == 'checkbox' OR $type == 'radio') { ?>
+	<tr>
+		<td valign="top"><?php echo $TEXT['SEPERATOR']; ?>:</td>
+		<td>
+			<input type="text" name="seperator" value="<?php echo $form['extra']; ?>" style="width: 98%;" />
+		</td>
+	</tr>
+	<?php } ?>
+<?php } ?>
+<?php if($type != 'heading' AND $type != 'none') { ?>
+	<tr>
+		<td><?php echo $TEXT['REQUIRED']; ?>:</td>
+		<td>
+			<input type="radio" name="required" id="required_true" value="1" <?php if($form['required'] == 1) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('required_true').checked = true;">
+			<?php echo $TEXT['YES']; ?>
+			</a>
+			&nbsp;
+			<input type="radio" name="required" id="required_false" value="0" <?php if($form['required'] == 0) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('required_false').checked = true;">
+			<?php echo $TEXT['NO']; ?>
+			</a>
+		</td>
+	</tr>
+<?php } ?>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%">
+	<tr>
+		<td align="left">
+			<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+		</td>
+		<?php
+		// added by John Maats, PCWacht, 12 januar 2006
+		if ($type<>'none') {
+		?>
+		<td align="center">
+			<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['FIELD']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/form/add_field.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 200px; margin-top: 5px;" />
+		</td>
+		<?php } 
+		// end addition
+		?>
+		<td align="right">
+			<input type="button" value="<?php echo $TEXT['CLOSE']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id.$sec_anchor; ?>';" style="width: 100px; margin-top: 5px;" />
+		</td>
+	</tr>
+</table>
+</form>
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/modify_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/add_field.php
===================================================================
--- tags/2.8.3/wb/modules/form/add_field.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/add_field.php	(revision 1610)
@@ -0,0 +1,45 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (section_id,page_id,position,required) VALUES ('$section_id','$page_id','$position','0')");
+
+// Get the id
+$field_id = $database->get_one("SELECT LAST_INSERT_ID()");
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+} else {
+	$admin->print_success($TEXT['SUCCESS'],     WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/add_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/save_field.php
===================================================================
--- tags/2.8.3/wb/modules/form/save_field.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/save_field.php	(revision 1610)
@@ -0,0 +1,124 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+/* */
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+// check FTAN
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error('::'.$MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+
+// Get id
+$field_id = intval($admin->checkIDKEY('field_id', false ));
+if (!$field_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'].'::', ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+// After check print the header to get a new FTAN
+$admin->print_header();
+
+/*
+// Get id
+if(!isset($_POST['field_id']) OR !is_numeric($_POST['field_id'])) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$field_id = (int)$_POST['field_id'];
+}
+/*
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	exit();
+}
+*/
+// Validate all fields
+if($admin->get_post('title') == '' OR $admin->get_post('type') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+} else {
+	$title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('title'), ENT_QUOTES));
+	$type = $admin->add_slashes($admin->get_post('type'));
+	$required = (int) $admin->add_slashes($admin->get_post('required'));
+}
+$value = '';
+
+// Update row
+$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_form_fields SET` ';
+$sql .= 'title = \''.$title.'\', ';
+$sql .= 'type = \''.$type.'\', ';
+$sql .= 'required = \''.$required.'\' ';
+$sql .= 'WHERE field_id = '.(int)$field_id.' ';
+if($database->query($sql)) { }
+
+// If field type has multiple options, get all values and implode them
+$list_count = $admin->get_post('list_count');
+if(is_numeric($list_count)) {
+	$values = array();
+	for($i = 1; $i <= $list_count; $i++) {
+		if($admin->get_post('value'.$i) != '') {
+			$values[] = str_replace(",","&#44;",$admin->get_post('value'.$i));
+		}
+	}
+	$value = implode(',', $values);
+}
+
+// Get extra fields for field-type-specific settings
+if($admin->get_post('type') == 'textfield') {
+	$length = $admin->get_post_escaped('length');
+	$value = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('value'));
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$length' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'textarea') {
+	$value = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('value'));
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'heading') {
+	$extra = str_replace(array("[[", "]]"), '', $admin->get_post('template'));
+	if(trim($extra) == '') $extra = '<tr><td class="frm-field_heading" colspan="2">{TITLE}{FIELD}</td></tr>';
+	$extra = $admin->add_slashes($extra);
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'select') {
+	$extra = $admin->get_post_escaped('size').','.$admin->get_post_escaped('multiselect');
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'checkbox') {
+	$extra = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('seperator'));
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+} elseif($admin->get_post('type') == 'radio') {
+	$extra = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('seperator'));
+	$database->query("UPDATE ".TABLE_PREFIX."mod_form_fields SET value = '$value', extra = '$extra' WHERE field_id = '$field_id'");
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+} else {
+	$admin->print_success($TEXT['SUCCESS'],     WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/save_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/delete_field.php
===================================================================
--- tags/2.8.3/wb/modules/form/delete_field.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/delete_field.php	(revision 1610)
@@ -0,0 +1,48 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+// Get id
+$field_id = intval($admin->checkIDKEY('field_id', false, 'GET'));
+if (!$field_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+// Delete row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE field_id = '$field_id'");
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+
+if(!$order->clean($section_id)) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/delete_field.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/save_field_new.php
===================================================================
--- tags/2.8.3/wb/modules/form/save_field_new.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/save_field_new.php	(revision 1610)
@@ -0,0 +1,111 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ * http://devzone.zend.com/703/php-built-in-input-filtering/
+ */
+
+require('../../config.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+/* */
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+
+// check FTAN
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error('::'.$MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+
+// Get id
+$field_id = intval($admin->checkIDKEY('field_id', false ));
+if (!$field_id) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'].'::', ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor);
+}
+// After check print the header to get a new FTAN
+$admin->print_header();
+
+// Validate all fields
+if($admin->get_post('title') == '' OR $admin->get_post('type') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+} else {
+	$title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('title'), ENT_QUOTES));
+	$type = $admin->add_slashes($admin->get_post('type'));
+	$required = (int) $admin->add_slashes($admin->get_post('required'));
+}
+
+// If field type has multiple options, get all values and implode them
+	 $value = $extra = '';
+	$list_count = $admin->get_post('list_count');
+	if(is_numeric($list_count)) {
+		$values = array();
+		for($i = 1; $i <= $list_count; $i++) {
+			if($admin->get_post('value'.$i) != '') {
+				$values[] = str_replace(",","&#44;",$admin->get_post('value'.$i));
+			}
+		}
+		$value = implode(',', $values);
+	}
+// prepare sql-update
+	switch($admin->get_post('type')):
+		case 'textfield':
+			$value = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('value'));
+			$extra = $admin->get_post_escaped('length');
+			break;
+		case 'textarea':
+			$value = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('value'));
+			$extra = '';
+			break;
+		case 'heading':
+			$extra = str_replace(array("[[", "]]"), '', $admin->get_post('template'));
+			if(trim($extra) == '') $extra = '<tr><td class="frm-field_heading" colspan="2">{TITLE}{FIELD}</td></tr>';
+			$extra = $admin->add_slashes($extra);
+			break;
+		case 'select':
+			$extra = $admin->get_post_escaped('size').','.$admin->get_post_escaped('multiselect');
+			break;
+		case 'checkbox':
+			$extra = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('seperator'));
+			break;
+		case 'radio':
+			$extra = str_replace(array("[[", "]]"), '', $admin->get_post_escaped('seperator'));
+			break;
+		default:
+			$value = '';
+			$extra = '';
+			break;
+	endswitch;
+// Update row
+	$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_form_fields` ';
+	$sql .= 'SET `title`=\''.$title.'\', ';
+	$sql .=     '`type`=\''.$type.'\', ';
+	$sql .=     '`required`=\''.$required.'\', ';
+	$sql .=     '`extra`=\''.$extra.'\', ';
+	$sql .=     '`value`=\''.$value.'\' ';
+	$sql .= 'WHERE field_id = '.(int)$field_id.' ';
+	if( $database->query($sql) ) {
+		$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+	}else {
+		$admin->print_error($database->get_error(), WB_URL.'/modules/form/modify_field.php?page_id='.$page_id.'&section_id='.$section_id.'&field_id='.$admin->getIDKEY($field_id));
+	}
+// Print admin footer
+	$admin->print_footer();
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/save_field_new.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/frontend.css
===================================================================
--- tags/2.8.3/wb/modules/form/frontend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/form/frontend.css	(revision 1610)
@@ -0,0 +1,14 @@
+.frm-required { color :#ff0000; }
+.frm-field_title { font-size :12px; width :25%; vertical-align :top; white-space :nowrap; text-align :right; }
+.frm-textfield { font-size :12px; width :90%; }
+.frm-textarea { font-size :12px; width :100%; height :100px; }
+.frm-field_heading { font-size :12px; font-weight :bold; border-bottom-width :2px; border-bottom-style :solid; border-bottom-color :#666666; padding-top :10px; color :#666666; }
+.frm-select { font-size :12px; width :50%; }
+.frm-select option { font-size :12px; width :95%; }
+.frm-field_checkbox { font-size :11px; cursor :pointer; width :30px; vertical-align :middle; }
+.frm-checkbox_label { font-size :11px; cursor :pointer; width :auto; }
+.frm-radio_label { font-size :11px; cursor :pointer; }
+.frm-email { font-size :12px; width : 90%; }
+/*** Don't remove the class nixhier, this is required for ASP ***/
+.frm-nixhier { display :none; }
+.frm-submission { margin :0 auto; position :relative; width :auto; }		
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/frontend.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/delete.php
===================================================================
--- tags/2.8.3/wb/modules/form/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/delete.php	(revision 1610)
@@ -0,0 +1,29 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// Delete page from mod_wysiwyg
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_fields WHERE page_id = '$page_id' AND section_id='$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_form_settings WHERE page_id = '$page_id' AND section_id='$section_id'");

Property changes on: tags/2.8.3/wb/modules/form/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/search.php
===================================================================
--- tags/2.8.3/wb/modules/form/search.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/search.php	(revision 1610)
@@ -0,0 +1,63 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+function form_search($func_vars) {
+	extract($func_vars, EXTR_PREFIX_ALL, 'func');
+	
+	// how many lines of excerpt we want to have at most
+	$max_excerpt_num = $func_default_max_excerpt;
+	$divider = ".";
+	$result = false;
+	
+	// fetch all form-fields on this page
+	$table = TABLE_PREFIX."mod_form_fields";
+	$query = $func_database->query("
+		SELECT title, value
+		FROM $table
+		WHERE section_id='$func_section_id'
+		ORDER BY position ASC
+	");
+	// now call print_excerpt() only once for all items
+	if($query->numRows() > 0) {
+		$text="";
+		while($res = $query->fetchRow()) {
+			$text .= $res['title'].$divider.$res['value'].$divider;
+		}
+		$mod_vars = array(
+			'page_link' => $func_page_link,
+			'page_link_target' => "#wb_section_$func_section_id",
+			'page_title' => $func_page_title,
+			'page_description' => $func_page_description,
+			'page_modified_when' => $func_page_modified_when,
+			'page_modified_by' => $func_page_modified_by,
+			'text' => $text,
+			'max_excerpt_num' => $max_excerpt_num
+		);
+		if(print_excerpt2($mod_vars, $func_vars)) {
+			$result = true;
+		}
+	}
+	return $result;
+}

Property changes on: tags/2.8.3/wb/modules/form/search.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/install.php
===================================================================
--- tags/2.8.3/wb/modules/form/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/install.php	(revision 1610)
@@ -0,0 +1,104 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+if(defined('WB_URL'))
+{
+		
+	// $database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_fields`");
+	// $database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_submissions`");
+	// $database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_settings`");
+
+	// Create tables
+	$mod_form = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_form_fields` ( `field_id` INT NOT NULL AUTO_INCREMENT,'
+		. ' `section_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `page_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `position` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `title` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `type` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `required` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `value` TEXT NOT NULL ,'
+		. ' `extra` TEXT NOT NULL ,'
+		. ' PRIMARY KEY ( `field_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_form);
+
+	$mod_form = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_form_settings` ('
+		. ' `section_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `page_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `header` TEXT NOT NULL ,'
+		. ' `field_loop` TEXT NOT NULL ,'
+		. ' `footer` TEXT NOT NULL ,'
+		. ' `email_to` TEXT NOT NULL ,'
+		. ' `email_from` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `email_fromname` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `email_subject` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `success_page` TEXT NOT NULL ,'
+		. ' `success_email_to` TEXT NOT NULL ,'
+		. ' `success_email_from` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `success_email_fromname` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `success_email_text` TEXT NOT NULL ,'
+		. ' `success_email_subject` VARCHAR(255) NOT NULL DEFAULT \'\' ,'
+		. ' `stored_submissions` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `max_submissions` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `use_captcha` INT NOT NULL DEFAULT \'0\' ,'
+		. ' PRIMARY KEY ( `section_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_form);
+	
+	$mod_form = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_form_submissions` ( `submission_id` INT NOT NULL AUTO_INCREMENT,'
+		. ' `section_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `page_id` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `submitted_when` INT NOT NULL DEFAULT \'0\' ,'
+		. ' `submitted_by` INT NOT NULL DEFAULT \'0\','
+		. ' `body` TEXT NOT NULL,'
+		. ' PRIMARY KEY ( `submission_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_form);
+		
+    $mod_search = "SELECT * FROM ".TABLE_PREFIX."search  WHERE value = 'form'";
+    $insert_search = $database->query($mod_search);
+    if( $insert_search->numRows() == 0 )
+    {
+    	// Insert info into the search table
+    	// Module query info
+    	$field_info = array();
+    	$field_info['page_id'] = 'page_id';
+    	$field_info['title'] = 'page_title';
+    	$field_info['link'] = 'link';
+    	$field_info['description'] = 'description';
+    	$field_info['modified_when'] = 'modified_when';
+    	$field_info['modified_by'] = 'modified_by';
+    	$field_info = serialize($field_info);
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'form', '$field_info')");
+    	// Query start
+    	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_form_fields, [TP]mod_form_settings, [TP]pages WHERE ";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'form')");
+    	// Query body
+    	$query_body_code = " [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.header LIKE \'%[STRING]%\'
+    	OR [TP]pages.page_id = [TP]mod_form_settings.page_id AND [TP]mod_form_settings.footer LIKE \'%[STRING]%\'
+    	OR [TP]pages.page_id = [TP]mod_form_fields.page_id AND [TP]mod_form_fields.title LIKE \'%[STRING]%\' ";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'form')");
+    	// Query end
+    	$query_end_code = "";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'form')");
+
+    	// Insert blank row (there needs to be at least on row for the search to work)
+    	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_fields (page_id,section_id) VALUES ('0','0')");
+    	$database->query("INSERT INTO ".TABLE_PREFIX."mod_form_settings (page_id,section_id) VALUES ('0','0')");
+
+    }
+}

Property changes on: tags/2.8.3/wb/modules/form/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/form/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/uninstall.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE name = 'module' AND value = 'form'");
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE extra = 'form'");
+
+$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_fields`");
+$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_settings`");
+$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_form_submissions`");

Property changes on: tags/2.8.3/wb/modules/form/uninstall.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/form/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/upgrade.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = array();
+$aTable = array('mod_form_fields','mod_form_settings','mod_form_submissions');
+for($x=0; $x<sizeof($aTable);$x++) {
+	if(($sOldType = $database->getTableEngine(TABLE_PREFIX.$aTable[$x]))) {
+		if(('myisam' != strtolower($sOldType))) {
+			if(!$database->query('ALTER TABLE `'.TABLE_PREFIX.$aTable[$x].'` Engine = \'MyISAM\' ')) {
+				$msg[] = $database->get_error();
+			}
+		}
+	} else {
+		$msg[] = $database->get_error();
+	}
+}
+// ------------------------------------

Property changes on: tags/2.8.3/wb/modules/form/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/move_down.php
===================================================================
--- tags/2.8.3/wb/modules/form/move_down.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/move_down.php	(revision 1610)
@@ -0,0 +1,42 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get id
+$field_id = $admin->checkIDKEY('field_id', false, 'GET');
+if (!$field_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+if($order->move_down($field_id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/move_down.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/index.php
===================================================================
--- tags/2.8.3/wb/modules/form/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/form/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form/move_up.php
===================================================================
--- tags/2.8.3/wb/modules/form/move_up.php	(nonexistent)
+++ tags/2.8.3/wb/modules/form/move_up.php	(revision 1610)
@@ -0,0 +1,42 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         Form
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Get id
+$field_id = $admin->checkIDKEY('field_id', false, 'GET');
+if (!$field_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order(TABLE_PREFIX.'mod_form_fields', 'position', 'field_id', 'section_id');
+if($order->move_up($field_id)) {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/form/move_up.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/form
===================================================================
--- tags/2.8.3/wb/modules/form	(nonexistent)
+++ tags/2.8.3/wb/modules/form	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/form
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,2 ##
+SimpleMailException.php
+backend.js
Index: tags/2.8.3/wb/modules/wysiwyg/save.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/save.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/save.php	(revision 1610)
@@ -0,0 +1,71 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require('../../config.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN()) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+// After check print the header
+$admin->print_header();
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
+// Update the mod_wysiwygs table with the contents
+if(isset($_POST['content'.$section_id])) {
+    $content = $_POST['content'.$section_id];
+	if(version_compare(PHP_VERSION, '5.3.0', '<'))
+	{
+		$content = $admin->strip_slashes($_POST['content'.$section_id]);
+	}
+	$searchfor = '@(<[^>]*=\s*")('.preg_quote($sMediaUrl).')([^">]*".*>)@siU';
+    $content = preg_replace($searchfor, '$1{SYSVAR:MEDIA_REL}$3', $content);
+	// searching in $text will be much easier this way
+    $content = mysql_real_escape_string ($content);
+	$text = umlauts_to_entities($content, strtoupper(DEFAULT_CHARSET), 0);
+	$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_wysiwyg` ';
+	$sql .= 'SET `content`=\''.$content.'\', `text`=\''.$text.'\' ';
+	$sql .= 'WHERE `section_id`='.(int)$section_id;
+	$database->query($sql);
+}
+
+$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? '#'.SEC_ANCHOR.$section['section_id'] : '' );
+if(defined('EDIT_ONE_SECTION') and EDIT_ONE_SECTION){
+    $edit_page = ADMIN_URL.'/pages/modify.php?page_id='.$page_id.'&wysiwyg='.$section_id;
+} else {
+    $edit_page = ADMIN_URL.'/pages/modify.php?page_id='.$page_id.$sec_anchor;
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES_SAVED'], $edit_page );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/wysiwyg/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/view.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/view.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(dirname(__FILE__)).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
+// Get content 
+$content = '';
+$sql = 'SELECT `content` FROM `'.TABLE_PREFIX.'mod_wysiwyg` WHERE `section_id`='.(int)$section_id;
+if( ($content = $database->get_one($sql)) ) {
+	$content = str_replace('{SYSVAR:MEDIA_REL}', $sMediaUrl, $content );
+}
+echo $content;

Property changes on: tags/2.8.3/wb/modules/wysiwyg/view.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/modify.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/modify.php	(revision 1610)
@@ -0,0 +1,74 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(dirname(__FILE__)).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
+// Get page content
+$sql = 'SELECT `content` FROM `'.TABLE_PREFIX.'mod_wysiwyg` WHERE `section_id`='.(int)$section_id;
+if ( ($content = $database->get_one($sql)) ) {
+	$content = htmlspecialchars(str_replace('{SYSVAR:MEDIA_REL}', $sMediaUrl, $content));
+}else {
+	$content = '';
+}
+if(!isset($wysiwyg_editor_loaded)) {
+	$wysiwyg_editor_loaded=true;
+
+	if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
+		function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+			echo '<textarea name="'.$name.'" id="'.$id.'" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+		}
+	} else {
+		$id_list = array();
+		$sql  = 'SELECT `section_id` FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE `page_id`='.(int)$page_id.' AND `module`=\'wysiwyg\'';
+		if (($query_wysiwyg = $database->query($sql))) {
+			while($wysiwyg_section = $query_wysiwyg->fetchRow()) {
+				$entry='content'.$wysiwyg_section['section_id'];
+				$id_list[] = $entry;
+			}
+			require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
+		}
+	}
+}
+
+?>
+<form name="wysiwyg<?php echo $section_id; ?>" action="<?php echo WB_URL; ?>/modules/wysiwyg/save.php" method="post">
+	<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+	<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<?php
+echo $admin->getFTAN()."\n"; 
+show_wysiwyg_editor('content'.$section_id,'content'.$section_id,$content,'100%','350');
+?>
+	<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding-bottom: 10px;">
+		<tr>
+			<td align="left">
+				<input type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+			</td>
+			<td align="right">
+				<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+			</td>
+		</tr>
+	</table>
+</form>
+<br />

Property changes on: tags/2.8.3/wb/modules/wysiwyg/modify.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/info.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/info.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(dirname(__FILE__)).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+$module_directory = 'wysiwyg';
+$module_name = 'WYSIWYG';
+$module_function = 'page';
+$module_version = '2.9.0';
+$module_platform = '2.8.2';
+$module_author = 'Ryan Djurovich';
+$module_license = 'GNU General Public License';
+$module_description = 'This module allows you to edit the contents of a page using a graphical editor';

Property changes on: tags/2.8.3/wb/modules/wysiwyg/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/install.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/install.php	(revision 1610)
@@ -0,0 +1,67 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(dirname(__FILE__)).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+if(defined('WB_URL'))
+{
+	// Create table
+	//$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wysiwyg`");
+	$mod_wysiwyg = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_wysiwyg` ( '
+		. ' `section_id` INT NOT NULL DEFAULT \'0\','
+		. ' `page_id` INT NOT NULL DEFAULT \'0\','
+		. ' `content` LONGTEXT NOT NULL ,'
+		. ' `text` LONGTEXT NOT NULL ,'
+		. ' PRIMARY KEY ( `section_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_wysiwyg);
+
+// remove old version of search (deprecated)
+//    $mod_search = "SELECT * FROM ".TABLE_PREFIX."search  WHERE value = 'wysiwyg'";
+//    $insert_search = $database->query($mod_search);
+//    if( $insert_search->numRows() == 0 )
+//    {
+//    	// Insert info into the search table
+//    	// Module query info
+//    	$field_info = array();
+//    	$field_info['page_id'] = 'page_id';
+//    	$field_info['title'] = 'page_title';
+//    	$field_info['link'] = 'link';
+//    	$field_info['description'] = 'description';
+//    	$field_info['modified_when'] = 'modified_when';
+//    	$field_info['modified_by'] = 'modified_by';
+//    	$field_info = serialize($field_info);
+//    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'wysiwyg', '$field_info')");
+//    	// Query start
+//    	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_wysiwyg, [TP]pages WHERE ";
+//    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'wysiwyg')");
+//    	// Query body
+//    	$query_body_code = " [TP]pages.page_id = [TP]mod_wysiwyg.page_id AND [TP]mod_wysiwyg.text [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";
+//    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'wysiwyg')");
+//    	// Query end
+//    	$query_end_code = "";
+//    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'wysiwyg')");
+//
+//    	// Insert blank row (there needs to be at least on row for the search to work)
+//    	$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('0','0')");
+//    }
+}

Property changes on: tags/2.8.3/wb/modules/wysiwyg/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/upgrade.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(dirname(__FILE__)).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_wysiwyg';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg .= $database->get_error().'<br />';
+}
+// change internal absolute links into relative links
+$sTable = TABLE_PREFIX.'mod_wysiwyg';
+$sql  = 'UPDATE `'.$sTable.'` ';
+$sql .= 'SET `content` = REPLACE(`content`, \'"'.WB_URL.MEDIA_DIRECTORY.'\', \'"{SYSVAR:MEDIA_REL}\')';
+if (!$database->query($sql)) {
+	$msg .= $database->get_error().'<br />';
+}
+
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/delete.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/delete.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+// Delete record from the database
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_wysiwyg WHERE section_id = '$section_id'");

Property changes on: tags/2.8.3/wb/modules/wysiwyg/delete.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/add.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/add.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_wysiwyg (page_id,section_id) VALUES ('$page_id','$section_id')");
+

Property changes on: tags/2.8.3/wb/modules/wysiwyg/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/search.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/search.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/search.php	(revision 1610)
@@ -0,0 +1,65 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         search
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/admin/users/save.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10. Jan 2011) $
+ *
+ */
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+function wysiwyg_search($func_vars) {
+	extract($func_vars, EXTR_PREFIX_ALL, 'func');
+	static $search_sql = FALSE;
+	if(function_exists('search_make_sql_part')) {
+		if($search_sql===FALSE)
+			$search_sql = search_make_sql_part($func_search_url_array, $func_search_match, array('`content`'));
+	} else {
+		$search_sql = '1=1';
+	}
+	
+	// how many lines of excerpt we want to have at most
+	$max_excerpt_num = $func_default_max_excerpt;
+	$divider = ".";
+	$result = false;
+	
+	// we have to get 'content' instead of 'text', because strip_tags() dosen't remove scripting well.
+	// scripting will be removed later on automatically
+	$table = TABLE_PREFIX."mod_wysiwyg";
+	$query = $func_database->query("
+		SELECT content
+		FROM $table
+		WHERE section_id='$func_section_id'
+	");
+
+	if($query->numRows() > 0) {
+		if($res = $query->fetchRow()) {
+			$mod_vars = array(
+				'page_link' => $func_page_link,
+				'page_link_target' => "#wb_section_$func_section_id",
+				'page_title' => $func_page_title,
+				'page_description' => $func_page_description,
+				'page_modified_when' => $func_page_modified_when,
+				'page_modified_by' => $func_page_modified_by,
+				'text' => $res['content'].$divider,
+				'max_excerpt_num' => $max_excerpt_num
+			);
+			if(print_excerpt2($mod_vars, $func_vars)) {
+				$result = true;
+			}
+		}
+	}
+	return $result;
+}
+
+?>

Property changes on: tags/2.8.3/wb/modules/wysiwyg/search.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/index.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/RU.php	(revision 1610)
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/admin/users/save.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10. Jan 2011) $
+ *
+ */
+
+// Russian translation
+$module_description = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1100; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1084;&#1086;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; &#1074;&#1080;&#1079;&#1091;&#1072;&#1083;&#1100;&#1085;&#1099;&#1081; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1086;&#1088;';
+
+?>

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/DA.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE MODULE: WYSIWYG
+ -----------------------------------------------------------------------------------------
+*/
+
+// Dansk modulbeskrivelse
+$module_description = 'Dette modul g&oslash;r det muligt at redigere sideindhold ved hj&aelig;lp af en grafisk editor.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  NORWEGIAN LANGUAGE FILE FOR THE MODULE: WYSIWYG
+ -----------------------------------------------------------------------------------------
+*/
+
+// Norwegian Moduledescription
+$module_description = 'Denne modulen lar deg redigere innholdet p&aring; websidene dine med et grafisk redigerings verkt&oslash;y';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/FR.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: WYSIWYG
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Ce module permet de modifier le contenu de la page &agrave; l&apos;aide d&apos;un &eacute;diteur graphique';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+    DUTCH LANGUAGE MODULE FOR THE MODULE: WYSIWYG
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'Deze module laat je toe om de inhoud van een pagina te bewerken door middel van WYSIWYG';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wysiwyg/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/wysiwyg/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wysiwyg/languages/DE.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: WYSIWYG
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'Dieses Modul erm&ouml;glicht die Bearbeitung von Seiteninhalten mit Hilfe eines grafischen Editors';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wysiwyg/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html.org	(revision 1610)
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Page used to upload new files in the current folder.
+-->
+<html>
+	<head>
+		<title>File Upload</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet" >
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	var sUrl = oConnector.ConnectorUrl + 'Command=FileUpload' ;
+	sUrl += '&Type=' + resourceType ;
+	sUrl += '&CurrentFolder=' + encodeURIComponent( folderPath ) ;
+
+	document.getElementById('frmUpload').action = sUrl ;
+}
+
+function OnSubmit()
+{
+	if ( document.getElementById('NewFile').value.length == 0 )
+	{
+		alert( 'Please select a file from your computer' ) ;
+		return false ;
+	}
+
+	// Set the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder (Upload in progress, please wait...)' ;
+	document.getElementById('btnUpload').disabled = true ;
+
+	return true ;
+}
+
+function OnUploadCompleted( errorNumber, data )
+{
+	// Reset the Upload Worker Frame.
+	window.parent.frames['frmUploadWorker'].location = 'javascript:void(0)' ;
+
+	// Reset the upload form (On IE we must do a little trick to avoid problems).
+	if ( document.all )
+		document.getElementById('NewFile').outerHTML = '<input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file">' ;
+	else
+		document.getElementById('frmUpload').reset() ;
+
+	// Reset the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder' ;
+	document.getElementById('btnUpload').disabled = false ;
+
+	switch ( errorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 1 :	// Custom error.
+			alert( data ) ;
+			break ;
+		case 201 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + data + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedUpload = true ;
+}
+		</script>
+	</head>
+	<body>
+		<form id="frmUpload" action="" target="frmUploadWorker" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();">
+			<table class="fullHeight" cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span id="eUploadMessage">Upload a new file in this folder</span><br>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file"></td>
+								<td nowrap="nowrap">&nbsp;<input id="btnUpload" type="submit" value="Upload"></td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmupload.html	(revision 1610)
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Page used to upload new files in the current folder.
+-->
+<html>
+	<head>
+		<title>File Upload</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet" >
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	var sUrl = oConnector.ConnectorUrl + 'Command=FileUpload' ;
+	sUrl += '&Type=' + resourceType ;
+	sUrl += '&CurrentFolder=' + encodeURIComponent( folderPath ) ;
+
+	document.getElementById('frmUpload').action = sUrl ;
+}
+
+function OnSubmit()
+{
+	if ( document.getElementById('NewFile').value.length == 0 )
+	{
+		alert( 'Please select a file from your computer' ) ;
+		return false ;
+	}
+
+	// Set the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder (Upload in progress, please wait...)' ;
+	document.getElementById('btnUpload').disabled = true ;
+
+	return true ;
+}
+
+function OnUploadCompleted( errorNumber, data )
+{
+	// Reset the Upload Worker Frame.
+	window.parent.frames['frmUploadWorker'].location = 'javascript:void(0)' ;
+
+	// Reset the upload form (On IE we must do a little trick to avoid problems).
+	if ( document.all )
+		document.getElementById('NewFile').outerHTML = '<input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file">' ;
+	else
+		document.getElementById('frmUpload').reset() ;
+
+	// Reset the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder' ;
+	document.getElementById('btnUpload').disabled = false ;
+
+	switch ( errorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 1 :	// Custom error.
+			alert( data ) ;
+			break ;
+		case 201 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + data + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedUpload = true ;
+}
+		</script>
+	</head>
+	<body>
+		<form id="frmUpload" action="" target="frmUploadWorker" method="post" >
+			<table summary="" class="fullHeight" cellspacing="0" cellpadding="0" width="100%" border="0">
+			<tr>
+			<td nowrap="nowrap">&nbsp;</td>
+			</tr>
+			</table>
+		</form>
+	</body>
+
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html.org	(revision 1610)
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Page used to create new folders in the current folder.
+-->
+<html>
+	<head>
+		<title>Create Folder</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath ;
+}
+
+function CreateFolder()
+{
+	var sFolderName ;
+
+	while ( true )
+	{
+		sFolderName = prompt( 'Type the name of the new folder:', '' ) ;
+
+		if ( sFolderName == null )
+			return ;
+		else if ( sFolderName.length == 0 )
+			alert( 'Please type the folder name' ) ;
+		else
+			break ;
+	}
+
+	oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + encodeURIComponent( sFolderName) , CreateFolderCallBack ) ;
+}
+
+function CreateFolderCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) == 0 )
+		window.parent.frames['frmResourcesList'].Refresh() ;
+
+	/*
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
+	var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
+
+	switch ( iErrorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 101 :
+			alert( 'Folder already exists' ) ;
+			break ;
+		case 102 :
+			alert( 'Invalid folder name' ) ;
+			break ;
+		case 103 :
+			alert( 'You have no permissions to create the folder' ) ;
+			break ;
+		case 110 :
+			alert( 'Unknown error creating folder' ) ;
+			break ;
+		default :
+			alert( 'Error creating folder. Error number: ' + iErrorNumber ) ;
+			break ;
+	}
+	*/
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedCreateFolder = true ;
+}
+		</script>
+	</head>
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button type="button" style="WIDTH: 100%" onclick="CreateFolder();">
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<tr>
+								<td><img height="16" alt="" src="images/Folder.gif" width="16"></td>
+								<td>&nbsp;</td>
+								<td nowrap>Create New Folder</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	(revision 1610)
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Page used to create new folders in the current folder.
+-->
+<html>
+	<head>
+		<title>Create Folder</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath ;
+}
+
+function CreateFolder()
+{
+	var sFolderName ;
+
+	while ( true )
+	{
+		sFolderName = prompt( 'Type the name of the new folder:', '' ) ;
+
+		if ( sFolderName == null )
+			return ;
+		else if ( sFolderName.length == 0 )
+			alert( 'Please type the folder name' ) ;
+		else
+			break ;
+	}
+
+	oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + encodeURIComponent( sFolderName) , CreateFolderCallBack ) ;
+}
+
+function CreateFolderCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) == 0 )
+		window.parent.frames['frmResourcesList'].Refresh() ;
+
+	/*
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
+	var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
+
+	switch ( iErrorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 101 :
+			alert( 'Folder already exists' ) ;
+			break ;
+		case 102 :
+			alert( 'Invalid folder name' ) ;
+			break ;
+		case 103 :
+			alert( 'You have no permissions to create the folder' ) ;
+			break ;
+		case 110 :
+			alert( 'Unknown error creating folder' ) ;
+			break ;
+		default :
+			alert( 'Error creating folder. Error number: ' + iErrorNumber ) ;
+			break ;
+	}
+	*/
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedCreateFolder = true ;
+}
+		</script>
+	</head>
+	<body>
+		<table summary="" class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+			<td>&nbsp;</td>
+			</tr>
+		</table>
+	</body>
+
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	(revision 1610)
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows the list of available resource types.
+-->
+<html>
+	<head>
+		<title>Available types</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetResourceType( type )
+{
+	window.parent.frames["frmFolders"].SetResourceType( type ) ;
+}
+
+var aTypes = [
+	['File','File'],
+	['Image','Image'],
+	['Flash','Flash'],
+	['Media','Media']
+] ;
+
+window.onload = function()
+{
+	/* HIDE RESOURCE TYPES - NOT USED WITHIN WEBSITE BAKER
+	var oCombo = document.getElementById('cmbType') ;
+	oCombo.innerHTML = '' ;
+	for ( var i = 0 ; i < aTypes.length ; i++ )
+	{
+		if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
+			AddSelectOption( oCombo, aTypes[i][1], aTypes[i][0] ) ;
+	}
+	*/
+}
+
+		</script>
+	</head>
+	<body>
+		<!-- HIDE RESOURCE TYPES - NOT USED IN WEBSITE BAKER 	
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td nowrap>
+					Resource Type<BR>
+					<select id="cmbType" style="WIDTH: 100%" onchange="SetResourceType(this.value);">
+						<option>&nbsp;
+					</select>
+				</td>
+			</tr>
+		</table>
+		-->
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html.org	(revision 1610)
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows the actual folder path.
+-->
+<html>
+	<head>
+		<title>Folder path</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.document.domain ;
+			break ;
+		}
+		catch( e )
+		{}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	document.getElementById('tdName').innerHTML = folderPath ;
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedActualFolder = true ;
+}
+
+		</script>
+	</head>
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button style="WIDTH: 100%" type="button">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td><img height="32" alt="" src="images/FolderOpened32.gif" width="32"></td>
+								<td>&nbsp;</td>
+								<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
+								<td>&nbsp;</td>
+								<td><img height="8" src="images/ButtonArrow.gif" width="12" alt=""></td>
+								<td>&nbsp;</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html.org	(revision 1610)
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows all resources available in a folder in the File Browser.
+-->
+<html>
+<head>
+	<title>Resources</title>
+	<link href="browser.css" type="text/css" rel="stylesheet">
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript">
+
+var oListManager = new Object() ;
+
+oListManager.Clear = function()
+{
+	document.body.innerHTML = '' ;
+}
+
+function ProtectPath(path)
+{
+	path = path.replace( /\\/g, '\\\\') ;
+	path = path.replace( /'/g, '\\\'') ;
+	return path ;
+}
+
+oListManager.GetFolderRowHtml = function( folderName, folderPath )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + ProtectPath( folderPath ) + '\');return false;">' ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink +
+				'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"><\/a>' +
+			'<\/td><td nowrap colspan="2">&nbsp;' +
+				sLink +
+				folderName +
+				'<\/a>' +
+		'<\/td><\/tr>' ;
+}
+
+oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;">' ;
+
+	// Get the file icon.
+	var sIcon = oIcons.GetIcon( fileName ) ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink +
+				'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"><\/a>' +
+			'<\/td><td>&nbsp;' +
+				sLink +
+				fileName +
+				'<\/a>' +
+			'<\/td><td align="right" nowrap>&nbsp;' +
+				fileSize +
+				' KB' +
+		'<\/td><\/tr>' ;
+}
+
+function OpenFolder( folderPath )
+{
+	// Load the resources list for this folder.
+	window.parent.frames['frmFolders'].LoadFolders( folderPath ) ;
+}
+
+function OpenFile( fileUrl )
+{
+	window.top.opener.SetUrl( fileUrl ) ;
+	window.top.close() ;
+	window.top.opener.focus() ;
+}
+
+function LoadResources( resourceType, folderPath )
+{
+	oListManager.Clear() ;
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath ;
+	oConnector.SendCommand( 'GetFoldersAndFiles', null, GetFoldersAndFilesCallBack ) ;
+}
+
+function Refresh()
+{
+	LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
+}
+
+function GetFoldersAndFilesCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+
+	// Get the current folder path.
+	var oFolderNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	if ( oFolderNode == null )
+	{
+		alert( 'The server didn\'t reply with a proper XML data. Please check your configuration.' ) ;
+		return ;
+	}
+	var sCurrentFolderPath	= oFolderNode.attributes.getNamedItem('path').value ;
+	var sCurrentFolderUrl	= oFolderNode.attributes.getNamedItem('url').value ;
+
+//	var dTimer = new Date() ;
+
+	var oHtml = new StringBuilder( '<table id="tableFiles" cellspacing="1" cellpadding="0" width="100%" border="0">' ) ;
+
+	// Add the Folders.
+	var oNodes ;
+	oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ) ;
+	}
+
+	// Add the Files.
+	oNodes = fckXml.SelectNodes( 'Connector/Files/File' ) ;
+	for ( var j = 0 ; j < oNodes.length ; j++ )
+	{
+		var oNode = oNodes[j] ;
+		var sFileName = oNode.attributes.getNamedItem('name').value ;
+		var sFileSize = oNode.attributes.getNamedItem('size').value ;
+
+		// Get the optional "url" attribute. If not available, build the url.
+		var oFileUrlAtt = oNodes[j].attributes.getNamedItem('url') ;
+		var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : encodeURI( sCurrentFolderUrl + sFileName ).replace( /#/g, '%23' ) ;
+
+		oHtml.Append( oListManager.GetFileRowHtml( sFileName, sFileUrl, sFileSize ) ) ;
+	}
+
+	oHtml.Append( '<\/table>' ) ;
+
+	document.body.innerHTML = oHtml.ToString() ;
+
+//	window.top.document.title = 'Finished processing in ' + ( ( ( new Date() ) - dTimer ) / 1000 ) + ' seconds' ;
+
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedResourcesList = true ;
+}
+	</script>
+</head>
+<body class="FileArea">
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.html	(revision 1610)
@@ -0,0 +1,200 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
+   "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page compose the File Browser dialog frameset.
+-->
+<html>
+	<head>
+		<title>FCKeditor - Resources Browser</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/fckxml.js"></script>
+		<script type="text/javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.document.domain ;
+			break ;
+		}
+		catch( e )
+		{}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function GetUrlParam( paramName )
+{
+	var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
+	var oMatch = oRegex.exec( window.top.location.search ) ;
+
+	if ( oMatch && oMatch.length > 1 )
+		return decodeURIComponent( oMatch[1] ) ;
+	else
+		return '' ;
+}
+
+var oConnector = new Object() ;
+oConnector.CurrentFolder	= '/' ;
+
+var sConnUrl = GetUrlParam( 'Connector' ) ;
+
+// Gecko has some problems when using relative URLs (not starting with slash).
+if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
+	sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;
+
+oConnector.ConnectorUrl = sConnUrl + ( sConnUrl.indexOf('?') != -1 ? '&' : '?' ) ;
+
+var sServerPath = GetUrlParam( 'ServerPath' ) ;
+if ( sServerPath.length > 0 )
+	oConnector.ConnectorUrl += 'ServerPath=' + encodeURIComponent( sServerPath ) + '&' ;
+
+oConnector.ResourceType		= GetUrlParam( 'Type' ) ;
+oConnector.ShowAllTypes		= ( oConnector.ResourceType.length == 0 ) ;
+
+if ( oConnector.ShowAllTypes )
+	oConnector.ResourceType = 'File' ;
+
+oConnector.SendCommand = function( command, params, callBackFunction )
+{
+	var sUrl = this.ConnectorUrl + 'Command=' + command ;
+	sUrl += '&Type=' + this.ResourceType ;
+	sUrl += '&CurrentFolder=' + encodeURIComponent( this.CurrentFolder ) ;
+
+	if ( params ) sUrl += '&' + params ;
+
+	// Add a random salt to avoid getting a cached version of the command execution
+	sUrl += '&uuid=' + new Date().getTime() ;
+
+	var oXML = new FCKXml() ;
+
+	if ( callBackFunction )
+		oXML.LoadUrl( sUrl, callBackFunction ) ;	// Asynchronous load.
+	else
+		return oXML.LoadUrl( sUrl ) ;
+
+	return null ;
+}
+
+oConnector.CheckError = function( responseXml )
+{
+	var iErrorNumber = 0 ;
+	var oErrorNode = responseXml.SelectSingleNode( 'Connector/Error' ) ;
+
+	if ( oErrorNode )
+	{
+		iErrorNumber = parseInt( oErrorNode.attributes.getNamedItem('number').value, 10 ) ;
+
+		switch ( iErrorNumber )
+		{
+			case 0 :
+				break ;
+			case 1 :	// Custom error. Message placed in the "text" attribute.
+				alert( oErrorNode.attributes.getNamedItem('text').value ) ;
+				break ;
+			case 101 :
+				alert( 'Folder already exists' ) ;
+				break ;
+			case 102 :
+				alert( 'Invalid folder name' ) ;
+				break ;
+			case 103 :
+				alert( 'You have no permissions to create the folder' ) ;
+				break ;
+			case 110 :
+				alert( 'Unknown error creating folder' ) ;
+				break ;
+			default :
+				alert( 'Error on your request. Error number: ' + iErrorNumber ) ;
+				break ;
+		}
+	}
+	return iErrorNumber ;
+}
+
+var oIcons = new Object() ;
+
+oIcons.AvailableIconsArray = [
+	'ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js',
+	'mdb','mp3','pdf','png','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip' ] ;
+
+oIcons.AvailableIcons = new Object() ;
+
+for ( var i = 0 ; i < oIcons.AvailableIconsArray.length ; i++ )
+	oIcons.AvailableIcons[ oIcons.AvailableIconsArray[i] ] = true ;
+
+oIcons.GetIcon = function( fileName )
+{
+	var sExtension = fileName.substr( fileName.lastIndexOf('.') + 1 ).toLowerCase() ;
+
+	if ( this.AvailableIcons[ sExtension ] == true )
+		return sExtension ;
+	else
+		return 'default.icon' ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	if (errorNumber == "1")
+		window.frames['frmUpload'].OnUploadCompleted( errorNumber, customMsg ) ;
+	else
+		window.frames['frmUpload'].OnUploadCompleted( errorNumber, fileName ) ;
+}
+
+		</script>
+	</head>
+	<frameset cols="150,*" class="Frame" framespacing="3" bordercolor="#f1f1e3" frameborder="1">
+		<frameset rows="50,*" framespacing="0">
+			<frame src="frmresourcetype.html" scrolling="no" frameborder="0">
+			<frame name="frmFolders" src="frmfolders.html" scrolling="auto" frameborder="1">
+		</frameset>
+		<frameset rows="50,*,50" framespacing="0">
+			<frame name="frmActualFolder" src="frmactualfolder.html" scrolling="no" frameborder="0">
+			<frame name="frmResourcesList" src="frmresourceslist.html" scrolling="auto" frameborder="1">
+			<frameset cols="150,*,0" framespacing="0" frameborder="0">
+				<frame name="frmCreateFolder" src="frmcreatefolder.html" scrolling="no" frameborder="0">
+				<frame name="frmUpload" src="frmupload.html" scrolling="no" frameborder="0">
+				<frame name="frmUploadWorker" src="javascript:void(0)" scrolling="no" frameborder="0">
+			</frameset>
+		</frameset>
+	</frameset>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmfolders.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmfolders.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmfolders.html	(revision 1610)
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows the list of folders available in the parent folder
+ * of the current folder.
+-->
+<html>
+	<head>
+		<title>Folders</title>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+var sActiveFolder ;
+
+var bIsLoaded = false ;
+var iIntervalId ;
+
+var oListManager = new Object() ;
+
+oListManager.Init = function()
+{
+	this.Table = document.getElementById('tableFiles') ;
+	this.UpRow = document.getElementById('trUp') ;
+
+	this.TableRows = new Object() ;
+}
+
+oListManager.Clear = function()
+{
+	// Remove all other rows available.
+	while ( this.Table.rows.length > 1 )
+		this.Table.deleteRow(1) ;
+
+	// Reset the TableRows collection.
+	this.TableRows = new Object() ;
+}
+
+oListManager.AddItem = function( folderName, folderPath )
+{
+	// Create the new row.
+	var oRow = this.Table.insertRow(-1) ;
+	oRow.className = 'FolderListFolder' ;
+
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath + '\');return false;">' ;
+
+	// Add the folder icon cell.
+	var oCell = oRow.insertCell(-1) ;
+	oCell.width = 16 ;
+	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"><\/a>' ;
+
+	// Add the folder name cell.
+	oCell = oRow.insertCell(-1) ;
+	oCell.noWrap = true ;
+	oCell.innerHTML = '&nbsp;' + sLink + folderName + '<\/a>' ;
+
+	this.TableRows[ folderPath ] = oRow ;
+}
+
+oListManager.ShowUpFolder = function( upFolderPath )
+{
+	this.UpRow.style.display = ( upFolderPath != null ? '' : 'none' ) ;
+
+	if ( upFolderPath != null )
+	{
+		document.getElementById('linkUpIcon').onclick = document.getElementById('linkUp').onclick = function()
+		{
+			LoadFolders( upFolderPath ) ;
+			return false ;
+		}
+	}
+}
+
+function CheckLoaded()
+{
+	if ( window.top.IsLoadedActualFolder
+		&& window.top.IsLoadedCreateFolder
+		&& window.top.IsLoadedUpload
+		&& window.top.IsLoadedResourcesList )
+	{
+		window.clearInterval( iIntervalId ) ;
+		bIsLoaded = true ;
+		OpenFolder( sActiveFolder ) ;
+	}
+}
+
+function OpenFolder( folderPath )
+{
+	sActiveFolder = folderPath ;
+
+	if ( ! bIsLoaded )
+	{
+		if ( ! iIntervalId )
+			iIntervalId = window.setInterval( CheckLoaded, 100 ) ;
+		return ;
+	}
+
+	// Change the style for the select row (to show the opened folder).
+	for ( var sFolderPath in oListManager.TableRows )
+	{
+		oListManager.TableRows[ sFolderPath ].className =
+			( sFolderPath == folderPath ? 'FolderListCurrentFolder' : 'FolderListFolder' ) ;
+	}
+
+	// Set the current folder in all frames.
+	window.parent.frames['frmActualFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmCreateFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmUpload'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+
+	// Load the resources list for this folder.
+	window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, folderPath ) ;
+}
+
+function LoadFolders( folderPath )
+{
+	// Clear the folders list.
+	oListManager.Clear() ;
+
+	// Get the parent folder path.
+	var sParentFolderPath ;
+	if ( folderPath != '/' )
+		sParentFolderPath = folderPath.substring( 0, folderPath.lastIndexOf( '/', folderPath.length - 2 ) + 1 ) ;
+
+	// Show/Hide the Up Folder.
+	oListManager.ShowUpFolder( sParentFolderPath ) ;
+
+	if ( folderPath != '/' )
+	{
+		sActiveFolder = folderPath ;
+		oConnector.CurrentFolder = sParentFolderPath ;
+		oConnector.SendCommand( 'GetFolders', null, GetFoldersCallBack ) ;
+	}
+	else
+		OpenFolder( '/' ) ;
+}
+
+function GetFoldersCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	var sCurrentFolderPath = oNode.attributes.getNamedItem('path').value ;
+
+	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oListManager.AddItem( sFolderName, sCurrentFolderPath + sFolderName + '/' ) ;
+	}
+
+	OpenFolder( sActiveFolder ) ;
+}
+
+function SetResourceType( type )
+{
+	oConnector.ResourceType = type ;
+	LoadFolders( '/' ) ;
+}
+
+window.onload = function()
+{
+	oListManager.Init() ;
+	LoadFolders( '/' ) ;
+}
+		</script>
+	</head>
+	<body class="FileArea">
+		<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr id="trUp" style="DISPLAY: none">
+				<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>
+				<td nowrap width="100%">&nbsp;<a id="linkUp" href="#">..</a></td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourcetype.html.org	(revision 1610)
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows the list of available resource types.
+-->
+<html>
+	<head>
+		<title>Available types</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetResourceType( type )
+{
+	window.parent.frames["frmFolders"].SetResourceType( type ) ;
+}
+
+var aTypes = [
+	['File','File'],
+	['Image','Image'],
+	['Flash','Flash'],
+	['Media','Media']
+] ;
+
+window.onload = function()
+{
+	var oCombo = document.getElementById('cmbType') ;
+	oCombo.innerHTML = '' ;
+	for ( var i = 0 ; i < aTypes.length ; i++ )
+	{
+		if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
+			AddSelectOption( oCombo, aTypes[i][1], aTypes[i][0] ) ;
+	}
+}
+
+		</script>
+	</head>
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td nowrap>
+					Resource Type<BR>
+					<select id="cmbType" style="WIDTH: 100%" onchange="SetResourceType(this.value);">
+						<option>&nbsp;
+					</select>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/browser.css	(revision 1610)
@@ -0,0 +1,101 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * CSS styles used by all pages that compose the File Browser.
+ */
+
+body
+{
+	background-color: #f1f1e3;
+	margin-top:0;
+	margin-bottom:0;
+}
+
+form
+{
+	margin: 0;
+	padding: 0;
+}
+img {
+	border: 0px;
+}
+.icon {
+	width: 16px;
+	padding: 10px;
+}
+.filename {
+	width: 50%;
+	padding: 10px;
+}
+.thumbnail {
+	width: 80px;
+	padding: 10px;
+}
+.Frame
+{
+	background-color: #f1f1e3;
+	border: thin inset #f1f1e3;
+}
+
+body.FileArea
+{
+	background-color: #ffffff;
+	margin: 10px;
+}
+
+body, td, input, select
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.ActualFolder
+{
+	font-weight: bold;
+	font-size: 14px;
+}
+
+.PopupButtons
+{
+	border-top: #d5d59d 1px solid;
+	background-color: #C1D3FB;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button, button
+{
+	color: #0000CD;
+	border: 1px solid #0000CD;
+	background-color: #B3C9FA;
+}
+
+.FolderListCurrentFolder img
+{
+	background-image: url(images/FolderOpened.gif);
+}
+
+.FolderListFolder img
+{
+	background-image: url(images/Folder.gif);
+}
+
+.fullHeight {
+	height: 100%;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/fckxml.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/fckxml.js	(revision 1610)
@@ -0,0 +1,147 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Defines the FCKXml object that is used for XML data calls
+ * and XML processing.
+ *
+ * This script is shared by almost all pages that compose the
+ * File Browser frameset.
+ */
+
+var FCKXml = function()
+{}
+
+FCKXml.prototype.GetHttpRequest = function()
+{
+	// Gecko / IE7
+	try { return new XMLHttpRequest(); }
+	catch(e) {}
+
+	// IE6
+	try { return new ActiveXObject( 'Msxml2.XMLHTTP' ) ; }
+	catch(e) {}
+
+	// IE5
+	try { return new ActiveXObject( 'Microsoft.XMLHTTP' ) ; }
+	catch(e) {}
+
+	return null ;
+}
+
+FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
+{
+	var oFCKXml = this ;
+
+	var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ;
+
+	var oXmlHttp = this.GetHttpRequest() ;
+
+	oXmlHttp.open( "GET", urlToCall, bAsync ) ;
+
+	if ( bAsync )
+	{
+		oXmlHttp.onreadystatechange = function()
+		{
+			if ( oXmlHttp.readyState == 4 )
+			{
+				var oXml ;
+				try
+				{
+					// this is the same test for an FF2 bug as in fckxml_gecko.js
+					// but we've moved the responseXML assignment into the try{}
+					// so we don't even have to check the return status codes.
+					var test = oXmlHttp.responseXML.firstChild ;
+					oXml = oXmlHttp.responseXML ;
+				}
+				catch ( e )
+				{
+					try
+					{
+						oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
+					}
+					catch ( e ) {}
+				}
+
+				if ( !oXml || !oXml.firstChild || oXml.firstChild.nodeName == 'parsererror' )
+				{
+					alert( 'The server didn\'t send back a proper XML response. Please contact your system administrator.\n\n' +
+							'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')\n\n' +
+							'Requested URL:\n' + urlToCall + '\n\n' +
+							'Response text:\n' + oXmlHttp.responseText ) ;
+					return ;
+				}
+
+				oFCKXml.DOMDocument = oXml ;
+				asyncFunctionPointer( oFCKXml ) ;
+			}
+		}
+	}
+
+	oXmlHttp.send( null ) ;
+
+	if ( ! bAsync )
+	{
+		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+			this.DOMDocument = oXmlHttp.responseXML ;
+		else
+		{
+			alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+		}
+	}
+}
+
+FCKXml.prototype.SelectNodes = function( xpath )
+{
+	if ( navigator.userAgent.indexOf('MSIE') >= 0 )		// IE
+		return this.DOMDocument.selectNodes( xpath ) ;
+	else					// Gecko
+	{
+		var aNodeArray = new Array();
+
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
+		if ( xPathResult )
+		{
+			var oNode = xPathResult.iterateNext() ;
+ 			while( oNode )
+ 			{
+ 				aNodeArray[aNodeArray.length] = oNode ;
+ 				oNode = xPathResult.iterateNext();
+ 			}
+		}
+		return aNodeArray ;
+	}
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath )
+{
+	if ( navigator.userAgent.indexOf('MSIE') >= 0 )		// IE
+		return this.DOMDocument.selectSingleNode( xpath ) ;
+	else					// Gecko
+	{
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
+
+		if ( xPathResult && xPathResult.singleNodeValue )
+			return xPathResult.singleNodeValue ;
+		else
+			return null ;
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/common.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/common.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/common.js	(revision 1610)
@@ -0,0 +1,88 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Common objects and functions shared by all pages that compose the
+ * File Browser dialog window.
+ */
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.document.domain ;
+			break ;
+		}
+		catch( e )
+		{}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function AddSelectOption( selectElement, optionText, optionValue )
+{
+	var oOption = document.createElement("OPTION") ;
+
+	oOption.text	= optionText ;
+	oOption.value	= optionValue ;
+
+	selectElement.options.add(oOption) ;
+
+	return oOption ;
+}
+
+var oConnector	= window.parent.oConnector ;
+var oIcons		= window.parent.oIcons ;
+
+
+function StringBuilder( value )
+{
+    this._Strings = new Array( value || '' ) ;
+}
+
+StringBuilder.prototype.Append = function( value )
+{
+    if ( value )
+        this._Strings.push( value ) ;
+}
+
+StringBuilder.prototype.ToString = function()
+{
+    return this._Strings.join( '' ) ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.full.0.22.jquery.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.full.0.22.jquery.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.full.0.22.jquery.js	(revision 1610)
@@ -0,0 +1,109 @@
+/*
+ * imgPreview jQuery plugin
+ * Copyright (c) 2009 James Padolsey
+ * j@qd9.co.uk | http://james.padolsey.com
+ * Dual licensed under MIT and GPL.
+ * Updated: 09/02/09
+ * @author James Padolsey
+ * @version 0.22
+ */
+(function($){
+    
+    $.expr[':'].linkingToImage = function(elem, index, match){
+        // This will return true if the specified attribute contains a valid link to an image:
+        return !! ($(elem).attr(match[3]) && $(elem).attr(match[3]).match(/\.(gif|jpe?g|png|bmp)$/i));
+    };
+    
+    $.fn.imgPreview = function(userDefinedSettings){
+        
+        var s = $.extend({
+            
+            /* DEFAULTS */
+            
+            // CSS to be applied to image:
+            imgCSS: {},
+            // Distance between cursor and preview:
+            distanceFromCursor: {top:10, left:10},
+            // Boolean, whether or not to preload images:
+            preloadImages: true,
+            // Callback: run when link is hovered: container is shown:
+            onShow: function(){},
+            // Callback: container is hidden:
+            onHide: function(){},
+            // Callback: Run when image within container has loaded:
+            onLoad: function(){},
+            // ID to give to container (for CSS styling):
+            containerID: 'imgPreviewContainer',
+            // Class to be given to container while image is loading:
+            containerLoadingClass: 'loading',
+            // Prefix (if using thumbnails), e.g. 'thumb_'
+            thumbPrefix: '',
+            // Where to retrieve the image from:
+            srcAttr: 'href'
+            
+        }, userDefinedSettings),
+        
+        $container = $('<div/>').attr('id', s.containerID)
+                        .append('<img/>').hide()
+                        .css('position','absolute')
+                        .appendTo('body'),
+            
+        $img = $('img', $container).css(s.imgCSS),
+        
+        // Get all valid elements (linking to images / ATTR with image link):
+        $collection = this.filter(':linkingToImage(' + s.srcAttr + ')');
+        
+        // Re-usable means to add prefix (from setting):
+        function addPrefix(src) {
+            return src.replace(/(\/?)([^\/]+)$/,'$1' + s.thumbPrefix + '$2');
+        }
+        
+        if (s.preloadImages) {
+            (function(i){
+                var tempIMG = new Image(),
+                    callee = arguments.callee;
+                tempIMG.src = addPrefix($($collection[i]).attr(s.srcAttr));
+                tempIMG.onload = function(){
+                    $collection[i + 1] && callee(i + 1);
+                };
+            })(0);
+        }
+        
+        $collection
+            .mousemove(function(e){
+                
+                $container.css({
+                    top: e.pageY + s.distanceFromCursor.top + 'px',
+                    left: e.pageX + s.distanceFromCursor.left + 'px'
+                });
+                
+            })
+            .hover(function(){
+                
+                var link = this;
+                $container
+                    .addClass(s.containerLoadingClass)
+                    .show();
+                $img
+                    .load(function(){
+                        $container.removeClass(s.containerLoadingClass);
+                        $img.show();
+                        s.onLoad.call($img[0], link);
+                    })
+                    .attr( 'src' , addPrefix($(link).attr(s.srcAttr)) );
+                s.onShow.call($container[0], link);
+                
+            }, function(){
+                
+                $container.hide();
+                $img.unbind('load').attr('src','').hide();
+                s.onHide.call($container[0], this);
+                
+            });
+        
+        // Return full selection, not $collection!
+        return this;
+        
+    };
+    
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.min.0.22.jquery.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.min.0.22.jquery.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/imgpreview.min.0.22.jquery.js	(revision 1610)
@@ -0,0 +1,10 @@
+/*
+ * imgPreview jQuery plugin
+ * Copyright (c) 2009 James Padolsey
+ * j@qd9.co.uk | http://james.padolsey.com
+ * Dual licensed under MIT and GPL.
+ * Updated: 09/02/09
+ * @author James Padolsey
+ * @version 0.22
+ */
+(function(c){c.expr[':'].linkingToImage=function(a,g,e){return!!(c(a).attr(e[3])&&c(a).attr(e[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};c.fn.imgPreview=function(j){var b=c.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:'imgPreviewContainer',containerLoadingClass:'loading',thumbPrefix:'',srcAttr:'href'},j),d=c('<div/>').attr('id',b.containerID).append('<img/>').hide().css('position','absolute').appendTo('body'),f=c('img',d).css(b.imgCSS),h=this.filter(':linkingToImage('+b.srcAttr+')');function i(a){return a.replace(/(\/?)([^\/]+)$/,'$1'+b.thumbPrefix+'$2')}if(b.preloadImages){(function(a){var g=new Image(),e=arguments.callee;g.src=i(c(h[a]).attr(b.srcAttr));g.onload=function(){h[a+1]&&e(a+1)}})(0)}h.mousemove(function(a){d.css({top:a.pageY+b.distanceFromCursor.top+'px',left:a.pageX+b.distanceFromCursor.left+'px'})}).hover(function(){var a=this;d.addClass(b.containerLoadingClass).show();f.load(function(){d.removeClass(b.containerLoadingClass);f.show();b.onLoad.call(f[0],a)}).attr('src',i(c(a).attr(b.srcAttr)));b.onShow.call(d[0],a)},function(){d.hide();f.unbind('load').attr('src','').hide();b.onHide.call(d[0],this)});return this}})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/js/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	(revision 1610)
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows the actual folder path.
+-->
+<html>
+	<head>
+		<title>Folder path</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript">
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.top.opener.document.domain ;
+			break ;
+		}
+		catch( e )
+		{}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	document.getElementById('tdName').innerHTML = folderPath ;
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedActualFolder = true ;
+}
+
+		</script>
+	</head>
+	<body>
+		<table class="fullHeight" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button style="WIDTH: 100%" type="button">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td><img height="32" alt="" src="images/FolderOpened32.gif" width="32"></td>
+								<td>&nbsp;</td>
+								<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
+								<td>&nbsp;</td>
+								<td><img height="8" src="images/ButtonArrow.gif" width="12" alt=""></td>
+								<td>&nbsp;</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	(revision 1610)
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page shows all resources available in a folder in the File Browser.
+-->
+<html>
+<head>
+	<title>Resources</title>
+	<link href="browser.css" type="text/css" rel="stylesheet">
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript">
+
+
+
+
+var oListManager = new Object() ;
+
+oListManager.Clear = function()
+{
+	document.body.innerHTML = '' ;
+}
+
+function ProtectPath(path)
+{
+	path = path.replace( /\\/g, '\\\\') ;
+	path = path.replace( /'/g, '\\\'') ;
+	return path ;
+}
+
+oListManager.GetFolderRowHtml = function( folderName, folderPath )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + ProtectPath( folderPath ) + '\');return false;">' ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink +
+				'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"><\/a>' +
+			'<\/td><td nowrap colspan="2">&nbsp;' +
+				sLink +
+				folderName +
+				'<\/a>' +
+		'<\/td><\/tr>' ;
+}
+
+oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;">' ;
+	var relLink = '<a href="'+fileUrl+'" rel="lightbox">' ;
+
+	// Get the file icon.
+	var sIcon = oIcons.GetIcon( fileName ) ;
+
+	return '<tr>' +
+			'<td class="icon">' +
+				sLink +
+				'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"><\/a>' +
+			'<\/td>'+
+			'<td class="thumbnail">' +
+				sLink +
+				'<img alt="" src="' + fileUrl + '" width="100"><\/a>' +
+			'<\/td>' +
+            '<td class="filename">' +
+				sLink +
+				fileName +
+				'<\/a>' +
+			'<\/td>'+
+            '<td align="right" nowrap>&nbsp;' +
+				fileSize +
+				' KB' +
+		'<\/td><\/tr>' ;
+}
+
+function OpenFolder( folderPath )
+{
+	// Load the resources list for this folder.
+	window.parent.frames['frmFolders'].LoadFolders( folderPath ) ;
+}
+
+function OpenFile( fileUrl )
+{
+	window.top.opener.SetUrl( fileUrl ) ;
+	window.top.close() ;
+	window.top.opener.focus() ;
+}
+
+function LoadResources( resourceType, folderPath )
+{
+	oListManager.Clear() ;
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath ;
+	oConnector.SendCommand( 'GetFoldersAndFiles', null, GetFoldersAndFilesCallBack ) ;
+}
+
+function Refresh()
+{
+	LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
+}
+
+function GetFoldersAndFilesCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+
+	// Get the current folder path.
+	var oFolderNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	if ( oFolderNode == null )
+	{
+		alert( 'The server didn\'t reply with a proper XML data. Please check your configuration.' ) ;
+		return ;
+	}
+	var sCurrentFolderPath	= oFolderNode.attributes.getNamedItem('path').value ;
+	var sCurrentFolderUrl	= oFolderNode.attributes.getNamedItem('url').value ;
+
+//	var dTimer = new Date() ;
+
+	var oHtml = new StringBuilder( '<table id="tableFiles" cellspacing="1" cellpadding="0" width="100%" border="0">' ) ;
+
+	// Add the Folders.
+	var oNodes ;
+	oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ) ;
+	}
+
+	// Add the Files.
+	oNodes = fckXml.SelectNodes( 'Connector/Files/File' ) ;
+	for ( var j = 0 ; j < oNodes.length ; j++ )
+	{
+		var oNode = oNodes[j] ;
+		var sFileName = oNode.attributes.getNamedItem('name').value ;
+		var sFileSize = oNode.attributes.getNamedItem('size').value ;
+
+		// Get the optional "url" attribute. If not available, build the url.
+		var oFileUrlAtt = oNodes[j].attributes.getNamedItem('url') ;
+		var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : encodeURI( sCurrentFolderUrl + sFileName ).replace( /#/g, '%23' ) ;
+
+		// hide index.php in browse media - added for Website Baker
+		if (sFileName != "index.php") 
+		{
+			oHtml.Append( oListManager.GetFileRowHtml( sFileName, sFileUrl, sFileSize ) ) ;
+		}
+	}
+
+	oHtml.Append( '<\/table>' ) ;
+
+	document.body.innerHTML = oHtml.ToString() ;
+
+//	window.top.document.title = 'Finished processing in ' + ( ( ( new Date() ) - dTimer ) / 1000 ) + ' seconds' ;
+
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedResourcesList = true ;
+}
+
+	</script>
+</head>
+<body class="FileArea">
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/js.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/js.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/png.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/png.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/html.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/html.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/spacer.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/spacer.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/Folder32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/default/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/browser/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/io.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/io.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/io.php	(revision 1610)
@@ -0,0 +1,303 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the File Manager Connector for PHP.
+ */
+function CombinePaths( $sBasePath, $sFolder )
+{
+	return RemoveFromEnd( $sBasePath, '/' ) . '/' . RemoveFromStart( $sFolder, '/' ) ;
+}
+function GetResourceTypePath( $resourceType, $sCommand )
+{
+	global $Config ;
+
+	if ( $sCommand == "QuickUpload")
+		return $Config['QuickUploadPath'][$resourceType] ;
+	else
+		return $Config['FileTypesPath'][$resourceType] ;
+}
+
+function GetResourceTypeDirectory( $resourceType, $sCommand )
+{
+	global $Config ;
+	if ( $sCommand == "QuickUpload")
+	{
+		if ( strlen( $Config['QuickUploadAbsolutePath'][$resourceType] ) > 0 )
+			return $Config['QuickUploadAbsolutePath'][$resourceType] ;
+
+		// Map the "UserFiles" path to a local directory.
+		return Server_MapPath( $Config['QuickUploadPath'][$resourceType] ) ;
+	}
+	else
+	{
+		if ( strlen( $Config['FileTypesAbsolutePath'][$resourceType] ) > 0 )
+			return $Config['FileTypesAbsolutePath'][$resourceType] ;
+
+		// Map the "UserFiles" path to a local directory.
+		return Server_MapPath( $Config['FileTypesPath'][$resourceType] ) ;
+	}
+}
+
+function GetUrlFromPath( $resourceType, $folderPath, $sCommand )
+{
+	return CombinePaths( GetResourceTypePath( $resourceType, $sCommand ), $folderPath ) ;
+}
+
+function RemoveExtension( $fileName )
+{
+	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
+}
+
+function ServerMapFolder( $resourceType, $folderPath, $sCommand )
+{
+	// Get the resource type directory.
+	$sResourceTypePath = GetResourceTypeDirectory( $resourceType, $sCommand ) ;
+
+	// Ensure that the directory exists.
+	$sErrorMsg = CreateServerFolder( $sResourceTypePath ) ;
+	if ( $sErrorMsg != '' )
+		SendError( 1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})" ) ;
+
+	// Return the resource type directory combined with the required path.
+	return CombinePaths( $sResourceTypePath , $folderPath ) ;
+}
+
+function GetParentFolder( $folderPath )
+{
+	$sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ;
+	return preg_replace( $sPattern, '', $folderPath ) ;
+}
+
+function CreateServerFolder( $folderPath, $lastFolder = null )
+{
+	global $Config ;
+	$sParent = GetParentFolder( $folderPath ) ;
+
+	// Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms
+	while ( strpos($folderPath, '//') !== false )
+	{
+		$folderPath = str_replace( '//', '/', $folderPath ) ;
+	}
+
+	// Check if the parent exists, or create it.
+	if ( !empty($sParent) && !file_exists( $sParent ) )
+	{
+		//prevents agains infinite loop when we can't create root folder
+		if ( !is_null( $lastFolder ) && $lastFolder === $sParent) {
+			return "Can't create $folderPath directory" ;
+		}
+
+		$sErrorMsg = CreateServerFolder( $sParent, $folderPath ) ;
+		if ( $sErrorMsg != '' )
+			return $sErrorMsg ;
+	}
+
+	if ( !file_exists( $folderPath ) )
+	{
+		// Turn off all error reporting.
+		error_reporting( 0 ) ;
+
+		$php_errormsg = '' ;
+		// Enable error tracking to catch the error.
+		ini_set( 'track_errors', '1' ) ;
+
+		if ( isset( $Config['ChmodOnFolderCreate'] ) && !$Config['ChmodOnFolderCreate'] )
+		{
+			mkdir( $folderPath ) ;
+		}
+		else
+		{
+			$permissions = defined('OCTAL_DIR_MODE') ? OCTAL_DIR_MODE : 0777;
+			if ( isset( $Config['ChmodOnFolderCreate'] ) )
+			{
+				$permissions = $Config['ChmodOnFolderCreate'] ;
+			}
+			// To create the folder with 0777 permissions, we need to set umask to zero.
+			$oldumask = umask(0) ;
+			mkdir( $folderPath, $permissions ) ;
+			umask( $oldumask ) ;
+		}
+
+		$sErrorMsg = $php_errormsg ;
+
+		// Restore the configurations.
+		ini_restore( 'track_errors' ) ;
+		ini_restore( 'error_reporting' ) ;
+
+		return $sErrorMsg ;
+	}
+	else
+		return '' ;
+}
+
+function GetRootPath()
+{
+	if (!isset($_SERVER)) {
+		global $_SERVER;
+	}
+	$sRealPath = realpath( './' ) ;
+	// #2124 ensure that no slash is at the end
+	$sRealPath = rtrim($sRealPath,"\\/");
+
+	$sSelfPath = $_SERVER['SCRIPT_NAME'] ;
+	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
+
+	$sSelfPath = str_replace( '/', DIRECTORY_SEPARATOR, $sSelfPath ) ;
+
+	$position = strpos( $sRealPath, $sSelfPath ) ;
+
+	// This can check only that this script isn't run from a virtual dir
+	// But it avoids the problems that arise if it isn't checked
+	if ( $position === false || $position <> strlen( $sRealPath ) - strlen( $sSelfPath ) )
+		SendError( 1, 'Sorry, can\'t map "UserFilesPath" to a physical path. You must set the "UserFilesAbsolutePath" value in "editor/filemanager/connectors/php/config.php".' ) ;
+
+	return substr( $sRealPath, 0, $position ) ;
+}
+
+// Emulate the asp Server.mapPath function.
+// given an url path return the physical directory that it corresponds to
+function Server_MapPath( $path )
+{
+	// This function is available only for Apache
+	if ( function_exists( 'apache_lookup_uri' ) )
+	{
+		$info = apache_lookup_uri( $path ) ;
+		return $info->filename . $info->path_info ;
+	}
+
+	// This isn't correct but for the moment there's no other solution
+	// If this script is under a virtual directory or symlink it will detect the problem and stop
+	return GetRootPath() . $path ;
+}
+
+function IsAllowedExt( $sExtension, $resourceType )
+{
+	global $Config ;
+	// Get the allowed and denied extensions arrays.
+	$arAllowed	= $Config['AllowedExtensions'][$resourceType] ;
+	$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
+
+	if ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) )
+		return false ;
+
+	if ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) )
+		return false ;
+
+	return true ;
+}
+
+function IsAllowedType( $resourceType )
+{
+	global $Config ;
+	if ( !in_array( $resourceType, $Config['ConfigAllowedTypes'] ) )
+		return false ;
+
+	return true ;
+}
+
+function IsAllowedCommand( $sCommand )
+{
+	global $Config ;
+
+	if ( !in_array( $sCommand, $Config['ConfigAllowedCommands'] ) )
+		return false ;
+
+	return true ;
+}
+
+function GetCurrentFolder()
+{
+	if (!isset($_GET)) {
+		global $_GET;
+	}
+	$sCurrentFolder	= isset( $_GET['CurrentFolder'] ) ? $_GET['CurrentFolder'] : '/' ;
+
+	// Check the current folder syntax (must begin and start with a slash).
+	if ( !preg_match( '|/$|', $sCurrentFolder ) )
+		$sCurrentFolder .= '/' ;
+	if ( strpos( $sCurrentFolder, '/' ) !== 0 )
+		$sCurrentFolder = '/' . $sCurrentFolder ;
+
+	// Ensure the folder path has no double-slashes
+	while ( strpos ($sCurrentFolder, '//') !== false ) {
+		$sCurrentFolder = str_replace ('//', '/', $sCurrentFolder) ;
+	}
+
+	// Check for invalid folder paths (..)
+	if ( strpos( $sCurrentFolder, '..' ) || strpos( $sCurrentFolder, "\\" ))
+		SendError( 102, '' ) ;
+
+	if ( preg_match(",(/\.)|[[:cntrl:]]|(//)|(\\\\)|([\:\*\?\"\<\>\|]),", $sCurrentFolder))
+		SendError( 102, '' ) ;
+
+	return $sCurrentFolder ;
+}
+
+// Do a cleanup of the folder name to avoid possible problems
+function SanitizeFolderName( $sNewFolderName )
+{
+	$sNewFolderName = stripslashes( $sNewFolderName ) ;
+
+	// Remove . \ / | : ? * " < >
+	$sNewFolderName = preg_replace( '/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFolderName ) ;
+
+	return $sNewFolderName ;
+}
+
+// Do a cleanup of the file name to avoid possible problems
+function SanitizeFileName( $sNewFileName )
+{
+	global $Config ;
+
+	$sNewFileName = stripslashes( $sNewFileName ) ;
+
+	// Replace dots in the name with underscores (only one dot can be there... security issue).
+	if ( $Config['ForceSingleExtension'] )
+		$sNewFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sNewFileName ) ;
+
+	// Remove \ / | : ? * " < >
+	$sNewFileName = preg_replace( '/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName ) ;
+
+	return $sNewFileName ;
+}
+
+// This is the function that sends the results of the uploading process.
+function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
+{
+	// Minified version of the document.domain automatic fix script (#1919).
+	// The original script can be found at _dev/domain_fix_template.js
+	echo <<<EOF
+<script type="text/javascript">
+(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
+EOF;
+
+	if ($errorNumber && $errorNumber != 201) {
+		$fileUrl = "";
+		$fileName = "";
+	}
+
+	$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
+	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ;
+	echo '</script>' ;
+	exit ;
+}
+
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/connector.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/connector.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/connector.php	(revision 1610)
@@ -0,0 +1,87 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the File Manager Connector for PHP.
+ */
+
+ob_start() ;
+
+require('./config.php') ;
+require('./util.php') ;
+require('./io.php') ;
+require('./basexml.php') ;
+require('./commands.php') ;
+require('./phpcompat.php') ;
+
+if ( !$Config['Enabled'] )
+	SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php" file' ) ;
+
+DoResponse() ;
+
+function DoResponse()
+{
+    if (!isset($_GET)) {
+        global $_GET;
+    }
+	if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
+		return ;
+
+	// Get the main request informaiton.
+	$sCommand		= $_GET['Command'] ;
+	$sResourceType	= $_GET['Type'] ;
+	$sCurrentFolder	= GetCurrentFolder() ;
+
+	// Check if it is an allowed command
+	if ( ! IsAllowedCommand( $sCommand ) )
+		SendError( 1, 'The "' . $sCommand . '" command isn\'t allowed' ) ;
+
+	// Check if it is an allowed type.
+	if ( !IsAllowedType( $sResourceType ) )
+		SendError( 1, 'Invalid type specified' ) ;
+
+	// File Upload doesn't have to Return XML, so it must be intercepted before anything.
+	if ( $sCommand == 'FileUpload' )
+	{
+		FileUpload( $sResourceType, $sCurrentFolder, $sCommand ) ;
+		return ;
+	}
+
+	CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ;
+
+	// Execute the required command.
+	switch ( $sCommand )
+	{
+		case 'GetFolders' :
+			GetFolders( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'GetFoldersAndFiles' :
+			GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'CreateFolder' :
+			CreateFolder( $sResourceType, $sCurrentFolder ) ;
+			break ;
+	}
+
+	CreateXmlFooter() ;
+
+	exit ;
+}
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/basexml.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/basexml.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/basexml.php	(revision 1610)
@@ -0,0 +1,99 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * These functions define the base of the XML response sent by the PHP
+ * connector.
+ */
+
+function SetXmlHeaders()
+{
+	ob_end_clean() ;
+
+	// Prevent the browser from caching the result.
+	// Date in the past
+	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT') ;
+	// always modified
+	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT') ;
+	// HTTP/1.1
+	header('Cache-Control: no-store, no-cache, must-revalidate') ;
+	header('Cache-Control: post-check=0, pre-check=0', false) ;
+	// HTTP/1.0
+	header('Pragma: no-cache') ;
+
+	// Set the response format.
+	header( 'Content-Type: text/xml; charset=utf-8' ) ;
+}
+
+function CreateXmlHeader( $command, $resourceType, $currentFolder )
+{
+	SetXmlHeaders() ;
+
+	// Create the XML document header.
+	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+
+	// Create the main "Connector" node.
+	echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ;
+
+	// Add the current folder node.
+	echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder, $command ) ) . '" />' ;
+
+	$GLOBALS['HeaderSent'] = true ;
+}
+
+function CreateXmlFooter()
+{
+	echo '</Connector>' ;
+}
+
+function SendError( $number, $text )
+{
+	if ( $_GET['Command'] == 'FileUpload' )
+		SendUploadResults( $number, "", "", $text ) ;
+
+	if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] )
+	{
+		SendErrorNode( $number, $text ) ;
+		CreateXmlFooter() ;
+	}
+	else
+	{
+		SetXmlHeaders() ;
+
+		// Create the XML document header
+		echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+
+		echo '<Connector>' ;
+
+		SendErrorNode( $number, $text ) ;
+
+		echo '</Connector>' ;
+	}
+	exit ;
+}
+
+function SendErrorNode(  $number, $text )
+{
+	if ($text)
+		echo '<Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" />' ;
+	else
+		echo '<Error number="' . $number . '" />' ;
+}
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/phpcompat.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/phpcompat.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/phpcompat.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+
+if ( !isset( $_SERVER ) ) {
+    $_SERVER = $HTTP_SERVER_VARS ;
+}
+if ( !isset( $_GET ) ) {
+    $_GET = $HTTP_GET_VARS ;
+}
+if ( !isset( $_FILES ) ) {
+    $_FILES = $HTTP_POST_FILES ;
+}
+
+if ( !defined( 'DIRECTORY_SEPARATOR' ) ) {
+    define( 'DIRECTORY_SEPARATOR',
+        strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : '/'
+    ) ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/util.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/util.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/util.php	(revision 1610)
@@ -0,0 +1,220 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Utility functions for the File Manager Connector for PHP.
+ */
+
+function RemoveFromStart( $sourceString, $charToRemove )
+{
+	$sPattern = '|^' . $charToRemove . '+|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function RemoveFromEnd( $sourceString, $charToRemove )
+{
+	$sPattern = '|' . $charToRemove . '+$|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function FindBadUtf8( $string )
+{
+	$regex =
+	'([\x00-\x7F]'.
+	'|[\xC2-\xDF][\x80-\xBF]'.
+	'|\xE0[\xA0-\xBF][\x80-\xBF]'.
+	'|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'.
+	'|\xED[\x80-\x9F][\x80-\xBF]'.
+	'|\xF0[\x90-\xBF][\x80-\xBF]{2}'.
+	'|[\xF1-\xF3][\x80-\xBF]{3}'.
+	'|\xF4[\x80-\x8F][\x80-\xBF]{2}'.
+	'|(.{1}))';
+
+	while (preg_match('/'.$regex.'/S', $string, $matches)) {
+		if ( isset($matches[2])) {
+			return true;
+		}
+		$string = substr($string, strlen($matches[0]));
+	}
+
+	return false;
+}
+
+function ConvertToXmlAttribute( $value )
+{
+	if ( defined( 'PHP_OS' ) )
+	{
+		$os = PHP_OS ;
+	}
+	else
+	{
+		$os = php_uname() ;
+	}
+
+	if ( strtoupper( substr( $os, 0, 3 ) ) === 'WIN' || FindBadUtf8( $value ) )
+	{
+		return ( utf8_encode( htmlspecialchars( $value ) ) ) ;
+	}
+	else
+	{
+		return ( htmlspecialchars( $value ) ) ;
+	}
+}
+
+/**
+ * Check whether given extension is in html etensions list
+ *
+ * @param string $ext
+ * @param array $htmlExtensions
+ * @return boolean
+ */
+function IsHtmlExtension( $ext, $htmlExtensions )
+{
+	if ( !$htmlExtensions || !is_array( $htmlExtensions ) )
+	{
+		return false ;
+	}
+	$lcaseHtmlExtensions = array() ;
+	foreach ( $htmlExtensions as $key => $val )
+	{
+		$lcaseHtmlExtensions[$key] = strtolower( $val ) ;
+	}
+	return in_array( $ext, $lcaseHtmlExtensions ) ;
+}
+
+/**
+ * Detect HTML in the first KB to prevent against potential security issue with
+ * IE/Safari/Opera file type auto detection bug.
+ * Returns true if file contain insecure HTML code at the beginning.
+ *
+ * @param string $filePath absolute path to file
+ * @return boolean
+ */
+function DetectHtml( $filePath )
+{
+	$fp = @fopen( $filePath, 'rb' ) ;
+
+	//open_basedir restriction, see #1906
+	if ( $fp === false || !flock( $fp, LOCK_SH ) )
+	{
+		return -1 ;
+	}
+
+	$chunk = fread( $fp, 1024 ) ;
+	flock( $fp, LOCK_UN ) ;
+	fclose( $fp ) ;
+
+	$chunk = strtolower( $chunk ) ;
+
+	if (!$chunk)
+	{
+		return false ;
+	}
+
+	$chunk = trim( $chunk ) ;
+
+	if ( preg_match( "/<!DOCTYPE\W*X?HTML/sim", $chunk ) )
+	{
+		return true;
+	}
+
+	$tags = array( '<body', '<head', '<html', '<img', '<pre', '<script', '<table', '<title' ) ;
+
+	foreach( $tags as $tag )
+	{
+		if( false !== strpos( $chunk, $tag ) )
+		{
+			return true ;
+		}
+	}
+
+	//type = javascript
+	if ( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) )
+	{
+		return true ;
+	}
+
+	//href = javascript
+	//src = javascript
+	//data = javascript
+	if ( preg_match( '!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) )
+	{
+		return true ;
+	}
+
+	//url(javascript
+	if ( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) )
+	{
+		return true ;
+	}
+
+	return false ;
+}
+
+/**
+ * Check file content.
+ * Currently this function validates only image files.
+ * Returns false if file is invalid.
+ *
+ * @param string $filePath absolute path to file
+ * @param string $extension file extension
+ * @param integer $detectionLevel 0 = none, 1 = use getimagesize for images, 2 = use DetectHtml for images
+ * @return boolean
+ */
+function IsImageValid( $filePath, $extension )
+{
+	if (!@is_readable($filePath)) {
+		return -1;
+	}
+
+	$imageCheckExtensions = array('gif', 'jpeg', 'jpg', 'png', 'swf', 'psd', 'bmp', 'iff');
+
+	// version_compare is available since PHP4 >= 4.0.7
+	if ( function_exists( 'version_compare' ) ) {
+		$sCurrentVersion = phpversion();
+		if ( version_compare( $sCurrentVersion, "4.2.0" ) >= 0 ) {
+			$imageCheckExtensions[] = "tiff";
+			$imageCheckExtensions[] = "tif";
+		}
+		if ( version_compare( $sCurrentVersion, "4.3.0" ) >= 0 ) {
+			$imageCheckExtensions[] = "swc";
+		}
+		if ( version_compare( $sCurrentVersion, "4.3.2" ) >= 0 ) {
+			$imageCheckExtensions[] = "jpc";
+			$imageCheckExtensions[] = "jp2";
+			$imageCheckExtensions[] = "jpx";
+			$imageCheckExtensions[] = "jb2";
+			$imageCheckExtensions[] = "xbm";
+			$imageCheckExtensions[] = "wbmp";
+		}
+	}
+
+	if ( !in_array( $extension, $imageCheckExtensions ) ) {
+		return true;
+	}
+
+	if ( @getimagesize( $filePath ) === false ) {
+		return false ;
+	}
+
+	return true;
+}
+
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/commands.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/commands.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/commands.php	(revision 1610)
@@ -0,0 +1,280 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the File Manager Connector for PHP.
+ */
+
+function GetFolders( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFolders' ) ;
+
+	// Array that will hold the folders names.
+	$aFolders	= array() ;
+
+	$oCurrentFolder = @opendir( $sServerDir ) ;
+
+	if ($oCurrentFolder !== false)
+	{
+		while ( $sFile = readdir( $oCurrentFolder ) )
+		{
+			if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
+				$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+		}
+		closedir( $oCurrentFolder ) ;
+	}
+
+	// Open the "Folders" node.
+	echo "<Folders>" ;
+
+	natcasesort( $aFolders ) ;
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	// Close the "Folders" node.
+	echo "</Folders>" ;
+}
+
+function GetFoldersAndFiles( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFoldersAndFiles' ) ;
+
+	// Arrays that will hold the folders and files names.
+	$aFolders	= array() ;
+	$aFiles		= array() ;
+
+	$oCurrentFolder = @opendir( $sServerDir ) ;
+
+	if ($oCurrentFolder !== false)
+	{
+		while ( $sFile = readdir( $oCurrentFolder ) )
+		{
+			if ( $sFile != '.' && $sFile != '..' )
+			{
+				if ( is_dir( $sServerDir . $sFile ) )
+					$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+				else
+				{
+					$iFileSize = @filesize( $sServerDir . $sFile ) ;
+					if ( !$iFileSize ) {
+						$iFileSize = 0 ;
+					}
+					if ( $iFileSize > 0 )
+					{
+						$iFileSize = round( $iFileSize / 1024 ) ;
+						if ( $iFileSize < 1 )
+							$iFileSize = 1 ;
+					}
+
+					$aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
+				}
+			}
+		}
+		closedir( $oCurrentFolder ) ;
+	}
+
+	// Send the folders
+	natcasesort( $aFolders ) ;
+	echo '<Folders>' ;
+
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	echo '</Folders>' ;
+
+	// Send the files
+	natcasesort( $aFiles ) ;
+	echo '<Files>' ;
+
+	foreach ( $aFiles as $sFiles )
+		echo $sFiles ;
+
+	echo '</Files>' ;
+}
+
+function CreateFolder( $resourceType, $currentFolder )
+{
+	if (!isset($_GET)) {
+		global $_GET;
+	}
+	$sErrorNumber	= '0' ;
+	$sErrorMsg		= '' ;
+
+	if ( isset( $_GET['NewFolderName'] ) )
+	{
+		$sNewFolderName = $_GET['NewFolderName'] ;
+		$sNewFolderName = SanitizeFolderName( $sNewFolderName ) ;
+
+		if ( strpos( $sNewFolderName, '..' ) !== FALSE )
+			$sErrorNumber = '102' ;		// Invalid folder name.
+		else
+		{
+			// Map the virtual path to the local server path of the current folder.
+			$sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'CreateFolder' ) ;
+
+			if ( is_writable( $sServerDir ) )
+			{
+				$sServerDir .= $sNewFolderName ;
+
+				$sErrorMsg = CreateServerFolder( $sServerDir ) ;
+
+				switch ( $sErrorMsg )
+				{
+					case '' :
+						$sErrorNumber = '0' ;
+						break ;
+					case 'Invalid argument' :
+					case 'No such file or directory' :
+						$sErrorNumber = '102' ;		// Path too long.
+						break ;
+					default :
+						$sErrorNumber = '110' ;
+						break ;
+				}
+			}
+			else
+				$sErrorNumber = '103' ;
+		}
+	}
+	else
+		$sErrorNumber = '102' ;
+
+	// Create the "Error" node.
+	echo '<Error number="' . $sErrorNumber . '" />' ;
+}
+
+function FileUpload( $resourceType, $currentFolder, $sCommand )
+{
+	if (!isset($_FILES)) {
+		global $_FILES;
+	}
+	$sErrorNumber = '0' ;
+	$sFileName = '' ;
+
+	if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
+	{
+		global $Config ;
+
+		$oFile = $_FILES['NewFile'] ;
+
+		// Map the virtual path to the local server path.
+		$sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ;
+
+		// Get the uploaded file name.
+		$sFileName = $oFile['name'] ;
+		$sFileName = SanitizeFileName( $sFileName ) ;
+
+		$sOriginalFileName = $sFileName ;
+
+		// Get the extension.
+		$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
+		$sExtension = strtolower( $sExtension ) ;
+
+		if ( isset( $Config['SecureImageUploads'] ) )
+		{
+			if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false )
+			{
+				$sErrorNumber = '202' ;
+			}
+		}
+
+		if ( isset( $Config['HtmlExtensions'] ) )
+		{
+			if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) &&
+				( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true )
+			{
+				$sErrorNumber = '202' ;
+			}
+		}
+
+		// Check if it is an allowed extension.
+		if ( !$sErrorNumber && IsAllowedExt( $sExtension, $resourceType ) )
+		{
+			$iCounter = 0 ;
+
+			while ( true )
+			{
+				$sFilePath = $sServerDir . $sFileName ;
+
+				if ( is_file( $sFilePath ) )
+				{
+					$iCounter++ ;
+					$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
+					$sErrorNumber = '201' ;
+				}
+				else
+				{
+					move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
+
+					if ( is_file( $sFilePath ) )
+					{
+						if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] )
+						{
+							break ;
+						}
+
+			                $permissions = defined('OCTAL_DIR_MODE') ? OCTAL_DIR_MODE : 0777;
+
+						if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] )
+						{
+							$permissions = $Config['ChmodOnUpload'] ;
+						}
+
+						$oldumask = umask(0) ;
+						chmod( $sFilePath, $permissions ) ;
+						umask( $oldumask ) ;
+					}
+
+					break ;
+				}
+			}
+
+			if ( file_exists( $sFilePath ) )
+			{
+				//previous checks failed, try once again
+				if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false )
+				{
+					@unlink( $sFilePath ) ;
+					$sErrorNumber = '202' ;
+				}
+				else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true )
+				{
+					@unlink( $sFilePath ) ;
+					$sErrorNumber = '202' ;
+				}
+			}
+		}
+		else
+			$sErrorNumber = '202' ;
+	}
+	else
+		$sErrorNumber = '202' ;
+
+
+	$sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ;
+	$sFileUrl = CombinePaths( $sFileUrl, $sFileName ) ;
+
+	SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
+
+	exit ;
+}
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/upload.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/upload.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/upload.php	(revision 1610)
@@ -0,0 +1,59 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the "File Uploader" for PHP.
+ */
+
+require('./config.php') ;
+require('./util.php') ;
+require('./io.php') ;
+require('./commands.php') ;
+require('./phpcompat.php') ;
+
+function SendError( $number, $text )
+{
+	SendUploadResults( $number, '', '', $text ) ;
+}
+
+
+// Check if this uploader has been enabled.
+if ( !$Config['Enabled'] )
+	SendUploadResults( '1', '', '', 'This file uploader is disabled. Please check the "editor/filemanager/connectors/php/config.php" file' ) ;
+
+$sCommand = 'QuickUpload' ;
+
+// The file type (from the QueryString, by default 'File').
+$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
+
+$sCurrentFolder	= "/" ;
+
+// Is enabled the upload?
+if ( ! IsAllowedCommand( $sCommand ) )
+	SendUploadResults( '1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed' ) ;
+
+// Check if it is an allowed type.
+if ( !IsAllowedType( $sType ) )
+    SendUploadResults( 1, '', '', 'Invalid type specified' ) ;
+
+
+FileUpload( $sType, $sCurrentFolder, $sCommand )
+
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php	(revision 1610)
@@ -0,0 +1,235 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Configuration file for the File Manager Connector for PHP.
+ */
+
+global $Config ;
+
+// SECURITY: You must explicitly enable this "connector". (Set it to "true").
+// WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only
+//		authenticated users can access this file or use some kind of session checking.
+$Config['Enabled'] = false ;
+
+/**
+	SECURITY PATCH FOR WEBSITE BAKER (doc)
+	only enable PHP connector if user is authenticated to WB
+	and has at least permissions to view the WB MEDIA folder
+*/
+// include WB config.php file and admin class
+require_once('../../../../../../../config.php');
+require_once(WB_PATH .'/framework/class.admin.php');
+
+$wb_path = str_replace('\\','/', WB_PATH);
+$wb_path = str_replace('//','/', WB_PATH);
+
+// check if user is authenticated if WB and has permission to view MEDIA folder
+$admin = new admin('Media', 'media_view', false, false);
+if(($admin->get_permission('media_view') === true))
+{
+	// user allowed to view MEDIA folder -> enable PHP connector
+	$Config['Enabled'] = true ;
+	// allow actions to list folders and files
+	$Config['ConfigAllowedCommands'] = array('GetFolders', 'GetFoldersAndFiles') ;
+}
+
+// Path to user files relative to the document root.
+// $Config['UserFilesPath'] = '/userfiles/' ;
+$Config['UserFilesPath'] = WB_URL.MEDIA_DIRECTORY.'/' ;
+// use home folder of current user as document root if available
+if(isset($_SESSION['HOME_FOLDER']) && file_exists($wb_path .MEDIA_DIRECTORY .$_SESSION['HOME_FOLDER'])){
+   $Config['UserFilesPath'] = $Config['UserFilesPath'].$_SESSION['HOME_FOLDER'];
+}
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Useful if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+// $Config['UserFilesAbsolutePath'] = '' ;
+
+$Config['UserFilesAbsolutePath'] = $wb_path .MEDIA_DIRECTORY.'/' ;
+// use home folder of current user as document root if available
+if(isset($_SESSION['HOME_FOLDER']) && file_exists($wb_path .MEDIA_DIRECTORY .$_SESSION['HOME_FOLDER'])){
+   $Config['UserFilesAbsolutePath'] = $Config['UserFilesAbsolutePath'].$_SESSION['HOME_FOLDER'].'/';
+}
+// Due to security issues with Apache modules, it is recommended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+// Perform additional checks for image files.
+// If set to true, validate image size (using getimagesize).
+$Config['SecureImageUploads'] = true;
+
+// What the user can do with this connector.
+// $Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;
+
+/**
+   Check WB permissions of the user/group for the MEDIA folder and
+	enable only those FCKEditor commands the user has permissions for
+*/
+// check if user is allowed to upload files to the media directory
+if(($admin->get_permission('media_upload') === true)) {
+	// add actions to upload files to the MEDIA folder
+	array_push($Config['ConfigAllowedCommands'], 'FileUpload', 'QuickUpload');
+}
+
+// check if user is allowed to create new folders in the media directory
+if(($admin->get_permission('media_create') === true)) {
+	// add action to create new folders in the MEDIA folder
+	array_push($Config['ConfigAllowedCommands'], 'CreateFolder');
+}
+
+// Allowed Resource Types.
+$Config['ConfigAllowedTypes'] = array('File', 'Image', 'Flash', 'Media') ;
+
+// For security, HTML is allowed in the first Kb of data for files having the
+// following extensions only.
+$Config['HtmlExtensions'] = array("html", "htm", "xml", "xsd", "txt", "js") ;
+
+// After file is uploaded, sometimes it is required to change its permissions
+// so that it was possible to access it at the later time.
+// If possible, it is recommended to set more restrictive permissions, like 0755.
+// Set to 0 to disable this feature.
+// Note: not needed on Windows-based servers.
+$Config['ChmodOnUpload'] = defined('OCTAL_FILE_MODE') ? OCTAL_FILE_MODE : 0777 ;
+
+// See comments above.
+// Used when creating folders that does not exist.
+$Config['ChmodOnFolderCreate'] = defined('OCTAL_DIR_MODE') ? OCTAL_DIR_MODE : 0777 ;
+
+/*
+	Configuration settings for each Resource Type
+
+	- AllowedExtensions: the possible extensions that can be allowed.
+		If it is empty then any file type can be uploaded.
+	- DeniedExtensions: The extensions that won't be allowed.
+		If it is empty then no restrictions are done here.
+
+	For a file to be uploaded it has to fulfill both the AllowedExtensions
+	and DeniedExtensions (that's it: not being denied) conditions.
+
+	- FileTypesPath: the virtual folder relative to the document root where
+		these resources will be located.
+		Attention: It must start and end with a slash: '/'
+
+	- FileTypesAbsolutePath: the physical path to the above folder. It must be
+		an absolute path.
+		If it's an empty string then it will be autocalculated.
+		Useful if you are using a virtual directory, symbolic link or alias.
+		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+		Attention: The above 'FileTypesPath' must point to the same directory.
+		Attention: It must end with a slash: '/'
+
+	 - QuickUploadPath: the virtual folder relative to the document root where
+		these resources will be uploaded using the Upload tab in the resources
+		dialogs.
+		Attention: It must start and end with a slash: '/'
+
+	 - QuickUploadAbsolutePath: the physical path to the above folder. It must be
+		an absolute path.
+		If it's an empty string then it will be autocalculated.
+		Useful if you are using a virtual directory, symbolic link or alias.
+		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+		Attention: The above 'QuickUploadPath' must point to the same directory.
+		Attention: It must end with a slash: '/'
+
+	 	NOTE: by default, QuickUploadPath and QuickUploadAbsolutePath point to
+	 	"userfiles" directory to maintain backwards compatibility with older versions of FCKeditor.
+	 	This is fine, but you in some cases you will be not able to browse uploaded files using file browser.
+	 	Example: if you click on "image button", select "Upload" tab and send image
+	 	to the server, image will appear in FCKeditor correctly, but because it is placed
+	 	directly in /userfiles/ directory, you'll be not able to see it in built-in file browser.
+	 	The more expected behaviour would be to send images directly to "image" subfolder.
+	 	To achieve that, simply change
+			$Config['QuickUploadPath']['Image']			= $Config['UserFilesPath'] ;
+			$Config['QuickUploadAbsolutePath']['Image']	= $Config['UserFilesAbsolutePath'] ;
+		into:
+			$Config['QuickUploadPath']['Image']			= $Config['FileTypesPath']['Image'] ;
+			$Config['QuickUploadAbsolutePath']['Image'] 	= $Config['FileTypesAbsolutePath']['Image'] ;
+
+*/
+
+/*
+$Config['AllowedExtensions']['File']	= array('7z', 'aiff', 'asf', 'avi', 'bmp', 'csv', 'doc', 'fla', 'flv', 'gif', 'gz', 'gzip', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pxd', 'qt', 'ram', 'rar', 'rm', 'rmi', 'rmvb', 'rtf', 'sdc', 'sitd', 'swf', 'sxc', 'sxw', 'tar', 'tgz', 'tif', 'tiff', 'txt', 'vsd', 'wav', 'wma', 'wmv', 'xls', 'xml', 'zip') ;
+$Config['DeniedExtensions']['File']		= array() ;
+$Config['FileTypesPath']['File']		= $Config['UserFilesPath'] . 'file/' ;
+$Config['FileTypesAbsolutePath']['File']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'file/' ;
+$Config['QuickUploadPath']['File']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['File']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Image']	= array('bmp','gif','jpeg','jpg','png') ;
+$Config['DeniedExtensions']['Image']	= array() ;
+$Config['FileTypesPath']['Image']		= $Config['UserFilesPath'] . 'image/' ;
+$Config['FileTypesAbsolutePath']['Image']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'image/' ;
+$Config['QuickUploadPath']['Image']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Image']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Flash']	= array('swf','flv') ;
+$Config['DeniedExtensions']['Flash']	= array() ;
+$Config['FileTypesPath']['Flash']		= $Config['UserFilesPath'] . 'flash/' ;
+$Config['FileTypesAbsolutePath']['Flash']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'flash/' ;
+$Config['QuickUploadPath']['Flash']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Flash']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Media']	= array('aiff', 'asf', 'avi', 'bmp', 'fla', 'flv', 'gif', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'png', 'qt', 'ram', 'rm', 'rmi', 'rmvb', 'swf', 'tif', 'tiff', 'wav', 'wma', 'wmv') ;
+$Config['DeniedExtensions']['Media']	= array() ;
+$Config['FileTypesPath']['Media']		= $Config['UserFilesPath'] . 'media/' ;
+$Config['FileTypesAbsolutePath']['Media']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'media/' ;
+$Config['QuickUploadPath']['Media']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Media']= $Config['UserFilesAbsolutePath'] ;
+*/
+
+/**
+	APPLY MORE RESTRICTIVE SETTINGS FOR WEBSITE BAKER
+	+ only allow file types: 	only textfiles (no PHP, Javascript or HTML files per default)
+	+ only allows images type: bmp, gif, jpges, jpg and png
+	+ only allows flash types: swf, flv (no fla ... flash action script per default)
+	+ only allows media types: swf, flv, jpg, gif, jpeg, png, avi, mgp, mpeg
+*/
+$Config['AllowedExtensions']['File']			= array();
+$Config['DeniedExtensions']['File']				= array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ;
+$Config['FileTypesPath']['File']					= $Config['UserFilesPath'];
+$Config['FileTypesAbsolutePath']['File']		= $Config['UserFilesAbsolutePath'] ;
+$Config['QuickUploadPath']['File']				= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['File']	= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Image']			= array('bmp','gif','jpeg','jpg','png') ;
+$Config['DeniedExtensions']['Image']			= array() ;
+$Config['FileTypesPath']['Image'] 				= $Config['UserFilesPath'] ;
+$Config['FileTypesAbsolutePath']['Image'] 	= $Config['UserFilesAbsolutePath'];
+$Config['QuickUploadPath']['Image'] 			= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Image']	= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Flash']			= array('swf','flv') ;
+$Config['DeniedExtensions']['Flash']			= array() ;
+$Config['FileTypesPath']['Flash']				= $Config['UserFilesPath'];
+$Config['FileTypesAbsolutePath']['Flash'] 	= $Config['UserFilesAbsolutePath'];
+$Config['QuickUploadPath']['Flash']				= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Flash']	= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Media']			= array('swf','flv','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
+$Config['DeniedExtensions']['Media']			= array() ;
+$Config['FileTypesPath']['Media']				= $Config['UserFilesPath'] . '' ;
+$Config['FileTypesAbsolutePath']['Media']		= $Config['UserFilesAbsolutePath'];
+$Config['QuickUploadPath']['Media']				= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Media']	= $Config['UserFilesAbsolutePath'] ;
+
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php.org	(revision 1610)
@@ -0,0 +1,151 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Configuration file for the File Manager Connector for PHP.
+ */
+
+global $Config ;
+
+// SECURITY: You must explicitly enable this "connector". (Set it to "true").
+// WARNING: don't just set "$Config['Enabled'] = true ;", you must be sure that only
+//		authenticated users can access this file or use some kind of session checking.
+$Config['Enabled'] = false ;
+
+
+// Path to user files relative to the document root.
+$Config['UserFilesPath'] = '/userfiles/' ;
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Useful if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+$Config['UserFilesAbsolutePath'] = '' ;
+
+// Due to security issues with Apache modules, it is recommended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+// Perform additional checks for image files.
+// If set to true, validate image size (using getimagesize).
+$Config['SecureImageUploads'] = true;
+
+// What the user can do with this connector.
+$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder') ;
+
+// Allowed Resource Types.
+$Config['ConfigAllowedTypes'] = array('File', 'Image', 'Flash', 'Media') ;
+
+// For security, HTML is allowed in the first Kb of data for files having the
+// following extensions only.
+$Config['HtmlExtensions'] = array("html", "htm", "xml", "xsd", "txt", "js") ;
+
+// After file is uploaded, sometimes it is required to change its permissions
+// so that it was possible to access it at the later time.
+// If possible, it is recommended to set more restrictive permissions, like 0755.
+// Set to 0 to disable this feature.
+// Note: not needed on Windows-based servers.
+$Config['ChmodOnUpload'] = 0777 ;
+
+// See comments above.
+// Used when creating folders that does not exist.
+$Config['ChmodOnFolderCreate'] = 0777 ;
+
+/*
+	Configuration settings for each Resource Type
+
+	- AllowedExtensions: the possible extensions that can be allowed.
+		If it is empty then any file type can be uploaded.
+	- DeniedExtensions: The extensions that won't be allowed.
+		If it is empty then no restrictions are done here.
+
+	For a file to be uploaded it has to fulfill both the AllowedExtensions
+	and DeniedExtensions (that's it: not being denied) conditions.
+
+	- FileTypesPath: the virtual folder relative to the document root where
+		these resources will be located.
+		Attention: It must start and end with a slash: '/'
+
+	- FileTypesAbsolutePath: the physical path to the above folder. It must be
+		an absolute path.
+		If it's an empty string then it will be autocalculated.
+		Useful if you are using a virtual directory, symbolic link or alias.
+		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+		Attention: The above 'FileTypesPath' must point to the same directory.
+		Attention: It must end with a slash: '/'
+
+	 - QuickUploadPath: the virtual folder relative to the document root where
+		these resources will be uploaded using the Upload tab in the resources
+		dialogs.
+		Attention: It must start and end with a slash: '/'
+
+	 - QuickUploadAbsolutePath: the physical path to the above folder. It must be
+		an absolute path.
+		If it's an empty string then it will be autocalculated.
+		Useful if you are using a virtual directory, symbolic link or alias.
+		Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'.
+		Attention: The above 'QuickUploadPath' must point to the same directory.
+		Attention: It must end with a slash: '/'
+
+	 	NOTE: by default, QuickUploadPath and QuickUploadAbsolutePath point to
+	 	"userfiles" directory to maintain backwards compatibility with older versions of FCKeditor.
+	 	This is fine, but you in some cases you will be not able to browse uploaded files using file browser.
+	 	Example: if you click on "image button", select "Upload" tab and send image
+	 	to the server, image will appear in FCKeditor correctly, but because it is placed
+	 	directly in /userfiles/ directory, you'll be not able to see it in built-in file browser.
+	 	The more expected behaviour would be to send images directly to "image" subfolder.
+	 	To achieve that, simply change
+			$Config['QuickUploadPath']['Image']			= $Config['UserFilesPath'] ;
+			$Config['QuickUploadAbsolutePath']['Image']	= $Config['UserFilesAbsolutePath'] ;
+		into:
+			$Config['QuickUploadPath']['Image']			= $Config['FileTypesPath']['Image'] ;
+			$Config['QuickUploadAbsolutePath']['Image'] 	= $Config['FileTypesAbsolutePath']['Image'] ;
+
+*/
+
+$Config['AllowedExtensions']['File']	= array('7z', 'aiff', 'asf', 'avi', 'bmp', 'csv', 'doc', 'fla', 'flv', 'gif', 'gz', 'gzip', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pxd', 'qt', 'ram', 'rar', 'rm', 'rmi', 'rmvb', 'rtf', 'sdc', 'sitd', 'swf', 'sxc', 'sxw', 'tar', 'tgz', 'tif', 'tiff', 'txt', 'vsd', 'wav', 'wma', 'wmv', 'xls', 'xml', 'zip') ;
+$Config['DeniedExtensions']['File']		= array() ;
+$Config['FileTypesPath']['File']		= $Config['UserFilesPath'] . 'file/' ;
+$Config['FileTypesAbsolutePath']['File']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'file/' ;
+$Config['QuickUploadPath']['File']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['File']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Image']	= array('bmp','gif','jpeg','jpg','png') ;
+$Config['DeniedExtensions']['Image']	= array() ;
+$Config['FileTypesPath']['Image']		= $Config['UserFilesPath'] . 'image/' ;
+$Config['FileTypesAbsolutePath']['Image']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'image/' ;
+$Config['QuickUploadPath']['Image']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Image']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Flash']	= array('swf','flv') ;
+$Config['DeniedExtensions']['Flash']	= array() ;
+$Config['FileTypesPath']['Flash']		= $Config['UserFilesPath'] . 'flash/' ;
+$Config['FileTypesAbsolutePath']['Flash']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'flash/' ;
+$Config['QuickUploadPath']['Flash']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Flash']= $Config['UserFilesAbsolutePath'] ;
+
+$Config['AllowedExtensions']['Media']	= array('aiff', 'asf', 'avi', 'bmp', 'fla', 'flv', 'gif', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'png', 'qt', 'ram', 'rm', 'rmi', 'rmvb', 'swf', 'tif', 'tiff', 'wav', 'wma', 'wmv') ;
+$Config['DeniedExtensions']['Media']	= array() ;
+$Config['FileTypesPath']['Media']		= $Config['UserFilesPath'] . 'media/' ;
+$Config['FileTypesAbsolutePath']['Media']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'media/' ;
+$Config['QuickUploadPath']['Media']		= $Config['UserFilesPath'] ;
+$Config['QuickUploadAbsolutePath']['Media']= $Config['UserFilesAbsolutePath'] ;
+
+?>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html	(revision 1610)
@@ -0,0 +1,30 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Test page for the File Browser connectors.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Connectors Tests</title>
+</head>
+<body>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html	(revision 1610)
@@ -0,0 +1,29 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Test page for the "File Uploaders".
+-->
+<html>
+	<head>
+		<title>FCKeditor - Uploaders Tests</title>
+	</head>
+	<body>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/test.html.org	(revision 1610)
@@ -0,0 +1,210 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Test page for the File Browser connectors.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Connectors Tests</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function BuildBaseUrl( command )
+{
+	var sUrl =
+		document.getElementById('cmbConnector').value +
+		'?Command=' + command +
+		'&Type=' + document.getElementById('cmbType').value +
+		'&CurrentFolder=' + encodeURIComponent(document.getElementById('txtFolder').value) ;
+
+	return sUrl ;
+}
+
+function SetFrameUrl( url )
+{
+	document.getElementById('eRunningFrame').src = url ;
+
+	document.getElementById('eUrl').innerHTML = url ;
+}
+
+function GetFolders()
+{
+	SetFrameUrl( BuildBaseUrl( 'GetFolders' ) ) ;
+	return false ;
+}
+
+function GetFoldersAndFiles()
+{
+	SetFrameUrl( BuildBaseUrl( 'GetFoldersAndFiles' ) ) ;
+	return false ;
+}
+
+function CreateFolder()
+{
+	var sFolder = prompt( 'Type the folder name:', 'Test Folder' ) ;
+
+	if ( ! sFolder )
+		return false ;
+
+	var sUrl = BuildBaseUrl( 'CreateFolder' ) ;
+	sUrl += '&NewFolderName=' + encodeURIComponent( sFolder ) ;
+
+	SetFrameUrl( sUrl ) ;
+	return false ;
+}
+
+function OnUploadCompleted( errorNumber, fileName )
+{
+	switch ( errorNumber )
+	{
+		case 0 :
+			alert( 'File uploaded with no errors' ) ;
+			break ;
+		case 201 :
+			GetFoldersAndFiles() ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+this.frames.frmUpload = this ;
+
+function SetAction()
+{
+	var sUrl = BuildBaseUrl( 'FileUpload' ) ;
+	document.getElementById('eUrl').innerHTML = sUrl ;
+	document.getElementById('frmUpload').action = sUrl ;
+}
+
+	</script>
+</head>
+<body>
+	<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+		<tr>
+			<td>
+				<table cellspacing="0" cellpadding="0" border="0">
+					<tr>
+						<td>
+							Connector:<br />
+							<select id="cmbConnector" name="cmbConnector">
+								<option value="asp/connector.asp" selected="selected">ASP</option>
+								<option value="aspx/connector.aspx">ASP.Net</option>
+								<option value="cfm/connector.cfm">ColdFusion</option>
+								<option value="lasso/connector.lasso">Lasso</option>
+								<option value="perl/connector.cgi">Perl</option>
+								<option value="php/connector.php">PHP</option>
+								<option value="py/connector.py">Python</option>
+							</select>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td>
+							Current Folder<br />
+							<input id="txtFolder" type="text" value="/" name="txtFolder" /></td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td>
+							Resource Type<br />
+							<select id="cmbType" name="cmbType">
+								<option value="File" selected="selected">File</option>
+								<option value="Image">Image</option>
+								<option value="Flash">Flash</option>
+								<option value="Media">Media</option>
+								<option value="Invalid">Invalid Type (for testing)</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+				<br />
+				<table cellspacing="0" cellpadding="0" border="0">
+					<tr>
+						<td valign="top">
+							<a href="#" onclick="GetFolders();">Get Folders</a></td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td valign="top">
+							<a href="#" onclick="GetFoldersAndFiles();">Get Folders and Files</a></td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td valign="top">
+							<a href="#" onclick="CreateFolder();">Create Folder</a></td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td valign="top">
+							<form id="frmUpload" action="" target="eRunningFrame" method="post" enctype="multipart/form-data">
+								File Upload<br />
+								<input id="txtFileUpload" type="file" name="NewFile" />
+								<input type="submit" value="Upload" onclick="SetAction();" />
+							</form>
+						</td>
+					</tr>
+				</table>
+				<br />
+				URL: <span id="eUrl"></span>
+			</td>
+		</tr>
+		<tr>
+			<td height="100%" valign="top">
+				<iframe id="eRunningFrame" src="javascript:void(0)" name="eRunningFrame" width="100%"
+					height="100%"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html.org
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html.org	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/uploadtest.html.org	(revision 1610)
@@ -0,0 +1,192 @@
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Test page for the "File Uploaders".
+-->
+<html>
+	<head>
+		<title>FCKeditor - Uploaders Tests</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<script type="text/javascript">
+
+// Automatically detect the correct document.domain (#1919).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.opener.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+function SendFile()
+{
+	var sUploaderUrl = cmbUploaderUrl.value ;
+
+	if ( sUploaderUrl.length == 0 )
+		sUploaderUrl = txtCustomUrl.value ;
+
+	if ( sUploaderUrl.length == 0 )
+	{
+		alert( 'Please provide your custom URL or select a default one' ) ;
+		return ;
+	}
+
+	eURL.innerHTML = sUploaderUrl ;
+	txtUrl.value = '' ;
+
+	var date = new Date()
+
+	frmUpload.action = sUploaderUrl + '?time=' + date.getTime();
+	if (document.getElementById('cmbType').value) {
+		frmUpload.action = frmUpload.action + '&Type='+document.getElementById('cmbType').value;
+	}
+	if (document.getElementById('CurrentFolder').value) {
+		frmUpload.action = frmUpload.action + '&CurrentFolder='+document.getElementById('CurrentFolder').value;
+	}
+	frmUpload.submit() ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			txtUrl.value = fileUrl ;
+			alert( 'File uploaded with no errors' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			break ;
+		case 10 :	// Custom warning
+			txtUrl.value = fileUrl ;
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			txtUrl.value = fileUrl ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+		</script>
+	</head>
+	<body>
+		<table cellSpacing="0" cellPadding="0" width="100%" border="0" height="100%">
+			<tr>
+				<td>
+					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+						<tr>
+							<td nowrap>
+								Select the "File Uploader" to use: <br>
+								<select id="cmbUploaderUrl">
+									<option selected value="asp/upload.asp">ASP</option>
+									<option value="aspx/upload.aspx">ASP.Net</option>
+									<option value="cfm/upload.cfm">ColdFusion</option>
+									<option value="lasso/upload.lasso">Lasso</option>
+									<option value="perl/upload.cgi">Perl</option>
+									<option value="php/upload.php">PHP</option>
+									<option value="py/upload.py">Python</option>
+									<option value="">(Custom)</option>
+								</select>
+							</td>
+						<td>
+							Resource Type<br />
+							<select id="cmbType" name="cmbType">
+								<option value="">None</option>
+								<option value="File">File</option>
+								<option value="Image">Image</option>
+								<option value="Flash">Flash</option>
+								<option value="Media">Media</option>
+								<option value="Invalid">Invalid Type (for testing)</option>
+							</select>
+						</td>
+						<td>
+						Current Folder: <br>
+						<input type="text" name="CurrentFolder" id="CurrentFolder" value="/">
+						</td>
+							<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%">
+								Custom Uploader URL:<BR>
+								<input id="txtCustomUrl" style="WIDTH: 100%; BACKGROUND-COLOR: #dcdcdc" disabled type="text">
+							</td>
+						</tr>
+					</table>
+					<br>
+					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+						<tr>
+							<td noWrap>
+								<form id="frmUpload" target="UploadWindow" enctype="multipart/form-data" action="" method="post">
+									Upload a new file:<br>
+									<input type="file" name="NewFile"><br>
+
+									<input type="button" value="Send it to the Server" onclick="SendFile();">
+								</form>
+							</td>
+							<td style="WIDTH: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+							<td vAlign="top" width="100%">
+								Uploaded File URL:<br>
+								<INPUT id="txtUrl" style="WIDTH: 100%" readonly type="text">
+							</td>
+						</tr>
+					</table>
+					<br>
+					Post URL: <span id="eURL">&nbsp;</span>
+				</td>
+			</tr>
+			<tr>
+				<td height="100%">
+					<iframe name="UploadWindow" width="100%" height="100%" src="javascript:void(0)"></iframe>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/connectors/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/filemanager/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link.js	(revision 1610)
@@ -0,0 +1,927 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Link dialog window (see fck_link.html).
+ */
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKRegexLib	= oEditor.FCKRegexLib ;
+var FCKTools	= oEditor.FCKTools ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
+
+if ( !FCKConfig.LinkDlgHideTarget )
+	dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
+
+if ( FCKConfig.LinkUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
+
+if ( !FCKConfig.LinkDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
+
+	dialog.SetAutoSize( true ) ;
+}
+
+//#### Regular Expressions library.
+var oRegex = new Object() ;
+
+oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
+
+oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
+
+oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
+
+oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
+
+oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
+
+// Accessible popups
+oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
+
+oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
+
+//#### Parser Functions
+
+var oParser = new Object() ;
+
+// This method simply returns the two inputs in numerical order. You can even
+// provide strings, as the method would parseInt() the values.
+oParser.SortNumerical = function(a, b)
+{
+	return parseInt( a, 10 ) - parseInt( b, 10 ) ;
+}
+
+oParser.ParseEMailParams = function(sParams)
+{
+	// Initialize the oEMailParams object.
+	var oEMailParams = new Object() ;
+	oEMailParams.Subject = '' ;
+	oEMailParams.Body = '' ;
+
+	var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
+
+	aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
+
+	return oEMailParams ;
+}
+
+// This method returns either an object containing the email info, or FALSE
+// if the parameter is not an email link.
+oParser.ParseEMailUri = function( sUrl )
+{
+	// Initializes the EMailInfo object.
+	var oEMailInfo = new Object() ;
+	oEMailInfo.Address = '' ;
+	oEMailInfo.Subject = '' ;
+	oEMailInfo.Body = '' ;
+
+	var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
+	if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
+	{
+		// This seems to be an unprotected email link.
+		var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
+		if ( aParts )
+		{
+			// Set the e-mail address.
+			oEMailInfo.Address = aParts[1] ;
+
+			// Look for the optional e-mail parameters.
+			if ( aParts[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+		}
+		return oEMailInfo ;
+	}
+	else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
+	{
+		// This may be a protected email.
+
+		// Try to match the url against the EMailProtectionFunction.
+		var func = FCKConfig.EMailProtectionFunction ;
+		if ( func != null )
+		{
+			try
+			{
+				// Escape special chars.
+				func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
+
+				// Define the possible keys.
+				var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
+
+				// Get the order of the keys (hold them in the array <pos>) and
+				// the function replaced by regular expression patterns.
+				var sFunc = func ;
+				var pos = new Array() ;
+				for ( var i = 0 ; i < keys.length ; i ++ )
+				{
+					var rexp = new RegExp( keys[i] ) ;
+					var p = func.search( rexp ) ;
+					if ( p >= 0 )
+					{
+						sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
+						pos[pos.length] = p + ':' + keys[i] ;
+					}
+				}
+
+				// Sort the available keys.
+				pos.sort( oParser.SortNumerical ) ;
+
+				// Replace the excaped single quotes in the url, such they do
+				// not affect the regexp afterwards.
+				aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
+
+				// Create the regexp and execute it.
+				var rFunc = new RegExp( '^' + sFunc + '$' ) ;
+				var aMatch = rFunc.exec( aLinkInfo[2] ) ;
+				if ( aMatch )
+				{
+					var aInfo = new Array();
+					for ( var i = 1 ; i < aMatch.length ; i ++ )
+					{
+						var k = pos[i-1].match(/^\d+:(.+)$/) ;
+						aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
+					}
+
+					// Fill the EMailInfo object that will be returned
+					oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
+					oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
+					oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
+
+					return oEMailInfo ;
+				}
+			}
+			catch (e)
+			{
+			}
+		}
+
+		// Try to match the email against the encode protection.
+		var aMatch = aLinkInfo[2].match( /^(?:void\()?location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'\)?$/ ) ;
+		if ( aMatch )
+		{
+			// The link is encoded
+			oEMailInfo.Address = eval( aMatch[1] ) ;
+			if ( aMatch[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+			return oEMailInfo ;
+		}
+	}
+	return false;
+}
+
+oParser.CreateEMailUri = function( address, subject, body )
+{
+	// Switch for the EMailProtection setting.
+	switch ( FCKConfig.EMailProtection )
+	{
+		case 'function' :
+			var func = FCKConfig.EMailProtectionFunction ;
+			if ( func == null )
+			{
+				if ( FCKConfig.Debug )
+				{
+					alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
+				}
+				return '';
+			}
+
+			// Split the email address into name and domain parts.
+			var aAddressParts = address.split( '@', 2 ) ;
+			if ( aAddressParts[1] == undefined )
+			{
+				aAddressParts[1] = '' ;
+			}
+
+			// Replace the keys by their values (embedded in single quotes).
+			func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
+
+			return 'javascript:' + func ;
+
+		case 'encode' :
+			var aParams = [] ;
+			var aAddressCode = [] ;
+
+			if ( subject.length > 0 )
+				aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
+			if ( body.length > 0 )
+				aParams.push( 'body=' + encodeURIComponent( body ) ) ;
+			for ( var i = 0 ; i < address.length ; i++ )
+				aAddressCode.push( address.charCodeAt( i ) ) ;
+
+			return 'javascript:void(location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\')' ;
+	}
+
+	// EMailProtection 'none'
+
+	var sBaseUri = 'mailto:' + address ;
+
+	var sParams = '' ;
+
+	if ( subject.length > 0 )
+		sParams = '?subject=' + encodeURIComponent( subject ) ;
+
+	if ( body.length > 0 )
+	{
+		sParams += ( sParams.length == 0 ? '?' : '&' ) ;
+		sParams += 'body=' + encodeURIComponent( body ) ;
+	}
+
+	return sBaseUri + sParams ;
+}
+
+//#### Initialization Code
+
+// oLink: The actual selected link in the editor.
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
+if ( oLink )
+	FCK.Selection.SelectNode( oLink ) ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Fill the Anchor Names and Ids combos.
+	LoadAnchorNamesAndIds() ;
+
+	// Load the selected link information (if any).
+	LoadSelection() ;
+
+	// Update the dialog box.
+	SetLinkType( GetE('cmbLinkType').value ) ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
+
+	// Show the initial dialog content.
+	GetE('divInfo').style.display = '' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.LinkUpload )
+		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
+
+	// Set the default target (from configuration).
+	SetDefaultTarget() ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	// Select the first field.
+	switch( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			SelectField( 'txtUrl' ) ;
+			break ;
+		case 'email' :
+			SelectField( 'txtEMailAddress' ) ;
+			break ;
+		case 'anchor' :
+			if ( GetE('divSelAnchor').style.display != 'none' )
+				SelectField( 'cmbAnchorName' ) ;
+			else
+				SelectField( 'cmbLinkType' ) ;
+	}
+}
+
+var bHasAnchors ;
+
+function LoadAnchorNamesAndIds()
+{
+	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
+	// to edit them. So, we must look for that images now.
+	var aAnchors = new Array() ;
+	var i ;
+	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
+	for( i = 0 ; i < oImages.length ; i++ )
+	{
+		if ( oImages[i].getAttribute('_fckanchor') )
+			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
+	}
+
+	// Add also real anchors
+	var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
+	for( i = 0 ; i < oLinks.length ; i++ )
+	{
+		if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
+			aAnchors[ aAnchors.length ] = oLinks[i] ;
+	}
+
+	var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
+
+	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
+
+	for ( i = 0 ; i < aAnchors.length ; i++ )
+	{
+		var sName = aAnchors[i].name ;
+		if ( sName && sName.length > 0 )
+			FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
+	}
+
+	for ( i = 0 ; i < aIds.length ; i++ )
+	{
+		FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
+	}
+
+	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
+	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;
+}
+
+function LoadSelection()
+{
+	if ( !oLink ) return ;
+
+	var sType = 'url' ;
+
+	// Get the actual Link href.
+	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+	if ( sHRef == null )
+		sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
+
+	// Look for a popup javascript link.
+	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
+	if( oPopupMatch )
+	{
+		GetE('cmbTarget').value = 'popup' ;
+		sHRef = oPopupMatch[1] ;
+		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
+		SetTarget( 'popup' ) ;
+	}
+
+	// Accessible popups, the popup data is in the onclick attribute
+	if ( !oPopupMatch )
+	{
+		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+		if ( onclick )
+		{
+			// Decode the protected string
+			onclick = decodeURIComponent( onclick ) ;
+
+			oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
+			if( oPopupMatch )
+			{
+				GetE( 'cmbTarget' ).value = 'popup' ;
+				FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
+				SetTarget( 'popup' ) ;
+			}
+		}
+	}
+
+	// Search for the protocol.
+	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
+
+	// Search for a protected email link.
+	var oEMailInfo = oParser.ParseEMailUri( sHRef );
+
+	if ( oEMailInfo )
+	{
+		sType = 'email' ;
+
+		GetE('txtEMailAddress').value = oEMailInfo.Address ;
+		GetE('txtEMailSubject').value = oEMailInfo.Subject ;
+		GetE('txtEMailBody').value    = oEMailInfo.Body ;
+	}
+	else if ( sProtocol )
+	{
+		sProtocol = sProtocol[0].toLowerCase() ;
+		GetE('cmbLinkProtocol').value = sProtocol ;
+
+		// Remove the protocol and get the remaining URL.
+		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
+		sType = 'url' ;
+		GetE('txtUrl').value = sUrl ;
+	}
+	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
+	{
+		sType = 'anchor' ;
+		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
+	}
+	else					// It is another type of link.
+	{
+		sType = 'url' ;
+
+		GetE('cmbLinkProtocol').value = '' ;
+		GetE('txtUrl').value = sHRef ;
+	}
+
+	if ( !oPopupMatch )
+	{
+		// Get the target.
+		var sTarget = oLink.target ;
+
+		if ( sTarget && sTarget.length > 0 )
+		{
+			if ( oRegex.ReserveTarget.test( sTarget ) )
+			{
+				sTarget = sTarget.toLowerCase() ;
+				GetE('cmbTarget').value = sTarget ;
+			}
+			else
+				GetE('cmbTarget').value = 'frame' ;
+			GetE('txtTargetFrame').value = sTarget ;
+		}
+	}
+
+		var sLnkRel = GetE('cmbAttContentRel') ;
+		if (  (sLnkRel.length == 0) && (oLink.rel.lenght != 0) )	// Modifying an existent rel.
+		{
+			sLnkRel = oLink.rel;
+		}
+
+		if ( sLnkRel.lenght == null ) 
+		{
+			var myselect = document.getElementById("cmbAttContentRel")
+			var found = false;
+
+			for (var i=0; i < myselect.options.length; i++)
+			{
+				if (myselect.options[i].value == oLink.rel)
+				{
+				  found = true;
+				  break;
+				} 
+			}			
+
+			if ( found == false ) 
+			{
+				try {
+					myselect.add(new Option(oLink.rel, oLink.rel,true ), myselect.options[1]) //add new option to beginning of "cmbAttContentRel"
+					}
+				catch(e) { //in IE, try the below version instead of add()
+					myselect.add(new Option( oLink.rel, oLink.rel,true ),1 ) //add new option to beginning of "cmbAttContentRel"
+					//myselect.options[1].selected=true;
+					}
+			}
+		} 
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oLink.id ;
+	GetE('txtAttName').value		= oLink.name ;
+	GetE('cmbAttLangDir').value		= oLink.dir ;
+	GetE('txtAttLangCode').value	= oLink.lang ;
+	GetE('txtAttAccessKey').value	= oLink.accessKey ;
+	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
+	GetE('txtAttTitle').value		= oLink.title ;
+	GetE('txtAttContentType').value	= oLink.type ;
+	GetE('txtAttCharSet').value		= oLink.charset ;
+	GetE('cmbAttContentRel').value	= oLink.rel ;
+
+	var sClass ;
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		sClass	= oLink.getAttribute('className',2) || '' ;
+		// Clean up temporary classes for internal use:
+		sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
+
+		GetE('txtAttStyle').value	= oLink.style.cssText ;
+	}
+	else
+	{
+		sClass	= oLink.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value	= oLink.getAttribute('style',2) || '' ;
+	}
+	GetE('txtAttClasses').value	= sClass ;
+
+	// Update the Link type combo.
+	GetE('cmbLinkType').value = sType ;
+}
+
+//#### Link type selection.
+function SetLinkType( linkType )
+{
+	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;
+	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;
+	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;
+
+	if ( !FCKConfig.LinkDlgHideTarget )
+		dialog.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
+
+	if ( FCKConfig.LinkUpload )
+		dialog.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
+
+	if ( !FCKConfig.LinkDlgHideAdvanced )
+		dialog.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
+
+	if ( linkType == 'email' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Target type selection.
+function SetTarget( targetType )
+{
+	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;
+	GetE('tdPopupName').style.display	=
+	GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
+
+	switch ( targetType )
+	{
+		case "_blank" :
+		case "_self" :
+		case "_parent" :
+		case "_top" :
+			GetE('txtTargetFrame').value = targetType ;
+			break ;
+		case "" :
+			GetE('txtTargetFrame').value = '' ;
+			break ;
+	}
+
+	if ( targetType == 'popup' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Called while the user types the URL.
+function OnUrlChange()
+{
+	var sUrl = GetE('txtUrl').value ;
+	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
+
+	if ( sProtocol )
+	{
+		sUrl = sUrl.substr( sProtocol[0].length ) ;
+		GetE('txtUrl').value = sUrl ;
+		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
+	}
+	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
+	{
+		GetE('cmbLinkProtocol').value = '' ;
+	}
+}
+
+//#### Called while the user types the target name.
+function OnTargetNameChange()
+{
+	var sFrame = GetE('txtTargetFrame').value ;
+
+	if ( sFrame.length == 0 )
+		GetE('cmbTarget').value = '' ;
+	else if ( oRegex.ReserveTarget.test( sFrame ) )
+		GetE('cmbTarget').value = sFrame.toLowerCase() ;
+	else
+		GetE('cmbTarget').value = 'frame' ;
+}
+
+// Accessible popups
+function BuildOnClickPopup()
+{
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
+
+	var sFeatures = '' ;
+	var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( i > 0 ) sFeatures += ',' ;
+		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
+	}
+
+	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
+	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
+	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
+	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
+
+	if ( sFeatures != '' )
+		sFeatures = sFeatures + ",status" ;
+
+	return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
+}
+
+//#### Fills all Popup related fields.
+function FillPopupFields( windowName, features )
+{
+	if ( windowName )
+		GetE('txtPopupName').value = windowName ;
+
+	var oFeatures = new Object() ;
+	var oFeaturesMatch ;
+	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
+	{
+		var sValue = oFeaturesMatch[2] ;
+		if ( sValue == ( 'yes' || '1' ) )
+			oFeatures[ oFeaturesMatch[1] ] = true ;
+		else if ( ! isNaN( sValue ) && sValue != 0 )
+			oFeatures[ oFeaturesMatch[1] ] = sValue ;
+	}
+
+	// Update all features check boxes.
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( oFeatures[ aChkFeatures[i].value ] )
+			aChkFeatures[i].checked = true ;
+	}
+
+	// Update position and size text boxes.
+	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;
+	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;
+	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;
+	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	var sUri, sInnerHtml ;
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	switch ( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			sUri = GetE('txtUrl').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoUrl ) ;
+				return false ;
+			}
+
+			sUri = GetE('cmbLinkProtocol').value + sUri ;
+
+			break ;
+
+		case 'email' :
+			sUri = GetE('txtEMailAddress').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoEMail ) ;
+				return false ;
+			}
+
+			sUri = oParser.CreateEMailUri(
+				sUri,
+				GetE('txtEMailSubject').value,
+				GetE('txtEMailBody').value ) ;
+			break ;
+
+		case 'anchor' :
+			var sAnchor = GetE('cmbAnchorName').value ;
+			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
+
+			if ( sAnchor.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoAnchor ) ;
+				return false ;
+			}
+
+			sUri = '#' + sAnchor ;
+			break ;
+	}
+
+	// If no link is selected, create a new one (it may result in more than one link creation - #220).
+	var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
+
+	// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
+	var aHasSelection = ( aLinks.length > 0 ) ;
+	if ( !aHasSelection )
+	{
+		sInnerHtml = sUri;
+
+		// Built a better text for empty links.
+		switch ( GetE('cmbLinkType').value )
+		{
+			// anchor: use old behavior --> return true
+			case 'anchor':
+				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
+				break ;
+
+			// url: try to get path
+			case 'url':
+				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
+				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
+				if (asLinkPath != null)
+					sInnerHtml = asLinkPath[1];  // use matched path
+				break ;
+
+			// mailto: try to get email address
+			case 'email':
+				sInnerHtml = GetE('txtEMailAddress').value ;
+				break ;
+		}
+
+		// Create a new (empty) anchor.
+		aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
+	}
+
+	for ( var i = 0 ; i < aLinks.length ; i++ )
+	{
+		oLink = aLinks[i] ;
+
+		if ( aHasSelection )
+			sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
+
+		oLink.href = sUri ;
+		SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+		var onclick;
+		// Accessible popups
+		if( GetE('cmbTarget').value == 'popup' )
+		{
+			onclick = BuildOnClickPopup() ;
+			// Encode the attribute
+			onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" )  ;
+			SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
+		}
+		else
+		{
+			// Check if the previous onclick was for a popup:
+			// In that case remove the onclick handler.
+			onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+			if ( onclick )
+			{
+				// Decode the protected string
+				onclick = decodeURIComponent( onclick ) ;
+
+				if( oRegex.OnClickPopup.test( onclick ) )
+					SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
+			}
+		}
+
+		oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
+
+		// Target
+		if( GetE('cmbTarget').value != 'popup' )
+			SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
+		else
+			SetAttribute( oLink, 'target', null ) ;
+
+		// Let's set the "id" only for the first link to avoid duplication.
+		if ( i == 0 )
+			SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
+
+		// Advances Attributes
+		SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
+		SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
+		SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
+		SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
+		SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
+		SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
+		SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
+		SetAttribute( oLink, 'rel'		, GetE('cmbAttContentRel').value  ) ;
+		SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sClass = GetE('txtAttClasses').value ;
+			// If it's also an anchor add an internal class
+			if ( GetE('txtAttName').value.length != 0 )
+				sClass += ' FCK__AnchorC' ;
+			SetAttribute( oLink, 'className', sClass ) ;
+
+			oLink.style.cssText = GetE('txtAttStyle').value ;
+		}
+		else
+		{
+			SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
+			SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+		}
+	}
+
+	// Select the (first) link.
+	oEditor.FCKSelection.SelectNode( aLinks[0] );
+
+	return true ;
+}
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtUrl').value = url ;
+	OnUrlChange() ;
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
+
+function SetDefaultTarget()
+{
+	var target = FCKConfig.DefaultLinkTarget || '' ;
+
+	if ( oLink || target.length == 0 )
+		return ;
+
+	switch ( target )
+	{
+		case '_blank' :
+		case '_self' :
+		case '_parent' :
+		case '_top' :
+			GetE('cmbTarget').value = target ;
+			break ;
+		default :
+			GetE('cmbTarget').value = 'frame' ;
+			break ;
+	}
+
+	GetE('txtTargetFrame').value = target ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link_org.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link_org.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/fck_link_org.js	(revision 1610)
@@ -0,0 +1,893 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Link dialog window (see fck_link.html).
+ */
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKRegexLib	= oEditor.FCKRegexLib ;
+var FCKTools	= oEditor.FCKTools ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
+
+if ( !FCKConfig.LinkDlgHideTarget )
+	dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
+
+if ( FCKConfig.LinkUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
+
+if ( !FCKConfig.LinkDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
+
+	dialog.SetAutoSize( true ) ;
+}
+
+//#### Regular Expressions library.
+var oRegex = new Object() ;
+
+oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
+
+oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
+
+oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
+
+oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
+
+oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
+
+// Accessible popups
+oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
+
+oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
+
+//#### Parser Functions
+
+var oParser = new Object() ;
+
+// This method simply returns the two inputs in numerical order. You can even
+// provide strings, as the method would parseInt() the values.
+oParser.SortNumerical = function(a, b)
+{
+	return parseInt( a, 10 ) - parseInt( b, 10 ) ;
+}
+
+oParser.ParseEMailParams = function(sParams)
+{
+	// Initialize the oEMailParams object.
+	var oEMailParams = new Object() ;
+	oEMailParams.Subject = '' ;
+	oEMailParams.Body = '' ;
+
+	var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
+
+	aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
+	if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
+
+	return oEMailParams ;
+}
+
+// This method returns either an object containing the email info, or FALSE
+// if the parameter is not an email link.
+oParser.ParseEMailUri = function( sUrl )
+{
+	// Initializes the EMailInfo object.
+	var oEMailInfo = new Object() ;
+	oEMailInfo.Address = '' ;
+	oEMailInfo.Subject = '' ;
+	oEMailInfo.Body = '' ;
+
+	var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
+	if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
+	{
+		// This seems to be an unprotected email link.
+		var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
+		if ( aParts )
+		{
+			// Set the e-mail address.
+			oEMailInfo.Address = aParts[1] ;
+
+			// Look for the optional e-mail parameters.
+			if ( aParts[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+		}
+		return oEMailInfo ;
+	}
+	else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
+	{
+		// This may be a protected email.
+
+		// Try to match the url against the EMailProtectionFunction.
+		var func = FCKConfig.EMailProtectionFunction ;
+		if ( func != null )
+		{
+			try
+			{
+				// Escape special chars.
+				func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
+
+				// Define the possible keys.
+				var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
+
+				// Get the order of the keys (hold them in the array <pos>) and
+				// the function replaced by regular expression patterns.
+				var sFunc = func ;
+				var pos = new Array() ;
+				for ( var i = 0 ; i < keys.length ; i ++ )
+				{
+					var rexp = new RegExp( keys[i] ) ;
+					var p = func.search( rexp ) ;
+					if ( p >= 0 )
+					{
+						sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
+						pos[pos.length] = p + ':' + keys[i] ;
+					}
+				}
+
+				// Sort the available keys.
+				pos.sort( oParser.SortNumerical ) ;
+
+				// Replace the excaped single quotes in the url, such they do
+				// not affect the regexp afterwards.
+				aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
+
+				// Create the regexp and execute it.
+				var rFunc = new RegExp( '^' + sFunc + '$' ) ;
+				var aMatch = rFunc.exec( aLinkInfo[2] ) ;
+				if ( aMatch )
+				{
+					var aInfo = new Array();
+					for ( var i = 1 ; i < aMatch.length ; i ++ )
+					{
+						var k = pos[i-1].match(/^\d+:(.+)$/) ;
+						aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
+					}
+
+					// Fill the EMailInfo object that will be returned
+					oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
+					oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
+					oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
+
+					return oEMailInfo ;
+				}
+			}
+			catch (e)
+			{
+			}
+		}
+
+		// Try to match the email against the encode protection.
+		var aMatch = aLinkInfo[2].match( /^(?:void\()?location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'\)?$/ ) ;
+		if ( aMatch )
+		{
+			// The link is encoded
+			oEMailInfo.Address = eval( aMatch[1] ) ;
+			if ( aMatch[2] )
+			{
+				var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
+				oEMailInfo.Subject = oEMailParams.Subject ;
+				oEMailInfo.Body = oEMailParams.Body ;
+			}
+			return oEMailInfo ;
+		}
+	}
+	return false;
+}
+
+oParser.CreateEMailUri = function( address, subject, body )
+{
+	// Switch for the EMailProtection setting.
+	switch ( FCKConfig.EMailProtection )
+	{
+		case 'function' :
+			var func = FCKConfig.EMailProtectionFunction ;
+			if ( func == null )
+			{
+				if ( FCKConfig.Debug )
+				{
+					alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
+				}
+				return '';
+			}
+
+			// Split the email address into name and domain parts.
+			var aAddressParts = address.split( '@', 2 ) ;
+			if ( aAddressParts[1] == undefined )
+			{
+				aAddressParts[1] = '' ;
+			}
+
+			// Replace the keys by their values (embedded in single quotes).
+			func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
+			func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
+
+			return 'javascript:' + func ;
+
+		case 'encode' :
+			var aParams = [] ;
+			var aAddressCode = [] ;
+
+			if ( subject.length > 0 )
+				aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
+			if ( body.length > 0 )
+				aParams.push( 'body=' + encodeURIComponent( body ) ) ;
+			for ( var i = 0 ; i < address.length ; i++ )
+				aAddressCode.push( address.charCodeAt( i ) ) ;
+
+			return 'javascript:void(location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\')' ;
+	}
+
+	// EMailProtection 'none'
+
+	var sBaseUri = 'mailto:' + address ;
+
+	var sParams = '' ;
+
+	if ( subject.length > 0 )
+		sParams = '?subject=' + encodeURIComponent( subject ) ;
+
+	if ( body.length > 0 )
+	{
+		sParams += ( sParams.length == 0 ? '?' : '&' ) ;
+		sParams += 'body=' + encodeURIComponent( body ) ;
+	}
+
+	return sBaseUri + sParams ;
+}
+
+//#### Initialization Code
+
+// oLink: The actual selected link in the editor.
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
+if ( oLink )
+	FCK.Selection.SelectNode( oLink ) ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Fill the Anchor Names and Ids combos.
+	LoadAnchorNamesAndIds() ;
+
+	// Load the selected link information (if any).
+	LoadSelection() ;
+
+	// Update the dialog box.
+	SetLinkType( GetE('cmbLinkType').value ) ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
+
+	// Show the initial dialog content.
+	GetE('divInfo').style.display = '' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.LinkUpload )
+		GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
+
+	// Set the default target (from configuration).
+	SetDefaultTarget() ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	// Select the first field.
+	switch( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			SelectField( 'txtUrl' ) ;
+			break ;
+		case 'email' :
+			SelectField( 'txtEMailAddress' ) ;
+			break ;
+		case 'anchor' :
+			if ( GetE('divSelAnchor').style.display != 'none' )
+				SelectField( 'cmbAnchorName' ) ;
+			else
+				SelectField( 'cmbLinkType' ) ;
+	}
+}
+
+var bHasAnchors ;
+
+function LoadAnchorNamesAndIds()
+{
+	// Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
+	// to edit them. So, we must look for that images now.
+	var aAnchors = new Array() ;
+	var i ;
+	var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
+	for( i = 0 ; i < oImages.length ; i++ )
+	{
+		if ( oImages[i].getAttribute('_fckanchor') )
+			aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
+	}
+
+	// Add also real anchors
+	var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
+	for( i = 0 ; i < oLinks.length ; i++ )
+	{
+		if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
+			aAnchors[ aAnchors.length ] = oLinks[i] ;
+	}
+
+	var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
+
+	bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
+
+	for ( i = 0 ; i < aAnchors.length ; i++ )
+	{
+		var sName = aAnchors[i].name ;
+		if ( sName && sName.length > 0 )
+			FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
+	}
+
+	for ( i = 0 ; i < aIds.length ; i++ )
+	{
+		FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
+	}
+
+	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
+	ShowE( 'divNoAnchor'	, !bHasAnchors ) ;
+}
+
+function LoadSelection()
+{
+	if ( !oLink ) return ;
+
+	var sType = 'url' ;
+
+	// Get the actual Link href.
+	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+	if ( sHRef == null )
+		sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
+
+	// Look for a popup javascript link.
+	var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
+	if( oPopupMatch )
+	{
+		GetE('cmbTarget').value = 'popup' ;
+		sHRef = oPopupMatch[1] ;
+		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
+		SetTarget( 'popup' ) ;
+	}
+
+	// Accessible popups, the popup data is in the onclick attribute
+	if ( !oPopupMatch )
+	{
+		var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+		if ( onclick )
+		{
+			// Decode the protected string
+			onclick = decodeURIComponent( onclick ) ;
+
+			oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
+			if( oPopupMatch )
+			{
+				GetE( 'cmbTarget' ).value = 'popup' ;
+				FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
+				SetTarget( 'popup' ) ;
+			}
+		}
+	}
+
+	// Search for the protocol.
+	var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
+
+	// Search for a protected email link.
+	var oEMailInfo = oParser.ParseEMailUri( sHRef );
+
+	if ( oEMailInfo )
+	{
+		sType = 'email' ;
+
+		GetE('txtEMailAddress').value = oEMailInfo.Address ;
+		GetE('txtEMailSubject').value = oEMailInfo.Subject ;
+		GetE('txtEMailBody').value    = oEMailInfo.Body ;
+	}
+	else if ( sProtocol )
+	{
+		sProtocol = sProtocol[0].toLowerCase() ;
+		GetE('cmbLinkProtocol').value = sProtocol ;
+
+		// Remove the protocol and get the remaining URL.
+		var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
+		sType = 'url' ;
+		GetE('txtUrl').value = sUrl ;
+	}
+	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
+	{
+		sType = 'anchor' ;
+		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
+	}
+	else					// It is another type of link.
+	{
+		sType = 'url' ;
+
+		GetE('cmbLinkProtocol').value = '' ;
+		GetE('txtUrl').value = sHRef ;
+	}
+
+	if ( !oPopupMatch )
+	{
+		// Get the target.
+		var sTarget = oLink.target ;
+
+		if ( sTarget && sTarget.length > 0 )
+		{
+			if ( oRegex.ReserveTarget.test( sTarget ) )
+			{
+				sTarget = sTarget.toLowerCase() ;
+				GetE('cmbTarget').value = sTarget ;
+			}
+			else
+				GetE('cmbTarget').value = 'frame' ;
+			GetE('txtTargetFrame').value = sTarget ;
+		}
+	}
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oLink.id ;
+	GetE('txtAttName').value		= oLink.name ;
+	GetE('cmbAttLangDir').value		= oLink.dir ;
+	GetE('txtAttLangCode').value	= oLink.lang ;
+	GetE('txtAttAccessKey').value	= oLink.accessKey ;
+	GetE('txtAttTabIndex').value	= oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
+	GetE('txtAttTitle').value		= oLink.title ;
+	GetE('txtAttContentType').value	= oLink.type ;
+	GetE('txtAttCharSet').value		= oLink.charset ;
+
+	var sClass ;
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		sClass	= oLink.getAttribute('className',2) || '' ;
+		// Clean up temporary classes for internal use:
+		sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
+
+		GetE('txtAttStyle').value	= oLink.style.cssText ;
+	}
+	else
+	{
+		sClass	= oLink.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value	= oLink.getAttribute('style',2) || '' ;
+	}
+	GetE('txtAttClasses').value	= sClass ;
+
+	// Update the Link type combo.
+	GetE('cmbLinkType').value = sType ;
+}
+
+//#### Link type selection.
+function SetLinkType( linkType )
+{
+	ShowE('divLinkTypeUrl'		, (linkType == 'url') ) ;
+	ShowE('divLinkTypeAnchor'	, (linkType == 'anchor') ) ;
+	ShowE('divLinkTypeEMail'	, (linkType == 'email') ) ;
+
+	if ( !FCKConfig.LinkDlgHideTarget )
+		dialog.SetTabVisibility( 'Target'	, (linkType == 'url') ) ;
+
+	if ( FCKConfig.LinkUpload )
+		dialog.SetTabVisibility( 'Upload'	, (linkType == 'url') ) ;
+
+	if ( !FCKConfig.LinkDlgHideAdvanced )
+		dialog.SetTabVisibility( 'Advanced'	, (linkType != 'anchor' || bHasAnchors) ) ;
+
+	if ( linkType == 'email' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Target type selection.
+function SetTarget( targetType )
+{
+	GetE('tdTargetFrame').style.display	= ( targetType == 'popup' ? 'none' : '' ) ;
+	GetE('tdPopupName').style.display	=
+	GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
+
+	switch ( targetType )
+	{
+		case "_blank" :
+		case "_self" :
+		case "_parent" :
+		case "_top" :
+			GetE('txtTargetFrame').value = targetType ;
+			break ;
+		case "" :
+			GetE('txtTargetFrame').value = '' ;
+			break ;
+	}
+
+	if ( targetType == 'popup' )
+		dialog.SetAutoSize( true ) ;
+}
+
+//#### Called while the user types the URL.
+function OnUrlChange()
+{
+	var sUrl = GetE('txtUrl').value ;
+	var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
+
+	if ( sProtocol )
+	{
+		sUrl = sUrl.substr( sProtocol[0].length ) ;
+		GetE('txtUrl').value = sUrl ;
+		GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
+	}
+	else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
+	{
+		GetE('cmbLinkProtocol').value = '' ;
+	}
+}
+
+//#### Called while the user types the target name.
+function OnTargetNameChange()
+{
+	var sFrame = GetE('txtTargetFrame').value ;
+
+	if ( sFrame.length == 0 )
+		GetE('cmbTarget').value = '' ;
+	else if ( oRegex.ReserveTarget.test( sFrame ) )
+		GetE('cmbTarget').value = sFrame.toLowerCase() ;
+	else
+		GetE('cmbTarget').value = 'frame' ;
+}
+
+// Accessible popups
+function BuildOnClickPopup()
+{
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
+
+	var sFeatures = '' ;
+	var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( i > 0 ) sFeatures += ',' ;
+		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
+	}
+
+	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
+	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
+	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
+	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
+
+	if ( sFeatures != '' )
+		sFeatures = sFeatures + ",status" ;
+
+	return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
+}
+
+//#### Fills all Popup related fields.
+function FillPopupFields( windowName, features )
+{
+	if ( windowName )
+		GetE('txtPopupName').value = windowName ;
+
+	var oFeatures = new Object() ;
+	var oFeaturesMatch ;
+	while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
+	{
+		var sValue = oFeaturesMatch[2] ;
+		if ( sValue == ( 'yes' || '1' ) )
+			oFeatures[ oFeaturesMatch[1] ] = true ;
+		else if ( ! isNaN( sValue ) && sValue != 0 )
+			oFeatures[ oFeaturesMatch[1] ] = sValue ;
+	}
+
+	// Update all features check boxes.
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( oFeatures[ aChkFeatures[i].value ] )
+			aChkFeatures[i].checked = true ;
+	}
+
+	// Update position and size text boxes.
+	if ( oFeatures['width'] )	GetE('txtPopupWidth').value		= oFeatures['width'] ;
+	if ( oFeatures['height'] )	GetE('txtPopupHeight').value	= oFeatures['height'] ;
+	if ( oFeatures['left'] )	GetE('txtPopupLeft').value		= oFeatures['left'] ;
+	if ( oFeatures['top'] )		GetE('txtPopupTop').value		= oFeatures['top'] ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	var sUri, sInnerHtml ;
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	switch ( GetE('cmbLinkType').value )
+	{
+		case 'url' :
+			sUri = GetE('txtUrl').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoUrl ) ;
+				return false ;
+			}
+
+			sUri = GetE('cmbLinkProtocol').value + sUri ;
+
+			break ;
+
+		case 'email' :
+			sUri = GetE('txtEMailAddress').value ;
+
+			if ( sUri.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoEMail ) ;
+				return false ;
+			}
+
+			sUri = oParser.CreateEMailUri(
+				sUri,
+				GetE('txtEMailSubject').value,
+				GetE('txtEMailBody').value ) ;
+			break ;
+
+		case 'anchor' :
+			var sAnchor = GetE('cmbAnchorName').value ;
+			if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
+
+			if ( sAnchor.length == 0 )
+			{
+				alert( FCKLang.DlnLnkMsgNoAnchor ) ;
+				return false ;
+			}
+
+			sUri = '#' + sAnchor ;
+			break ;
+	}
+
+	// If no link is selected, create a new one (it may result in more than one link creation - #220).
+	var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
+
+	// If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
+	var aHasSelection = ( aLinks.length > 0 ) ;
+	if ( !aHasSelection )
+	{
+		sInnerHtml = sUri;
+
+		// Built a better text for empty links.
+		switch ( GetE('cmbLinkType').value )
+		{
+			// anchor: use old behavior --> return true
+			case 'anchor':
+				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
+				break ;
+
+			// url: try to get path
+			case 'url':
+				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
+				var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
+				if (asLinkPath != null)
+					sInnerHtml = asLinkPath[1];  // use matched path
+				break ;
+
+			// mailto: try to get email address
+			case 'email':
+				sInnerHtml = GetE('txtEMailAddress').value ;
+				break ;
+		}
+
+		// Create a new (empty) anchor.
+		aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
+	}
+
+	for ( var i = 0 ; i < aLinks.length ; i++ )
+	{
+		oLink = aLinks[i] ;
+
+		if ( aHasSelection )
+			sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like an URL).
+
+		oLink.href = sUri ;
+		SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+		var onclick;
+		// Accessible popups
+		if( GetE('cmbTarget').value == 'popup' )
+		{
+			onclick = BuildOnClickPopup() ;
+			// Encode the attribute
+			onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" )  ;
+			SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
+		}
+		else
+		{
+			// Check if the previous onclick was for a popup:
+			// In that case remove the onclick handler.
+			onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
+			if ( onclick )
+			{
+				// Decode the protected string
+				onclick = decodeURIComponent( onclick ) ;
+
+				if( oRegex.OnClickPopup.test( onclick ) )
+					SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
+			}
+		}
+
+		oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
+
+		// Target
+		if( GetE('cmbTarget').value != 'popup' )
+			SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
+		else
+			SetAttribute( oLink, 'target', null ) ;
+
+		// Let's set the "id" only for the first link to avoid duplication.
+		if ( i == 0 )
+			SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
+
+		// Advances Attributes
+		SetAttribute( oLink, 'name'		, GetE('txtAttName').value ) ;
+		SetAttribute( oLink, 'dir'		, GetE('cmbAttLangDir').value ) ;
+		SetAttribute( oLink, 'lang'		, GetE('txtAttLangCode').value ) ;
+		SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
+		SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
+		SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
+		SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
+		SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sClass = GetE('txtAttClasses').value ;
+			// If it's also an anchor add an internal class
+			if ( GetE('txtAttName').value.length != 0 )
+				sClass += ' FCK__AnchorC' ;
+			SetAttribute( oLink, 'className', sClass ) ;
+
+			oLink.style.cssText = GetE('txtAttStyle').value ;
+		}
+		else
+		{
+			SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
+			SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+		}
+	}
+
+	// Select the (first) link.
+	oEditor.FCKSelection.SelectNode( aLinks[0] );
+
+	return true ;
+}
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtUrl').value = url ;
+	OnUrlChange() ;
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
+
+function SetDefaultTarget()
+{
+	var target = FCKConfig.DefaultLinkTarget || '' ;
+
+	if ( oLink || target.length == 0 )
+		return ;
+
+	switch ( target )
+	{
+		case '_blank' :
+		case '_self' :
+		case '_parent' :
+		case '_top' :
+			GetE('cmbTarget').value = target ;
+			break ;
+		default :
+			GetE('cmbTarget').value = 'frame' ;
+			break ;
+	}
+
+	GetE('txtTargetFrame').value = target ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link.html	(revision 1610)
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Link dialog window.
+-->
+<html>
+	<head>
+		<title>Link Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_link/fck_link.js" type="text/javascript"></script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo" style="DISPLAY: none">
+			<span fckLang="DlgLnkType">Link Type</span><br />
+			<select id="cmbLinkType" onchange="SetLinkType(this.value);">
+				<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
+				<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
+				<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
+			</select>
+			<br />
+			<br />
+			<div id="divLinkTypeUrl">
+				<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
+					<tr>
+						<td nowrap="nowrap">
+							<span fckLang="DlgLnkProto">Protocol</span><br />
+							<select id="cmbLinkProtocol">
+								<option value="http://" selected="selected">http://</option>
+								<option value="https://">https://</option>
+								<option value="ftp://">ftp://</option>
+								<option value="news://">news://</option>
+								<option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
+							</select>
+						</td>
+						<td nowrap="nowrap">&nbsp;</td>
+						<td nowrap="nowrap" width="100%">
+							<span fckLang="DlgLnkURL">URL</span><br />
+							<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
+						</td>
+					</tr>
+				</table>
+				<br />
+				<div id="divBrowseServer">
+				<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
+				</div>
+			</div>
+			<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
+				<div id="divSelAnchor" style="DISPLAY: none">
+					<table cellspacing="0" cellpadding="0" border="0" width="70%">
+						<tr>
+							<td colspan="3">
+								<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
+							</td>
+						</tr>
+						<tr>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
+								<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;</td>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
+								<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divNoAnchor" style="DISPLAY: none">
+					<span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
+				</div>
+			</div>
+			<div id="divLinkTypeEMail" style="DISPLAY: none">
+				<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
+				<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
+				<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailBody">Message Body</span><br />
+				<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
+			</div>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divTarget" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span fckLang="DlgLnkTarget">Target</span><br />
+						<select id="cmbTarget" onchange="SetTarget(this.value);">
+							<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
+							<option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
+							<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</td>
+					<td>&nbsp;</td>
+					<td id="tdTargetFrame" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
+						<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
+							onchange="OnTargetNameChange();" />
+					</td>
+					<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
+						<input id="txtPopupName" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<br />
+			<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
+				border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
+						<table cellspacing="0" cellpadding="0" border="0">
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
+									<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
+										Bar</label><br />
+									<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
+										Bar</label><br />
+									<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
+										Bars</label>
+								</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
+										Bar</label><br />
+									<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
+									<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
+										Screen (IE)</label><br />
+									<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
+										(Netscape)</label>
+								</td>
+							</tr>
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%"></td>
+							</tr>
+							<tr>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
+											<td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
+											<td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
+											<td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
+											<td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divAttribs" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenId">Id</span><br />
+						<input id="txtAttId" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangDir">Language Direction</span><br />
+									<select id="cmbAttLangDir" style="WIDTH: 100%">
+										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+									</select>
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
+									<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenName">Name</span><br />
+						<input id="txtAttName" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangCode">Language Code</span><br />
+									<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap">
+									<span fckLang="DlgGenTabIndex">Tab Index</span><br />
+									<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">&nbsp;</td>
+					<td width="1"></td>
+					<td valign="top"></td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap">
+						<span fckLang="DlgGenContRel">Advisory Relation</span><br />
+						<select id="cmbAttContentRel"  style="width: 100%">
+							<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+							<option value="cslide" fckLang="cSlide">cslide</option>
+	                        <option value="gal" fckLang="gal">nyroModal</option>
+							<option value="csingle" fckLang="cSingle">csingle</option>
+	                        <option value="group1" fckLang="group1">Group1</option>
+							<option value="fancybox" fckLang="Fancybox">Fancybox</option>
+							<option value="colorbox" fckLang="Colorbox">Colorbox</option>
+							<option value="prettyPhoto" fckLang="PrettyPhoto">PrettyPhoto</option>
+							<option value="alternate" fckLang="Alternate">Alternate</option>
+							<option value="copyright" fckLang="copyright">Copyright</option>
+							<option value="designates" fckLang="designates">Designates</option>
+							<option value="nofollow" fckLang="nofollow">Nofollow</option>
+							<option value="lightbox" fckLang="Lightbox">Lightbox</option>
+							<option value="stylesheet" fckLang="stylesheet">Stylesheet</option>
+							<option value="thumbnail" fckLang="Thumbnail">Thumbnail</option>
+						</select>
+					</td>
+					<td width="1">&nbsp;&nbsp;&nbsp;</td>
+					<td valign="top">
+						<span fckLang="DlgGenContType">Advisory Content Type</span><br />
+						<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+				<tr>
+					<td valign="top">
+						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
+					</td>
+					<td>&nbsp;</td>
+					<td valign="top">
+						<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
+						<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgGenStyle">Style</span><br />
+						<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="100%">
+						<span fckLang="DlgGenTitle">Advisory Title</span><br />
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+		</div>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image.js	(revision 1610)
@@ -0,0 +1,584 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Image dialog window (see fck_image.html).
+ */
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKDebug	= oEditor.FCKDebug ;
+var FCKTools	= oEditor.FCKTools ;
+
+var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
+
+if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
+	dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
+
+if ( FCKConfig.ImageUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.ImageDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divLink'		, ( tabCode == 'Link' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected image (if available).
+var oImage = dialog.Selection.GetSelectedElement() ;
+
+if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
+	oImage = null ;
+
+// Get the active link.
+var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
+
+var oImageOriginal ;
+
+function UpdateOriginal( resetSize )
+{
+	if ( !eImgPreview )
+		return ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		oImageOriginal = null ;
+		return ;
+	}
+
+	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;
+
+	if ( resetSize )
+	{
+		oImageOriginal.onload = function()
+		{
+			this.onload = null ;
+			ResetSizes() ;
+		}
+	}
+
+	oImageOriginal.src = eImgPreview.src ;
+}
+
+var bPreviewInitialized ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
+	GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display				= FCKConfig.ImageBrowser	? '' : 'none' ;
+	GetE('divLnkBrowseServer').style.display	= FCKConfig.LinkBrowser		? '' : 'none' ;
+
+	UpdateOriginal() ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.ImageUpload )
+		GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oImage ) return ;
+
+	var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
+	if ( sUrl == null )
+		sUrl = GetAttribute( oImage, 'src', '' ) ;
+
+	GetE('txtUrl').value    = sUrl ;
+	GetE('txtAlt').value    = GetAttribute( oImage, 'alt', '' ) ;
+	GetE('txtVSpace').value	= GetAttribute( oImage, 'vspace', '' ) ;
+	GetE('txtHSpace').value	= GetAttribute( oImage, 'hspace', '' ) ;
+	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;
+	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;
+
+	var iWidth, iHeight ;
+
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+
+	if ( oImage.style.width )
+	{
+		var aMatchW  = oImage.style.width.match( regexSize ) ;
+		if ( aMatchW )
+		{
+			iWidth = aMatchW[1] ;
+			oImage.style.width = '' ;
+			SetAttribute( oImage, 'width' , iWidth ) ;
+		}
+	}
+
+	if ( oImage.style.height )
+	{
+		var aMatchH  = oImage.style.height.match( regexSize ) ;
+		if ( aMatchH )
+		{
+			iHeight = aMatchH[1] ;
+			oImage.style.height = '' ;
+			SetAttribute( oImage, 'height', iHeight ) ;
+		}
+	}
+
+	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
+	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value			= oImage.id ;
+	GetE('cmbAttLangDir').value		= oImage.dir ;
+	GetE('txtAttLangCode').value	= oImage.lang ;
+	GetE('txtAttTitle').value		= oImage.title ;
+	GetE('txtLongDesc').value		= oImage.longDesc ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value = oImage.className || '' ;
+		GetE('txtAttStyle').value = oImage.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
+	}
+
+	if ( oLink )
+	{
+		var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;
+		if ( sLinkUrl == null )
+			sLinkUrl = oLink.getAttribute('href',2) ;
+
+		var sLinkRel = GetE('cmbLnkContentRel');
+
+		if ( sLinkRel.lenght == null ) 
+		{
+			var myselect = document.getElementById("cmbLnkContentRel")
+			var found = false;
+
+			for (var i=0; i < myselect.options.length; i++)
+			{
+				if (myselect.options[i].value == oLink.rel)
+				{
+				  found = true;
+				  break;
+				} 
+			}			
+
+			if ( found == false ) 
+			{
+				try {
+					myselect.add(new Option(oLink.rel, oLink.rel,true ), myselect.options[1]) //add new option to beginning of "cmbLnkContentRel"
+					}
+				catch(e) { //in IE, try the below version instead of add()
+					myselect.add(new Option( oLink.rel, oLink.rel,true ),1 ) //add new option to beginning of "cmbLnkContentRel"
+					//myselect.options[1].selected=true;
+					}
+			}
+		} 
+		GetE('txtLnkUrl').value		= sLinkUrl ;
+		GetE('cmbLnkTarget').value	= oLink.target ;
+		// Get Advances Attributes
+		GetE('txtLnkTitle').value		= oLink.title ;
+		GetE('cmbLnkContentRel').value	= oLink.rel ;
+		GetE('txtLnkCharSet').value		= oLink.charset ;
+		GetE('txtLnkId').value			= oLink.id ;
+		GetE('txtLnkLangCode').value	= oLink.lang ;
+
+		var sClass ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			sClass	= oLink.getAttribute('className',2) || '' ;
+			// Clean up temporary classes for internal use:
+			sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
+			GetE('txtLnkStyle').value	= oLink.style.cssText ;
+		}
+		else
+		{
+			sClass	= oLink.getAttribute('class',2) || '' ;
+			GetE('txtLnkStyle').value	= oLink.getAttribute('style',2) || '' ;
+		}
+		GetE('txtLnkClasses').value	= sClass ;
+	}
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( FCKLang.DlgImgAlertUrl ) ;
+
+		return false ;
+	}
+
+	var bHasImage = ( oImage != null ) ;
+
+	if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
+	{
+		if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
+			oImage = null ;
+	}
+	else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
+	{
+		if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
+			oImage = null ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+	if ( !bHasImage )
+	{
+		if ( bImageButton )
+		{
+			oImage = FCK.EditorDocument.createElement( 'input' ) ;
+			oImage.type = 'image' ;
+			oImage = FCK.InsertElement( oImage ) ;
+		}
+		else
+			oImage = FCK.InsertElement( 'img' ) ;
+	}
+
+	UpdateImage( oImage ) ;
+
+	var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
+	if ( sLnkUrl.length == 0 )
+	{
+		if ( oLink )
+			FCK.ExecuteNamedCommand( 'Unlink' ) ;
+	}
+	else
+	{
+		if ( oLink )	// Modifying an existent link.
+		{
+			oLink.href = sLnkUrl ;
+		}
+		else			// Creating a new link.
+		{
+			if ( !bHasImage )
+				oEditor.FCKSelection.SelectNode( oImage ) ;
+
+			oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
+
+			if ( !bHasImage )
+			{
+				oEditor.FCKSelection.SelectNode( oLink ) ;
+				oEditor.FCKSelection.Collapse( false ) ;
+			}
+		}
+
+		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
+		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
+		// Advances Attributes
+		SetAttribute( oLink, 'title'	, GetE('txtLnkTitle').value ) ;
+		SetAttribute( oLink, 'rel'		, GetE('cmbLnkContentRel').value ) ;
+		SetAttribute( oLink, 'lang'		, GetE('txtLnkLangCode').value ) ;
+		SetAttribute( oLink, 'charset'	, GetE('txtLnkCharSet').value ) ;
+/*
+		alert( FCKLang.DlgImgAlertUrl ) ;
+		SetAttribute( oLink, 'name'		, GetE('txtLnktName').value ) ;
+*/
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sClass = GetE('txtLnkClasses').value ;
+			// If it's also an anchor add an internal class
+			if ( GetE('txtLnkName').value.length != 0 )
+				sClass += ' FCK__AnchorC' ;
+			SetAttribute( oLink, 'className', sClass ) ;
+			oLink.style.cssText = GetE('txtLnkStyle').value ;
+		}
+		else
+		{
+			SetAttribute( oLink, 'class', GetE('txtLnkClasses').value ) ;
+			SetAttribute( oLink, 'style', GetE('txtLnkStyle').value ) ;
+		}
+
+	}
+
+	return true ;
+}
+
+function UpdateImage( e, skipId )
+{
+	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
+	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+	SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
+	SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
+	SetAttribute( e, "border", GetE('txtBorder').value ) ;
+	SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
+
+	// Advances Attributes
+
+	if ( ! skipId )
+		SetAttribute( e, 'id', GetE('txtAttId').value ) ;
+
+	SetAttribute( e, 'dir'		, GetE('cmbAttLangDir').value ) ;
+	SetAttribute( e, 'lang'		, GetE('txtAttLangCode').value ) ;
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+	SetAttribute( e, 'longDesc'	, GetE('txtLongDesc').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		e.className = GetE('txtAttClasses').value ;
+		e.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
+}
+
+var eImgPreview ;
+var eImgPreviewLink ;
+
+function SetPreviewElements( imageElement, linkElement )
+{
+	eImgPreview = imageElement ;
+	eImgPreviewLink = linkElement ;
+
+	UpdatePreview() ;
+	UpdateOriginal() ;
+
+	bPreviewInitialized = true ;
+}
+
+function UpdatePreview()
+{
+	if ( !eImgPreview || !eImgPreviewLink )
+		return ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		eImgPreviewLink.style.display = 'none' ;
+	else
+	{
+		UpdateImage( eImgPreview, true ) ;
+
+		if ( GetE('txtLnkUrl').value.Trim().length > 0 )
+			eImgPreviewLink.href = 'javascript:void(null);' ;
+		else
+			SetAttribute( eImgPreviewLink, 'href', '' ) ;
+
+		eImgPreviewLink.style.display = '' ;
+	}
+}
+
+var bLockRatio = true ;
+
+function SwitchLock( lockButton )
+{
+	bLockRatio = !bLockRatio ;
+	lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
+	lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
+
+	if ( bLockRatio )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
+		else
+			OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
+	}
+}
+
+// Fired when the width or height input texts change
+function OnSizeChanged( dimension, value )
+{
+	// Verifies if the aspect ration has to be maintained
+	if ( oImageOriginal && bLockRatio )
+	{
+		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
+
+		if ( value.length == 0 || isNaN( value ) )
+		{
+			e.value = '' ;
+			return ;
+		}
+
+		if ( dimension == 'Width' )
+			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
+		else
+			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
+
+		if ( !isNaN( value ) )
+			e.value = value ;
+	}
+
+	UpdatePreview() ;
+}
+
+// Fired when the Reset Size button is clicked
+function ResetSizes()
+{
+	if ( ! oImageOriginal ) return ;
+	if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
+	{
+		setTimeout( ResetSizes, 50 ) ;
+		return ;
+	}
+
+	GetE('txtWidth').value  = oImageOriginal.width ;
+	GetE('txtHeight').value = oImageOriginal.height ;
+
+	UpdatePreview() ;
+}
+
+function BrowseServer()
+{
+	OpenServerBrowser(
+		'Image',
+		FCKConfig.ImageBrowserURL,
+		FCKConfig.ImageBrowserWindowWidth,
+		FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function LnkBrowseServer()
+{
+	OpenServerBrowser(
+		'Link',
+		FCKConfig.LinkBrowserURL,
+		FCKConfig.LinkBrowserWindowWidth,
+		FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function OpenServerBrowser( type, url, width, height )
+{
+	sActualBrowser = type ;
+	OpenFileBrowser( url, width, height ) ;
+}
+
+var sActualBrowser ;
+
+function SetUrl( url, width, height, alt )
+{
+	if ( sActualBrowser == 'Link' )
+	{
+		GetE('txtLnkUrl').value = url ;
+		UpdatePreview() ;
+	}
+	else
+	{
+		GetE('txtUrl').value = url ;
+		GetE('txtWidth').value = width ? width : '' ;
+		GetE('txtHeight').value = height ? height : '' ;
+
+		if ( alt )
+			GetE('txtAlt').value = alt;
+
+		UpdatePreview() ;
+		UpdateOriginal( true ) ;
+	}
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	sActualBrowser = '' ;
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image_preview.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image_preview.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/fck_image_preview.html	(revision 1610)
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Preview page for the Image dialog window.
+ *
+ * Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="../common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
+// Set the preview CSS
+document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) ) ;
+document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElements(
+		document.getElementById( 'imgPreview' ),
+		document.getElementById( 'lnkPreview' ) ) ;
+}
+
+	</script>
+</head>
+<body>
+	<div>
+		<a id="lnkPreview" onclick="return false;" style="cursor: default">
+			<img id="imgPreview" onload="window.parent.UpdateOriginal();"
+				style="display: none" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing
+		elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus
+		a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis,
+		nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed
+		velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper
+		nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices
+		a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus
+		faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget
+		tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit,
+		tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis
+		id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus,
+		eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur
+		ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.
+	</div>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_image.html	(revision 1610)
@@ -0,0 +1,341 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Image Properties dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Image Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script src="fck_image/fck_image.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<div id="divInfo">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
+			<tr>
+				<td>
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<span fcklang="DlgImgURL">URL</span>
+							</td>
+							<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
+								&nbsp;
+								<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
+									fcklang="DlgBtnBrowseServer" />
+							</td>
+						</tr>
+						<tr>
+							<td valign="top">
+								<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgImgAlt">Short Description</span><br />
+					<input id="txtAlt" style="width: 100%" type="text" /><br />
+				</td>
+			</tr>
+			<tr height="100%">
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+						<tr>
+							<td valign="top">
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
+										<td rowspan="2">
+											<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
+												onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
+												onclick="SwitchLock(this);">
+											</div>
+										</td>
+										<td rowspan="2">
+											<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
+												onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
+									</tr>
+								</table>
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
+										<td>
+											<select id="cmbAlign" onchange="UpdatePreview();">
+												<option value="" selected="selected"></option>
+												<option fcklang="DlgImgAlignLeft" value="left">Left</option>
+												<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
+												<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
+												<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
+												<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
+												<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
+												<option fcklang="DlgImgAlignRight" value="right">Right</option>
+												<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
+												<option fcklang="DlgImgAlignTop" value="top">Top</option>
+											</select>
+										</td>
+									</tr>
+								</table>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%" valign="top">
+								<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
+									<tr>
+										<td>
+											<span fcklang="DlgImgPreview">Preview</span></td>
+									</tr>
+									<tr>
+										<td valign="top">
+											<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
+												marginheight="0" marginwidth="0"></iframe>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divUpload" style="display: none">
+		<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
+			action="" onsubmit="return CheckUpload();">
+			<span fcklang="DlgLnkUpload">Upload</span><br />
+			<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+			<br />
+			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
+			<script type="text/javascript">
+				document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+			</script>
+		</form>
+	</div>
+	<div id="divLink" style="display: none">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%">
+			<tr>
+				<td style="width: 100%" colspan="2">
+					<div valign="middle">
+						<span fcklang="DlgLnkURL">URL</span><br />
+						<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+					</div>
+				</td>
+				<td>
+					<div id="divLnkBrowseServer" align="right">
+						<span>&nbsp;</span><br />
+						<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<div>
+						<span fcklang="DlgLnkTarget">Target</span><br />
+						<select id="cmbLnkTarget">
+							<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td nowrap="nowrap">
+					<span fckLang="DlgGenContRel">Advisory Relation</span><br />
+					<select id="cmbLnkContentRel"  style="width: 100%">
+						<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+						<option value="cslide" fckLang="cSlide">cslide</option>
+                        <option value="gal" fckLang="gal">nyroModal</option>
+						<option value="csingle" fckLang="cSingle">csingle</option>
+                        <option value="group1" fckLang="group1">Group1</option>
+						<option value="fancybox" fckLang="Fancybox">Fancybox</option>
+						<option value="colorbox" fckLang="Colorbox">Colorbox</option>
+						<option value="prettyPhoto" fckLang="PrettyPhoto">PrettyPhoto</option>
+						<option value="alternate" fckLang="Alternate">Alternate</option>
+						<option value="copyright" fckLang="copyright">Copyright</option>
+						<option value="designates" fckLang="designates">Designates</option>
+						<option value="nofollow" fckLang="nofollow">Nofollow</option>
+						<option value="lightbox" fckLang="Lightbox">Lightbox</option>
+						<option value="stylesheet" fckLang="stylesheet">Stylesheet</option>
+						<option value="thumbnail" fckLang="Thumbnail">Thumbnail</option>
+					</select>
+				</td>
+				<td>
+					<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
+					<input id="txtLnkCharSet" style="WIDTH: 100%" type="text" />
+				</td>
+				<td width="60%">
+					<span fckLang="DlgGenLangCode">Language Code</span><br />
+					<input id="txtLnkLangCode" style="WIDTH: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td valign="top" width="50%">
+					<span fcklang="DlgGenId">Id</span><br />
+					<input id="txtLnkId" style="width: 100%" type="text" />
+				</td>
+					<td valign="top" colspan="2">
+						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
+						<input id="txtLnkClasses" style="WIDTH: 100%" type="text" />
+					</td>
+					<td>&nbsp;</td>
+			</tr>
+			<tr>
+					<td colspan="3">
+						<span fckLang="DlgGenStyle">Style</span><br />
+						<input id="txtLnkStyle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+				<tr>
+					<td colspan="3">
+						<span fckLang="DlgGenTitle">Advisory Title</span><br />
+						<input id="txtLnkTitle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+
+		</table>
+	</div>
+
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+			<tr>
+				<td valign="top" width="50%">
+					<span fcklang="DlgGenId">Id</span><br />
+					<input id="txtAttId" style="width: 100%" type="text" />
+				</td>
+				<td width="1">
+					&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+						<tr>
+							<td width="60%">
+								<span fcklang="DlgGenLangDir">Language Direction</span><br />
+								<select id="cmbAttLangDir" style="width: 100%">
+									<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+									<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td width="1%">
+								&nbsp;&nbsp;</td>
+							<td nowrap="nowrap">
+								<span fcklang="DlgGenLangCode">Language Code</span><br />
+								<input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
+					<input id="txtLongDesc" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td valign="top">
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtAttClasses" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenStyle">Style</span><br />
+					<input id="txtAttStyle" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input id="txtAttTitle" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html	(revision 1610)
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Preview page for the Flash dialog window.
+-->
+<html>
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script src="../common/fck_dialog_common.js" type="text/javascript"></script>
+		<script language="javascript">
+
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
+// Sets the Skin CSS
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElement( document.body ) ;
+}
+
+		</script>
+	</head>
+	<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/fck_flash.js	(revision 1610)
@@ -0,0 +1,300 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Flash dialog window (see fck_flash.html).
+ */
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+
+if ( FCKConfig.FlashUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.FlashDlgHideAdvanced )
+	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+}
+
+// Get the selected flash embed (if available).
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+var oEmbed ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
+		oEmbed = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.FlashUpload )
+		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	if ( ! oEmbed ) return ;
+
+	GetE('txtUrl').value    = GetAttribute( oEmbed, 'src', '' ) ;
+	GetE('txtWidth').value  = GetAttribute( oEmbed, 'width', '' ) ;
+	GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value		= oEmbed.id ;
+	GetE('chkAutoPlay').checked	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
+	GetE('chkLoop').checked		= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
+	GetE('chkMenu').checked		= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
+	GetE('cmbScale').value		= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
+
+	GetE('txtAttTitle').value		= oEmbed.title ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
+		GetE('txtAttStyle').value = oEmbed.style.cssText ;
+	}
+	else
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( oEditor.FCKLang.DlgAlertUrl ) ;
+
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+	if ( !oEmbed )
+	{
+		oEmbed		= FCK.EditorDocument.createElement( 'EMBED' ) ;
+		oFakeImage  = null ;
+	}
+	UpdateEmbed( oEmbed ) ;
+
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
+		oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
+		oFakeImage	= FCK.InsertElement( oFakeImage ) ;
+	}
+
+	oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ;
+
+	return true ;
+}
+
+function UpdateEmbed( e )
+{
+	SetAttribute( e, 'type'			, 'application/x-shockwave-flash' ) ;
+	SetAttribute( e, 'pluginspage'	, 'http://www.macromedia.com/go/getflashplayer' ) ;
+
+	SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
+	SetAttribute( e, "height", GetE('txtHeight').value ) ;
+
+	// Advances Attributes
+
+	SetAttribute( e, 'id'	, GetE('txtAttId').value ) ;
+	SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
+
+	SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
+
+	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
+		e.style.cssText = GetE('txtAttStyle').value ;
+	}
+	else
+	{
+		SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
+		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
+}
+
+var ePreview ;
+
+function SetPreviewElement( previewEl )
+{
+	ePreview = previewEl ;
+
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		ePreview.innerHTML = '&nbsp;' ;
+	else
+	{
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
+
+		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
+		SetAttribute( e, 'width', '100%' ) ;
+		SetAttribute( e, 'height', '100%' ) ;
+
+		ePreview.appendChild( e ) ;
+	}
+}
+
+// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
+}
+
+function SetUrl( url, width, height )
+{
+	GetE('txtUrl').value = url ;
+
+	if ( width )
+		GetE('txtWidth').value = width ;
+
+	if ( height )
+		GetE('txtHeight').value = height ;
+
+	UpdatePreview() ;
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_form.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_form.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_form.html	(revision 1610)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Form dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtAction').value	= oActiveEl.getAttribute( 'action', 2 ) ;
+		GetE('txtMethod').value	= oActiveEl.method ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	if ( !oActiveEl )
+	{
+		oActiveEl = oEditor.FCK.InsertElement( 'form' ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+			oEditor.FCKTools.AppendBogusBr( oActiveEl ) ;
+	}
+
+	oActiveEl.name = GetE('txtName').value ;
+	SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ;
+	oActiveEl.method = GetE('txtMethod').value ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" width="80%" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgFormName">Name</span><br />
+							<input style="width: 100%" type="text" id="txtName" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormAction">Action</span><br />
+							<input style="width: 100%" type="text" id="txtAction" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgFormMethod">Method</span><br />
+							<select id="txtMethod">
+								<option value="get" selected="selected">GET</option>
+								<option value="post">POST</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/wb-logo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/wb-logo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/logo_fredck.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/logo_fredck.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_about.html	(revision 1610)
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * "About" dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang	= oEditor.FCKLang ;
+
+window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
+window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
+window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divAbout', ( tabCode == 'About' ) ) ;
+	ShowE('divLicense', ( tabCode == 'License' ) ) ;
+	ShowE('divInfo'	, ( tabCode == 'BrowserInfo' ) ) ;
+}
+
+function SendEMail()
+{
+	var eMail = 'mailto:' ;
+	eMail += 'fredck' ;
+	eMail += '@' ;
+	eMail += 'fckeditor' ;
+	eMail += '.' ;
+	eMail += 'net' ;
+
+	window.location = eMail ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<div id="divAbout">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
+			<tr>
+				<td colspan="2">
+					<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" />
+					<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
+						<tr>
+							<td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
+								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
+								<span fcklang="DlgAboutVersion">version</span>
+								<br />
+								<b>2.6.6</b><br />
+								Build 25427</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr style="height: 100%">
+				<td align="center" valign="middle">
+					<span style="font-size: 14px" dir="ltr">
+						<b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
+							Support <b>Open Source</b> Software</a></b> </span>
+					<div style="padding-top:15px">
+						<img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
+					</div>
+				</td>
+				<td align="center" nowrap="nowrap" valign="middle">
+					<div>
+						<div style="margin-bottom:5px" dir="ltr">Selected Sponsor</div>
+						<a href="http://www.spellchecker.net/fckeditor/" target="_blank"><img alt="Selected Sponsor" border="0" src="fck_about/sponsors/spellchecker_net.gif" width="75" height="75" /></a>
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td width="100%" nowrap="nowrap">
+					<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
+						target="_blank">http://www.fckeditor.net/</a>.
+					<br />
+					Copyright &copy; 2003-2010 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
+				</td>
+				<td align="center">
+					<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
+				</td>
+			</tr>
+            <tr>
+                <td>&nbsp;</td>
+                <td>&nbsp;</td>
+            </tr>
+            <tr>
+                <td align="center" valign="middle">
+					<span fcklang="DlgAboutModule" style="font-size: 12px" dir="ltr">
+                    Modified for Website Baker Version 2.8.2 and higher<br />Modulversion 2.9.6
+                    </span>
+                </td>
+                <td>&nbsp;</td>
+            </tr>
+            <tr>
+				<td align="center" valign="middle">
+					<span style="font-size: 12px" dir="ltr">
+						<b><a href="http://www.websitebaker2.org" target="_blank" title="Visit the Website Baker web site">
+							Support <b>Website Baker</b> CMS</a></b> </span>
+					<div style="padding-top:15px">
+                        <a href="http://www.websitebaker2.org/en/organisation/the-association.php" target="_blank" title="Website Baker Org e.V.">
+						<img alt="Website Baker Org e.V." src="fck_about/wb-logo.gif" title="Website Baker Org e.V." />
+                        </a>
+					</div>
+				</td>
+                <td></td>
+            </tr>
+		</table>
+	</div>
+	<div id="divLicense" style="display: none">
+			<p>
+				Licensed under the terms of any of the following licenses at your
+				choice:
+			</p>
+			<ul>
+				<li style="margin-bottom:15px">
+					<b>GNU General Public License</b> Version 2 or later (the "GPL")<br />
+					<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a>
+				</li>
+				<li style="margin-bottom:15px">
+					<b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br />
+					<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
+				</li>
+				<li>
+					<b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br />
+					<a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>
+			   </li>
+			</ul>
+	</div>
+	<div id="divInfo" style="display: none" dir="ltr">
+		<table align="center" width="80%" border="0">
+			<tr>
+				<td>
+					<script type="text/javascript">
+<!--
+document.write( '<b>User Agent<\/b><br />' + window.navigator.userAgent + '<br /><br />' ) ;
+document.write( '<b>Browser<\/b><br />' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br /><br />' ) ;
+document.write( '<b>Platform<\/b><br />' + window.navigator.platform + '<br /><br />' ) ;
+
+var sUserLang = '?' ;
+
+if ( window.navigator.language )
+	sUserLang = window.navigator.language ;
+else if ( window.navigator.userLanguage )
+	sUserLang = window.navigator.userLanguage ;
+
+document.write( '<b>Language<\/b><br />' + sUserLang ) ;
+//-->
+					</script>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_anchor.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_anchor.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_anchor.html	(revision 1610)
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Anchor dialog window.
+-->
+<html>
+	<head>
+		<title>Anchor Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog			= window.parent ;
+var oEditor			= dialog.InnerDialogLoaded() ;
+
+var FCK				= oEditor.FCK ;
+var FCKBrowserInfo	= oEditor.FCKBrowserInfo ;
+var FCKTools		= oEditor.FCKTools ;
+var FCKRegexLib		= oEditor.FCKRegexLib ;
+
+var oDOM			= FCK.EditorDocument ;
+
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+
+var oAnchor ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
+		oAnchor = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+//Search for a real anchor
+if ( !oFakeImage )
+{
+	oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+	if ( oAnchor )
+		FCK.Selection.SelectNode( oAnchor ) ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oAnchor )
+		GetE('txtName').value = oAnchor.name ;
+	else
+		oAnchor = null ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	var sNewName = GetE('txtName').value ;
+
+	// Remove any illegal character in a name attribute:
+	// A name should start with a letter, but the validator passes anyway.
+	sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
+
+	if ( sNewName.length == 0 )
+	{
+		// Remove the anchor if the user leaves the name blank
+		if ( oAnchor )
+		{
+			// Removes the current anchor from the document using the new command
+			FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
+			return true ;
+		}
+
+		alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( oAnchor )	// Modifying an existent anchor.
+	{
+		ReadjustLinksToAnchor( oAnchor.name, sNewName );
+
+		// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
+		// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
+		// and assign .name, although it won't appear until it's specially processed in fckxhtml.js
+
+		// We remove the previous name
+		oAnchor.removeAttribute( 'name' ) ;
+		// Now we set it, but later we must process it specially
+		oAnchor.name = sNewName ;
+
+		return true ;
+	}
+
+	// Create a new anchor preserving the current selection
+	var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
+
+	if ( aNewAnchors.length == 0 )
+			aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
+	else
+	{
+		// Remove the fake href
+		for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+			aNewAnchors[i].removeAttribute( 'href' ) ;
+	}
+
+	// More than one anchors may have been created, so interact through all of them (see #220).
+	for ( var i = 0 ; i < aNewAnchors.length ; i++ )
+	{
+		oAnchor = aNewAnchors[i] ;
+
+		// Set the name
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// Setting anchor names directly in IE will trash the HTML code stored
+			// in FCKTempBin after undos. See #2263.
+			var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
+					FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
+			oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
+			oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
+			oAnchor = replaceAnchor ;
+		}
+		else
+			oAnchor.name = sNewName ;
+
+		// IE does require special processing to show the Anchor's image
+		// Opera doesn't allow to select empty anchors
+		if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
+		{
+			if ( oAnchor.innerHTML != '' )
+			{
+				if ( FCKBrowserInfo.IsIE )
+					oAnchor.className += ' FCK__AnchorC' ;
+			}
+			else
+			{
+				// Create a fake image for both IE and Opera
+				var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
+				oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
+
+				oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
+				oAnchor.parentNode.removeChild( oAnchor ) ;
+			}
+
+		}
+	}
+
+	return true ;
+}
+
+// Checks all the links in the current page pointing to the current name and changes them to the new name
+function ReadjustLinksToAnchor( sCurrent, sNew )
+{
+	var oDoc = FCK.EditorDocument ;
+
+	var aLinks = oDoc.getElementsByTagName( 'A' ) ;
+
+	var sReference = '#' + sCurrent ;
+	// The url of the document, so we check absolute and partial references.
+	var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
+	sFullReference += sReference ;
+
+	var oLink ;
+	var i = aLinks.length - 1 ;
+	while ( i >= 0 && ( oLink = aLinks[i--] ) )
+	{
+		var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+		if ( sHRef == null )
+			sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
+
+		if ( sHRef == sReference || sHRef == sFullReference )
+		{
+			oLink.href = '#' + sNew ;
+			SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
+		}
+	}
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgAnchorName">Anchor Name</span><BR>
+								<input id="txtName" style="WIDTH: 100%" type="text">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_replace.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_replace.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_replace.html	(revision 1610)
@@ -0,0 +1,650 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * "Find" and "Replace" dialog box window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var dialogArguments = dialog.Args() ;
+
+var FCKLang = oEditor.FCKLang ;
+var FCKDomTools = oEditor.FCKDomTools ;
+var FCKDomRange = oEditor.FCKDomRange ;
+var FCKListsLib = oEditor.FCKListsLib ;
+var FCKTools = oEditor.FCKTools ;
+var EditorDocument = oEditor.FCK.EditorDocument ;
+var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' )  ;
+
+dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
+dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
+var idMap = {} ;
+
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divFind', ( tabCode == 'Find' ) ) ;
+	ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;
+	idMap['FindText'] = 'txtFind' + tabCode ;
+	idMap['CheckCase'] = 'chkCase' + tabCode ;
+	idMap['CheckWord'] = 'chkWord' + tabCode ;
+
+	if ( tabCode == 'Replace' )
+		dialog.SetAutoSize( true ) ;
+}
+
+GetNextNonEmptyTextNode = function( node, stopNode )
+{
+	while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
+		1 ;
+	return node ;
+}
+
+CharacterCursor = function( arg )
+{
+	if ( arg.nodeType && arg.nodeType == 9 )
+	{
+		this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
+		this._offset = 0 ;
+		this._doc = arg ;
+	}
+	else
+	{
+		this._textNode = arguments[0] ;
+		this._offset = arguments[1] ;
+		this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
+	}
+}
+CharacterCursor.prototype =
+{
+	GetCharacter : function()
+	{
+		return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
+	},
+
+	// Non-normalized.
+	GetTextNode : function()
+	{
+		return this._textNode ;
+	},
+
+	// Non-normalized.
+	GetIndex : function()
+	{
+		return this._offset ;
+	},
+
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveNext : function()
+	{
+		if ( this._offset < this._textNode.length - 1 )
+		{
+			this._offset++ ;
+			return false ;
+		}
+
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
+
+		this._textNode = curNode ;
+		this._offset = 0 ;
+		return crossed ;
+	},
+
+	// Return value means whehther we've crossed a line break or a paragraph boundary.
+	MoveBack : function()
+	{
+		if ( this._offset > 0 && this._textNode.length > 0 )
+		{
+			this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
+			return false ;
+		}
+
+		var crossed = false ;
+		var curNode = this._textNode ;
+		while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
+				&& curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
+		{
+			var tag = curNode.nodeName.toLowerCase() ;
+			if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
+				crossed = true ;
+		}
+
+		this._textNode = curNode ;
+		this._offset = curNode && curNode.length - 1 ;
+		return crossed ;
+	},
+
+	Clone : function()
+	{
+		return new CharacterCursor( this._textNode, this._offset ) ;
+	}
+} ;
+
+CharacterRange = function( initCursor, maxLength )
+{
+	this._cursors = initCursor.push ? initCursor : [initCursor] ;
+	this._maxLength = maxLength ;
+	this._highlightRange = null ;
+}
+CharacterRange.prototype =
+{
+	ToDomRange : function()
+	{
+		var firstCursor = this._cursors[0] ;
+		var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
+		var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
+		var w3cRange = domRange._Range = domRange.CreateRange() ;
+		w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
+		w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
+		domRange._UpdateElementInfo() ;
+		return domRange ;
+	},
+
+	Highlight : function()
+	{
+		if ( this._cursors.length < 1 )
+			return ;
+
+		var domRange = this.ToDomRange() ;
+		HighlightStyle.ApplyToRange( domRange, false, true ) ;
+		this._highlightRange = domRange ;
+
+		var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
+		var focusNode = domRange.StartNode ;
+		if ( focusNode.nodeType != 1 )
+			focusNode = focusNode.parentNode ;
+		FCKDomTools.ScrollIntoView( focusNode, false ) ;
+		this._cursors = charRange._cursors ;
+	},
+
+	RemoveHighlight : function()
+	{
+		if ( this._highlightRange )
+		{
+			HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
+			var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
+			this._cursors = charRange._cursors ;
+			this._highlightRange = null ;
+		}
+	},
+
+	GetHighlightDomRange : function()
+	{
+		return this._highlightRange;
+	},
+
+	MoveNext : function()
+	{
+		var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		var retval = next.MoveNext() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.push( next ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.shift() ;
+		return retval ;
+	},
+
+	MoveBack : function()
+	{
+		var prev = this._cursors[0].Clone() ;
+		var retval = prev.MoveBack() ;
+		if ( retval )
+			this._cursors = [] ;
+		this._cursors.unshift( prev ) ;
+		if ( this._cursors.length > this._maxLength )
+			this._cursors.pop() ;
+		return retval ;
+	},
+
+	GetEndCharacter : function()
+	{
+		if ( this._cursors.length < 1 )
+			return null ;
+		var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
+		return retval ;
+	},
+
+	GetNextRange : function( len )
+	{
+		if ( this._cursors.length == 0 )
+			return null ;
+		var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
+		cur.MoveNext() ;
+		return new CharacterRange( cur, len ) ;
+	},
+
+	GetCursors : function()
+	{
+		return this._cursors ;
+	}
+} ;
+
+CharacterRange.CreateFromDomRange = function( domRange )
+{
+	var w3cRange = domRange._Range ;
+	var startContainer = w3cRange.startContainer ;
+	var endContainer = w3cRange.endContainer ;
+	var startTextNode, startIndex, endTextNode, endIndex ;
+
+	if ( startContainer.nodeType == 3 )
+	{
+		startTextNode = startContainer ;
+		startIndex = w3cRange.startOffset ;
+	}
+	else if ( domRange.StartNode.nodeType == 3 )
+	{
+		startTextNode = domRange.StartNode ;
+		startIndex = 0 ;
+	}
+	else
+	{
+		startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
+		if ( !startTextNode )
+			return null ;
+		startIndex = 0 ;
+	}
+
+	if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
+	{
+		endTextNode = endContainer ;
+		endIndex = w3cRange.endOffset - 1 ;
+	}
+	else
+	{
+		endTextNode = domRange.EndNode ;
+		while ( endTextNode.nodeType != 3 )
+			endTextNode = endTextNode.lastChild ;
+		endIndex = endTextNode.length - 1 ;
+	}
+
+	var cursors = [] ;
+	var current = new CharacterCursor( startTextNode, startIndex ) ;
+	cursors.push( current ) ;
+	if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
+	{
+		do
+		{
+			current = current.Clone() ;
+			current.MoveNext() ;
+			cursors.push( current ) ;
+		}
+		while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
+	}
+
+	return new CharacterRange( cursors, cursors.length ) ;
+}
+
+// Knuth-Morris-Pratt Algorithm for stream input
+KMP_NOMATCH = 0 ;
+KMP_ADVANCED = 1 ;
+KMP_MATCHED = 2 ;
+KmpMatch = function( pattern, ignoreCase )
+{
+	var overlap = [ -1 ] ;
+	for ( var i = 0 ; i < pattern.length ; i++ )
+	{
+		overlap.push( overlap[i] + 1 ) ;
+		while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )
+			overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;
+	}
+	this._Overlap = overlap ;
+	this._State = 0 ;
+	this._IgnoreCase = ( ignoreCase === true ) ;
+	if ( ignoreCase )
+		this.Pattern = pattern.toLowerCase();
+	else
+		this.Pattern = pattern ;
+}
+KmpMatch.prototype = {
+	FeedCharacter : function( c )
+	{
+		if ( this._IgnoreCase )
+			c = c.toLowerCase();
+
+		while ( true )
+		{
+			if ( c == this.Pattern.charAt( this._State ) )
+			{
+				this._State++ ;
+				if ( this._State == this.Pattern.length )
+				{
+					// found a match, start over, don't care about partial matches involving the current match
+					this._State = 0;
+					return KMP_MATCHED;
+				}
+				return KMP_ADVANCED ;
+			}
+			else if ( this._State == 0 )
+				return KMP_NOMATCH;
+			else
+				this._State = this._Overlap[ this._State ];
+		}
+
+		return null ;
+	},
+
+	Reset : function()
+	{
+		this._State = 0 ;
+	}
+};
+
+// Place a range at the start of document.
+function OnLoad()
+{
+	// First of all, translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	// Show the appropriate tab at startup.
+	if ( dialogArguments.CustomValue == 'Find' )
+	{
+		dialog.SetSelectedTab( 'Find' ) ;
+		dialog.SetAutoSize( true ) ;
+	}
+	else
+		dialog.SetSelectedTab( 'Replace' ) ;
+
+	SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
+}
+
+function btnStat()
+{
+	GetE('btnReplace').disabled =
+		GetE('btnReplaceAll').disabled =
+			GetE('btnFind').disabled =
+				( GetE(idMap["FindText"]).value.length == 0 ) ;
+}
+
+function btnStatDelayed()
+{
+	setTimeout( btnStat, 1 ) ;
+}
+
+function GetSearchString()
+{
+	return GetE(idMap['FindText']).value ;
+}
+
+function GetReplaceString()
+{
+	return GetE("txtReplace").value ;
+}
+
+function GetCheckCase()
+{
+	return !! ( GetE(idMap['CheckCase']).checked ) ;
+}
+
+function GetMatchWord()
+{
+	return !! ( GetE(idMap['CheckWord']).checked ) ;
+}
+
+/* Is this character a unicode whitespace or a punctuation mark?
+ * References:
+ * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
+ * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
+ */
+function CheckIsWordSeparator( c )
+{
+	if ( !c )
+		return true;
+	var code = c.charCodeAt( 0 );
+	if ( code >= 9 && code <= 0xd )
+		return true;
+	if ( code >= 0x2000 && code <= 0x200a )
+		return true;
+	switch ( code )
+	{
+		case 0x20:
+		case 0x85:
+		case 0xa0:
+		case 0x1680:
+		case 0x180e:
+		case 0x2028:
+		case 0x2029:
+		case 0x202f:
+		case 0x205f:
+		case 0x3000:
+			return true;
+		default:
+	}
+	return /[.,"'?!;:]/.test( c ) ;
+}
+
+FindRange = null ;
+function _Find()
+{
+	var searchString = GetSearchString() ;
+	if ( !FindRange )
+		FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
+	else
+	{
+		FindRange.RemoveHighlight() ;
+		FindRange = FindRange.GetNextRange( searchString.length ) ;
+	}
+	var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
+	var matchState = KMP_NOMATCH ;
+	var character = '%' ;
+
+	while ( character != null )
+	{
+		while ( ( character = FindRange.GetEndCharacter() ) )
+		{
+			matchState = matcher.FeedCharacter( character ) ;
+			if ( matchState == KMP_MATCHED )
+				break ;
+			if ( FindRange.MoveNext() )
+				matcher.Reset() ;
+		}
+
+		if ( matchState == KMP_MATCHED )
+		{
+			if ( GetMatchWord() )
+			{
+				var cursors = FindRange.GetCursors() ;
+				var head = cursors[ cursors.length - 1 ].Clone() ;
+				var tail = cursors[0].Clone() ;
+				if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
+					continue ;
+				if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
+					continue ;
+			}
+
+			FindRange.Highlight() ;
+			return true ;
+		}
+	}
+
+	FindRange = null ;
+	return false ;
+}
+
+function Find()
+{
+	if ( ! _Find() )
+		alert( FCKLang.DlgFindNotFoundMsg ) ;
+}
+
+function Replace()
+{
+	var saveUndoStep = function( selectRange )
+	{
+		var ieRange ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			ieRange = document.selection.createRange() ;
+
+		selectRange.Select() ;
+		oEditor.FCKUndo.SaveUndoStep() ;
+		var cloneRange = selectRange.Clone() ;
+		cloneRange.Collapse( false ) ;
+		cloneRange.Select() ;
+
+		if ( ieRange )
+			setTimeout( function(){ ieRange.select() ; }, 1 ) ;
+	}
+
+	if ( FindRange && FindRange.GetHighlightDomRange() )
+	{
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark ) ;
+
+		saveUndoStep( range ) ;
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
+	}
+	else
+	{
+		if ( ! _Find() )
+		{
+			FindRange && FindRange.RemoveHighlight() ;
+			alert( FCKLang.DlgFindNotFoundMsg ) ;
+		}
+	}
+}
+
+function ReplaceAll()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+	var replaceCount = 0 ;
+
+	while ( _Find() )
+	{
+		var range = FindRange.GetHighlightDomRange() ;
+		var bookmark = range.CreateBookmark() ;
+		FindRange.RemoveHighlight() ;
+		range.MoveToBookmark( bookmark) ;
+
+		range.DeleteContents() ;
+		range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
+		range._UpdateElementInfo() ;
+
+		FindRange = CharacterRange.CreateFromDomRange( range ) ;
+		replaceCount++ ;
+	}
+	if ( replaceCount == 0 )
+	{
+		FindRange && FindRange.RemoveHighlight() ;
+		alert( FCKLang.DlgFindNotFoundMsg ) ;
+	}
+	dialog.Cancel() ;
+}
+
+window.onunload = function()
+{
+	if ( FindRange )
+	{
+		FindRange.RemoveHighlight() ;
+		FindRange.ToDomRange().Select() ;
+	}
+}
+	</script>
+</head>
+<body onload="OnLoad()" style="overflow: hidden">
+	<div id="divFind" style="display: none">
+		<table cellspacing="3" cellpadding="2" width="100%" border="0">
+			<tr>
+				<td nowrap="nowrap">
+					<label for="txtFindFind" fcklang="DlgReplaceFindLbl">
+						Find what:</label>
+				</td>
+				<td width="100%">
+					<input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
+						type="text" />
+				</td>
+				<td>
+					<input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"
+						type="button" value="Find" fcklang="DlgFindFindBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="bottom" colspan="3">
+					&nbsp;<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match
+						case</label>
+					<br />
+					&nbsp;<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match
+						whole word</label>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divReplace" style="display:none">
+		<table cellspacing="3" cellpadding="2" width="100%" border="0">
+			<tr>
+				<td nowrap="nowrap">
+					<label for="txtFindReplace" fcklang="DlgReplaceFindLbl">
+						Find what:</label>
+				</td>
+				<td width="100%">
+					<input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
+						type="text" />
+				</td>
+				<td>
+					<input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"
+						type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="top" nowrap="nowrap">
+					<label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
+						Replace with:</label>
+				</td>
+				<td valign="top">
+					<input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
+				</td>
+				<td>
+					<input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"
+						value="Replace All" fcklang="DlgReplaceReplAllBtn" />
+				</td>
+			</tr>
+			<tr>
+				<td valign="bottom" colspan="3">
+					&nbsp;<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match
+						case</label>
+					<br />
+					&nbsp;<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match
+						whole word</label>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_button.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_button.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_button.html	(revision 1610)
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Button dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Button Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtType').value	= oActiveEl.type ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
+
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table border="0" cellpadding="0" cellspacing="0" width="80%">
+					<tr>
+						<td colspan="">
+							<span fcklang="DlgCheckboxName">Name</span><br />
+							<input type="text" size="20" id="txtName" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonText">Text (Value)</span><br />
+							<input type="text" id="txtValue" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgButtonType">Type</span><br />
+							<select id="txtType">
+								<option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
+								<option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
+								<option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template.html	(revision 1610)
@@ -0,0 +1,242 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Template selection dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+			.TplList
+			{
+				border: #dcdcdc 2px solid;
+				background-color: #ffffff;
+				overflow: auto;
+				width: 90%;
+			}
+
+			.TplItem
+			{
+				margin: 5px;
+				padding: 7px;
+				border: #eeeeee 1px solid;
+			}
+
+			.TplItem TABLE
+			{
+				display: inline;
+			}
+
+			.TplTitle
+			{
+				font-weight: bold;
+			}
+		</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+window.onload = function()
+{
+	// Set the right box height (browser dependent).
+	GetE('eList').style.height = document.all ? '100%' : '295px' ;
+
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
+
+	if ( FCKConfig.TemplateReplaceCheckbox !== false )
+		GetE('xReplaceBlock').style.display = '' ;
+
+	window.parent.SetAutoSize( true ) ;
+
+	LoadTemplatesXml() ;
+}
+
+function LoadTemplatesXml()
+{
+	var oTemplate ;
+
+	if ( !FCK._Templates )
+	{
+		GetE('eLoading').style.display = '' ;
+
+		// Create the Templates array.
+		FCK._Templates = new Array() ;
+
+		// Load the XML file.
+		var oXml = new oEditor.FCKXml() ;
+		oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
+
+		// Get the Images Base Path.
+		var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
+		var sImagesBasePath = oAtt ? oAtt.value : '' ;
+
+		// Get the "Template" nodes defined in the XML file.
+		var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
+
+		for ( var i = 0 ; i < aTplNodes.length ; i++ )
+		{
+			var oNode = aTplNodes[i] ;
+
+			oTemplate = new Object() ;
+
+			var oPart ;
+
+			// Get the Template Title.
+			if ( (oPart = oNode.attributes.getNamedItem('title')) )
+				oTemplate.Title = oPart.value ;
+			else
+				oTemplate.Title = 'Template ' + ( i + 1 ) ;
+
+			// Get the Template Description.
+			if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
+				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
+
+			// Get the Template Image.
+			if ( (oPart = oNode.attributes.getNamedItem('image')) )
+				oTemplate.Image = sImagesBasePath + oPart.value ;
+
+			// Get the Template HTML.
+			if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
+				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
+			else
+			{
+				alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
+				continue ;
+			}
+
+			FCK._Templates[ FCK._Templates.length ] = oTemplate ;
+		}
+
+		GetE('eLoading').style.display = 'none' ;
+	}
+
+	if ( FCK._Templates.length == 0 )
+		GetE('eEmpty').style.display = '' ;
+	else
+	{
+		for ( var j = 0 ; j < FCK._Templates.length ; j++ )
+		{
+			oTemplate = FCK._Templates[j] ;
+
+			var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
+			oItemDiv.TplIndex = j ;
+			oItemDiv.className = 'TplItem' ;
+
+			// Build the inner HTML of our new item DIV.
+			var sInner = '<table><tr>' ;
+
+			if ( oTemplate.Image )
+				sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
+
+			sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
+
+			if ( oTemplate.Description )
+				sInner += '<div>' + oTemplate.Description + '<\/div>' ;
+
+			sInner += '<\/td><\/tr><\/table>' ;
+
+			oItemDiv.innerHTML = sInner ;
+
+			oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
+			oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
+			oItemDiv.onclick = ItemDiv_OnClick ;
+		}
+	}
+}
+
+function ItemDiv_OnMouseOver()
+{
+	this.className += ' PopupSelectionBox' ;
+}
+
+function ItemDiv_OnMouseOut()
+{
+	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
+}
+
+function ItemDiv_OnClick()
+{
+	SelectTemplate( this.TplIndex ) ;
+}
+
+function SelectTemplate( index )
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( GetE('xChkReplaceAll').checked )
+		FCK.SetData( FCK._Templates[index].Html ) ;
+	else
+		FCK.InsertHtml( FCK._Templates[index].Html ) ;
+
+	window.parent.Cancel( true ) ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
+					(the actual contents will be lost):</span>
+			</td>
+		</tr>
+		<tr>
+			<td height="100%" align="center">
+				<div id="eList" align="left" class="TplList">
+					<div id="eLoading" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
+					</div>
+					<div id="eEmpty" align="center" style="display: none">
+						<br />
+						<span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
+					</div>
+				</div>
+			</td>
+		</tr>
+		<tr id="xReplaceBlock" style="display: none">
+			<td>
+				<table cellpadding="0" cellspacing="0">
+					<tr>
+						<td>
+							<input id="xChkReplaceAll" type="checkbox" /></td>
+						<td>
+							&nbsp;</td>
+						<td>
+							<label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
+								Replace actual contents</label></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_paste.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_paste.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_paste.html	(revision 1610)
@@ -0,0 +1,347 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This dialog is shown when, for some reason (usually security settings),
+ * the user is not able to paste data from the clipboard to the editor using
+ * the toolbar buttons or the context menu.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+var dialog = window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var FCK = oEditor.FCK;
+var FCKTools	= oEditor.FCKTools ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	var sPastingType = dialog.Args().CustomValue ;
+
+	if ( sPastingType == 'Word' || sPastingType == 'Security' )
+	{
+		if ( sPastingType == 'Security' )
+			document.getElementById( 'xSecurityMsg' ).style.display = '' ;
+
+		// For document.domain compatibility (#123) we must do all the magic in
+		// the URL for IE.
+		var sFrameUrl = !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ?
+			'javascript:void(0)' :
+			'javascript:void( (function(){' +
+				'document.open() ;' +
+				'document.domain=\'' + document.domain + '\' ;' +
+				'document.write(\'<html><head><scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
+				'document.close() ;' +
+				'document.body.contentEditable = true ;' +
+				'window.focus() ;' +
+				'})() )' ;
+
+		var eFrameSpace = document.getElementById( 'xFrameSpace' ) ;
+		eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' +
+					'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ;
+
+		var oFrame = eFrameSpace.firstChild ;
+
+		if ( !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
+		{
+			// Avoid errors if the pasted content has any script that fails: #389
+			var oDoc = oFrame.contentWindow.document ;
+			oDoc.open() ;
+			oDoc.write('<html><head><scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
+			oDoc.close() ;
+
+			if ( FCKBrowserInfo.IsIE )
+				oDoc.body.contentEditable = true ;
+			else
+				oDoc.designMode = 'on' ;
+
+			oFrame.contentWindow.focus();
+		}
+	}
+	else
+	{
+		document.getElementById('txtData').style.display = '' ;
+		SelectField( 'txtData' ) ;
+	}
+
+	if ( sPastingType != 'Word' )
+		document.getElementById('oWordCommands').style.display = 'none' ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+function Ok()
+{
+	// Before doing anything, save undo snapshot.
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var sHtml ;
+
+	var sPastingType = dialog.Args().CustomValue ;
+
+	if ( sPastingType == 'Word' || sPastingType == 'Security' )
+	{
+		var oFrame = document.getElementById('frmData') ;
+		var oBody ;
+
+		if ( oFrame.contentDocument )
+			oBody = oFrame.contentDocument.body ;
+		else
+			oBody = oFrame.contentWindow.document.body ;
+
+		if ( sPastingType == 'Word' )
+		{
+			// If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
+			if ( typeof( FCK.CustomCleanWord ) == 'function' )
+				sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
+			else
+				sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
+		}
+		else
+			sHtml = oBody.innerHTML ;
+
+		// Fix relative anchor URLs (IE automatically adds the current page URL).
+		var re = new RegExp( window.location + "#", "g" ) ;
+		sHtml = sHtml.replace( re, '#') ;
+	}
+	else
+	{
+		sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value )  ;
+		sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;
+
+		// FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(
+		// Use the marker method instead. It's primitive, but it works.
+		var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
+		var oDoc = oEditor.FCK.EditorDocument ;
+		dialog.Selection.EnsureSelection() ;
+		range.MoveToSelection() ;
+		range.DeleteContents() ;
+		var marker = [] ;
+		for ( var i = 0 ; i < 5 ; i++ )
+			marker.push( parseInt(Math.random() * 100000, 10 ) ) ;
+		marker = marker.join( "" ) ;
+		range.InsertNode ( oDoc.createTextNode( marker ) ) ;
+		var bookmark = range.CreateBookmark() ;
+
+		// Now we've got a marker indicating the paste position in the editor document.
+		// Find its position in the HTML code.
+		var htmlString = oDoc.body.innerHTML ;
+		var index = htmlString.indexOf( marker ) ;
+
+		// Split it the HTML code up, add the code we generated, and put them back together.
+		var htmlList = [] ;
+		htmlList.push( htmlString.substr( 0, index ) ) ;
+		htmlList.push( sHtml ) ;
+		htmlList.push( htmlString.substr( index + marker.length ) ) ;
+		htmlString = htmlList.join( "" ) ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			oEditor.FCK.SetInnerHtml( htmlString ) ;
+		else
+			oDoc.body.innerHTML = htmlString ;
+
+		range.MoveToBookmark( bookmark ) ;
+		range.Collapse( false ) ;
+		range.Select() ;
+		range.Release() ;
+		return true ;
+	}
+
+	oEditor.FCK.InsertHtml( sHtml ) ;
+
+	return true ;
+}
+
+// This function will be called from the PasteFromWord dialog (fck_paste.html)
+// Input: oNode a DOM node that contains the raw paste from the clipboard
+// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
+// Output: the cleaned string
+function CleanWord( oNode, bIgnoreFont, bRemoveStyles )
+{
+	var html = oNode.innerHTML ;
+
+	html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
+	html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
+
+	// Remove mso-xxx styles.
+	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
+
+	// Remove margin styles.
+	html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*;/gi, '' ) ;
+	html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-INDENT: 0(?:cm|in)\s*;/gi, '' ) ;
+	html = html.replace( /\s*TEXT-INDENT: 0(?:cm|in)\s*"/gi, "\"" ) ;
+
+	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
+
+	html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
+	html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
+
+	// Remove FONT face attributes.
+	if ( bIgnoreFont )
+	{
+		html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
+		html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
+
+		html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
+	}
+
+	// Remove Class attributes
+	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	// Remove styles.
+	if ( bRemoveStyles )
+		html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
+
+	// Remove style, meta and link tags
+	html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
+	html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
+
+	// Remove empty styles.
+	html =  html.replace( /\s*style="\s*"/gi, '' ) ;
+
+	html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
+
+	html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
+
+	// Remove Lang attributes
+	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
+
+	html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
+
+	// Remove XML elements and declarations
+	html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
+
+	// Remove w: tags with contents.
+	html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
+
+	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
+	html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
+
+	// Remove comments [SF BUG-1481861].
+	html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
+
+	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
+
+	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
+
+	// Remove "display:none" tags.
+	html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
+
+	// Remove language tags
+	html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
+
+	// Remove onmouseover and onmouseout events (from MS Word comments effect)
+	html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+	html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
+
+	if ( FCKConfig.CleanWordKeepsStructure )
+	{
+		// The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
+		html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
+
+		// Word likes to insert extra <font> tags, when using MSIE. (Wierd).
+		html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
+		html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
+	}
+	else
+	{
+		html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
+		html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
+		html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
+		html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
+		html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
+		html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
+
+		html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
+
+		// Transform <P> to <DIV>
+		var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ;	// Different because of a IE 5.0 error
+		html = html.replace( re, '<div$2<\/div>' ) ;
+
+		// Remove empty tags (three times, just to be sure).
+		// This also removes any empty anchor
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+		html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
+	}
+
+	return html ;
+}
+
+	</script>
+
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
+		<tr>
+			<td>
+				<div id="xSecurityMsg" style="display: none">
+					<span fcklang="DlgPasteSec">Because of your browser security settings,
+						the editor is not able to access your clipboard data directly. You are required
+						to paste it again in this window.</span><br />
+					&nbsp;
+				</div>
+				<div>
+					<span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
+						(<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br />
+					&nbsp;
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td id="xFrameSpace" valign="top" height="100%" style="border: #000000 1px solid">
+				<textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
+					width: 99%; height: 98%"></textarea>
+			</td>
+		</tr>
+		<tr id="oWordCommands">
+			<td>
+
+					<input id="chkRemoveFont" type="checkbox" checked="checked" />
+					<label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
+						Ignore Font Face definitions</label>
+					<br />
+					<input id="chkRemoveStyles" type="checkbox" />
+					<label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
+						Remove Styles definitions</label>
+
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_specialchar.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_specialchar.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_specialchar.html	(revision 1610)
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Special Chars Selector dialog window.
+-->
+<html>
+	<head>
+		<meta name="robots" content="noindex, nofollow">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<style type="text/css">
+				.Hand
+				{
+					cursor: pointer ;
+					cursor: hand ;
+				}
+				.Sample { font-size: 24px; }
+		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+var oSample ;
+
+function insertChar(charValue)
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+	oEditor.FCK.InsertHtml( charValue || "" ) ;
+	window.parent.Cancel() ;
+}
+
+function over(td)
+{
+	if ( ! oSample )
+		return ;
+	oSample.innerHTML = td.innerHTML ;
+	td.className = 'LightBackground SpecialCharsOver Hand' ;
+}
+
+function out(td)
+{
+	if ( ! oSample )
+		return ;
+	oSample.innerHTML = "&nbsp;" ;
+	td.className = 'DarkBackground SpecialCharsOut Hand' ;
+}
+
+function setDefaults()
+{
+	// Gets the sample placeholder.
+	oSample = document.getElementById("SampleTD") ;
+
+	// First of all, translates the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+		</script>
+	</head>
+	<body onload="setDefaults()" style="overflow: hidden">
+		<table cellpadding="0" cellspacing="0" width="100%" height="100%">
+			<tr>
+				<td width="100%">
+					<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
+						<script type="text/javascript">
+var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&#372;","&#374","&#373","&#375;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
+
+var cols = 20 ;
+
+var i = 0 ;
+while (i < aChars.length)
+{
+	document.write("<TR>") ;
+	for(var j = 0 ; j < cols ; j++)
+	{
+		if (aChars[i])
+		{
+			document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
+			document.write(aChars[i]) ;
+		}
+		else
+			document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
+		document.write("<\/TD>") ;
+		i++ ;
+	}
+	document.write("<\/TR>") ;
+}
+						</script>
+					</table>
+				</td>
+				<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table width="40" cellpadding="0" cellspacing="0" border="0">
+						<tr>
+							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select.html	(revision 1610)
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Select dialog window.
+-->
+<html>
+	<head>
+		<title>Select Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript" src="fck_select/fck_select.js"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+var oListText ;
+var oListValue ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	oListText	= document.getElementById( 'cmbText' ) ;
+	oListValue	= document.getElementById( 'cmbValue' ) ;
+
+	// Fix the lists widths. (Bug #970)
+	oListText.style.width = oListText.offsetWidth ;
+	oListValue.style.width = oListValue.offsetWidth ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtSelValue').value	= oActiveEl.value ;
+		GetE('txtLines').value		= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('chkMultiple').checked	= oActiveEl.multiple ;
+
+		// Load the actual options
+		for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
+		{
+			var sText	= HTMLDecode( oActiveEl.options[i].innerHTML ) ;
+			var sValue	= oActiveEl.options[i].value ;
+
+			AddComboOption( oListText, sText, sText ) ;
+			AddComboOption( oListValue, sValue, sValue ) ;
+		}
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var sSize = GetE('txtLines').value ;
+	if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
+		sSize = '' ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ;
+
+	SetAttribute( oActiveEl, 'size'	, sSize ) ;
+	oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
+
+	// Remove all options.
+	while ( oActiveEl.options.length > 0 )
+		oActiveEl.remove(0) ;
+
+	// Add all available options.
+	for ( var i = 0 ; i < oListText.options.length ; i++ )
+	{
+		var sText	= oListText.options[i].value ;
+		var sValue	= oListValue.options[i].value ;
+		if ( sValue.length == 0 ) sValue = sText ;
+
+		var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
+
+		if ( sValue == GetE('txtSelValue').value )
+		{
+			SetAttribute( oOption, 'selected', 'selected' ) ;
+			oOption.selected = true ;
+		}
+	}
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table width="100%" height="100%">
+			<tr>
+				<td>
+					<table width="100%">
+						<tr>
+							<td nowrap><span fckLang="DlgSelectName">Name</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectValue">Value</span>&nbsp;</td>
+							<td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
+						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgSelectSize">Size</span>&nbsp;</td>
+							<td nowrap><input id="txtLines" type="text" size="2" value="">&nbsp;<span fckLang="DlgSelectLines">lines</span></td>
+							<td nowrap align="right"><input id="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
+									multiple selections</label></td>
+						</tr>
+					</table>
+					<br>
+					<hr style="POSITION: absolute">
+					<span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor">&nbsp;<span fckLang="DlgSelectOpAvail">Available
+							Options</span>&nbsp;</span>
+					<table width="100%">
+						<tr>
+							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
+								<input id="txtText" style="WIDTH: 100%" type="text">
+							</td>
+							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
+								<input id="txtValue" style="WIDTH: 100%" type="text">
+							</td>
+							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
+							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
+						</tr>
+						<tr>
+							<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td vAlign="top" colSpan="2">
+							</td>
+						</tr>
+						<tr>
+							<td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
+								<br>
+								<input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
+									value="Down">
+							</td>
+						</tr>
+						<TR>
+							<TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">&nbsp;&nbsp;
+								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
+						</TR>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_colorselector.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_colorselector.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_colorselector.html	(revision 1610)
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Color Selection dialog window.
+-->
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<style TYPE="text/css">
+			#ColorTable		{ cursor: pointer ; cursor: hand ; }
+			#hicolor		{ height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#hicolortext	{ width: 75px ; text-align: right ; margin-bottom: 7px ; }
+			#selhicolor		{ height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
+			#selcolor		{ width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
+			#btnClear		{ width: 75px ; height: 22px ; margin-bottom: 6px ; }
+			.ColorCell		{ height: 15px ; width: 15px ; }
+		</style>
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+
+function OnLoad()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	CreateColorTable() ;
+
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+}
+
+function CreateColorTable()
+{
+	// Get the target table.
+	var oTable = document.getElementById('ColorTable') ;
+
+	// Create the base colors array.
+	var aColors = ['00','33','66','99','cc','ff'] ;
+
+	// This function combines two ranges of three values from the color array into a row.
+	function AppendColorRow( rangeA, rangeB )
+	{
+		for ( var i = rangeA ; i < rangeA + 3 ; i++ )
+		{
+			var oRow = oTable.insertRow(-1) ;
+
+			for ( var j = rangeB ; j < rangeB + 3 ; j++ )
+			{
+				for ( var n = 0 ; n < 6 ; n++ )
+				{
+					AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
+				}
+			}
+		}
+	}
+
+	// This function create a single color cell in the color table.
+	function AppendColorCell( targetRow, color )
+	{
+		var oCell = targetRow.insertCell(-1) ;
+		oCell.className = 'ColorCell' ;
+		oCell.bgColor = color ;
+
+		oCell.onmouseover = function()
+		{
+			document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('hicolortext').innerHTML = this.bgColor ;
+		}
+
+		oCell.onclick = function()
+		{
+			document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
+			document.getElementById('selcolor').value = this.bgColor ;
+		}
+	}
+
+	AppendColorRow( 0, 0 ) ;
+	AppendColorRow( 3, 0 ) ;
+	AppendColorRow( 0, 3 ) ;
+	AppendColorRow( 3, 3 ) ;
+
+	// Create the last row.
+	var oRow = oTable.insertRow(-1) ;
+
+	// Create the gray scale colors cells.
+	for ( var n = 0 ; n < 6 ; n++ )
+	{
+		AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
+	}
+
+	// Fill the row with black cells.
+	for ( var i = 0 ; i < 12 ; i++ )
+	{
+		AppendColorCell( oRow, '#000000' ) ;
+	}
+}
+
+function Clear()
+{
+	document.getElementById('selhicolor').style.backgroundColor = '' ;
+	document.getElementById('selcolor').value = '' ;
+}
+
+function ClearActual()
+{
+	document.getElementById('hicolor').style.backgroundColor = '' ;
+	document.getElementById('hicolortext').innerHTML = '&nbsp;' ;
+}
+
+function UpdateColor()
+{
+	try		  { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
+	catch (e) { Clear() ; }
+}
+
+function Ok()
+{
+	if ( typeof(window.parent.Args().CustomValue) == 'function' )
+		window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ;
+
+	return true ;
+}
+		</script>
+	</head>
+	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+			<tr>
+				<td align="center" valign="middle">
+					<table border="0" cellspacing="5" cellpadding="0" width="100%">
+						<tr>
+							<td valign="top" align="center" nowrap width="100%">
+								<table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
+								</table>
+							</td>
+							<td valign="top" align="left" nowrap>
+								<span fckLang="DlgColorHighlight">Highlight</span>
+								<div id="hicolor"></div>
+								<div id="hicolortext">&nbsp;</div>
+								<span fckLang="DlgColorSelected">Selected</span>
+								<div id="selhicolor"></div>
+								<input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
+								<br>
+								<input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt.html	(revision 1610)
@@ -0,0 +1,746 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html>
+	<head>
+		<title>SCAYT Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<link type="text/css" href="fck_scayt/scayt_dialog.css" rel="stylesheet" />
+		<script type="text/javascript">
+
+			var dialog	= window.parent ;
+			var oEditor	= dialog.InnerDialogLoaded() ;
+			var FCKLang = oEditor.FCKLang;
+			var scayt = oEditor.scayt;
+			var scayt_control = oEditor.scayt_control;
+			var lang_list = {};
+            var	sLang;
+			var	fckLang;
+            var chosed_lang;
+			var options;
+			var	tabs = scayt_control.uiTags || [1,1,0,1];
+			var	userDicActive = tabs[2] == 1;
+			var	captions;
+			var dic_buttons = [
+				// [0] contains buttons for creating
+				"dic_create,dic_restore",
+				// [1] contains buton for manipulation
+				"dic_rename,dic_delete"
+			];
+
+			var get =
+				new function(){
+
+					var mergeObjs = function(obj1, obj2)
+					{
+						for (var k in obj1)
+							obj2[k] = obj1[k];
+
+						return obj2;
+					};
+
+					var removeWhitespaces = function( s )
+					{
+						s = s.replace( new RegExp("^ +| +$"), '' ) ;
+						return s ;
+					};
+
+					var addEvent = function( el ,sEventName, fTodo )
+					{
+						if (el.addEventListener) {
+							el.addEventListener (sEventName,fTodo,false);
+
+						} else if (el.attachEvent) {
+							el.attachEvent ("on"+sEventName,fTodo);
+
+						} else {
+							el["on"+sEventName] = fTodo;
+						}
+					};
+
+					var getElementsByClassName = function (node,classname ,strTag) {
+						strTag = strTag || "*";
+					  	node = node || document;
+						if (node.getElementsByClassName)
+							return node.getElementsByClassName(classname);
+						else {
+							var objColl = node.getElementsByTagName(strTag);
+							if (!objColl.length &&  strTag == "*" &&  node.all) objColl = node.all;
+							var arr = new Array();
+							var delim = classname.indexOf('|') != -1  ? '|' : ' ';
+							var arrClass = classname.split(delim);
+							for (var i = 0, j = objColl.length; i < j; i++) {
+								var arrObjClass = objColl[i].className.split(' ');
+								if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
+								var c = 0;
+								comparisonLoop:
+									for ( var k = 0, l = arrObjClass.length ; k < l ; k++ )
+									{
+										for ( var m = 0, n = arrClass.length ; m < n ; m++ )
+										{
+											if ( arrClass[m] == arrObjClass[k] )
+												c++ ;
+
+											if ( ( delim == '|' && c == 1 ) || ( delim == ' ' && c == arrClass.length ) )
+											{
+												arr.push( objColl[i] ) ;
+												break comparisonLoop ;
+											}
+										}
+									}
+							}
+							return arr;
+						}
+					};
+
+					var hasClassName = function ( sClassName, elem ) {
+						//.split(/\s+/);
+						var aCnames = elem.className.split(/\s+/) || [];
+						for (var i=0, l=aCnames.length; i<l ; i++){
+							if (sClassName == aCnames[i])
+								return true;
+						}
+						return false;
+					}
+
+					var single = {
+						addClass 	: function ( sClassName ) {
+							//console.info( sClassName, this.className, );
+							if ( hasClassName(sClassName , this) )
+								return this;
+							var s = removeWhitespaces(this.className + " " +sClassName);
+							this.className = s;
+							return this;
+
+						},
+						removeClass : function ( sClassName ) {
+							var s = removeWhitespaces(this.className.replace(sClassName,""));
+							this.className = s;
+							return this;
+						},
+						setStyle : function( oStyles )
+						{
+							for ( var style in oStyles )
+							{
+								this.style[style] = oStyles[style] ;
+							}
+							return this ;
+						},
+						bindOnclick		: function ( handler ) {
+							//addEvent( this, "click" , handler);
+							this.onclick = handler;
+							return this;
+						},
+						bindOnchange	: function ( handler ) {
+							//addEvent( this, "change" , handler);
+							this.onchange = handler;
+							return this;
+						},
+						getAttr : function ( sAttrName )
+						{
+							if ( !sAttrName )
+								return null;
+
+							return this[sAttrName];
+						},
+						setAttr : function ( sAttrName , attrVal )
+						{
+							if ( !sAttrName || !attrVal )
+								return null;
+
+							this[sAttrName] = attrVal;
+
+							return this;
+						},
+						remAttr : function ( sAttrName )
+						{
+							if ( !sAttrName )
+								return null;
+						}
+					};
+
+					var singleCaller = function ( sMethod,args ) {
+						for ( var i=0, l=this.length; i<l ; i++ ){
+							var oItem = mergeObjs( single, this[i] );
+							oItem[sMethod].apply(this[i],args);
+						}
+					};
+
+
+					var collection = {
+
+						addClass 	: function ( sClassName ){
+							singleCaller.call(this, "addClass", [sClassName])
+							return this;
+						},
+						removeClass 	: function ( sClassName ) {
+							singleCaller.call(this, "removeClass", [sClassName])
+							return this;
+						},
+						setStyle		: function ( oStyles ) {
+							singleCaller.call(this, "setStyle", [oStyles])
+							return this;
+						},
+						bindOnclick		: function ( f ) {
+							singleCaller.call(this, "bindOnclick", [f])
+							return this;
+						},
+						bindOnchange	: function ( f ) {
+							singleCaller.call(this, "bindOnchange", [f])
+							return this;
+						},
+
+						forEach : function ( fTodo ) {
+							//el,i
+							for (var i=0, l=this.length; i<l ; i++){
+								fTodo.apply(this[i], [this[i],i ]);
+							}
+							return this;
+						}
+
+					};
+
+
+
+					this.byClass = function( sClassName ){
+						var o = getElementsByClassName(document, sClassName );
+						return o ? mergeObjs( collection, o ) : o;
+					};
+
+					this.byId = function( sId ){
+						var o = document.getElementById( sId );
+						return o ? mergeObjs( single, o ) : o;
+					};
+
+					this.gup = function ( name ){
+				        name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+				        var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+				        var regex = new RegExp( regexS ) ;
+				        var results = regex.exec( window.location.href ) ;
+
+				        if( results == null )
+				            return '' ;
+				        else
+				            return results[ 1 ] ;
+					};
+					this.wrap = function ( o ) {
+						return o ? mergeObjs( single, o ) : o;
+					};
+					this.forEach = function ( oScope, fTodo ){
+						collection.forEach.apply( oScope,[fTodo] );
+					};
+
+				 };
+
+
+
+			// Add the dialog tabs.
+			tabs[0] == 1 && dialog.AddTab( 'options', 'Options' ) ;
+			tabs[1] == 1 && dialog.AddTab( 'langs', 'Languages' ) ;
+			tabs[2] == 1 && dialog.AddTab( 'dictionary', 'Dictionary' ) ;
+			tabs[3] == 1 && dialog.AddTab( 'about', 'About' ) ;
+
+			// Function called when a dialog tab is selected.
+			function OnDialogTabChange( tabCode )
+			{
+				ShowE('inner_options'	, ( tabCode == 'options' ) ) ;
+				ShowE('inner_langs'	, ( tabCode == 'langs' ) ) ;
+				ShowE('inner_dictionary'		, ( tabCode == 'dictionary' ) ) ;
+				ShowE('inner_about'	, ( tabCode == 'about' ) ) ;
+			}
+
+
+
+
+
+			window.onload = function()
+			{
+				// Things to do when the page is loaded.
+
+				if ( document.location.search.length )
+					dialog.SetSelectedTab( document.location.search.substr(1) ) ;
+
+				dialog.SetOkButton( true ) ;
+
+
+	                if (!scayt) throw "SCAYT is undefined";
+	                if (!scayt_control) throw "SCAYT_CONTROL is undefined";
+
+					// show alowed tabs
+					tabs = scayt_control.uiTags || [1,1,1,0];
+
+
+					sLang = scayt_control.getLang();
+	                fckLang = "en";
+					options = scayt_control.option();
+					// apply captions
+					scayt.getCaption( fckLang, function( caps )
+					{
+						//console.info( "scayt.getCaption runned" )
+						captions = caps;
+						apllyCaptions();
+						//lang_list = scayt.getLangList();
+		                lang_list = scayt.getLangList() ;//|| {ltr: {"en_US" : "English","en_GB" : "British English","pt_BR" : "Brazilian Portuguese","da_DK" : "Danish","nl_NL" : "Dutch","en_CA" : "English Canadian","fi_FI" : "Finnish","fr_FR" : "French","fr_CA" : "French Canadian","de_DE" : "German","el_GR" : "Greek","hu_HU" : "Hungarian","it_IT" : "Italian","nb_NO" : "Norwegian","pl_PL" : "Polish","pt_PT" : "Portuguese","ru_RU" : "Russian","es_ES" : "Spanish","sv_SE" : "Swedish","tr_TR" : "Turkish","uk_UA" : "Ukrainian","cy_GB" : "Welsh"},rtl: {"ar_EG" : "Arabic"}};
+
+
+
+
+		                // ** animate options
+		                get.byClass("_scayt_option").forEach(function(el,i){
+
+							if ('undefined' != typeof(options[el.name])) {
+		                        // *** set default values
+
+		                        if ( 1 == options[ el.name ] ){
+		                           //el.setAttribute("checked","true");
+								   get.wrap(el).setAttr("checked" ,true)
+								   //document.all_options[el.name].checked = "true";
+								   //el.checked = true;
+								   //alert( options[ dojo.attr(el ,'name') ] + " el " )
+		                        }
+								//console.info(options)
+		                        // *** bind events
+		                        get.wrap(el).bindOnclick( function(ev){
+
+									var that = get.wrap(this);
+									var isCheck = that.getAttr("checked");
+									//console.info(isCheck)
+		                            if ( isCheck == false ) {
+
+										//that.setAttr("checked",false);
+										options[ this.name ] = 0;
+		                            }else{
+		                                //that.setAttr("checked",true);
+										options[ this.name ] = 1;
+		                            }
+									//console.info(options)
+		                        });
+		                    }
+		                });
+
+
+		                // * Create languages tab
+		                // ** convert langs obj to array
+		                var lang_arr = [];
+
+		                for (var k in lang_list.rtl){
+		                    // find curent lang
+		                    if ( k == sLang)
+		                        chosed_lang = lang_list.rtl[k] + "::" + k;
+		                    lang_arr[lang_arr.length] = lang_list.rtl[k] + "::" + k;
+
+		                }
+		                for (var k in lang_list.ltr){
+		                     // find curent lang
+		                     if ( k == sLang)
+		                        chosed_lang = lang_list.ltr[k] + "::" + k;
+		                    lang_arr[lang_arr.length] = lang_list.ltr[k] + "::" + k;
+		                }
+		                lang_arr.sort();
+
+		                // ** find lang containers
+
+		                var lcol = get.byId("lcolid");
+		                var rcol = get.byId("rcolid");
+		                // ** place langs in DOM
+
+		                get.forEach(lang_arr , function( l , i ){
+
+							//console.info( l,i );
+
+							var l_arr = l.split('::');
+		                    var l_name = l_arr[0];
+		                    var l_code = l_arr[1];
+		                    var row = document.createElement('div');
+		                    row.id = l_code;
+		                    row.className = "li";
+		                    // split langs on half
+		                    var col = ( i < lang_arr.length/2 ) ? lcol:rcol ;
+
+		                    // append row
+		                    //console.dir( col )
+		                    col.appendChild(row);
+		                    var row_dom = get.byId( l_code )
+		                    row_dom.innerHTML = l_name;
+
+		                    var checkActiveLang = function( id ){
+		                        return chosed_lang.split("::")[1] == id;
+		                    };
+		                    // bind click
+		                    row_dom.bindOnclick(function(ev){
+
+		                        if ( checkActiveLang(this.id) ) return false;
+		                        var elId = this.id;
+								get.byId(this.id)
+	                            	.addClass("Button")
+	                            	.removeClass("DarkBackground");
+
+		                        window.setTimeout( function (){ get.byId(elId).setStyle({opacity:"0.5",cursor:"no-drop"});  } ,300 );
+
+		                        get.byId(chosed_lang.split("::")[1])
+		                            .addClass("DarkBackground")
+		                            .removeClass("Button")
+		                            .setStyle({opacity:"1",cursor:"pointer"});
+
+		                        chosed_lang = this.innerHTML + "::" + this.id;
+		                        return true;
+		                    })
+							.setStyle({
+		                        cursor:"pointer"
+		                    });
+		                    // select current lang
+		                    if (l == chosed_lang)
+		                        row_dom.addClass("Button").setStyle({opacity:"0.5",cursor:"no-drop"});
+		                    else
+		                        row_dom.addClass("DarkBackground").setStyle({opacity:"1"});
+
+		                });
+						// * user dictionary
+						if ( userDicActive ){
+							initUserDictionary()
+
+						}
+					});
+
+
+
+			}
+
+
+
+
+			var buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ];
+			var labels  = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
+
+
+			function apllyCaptions ( )
+			{
+
+				// fill tabs headers
+				// add missing captions
+
+				get.byClass("PopupTab").forEach(function(el,i){
+
+					if ( tabs[i] == 1 ){
+						el.style.display = "block";
+					}
+					el.innerHTML = captions['tab_'+el.id];
+
+				});
+
+				// Fill options labels.
+				for ( i in labels )
+				{
+					var label = 'label_' + labels[ i ],
+						labelElement = document.getElementById( label );
+
+					if (  'undefined' != typeof labelElement
+					   && 'undefined' != typeof captions[ label ] && captions[ label ] !== ""
+					   && 'undefined' != typeof options[labels[ i ]] )
+					{
+						labelElement.innerHTML = captions[ label ];
+						var labelParent = labelElement.parentNode;
+						labelParent.style.display = "block";
+					}
+				}
+				// fill dictionary section
+				for ( var i in buttons )
+				{
+					var button = buttons[ i ];
+					get.byId( button ).innerHTML = '<span>' + captions[ 'button_' + button]  +'</span>' ;
+				}
+				get.byId("dname").innerHTML = captions['label_dname'];
+				get.byId( 'dic_info' ).innerHTML = captions[ 'dic_info' ];
+
+				// fill about tab
+				var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
+					'<p>' + captions[ 'version' ]  + scayt.version.toString() + '</p>' +
+					'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
+
+				get.byId( 'scayt_about' ).innerHTML = about;
+
+			}
+
+
+			function initUserDictionary () {
+
+				scayt.getNameUserDictionary(
+					function( o )
+					{
+						var dic_name = o.dname;
+						if ( dic_name )
+						{
+							get.byId( 'dic_name' ).value = dic_name;
+							display_dic_buttons( dic_buttons[1] );
+						}
+						else
+							display_dic_buttons( dic_buttons[0] );
+
+					},
+					function ()
+					{
+						get.byId( 'dic_name' ).value("");
+						dic_error_message(captions["err_dic_enable"] || "Used dictionary are unaveilable now.")
+					}
+				);
+
+				dic_success_message("");
+
+				 // ** bind event listeners
+                get.byClass("button").bindOnclick(function( ){
+
+					// get dic name
+					var dic_name = get.byId('dic_name').value ;
+					// check common dictionary rules
+					if (!dic_name) {
+						dic_error_message(" Dictionary name should not be empty. ");
+						return false;
+					}
+					//apply handler
+					window[this.id].apply( window, [this, dic_name, dic_buttons ] );
+
+					//console.info( typeof window[this.id], window[this.id].calle )
+					return false;
+				});
+
+			}
+
+			dic_create = function( el, dic_name , dic_buttons )
+			{
+				// comma separated button's ids include repeats if exists
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+
+				var err_massage = captions["err_dic_create"];
+				var suc_massage = captions["succ_dic_create"];
+				//console.info("--plugin ");
+
+				scayt.createUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_create callback called with args" , arg );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[1] );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							dic_success_message (suc_massage);
+						},
+					function(arg)
+						{
+							//console.info( "dic_create errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" ,arg.dname );
+							dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
+						});
+
+			};
+
+			dic_rename = function( el, dic_name , dic_buttons )
+			{
+				//
+				// try to rename dictionary
+				// @TODO: rename dict
+				//console.info ( captions["err_dic_rename"] )
+				var err_massage = captions["err_dic_rename"] || "";
+				var suc_massage = captions["succ_dic_rename"] || "";
+				scayt.renameUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_rename callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							set_dic_name( dic_name );
+							dic_success_message ( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( "dic_rename errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname  );
+							set_dic_name( dic_name );
+							dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
+						});
+			};
+
+			dic_delete = function ( el, dic_name , dic_buttons )
+			{
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_delete"];
+				var suc_massage = captions["succ_dic_delete"];
+
+				// try to delete dictionary
+				// @TODO: delete dict
+				scayt.deleteUserDictionary(
+					function(arg)
+						{
+							//console.info( "dic_delete callback " , dic_name ,arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[0] );
+							set_dic_name( "" ); // empty input field
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_delete errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message(err_massage);
+						});
+			};
+
+			dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
+			{
+				// try to restore existing dictionary
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_restore"];
+				var suc_massage = captions["succ_dic_restore"];
+
+				scayt.restoreUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_restore callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons(dic_buttons[1]);
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_restore errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message( err_massage );
+						});
+			};
+
+			function dic_error_message( m )
+			{
+				if ( !m )
+					return ;
+
+				get.byId('dic_message').innerHTML =  '<span class="error">' + m + '</span>' ;
+			}
+
+            function dic_success_message( m )
+            {
+				if ( !m )
+					return ;
+
+				get.byId('dic_message').innerHTML = '<span class="success">' + m + '</span>' ;
+			}
+
+			function display_dic_buttons ( sIds ){
+				sIds = new String( sIds );
+				get.forEach( sIds.split(','), function ( id,i) {
+					get.byId(id).setStyle({display:"inline"});
+				});
+			}
+			function hide_dic_buttons ( sIds ){
+				sIds = new String( sIds );
+				get.forEach( sIds.split(','), function ( id,i) {
+					get.byId(id).setStyle({display:"none"});
+				});
+			}
+			function set_dic_name ( dic_name ) {
+				get.byId('dic_name').value = dic_name;
+			}
+			function display_dic_tab () {
+				get.byId("dic_tab").style.display = "block";
+			}
+
+			function Ok()
+			{
+				// Things to do when the Ok button is clicked.
+				var c = 0;
+			    // set upp options if any was set
+			    var o = scayt_control.option();
+				//console.info(options)
+			    for ( var oN in options ) {
+
+			        if ( o[oN] != options[oN] && c == 0){
+						//console.info( "set option " )
+			            scayt_control.option( options );
+			            c++;
+			        }
+			    }
+			    //setup languge if it was change
+			    var csLang = chosed_lang.split("::")[1];
+			    if ( csLang && sLang != csLang ){
+			        scayt_control.setLang( csLang );
+					//console.info(sLang+" -> "+csLang , scayt_control)
+			        c++;
+			    }
+
+			    if ( c > 0 )  scayt_control.refresh();
+
+			    return dialog.Cancel();
+
+			}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<div class="tab_container" id="inner_options">
+
+           <ul id="scayt_options">
+               <li class="_scayt_options">
+                   <input class="_scayt_option" type="checkbox" value="0" name="allCaps" />
+                   <label for="allCaps" id="label_allCaps"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="ignoreDomainNames" />
+                   <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="mixedCase" />
+                   <label for="mixedCase" id="label_mixedCase"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="mixedWithDigits" />
+                   <label for="mixedWithDigits" id="label_mixedWithDigits"></label>
+               </li>
+           </ul>
+		</div>
+		<div class="tab_container" id="inner_langs">
+
+		   <div class="lcol" id="lcolid"></div>
+           <div class="rcol" id="rcolid"></div>
+		</div>
+		<div class="tab_container" id="inner_dictionary">
+
+		   <div id="dic_message"></div>
+			<div id="_off_dic_tab" class="dictionary" >
+				<div style="padding-left:10px;">
+							<label id="dname" for="dname"></label>
+							<input type="text" size="14" maxlength="15" value="" id="dic_name" name="dic_name"/>
+						</div>
+						<div class="dic_buttons">
+							<a href="#" id="dic_create" class="button">  </a>
+							<a href="#" id="dic_delete" class="button">  </a>
+							<a href="#" id="dic_rename" class="button">  </a>
+							<a href="#" id="dic_restore" class="button">  </a>
+						</div>
+
+						<div id="dic_info"></div>
+
+			</div>
+		</div>
+		<div id="inner_about" class="tab_container">
+		   <div id="scayt_about"></div>
+		</div>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_tablecell.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_tablecell.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_tablecell.html	(revision 1610)
@@ -0,0 +1,293 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Cell properties dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Cell Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCKDomTools = oEditor.FCKDomTools ;
+
+// Array of selected Cells
+var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	SetStartupValue() ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtWidth' ) ;
+}
+
+function SetStartupValue()
+{
+	if ( aCells.length > 0 )
+	{
+		var oCell = aCells[0] ;
+		var iWidth = GetAttribute( oCell, 'width' ) ;
+
+		if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
+		{
+			iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
+			GetE('selWidthType').value = 'percent' ;
+		}
+
+		if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
+			GetE('selWordWrap').value = !oCell.noWrap ;
+
+		GetE('txtWidth').value			= iWidth ;
+		GetE('txtHeight').value			= GetAttribute( oCell, 'height' ) ;
+		GetE('selHAlign').value			= GetAttribute( oCell, 'align' ) ;
+		GetE('selVAlign').value			= GetAttribute( oCell, 'vAlign' ) ;
+		GetE('txtRowSpan').value		= GetAttribute( oCell, 'rowSpan' ) ;
+		GetE('txtCollSpan').value		= GetAttribute( oCell, 'colSpan' ) ;
+		GetE('txtBackColor').value		= GetAttribute( oCell, 'bgColor' ) ;
+		GetE('txtBorderColor').value	= GetAttribute( oCell, 'borderColor' ) ;
+		GetE('selCellType').value     = oCell.nodeName.toLowerCase() ;
+	}
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	for( i = 0 ; i < aCells.length ; i++ )
+	{
+		if ( GetE('txtWidth').value.length > 0 )
+			aCells[i].width	= GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
+		else
+			aCells[i].removeAttribute( 'width', 0 ) ;
+
+		if ( GetE('selWordWrap').value == 'false' )
+			SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
+		else
+			aCells[i].removeAttribute( 'noWrap' ) ;
+
+		SetAttribute( aCells[i], 'height'		, GetE('txtHeight').value ) ;
+		SetAttribute( aCells[i], 'align'		, GetE('selHAlign').value ) ;
+		SetAttribute( aCells[i], 'vAlign'		, GetE('selVAlign').value ) ;
+		SetAttribute( aCells[i], 'rowSpan'		, GetE('txtRowSpan').value ) ;
+		SetAttribute( aCells[i], 'colSpan'		, GetE('txtCollSpan').value ) ;
+		SetAttribute( aCells[i], 'bgColor'		, GetE('txtBackColor').value ) ;
+		SetAttribute( aCells[i], 'borderColor'	, GetE('txtBorderColor').value ) ;
+
+		var cellType = GetE('selCellType').value ;
+		if ( aCells[i].nodeName.toLowerCase() != cellType )
+			aCells[i] = RenameNode( aCells[i], cellType ) ;
+	}
+
+	// The cells need to be reselected, otherwise the caret will appear inside the table borders (Gecko)
+	// or sent back to the beginning of the document (Opera and Safari).
+	// Strangely, IE works ok so no change is needed for IE.
+	if ( !oEditor.FCKBrowserInfo.IsIE )
+	{
+		var selection = oEditor.FCK.EditorWindow.getSelection() ;
+		selection.removeAllRanges() ;
+		for ( var i = 0 ; i < aCells.length ; i++ )
+		{
+			var range = oEditor.FCK.EditorDocument.createRange() ;
+			range.selectNode( aCells[i] ) ;
+			selection.addRange( range ) ;
+		}
+	}
+
+	return true ;
+}
+
+function SelectBackColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBackColor').value = color ;
+}
+
+function SelectBorderColor( color )
+{
+	if ( color && color.length > 0 )
+		GetE('txtBorderColor').value = color ;
+}
+
+function SelectColor( wich )
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor ) ;
+}
+
+	</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td>
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
+											size="3" />&nbsp;<select id="selWidthType">
+												<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
+												<option fcklang="DlgCellWidthPc" value="percent">percent</option>
+											</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" onkeypress="return IsDigit(event);" />&nbsp;<span
+											fcklang="DlgCellWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
+									<td>
+										&nbsp;<select id="selWordWrap">
+											<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
+											<option fcklang="DlgCellWordWrapNo" value="false">No</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selHAlign">
+											<option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
+											<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
+											<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selVAlign">
+											<option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
+											<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
+											<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
+											<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+									 <span fcklang="DlgCellType">Cell Type</span>:</td>
+									<td colspan="2">
+										&nbsp; <select id="selCellType">
+											<option fcklang="DlgCellTypeData" value="td">Data</option>
+											<option fcklang="DlgCellTypeHeader" value="th">Header</option>
+										</select>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
+											></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
+											size="2"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBackColor">Background Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBackColor" type="text" size="8" /></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorderColor" type="text" size="8" /></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_table.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_table.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_table.html	(revision 1610)
@@ -0,0 +1,440 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Table dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCKDomTools = oEditor.FCKDomTools ;
+
+// Gets the table if there is one selected.
+var table ;
+var e = dialog.Selection.GetSelectedElement() ;
+var hasColumnHeaders ;
+
+if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
+	e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
+
+if ( e && e.tagName == "TABLE" )
+	table = e ;
+
+// Fired when the window loading process is finished. It sets the fields with the
+// actual values if a table is selected in the editor.
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if (table)
+	{
+		document.getElementById('txtRows').value    = table.rows.length ;
+		document.getElementById('txtColumns').value = table.rows[0].cells.length ;
+
+		// Gets the value from the Width or the Style attribute
+		var iWidth  = (table.style.width  ? table.style.width  : table.width ) ;
+		var iHeight = (table.style.height ? table.style.height : table.height ) ;
+
+		if (iWidth.indexOf('%') >= 0)			// Percentual = %
+		{
+			iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ;
+			document.getElementById('selWidthType').value = "percent" ;
+		}
+		else if (iWidth.indexOf('px') >= 0)		// Style Pixel = px
+		{																										  //
+			iWidth = iWidth.substr(0,iWidth.length - 2);
+			document.getElementById('selWidthType').value = "pixels" ;
+		}
+
+		if (iHeight && iHeight.indexOf('px') >= 0)		// Style Pixel = px
+			iHeight = iHeight.substr(0,iHeight.length - 2);
+
+		document.getElementById('txtWidth').value		= iWidth || '' ;
+		document.getElementById('txtHeight').value		= iHeight || '' ;
+		document.getElementById('txtBorder').value		= GetAttribute( table, 'border', '' ) ;
+		document.getElementById('selAlignment').value	= GetAttribute( table, 'align', '' ) ;
+		document.getElementById('txtCellPadding').value	= GetAttribute( table, 'cellPadding', '' ) ;
+		document.getElementById('txtCellSpacing').value	= GetAttribute( table, 'cellSpacing', '' ) ;
+		document.getElementById('txtSummary').value     = GetAttribute( table, 'summary', '' ) ;
+//		document.getElementById('cmbFontStyle').value	= table.className ;
+
+		var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
+		if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ;
+
+		hasColumnHeaders = true ;
+		// Check if all the first cells in every row are TH
+		for (var row=0; row<table.rows.length; row++)
+		{
+			// If just one cell isn't a TH then it isn't a header column
+			if ( table.rows[row].cells[0].nodeName != 'TH' )
+			{
+				hasColumnHeaders = false ;
+
+				break;
+			}
+		}
+
+		// Check if the table contains <thead>
+		if ((table.tHead !== null) )
+		{
+			if (hasColumnHeaders)
+				GetE('selHeaders').value = 'both' ;
+			else
+				GetE('selHeaders').value = 'row' ;
+		}
+		else
+		{
+			if (hasColumnHeaders)
+				GetE('selHeaders').value = 'col' ;
+			else
+				GetE('selHeaders').value = '' ;
+		}
+
+
+		document.getElementById('txtRows').disabled    = true ;
+		document.getElementById('txtColumns').disabled = true ;
+		SelectField( 'txtWidth' ) ;
+	}
+	else
+		SelectField( 'txtRows' ) ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+// Fired when the user press the OK button
+function Ok()
+{
+	var bExists = ( table != null ) ;
+
+	var oDoc = oEditor.FCK.EditorDocument ;
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( ! bExists )
+		table = oDoc.createElement( "TABLE" ) ;
+
+	// Removes the Width and Height styles
+	if ( bExists && table.style.width )		table.style.width = null ; //.removeAttribute("width") ;
+	if ( bExists && table.style.height )	table.style.height = null ; //.removeAttribute("height") ;
+
+	var sWidth = GetE('txtWidth').value ;
+	if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' )
+		sWidth += '%' ;
+
+	SetAttribute( table, 'width'		, sWidth ) ;
+	SetAttribute( table, 'height'		, GetE('txtHeight').value ) ;
+	SetAttribute( table, 'border'		, GetE('txtBorder').value ) ;
+	SetAttribute( table, 'align'		, GetE('selAlignment').value ) ;
+	SetAttribute( table, 'cellPadding'	, GetE('txtCellPadding').value ) ;
+	SetAttribute( table, 'cellSpacing'	, GetE('txtCellSpacing').value ) ;
+	SetAttribute( table, 'summary'		, GetE('txtSummary').value ) ;
+
+	var headers = GetE('selHeaders').value ;
+	if ( bExists )
+	{
+		// Should we make a <thead>?
+		if ( table.tHead==null && (headers=='row' || headers=='both') )
+		{
+			var oThead = table.createTHead() ;
+			var tbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
+			var theRow= FCKDomTools.GetFirstChild( tbody, 'TR' ) ;
+
+			//now change TD to TH:
+			for (var i = 0; i<theRow.childNodes.length ; i++)
+			{
+				var th = RenameNode(theRow.childNodes[i], 'TH') ;
+				if (th != null)
+					th.scope='col' ;
+			}
+			oThead.appendChild( theRow ) ;
+		}
+
+		if ( table.tHead!==null && !(headers=='row' || headers=='both') )
+		{
+			// Move the row out of the THead and put it in the TBody:
+			var tHead = table.tHead ;
+			var tbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
+
+			var previousFirstRow = tbody.firstChild ;
+			while ( tHead.firstChild )
+			{
+				var theRow = tHead.firstChild ;
+				for (var i = 0; i < theRow.childNodes.length ; i++ )
+				{
+					var newCell = RenameNode( theRow.childNodes[i], 'TD' ) ;
+					if ( newCell != null )
+						newCell.removeAttribute( 'scope' ) ;
+				}
+				tbody.insertBefore( theRow, previousFirstRow ) ;
+			}
+			table.removeChild( tHead ) ;
+		}
+
+		// Should we make all first cells in a row TH?
+		if ( (!hasColumnHeaders)  && (headers=='col' || headers=='both') )
+		{
+			for( var row=0 ; row < table.rows.length ; row++ )
+			{
+				var newCell = RenameNode(table.rows[row].cells[0], 'TH') ;
+				if ( newCell != null )
+					newCell.scope = 'row' ;
+			}
+		}
+
+		// Should we make all first TH-cells in a row make TD? If 'yes' we do it the other way round :-)
+		if ( (hasColumnHeaders)  && !(headers=='col' || headers=='both') )
+		{
+			for( var row=0 ; row < table.rows.length ; row++ )
+			{
+				var oRow = table.rows[row] ;
+				if ( oRow.parentNode.nodeName == 'TBODY' )
+				{
+					var newCell = RenameNode(oRow.cells[0], 'TD') ;
+					if (newCell != null)
+						newCell.removeAttribute( 'scope' ) ;
+				}
+			}
+		}
+	}
+
+	if (! bExists)
+	{
+		var iRows = GetE('txtRows').value ;
+		var iCols = GetE('txtColumns').value ;
+
+		var startRow = 0 ;
+		// Should we make a <thead> ?
+		if (headers=='row' || headers=='both')
+		{
+			startRow++ ;
+			var oThead = table.createTHead() ;
+			var oRow = table.insertRow(-1) ;
+			oThead.appendChild(oRow);
+
+			for ( var c = 0 ; c < iCols ; c++ )
+			{
+				var oThcell = oDoc.createElement( 'TH' ) ;
+				oThcell.scope = 'col' ;
+				oRow.appendChild( oThcell ) ;
+				if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+					oEditor.FCKTools.AppendBogusBr( oThcell ) ;
+			}
+		}
+
+		// Opera automatically creates a tbody when a thead has been added
+		var oTbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
+		if ( !oTbody )
+		{
+			// make TBODY if it doesn't exist
+			oTbody = oDoc.createElement( 'TBODY' ) ;
+			table.appendChild( oTbody ) ;
+		}
+		for ( var r = startRow ; r < iRows; r++ )
+		{
+			var oRow = oDoc.createElement( 'TR' ) ;
+			oTbody.appendChild(oRow) ;
+
+			var startCol = 0 ;
+			// Is the first column a header?
+			if (headers=='col' || headers=='both')
+			{
+				var oThcell = oDoc.createElement( 'TH' ) ;
+				oThcell.scope = 'row' ;
+				oRow.appendChild( oThcell ) ;
+				if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+					oEditor.FCKTools.AppendBogusBr( oThcell ) ;
+
+				startCol++ ;
+			}
+			for ( var c = startCol ; c < iCols ; c++ )
+			{
+				// IE will leave the TH at the end of the row if we use now oRow.insertCell(-1)
+				var oCell = oDoc.createElement( 'TD' ) ;
+				oRow.appendChild( oCell ) ;
+				if ( oEditor.FCKBrowserInfo.IsGeckoLike )
+					oEditor.FCKTools.AppendBogusBr( oCell ) ;
+			}
+		}
+
+		oEditor.FCK.InsertElement( table ) ;
+	}
+
+	var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
+
+	if ( eCaption && !oEditor.FCKBrowserInfo.IsIE )
+		eCaption.parentNode.removeChild( eCaption ) ;
+
+	if ( document.getElementById('txtCaption').value != '' )
+	{
+		if ( !eCaption || !oEditor.FCKBrowserInfo.IsIE )
+		{
+			eCaption = oDoc.createElement( 'CAPTION' ) ;
+			table.insertBefore( eCaption, table.firstChild ) ;
+		}
+
+		eCaption.innerHTML = document.getElementById('txtCaption').value ;
+	}
+	else if ( bExists && eCaption )
+	{
+		// TODO: It causes an IE internal error if using removeChild or
+		// table.deleteCaption() (see #505).
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			eCaption.innerHTML = '' ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td valign="top">
+							<table cellspacing="1" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableRows">Rows</span>:</td>
+									<td>
+										&nbsp;<input id="txtRows" type="text" maxlength="3" size="2" value="3"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableColumns">Columns</span>:</td>
+									<td>
+										&nbsp;<input id="txtColumns" type="text" maxlength="2" size="2" value="2"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td><span fcklang="DlgTableHeaders">Headers</span>:</td>
+									<td>
+										&nbsp;<select id="selHeaders">
+											<option fcklang="DlgTableHeadersNone" value="">None</option>
+											<option fcklang="DlgTableHeadersRow" value="row">First row</option>
+											<option fcklang="DlgTableHeadersColumn" value="col">First column</option>
+											<option fcklang="DlgTableHeadersBoth" value="both">Both</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableBorder">Border size</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorder" type="text" maxlength="2" size="2" value="1"
+											onkeypress="return IsDigit(event);" /></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableAlign">Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selAlignment">
+											<option fcklang="DlgTableAlignNotSet" value="" selected="selected">&lt;Not set&gt;</option>
+											<option fcklang="DlgTableAlignLeft" value="left">Left</option>
+											<option fcklang="DlgTableAlignCenter" value="center">Center</option>
+											<option fcklang="DlgTableAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right" valign="top">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td>
+										<span fcklang="DlgTableWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input id="txtWidth" type="text" maxlength="4" size="3" value="200"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<select id="selWidthType">
+											<option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
+											<option fcklang="DlgTableWidthPc" value="percent">percent</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										<span fcklang="DlgTableHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;<span fcklang="DlgTableWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td colspan="3">&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgTableCellPad">Cell padding</span>:</td>
+									<td>
+										&nbsp;<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1"
+											onkeypress="return IsDigit(event);" /></td>
+									<td>
+										&nbsp;</td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableCaption">Caption</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtCaption" type="text" style="width: 100%" /></td>
+					</tr>
+					<tr>
+						<td nowrap="nowrap">
+							<span fcklang="DlgTableSummary">Summary</span>:&nbsp;</td>
+						<td>
+							&nbsp;</td>
+						<td width="100%" nowrap="nowrap">
+							<input id="txtSummary" type="text" style="width: 100%" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textfield.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textfield.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textfield.html	(revision 1610)
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Text field dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
+	{
+		GetE('txtName').value	= oActiveEl.name ;
+		GetE('txtValue').value	= oActiveEl.value ;
+		GetE('txtSize').value	= GetAttribute( oActiveEl, 'size' ) ;
+		GetE('txtMax').value	= GetAttribute( oActiveEl, 'maxLength' ) ;
+		GetE('txtType').value	= oActiveEl.type ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
+	{
+		alert( "Maximum characters must be a positive number." ) ;
+		GetE('txtMax').focus() ;
+		return false ;
+	}
+	else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
+	{
+		alert( "Width must be a positive number." ) ;
+		GetE('txtSize').focus() ;
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
+
+	SetAttribute( oActiveEl, 'value'	, GetE('txtValue').value ) ;
+	SetAttribute( oActiveEl, 'size'		, GetE('txtSize').value ) ;
+	SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td align="center">
+				<table cellspacing="0" cellpadding="0" border="0">
+					<tr>
+						<td>
+							<span fcklang="DlgTextName">Name</span><br />
+							<input id="txtName" type="text" size="20" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextValue">Value</span><br />
+							<input id="txtValue" type="text" size="25" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextCharWidth">Character Width</span><br />
+							<input id="txtSize" type="text" size="5" />
+						</td>
+						<td>
+						</td>
+						<td>
+							<span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
+							<input id="txtMax" type="text" size="5" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgTextType">Type</span><br />
+							<select id="txtType">
+								<option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
+								<option value="password" fcklang="DlgTextTypePass">Password</option>
+							</select>
+						</td>
+						<td>
+							&nbsp;</td>
+						<td>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops.html	(revision 1610)
@@ -0,0 +1,600 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Link dialog window.
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
+	<meta content="noindex, nofollow" name="robots" >
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+window.parent.AddTab( 'General'		, FCKLang.DlgDocGeneralTab ) ;
+window.parent.AddTab( 'Background'	, FCKLang.DlgDocBackTab ) ;
+window.parent.AddTab( 'Colors'		, FCKLang.DlgDocColorsTab ) ;
+window.parent.AddTab( 'Meta'		, FCKLang.DlgDocMetaTab ) ;
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divGeneral'		, ( tabCode == 'General' ) ) ;
+	ShowE( 'divBackground'	, ( tabCode == 'Background' ) ) ;
+	ShowE( 'divColors'		, ( tabCode == 'Colors' ) ) ;
+	ShowE( 'divMeta'		, ( tabCode == 'Meta' ) ) ;
+
+	ShowE( 'ePreview'		, ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
+}
+
+//#### Get Base elements from the document: BEGIN
+
+// The HTML element of the document.
+var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+// The HEAD element of the document.
+var oHead = oHTML.getElementsByTagName('head')[0] ;
+
+var oBody = FCK.EditorDocument.body ;
+
+// This object contains all META tags defined in the document.
+var oMetaTags = new Object() ;
+
+// Get all META tags defined in the document.
+AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ;
+AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ;
+
+function AppendMetaCollection( targetObject, metaCollection )
+{
+	// Loop throw all METAs and put it in the HashTable.
+	for ( var i = 0 ; i < metaCollection.length ; i++ )
+	{
+		// Try to get the "name" attribute.
+		var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ;
+
+		// If no "name", try with the "http-equiv" attribute.
+		if ( sName.length == 0 )
+		{
+			if ( oEditor.FCKBrowserInfo.IsIE )
+			{
+				// Get the http-equiv value from the outerHTML.
+				var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
+				if ( oHttpEquivMatch )
+					sName = oHttpEquivMatch[1] ;
+			}
+			else
+				sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ;
+		}
+
+		if ( sName.length > 0 )
+			targetObject[ sName.toLowerCase() ] = metaCollection[i] ;
+	}
+}
+
+//#### END
+
+// Set a META tag in the document.
+function SetMetadata( name, content, isHttp )
+{
+	if ( content.length == 0 )
+	{
+		RemoveMetadata( name ) ;
+		return ;
+	}
+
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( !oMeta )
+	{
+		oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
+
+		if ( isHttp )
+			SetAttribute( oMeta, 'http-equiv', name ) ;
+		else
+		{
+			// On IE, it is not possible to set the "name" attribute of the META tag.
+			// So a temporary attribute is used and it is replaced when getting the
+			// editor's HTML/XHTML value. This is sad, I know :(
+			if ( oEditor.FCKBrowserInfo.IsIE )
+				SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
+			else
+				SetAttribute( oMeta, 'name', name ) ;
+		}
+
+		oMetaTags[ name.toLowerCase() ] = oMeta ;
+	}
+
+	SetAttribute( oMeta, 'content', content ) ;
+//	oMeta.content = content ;
+}
+
+function RemoveMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+	{
+		oMeta.parentNode.removeChild( oMeta ) ;
+		oMetaTags[ name.toLowerCase() ] = null ;
+	}
+}
+
+function GetMetadata( name )
+{
+	var oMeta = oMetaTags[ name.toLowerCase() ] ;
+
+	if ( oMeta && oMeta != null )
+		return oMeta.getAttribute( 'content', 2 ) ;
+	else
+		return '' ;
+}
+
+window.onload = function ()
+{
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
+
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	FillFields() ;
+
+	UpdatePreview() ;
+
+	// Show the "Ok" button.
+	window.parent.SetOkButton( true ) ;
+
+	window.parent.SetAutoSize( true ) ;
+}
+
+function FillFields()
+{
+	// ### General Info
+	GetE('txtPageTitle').value = FCK.EditorDocument.title ;
+
+	GetE('selDirection').value	= GetAttribute( oHTML, 'dir', '' ) ;
+	GetE('txtLang').value		= GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ;	// "xml:lang" takes precedence to "lang".
+
+	// Character Set Encoding.
+//	if ( oEditor.FCKBrowserInfo.IsIE )
+//		var sCharSet = FCK.EditorDocument.charset ;
+//	else
+		var sCharSet = GetMetadata( 'Content-Type' ) ;
+
+	if ( sCharSet != null && sCharSet.length > 0 )
+	{
+//		if ( !oEditor.FCKBrowserInfo.IsIE )
+			sCharSet = sCharSet.match( /[^=]*$/ ) ;
+
+		GetE('selCharSet').value = sCharSet ;
+
+		if ( GetE('selCharSet').selectedIndex == -1 )
+		{
+			GetE('selCharSet').value = '...' ;
+			GetE('txtCustomCharSet').value = sCharSet ;
+
+			CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
+		}
+	}
+
+	// Document Type.
+	if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
+	{
+		GetE('selDocType').value = FCK.DocTypeDeclaration ;
+
+		if ( GetE('selDocType').selectedIndex == -1 )
+		{
+			GetE('selDocType').value = '...' ;
+			GetE('txtDocType').value = FCK.DocTypeDeclaration ;
+
+			CheckOther( GetE('selDocType'), 'txtDocType' ) ;
+		}
+	}
+
+	// Document Type.
+	GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
+
+	// ### Background
+	GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor'		, '' ) ;
+	GetE('txtBackImage').value = GetAttribute( oBody, 'background'	, '' ) ;
+	GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
+
+	// ### Colors
+	GetE('txtColorText').value		= GetAttribute( oBody, 'text'	, '' ) ;
+	GetE('txtColorLink').value		= GetAttribute( oBody, 'link'	, '' ) ;
+	GetE('txtColorVisited').value	= GetAttribute( oBody, 'vLink'	, '' ) ;
+	GetE('txtColorActive').value	= GetAttribute( oBody, 'aLink'	, '' ) ;
+
+	// ### Margins
+	GetE('txtMarginTop').value		= GetAttribute( oBody, 'topMargin'		, '' ) ;
+	GetE('txtMarginLeft').value		= GetAttribute( oBody, 'leftMargin'		, '' ) ;
+	GetE('txtMarginRight').value	= GetAttribute( oBody, 'rightMargin'	, '' ) ;
+	GetE('txtMarginBottom').value	= GetAttribute( oBody, 'bottomMargin'	, '' ) ;
+
+	// ### Meta Data
+	GetE('txtMetaKeywords').value		= GetMetadata( 'keywords' ) ;
+	GetE('txtMetaDescription').value	= GetMetadata( 'description' ) ;
+	GetE('txtMetaAuthor').value			= GetMetadata( 'author' ) ;
+	GetE('txtMetaCopyright').value		= GetMetadata( 'copyright' ) ;
+}
+
+// Called when the "Ok" button is clicked.
+function Ok()
+{
+	// ### General Info
+	FCK.EditorDocument.title = GetE('txtPageTitle').value ;
+
+	var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
+
+	SetAttribute( oHTML, 'dir'		, GetE('selDirection').value ) ;
+	SetAttribute( oHTML, 'lang'		, GetE('txtLang').value ) ;
+	SetAttribute( oHTML, 'xml:lang'	, GetE('txtLang').value ) ;
+
+	// Character Set Enconding.
+	var sCharSet = GetE('selCharSet').value ;
+	if ( sCharSet == '...' )
+		sCharSet = GetE('txtCustomCharSet').value ;
+
+	if ( sCharSet.length > 0 )
+			sCharSet = 'text/html; charset=' + sCharSet ;
+
+//	if ( oEditor.FCKBrowserInfo.IsIE )
+//		FCK.EditorDocument.charset = sCharSet ;
+//	else
+		SetMetadata( 'Content-Type', sCharSet, true ) ;
+
+	// Document Type
+	var sDocType = GetE('selDocType').value ;
+	if ( sDocType == '...' )
+		sDocType = GetE('txtDocType').value ;
+
+	FCK.DocTypeDeclaration = sDocType ;
+
+	// XHTML Declarations.
+	if ( GetE('chkIncXHTMLDecl').checked )
+	{
+		if ( sCharSet.length == 0 )
+			sCharSet = 'utf-8' ;
+
+		FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ;
+
+		SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
+	}
+	else
+	{
+		FCK.XmlDeclaration = null ;
+		oHTML.removeAttribute( 'xmlns', 0 ) ;
+	}
+
+	// ### Background
+	SetAttribute( oBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oBody, 'text'	, GetE('txtColorText').value ) ;
+	SetAttribute( oBody, 'link'	, GetE('txtColorLink').value ) ;
+	SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
+	SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
+
+	// ### Margins
+	SetAttribute( oBody, 'topmargin'	, GetE('txtMarginTop').value ) ;
+	SetAttribute( oBody, 'leftmargin'	, GetE('txtMarginLeft').value ) ;
+	SetAttribute( oBody, 'rightmargin'	, GetE('txtMarginRight').value ) ;
+	SetAttribute( oBody, 'bottommargin'	, GetE('txtMarginBottom').value ) ;
+
+	// ### Meta data
+	SetMetadata( 'keywords'		, GetE('txtMetaKeywords').value ) ;
+	SetMetadata( 'description'	, GetE('txtMetaDescription').value ) ;
+	SetMetadata( 'author'		, GetE('txtMetaAuthor').value ) ;
+	SetMetadata( 'copyright'	, GetE('txtMetaCopyright').value ) ;
+
+	return true ;
+}
+
+var bPreviewIsLoaded = false ;
+var oPreviewWindow ;
+var oPreviewBody ;
+
+// Called by the Preview page when loaded.
+function OnPreviewLoad( previewWindow, previewBody )
+{
+	oPreviewWindow	= previewWindow ;
+	oPreviewBody	= previewBody ;
+
+	bPreviewIsLoaded = true ;
+	UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !bPreviewIsLoaded )
+		return ;
+
+	// ### Background
+	SetAttribute( oPreviewBody, 'bgcolor'		, GetE('txtBackColor').value ) ;
+	SetAttribute( oPreviewBody, 'background'	, GetE('txtBackImage').value ) ;
+	SetAttribute( oPreviewBody, 'bgproperties'	, GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
+
+	// ### Colors
+	SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
+
+	oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
+	oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
+	oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
+}
+
+function CheckOther( combo, txtField )
+{
+	var bNotOther = ( combo.value != '...' ) ;
+
+	GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
+	GetE(txtField).disabled = bNotOther ;
+}
+
+function SetColor( inputId, color )
+{
+	GetE( inputId ).value = color + '' ;
+	UpdatePreview() ;
+}
+
+function SelectBackColor( color )		{ SetColor('txtBackColor', color ) ; }
+function SelectColorText( color )		{ SetColor('txtColorText', color ) ; }
+function SelectColorLink( color )		{ SetColor('txtColorLink', color ) ; }
+function SelectColorVisited( color )	{ SetColor('txtColorVisited', color ) ; }
+function SelectColorActive( color )		{ SetColor('txtColorActive', color ) ; }
+
+function SelectColor( wich )
+{
+	switch ( wich )
+	{
+		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor ) ; return ;
+		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText ) ; return ;
+		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink ) ; return ;
+		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited ) ; return ;
+		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive ) ; return ;
+	}
+}
+
+function BrowseServerBack()
+{
+	OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function SetUrl( url )
+{
+	GetE('txtBackImage').value = url ;
+	UpdatePreview() ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
+		<tr>
+			<td valign="top" style="height: 100%">
+				<div id="divGeneral">
+					<span fcklang="DlgDocPageTitle">Page Title</span><br />
+					<input id="txtPageTitle" style="width: 100%" type="text" />
+					<br />
+					<table cellspacing="0" cellpadding="0" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocLangDir">Language Direction</span><br />
+								<select id="selDirection">
+									<option value="" selected="selected"></option>
+									<option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td>
+								<span fcklang="DlgDocLangCode">Language Code</span><br />
+								<input id="txtLang" type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td style="white-space: nowrap">
+								<span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
+								<select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
+									<option value="" selected="selected"></option>
+									<option value="us-ascii">ASCII</option>
+									<option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
+									<option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
+									<option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
+									<option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
+									<option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
+									<option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
+									<option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
+									<option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
+									<option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
+									<option fcklang="DlgOpOther" value="...">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%">
+								<span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
+								<input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+						<tr>
+							<td colspan="3">
+								&nbsp;</td>
+						</tr>
+						<tr>
+							<td nowrap="nowrap">
+								<span fcklang="DlgDocDocType">Document Type Heading</span><br />
+								<select id="selDocType" onchange="CheckOther( this, 'txtDocType' );">
+									<option value="" selected="selected"></option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;'>HTML
+										4.01 Transitional</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;'>
+										HTML 4.01 Strict</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"&gt;'>
+										HTML 4.01 Frameset</option>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;'>
+										XHTML 1.0 Transitional</option>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;'>
+										XHTML 1.0 Strict</option>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;'>
+										XHTML 1.0 Frameset</option>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;'>
+										XHTML 1.1</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"&gt;'>HTML 3.2</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"&gt;'>HTML 2.0</option>
+									<option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
+								</select>
+							</td>
+							<td>
+							</td>
+							<td width="100%">
+								<span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
+								<input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
+									type="text" />
+							</td>
+						</tr>
+					</table>
+					<br />
+					<input id="chkIncXHTMLDecl" type="checkbox" />
+					<label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
+						Include XHTML Declarations</label>
+				</div>
+				<div id="divBackground" style="display: none">
+					<span fcklang="DlgDocBgColor">Background Color</span><br />
+					<input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" />&nbsp;<input
+						id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
+						fcklang="DlgCellBtnSelect" /><br />
+					<br />
+					<span fcklang="DlgDocBgImage">Background Image URL</span><br />
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
+									onkeyup="UpdatePreview();" /></td>
+							<td id="tdBrowse" nowrap="nowrap">
+								&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
+									value="Browse Server" /></td>
+						</tr>
+					</table>
+					<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
+					<label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
+						Nonscrolling Background</label>
+				</div>
+				<div id="divColors" style="display: none">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td>
+								<span fcklang="DlgDocCText">Text</span><br />
+								<input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCLink">Link</span><br />
+								<input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCVisited">Visited Link</span><br />
+								<input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+								<br />
+								<span fcklang="DlgDocCActive">Active Link</span><br />
+								<input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
+									onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
+							</td>
+							<td valign="middle" align="center">
+								<table cellspacing="2" cellpadding="0" border="0">
+									<tr>
+										<td>
+											<span fcklang="DlgDocMargins">Page Margins</span></td>
+									</tr>
+									<tr>
+										<td style="border: #000000 1px solid; padding: 5px">
+											<table cellpadding="0" cellspacing="0" border="0" dir="ltr">
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaTop">Top</span><br />
+														<input id="txtMarginTop" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="left">
+														<span fcklang="DlgDocMaLeft">Left</span><br />
+														<input id="txtMarginLeft" type="text" size="3" />
+													</td>
+													<td>
+														&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+													<td align="right">
+														<span fcklang="DlgDocMaRight">Right</span><br />
+														<input id="txtMarginRight" type="text" size="3" />
+													</td>
+												</tr>
+												<tr>
+													<td align="center" colspan="3">
+														<span fcklang="DlgDocMaBottom">Bottom</span><br />
+														<input id="txtMarginBottom" type="text" size="3" />
+													</td>
+												</tr>
+											</table>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divMeta" style="display: none">
+					<span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
+					<textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeDescr">Document Description</span><br />
+					<textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
+					<br />
+					<span fcklang="DlgDocMeAuthor">Author</span><br />
+					<input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
+					<br />
+					<span fcklang="DlgDocMeCopy">Copyright</span><br />
+					<input id="txtMetaCopyright" type="text" style="width: 100%" />
+				</div>
+			</td>
+		</tr>
+		<tr id="ePreview" style="display: none">
+			<td>
+				<span fcklang="DlgDocPreview">Preview</span><br />
+				<iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
+					height="100"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_radiobutton.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_radiobutton.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_radiobutton.html	(revision 1610)
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Radio Button dialog window.
+-->
+<html>
+	<head>
+		<title>Radio Button Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_flash.html	(revision 1610)
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Flash Properties dialog window.
+-->
+<html>
+	<head>
+		<title>Flash Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_flash/fck_flash.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo">
+			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
+				<tr>
+					<td>
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><span fckLang="DlgImgURL">URL</span>
+								</td>
+								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
+								</td>
+							</tr>
+							<tr>
+								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<TR>
+					<TD>
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<TR>
+								<TD nowrap>
+									<span fckLang="DlgImgWidth">Width</span><br>
+									<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+								<TD>&nbsp;</TD>
+								<TD>
+									<span fckLang="DlgImgHeight">Height</span><br>
+									<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+							</TR>
+						</table>
+					</TD>
+				</TR>
+				<tr>
+					<td vAlign="top">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">
+									<table cellSpacing="0" cellPadding="0" width="100%">
+										<tr>
+											<td><span fckLang="DlgImgPreview">Preview</span></td>
+										</tr>
+										<tr>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divAdvanced" style="DISPLAY: none">
+			<TABLE cellSpacing="0" cellPadding="0" border="0">
+				<TR>
+					<TD nowrap>
+						<span fckLang="DlgFlashScale">Scale</span><BR>
+						<select id="cmbScale">
+							<option value="" selected></option>
+							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
+							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
+							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
+						</select></TD>
+					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
+					</TD>
+					<td valign="bottom">
+						<table>
+							<tr>
+								<td><input id="chkAutoPlay" type="checkbox" checked></td>
+								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
+								<td><input id="chkLoop" type="checkbox" checked></td>
+								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
+								<td><input id="chkMenu" type="checkbox" checked></td>
+								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
+							</tr>
+						</table>
+					</td>
+				</TR>
+			</TABLE>
+			<br>
+			&nbsp;
+			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
+						<input id="txtAttId" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap width="50%">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br>
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
+					</td>
+				</tr>
+			</table>
+			<span fckLang="DlgGenStyle">Style</span><br>
+			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
+		</div>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_hiddenfield.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_hiddenfield.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_hiddenfield.html	(revision 1610)
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Hidden Field dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Hidden Field Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+var FCK = oEditor.FCK ;
+
+// Gets the document DOM
+var oDOM = FCK.EditorDocument ;
+
+// Get the selected flash embed (if available).
+var oFakeImage = dialog.Selection.GetSelectedElement() ;
+var oActiveEl ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') )
+		oActiveEl = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oActiveEl.value ;
+	}
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ;
+
+	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
+		oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
+
+		oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ;
+		oActiveEl.parentNode.removeChild( oActiveEl ) ;
+	}
+	else
+		oEditor.FCKUndo.SaveUndoStep() ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden" scroll="no">
+	<table height="100%" width="100%">
+		<tr>
+			<td align="center">
+				<table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
+					<tr>
+						<td>
+							<span fcklang="DlgHiddenName">Name</span><br />
+							<input type="text" size="20" id="txtName" style="width: 100%" />
+						</td>
+					</tr>
+					<tr>
+						<td>
+							<span fcklang="DlgHiddenValue">Value</span><br />
+							<input type="text" size="30" id="txtValue" style="width: 100%" />
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_source.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_source.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_source.html	(revision 1610)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Source editor dialog window.
+-->
+<html>
+	<head>
+		<title>Source</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script language="javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
+
+window.onload = function()
+{
+	// EnableXHTML and EnableSourceXHTML has been deprecated
+//	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+	document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oEditor.FCKUndo.SaveUndoStep() ;
+
+	FCK.SetData( document.getElementById('txtSource').value, false ) ;
+
+	return true ;
+}
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<table width="100%" height="100%">
+			<tr>
+				<td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.css	(revision 1610)
@@ -0,0 +1,85 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the CSS file used for interface details in some dialog
+ * windows.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fck_dialog_common.js file (see GetCommonDialogCss).
+ */
+
+.ImagePreviewArea
+{
+	border: #000000 1px solid;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.FlashPreviewArea
+{
+	border: #000000 1px solid;
+	padding: 5px;
+	overflow: auto;
+	width: 100%;
+	height: 170px;
+	background-color: #ffffff;
+}
+
+.BtnReset
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/reset.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: 1px none;
+	font-size: 1px ;
+}
+
+.BtnLocked, .BtnUnlocked
+{
+	float: left;
+	background-position: center center;
+	background-image: url(images/locked.gif);
+	width: 16px;
+	height: 16px;
+	background-repeat: no-repeat;
+	border: none 1px;
+	font-size: 1px ;
+}
+
+.BtnUnlocked
+{
+	background-image: url(images/unlocked.gif);
+}
+
+.BtnOver
+{
+	border: outset 1px;
+	cursor: pointer;
+	cursor: hand;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/fck_dialog_common.js	(revision 1610)
@@ -0,0 +1,347 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Useful functions used by almost all dialog window pages.
+ * Dialogs should link to this file as the very first script on the page.
+ */
+
+// Automatically detect the correct document.domain (#123).
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.parent.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+// Attention: FCKConfig must be available in the page.
+function GetCommonDialogCss( prefix )
+{
+	// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+	return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ;
+}
+
+// Gets a element by its Id. Used for shorter coding.
+function GetE( elementId )
+{
+	return document.getElementById( elementId )  ;
+}
+
+function ShowE( element, isVisible )
+{
+	if ( typeof( element ) == 'string' )
+		element = GetE( element ) ;
+	element.style.display = isVisible ? '' : 'none' ;
+}
+
+function SetAttribute( element, attName, attValue )
+{
+	if ( attValue == null || attValue.length == 0 )
+		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
+	else
+		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
+}
+
+function GetAttribute( element, attName, valueIfNull )
+{
+	var oAtt = element.attributes[attName] ;
+
+	if ( oAtt == null || !oAtt.specified )
+		return valueIfNull ? valueIfNull : '' ;
+
+	var oValue = element.getAttribute( attName, 2 ) ;
+
+	if ( oValue == null )
+		oValue = oAtt.nodeValue ;
+
+	return ( oValue == null ? valueIfNull : oValue ) ;
+}
+
+function SelectField( elementId )
+{
+	var element = GetE( elementId ) ;
+	element.focus() ;
+
+	// element.select may not be available for some fields (like <select>).
+	if ( element.select )
+		element.select() ;
+}
+
+// Functions used by text fields to accept numbers only.
+var IsDigit = ( function()
+	{
+		var KeyIdentifierMap =
+		{
+			End			: 35,
+			Home		: 36,
+			Left		: 37,
+			Right		: 39,
+			'U+00007F'	: 46		// Delete
+		} ;
+
+		return function ( e )
+			{
+				if ( !e )
+					e = event ;
+
+				var iCode = ( e.keyCode || e.charCode ) ;
+
+				if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) )
+						iCode = KeyIdentifierMap[ e.keyIdentifier ] ;
+
+				return (
+						( iCode >= 48 && iCode <= 57 )		// Numbers
+						|| (iCode >= 35 && iCode <= 40)		// Arrows, Home, End
+						|| iCode == 8						// Backspace
+						|| iCode == 46						// Delete
+						|| iCode == 9						// Tab
+				) ;
+			}
+	} )() ;
+
+String.prototype.Trim = function()
+{
+	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
+}
+
+String.prototype.StartsWith = function( value )
+{
+	return ( this.substr( 0, value.length ) == value ) ;
+}
+
+String.prototype.Remove = function( start, length )
+{
+	var s = '' ;
+
+	if ( start > 0 )
+		s = this.substring( 0, start ) ;
+
+	if ( start + length < this.length )
+		s += this.substring( start + length , this.length ) ;
+
+	return s ;
+}
+
+String.prototype.ReplaceAll = function( searchArray, replaceArray )
+{
+	var replaced = this ;
+
+	for ( var i = 0 ; i < searchArray.length ; i++ )
+	{
+		replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
+	}
+
+	return replaced ;
+}
+
+function OpenFileBrowser( url, width, height )
+{
+	// oEditor must be defined.
+
+	var iLeft = ( oEditor.FCKConfig.ScreenWidth  - width ) / 2 ;
+	var iTop  = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
+
+	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
+	sOptions += ",width=" + width ;
+	sOptions += ",height=" + height ;
+	sOptions += ",left=" + iLeft ;
+	sOptions += ",top=" + iTop ;
+
+	window.open( url, 'FCKBrowseWindow', sOptions ) ;
+}
+
+/**
+ Utility function to create/update an element with a name attribute in IE, so it behaves properly when moved around
+ It also allows to change the name or other special attributes in an existing node
+	oEditor : instance of FCKeditor where the element will be created
+	oOriginal : current element being edited or null if it has to be created
+	nodeName : string with the name of the element to create
+	oAttributes : Hash object with the attributes that must be set at creation time in IE
+								Those attributes will be set also after the element has been
+								created for any other browser to avoid redudant code
+*/
+function CreateNamedElement( oEditor, oOriginal, nodeName, oAttributes )
+{
+	var oNewNode ;
+
+	// IE doesn't allow easily to change properties of an existing object,
+	// so remove the old and force the creation of a new one.
+	var oldNode = null ;
+	if ( oOriginal && oEditor.FCKBrowserInfo.IsIE )
+	{
+		// Force the creation only if some of the special attributes have changed:
+		var bChanged = false;
+		for( var attName in oAttributes )
+			bChanged |= ( oOriginal.getAttribute( attName, 2) != oAttributes[attName] ) ;
+
+		if ( bChanged )
+		{
+			oldNode = oOriginal ;
+			oOriginal = null ;
+		}
+	}
+
+	// If the node existed (and it's not IE), then we just have to update its attributes
+	if ( oOriginal )
+	{
+		oNewNode = oOriginal ;
+	}
+	else
+	{
+		// #676, IE doesn't play nice with the name or type attribute
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			var sbHTML = [] ;
+			sbHTML.push( '<' + nodeName ) ;
+			for( var prop in oAttributes )
+			{
+				sbHTML.push( ' ' + prop + '="' + oAttributes[prop] + '"' ) ;
+			}
+			sbHTML.push( '>' ) ;
+			if ( !oEditor.FCKListsLib.EmptyElements[nodeName.toLowerCase()] )
+				sbHTML.push( '</' + nodeName + '>' ) ;
+
+			oNewNode = oEditor.FCK.EditorDocument.createElement( sbHTML.join('') ) ;
+			// Check if we are just changing the properties of an existing node: copy its properties
+			if ( oldNode )
+			{
+				CopyAttributes( oldNode, oNewNode, oAttributes ) ;
+				oEditor.FCKDomTools.MoveChildren( oldNode, oNewNode ) ;
+				oldNode.parentNode.removeChild( oldNode ) ;
+				oldNode = null ;
+
+				if ( oEditor.FCK.Selection.SelectionData )
+				{
+					// Trick to refresh the selection object and avoid error in
+					// fckdialog.html Selection.EnsureSelection
+					var oSel = oEditor.FCK.EditorDocument.selection ;
+					oEditor.FCK.Selection.SelectionData = oSel.createRange() ; // Now oSel.type will be 'None' reflecting the real situation
+				}
+			}
+			oNewNode = oEditor.FCK.InsertElement( oNewNode ) ;
+
+			// FCK.Selection.SelectionData is broken by now since we've
+			// deleted the previously selected element. So we need to reassign it.
+			if ( oEditor.FCK.Selection.SelectionData )
+			{
+				var range = oEditor.FCK.EditorDocument.body.createControlRange() ;
+				range.add( oNewNode ) ;
+				oEditor.FCK.Selection.SelectionData = range ;
+			}
+		}
+		else
+		{
+			oNewNode = oEditor.FCK.InsertElement( nodeName ) ;
+		}
+	}
+
+	// Set the basic attributes
+	for( var attName in oAttributes )
+		oNewNode.setAttribute( attName, oAttributes[attName], 0 ) ;	// 0 : Case Insensitive
+
+	return oNewNode ;
+}
+
+// Copy all the attributes from one node to the other, kinda like a clone
+// But oSkipAttributes is an object with the attributes that must NOT be copied
+function CopyAttributes( oSource, oDest, oSkipAttributes )
+{
+	var aAttributes = oSource.attributes ;
+
+	for ( var n = 0 ; n < aAttributes.length ; n++ )
+	{
+		var oAttribute = aAttributes[n] ;
+
+		if ( oAttribute.specified )
+		{
+			var sAttName = oAttribute.nodeName ;
+			// We can set the type only once, so do it with the proper value, not copying it.
+			if ( sAttName in oSkipAttributes )
+				continue ;
+
+			var sAttValue = oSource.getAttribute( sAttName, 2 ) ;
+			if ( sAttValue == null )
+				sAttValue = oAttribute.nodeValue ;
+
+			oDest.setAttribute( sAttName, sAttValue, 0 ) ;	// 0 : Case Insensitive
+		}
+	}
+	// The style:
+	if ( oSource.style.cssText !== '' )
+		oDest.style.cssText = oSource.style.cssText ;
+}
+
+/**
+* Replaces a tag with another one, keeping its contents:
+* for example TD --> TH, and TH --> TD.
+* input: the original node, and the new tag name
+* http://www.w3.org/TR/DOM-Level-3-Core/core.html#Document3-renameNode
+*/
+function RenameNode( oNode , newTag )
+{
+	// TODO: if the browser natively supports document.renameNode call it.
+	// does any browser currently support it in order to test?
+
+	// Only rename element nodes.
+	if ( oNode.nodeType != 1 )
+		return null ;
+
+	// If it's already correct exit here.
+	if ( oNode.nodeName == newTag )
+		return oNode ;
+
+	var oDoc = oNode.ownerDocument ;
+	// Create the new node
+	var newNode = oDoc.createElement( newTag ) ;
+
+	// Copy all attributes
+	CopyAttributes( oNode, newNode, {} ) ;
+
+	// Move children to the new node
+	FCKDomTools.MoveChildren( oNode, newNode ) ;
+
+	// Finally replace the node and return the new one
+	oNode.parentNode.replaceChild( newNode, oNode ) ;
+
+	return newNode ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/locked.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/locked.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/reset.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/reset.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/unlocked.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/images/unlocked.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/common/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_smiley.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_smiley.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_smiley.html	(revision 1610)
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Smileys (emoticons) dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<style type="text/css">
+		.Hand
+		{
+			cursor: pointer;
+			cursor: hand;
+		}
+	</style>
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	dialog.SetAutoSize( true ) ;
+}
+
+function InsertSmiley( url )
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	var oImg = oEditor.FCK.InsertElement( 'img' ) ;
+	oImg.src = url ;
+	oImg.setAttribute( '_fcksavedurl', url ) ;
+
+	// For long smileys list, it seams that IE continues loading the images in
+	// the background when you quickly select one image. so, let's clear
+	// everything before closing.
+	document.body.innerHTML = '' ;
+
+	dialog.Cancel() ;
+}
+
+function over(td)
+{
+	td.className = 'LightBackground Hand' ;
+}
+
+function out(td)
+{
+	td.className = 'DarkBackground Hand' ;
+}
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
+		<script type="text/javascript">
+
+var FCKConfig = oEditor.FCKConfig ;
+
+var sBasePath	= FCKConfig.SmileyPath ;
+var aImages		= FCKConfig.SmileyImages ;
+var iCols		= FCKConfig.SmileyColumns ;
+var iColWidth	= parseInt( 100 / iCols, 10 ) ;
+
+var i = 0 ;
+while (i < aImages.length)
+{
+	document.write( '<tr>' ) ;
+	for(var j = 0 ; j < iCols ; j++)
+	{
+		if (aImages[i])
+		{
+			var sUrl = sBasePath + aImages[i] ;
+			document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
+			document.write( '<img src="' + sUrl + '" border="0" />' ) ;
+		}
+		else
+			document.write( '<td width="' + iColWidth + '%" class="DarkBackground">&nbsp;' ) ;
+		document.write( '<\/td>' ) ;
+		i++ ;
+	}
+	document.write('<\/tr>') ;
+}
+
+		</script>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link_org.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link_org.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_link_org.html	(revision 1610)
@@ -0,0 +1,295 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Link dialog window.
+-->
+<html>
+	<head>
+		<title>Link Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_link/fck_link.js" type="text/javascript"></script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo" style="DISPLAY: none">
+			<span fckLang="DlgLnkType">Link Type</span><br />
+			<select id="cmbLinkType" onchange="SetLinkType(this.value);">
+				<option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
+				<option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
+				<option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
+			</select>
+			<br />
+			<br />
+			<div id="divLinkTypeUrl">
+				<table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
+					<tr>
+						<td nowrap="nowrap">
+							<span fckLang="DlgLnkProto">Protocol</span><br />
+							<select id="cmbLinkProtocol">
+								<option value="http://" selected="selected">http://</option>
+								<option value="https://">https://</option>
+								<option value="ftp://">ftp://</option>
+								<option value="news://">news://</option>
+								<option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
+							</select>
+						</td>
+						<td nowrap="nowrap">&nbsp;</td>
+						<td nowrap="nowrap" width="100%">
+							<span fckLang="DlgLnkURL">URL</span><br />
+							<input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
+						</td>
+					</tr>
+				</table>
+				<br />
+				<div id="divBrowseServer">
+				<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
+				</div>
+			</div>
+			<div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
+				<div id="divSelAnchor" style="DISPLAY: none">
+					<table cellspacing="0" cellpadding="0" border="0" width="70%">
+						<tr>
+							<td colspan="3">
+								<span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
+							</td>
+						</tr>
+						<tr>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
+								<select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;</td>
+							<td width="50%">
+								<span fckLang="DlgLnkAnchorById">By Element Id</span><br />
+								<select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
+									<option value="" selected="selected"></option>
+								</select>
+							</td>
+						</tr>
+					</table>
+				</div>
+				<div id="divNoAnchor" style="DISPLAY: none">
+					<span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
+				</div>
+			</div>
+			<div id="divLinkTypeEMail" style="DISPLAY: none">
+				<span fckLang="DlgLnkEMail">E-Mail Address</span><br />
+				<input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
+				<input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
+				<span fckLang="DlgLnkEMailBody">Message Body</span><br />
+				<textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
+			</div>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divTarget" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span fckLang="DlgLnkTarget">Target</span><br />
+						<select id="cmbTarget" onchange="SetTarget(this.value);">
+							<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
+							<option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
+							<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</td>
+					<td>&nbsp;</td>
+					<td id="tdTargetFrame" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
+						<input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
+							onchange="OnTargetNameChange();" />
+					</td>
+					<td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
+						<span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
+						<input id="txtPopupName" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<br />
+			<table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
+				border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
+						<table cellspacing="0" cellpadding="0" border="0">
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
+									<input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
+										Bar</label><br />
+									<input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
+										Bar</label><br />
+									<input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
+										Bars</label>
+								</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%">
+									<input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
+										Bar</label><br />
+									<input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
+									<input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
+										Screen (IE)</label><br />
+									<input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
+										(Netscape)</label>
+								</td>
+							</tr>
+							<tr>
+								<td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
+								<td></td>
+								<td valign="top" nowrap="nowrap" width="50%"></td>
+							</tr>
+							<tr>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
+											<td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
+											<td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td valign="top">
+									<table cellspacing="0" cellpadding="0" border="0">
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
+											<td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
+										</tr>
+										<tr>
+											<td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
+											<td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divAttribs" style="DISPLAY: none">
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenId">Id</span><br />
+						<input id="txtAttId" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangDir">Language Direction</span><br />
+									<select id="cmbAttLangDir" style="WIDTH: 100%">
+										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
+										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+									</select>
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
+									<input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenName">Name</span><br />
+						<input id="txtAttName" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1"></td>
+					<td valign="top">
+						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+							<tr>
+								<td width="60%">
+									<span fckLang="DlgGenLangCode">Language Code</span><br />
+									<input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
+								</td>
+								<td width="1%">&nbsp;&nbsp;&nbsp;</td>
+								<td nowrap="nowrap">
+									<span fckLang="DlgGenTabIndex">Tab Index</span><br />
+									<input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">&nbsp;</td>
+					<td width="1"></td>
+					<td valign="top"></td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<span fckLang="DlgGenTitle">Advisory Title</span><br />
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text" />
+					</td>
+					<td width="1">&nbsp;&nbsp;&nbsp;</td>
+					<td valign="top">
+						<span fckLang="DlgGenContType">Advisory Content Type</span><br />
+						<input id="txtAttContentType" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+				<tr>
+					<td valign="top">
+						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text" />
+					</td>
+					<td></td>
+					<td valign="top">
+						<span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
+						<input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td>
+						<span fckLang="DlgGenStyle">Style</span><br />
+						<input id="txtAttStyle" style="WIDTH: 100%" type="text" />
+					</td>
+				</tr>
+			</table>
+		</div>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_listprop.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_listprop.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_listprop.html	(revision 1610)
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Bulleted List dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
+
+var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ;
+var oActiveSel ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( sListType == 'UL' )
+		oActiveSel = GetE('selBulleted') ;
+	else
+	{
+		if ( oActiveEl )
+		{
+			oActiveSel = GetE('selNumbered') ;
+			GetE('eStart').style.display = '' ;
+			GetE('txtStartPosition').value	= GetAttribute( oActiveEl, 'start' ) ;
+		}
+	}
+
+	oActiveSel.style.display = '' ;
+
+	if ( oActiveEl )
+	{
+		if ( oActiveEl.getAttribute('type') )
+			oActiveSel.value = oActiveEl.getAttribute('type') ;
+	}
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+
+	SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
+}
+
+function Ok()
+{
+	if ( oActiveEl ){
+		SetAttribute( oActiveEl, 'type'	, oActiveSel.value ) ;
+		if(oActiveEl.tagName == 'OL')
+			SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<table width="100%" style="height: 100%">
+		<tr>
+			<td style="text-align:center">
+				<table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
+					<tr>
+						<td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstStart">Start</span><br />
+							<input type="text" id="txtStartPosition" size="5" />
+						</td>
+						<td style="padding-right: 5px; padding-left: 5px">
+							<span fcklang="DlgLstType">List Type</span><br />
+							<select id="selBulleted" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
+								<option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
+								<option value="square" fcklang="DlgLstTypeSquare">Square</option>
+							</select>
+							<select id="selNumbered" style="display: none">
+								<option value="" selected="selected"></option>
+								<option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
+								<option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
+								<option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
+								<option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
+								<option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
+							</select>
+							&nbsp;
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/fck_select.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/fck_select.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/fck_select.js	(revision 1610)
@@ -0,0 +1,194 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts for the fck_select.html page.
+ */
+
+function Select( combo )
+{
+	var iIndex = combo.selectedIndex ;
+
+	oListText.selectedIndex		= iIndex ;
+	oListValue.selectedIndex	= iIndex ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oTxtText.value	= oListText.value ;
+	oTxtValue.value	= oListValue.value ;
+}
+
+function Add()
+{
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
+	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
+
+	oListText.selectedIndex = oListText.options.length - 1 ;
+	oListValue.selectedIndex = oListValue.options.length - 1 ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Modify()
+{
+	var iIndex = oListText.selectedIndex ;
+
+	if ( iIndex < 0 ) return ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
+	oListText.options[ iIndex ].value		= oTxtText.value ;
+
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
+	oListValue.options[ iIndex ].value		= oTxtValue.value ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Move( steps )
+{
+	ChangeOptionPosition( oListText, steps ) ;
+	ChangeOptionPosition( oListValue, steps ) ;
+}
+
+function Delete()
+{
+	RemoveSelectedOptions( oListText ) ;
+	RemoveSelectedOptions( oListValue ) ;
+}
+
+function SetSelectedValue()
+{
+	var iIndex = oListValue.selectedIndex ;
+	if ( iIndex < 0 ) return ;
+
+	var oTxtValue = document.getElementById( "txtSelValue" ) ;
+
+	oTxtValue.value = oListValue.options[ iIndex ].value ;
+}
+
+// Moves the selected option by a number of steps (also negative)
+function ChangeOptionPosition( combo, steps )
+{
+	var iActualIndex = combo.selectedIndex ;
+
+	if ( iActualIndex < 0 )
+		return ;
+
+	var iFinalIndex = iActualIndex + steps ;
+
+	if ( iFinalIndex < 0 )
+		iFinalIndex = 0 ;
+
+	if ( iFinalIndex > ( combo.options.length - 1 ) )
+		iFinalIndex = combo.options.length - 1 ;
+
+	if ( iActualIndex == iFinalIndex )
+		return ;
+
+	var oOption = combo.options[ iActualIndex ] ;
+	var sText	= HTMLDecode( oOption.innerHTML ) ;
+	var sValue	= oOption.value ;
+
+	combo.remove( iActualIndex ) ;
+
+	oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
+
+	oOption.selected = true ;
+}
+
+// Remove all selected options from a SELECT object
+function RemoveSelectedOptions(combo)
+{
+	// Save the selected index
+	var iSelectedIndex = combo.selectedIndex ;
+
+	var oOptions = combo.options ;
+
+	// Remove all selected options
+	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
+	{
+		if (oOptions[i].selected) combo.remove(i) ;
+	}
+
+	// Reset the selection based on the original selected index
+	if ( combo.options.length > 0 )
+	{
+		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
+		combo.selectedIndex = iSelectedIndex ;
+	}
+}
+
+// Add a new option to a SELECT object (combo or list)
+function AddComboOption( combo, optionText, optionValue, documentObject, index )
+{
+	var oOption ;
+
+	if ( documentObject )
+		oOption = documentObject.createElement("OPTION") ;
+	else
+		oOption = document.createElement("OPTION") ;
+
+	if ( index != null )
+		combo.options.add( oOption, index ) ;
+	else
+		combo.options.add( oOption ) ;
+
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
+	oOption.value     = optionValue ;
+
+	return oOption ;
+}
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_select/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textarea.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textarea.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_textarea.html	(revision 1610)
@@ -0,0 +1,94 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Text Area dialog window.
+-->
+<html>
+	<head>
+		<title>Text Area Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtCols').value		= GetAttribute( oActiveEl, 'cols' ) ;
+		GetE('txtRows').value		= GetAttribute( oActiveEl, 'rows' ) ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ;
+
+	SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
+	SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="overflow: hidden">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgTextareaName">Name</span><br>
+								<input type="text" id="txtName" style="WIDTH: 100%">
+								<span fckLang="DlgTextareaCols">Collumns</span><br>
+								<input id="txtCols" type="text" size="5">
+								<br>
+								<span fckLang="DlgTextareaRows">Rows</span><br>
+								<input id="txtRows" type="text" size="5">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 4 2010-11-22 23:55:43Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/scayt_dialog.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/scayt_dialog.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_scayt/scayt_dialog.css	(revision 1610)
@@ -0,0 +1,169 @@
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.midtext
+{
+	padding:0px;
+	margin:10px;
+}
+
+.midtext p
+{
+	padding:0px;
+	margin:10px;
+}
+
+.Button
+{
+	border: #737357 1px solid;
+	color: #3b3b1f;
+	background-color: #c7c78f;
+}
+
+.PopupTabArea , .button
+{
+	color: #737357;
+	background-color: #e3e3c7;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+.PopupTabEmptyArea
+{
+	padding-left: 10px;
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #d5d59d 1px solid;
+	border-top: #d5d59d 1px solid;
+	border-left: #d5d59d 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #737357;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #d5d59d 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight: bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f1f1e3;
+}
+
+ul {
+    padding:0;
+    margin:0px 0px 12px 0px;
+    list-style-type:none;
+}
+ul.tabs {
+    height:20px;
+    margin:10px 0px;
+}
+ul.tabs li {
+    float: left;
+	display:none;
+}
+div.tab_container {
+    /*display:none;*/
+    padding: 0px 5px ;
+}
+.lcol {
+    float:left;
+    width:47%;
+    margin-left:5px;
+}
+.rcol {
+    float:right;
+    width:47%;
+    margin-right:5px;
+}
+div.tabs-container{
+	height:220px;
+	overflow-x:hidden;
+	overflow-y:auto;
+}
+
+div.tabs-container h3{
+    margin:5px 15px 7px 15px;
+    background-color:transparent;
+    font-size: 14px ;
+}
+
+.li {
+    border: 1px solid transparent;
+}
+
+#dic_message{
+	height: 24px;
+}
+#dic_message .error{
+	color: red ;
+}
+#dic_message .success{
+	color: blue ;
+}
+
+.dic_buttons {
+	margin-top: 5px;
+	padding-left:10px;
+}
+.dic_buttons a {
+	display: none;
+}
+a.button {
+	border: #d5d59d 1px solid;
+	padding: 2px 4px;
+	margin-right: 4px;
+	text-decoration: none;
+}
+
+a.button:hover,
+a.button:active,
+a.button:visited{
+	padding: 2px 4px;
+	margin-right: 4px;
+	text-decoration: none;
+}
+a.button:hover {
+	border: #d5d59d 1px solid;
+	color: #e3e3c7;
+	background-color: #737357;
+}
+
+#scayt_options li {
+	display: none;
+}
+
+#dic_info {
+	margin:10px;
+}
+#dic_tab {
+	display:none;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_div.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_div.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_div.html	(revision 1610)
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Form dialog window.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
+var dialog	= window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var FCK = oEditor.FCK ;
+var FCKLang = oEditor.FCKLang ;
+var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
+var FCKStyles = oEditor.FCKStyles ;
+var FCKElementPath = oEditor.FCKElementPath ;
+var FCKDomRange = oEditor.FCKDomRange ;
+var FCKDomTools = oEditor.FCKDomTools ;
+var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;
+var FCKListsLib = oEditor.FCKListsLib ;
+var AlwaysCreate = dialog.Args().CustomValue ;
+
+String.prototype.IEquals = function()
+{
+	var thisUpper = this.toUpperCase() ;
+
+	var aArgs = arguments ;
+
+	// The arguments could also be a single array.
+	if ( aArgs.length == 1 && aArgs[0].pop )
+		aArgs = aArgs[0] ;
+
+	for ( var i = 0 ; i < aArgs.length ; i++ )
+	{
+		if ( thisUpper == aArgs[i].toUpperCase() )
+			return true ;
+	}
+	return false ;
+}
+
+var CurrentContainers = [] ;
+if ( !AlwaysCreate )
+{
+	dialog.Selection.EnsureSelection() ;
+	CurrentContainers = FCKDomTools.GetSelectedDivContainers() ;
+}
+
+// Add some tabs
+dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab );
+dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ;
+
+function AddStyleOption( styleName )
+{
+	var el = GetE( 'selStyle' ) ;
+	var opt = document.createElement( 'option' ) ;
+	opt.text = opt.value = styleName ;
+
+	if ( FCKBrowserInfo.IsIE )
+		el.add( opt ) ;
+	else
+		el.add( opt, null ) ;
+}
+
+function OnDialogTabChange( tabCode )
+{
+	ShowE( 'divGeneral', tabCode == 'General' ) ;
+	ShowE( 'divAdvanced', tabCode == 'Advanced' ) ;
+	dialog.SetAutoSize( true ) ;
+}
+
+function GetNearestAncestorDirection( node )
+{
+	var dir = 'ltr' ;	// HTML default.
+	while ( ( node = node.parentNode ) )
+	{
+		if ( node.dir )
+			dir = node.dir ;
+	}
+	return dir ;
+}
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+
+	// Popuplate the style menu
+	var styles = FCKStyles.GetStyles() ;
+	var selectableStyles = {} ;
+	for ( var i in styles )
+	{
+		if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' )
+			selectableStyles[i] = styles[i] ;
+	}
+	if ( CurrentContainers.length <= 1 )
+	{
+		var target = CurrentContainers[0] ;
+		var match = null ;
+		for ( var i in selectableStyles )
+		{
+			if ( target && styles[i].CheckElementRemovable( target, true ) )
+				match = i ;
+		}
+		if ( !match )
+			AddStyleOption( "" ) ;
+		for ( var i in selectableStyles )
+			AddStyleOption( i ) ;
+		if ( match )
+			GetE( 'selStyle' ).value = match ;
+
+		// Set the value for other inputs
+		if ( target )
+		{
+			GetE( 'txtClass' ).value = target.className ;
+			GetE( 'txtId' ).value = target.id ;
+			GetE( 'txtLang' ).value = target.lang ;
+			GetE( 'txtInlineStyle').value = target.style.cssText ;
+			GetE( 'txtTitle' ).value = target.title ;
+			GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ;
+		}
+	}
+	else
+	{
+		GetE( 'txtId' ).disabled = true ;
+		AddStyleOption( "" ) ;
+		for ( var i in selectableStyles )
+			AddStyleOption( i ) ;
+	}
+}
+
+function CreateDiv()
+{
+	var newBlocks = [] ;
+	var range = new FCKDomRange( FCK.EditorWindow ) ;
+	range.MoveToSelection() ;
+
+	var bookmark = range.CreateBookmark() ;
+
+	// Kludge for #1592: if the bookmark nodes are in the beginning of
+	// $tagName, then move them to the nearest block element in the
+	// $tagName.
+	if ( FCKBrowserInfo.IsIE )
+	{
+		var bStart	= range.GetBookmarkNode( bookmark, true ) ;
+		var bEnd	= range.GetBookmarkNode( bookmark, false ) ;
+
+		var cursor ;
+
+		if ( bStart
+				&& bStart.parentNode.nodeName.IEquals( 'div' )
+				&& !bStart.previousSibling )
+		{
+			cursor = bStart ;
+			while ( ( cursor = cursor.nextSibling ) )
+			{
+				if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+					FCKDomTools.MoveNode( bStart, cursor, true ) ;
+			}
+		}
+
+		if ( bEnd
+				&& bEnd.parentNode.nodeName.IEquals( 'div' )
+				&& !bEnd.previousSibling )
+		{
+			cursor = bEnd ;
+			while ( ( cursor = cursor.nextSibling ) )
+			{
+				if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
+				{
+					if ( cursor.firstChild == bStart )
+						FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
+					else
+						FCKDomTools.MoveNode( bEnd, cursor, true ) ;
+				}
+			}
+		}
+	}
+
+	var iterator = new FCKDomRangeIterator( range ) ;
+	var block ;
+
+	var paragraphs = [] ;
+	while ( ( block = iterator.GetNextParagraph() ) )
+		paragraphs.push( block ) ;
+
+	// Make sure all paragraphs have the same parent.
+	var commonParent = paragraphs[0].parentNode ;
+	var tmp = [] ;
+	for ( var i = 0 ; i < paragraphs.length ; i++ )
+	{
+		block = paragraphs[i] ;
+		commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;
+	}
+
+	// The common parent must not be the following tags: table, tbody, tr, ol, ul.
+	while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )
+		commonParent = commonParent.parentNode ;
+
+	// Reconstruct the block list to be processed such that all resulting blocks
+	// satisfy parentNode == commonParent.
+	var lastBlock = null ;
+	while ( paragraphs.length > 0 )
+	{
+		block = paragraphs.shift() ;
+		while ( block.parentNode != commonParent )
+			block = block.parentNode ;
+		if ( block != lastBlock )
+			tmp.push( block ) ;
+		lastBlock = block ;
+	}
+	paragraphs = tmp ;
+
+	// Split the paragraphs into groups depending on their BlockLimit element.
+	var groups = [] ;
+	var lastBlockLimit = null ;
+	for ( var i = 0 ; i < paragraphs.length ; i++ )
+	{
+		block = paragraphs[i] ;
+		var elementPath = new FCKElementPath( block ) ;
+		if ( elementPath.BlockLimit != lastBlockLimit )
+		{
+			groups.push( [] ) ;
+			lastBlockLimit = elementPath.BlockLimit ;
+		}
+		groups[groups.length - 1].push( block ) ;
+	}
+
+	// Create a DIV container for each group.
+	for ( var i = 0 ; i < groups.length ; i++ )
+	{
+		var divNode = FCK.EditorDocument.createElement( 'div' ) ;
+		groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;
+		for ( var j = 0 ; j < groups[i].length ; j++ )
+			FCKDomTools.MoveNode( groups[i][j], divNode ) ;
+		newBlocks.push( divNode ) ;
+	}
+
+	range.MoveToBookmark( bookmark ) ;
+	range.Select() ;
+
+	FCK.Focus() ;
+	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+
+	return newBlocks ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	if ( CurrentContainers.length < 1 )
+		CurrentContainers = CreateDiv();
+
+	var setValue = function( attrName, inputName )
+	{
+		var val = GetE( inputName ).value ;
+		for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+		{
+			if ( val == '' )
+				CurrentContainers[i].removeAttribute( attrName ) ;
+			else
+				CurrentContainers[i].setAttribute( attrName, val ) ;
+		}
+	}
+
+	// Apply modifications to the DIV container according to dialog inputs.
+	if ( CurrentContainers.length == 1 )
+	{
+		setValue( 'class', 'txtClass' ) ;
+		setValue( 'id', 'txtId' ) ;
+	}
+	setValue( 'lang', 'txtLang' ) ;
+	if ( FCKBrowserInfo.IsIE )
+	{
+		for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+			CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;
+	}
+	else
+		setValue( 'style', 'txtInlineStyle' ) ;
+	setValue( 'title', 'txtTitle' ) ;
+	for ( var i = 0 ; i < CurrentContainers.length ; i++ )
+	{
+		var dir = GetE( 'selLangDir' ).value ;
+		var styleName = GetE( 'selStyle' ).value ;
+		if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )
+			CurrentContainers[i].dir = dir ;
+		else
+			CurrentContainers[i].removeAttribute( 'dir' ) ;
+
+		if ( styleName )
+			FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<div id="divGeneral">
+		<table cellspacing="0" cellpadding="0" width="100%" border="0">
+			<colgroup span="2">
+				<col width="49%" />
+				<col width="2%" />
+				<col width="49%" />
+			</colgroup>
+			<tr>
+				<td>
+					<span fcklang="DlgDivStyle">Style</span><br />
+					<select id="selStyle" style="width: 100%;">
+					</select>
+				</td>
+				<td>&nbsp;</td>
+				<td>
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtClass" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" border="0">
+			<colgroup span="2">
+				<col width="49%" />
+				<col width="2%" />
+				<col width="49%" />
+			</colgroup>
+			<tr>
+				<td>
+					<span fcklang="DlgGenId">Id</span><br />
+					<input style="width: 100%" type="text" id="txtId" />
+				</td>
+				<td>&nbsp;</td>
+				<td>
+					<span fcklang="DlgGenLangCode">Language Code</span><br />
+					<input style="width: 100%" type="text" id="txtLang" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgDivInlineStyle">Inline Style</span><br />
+					<input style="width: 100%" type="text" id="txtInlineStyle" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input style="width: 100%" type="text" id="txtTitle" />
+				</td>
+			</tr>
+			<tr>
+				<td>&nbsp;</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgGenLangDir">Language Direction</span><br />
+					<select id="selLangDir">
+						<option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)
+						<option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)
+					</select>
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages.html	(revision 1610)
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Spell Check dialog window.
+-->
+<html>
+	<head>
+		<title>Spell Check</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
+		<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKLang = oEditor.FCKLang ;
+
+window.onload = function()
+{
+	document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
+
+	var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
+	oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ;
+	oSpeller.OnFinished = oSpeller_OnFinished ;
+	oSpeller.openChecker() ;
+}
+
+function OnSpellerControlsLoad( controlsWindow )
+{
+	// Translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
+}
+
+function oSpeller_OnFinished( numberOCorrections )
+{
+	if ( numberOCorrections > 0 )
+	{
+		oEditor.FCKUndo.SaveUndoStep() ;
+		oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ;
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			oEditor.FCKSelection.Collapse( true ) ;
+	}
+	window.parent.Cancel() ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
+		<input type="hidden" id="txtHtml" value="">
+		<iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_checkbox.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_checkbox.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_checkbox.html	(revision 1610)
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Checkbox dialog window.
+-->
+<html>
+	<head>
+		<title>Checkbox Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+var dialog	= window.parent ;
+var oEditor	= dialog.InnerDialogLoaded() ;
+
+// Gets the document DOM
+var oDOM = oEditor.FCK.EditorDocument ;
+
+var oActiveEl = dialog.Selection.GetSelectedElement() ;
+
+window.onload = function()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
+	{
+		GetE('txtName').value		= oActiveEl.name ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
+		GetE('txtSelected').checked	= oActiveEl.checked ;
+	}
+	else
+		oActiveEl = null ;
+
+	dialog.SetOkButton( true ) ;
+	dialog.SetAutoSize( true ) ;
+	SelectField( 'txtName' ) ;
+}
+
+function Ok()
+{
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ;
+
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
+
+	return true ;
+}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<table height="100%" width="100%">
+			<tr>
+				<td align="center">
+					<table border="0" cellpadding="0" cellspacing="0" width="80%">
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxName">Name</span><br>
+								<input type="text" size="20" id="txtName" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td>
+								<span fckLang="DlgCheckboxValue">Value</span><br>
+								<input type="text" size="20" id="txtValue" style="WIDTH: 100%">
+							</td>
+						</tr>
+						<tr>
+							<td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html	(revision 1610)
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Preview shown in the "Document Properties" dialog window.
+-->
+<html>
+	<head>
+		<title>Document Properties - Preview</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script type="text/javascript">
+
+var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
+if ( eBase.length > 0 && eBase[0].href.length > 0 )
+{
+	document.write( '<base href="' + eBase[0].href + '">' ) ;
+}
+
+window.onload = function()
+{
+	if ( typeof( parent.OnPreviewLoad ) == 'function' )
+		parent.OnPreviewLoad( window, document.body ) ;
+}
+
+function SetBaseHRef( baseHref )
+{
+	var eBase = document.createElement( 'BASE' ) ;
+	eBase.href = baseHref ;
+
+	var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
+	eHead.appendChild( eBase ) ;
+}
+
+function SetLinkColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eLink').style.color = color ;
+	else
+		document.getElementById('eLink').style.color = window.document.linkColor ;
+}
+
+function SetVisitedColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eVisited').style.color = color ;
+	else
+		document.getElementById('eVisited').style.color = window.document.vlinkColor ;
+}
+
+function SetActiveColor( color )
+{
+	if ( color && color.length > 0 )
+		document.getElementById('eActive').style.color = color ;
+	else
+		document.getElementById('eActive').style.color = window.document.alinkColor ;
+}
+		</script>
+	</head>
+	<body>
+		<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
+			<tr>
+				<td align="center" valign="middle">
+					Normal Text
+				</td>
+				<td id="eLink" align="center" valign="middle">
+					<u>Link Text</u>
+				</td>
+			</tr>
+			<tr>
+				<td id="eVisited" valign="middle" align="center">
+					<u>Visited Link</u>
+				</td>
+				<td id="eActive" valign="middle" align="center">
+					<u>Active Link</u>
+				</td>
+			</tr>
+		</table>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+		<br>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_docprops/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml50_50.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml50_50.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml33_33_33.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml33_33_33.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml33_66.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml33_66.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml66_33.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml66_33.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml25_75.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml25_75.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml_132_alt2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml_132_alt2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml_13_combinations.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yaml_13_combinations.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_123_321.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_123_321.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_132_231.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_132_231.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_213_312.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/yml_213_312.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template1.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template1.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template2.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template2.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/images/template3.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_template/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php	(revision 1610)
@@ -0,0 +1,199 @@
+<?php
+header('Content-type: text/html; charset=utf-8');
+
+// The following variables values must reflect your installation needs.
+
+$aspell_prog	= '"C:\Program Files\Aspell\bin\aspell.exe"';	// by FredCK (for Windows)
+//$aspell_prog	= 'aspell';										// by FredCK (for Linux)
+
+$lang			= 'en_US';
+$aspell_opts	= "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt";		// by FredCK
+
+$tempfiledir	= "./";
+
+$spellercss		= '../spellerStyle.css';						// by FredCK
+$word_win_src	= '../wordWindow.js';							// by FredCK
+
+$textinputs		= $_POST['textinputs']; # array
+$input_separator = "A";
+
+# set the JavaScript variable to the submitted text.
+# textinputs is an array, each element corresponding to the (url-encoded)
+# value of the text control submitted for spell-checking
+function print_textinputs_var() {
+	global $textinputs;
+	foreach( $textinputs as $key=>$val ) {
+		# $val = str_replace( "'", "%27", $val );
+		echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
+	}
+}
+
+# make declarations for the text input index
+function print_textindex_decl( $text_input_idx ) {
+	echo "words[$text_input_idx] = [];\n";
+	echo "suggs[$text_input_idx] = [];\n";
+}
+
+# set an element of the JavaScript 'words' array to a misspelled word
+function print_words_elem( $word, $index, $text_input_idx ) {
+	echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
+}
+
+
+# set an element of the JavaScript 'suggs' array to a list of suggestions
+function print_suggs_elem( $suggs, $index, $text_input_idx ) {
+	echo "suggs[$text_input_idx][$index] = [";
+	foreach( $suggs as $key=>$val ) {
+		if( $val ) {
+			echo "'" . escape_quote( $val ) . "'";
+			if ( $key+1 < count( $suggs )) {
+				echo ", ";
+			}
+		}
+	}
+	echo "];\n";
+}
+
+# escape single quote
+function escape_quote( $str ) {
+	return preg_replace ( "/'/", "\\'", $str );
+}
+
+
+# handle a server-side error.
+function error_handler( $err ) {
+	echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n";
+}
+
+## get the list of misspelled words. Put the results in the javascript words array
+## for each misspelled word, get suggestions and put in the javascript suggs array
+function print_checker_results() {
+
+	global $aspell_prog;
+	global $aspell_opts;
+	global $tempfiledir;
+	global $textinputs;
+	global $input_separator;
+	$aspell_err = "";
+	# create temp file
+	$tempfile = tempnam( $tempfiledir, 'aspell_data_' );
+
+	# open temp file, add the submitted text.
+	if( $fh = fopen( $tempfile, 'w' )) {
+		for( $i = 0; $i < count( $textinputs ); $i++ ) {
+			$text = urldecode( $textinputs[$i] );
+
+			// Strip all tags for the text. (by FredCK - #339 / #681)
+			$text = preg_replace( "/<[^>]+>/", " ", $text ) ;
+
+			$lines = explode( "\n", $text );
+			fwrite ( $fh, "%\n" ); # exit terse mode
+			fwrite ( $fh, "^$input_separator\n" );
+			fwrite ( $fh, "!\n" ); # enter terse mode
+			foreach( $lines as $key=>$value ) {
+				# use carat on each line to escape possible aspell commands
+				fwrite( $fh, "^$value\n" );
+			}
+		}
+		fclose( $fh );
+
+		# exec aspell command - redirect STDERR to STDOUT
+		$cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
+		if( $aspellret = shell_exec( $cmd )) {
+			$linesout = explode( "\n", $aspellret );
+			$index = 0;
+			$text_input_index = -1;
+			# parse each line of aspell return
+			foreach( $linesout as $key=>$val ) {
+				$chardesc = substr( $val, 0, 1 );
+				# if '&', then not in dictionary but has suggestions
+				# if '#', then not in dictionary and no suggestions
+				# if '*', then it is a delimiter between text inputs
+				# if '@' then version info
+				if( $chardesc == '&' || $chardesc == '#' ) {
+					$line = explode( " ", $val, 5 );
+					print_words_elem( $line[1], $index, $text_input_index );
+					if( isset( $line[4] )) {
+						$suggs = explode( ", ", $line[4] );
+					} else {
+						$suggs = array();
+					}
+					print_suggs_elem( $suggs, $index, $text_input_index );
+					$index++;
+				} elseif( $chardesc == '*' ) {
+					$text_input_index++;
+					print_textindex_decl( $text_input_index );
+					$index = 0;
+				} elseif( $chardesc != '@' && $chardesc != "" ) {
+					# assume this is error output
+					$aspell_err .= $val;
+				}
+			}
+			if( $aspell_err ) {
+				$aspell_err = "Error executing `$cmd`\\n$aspell_err";
+				error_handler( $aspell_err );
+			}
+		} else {
+			error_handler( "System error: Aspell program execution failed (`$cmd`)" );
+		}
+	} else {
+		error_handler( "System error: Could not open file '$tempfile' for writing" );
+	}
+
+	# close temp file, delete file
+	unlink( $tempfile );
+}
+
+
+?>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
+<script language="javascript" src="<?php echo $word_win_src ?>"></script>
+<script language="javascript">
+var suggs = new Array();
+var words = new Array();
+var textinputs = new Array();
+var error;
+<?php
+
+print_textinputs_var();
+
+print_checker_results();
+
+?>
+
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.textInputs = textinputs;
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			alert('This page was loaded outside of a frameset. It might not display properly');
+		}
+	}
+}
+
+
+
+</script>
+
+</head>
+<!-- <body onLoad="init_spell();">		by FredCK -->
+<body onLoad="init_spell();" bgcolor="#ffffff">
+
+<script type="text/javascript">
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js	(revision 1610)
@@ -0,0 +1,461 @@
+﻿////////////////////////////////////////////////////
+// spellChecker.js
+//
+// spellChecker object
+//
+// This file is sourced on web pages that have a textarea object to evaluate
+// for spelling. It includes the implementation for the spellCheckObject.
+//
+////////////////////////////////////////////////////
+
+
+// constructor
+function spellChecker( textObject ) {
+
+	// public properties - configurable
+//	this.popUpUrl = '/speller/spellchecker.html';							// by FredCK
+	this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html';		// by FredCK
+	this.popUpName = 'spellchecker';
+//	this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes";	// by FredCK
+	this.popUpProps = null ;																	// by FredCK
+//	this.spellCheckScript = '/speller/server-scripts/spellchecker.php';		// by FredCK
+	//this.spellCheckScript = '/cgi-bin/spellchecker.pl';
+
+	// values used to keep track of what happened to a word
+	this.replWordFlag = "R";	// single replace
+	this.ignrWordFlag = "I";	// single ignore
+	this.replAllFlag = "RA";	// replace all occurances
+	this.ignrAllFlag = "IA";	// ignore all occurances
+	this.fromReplAll = "~RA";	// an occurance of a "replace all" word
+	this.fromIgnrAll = "~IA";	// an occurance of a "ignore all" word
+	// properties set at run time
+	this.wordFlags = new Array();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	this.spellCheckerWin = null;
+	this.controlWin = null;
+	this.wordWin = null;
+	this.textArea = textObject;	// deprecated
+	this.textInputs = arguments;
+
+	// private methods
+	this._spellcheck = _spellcheck;
+	this._getSuggestions = _getSuggestions;
+	this._setAsIgnored = _setAsIgnored;
+	this._getTotalReplaced = _getTotalReplaced;
+	this._setWordText = _setWordText;
+	this._getFormInputs = _getFormInputs;
+
+	// public methods
+	this.openChecker = openChecker;
+	this.startCheck = startCheck;
+	this.checkTextBoxes = checkTextBoxes;
+	this.checkTextAreas = checkTextAreas;
+	this.spellCheckAll = spellCheckAll;
+	this.ignoreWord = ignoreWord;
+	this.ignoreAll = ignoreAll;
+	this.replaceWord = replaceWord;
+	this.replaceAll = replaceAll;
+	this.terminateSpell = terminateSpell;
+	this.undo = undo;
+
+	// set the current window's "speller" property to the instance of this class.
+	// this object can now be referenced by child windows/frames.
+	window.speller = this;
+}
+
+// call this method to check all text boxes (and only text boxes) in the HTML document
+function checkTextBoxes() {
+	this.textInputs = this._getFormInputs( "^text$" );
+	this.openChecker();
+}
+
+// call this method to check all textareas (and only textareas ) in the HTML document
+function checkTextAreas() {
+	this.textInputs = this._getFormInputs( "^textarea$" );
+	this.openChecker();
+}
+
+// call this method to check all text boxes and textareas in the HTML document
+function spellCheckAll() {
+	this.textInputs = this._getFormInputs( "^text(area)?$" );
+	this.openChecker();
+}
+
+// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
+// object's constructor or to the textInputs property
+function openChecker() {
+	this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
+	if( !this.spellCheckerWin.opener ) {
+		this.spellCheckerWin.opener = window;
+	}
+}
+
+function startCheck( wordWindowObj, controlWindowObj ) {
+
+	// set properties from args
+	this.wordWin = wordWindowObj;
+	this.controlWin = controlWindowObj;
+
+	// reset properties
+	this.wordWin.resetForm();
+	this.controlWin.resetForm();
+	this.currentTextIndex = 0;
+	this.currentWordIndex = 0;
+	// initialize the flags to an array - one element for each text input
+	this.wordFlags = new Array( this.wordWin.textInputs.length );
+	// each element will be an array that keeps track of each word in the text
+	for( var i=0; i<this.wordFlags.length; i++ ) {
+		this.wordFlags[i] = [];
+	}
+
+	// start
+	this._spellcheck();
+
+	return true;
+}
+
+function ignoreWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing.' );
+		return false;
+	}
+	// set as ignored
+	if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
+		this.currentWordIndex++;
+		this._spellcheck();
+	}
+	return true;
+}
+
+function ignoreAll() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	// get the word that is currently being evaluated.
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+
+	// set this word as an "ignore all" word.
+	this._setAsIgnored( ti, wi, this.ignrAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set as "from ignore all" if
+				// 1) do not already have a flag and
+				// 2) have the same value as current word
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setAsIgnored( i, j, this.fromIgnrAll );
+				}
+			}
+		}
+	}
+
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+	return true;
+}
+
+function replaceWord() {
+	var wi = this.currentWordIndex;
+	var ti = this.currentTextIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	if( !this.wordWin.getTextVal( ti, wi )) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	if( !this.controlWin.replacementText ) {
+		return false ;
+	}
+	var txt = this.controlWin.replacementText;
+	if( txt.value ) {
+		var newspell = new String( txt.value );
+		if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
+			this.currentWordIndex++;
+			this._spellcheck();
+		}
+	}
+	return true;
+}
+
+function replaceAll() {
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex;
+	if( !this.wordWin ) {
+		alert( 'Error: Word frame not available.' );
+		return false;
+	}
+	var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
+	if( !s_word_to_repl ) {
+		alert( 'Error: "Not in dictionary" text is missing' );
+		return false;
+	}
+	var txt = this.controlWin.replacementText;
+	if( !txt.value ) return false;
+	var newspell = new String( txt.value );
+
+	// set this word as a "replace all" word.
+	this._setWordText( ti, wi, newspell, this.replAllFlag );
+
+	// loop through all the words after this word
+	for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
+		for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+			if(( i == ti && j > wi ) || i > ti ) {
+				// future word: set word text to s_word_to_repl if
+				// 1) do not already have a flag and
+				// 2) have the same value as s_word_to_repl
+				if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
+				&& ( !this.wordFlags[i][j] )) {
+					this._setWordText( i, j, newspell, this.fromReplAll );
+				}
+			}
+		}
+	}
+
+	// finally, move on
+	this.currentWordIndex++;
+	this._spellcheck();
+	return true;
+}
+
+function terminateSpell() {
+	// called when we have reached the end of the spell checking.
+	var msg = "";		// by FredCK
+	var numrepl = this._getTotalReplaced();
+	if( numrepl == 0 ) {
+		// see if there were no misspellings to begin with
+		if( !this.wordWin ) {
+			msg = "";
+		} else {
+			if( this.wordWin.totalMisspellings() ) {
+//				msg += "No words changed.";			// by FredCK
+				msg += FCKLang.DlgSpellNoChanges ;	// by FredCK
+			} else {
+//				msg += "No misspellings found.";	// by FredCK
+				msg += FCKLang.DlgSpellNoMispell ;	// by FredCK
+			}
+		}
+	} else if( numrepl == 1 ) {
+//		msg += "One word changed.";			// by FredCK
+		msg += FCKLang.DlgSpellOneChange ;	// by FredCK
+	} else {
+//		msg += numrepl + " words changed.";	// by FredCK
+		msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
+	}
+	if( msg ) {
+//		msg += "\n";	// by FredCK
+		alert( msg );
+	}
+
+	if( numrepl > 0 ) {
+		// update the text field(s) on the opener window
+		for( var i = 0; i < this.textInputs.length; i++ ) {
+			// this.textArea.value = this.wordWin.text;
+			if( this.wordWin ) {
+				if( this.wordWin.textInputs[i] ) {
+					this.textInputs[i].value = this.wordWin.textInputs[i];
+				}
+			}
+		}
+	}
+
+	// return back to the calling window
+//	this.spellCheckerWin.close();					// by FredCK
+	if ( typeof( this.OnFinished ) == 'function' )	// by FredCK
+		this.OnFinished(numrepl) ;					// by FredCK
+
+	return true;
+}
+
+function undo() {
+	// skip if this is the first word!
+	var ti = this.currentTextIndex;
+	var wi = this.currentWordIndex;
+
+	if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
+		this.wordWin.removeFocus( ti, wi );
+
+		// go back to the last word index that was acted upon
+		do {
+			// if the current word index is zero then reset the seed
+			if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
+				this.currentTextIndex--;
+				this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
+				if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
+			} else {
+				if( this.currentWordIndex > 0 ) {
+					this.currentWordIndex--;
+				}
+			}
+		} while (
+			this.wordWin.totalWords( this.currentTextIndex ) == 0
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
+			|| this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
+		);
+
+		var text_idx = this.currentTextIndex;
+		var idx = this.currentWordIndex;
+		var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
+
+		// if we got back to the first word then set the Undo button back to disabled
+		if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
+			this.controlWin.disableUndo();
+		}
+
+		var i, j, origSpell ;
+		// examine what happened to this current word.
+		switch( this.wordFlags[text_idx][idx] ) {
+			// replace all: go through this and all the future occurances of the word
+			// and revert them all to the original spelling and clear their flags
+			case this.replAllFlag :
+				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this._setWordText ( i, j, origSpell, undefined );
+							}
+						}
+					}
+				}
+				break;
+
+			// ignore all: go through all the future occurances of the word
+			// and clear their flags
+			case this.ignrAllFlag :
+				for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
+					for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
+						if(( i == text_idx && j >= idx ) || i > text_idx ) {
+							origSpell = this.wordWin.originalSpellings[i][j];
+							if( origSpell == preReplSpell ) {
+								this.wordFlags[i][j] = undefined;
+							}
+						}
+					}
+				}
+				break;
+
+			// replace: revert the word to its original spelling
+			case this.replWordFlag :
+				this._setWordText ( text_idx, idx, preReplSpell, undefined );
+				break;
+		}
+
+		// For all four cases, clear the wordFlag of this word. re-start the process
+		this.wordFlags[text_idx][idx] = undefined;
+		this._spellcheck();
+	}
+}
+
+function _spellcheck() {
+	var ww = this.wordWin;
+
+	// check if this is the last word in the current text element
+	if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
+		this.currentTextIndex++;
+		this.currentWordIndex = 0;
+		// keep going if we're not yet past the last text element
+		if( this.currentTextIndex < this.wordWin.textInputs.length ) {
+			this._spellcheck();
+			return;
+		} else {
+			this.terminateSpell();
+			return;
+		}
+	}
+
+	// if this is after the first one make sure the Undo button is enabled
+	if( this.currentWordIndex > 0 ) {
+		this.controlWin.enableUndo();
+	}
+
+	// skip the current word if it has already been worked on
+	if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
+		// increment the global current word index and move on.
+		this.currentWordIndex++;
+		this._spellcheck();
+	} else {
+		var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
+		if( evalText ) {
+			this.controlWin.evaluatedText.value = evalText;
+			ww.setFocus( this.currentTextIndex, this.currentWordIndex );
+			this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
+		}
+	}
+}
+
+function _getSuggestions( text_num, word_num ) {
+	this.controlWin.clearSuggestions();
+	// add suggestion in list for each suggested word.
+	// get the array of suggested words out of the
+	// three-dimensional array containing all suggestions.
+	var a_suggests = this.wordWin.suggestions[text_num][word_num];
+	if( a_suggests ) {
+		// got an array of suggestions.
+		for( var ii = 0; ii < a_suggests.length; ii++ ) {
+			this.controlWin.addSuggestion( a_suggests[ii] );
+		}
+	}
+	this.controlWin.selectDefaultSuggestion();
+}
+
+function _setAsIgnored( text_num, word_num, flag ) {
+	// set the UI
+	this.wordWin.removeFocus( text_num, word_num );
+	// do the bookkeeping
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getTotalReplaced() {
+	var i_replaced = 0;
+	for( var i = 0; i < this.wordFlags.length; i++ ) {
+		for( var j = 0; j < this.wordFlags[i].length; j++ ) {
+			if(( this.wordFlags[i][j] == this.replWordFlag )
+			|| ( this.wordFlags[i][j] == this.replAllFlag )
+			|| ( this.wordFlags[i][j] == this.fromReplAll )) {
+				i_replaced++;
+			}
+		}
+	}
+	return i_replaced;
+}
+
+function _setWordText( text_num, word_num, newText, flag ) {
+	// set the UI and form inputs
+	this.wordWin.setText( text_num, word_num, newText );
+	// keep track of what happened to this word:
+	this.wordFlags[text_num][word_num] = flag;
+	return true;
+}
+
+function _getFormInputs( inputPattern ) {
+	var inputs = new Array();
+	for( var i = 0; i < document.forms.length; i++ ) {
+		for( var j = 0; j < document.forms[i].elements.length; j++ ) {
+			if( document.forms[i].elements[j].type.match( inputPattern )) {
+				inputs[inputs.length] = document.forms[i].elements[j];
+			}
+		}
+	}
+	return inputs;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js	(revision 1610)
@@ -0,0 +1,87 @@
+﻿////////////////////////////////////////////////////
+// controlWindow object
+////////////////////////////////////////////////////
+function controlWindow( controlForm ) {
+	// private properties
+	this._form = controlForm;
+
+	// public properties
+	this.windowType = "controlWindow";
+//	this.noSuggestionSelection = "- No suggestions -";	// by FredCK
+	this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
+	// set up the properties for elements of the given control form
+	this.suggestionList  = this._form.sugg;
+	this.evaluatedText   = this._form.misword;
+	this.replacementText = this._form.txtsugg;
+	this.undoButton      = this._form.btnUndo;
+
+	// public methods
+	this.addSuggestion = addSuggestion;
+	this.clearSuggestions = clearSuggestions;
+	this.selectDefaultSuggestion = selectDefaultSuggestion;
+	this.resetForm = resetForm;
+	this.setSuggestedText = setSuggestedText;
+	this.enableUndo = enableUndo;
+	this.disableUndo = disableUndo;
+}
+
+function resetForm() {
+	if( this._form ) {
+		this._form.reset();
+	}
+}
+
+function setSuggestedText() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	var str = "";
+	if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
+		str = slct.options[slct.selectedIndex].text;
+	}
+	txt.value = str;
+}
+
+function selectDefaultSuggestion() {
+	var slct = this.suggestionList;
+	var txt = this.replacementText;
+	if( slct.options.length == 0 ) {
+		this.addSuggestion( this.noSuggestionSelection );
+	} else {
+		slct.options[0].selected = true;
+	}
+	this.setSuggestedText();
+}
+
+function addSuggestion( sugg_text ) {
+	var slct = this.suggestionList;
+	if( sugg_text ) {
+		var i = slct.options.length;
+		var newOption = new Option( sugg_text, 'sugg_text'+i );
+		slct.options[i] = newOption;
+	 }
+}
+
+function clearSuggestions() {
+	var slct = this.suggestionList;
+	for( var j = slct.length - 1; j > -1; j-- ) {
+		if( slct.options[j] ) {
+			slct.options[j] = null;
+		}
+	}
+}
+
+function enableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == true ) {
+			this.undoButton.disabled = false;
+		}
+	}
+}
+
+function disableUndo() {
+	if( this.undoButton ) {
+		if( this.undoButton.disabled == false ) {
+			this.undoButton.disabled = true;
+		}
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html	(revision 1610)
@@ -0,0 +1,153 @@
+<html>
+	<head>
+		<link rel="stylesheet" type="text/css" href="spellerStyle.css" />
+		<script type="text/javascript" src="controlWindow.js"></script>
+		<script type="text/javascript">
+var spellerObject;
+var controlWindowObj;
+
+if( parent.opener ) {
+	spellerObject = parent.opener.speller;
+}
+
+function ignore_word() {
+	if( spellerObject ) {
+		spellerObject.ignoreWord();
+	}
+}
+
+function ignore_all() {
+	if( spellerObject ) {
+		spellerObject.ignoreAll();
+	}
+}
+
+function replace_word() {
+	if( spellerObject ) {
+		spellerObject.replaceWord();
+	}
+}
+
+function replace_all() {
+	if( spellerObject ) {
+		spellerObject.replaceAll();
+	}
+}
+
+function end_spell() {
+	if( spellerObject ) {
+		spellerObject.terminateSpell();
+	}
+}
+
+function undo() {
+	if( spellerObject ) {
+		spellerObject.undo();
+	}
+}
+
+function suggText() {
+	if( controlWindowObj ) {
+		controlWindowObj.setSuggestedText();
+	}
+}
+
+var FCKLang = window.parent.parent.FCKLang ;	// by FredCK
+
+function init_spell() {
+	// By FredCK (fckLang attributes have been added to the HTML source of this page)
+	window.parent.parent.OnSpellerControlsLoad( this ) ;
+
+	var controlForm = document.spellcheck;
+
+	// create a new controlWindow object
+ 	controlWindowObj = new controlWindow( controlForm );
+
+	// call the init_spell() function in the parent frameset
+	if( parent.frames.length ) {
+		parent.init_spell( controlWindowObj );
+	} else {
+		alert( 'This page was loaded outside of a frameset. It might not display properly' );
+	}
+}
+
+</script>
+	</head>
+	<body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no">	<!-- by FredCK -->
+		<form name="spellcheck">
+			<table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
+				<tr>
+					<td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
+				</tr>
+				<tr>
+					<td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
+				</tr>
+				<tr>
+					<td colspan="3" height="5"></td>
+				</tr>
+				<tr>
+					<td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
+				</tr>
+				<tr valign="top">
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td class="normalLabel">
+									<input class="textDefault" type="text" name="txtsugg" />
+								</td>
+							</tr>
+							<tr>
+								<td>
+									<select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
+										<option></option>
+									</select>
+								</td>
+							</tr>
+						</table>
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td>
+						<table border="0" cellpadding="0" cellspacing="0" border="0">
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
+								</td>
+							</tr>
+							<tr>
+								<td colspan="3" height="5"></td>
+							</tr>
+							<tr>
+								<td>
+									<input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
+										disabled>
+								</td>
+								<td>&nbsp;&nbsp;</td>
+								<td>
+									<!-- by FredCK
+									<input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
+									-->
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html	(revision 1610)
@@ -0,0 +1,71 @@
+
+<script>
+
+var wordWindow = null;
+var controlWindow = null;
+
+function init_spell( spellerWindow ) {
+
+	if( spellerWindow ) {
+		if( spellerWindow.windowType == "wordWindow" ) {
+			wordWindow = spellerWindow;
+		} else if ( spellerWindow.windowType == "controlWindow" ) {
+			controlWindow = spellerWindow;
+		}
+	}
+
+	if( controlWindow && wordWindow ) {
+		// populate the speller object and start it off!
+		var speller = opener.speller;
+		wordWindow.speller = speller;
+		speller.startCheck( wordWindow, controlWindow );
+	}
+}
+
+// encodeForPost
+function encodeForPost( str ) {
+	var s = new String( str );
+	s = encodeURIComponent( s );
+	// additionally encode single quotes to evade any PHP
+	// magic_quotes_gpc setting (it inserts escape characters and
+	// therefore skews the btye positions of misspelled words)
+	return s.replace( /\'/g, '%27' );
+}
+
+// post the text area data to the script that populates the speller
+function postWords() {
+	var bodyDoc = window.frames[0].document;
+	bodyDoc.open();
+	bodyDoc.write('<html>');
+	bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
+	bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
+	if (opener) {
+		var speller = opener.speller;
+		bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
+		bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>');		// by FredCK
+		bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
+		for( var i = 0; i < speller.textInputs.length; i++ ) {
+			bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
+		}
+		bodyDoc.write('<\/form>');
+		bodyDoc.write('<\/body>');
+	} else {
+		bodyDoc.write('<body class="normalText">');
+		bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
+		bodyDoc.write('<\/body>');
+	}
+	bodyDoc.write('<\/html>');
+	bodyDoc.close();
+}
+</script>
+
+<html>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<head>
+<title>Speller Pages</title>
+</head>
+<frameset rows="*,201" onLoad="postWords();">
+<frame src="blank.html">
+<frame src="controls.html">
+</frameset>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html
===================================================================
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css	(revision 1610)
@@ -0,0 +1,49 @@
+.blend {
+	font-family: courier new;
+	font-size: 10pt;
+	border: 0;
+	margin-bottom:-1;
+}
+.normalLabel {
+	font-size:8pt;
+}
+.normalText {
+	font-family:arial, helvetica, sans-serif;
+	font-size:10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.plainText {
+	font-family: courier new, courier, monospace;
+	font-size: 10pt;
+	color:000000;
+	background-color:FFFFFF;
+}
+.controlWindowBody {
+	font-family:arial, helvetica, sans-serif;
+	font-size:8pt;
+	padding: 7px ;		/* by FredCK */
+	margin: 0px ;		/* by FredCK */
+	/* color:000000;				by FredCK */
+	/* background-color:DADADA;		by FredCK */
+}
+.readonlyInput {
+	background-color:DADADA;
+	color:000000;
+	font-size:8pt;
+	width:392px;
+}
+.textDefault {
+	font-size:8pt;
+	width: 200px;
+}
+.buttonDefault {
+	width:90px;
+	height:22px;
+	font-size:8pt;
+}
+.suggSlct {
+	width:200px;
+	margin-top:2;
+	font-size:8pt;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js	(revision 1610)
@@ -0,0 +1,272 @@
+﻿////////////////////////////////////////////////////
+// wordWindow object
+////////////////////////////////////////////////////
+function wordWindow() {
+	// private properties
+	this._forms = [];
+
+	// private methods
+	this._getWordObject = _getWordObject;
+	//this._getSpellerObject = _getSpellerObject;
+	this._wordInputStr = _wordInputStr;
+	this._adjustIndexes = _adjustIndexes;
+	this._isWordChar = _isWordChar;
+	this._lastPos = _lastPos;
+
+	// public properties
+	this.wordChar = /[a-zA-Z]/;
+	this.windowType = "wordWindow";
+	this.originalSpellings = new Array();
+	this.suggestions = new Array();
+	this.checkWordBgColor = "pink";
+	this.normWordBgColor = "white";
+	this.text = "";
+	this.textInputs = new Array();
+	this.indexes = new Array();
+	//this.speller = this._getSpellerObject();
+
+	// public methods
+	this.resetForm = resetForm;
+	this.totalMisspellings = totalMisspellings;
+	this.totalWords = totalWords;
+	this.totalPreviousWords = totalPreviousWords;
+	//this.getTextObjectArray = getTextObjectArray;
+	this.getTextVal = getTextVal;
+	this.setFocus = setFocus;
+	this.removeFocus = removeFocus;
+	this.setText = setText;
+	//this.getTotalWords = getTotalWords;
+	this.writeBody = writeBody;
+	this.printForHtml = printForHtml;
+}
+
+function resetForm() {
+	if( this._forms ) {
+		for( var i = 0; i < this._forms.length; i++ ) {
+			this._forms[i].reset();
+		}
+	}
+	return true;
+}
+
+function totalMisspellings() {
+	var total_words = 0;
+	for( var i = 0; i < this.textInputs.length; i++ ) {
+		total_words += this.totalWords( i );
+	}
+	return total_words;
+}
+
+function totalWords( textIndex ) {
+	return this.originalSpellings[textIndex].length;
+}
+
+function totalPreviousWords( textIndex, wordIndex ) {
+	var total_words = 0;
+	for( var i = 0; i <= textIndex; i++ ) {
+		for( var j = 0; j < this.totalWords( i ); j++ ) {
+			if( i == textIndex && j == wordIndex ) {
+				break;
+			} else {
+				total_words++;
+			}
+		}
+	}
+	return total_words;
+}
+
+//function getTextObjectArray() {
+//	return this._form.elements;
+//}
+
+function getTextVal( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		return word.value;
+	}
+}
+
+function setFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.focus();
+			word.style.backgroundColor = this.checkWordBgColor;
+		}
+	}
+}
+
+function removeFocus( textIndex, wordIndex ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	if( word ) {
+		if( word.type == "text" ) {
+			word.blur();
+			word.style.backgroundColor = this.normWordBgColor;
+		}
+	}
+}
+
+function setText( textIndex, wordIndex, newText ) {
+	var word = this._getWordObject( textIndex, wordIndex );
+	var beginStr;
+	var endStr;
+	if( word ) {
+		var pos = this.indexes[textIndex][wordIndex];
+		var oldText = word.value;
+		// update the text given the index of the string
+		beginStr = this.textInputs[textIndex].substring( 0, pos );
+		endStr = this.textInputs[textIndex].substring(
+			pos + oldText.length,
+			this.textInputs[textIndex].length
+		);
+		this.textInputs[textIndex] = beginStr + newText + endStr;
+
+		// adjust the indexes on the stack given the differences in
+		// length between the new word and old word.
+		var lengthDiff = newText.length - oldText.length;
+		this._adjustIndexes( textIndex, wordIndex, lengthDiff );
+
+		word.size = newText.length;
+		word.value = newText;
+		this.removeFocus( textIndex, wordIndex );
+	}
+}
+
+
+function writeBody() {
+	var d = window.document;
+	var is_html = false;
+
+	d.open();
+
+	// iterate through each text input.
+	for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
+		var end_idx = 0;
+		var begin_idx = 0;
+		d.writeln( '<form name="textInput'+txtid+'">' );
+		var wordtxt = this.textInputs[txtid];
+		this.indexes[txtid] = [];
+
+		if( wordtxt ) {
+			var orig = this.originalSpellings[txtid];
+			if( !orig ) break;
+
+			//!!! plain text, or HTML mode?
+			d.writeln( '<div class="plainText">' );
+			// iterate through each occurrence of a misspelled word.
+			for( var i = 0; i < orig.length; i++ ) {
+				// find the position of the current misspelled word,
+				// starting at the last misspelled word.
+				// and keep looking if it's a substring of another word
+				do {
+					begin_idx = wordtxt.indexOf( orig[i], end_idx );
+					end_idx = begin_idx + orig[i].length;
+					// word not found? messed up!
+					if( begin_idx == -1 ) break;
+					// look at the characters immediately before and after
+					// the word. If they are word characters we'll keep looking.
+					var before_char = wordtxt.charAt( begin_idx - 1 );
+					var after_char = wordtxt.charAt( end_idx );
+				} while (
+					this._isWordChar( before_char )
+					|| this._isWordChar( after_char )
+				);
+
+				// keep track of its position in the original text.
+				this.indexes[txtid][i] = begin_idx;
+
+				// write out the characters before the current misspelled word
+				for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
+					// !!! html mode? make it html compatible
+					d.write( this.printForHtml( wordtxt.charAt( j )));
+				}
+
+				// write out the misspelled word.
+				d.write( this._wordInputStr( orig[i] ));
+
+				// if it's the last word, write out the rest of the text
+				if( i == orig.length-1 ){
+					d.write( printForHtml( wordtxt.substr( end_idx )));
+				}
+			}
+
+			d.writeln( '</div>' );
+
+		}
+		d.writeln( '</form>' );
+	}
+	//for ( var j = 0; j < d.forms.length; j++ ) {
+	//	alert( d.forms[j].name );
+	//	for( var k = 0; k < d.forms[j].elements.length; k++ ) {
+	//		alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
+	//	}
+	//}
+
+	// set the _forms property
+	this._forms = d.forms;
+	d.close();
+}
+
+// return the character index in the full text after the last word we evaluated
+function _lastPos( txtid, idx ) {
+	if( idx > 0 )
+		return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
+	else
+		return 0;
+}
+
+function printForHtml( n ) {
+	return n ;		// by FredCK
+/*
+	var htmlstr = n;
+	if( htmlstr.length == 1 ) {
+		// do simple case statement if it's just one character
+		switch ( n ) {
+			case "\n":
+				htmlstr = '<br/>';
+				break;
+			case "<":
+				htmlstr = '&lt;';
+				break;
+			case ">":
+				htmlstr = '&gt;';
+				break;
+		}
+		return htmlstr;
+	} else {
+		htmlstr = htmlstr.replace( /</g, '&lt' );
+		htmlstr = htmlstr.replace( />/g, '&gt' );
+		htmlstr = htmlstr.replace( /\n/g, '<br/>' );
+		return htmlstr;
+	}
+*/
+}
+
+function _isWordChar( letter ) {
+	if( letter.search( this.wordChar ) == -1 ) {
+		return false;
+	} else {
+		return true;
+	}
+}
+
+function _getWordObject( textIndex, wordIndex ) {
+	if( this._forms[textIndex] ) {
+		if( this._forms[textIndex].elements[wordIndex] ) {
+			return this._forms[textIndex].elements[wordIndex];
+		}
+	}
+	return null;
+}
+
+function _wordInputStr( word ) {
+	var str = '<input readonly ';
+	str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
+	return str;
+}
+
+function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
+	for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
+		this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dialog/fck_spellerpages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.original.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.original.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.original.html	(revision 1610)
@@ -0,0 +1,425 @@
+﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Main page that holds the editor.
+-->
+<html>
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow">
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<!-- @Packager.RemoveLine
+	<meta http-equiv="Cache-Control" content="public">
+	@Packager.RemoveLine -->
+	<script type="text/javascript">
+
+// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
+// without security.fileuri.strict_origin_policy disabled.
+if ( document.location.protocol == 'file:' )
+{
+	try
+	{
+		window.parent.document.domain ;
+	}
+	catch ( e )
+	{
+		window.addEventListener( 'load', function()
+			{
+				document.body.innerHTML = '\
+					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
+						<p>\
+							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
+							the local filesystem.<\/b>\
+						<\/p>\
+						<p>\
+							Please open the <b>about:config<\/b> page and disable the\
+							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
+						<\/p>\
+						<p>\
+							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
+							for more information.\
+						<\/p>\
+					<\/div>' ;
+			}, false ) ;
+	}
+}
+
+// Save a reference to the default domain.
+var FCK_ORIGINAL_DOMAIN ;
+
+// Automatically detect the correct document.domain (#123).
+(function()
+{
+	var d = FCK_ORIGINAL_DOMAIN = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.parent.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+// Save a reference to the detected runtime domain.
+var FCK_RUNTIME_DOMAIN = document.domain ;
+
+var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
+
+/* @Packager.RemoveLine
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+@Packager.RemoveLine */
+// @Packager.Remove.Start
+
+LoadScript( '_source/fckconstants.js' ) ;
+LoadScript( '_source/fckjscoreextensions.js' ) ;
+
+if ( sSuffix == 'ie' )
+	LoadScript( '_source/classes/fckiecleanup.js' ) ;
+
+LoadScript( '_source/internals/fckbrowserinfo.js' ) ;
+LoadScript( '_source/internals/fckurlparams.js' ) ;
+LoadScript( '_source/classes/fckevents.js' ) ;
+LoadScript( '_source/classes/fckdataprocessor.js' ) ;
+LoadScript( '_source/internals/fck.js' ) ;
+LoadScript( '_source/internals/fck_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fckconfig.js' ) ;
+
+LoadScript( '_source/internals/fckdebug_empty.js' ) ;
+LoadScript( '_source/internals/fckdomtools.js' ) ;
+LoadScript( '_source/internals/fcktools.js' ) ;
+LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
+LoadScript( '_source/fckeditorapi.js' ) ;
+LoadScript( '_source/classes/fckimagepreloader.js' ) ;
+LoadScript( '_source/internals/fckregexlib.js' ) ;
+LoadScript( '_source/internals/fcklistslib.js' ) ;
+LoadScript( '_source/internals/fcklanguagemanager.js' ) ;
+LoadScript( '_source/internals/fckxhtmlentities.js' ) ;
+LoadScript( '_source/internals/fckxhtml.js' ) ;
+LoadScript( '_source/internals/fckxhtml_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fckcodeformatter.js' ) ;
+LoadScript( '_source/internals/fckundo.js' ) ;
+LoadScript( '_source/classes/fckeditingarea.js' ) ;
+LoadScript( '_source/classes/fckkeystrokehandler.js' ) ;
+
+LoadScript( 'dtd/fck_xhtml10transitional.js' ) ;
+LoadScript( '_source/classes/fckstyle.js' ) ;
+LoadScript( '_source/internals/fckstyles.js' ) ;
+
+LoadScript( '_source/internals/fcklisthandler.js' ) ;
+LoadScript( '_source/classes/fckelementpath.js' ) ;
+LoadScript( '_source/classes/fckdomrange.js' ) ;
+LoadScript( '_source/classes/fckdocumentfragment_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckw3crange.js' ) ;
+LoadScript( '_source/classes/fckdomrange_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckdomrangeiterator.js' ) ;
+LoadScript( '_source/classes/fckenterkey.js' ) ;
+
+LoadScript( '_source/internals/fckdocumentprocessor.js' ) ;
+LoadScript( '_source/internals/fckselection.js' ) ;
+LoadScript( '_source/internals/fckselection_' + sSuffix + '.js' ) ;
+
+LoadScript( '_source/internals/fcktablehandler.js' ) ;
+LoadScript( '_source/internals/fcktablehandler_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckxml.js' ) ;
+LoadScript( '_source/classes/fckxml_' + sSuffix + '.js' ) ;
+
+LoadScript( '_source/commandclasses/fcknamedcommand.js' ) ;
+LoadScript( '_source/commandclasses/fckstylecommand.js' ) ;
+LoadScript( '_source/commandclasses/fck_othercommands.js' ) ;
+LoadScript( '_source/commandclasses/fckshowblocks.js' ) ;
+LoadScript( '_source/commandclasses/fckspellcheckcommand_' + sSuffix + '.js' ) ;
+LoadScript( '_source/commandclasses/fcktextcolorcommand.js' ) ;
+LoadScript( '_source/commandclasses/fckpasteplaintextcommand.js' ) ;
+LoadScript( '_source/commandclasses/fckpastewordcommand.js' ) ;
+LoadScript( '_source/commandclasses/fcktablecommand.js' ) ;
+LoadScript( '_source/commandclasses/fckfitwindow.js' ) ;
+LoadScript( '_source/commandclasses/fcklistcommands.js' ) ;
+LoadScript( '_source/commandclasses/fckjustifycommands.js' ) ;
+LoadScript( '_source/commandclasses/fckindentcommands.js' ) ;
+LoadScript( '_source/commandclasses/fckblockquotecommand.js' ) ;
+LoadScript( '_source/commandclasses/fckcorestylecommand.js' ) ;
+LoadScript( '_source/commandclasses/fckremoveformatcommand.js' ) ;
+LoadScript( '_source/internals/fckcommands.js' ) ;
+
+LoadScript( '_source/classes/fckpanel.js' ) ;
+LoadScript( '_source/classes/fckicon.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbuttonui.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbutton.js' ) ;
+LoadScript( '_source/classes/fckspecialcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarspecialcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarstylecombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontformatcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
+LoadScript( '_source/internals/fckscayt.js' ) ;
+LoadScript( '_source/internals/fcktoolbaritems.js' ) ;
+LoadScript( '_source/classes/fcktoolbar.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbreak_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fcktoolbarset.js' ) ;
+LoadScript( '_source/internals/fckdialog.js' ) ;
+LoadScript( '_source/classes/fckmenuitem.js' ) ;
+LoadScript( '_source/classes/fckmenublock.js' ) ;
+LoadScript( '_source/classes/fckmenublockpanel.js' ) ;
+LoadScript( '_source/classes/fckcontextmenu.js' ) ;
+LoadScript( '_source/internals/fck_contextmenu.js' ) ;
+LoadScript( '_source/classes/fckhtmliterator.js' ) ;
+LoadScript( '_source/classes/fckplugin.js' ) ;
+LoadScript( '_source/internals/fckplugins.js' ) ;
+
+// @Packager.Remove.End
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Adobe AIR compatibility file.
+if ( FCKBrowserInfo.IsAIR )
+	LoadScript( 'js/fckadobeair.js' ) ;
+
+if ( FCKBrowserInfo.IsIE )
+{
+	// Remove IE mouse flickering.
+	try
+	{
+		document.execCommand( 'BackgroundImageCache', false, true ) ;
+	}
+	catch (e)
+	{
+		// We have been reported about loading problems caused by the above
+		// line. For safety, let's just ignore errors.
+	}
+
+	// Create the default cleanup object used by the editor.
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The first function to be called on selection change must the the styles
+// change checker, because the result of its processing may be used by another
+// functions listening to the same event.
+FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the full debug script.
+if ( FCKConfig.Debug )
+	LoadScript( '_source/internals/fckdebug.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+var FCK_InternalCSS			= FCKConfig.BasePath + 'css/fck_internal.css' ;					// @Packager.RemoveLine
+var FCK_ShowTableBordersCSS	= FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;	// @Packager.RemoveLine
+/* @Packager.RemoveLine
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
+var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+@Packager.RemoveLine */
+
+// Popup the debug window if debug mode is set to true. It guarantees that the
+// first debug message will not be lost.
+if ( FCKConfig.Debug )
+	FCKDebug._GetWindow() ;
+
+// Load the active skin CSS.
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		if ( !FCKConfig.PreventSubmitHandler )
+			_AttachFormSubmitToAPI() ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;
+	}
+}
+
+// Gecko and Webkit browsers don't calculate well the IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko || ( FCKBrowserInfo.IsSafari && !FCKBrowserInfo.IsSafari3 ) )
+{
+	window.onresize = function( e )
+	{
+		// Running in Firefox's chrome makes the window receive the event including subframes.
+		// we care only about this window. Ticket #1642.
+		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
+		if ( e && e.originalTarget && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement = oCell.firstChild ;
+		if ( eInnerElement )
+		{
+			eInnerElement.style.height = '0px' ;
+			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
+		}
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr>
+			<td id="xEditingArea" valign="top" style="height: 100%"></td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fo.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fo.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fo.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Faroese language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Fjal amboðsbjálkan",
+ToolbarExpand		: "Vís amboðsbjálkan",
+
+// Toolbar Items and Context Menu
+Save				: "Goym",
+NewPage				: "Nýggj síða",
+Preview				: "Frumsýning",
+Cut					: "Kvett",
+Copy				: "Avrita",
+Paste				: "Innrita",
+PasteText			: "Innrita reinan tekst",
+PasteWord			: "Innrita frá Word",
+Print				: "Prenta",
+SelectAll			: "Markera alt",
+RemoveFormat		: "Strika sniðgeving",
+InsertLinkLbl		: "Tilknýti",
+InsertLink			: "Ger/broyt tilknýti",
+RemoveLink			: "Strika tilknýti",
+VisitLink			: "Opna tilknýti",
+Anchor				: "Ger/broyt marknastein",
+AnchorDelete		: "Strika marknastein",
+InsertImageLbl		: "Myndir",
+InsertImage			: "Set inn/broyt mynd",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Set inn/broyt Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Set inn/broyt tabell",
+InsertLineLbl		: "Linja",
+InsertLine			: "Ger vatnrætta linju",
+InsertSpecialCharLbl: "Sertekn",
+InsertSpecialChar	: "Set inn sertekn",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Set inn Smiley",
+About				: "Um FCKeditor",
+Bold				: "Feit skrift",
+Italic				: "Skráskrift",
+Underline			: "Undirstrikað",
+StrikeThrough		: "Yvirstrikað",
+Subscript			: "Lækkað skrift",
+Superscript			: "Hækkað skrift",
+LeftJustify			: "Vinstrasett",
+CenterJustify		: "Miðsett",
+RightJustify		: "Høgrasett",
+BlockJustify		: "Javnir tekstkantar",
+DecreaseIndent		: "Minka reglubrotarinntriv",
+IncreaseIndent		: "Økja reglubrotarinntriv",
+Blockquote			: "Blockquote",
+CreateDiv			: "Ger DIV øki",
+EditDiv				: "Broyt DIV øki",
+DeleteDiv			: "Strika DIV øki",
+Undo				: "Angra",
+Redo				: "Vend aftur",
+NumberedListLbl		: "Talmerktur listi",
+NumberedList		: "Ger/strika talmerktan lista",
+BulletedListLbl		: "Punktmerktur listi",
+BulletedList		: "Ger/strika punktmerktan lista",
+ShowTableBorders	: "Vís tabellbordar",
+ShowDetails			: "Vís í smálutum",
+Style				: "Typografi",
+FontFormat			: "Skriftsnið",
+Font				: "Skrift",
+FontSize			: "Skriftstødd",
+TextColor			: "Tekstlitur",
+BGColor				: "Bakgrundslitur",
+Source				: "Kelda",
+Find				: "Leita",
+Replace				: "Yvirskriva",
+SpellCheck			: "Kanna stavseting",
+UniversalKeyboard	: "Knappaborð",
+PageBreakLbl		: "Síðuskift",
+PageBreak			: "Ger síðuskift",
+
+Form			: "Formur",
+Checkbox		: "Flugubein",
+RadioButton		: "Radioknøttur",
+TextField		: "Tekstteigur",
+Textarea		: "Tekstumráði",
+HiddenField		: "Fjaldur teigur",
+Button			: "Knøttur",
+SelectionField	: "Valskrá",
+ImageButton		: "Myndaknøttur",
+
+FitWindow		: "Set tekstviðgera til fulla stødd",
+ShowBlocks		: "Vís blokkar",
+
+// Context Menu
+EditLink			: "Broyt tilknýti",
+CellCM				: "Meski",
+RowCM				: "Rað",
+ColumnCM			: "Kolonna",
+InsertRowAfter		: "Set rað inn aftaná",
+InsertRowBefore		: "Set rað inn áðrenn",
+DeleteRows			: "Strika røðir",
+InsertColumnAfter	: "Set kolonnu inn aftaná",
+InsertColumnBefore	: "Set kolonnu inn áðrenn",
+DeleteColumns		: "Strika kolonnur",
+InsertCellAfter		: "Set meska inn aftaná",
+InsertCellBefore	: "Set meska inn áðrenn",
+DeleteCells			: "Strika meskar",
+MergeCells			: "Flætta meskar",
+MergeRight			: "Flætta meskar til høgru",
+MergeDown			: "Flætta saman",
+HorizontalSplitCell	: "Kloyv meska vatnrætt",
+VerticalSplitCell	: "Kloyv meska loddrætt",
+TableDelete			: "Strika tabell",
+CellProperties		: "Meskueginleikar",
+TableProperties		: "Tabelleginleikar",
+ImageProperties		: "Myndaeginleikar",
+FlashProperties		: "Flash eginleikar",
+
+AnchorProp			: "Eginleikar fyri marknastein",
+ButtonProp			: "Eginleikar fyri knøtt",
+CheckboxProp		: "Eginleikar fyri flugubein",
+HiddenFieldProp		: "Eginleikar fyri fjaldan teig",
+RadioButtonProp		: "Eginleikar fyri radioknøtt",
+ImageButtonProp		: "Eginleikar fyri myndaknøtt",
+TextFieldProp		: "Eginleikar fyri tekstteig",
+SelectionFieldProp	: "Eginleikar fyri valskrá",
+TextareaProp		: "Eginleikar fyri tekstumráði",
+FormProp			: "Eginleikar fyri Form",
+
+FontFormats			: "Vanligt;Sniðgivið;Adressa;Yvirskrift 1;Yvirskrift 2;Yvirskrift 3;Yvirskrift 4;Yvirskrift 5;Yvirskrift 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML verður viðgjørt. Bíða við...",
+Done				: "Liðugt",
+PasteWordConfirm	: "Teksturin, royndur verður at seta inn, tykist at stava frá Word. Vilt tú reinsa tekstin, áðrenn hann verður settur inn?",
+NotCompatiblePaste	: "Hetta er bert tøkt í Internet Explorer 5.5 og nýggjari. Vilt tú seta tekstin inn kortini - óreinsaðan?",
+UnknownToolbarItem	: "Ókendur lutur í amboðsbjálkanum \"%1\"",
+UnknownCommand		: "Ókend kommando \"%1\"",
+NotImplemented		: "Hetta er ikki tøkt í hesi útgávuni",
+UnknownToolbarSet	: "Amboðsbjálkin \"%1\" finst ikki",
+NoActiveX			: "Trygdaruppsetingin í alnótskaganum kann sum er avmarka onkrar hentleikar í tekstviðgeranum. Tú mást loyva møguleikanum \"Run/Kør ActiveX controls and plug-ins\". Tú kanst uppliva feilir og ávaringar um tvørrandi hentleikar.",
+BrowseServerBlocked : "Ambætarakagin kundi ikki opnast. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
+DialogBlocked		: "Tað eyðnaðist ikki at opna samskiftisrútin. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
+VisitLinkBlocked	: "Tað eyðnaðist ikki at opna nýggjan rút. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
+
+// Dialogs
+DlgBtnOK			: "Góðkent",
+DlgBtnCancel		: "Avlýst",
+DlgBtnClose			: "Lat aftur",
+DlgBtnBrowseServer	: "Ambætarakagi",
+DlgAdvancedTag		: "Fjølbroytt",
+DlgOpOther			: "<Annað>",
+DlgInfoTab			: "Upplýsingar",
+DlgAlertUrl			: "Vinarliga veit ein URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikki sett>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Tekstkós",
+DlgGenLangDirLtr	: "Frá vinstru til høgru (LTR)",
+DlgGenLangDirRtl	: "Frá høgru til vinstru (RTL)",
+DlgGenLangCode		: "Málkoda",
+DlgGenAccessKey		: "Snarvegisknappur",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Inntriv indeks",
+DlgGenLongDescr		: "Víðkað URL frágreiðing",
+DlgGenClass			: "Typografi klassar",
+DlgGenTitle			: "Vegleiðandi heiti",
+DlgGenContType		: "Vegleiðandi innihaldsslag",
+DlgGenLinkCharset	: "Atknýtt teknsett",
+DlgGenStyle			: "Typografi",
+
+// Image Dialog
+DlgImgTitle			: "Myndaeginleikar",
+DlgImgInfoTab		: "Myndaupplýsingar",
+DlgImgBtnUpload		: "Send til ambætaran",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Send",
+DlgImgAlt			: "Alternativur tekstur",
+DlgImgWidth			: "Breidd",
+DlgImgHeight		: "Hædd",
+DlgImgLockRatio		: "Læs lutfallið",
+DlgBtnResetSize		: "Upprunastødd",
+DlgImgBorder		: "Bordi",
+DlgImgHSpace		: "Høgri breddi",
+DlgImgVSpace		: "Vinstri breddi",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Vinstra",
+DlgImgAlignAbsBottom: "Abs botnur",
+DlgImgAlignAbsMiddle: "Abs miðja",
+DlgImgAlignBaseline	: "Basislinja",
+DlgImgAlignBottom	: "Botnur",
+DlgImgAlignMiddle	: "Miðja",
+DlgImgAlignRight	: "Høgra",
+DlgImgAlignTextTop	: "Tekst toppur",
+DlgImgAlignTop		: "Ovast",
+DlgImgPreview		: "Frumsýning",
+DlgImgAlertUrl		: "Rita slóðina til myndina",
+DlgImgLinkTab		: "Tilknýti",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash eginleikar",
+DlgFlashChkPlay		: "Avspælingin byrjar sjálv",
+DlgFlashChkLoop		: "Endurspæl",
+DlgFlashChkMenu		: "Ger Flash skrá virkna",
+DlgFlashScale		: "Skalering",
+DlgFlashScaleAll	: "Vís alt",
+DlgFlashScaleNoBorder	: "Eingin bordi",
+DlgFlashScaleFit	: "Neyv skalering",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Tilknýti",
+DlgLnkInfoTab		: "Tilknýtis upplýsingar",
+DlgLnkTargetTab		: "Mál",
+
+DlgLnkType			: "Tilknýtisslag",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Tilknýti til marknastein í tekstinum",
+DlgLnkTypeEMail		: "Teldupostur",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<Annað>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vel ein marknastein",
+DlgLnkAnchorByName	: "Eftir navni á marknasteini",
+DlgLnkAnchorById	: "Eftir element Id",
+DlgLnkNoAnchors		: "(Eingir marknasteinar eru í hesum dokumentið)",
+DlgLnkEMail			: "Teldupost-adressa",
+DlgLnkEMailSubject	: "Evni",
+DlgLnkEMailBody		: "Breyðtekstur",
+DlgLnkUpload		: "Send til ambætaran",
+DlgLnkBtnUpload		: "Send til ambætaran",
+
+DlgLnkTarget		: "Mál",
+DlgLnkTargetFrame	: "<ramma>",
+DlgLnkTargetPopup	: "<popup vindeyga>",
+DlgLnkTargetBlank	: "Nýtt vindeyga (_blank)",
+DlgLnkTargetParent	: "Upphavliga vindeygað (_parent)",
+DlgLnkTargetSelf	: "Sama vindeygað (_self)",
+DlgLnkTargetTop		: "Alt vindeygað (_top)",
+DlgLnkTargetFrameName	: "Vís navn vindeygans",
+DlgLnkPopWinName	: "Popup vindeygans navn",
+DlgLnkPopWinFeat	: "Popup vindeygans víðkaðu eginleikar",
+DlgLnkPopResize		: "Kann broyta stødd",
+DlgLnkPopLocation	: "Adressulinja",
+DlgLnkPopMenu		: "Skrábjálki",
+DlgLnkPopScroll		: "Rullibjálki",
+DlgLnkPopStatus		: "Støðufrágreiðingarbjálki",
+DlgLnkPopToolbar	: "Amboðsbjálki",
+DlgLnkPopFullScrn	: "Fullur skermur (IE)",
+DlgLnkPopDependent	: "Bundið (Netscape)",
+DlgLnkPopWidth		: "Breidd",
+DlgLnkPopHeight		: "Hædd",
+DlgLnkPopLeft		: "Frástøða frá vinstru",
+DlgLnkPopTop		: "Frástøða frá íerva",
+
+DlnLnkMsgNoUrl		: "Vinarliga skriva tilknýti (URL)",
+DlnLnkMsgNoEMail	: "Vinarliga skriva teldupost-adressu",
+DlnLnkMsgNoAnchor	: "Vinarliga vel marknastein",
+DlnLnkMsgInvPopName	: "Popup navnið má byrja við bókstavi og má ikki hava millumrúm",
+
+// Color Dialog
+DlgColorTitle		: "Vel lit",
+DlgColorBtnClear	: "Strika alt",
+DlgColorHighlight	: "Framhevja",
+DlgColorSelected	: "Valt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vel Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Vel sertekn",
+
+// Table Dialog
+DlgTableTitle		: "Eginleikar fyri tabell",
+DlgTableRows		: "Røðir",
+DlgTableColumns		: "Kolonnur",
+DlgTableBorder		: "Bordabreidd",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Einki valt>",
+DlgTableAlignLeft	: "Vinstrasett",
+DlgTableAlignCenter	: "Miðsett",
+DlgTableAlignRight	: "Høgrasett",
+DlgTableWidth		: "Breidd",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Hædd",
+DlgTableCellSpace	: "Fjarstøða millum meskar",
+DlgTableCellPad		: "Meskubreddi",
+DlgTableCaption		: "Tabellfrágreiðing",
+DlgTableSummary		: "Samandráttur",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Mesku eginleikar",
+DlgCellWidth		: "Breidd",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Hædd",
+DlgCellWordWrap		: "Orðkloyving",
+DlgCellWordWrapNotSet	: "<Einki valt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Vatnrøtt justering",
+DlgCellHorAlignNotSet	: "<Einki valt>",
+DlgCellHorAlignLeft	: "Vinstrasett",
+DlgCellHorAlignCenter	: "Miðsett",
+DlgCellHorAlignRight: "Høgrasett",
+DlgCellVerAlign		: "Lodrøtt justering",
+DlgCellVerAlignNotSet	: "<Ikki sett>",
+DlgCellVerAlignTop	: "Ovast",
+DlgCellVerAlignMiddle	: "Miðjan",
+DlgCellVerAlignBottom	: "Niðast",
+DlgCellVerAlignBaseline	: "Basislinja",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Røðir, meskin fevnir um",
+DlgCellCollSpan		: "Kolonnur, meskin fevnir um",
+DlgCellBackColor	: "Bakgrundslitur",
+DlgCellBorderColor	: "Litur á borda",
+DlgCellBtnSelect	: "Vel...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Finn og broyt",
+
+// Find Dialog
+DlgFindTitle		: "Finn",
+DlgFindFindBtn		: "Finn",
+DlgFindNotFoundMsg	: "Leititeksturin varð ikki funnin",
+
+// Replace Dialog
+DlgReplaceTitle			: "Yvirskriva",
+DlgReplaceFindLbl		: "Finn:",
+DlgReplaceReplaceLbl	: "Yvirskriva við:",
+DlgReplaceCaseChk		: "Munur á stórum og smáðum bókstavum",
+DlgReplaceReplaceBtn	: "Yvirskriva",
+DlgReplaceReplAllBtn	: "Yvirskriva alt",
+DlgReplaceWordChk		: "Bert heil orð",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).",
+PasteErrorCopy	: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).",
+
+PasteAsText		: "Innrita som reinan tekst",
+PasteFromWord	: "Innrita fra Word",
+
+DlgPasteMsg2	: "Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.",
+DlgPasteSec		: "Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.",
+DlgPasteIgnoreFont		: "Forfjóna Font definitiónirnar",
+DlgPasteRemoveStyles	: "Strika typografi definitiónir",
+
+// Color Picker
+ColorAutomatic	: "Automatiskt",
+ColorMoreColors	: "Fleiri litir...",
+
+// Document Properties
+DocProps		: "Eginleikar fyri dokument",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Eginleikar fyri marknastein",
+DlgAnchorName		: "Heiti marknasteinsins",
+DlgAnchorErrorName	: "Vinarliga rita marknasteinsins heiti",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Finst ikki í orðabókini",
+DlgSpellChangeTo		: "Broyt til",
+DlgSpellBtnIgnore		: "Forfjóna",
+DlgSpellBtnIgnoreAll	: "Forfjóna alt",
+DlgSpellBtnReplace		: "Yvirskriva",
+DlgSpellBtnReplaceAll	: "Yvirskriva alt",
+DlgSpellBtnUndo			: "Angra",
+DlgSpellNoSuggestions	: "- Einki uppskot -",
+DlgSpellProgress		: "Rættstavarin arbeiðir...",
+DlgSpellNoMispell		: "Rættstavarain liðugur: Eingin feilur funnin",
+DlgSpellNoChanges		: "Rættstavarain liðugur: Einki orð varð broytt",
+DlgSpellOneChange		: "Rættstavarain liðugur: Eitt orð er broytt",
+DlgSpellManyChanges		: "Rættstavarain liðugur: %1 orð broytt",
+
+IeSpellDownload			: "Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?",
+
+// Button Dialog
+DlgButtonText		: "Tekstur",
+DlgButtonType		: "Slag",
+DlgButtonTypeBtn	: "Knøttur",
+DlgButtonTypeSbm	: "Send",
+DlgButtonTypeRst	: "Nullstilla",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Virði",
+DlgCheckboxSelected	: "Valt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Hending",
+DlgFormMethod	: "Háttur",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Virði",
+DlgSelectSize		: "Stødd",
+DlgSelectLines		: "Linjur",
+DlgSelectChkMulti	: "Loyv fleiri valmøguleikum samstundis",
+DlgSelectOpAvail	: "Tøkir møguleikar",
+DlgSelectOpText		: "Tekstur",
+DlgSelectOpValue	: "Virði",
+DlgSelectBtnAdd		: "Legg afturat",
+DlgSelectBtnModify	: "Broyt",
+DlgSelectBtnUp		: "Upp",
+DlgSelectBtnDown	: "Niður",
+DlgSelectBtnSetValue : "Set sum valt virði",
+DlgSelectBtnDelete	: "Strika",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "kolonnur",
+DlgTextareaRows	: "røðir",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Virði",
+DlgTextCharWidth	: "Breidd (sjónlig tekn)",
+DlgTextMaxChars		: "Mest loyvdu tekn",
+DlgTextType			: "Slag",
+DlgTextTypeText		: "Tekstur",
+DlgTextTypePass		: "Loyniorð",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Virði",
+
+// Bulleted List Dialog
+BulletedListProp	: "Eginleikar fyri punktmerktan lista",
+NumberedListProp	: "Eginleikar fyri talmerktan lista",
+DlgLstStart			: "Byrjan",
+DlgLstType			: "Slag",
+DlgLstTypeCircle	: "Sirkul",
+DlgLstTypeDisc		: "Fyltur sirkul",
+DlgLstTypeSquare	: "Fjórhyrningur",
+DlgLstTypeNumbers	: "Talmerkt (1, 2, 3)",
+DlgLstTypeLCase		: "Smáir bókstavir (a, b, c)",
+DlgLstTypeUCase		: "Stórir bókstavir (A, B, C)",
+DlgLstTypeSRoman	: "Smá rómaratøl (i, ii, iii)",
+DlgLstTypeLRoman	: "Stór rómaratøl (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Bakgrund",
+DlgDocColorsTab		: "Litir og breddar",
+DlgDocMetaTab		: "META-upplýsingar",
+
+DlgDocPageTitle		: "Síðuheiti",
+DlgDocLangDir		: "Tekstkós",
+DlgDocLangDirLTR	: "Frá vinstru móti høgru (LTR)",
+DlgDocLangDirRTL	: "Frá høgru móti vinstru (RTL)",
+DlgDocLangCode		: "Málkoda",
+DlgDocCharSet		: "Teknsett koda",
+DlgDocCharSetCE		: "Miðeuropa",
+DlgDocCharSetCT		: "Kinesiskt traditionelt (Big5)",
+DlgDocCharSetCR		: "Cyrilliskt",
+DlgDocCharSetGR		: "Grikst",
+DlgDocCharSetJP		: "Japanskt",
+DlgDocCharSetKR		: "Koreanskt",
+DlgDocCharSetTR		: "Turkiskt",
+DlgDocCharSetUN		: "UNICODE (UTF-8)",
+DlgDocCharSetWE		: "Vestureuropa",
+DlgDocCharSetOther	: "Onnur teknsett koda",
+
+DlgDocDocType		: "Dokumentslag yvirskrift",
+DlgDocDocTypeOther	: "Annað dokumentslag yvirskrift",
+DlgDocIncXHTML		: "Viðfest XHTML deklaratiónir",
+DlgDocBgColor		: "Bakgrundslitur",
+DlgDocBgImage		: "Leið til bakgrundsmynd (URL)",
+DlgDocBgNoScroll	: "Læst bakgrund (rullar ikki)",
+DlgDocCText			: "Tekstur",
+DlgDocCLink			: "Tilknýti",
+DlgDocCVisited		: "Vitjaði tilknýti",
+DlgDocCActive		: "Virkin tilknýti",
+DlgDocMargins		: "Síðubreddar",
+DlgDocMaTop			: "Ovast",
+DlgDocMaLeft		: "Vinstra",
+DlgDocMaRight		: "Høgra",
+DlgDocMaBottom		: "Niðast",
+DlgDocMeIndex		: "Dokument index lyklaorð (sundurbýtt við komma)",
+DlgDocMeDescr		: "Dokumentlýsing",
+DlgDocMeAuthor		: "Høvundur",
+DlgDocMeCopy		: "Upphavsrættindi",
+DlgDocPreview		: "Frumsýning",
+
+// Templates Dialog
+Templates			: "Skabelónir",
+DlgTemplatesTitle	: "Innihaldsskabelónir",
+DlgTemplatesSelMsg	: "Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):",
+DlgTemplatesLoading	: "Heinti yvirlit yvir skabelónir. Vinarliga bíða við...",
+DlgTemplatesNoTpl	: "(Ongar skabelónir tøkar)",
+DlgTemplatesReplace	: "Yvirskriva núverandi innihald",
+
+// About Dialog
+DlgAboutAboutTab	: "Um",
+DlgAboutBrowserInfoTab	: "Upplýsingar um alnótskagan",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "Fyri fleiri upplýsingar, far til",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Fjølbroytt",
+DlgDivStyle		: "Typografi",
+DlgDivInlineStyle	: "Inline typografi",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bs.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bs.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bs.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Bosnian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skupi trake sa alatima",
+ToolbarExpand		: "Otvori trake sa alatima",
+
+// Toolbar Items and Context Menu
+Save				: "Snimi",
+NewPage				: "Novi dokument",
+Preview				: "Prikaži",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Zalijepi",
+PasteText			: "Zalijepi kao obièan tekst",
+PasteWord			: "Zalijepi iz Word-a",
+Print				: "Štampaj",
+SelectAll			: "Selektuj sve",
+RemoveFormat		: "Poništi format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Ubaci/Izmjeni link",
+RemoveLink			: "Izbriši link",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Insert/Edit Anchor",	//MISSING
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Slika",
+InsertImage			: "Ubaci/Izmjeni sliku",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Tabela",
+InsertTable			: "Ubaci/Izmjeni tabelu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Ubaci horizontalnu liniju",
+InsertSpecialCharLbl: "Specijalni karakter",
+InsertSpecialChar	: "Ubaci specijalni karater",
+InsertSmileyLbl		: "Smješko",
+InsertSmiley		: "Ubaci smješka",
+About				: "O FCKeditor-u",
+Bold				: "Boldiraj",
+Italic				: "Ukosi",
+Underline			: "Podvuci",
+StrikeThrough		: "Precrtaj",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Lijevo poravnanje",
+CenterJustify		: "Centralno poravnanje",
+RightJustify		: "Desno poravnanje",
+BlockJustify		: "Puno poravnanje",
+DecreaseIndent		: "Smanji uvod",
+IncreaseIndent		: "Poveæaj uvod",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Vrati",
+Redo				: "Ponovi",
+NumberedListLbl		: "Numerisana lista",
+NumberedList		: "Ubaci/Izmjeni numerisanu listu",
+BulletedListLbl		: "Lista",
+BulletedList		: "Ubaci/Izmjeni listu",
+ShowTableBorders	: "Pokaži okvire tabela",
+ShowDetails			: "Pokaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Velièina",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "HTML kôd",
+Find				: "Naði",
+Replace				: "Zamjeni",
+SpellCheck			: "Check Spelling",	//MISSING
+UniversalKeyboard	: "Universal Keyboard",	//MISSING
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Form",	//MISSING
+Checkbox		: "Checkbox",	//MISSING
+RadioButton		: "Radio Button",	//MISSING
+TextField		: "Text Field",	//MISSING
+Textarea		: "Textarea",	//MISSING
+HiddenField		: "Hidden Field",	//MISSING
+Button			: "Button",	//MISSING
+SelectionField	: "Selection Field",	//MISSING
+ImageButton		: "Image Button",	//MISSING
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Izmjeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Briši redove",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Briši kolone",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Briši æelije",
+MergeCells			: "Spoji æelije",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Svojstva æelije",
+TableProperties		: "Svojstva tabele",
+ImageProperties		: "Svojstva slike",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Anchor Properties",	//MISSING
+ButtonProp			: "Button Properties",	//MISSING
+CheckboxProp		: "Checkbox Properties",	//MISSING
+HiddenFieldProp		: "Hidden Field Properties",	//MISSING
+RadioButtonProp		: "Radio Button Properties",	//MISSING
+ImageButtonProp		: "Image Button Properties",	//MISSING
+TextFieldProp		: "Text Field Properties",	//MISSING
+SelectionFieldProp	: "Selection Field Properties",	//MISSING
+TextareaProp		: "Textarea Properties",	//MISSING
+FormProp			: "Form Properties",	//MISSING
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesiram XHTML. Molim saèekajte...",
+Done				: "Gotovo",
+PasteWordConfirm	: "Tekst koji želite zalijepiti èini se da je kopiran iz Worda. Da li želite da se prvo oèisti?",
+NotCompatiblePaste	: "Ova komanda je podržana u Internet Explorer-u verzijama 5.5 ili novijim. Da li želite da izvršite lijepljenje teksta bez èišæenja?",
+UnknownToolbarItem	: "Nepoznata stavka sa trake sa alatima \"%1\"",
+UnknownCommand		: "Nepoznata komanda \"%1\"",
+NotImplemented		: "Komanda nije implementirana",
+UnknownToolbarSet	: "Traka sa alatima \"%1\" ne postoji",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Odustani",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgAdvancedTag		: "Naprednije",
+DlgOpOther			: "<Other>",	//MISSING
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije podešeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smjer pisanja",
+DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na lijevo (RTL)",
+DlgGenLangCode		: "Jezièni kôd",
+DlgGenAccessKey		: "Pristupna tipka",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Dugaèki opis URL-a",
+DlgGenClass			: "Klase CSS stilova",
+DlgGenTitle			: "Advisory title",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Svojstva slike",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Šalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Šalji",
+DlgImgAlt			: "Tekst na slici",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zakljuèaj odnos",
+DlgBtnResetSize		: "Resetuj dimenzije",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Poravnanje",
+DlgImgAlignLeft		: "Lijevo",
+DlgImgAlignAbsBottom: "Abs dole",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dno",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Prikaz",
+DlgImgAlertUrl		: "Molimo ukucajte URL od slike.",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link info",
+DlgLnkTargetTab		: "Prozor",
+
+DlgLnkType			: "Tip linka",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugi>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id-u elementa",
+DlgLnkNoAnchors		: "(Nema dostupnih sidra na stranici)",
+DlgLnkEMail			: "E-Mail Adresa",
+DlgLnkEMailSubject	: "Subjekt poruke",
+DlgLnkEMailBody		: "Poruka",
+DlgLnkUpload		: "Šalji",
+DlgLnkBtnUpload		: "Šalji na server",
+
+DlgLnkTarget		: "Prozor",
+DlgLnkTargetFrame	: "<frejm>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Glavni prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Najgornji prozor (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Moguænosti popup prozora",
+DlgLnkPopResize		: "Promjenljive velièine",
+DlgLnkPopLocation	: "Traka za lokaciju",
+DlgLnkPopMenu		: "Izborna traka",
+DlgLnkPopScroll		: "Scroll traka",
+DlgLnkPopStatus		: "Statusna traka",
+DlgLnkPopToolbar	: "Traka sa alatima",
+DlgLnkPopFullScrn	: "Cijeli ekran (IE)",
+DlgLnkPopDependent	: "Ovisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Lijeva pozicija",
+DlgLnkPopTop		: "Gornja pozicija",
+
+DlnLnkMsgNoUrl		: "Molimo ukucajte URL link",
+DlnLnkMsgNoEMail	: "Molimo ukucajte e-mail adresu",
+DlnLnkMsgNoAnchor	: "Molimo izaberite sidro",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Izaberi boju",
+DlgColorBtnClear	: "Oèisti",
+DlgColorHighlight	: "Igled",
+DlgColorSelected	: "Selektovana",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ubaci smješka",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Izaberi specijalni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Svojstva tabele",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Okvir",
+DlgTableAlign		: "Poravnanje",
+DlgTableAlignNotSet	: "<Nije podešeno>",
+DlgTableAlignLeft	: "Lijevo",
+DlgTableAlignCenter	: "Centar",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "posto",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Razmak æelija",
+DlgTableCellPad		: "Uvod æelija",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Summary",	//MISSING
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Svojstva æelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "posto",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Vrapuj tekst",
+DlgCellWordWrapNotSet	: "<Nije podešeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizontalno poravnanje",
+DlgCellHorAlignNotSet	: "<Nije podešeno>",
+DlgCellHorAlignLeft	: "Lijevo",
+DlgCellHorAlignCenter	: "Centar",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Vertikalno poravnanje",
+DlgCellVerAlignNotSet	: "<Nije podešeno>",
+DlgCellVerAlignTop	: "Gore",
+DlgCellVerAlignMiddle	: "Sredina",
+DlgCellVerAlignBottom	: "Dno",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Spajanje æelija",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Selektuj...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Naði",
+DlgFindFindBtn		: "Naði",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronaðen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamjeni",
+DlgReplaceFindLbl		: "Naði šta:",
+DlgReplaceReplaceLbl	: "Zamjeni sa:",
+DlgReplaceCaseChk		: "Uporeðuj velika/mala slova",
+DlgReplaceReplaceBtn	: "Zamjeni",
+DlgReplaceReplAllBtn	: "Zamjeni sve",
+DlgReplaceWordChk		: "Uporeðuj samo cijelu rijeè",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).",
+
+PasteAsText		: "Zalijepi kao obièan tekst",
+PasteFromWord	: "Zalijepi iz Word-a",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",	//MISSING
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Automatska",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Document Properties",	//MISSING
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",	//MISSING
+DlgAnchorName		: "Anchor Name",	//MISSING
+DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",	//MISSING
+DlgSpellChangeTo		: "Change to",	//MISSING
+DlgSpellBtnIgnore		: "Ignore",	//MISSING
+DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
+DlgSpellBtnReplace		: "Replace",	//MISSING
+DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
+DlgSpellBtnUndo			: "Undo",	//MISSING
+DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
+DlgSpellProgress		: "Spell check in progress...",	//MISSING
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
+DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
+DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",	//MISSING
+DlgButtonType		: "Type",	//MISSING
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",	//MISSING
+DlgCheckboxValue	: "Value",	//MISSING
+DlgCheckboxSelected	: "Selected",	//MISSING
+
+// Form Dialog
+DlgFormName		: "Name",	//MISSING
+DlgFormAction	: "Action",	//MISSING
+DlgFormMethod	: "Method",	//MISSING
+
+// Select Field Dialog
+DlgSelectName		: "Name",	//MISSING
+DlgSelectValue		: "Value",	//MISSING
+DlgSelectSize		: "Size",	//MISSING
+DlgSelectLines		: "lines",	//MISSING
+DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
+DlgSelectOpAvail	: "Available Options",	//MISSING
+DlgSelectOpText		: "Text",	//MISSING
+DlgSelectOpValue	: "Value",	//MISSING
+DlgSelectBtnAdd		: "Add",	//MISSING
+DlgSelectBtnModify	: "Modify",	//MISSING
+DlgSelectBtnUp		: "Up",	//MISSING
+DlgSelectBtnDown	: "Down",	//MISSING
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "Delete",	//MISSING
+
+// Textarea Dialog
+DlgTextareaName	: "Name",	//MISSING
+DlgTextareaCols	: "Columns",	//MISSING
+DlgTextareaRows	: "Rows",	//MISSING
+
+// Text Field Dialog
+DlgTextName			: "Name",	//MISSING
+DlgTextValue		: "Value",	//MISSING
+DlgTextCharWidth	: "Character Width",	//MISSING
+DlgTextMaxChars		: "Maximum Characters",	//MISSING
+DlgTextType			: "Type",	//MISSING
+DlgTextTypeText		: "Text",	//MISSING
+DlgTextTypePass		: "Password",	//MISSING
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",	//MISSING
+DlgHiddenValue	: "Value",	//MISSING
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",	//MISSING
+NumberedListProp	: "Numbered List Properties",	//MISSING
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Type",	//MISSING
+DlgLstTypeCircle	: "Circle",	//MISSING
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Square",	//MISSING
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",	//MISSING
+DlgDocBackTab		: "Background",	//MISSING
+DlgDocColorsTab		: "Colors and Margins",	//MISSING
+DlgDocMetaTab		: "Meta Data",	//MISSING
+
+DlgDocPageTitle		: "Page Title",	//MISSING
+DlgDocLangDir		: "Language Direction",	//MISSING
+DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
+DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
+DlgDocLangCode		: "Language Code",	//MISSING
+DlgDocCharSet		: "Character Set Encoding",	//MISSING
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
+
+DlgDocDocType		: "Document Type Heading",	//MISSING
+DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
+DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
+DlgDocBgColor		: "Background Color",	//MISSING
+DlgDocBgImage		: "Background Image URL",	//MISSING
+DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
+DlgDocCText			: "Text",	//MISSING
+DlgDocCLink			: "Link",	//MISSING
+DlgDocCVisited		: "Visited Link",	//MISSING
+DlgDocCActive		: "Active Link",	//MISSING
+DlgDocMargins		: "Page Margins",	//MISSING
+DlgDocMaTop			: "Top",	//MISSING
+DlgDocMaLeft		: "Left",	//MISSING
+DlgDocMaRight		: "Right",	//MISSING
+DlgDocMaBottom		: "Bottom",	//MISSING
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
+DlgDocMeDescr		: "Document Description",	//MISSING
+DlgDocMeAuthor		: "Author",	//MISSING
+DlgDocMeCopy		: "Copyright",	//MISSING
+DlgDocPreview		: "Preview",	//MISSING
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "About",	//MISSING
+DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "verzija",
+DlgAboutInfo		: "Za više informacija posjetite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/cs.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/cs.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/cs.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Czech language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skrýt panel nástrojů",
+ToolbarExpand		: "Zobrazit panel nástrojů",
+
+// Toolbar Items and Context Menu
+Save				: "Uložit",
+NewPage				: "Nová stránka",
+Preview				: "Náhled",
+Cut					: "Vyjmout",
+Copy				: "Kopírovat",
+Paste				: "Vložit",
+PasteText			: "Vložit jako čistý text",
+PasteWord			: "Vložit z Wordu",
+Print				: "Tisk",
+SelectAll			: "Vybrat vše",
+RemoveFormat		: "Odstranit formátování",
+InsertLinkLbl		: "Odkaz",
+InsertLink			: "Vložit/změnit odkaz",
+RemoveLink			: "Odstranit odkaz",
+VisitLink			: "Otevřít odkaz",
+Anchor				: "Vložít/změnit záložku",
+AnchorDelete		: "Odstranit kotvu",
+InsertImageLbl		: "Obrázek",
+InsertImage			: "Vložit/změnit obrázek",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vložit/Upravit Flash",
+InsertTableLbl		: "Tabulka",
+InsertTable			: "Vložit/změnit tabulku",
+InsertLineLbl		: "Linka",
+InsertLine			: "Vložit vodorovnou linku",
+InsertSpecialCharLbl: "Speciální znaky",
+InsertSpecialChar	: "Vložit speciální znaky",
+InsertSmileyLbl		: "Smajlíky",
+InsertSmiley		: "Vložit smajlík",
+About				: "O aplikaci FCKeditor",
+Bold				: "Tučné",
+Italic				: "Kurzíva",
+Underline			: "Podtržené",
+StrikeThrough		: "Přeškrtnuté",
+Subscript			: "Dolní index",
+Superscript			: "Horní index",
+LeftJustify			: "Zarovnat vlevo",
+CenterJustify		: "Zarovnat na střed",
+RightJustify		: "Zarovnat vpravo",
+BlockJustify		: "Zarovnat do bloku",
+DecreaseIndent		: "Zmenšit odsazení",
+IncreaseIndent		: "Zvětšit odsazení",
+Blockquote			: "Citace",
+CreateDiv			: "Vytvořit Div kontejner",
+EditDiv				: "Upravit Div kontejner",
+DeleteDiv			: "Odstranit Div kontejner",
+Undo				: "Zpět",
+Redo				: "Znovu",
+NumberedListLbl		: "Číslování",
+NumberedList		: "Vložit/odstranit číslovaný seznam",
+BulletedListLbl		: "Odrážky",
+BulletedList		: "Vložit/odstranit odrážky",
+ShowTableBorders	: "Zobrazit okraje tabulek",
+ShowDetails			: "Zobrazit podrobnosti",
+Style				: "Styl",
+FontFormat			: "Formát",
+Font				: "Písmo",
+FontSize			: "Velikost",
+TextColor			: "Barva textu",
+BGColor				: "Barva pozadí",
+Source				: "Zdroj",
+Find				: "Hledat",
+Replace				: "Nahradit",
+SpellCheck			: "Zkontrolovat pravopis",
+UniversalKeyboard	: "Univerzální klávesnice",
+PageBreakLbl		: "Konec stránky",
+PageBreak			: "Vložit konec stránky",
+
+Form			: "Formulář",
+Checkbox		: "Zaškrtávací políčko",
+RadioButton		: "Přepínač",
+TextField		: "Textové pole",
+Textarea		: "Textová oblast",
+HiddenField		: "Skryté pole",
+Button			: "Tlačítko",
+SelectionField	: "Seznam",
+ImageButton		: "Obrázkové tlačítko",
+
+FitWindow		: "Maximalizovat velikost editoru",
+ShowBlocks		: "Ukázat bloky",
+
+// Context Menu
+EditLink			: "Změnit odkaz",
+CellCM				: "Buňka",
+RowCM				: "Řádek",
+ColumnCM			: "Sloupec",
+InsertRowAfter		: "Vložit řádek za",
+InsertRowBefore		: "Vložit řádek před",
+DeleteRows			: "Smazat řádky",
+InsertColumnAfter	: "Vložit sloupec za",
+InsertColumnBefore	: "Vložit sloupec před",
+DeleteColumns		: "Smazat sloupec",
+InsertCellAfter		: "Vložit buňku za",
+InsertCellBefore	: "Vložit buňku před",
+DeleteCells			: "Smazat buňky",
+MergeCells			: "Sloučit buňky",
+MergeRight			: "Sloučit doprava",
+MergeDown			: "Sloučit dolů",
+HorizontalSplitCell	: "Rozdělit buňky vodorovně",
+VerticalSplitCell	: "Rozdělit buňky svisle",
+TableDelete			: "Smazat tabulku",
+CellProperties		: "Vlastnosti buňky",
+TableProperties		: "Vlastnosti tabulky",
+ImageProperties		: "Vlastnosti obrázku",
+FlashProperties		: "Vlastnosti Flashe",
+
+AnchorProp			: "Vlastnosti záložky",
+ButtonProp			: "Vlastnosti tlačítka",
+CheckboxProp		: "Vlastnosti zaškrtávacího políčka",
+HiddenFieldProp		: "Vlastnosti skrytého pole",
+RadioButtonProp		: "Vlastnosti přepínače",
+ImageButtonProp		: "Vlastností obrázkového tlačítka",
+TextFieldProp		: "Vlastnosti textového pole",
+SelectionFieldProp	: "Vlastnosti seznamu",
+TextareaProp		: "Vlastnosti textové oblasti",
+FormProp			: "Vlastnosti formuláře",
+
+FontFormats			: "Normální;Naformátováno;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Normální (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Probíhá zpracování XHTML. Prosím čekejte...",
+Done				: "Hotovo",
+PasteWordConfirm	: "Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?",
+NotCompatiblePaste	: "Tento příkaz je dostupný pouze v Internet Exploreru verze 5.5 nebo vyšší. Chcete vložit text bez vyčištění?",
+UnknownToolbarItem	: "Neznámá položka panelu nástrojů \"%1\"",
+UnknownCommand		: "Neznámý příkaz \"%1\"",
+NotImplemented		: "Příkaz není implementován",
+UnknownToolbarSet	: "Panel nástrojů \"%1\" neexistuje",
+NoActiveX			: "Nastavení bezpečnosti Vašeho prohlížeče omezuje funkčnost některých jeho možností. Je třeba zapnout volbu \"Spouštět ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat všechny dosputné schopnosti editoru.",
+BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.",
+DialogBlocked		: "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.",
+VisitLinkBlocked	: "Není možné otevřít nové okno. Prověřte, zda všechny nástroje pro blokování vyskakovacích oken jsou vypnuty.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Storno",
+DlgBtnClose			: "Zavřít",
+DlgBtnBrowseServer	: "Vybrat na serveru",
+DlgAdvancedTag		: "Rozšířené",
+DlgOpOther			: "<Ostatní>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Prosím vložte URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nenastaveno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientace jazyka",
+DlgGenLangDirLtr	: "Zleva do prava (LTR)",
+DlgGenLangDirRtl	: "Zprava do leva (RTL)",
+DlgGenLangCode		: "Kód jazyka",
+DlgGenAccessKey		: "Přístupový klíč",
+DlgGenName			: "Jméno",
+DlgGenTabIndex		: "Pořadí prvku",
+DlgGenLongDescr		: "Dlouhý popis URL",
+DlgGenClass			: "Třída stylu",
+DlgGenTitle			: "Pomocný titulek",
+DlgGenContType		: "Pomocný typ obsahu",
+DlgGenLinkCharset	: "Přiřazená znaková sada",
+DlgGenStyle			: "Styl",
+
+// Image Dialog
+DlgImgTitle			: "Vlastnosti obrázku",
+DlgImgInfoTab		: "Informace o obrázku",
+DlgImgBtnUpload		: "Odeslat na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Odeslat",
+DlgImgAlt			: "Alternativní text",
+DlgImgWidth			: "Šířka",
+DlgImgHeight		: "Výška",
+DlgImgLockRatio		: "Zámek",
+DlgBtnResetSize		: "Původní velikost",
+DlgImgBorder		: "Okraje",
+DlgImgHSpace		: "H-mezera",
+DlgImgVSpace		: "V-mezera",
+DlgImgAlign			: "Zarovnání",
+DlgImgAlignLeft		: "Vlevo",
+DlgImgAlignAbsBottom: "Zcela dolů",
+DlgImgAlignAbsMiddle: "Doprostřed",
+DlgImgAlignBaseline	: "Na účaří",
+DlgImgAlignBottom	: "Dolů",
+DlgImgAlignMiddle	: "Na střed",
+DlgImgAlignRight	: "Vpravo",
+DlgImgAlignTextTop	: "Na horní okraj textu",
+DlgImgAlignTop		: "Nahoru",
+DlgImgPreview		: "Náhled",
+DlgImgAlertUrl		: "Zadejte prosím URL obrázku",
+DlgImgLinkTab		: "Odkaz",
+
+// Flash Dialog
+DlgFlashTitle		: "Vlastnosti Flashe",
+DlgFlashChkPlay		: "Automatické spuštění",
+DlgFlashChkLoop		: "Opakování",
+DlgFlashChkMenu		: "Nabídka Flash",
+DlgFlashScale		: "Zobrazit",
+DlgFlashScaleAll	: "Zobrazit vše",
+DlgFlashScaleNoBorder	: "Bez okraje",
+DlgFlashScaleFit	: "Přizpůsobit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Odkaz",
+DlgLnkInfoTab		: "Informace o odkazu",
+DlgLnkTargetTab		: "Cíl",
+
+DlgLnkType			: "Typ odkazu",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Kotva v této stránce",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<jiný>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vybrat kotvu",
+DlgLnkAnchorByName	: "Podle jména kotvy",
+DlgLnkAnchorById	: "Podle Id objektu",
+DlgLnkNoAnchors		: "(Ve stránce není definována žádná kotva!)",
+DlgLnkEMail			: "E-Mailová adresa",
+DlgLnkEMailSubject	: "Předmět zprávy",
+DlgLnkEMailBody		: "Tělo zprávy",
+DlgLnkUpload		: "Odeslat",
+DlgLnkBtnUpload		: "Odeslat na Server",
+
+DlgLnkTarget		: "Cíl",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovací okno>",
+DlgLnkTargetBlank	: "Nové okno (_blank)",
+DlgLnkTargetParent	: "Rodičovské okno (_parent)",
+DlgLnkTargetSelf	: "Stejné okno (_self)",
+DlgLnkTargetTop		: "Hlavní okno (_top)",
+DlgLnkTargetFrameName	: "Název cílového rámu",
+DlgLnkPopWinName	: "Název vyskakovacího okna",
+DlgLnkPopWinFeat	: "Vlastnosti vyskakovacího okna",
+DlgLnkPopResize		: "Měnitelná velikost",
+DlgLnkPopLocation	: "Panel umístění",
+DlgLnkPopMenu		: "Panel nabídky",
+DlgLnkPopScroll		: "Posuvníky",
+DlgLnkPopStatus		: "Stavový řádek",
+DlgLnkPopToolbar	: "Panel nástrojů",
+DlgLnkPopFullScrn	: "Celá obrazovka (IE)",
+DlgLnkPopDependent	: "Závislost (Netscape)",
+DlgLnkPopWidth		: "Šířka",
+DlgLnkPopHeight		: "Výška",
+DlgLnkPopLeft		: "Levý okraj",
+DlgLnkPopTop		: "Horní okraj",
+
+DlnLnkMsgNoUrl		: "Zadejte prosím URL odkazu",
+DlnLnkMsgNoEMail	: "Zadejte prosím e-mailovou adresu",
+DlnLnkMsgNoAnchor	: "Vyberte prosím kotvu",
+DlnLnkMsgInvPopName	: "Název vyskakovacího okna musí začínat písmenem a nesmí obsahovat mezery",
+
+// Color Dialog
+DlgColorTitle		: "Výběr barvy",
+DlgColorBtnClear	: "Vymazat",
+DlgColorHighlight	: "Zvýrazněná",
+DlgColorSelected	: "Vybraná",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vkládání smajlíků",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Výběr speciálního znaku",
+
+// Table Dialog
+DlgTableTitle		: "Vlastnosti tabulky",
+DlgTableRows		: "Řádky",
+DlgTableColumns		: "Sloupce",
+DlgTableBorder		: "Ohraničení",
+DlgTableAlign		: "Zarovnání",
+DlgTableAlignNotSet	: "<nenastaveno>",
+DlgTableAlignLeft	: "Vlevo",
+DlgTableAlignCenter	: "Na střed",
+DlgTableAlignRight	: "Vpravo",
+DlgTableWidth		: "Šířka",
+DlgTableWidthPx		: "bodů",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Výška",
+DlgTableCellSpace	: "Vzdálenost buněk",
+DlgTableCellPad		: "Odsazení obsahu",
+DlgTableCaption		: "Popis",
+DlgTableSummary		: "Souhrn",
+DlgTableHeaders		: "Záhlaví",
+DlgTableHeadersNone		: "Žádné",
+DlgTableHeadersColumn	: "První sloupec",
+DlgTableHeadersRow		: "První řádek",
+DlgTableHeadersBoth		: "Oboje",
+
+// Table Cell Dialog
+DlgCellTitle		: "Vlastnosti buňky",
+DlgCellWidth		: "Šířka",
+DlgCellWidthPx		: "bodů",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Výška",
+DlgCellWordWrap		: "Zalamování",
+DlgCellWordWrapNotSet	: "<nenanstaveno>",
+DlgCellWordWrapYes	: "Ano",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodorovné zarovnání",
+DlgCellHorAlignNotSet	: "<nenastaveno>",
+DlgCellHorAlignLeft	: "Vlevo",
+DlgCellHorAlignCenter	: "Na střed",
+DlgCellHorAlignRight: "Vpravo",
+DlgCellVerAlign		: "Svislé zarovnání",
+DlgCellVerAlignNotSet	: "<nenastaveno>",
+DlgCellVerAlignTop	: "Nahoru",
+DlgCellVerAlignMiddle	: "Doprostřed",
+DlgCellVerAlignBottom	: "Dolů",
+DlgCellVerAlignBaseline	: "Na účaří",
+DlgCellType		: "Typ buňky",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Zálaví",
+DlgCellRowSpan		: "Sloučené řádky",
+DlgCellCollSpan		: "Sloučené sloupce",
+DlgCellBackColor	: "Barva pozadí",
+DlgCellBorderColor	: "Barva ohraničení",
+DlgCellBtnSelect	: "Výběr...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Najít a nahradit",
+
+// Find Dialog
+DlgFindTitle		: "Hledat",
+DlgFindFindBtn		: "Hledat",
+DlgFindNotFoundMsg	: "Hledaný text nebyl nalezen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Nahradit",
+DlgReplaceFindLbl		: "Co hledat:",
+DlgReplaceReplaceLbl	: "Čím nahradit:",
+DlgReplaceCaseChk		: "Rozlišovat velikost písma",
+DlgReplaceReplaceBtn	: "Nahradit",
+DlgReplaceReplAllBtn	: "Nahradit vše",
+DlgReplaceWordChk		: "Pouze celá slova",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl+X).",
+PasteErrorCopy	: "Bezpečnostní nastavení Vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).",
+
+PasteAsText		: "Vložit jako čistý text",
+PasteFromWord	: "Vložit text z Wordu",
+
+DlgPasteMsg2	: "Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.",
+DlgPasteIgnoreFont		: "Ignorovat písmo",
+DlgPasteRemoveStyles	: "Odstranit styly",
+
+// Color Picker
+ColorAutomatic	: "Automaticky",
+ColorMoreColors	: "Více barev...",
+
+// Document Properties
+DocProps		: "Vlastnosti dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Vlastnosti záložky",
+DlgAnchorName		: "Název záložky",
+DlgAnchorErrorName	: "Zadejte prosím název záložky",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Není ve slovníku",
+DlgSpellChangeTo		: "Změnit na",
+DlgSpellBtnIgnore		: "Přeskočit",
+DlgSpellBtnIgnoreAll	: "Přeskakovat vše",
+DlgSpellBtnReplace		: "Zaměnit",
+DlgSpellBtnReplaceAll	: "Zaměňovat vše",
+DlgSpellBtnUndo			: "Zpět",
+DlgSpellNoSuggestions	: "- žádné návrhy -",
+DlgSpellProgress		: "Probíhá kontrola pravopisu...",
+DlgSpellNoMispell		: "Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny",
+DlgSpellNoChanges		: "Kontrola pravopisu dokončena: Beze změn",
+DlgSpellOneChange		: "Kontrola pravopisu dokončena: Jedno slovo změněno",
+DlgSpellManyChanges		: "Kontrola pravopisu dokončena: %1 slov změněno",
+
+IeSpellDownload			: "Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?",
+
+// Button Dialog
+DlgButtonText		: "Popisek",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Tlačítko",
+DlgButtonTypeSbm	: "Odeslat",
+DlgButtonTypeRst	: "Obnovit",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Název",
+DlgCheckboxValue	: "Hodnota",
+DlgCheckboxSelected	: "Zaškrtnuto",
+
+// Form Dialog
+DlgFormName		: "Název",
+DlgFormAction	: "Akce",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Název",
+DlgSelectValue		: "Hodnota",
+DlgSelectSize		: "Velikost",
+DlgSelectLines		: "Řádků",
+DlgSelectChkMulti	: "Povolit mnohonásobné výběry",
+DlgSelectOpAvail	: "Dostupná nastavení",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Hodnota",
+DlgSelectBtnAdd		: "Přidat",
+DlgSelectBtnModify	: "Změnit",
+DlgSelectBtnUp		: "Nahoru",
+DlgSelectBtnDown	: "Dolů",
+DlgSelectBtnSetValue : "Nastavit jako vybranou hodnotu",
+DlgSelectBtnDelete	: "Smazat",
+
+// Textarea Dialog
+DlgTextareaName	: "Název",
+DlgTextareaCols	: "Sloupců",
+DlgTextareaRows	: "Řádků",
+
+// Text Field Dialog
+DlgTextName			: "Název",
+DlgTextValue		: "Hodnota",
+DlgTextCharWidth	: "Šířka ve znacích",
+DlgTextMaxChars		: "Maximální počet znaků",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Heslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Název",
+DlgHiddenValue	: "Hodnota",
+
+// Bulleted List Dialog
+BulletedListProp	: "Vlastnosti odrážek",
+NumberedListProp	: "Vlastnosti číslovaného seznamu",
+DlgLstStart			: "Začátek",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Kružnice",
+DlgLstTypeDisc		: "Kruh",
+DlgLstTypeSquare	: "Čtverec",
+DlgLstTypeNumbers	: "Čísla (1, 2, 3)",
+DlgLstTypeLCase		: "Malá písmena (a, b, c)",
+DlgLstTypeUCase		: "Velká písmena (A, B, C)",
+DlgLstTypeSRoman	: "Malé římská číslice (i, ii, iii)",
+DlgLstTypeLRoman	: "Velké římské číslice (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Obecné",
+DlgDocBackTab		: "Pozadí",
+DlgDocColorsTab		: "Barvy a okraje",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Titulek stránky",
+DlgDocLangDir		: "Směr jazyku",
+DlgDocLangDirLTR	: "Zleva do prava ",
+DlgDocLangDirRTL	: "Zprava doleva",
+DlgDocLangCode		: "Kód jazyku",
+DlgDocCharSet		: "Znaková sada",
+DlgDocCharSetCE		: "Středoevropské jazyky",
+DlgDocCharSetCT		: "Tradiční čínština (Big5)",
+DlgDocCharSetCR		: "Cyrilice",
+DlgDocCharSetGR		: "Řečtina",
+DlgDocCharSetJP		: "Japonština",
+DlgDocCharSetKR		: "Korejština",
+DlgDocCharSetTR		: "Turečtina",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Západoevropské jazyky",
+DlgDocCharSetOther	: "Další znaková sada",
+
+DlgDocDocType		: "Typ dokumentu",
+DlgDocDocTypeOther	: "Jiný typ dokumetu",
+DlgDocIncXHTML		: "Zahrnou deklarace XHTML",
+DlgDocBgColor		: "Barva pozadí",
+DlgDocBgImage		: "URL obrázku na pozadí",
+DlgDocBgNoScroll	: "Nerolovatelné pozadí",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Odkaz",
+DlgDocCVisited		: "Navštívený odkaz",
+DlgDocCActive		: "Vybraný odkaz",
+DlgDocMargins		: "Okraje stránky",
+DlgDocMaTop			: "Horní",
+DlgDocMaLeft		: "Levý",
+DlgDocMaRight		: "Pravý",
+DlgDocMaBottom		: "Dolní",
+DlgDocMeIndex		: "Klíčová slova (oddělená čárkou)",
+DlgDocMeDescr		: "Popis dokumentu",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorská práva",
+DlgDocPreview		: "Náhled",
+
+// Templates Dialog
+Templates			: "Šablony",
+DlgTemplatesTitle	: "Šablony obsahu",
+DlgTemplatesSelMsg	: "Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):",
+DlgTemplatesLoading	: "Nahrávám přeheld šablon. Prosím čekejte...",
+DlgTemplatesNoTpl	: "(Není definována žádná šablona)",
+DlgTemplatesReplace	: "Nahradit aktuální obsah",
+
+// About Dialog
+DlgAboutAboutTab	: "O aplikaci",
+DlgAboutBrowserInfoTab	: "Informace o prohlížeči",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "verze",
+DlgAboutInfo		: "Více informací získáte na",
+
+// Div Dialog
+DlgDivGeneralTab	: "Obecné",
+DlgDivAdvancedTab	: "Rozšířené",
+DlgDivStyle		: "Styl",
+DlgDivInlineStyle	: "Vložený styl",
+
+ScaytTitle			: "SCAYT",
+ScaytTitleOptions	: "Nastavení",
+ScaytTitleLangs		: "Jazyky",
+ScaytTitleAbout		: "O aplikaci"
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-au.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-au.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-au.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * English (Australia) language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
+Anchor				: "Insert/Edit Anchor",
+AnchorDelete		: "Remove Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+ShowBlocks		: "Show Blocks",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRowAfter		: "Insert Row After",
+InsertRowBefore		: "Insert Row Before",
+DeleteRows			: "Delete Rows",
+InsertColumnAfter	: "Insert Column After",
+InsertColumnBefore	: "Insert Column Before",
+DeleteColumns		: "Delete Columns",
+InsertCellAfter		: "Insert Cell After",
+InsertCellBefore	: "Insert Cell Before",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+MergeRight			: "Merge Right",
+MergeDown			: "Merge Down",
+HorizontalSplitCell	: "Split Cell Horizontally",
+VerticalSplitCell	: "Split Cell Vertically",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "(No anchors available in the document)",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Header",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "For further information go to",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/es.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/es.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/es.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Spanish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Contraer Barra",
+ToolbarExpand		: "Expandir Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Guardar",
+NewPage				: "Nueva Página",
+Preview				: "Vista Previa",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Pegar",
+PasteText			: "Pegar como texto plano",
+PasteWord			: "Pegar desde Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar Todo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Vínculo",
+InsertLink			: "Insertar/Editar Vínculo",
+RemoveLink			: "Eliminar Vínculo",
+VisitLink			: "Abrir enlace",
+Anchor				: "Referencia",
+AnchorDelete		: "Eliminar Referencia",
+InsertImageLbl		: "Imagen",
+InsertImage			: "Insertar/Editar Imagen",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insertar/Editar Flash",
+InsertTableLbl		: "Tabla",
+InsertTable			: "Insertar/Editar Tabla",
+InsertLineLbl		: "Línea",
+InsertLine			: "Insertar Línea Horizontal",
+InsertSpecialCharLbl: "Caracter Especial",
+InsertSpecialChar	: "Insertar Caracter Especial",
+InsertSmileyLbl		: "Emoticons",
+InsertSmiley		: "Insertar Emoticons",
+About				: "Acerca de FCKeditor",
+Bold				: "Negrita",
+Italic				: "Cursiva",
+Underline			: "Subrayado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subíndice",
+Superscript			: "Superíndice",
+LeftJustify			: "Alinear a Izquierda",
+CenterJustify		: "Centrar",
+RightJustify		: "Alinear a Derecha",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Disminuir Sangría",
+IncreaseIndent		: "Aumentar Sangría",
+Blockquote			: "Cita",
+CreateDiv			: "Crear contenedor (div)",
+EditDiv				: "Editar contenedor (div)",
+DeleteDiv			: "Eliminar contenedor (div)",
+Undo				: "Deshacer",
+Redo				: "Rehacer",
+NumberedListLbl		: "Numeración",
+NumberedList		: "Insertar/Eliminar Numeración",
+BulletedListLbl		: "Viñetas",
+BulletedList		: "Insertar/Eliminar Viñetas",
+ShowTableBorders	: "Mostrar Bordes de Tablas",
+ShowDetails			: "Mostrar saltos de Párrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Fuente",
+FontSize			: "Tamaño",
+TextColor			: "Color de Texto",
+BGColor				: "Color de Fondo",
+Source				: "Fuente HTML",
+Find				: "Buscar",
+Replace				: "Reemplazar",
+SpellCheck			: "Ortografía",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Página",
+PageBreak			: "Insertar Salto de Página",
+
+Form			: "Formulario",
+Checkbox		: "Casilla de Verificación",
+RadioButton		: "Botones de Radio",
+TextField		: "Campo de Texto",
+Textarea		: "Area de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botón",
+SelectionField	: "Campo de Selección",
+ImageButton		: "Botón Imagen",
+
+FitWindow		: "Maximizar el tamaño del editor",
+ShowBlocks		: "Mostrar bloques",
+
+// Context Menu
+EditLink			: "Editar Vínculo",
+CellCM				: "Celda",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRowAfter		: "Insertar fila en la parte inferior",
+InsertRowBefore		: "Insertar fila en la parte superior",
+DeleteRows			: "Eliminar Filas",
+InsertColumnAfter	: "Insertar columna a la derecha",
+InsertColumnBefore	: "Insertar columna a la izquierda",
+DeleteColumns		: "Eliminar Columnas",
+InsertCellAfter		: "Insertar celda a la derecha",
+InsertCellBefore	: "Insertar celda a la izquierda",
+DeleteCells			: "Eliminar Celdas",
+MergeCells			: "Combinar Celdas",
+MergeRight			: "Combinar a la derecha",
+MergeDown			: "Combinar hacia abajo",
+HorizontalSplitCell	: "Dividir la celda horizontalmente",
+VerticalSplitCell	: "Dividir la celda verticalmente",
+TableDelete			: "Eliminar Tabla",
+CellProperties		: "Propiedades de Celda",
+TableProperties		: "Propiedades de Tabla",
+ImageProperties		: "Propiedades de Imagen",
+FlashProperties		: "Propiedades de Flash",
+
+AnchorProp			: "Propiedades de Referencia",
+ButtonProp			: "Propiedades de Botón",
+CheckboxProp		: "Propiedades de Casilla",
+HiddenFieldProp		: "Propiedades de Campo Oculto",
+RadioButtonProp		: "Propiedades de Botón de Radio",
+ImageButtonProp		: "Propiedades de Botón de Imagen",
+TextFieldProp		: "Propiedades de Campo de Texto",
+SelectionFieldProp	: "Propiedades de Campo de Selección",
+TextareaProp		: "Propiedades de Area de Texto",
+FormProp			: "Propiedades de Formulario",
+
+FontFormats			: "Normal;Con formato;Dirección;Encabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesando XHTML. Por favor, espere...",
+Done				: "Hecho",
+PasteWordConfirm	: "El texto que desea parece provenir de Word. Desea depurarlo antes de pegarlo?",
+NotCompatiblePaste	: "Este comando está disponible sólo para Internet Explorer version 5.5 or superior. Desea pegar sin depurar?",
+UnknownToolbarItem	: "Item de barra desconocido \"%1\"",
+UnknownCommand		: "Nombre de comando desconocido \"%1\"",
+NotImplemented		: "Comando no implementado",
+UnknownToolbarSet	: "Nombre de barra \"%1\" no definido",
+NoActiveX			: "La configuración de las opciones de seguridad de su navegador puede estar limitando algunas características del editor. Por favor active la opción \"Ejecutar controles y complementos de ActiveX \", de lo contrario puede experimentar errores o ausencia de funcionalidades.",
+BrowseServerBlocked : "La ventana de visualización del servidor no pudo ser abierta. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+DialogBlocked		: "No se ha podido abrir la ventana de diálogo. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+VisitLinkBlocked	: "Nose ha podido abrir la ventana. Asegurese de que todos los bloqueadores de popups están deshabilitados.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Cerrar",
+DlgBtnBrowseServer	: "Ver Servidor",
+DlgAdvancedTag		: "Avanzado",
+DlgOpOther			: "<Otro>",
+DlgInfoTab			: "Información",
+DlgAlertUrl			: "Inserte el URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<No definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientación",
+DlgGenLangDirLtr	: "Izquierda a Derecha (LTR)",
+DlgGenLangDirRtl	: "Derecha a Izquierda (RTL)",
+DlgGenLangCode		: "Cód. de idioma",
+DlgGenAccessKey		: "Clave de Acceso",
+DlgGenName			: "Nombre",
+DlgGenTabIndex		: "Indice de tabulación",
+DlgGenLongDescr		: "Descripción larga URL",
+DlgGenClass			: "Clases de hojas de estilo",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Contenido",
+DlgGenLinkCharset	: "Fuente de caracteres vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propiedades de Imagen",
+DlgImgInfoTab		: "Información de Imagen",
+DlgImgBtnUpload		: "Enviar al Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Cargar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Anchura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamaño Original",
+DlgImgBorder		: "Borde",
+DlgImgHSpace		: "Esp.Horiz",
+DlgImgVSpace		: "Esp.Vert",
+DlgImgAlign			: "Alineación",
+DlgImgAlignLeft		: "Izquierda",
+DlgImgAlignAbsBottom: "Abs inferior",
+DlgImgAlignAbsMiddle: "Abs centro",
+DlgImgAlignBaseline	: "Línea de base",
+DlgImgAlignBottom	: "Pie",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Derecha",
+DlgImgAlignTextTop	: "Tope del texto",
+DlgImgAlignTop		: "Tope",
+DlgImgPreview		: "Vista Previa",
+DlgImgAlertUrl		: "Por favor escriba la URL de la imagen",
+DlgImgLinkTab		: "Vínculo",
+
+// Flash Dialog
+DlgFlashTitle		: "Propiedades de Flash",
+DlgFlashChkPlay		: "Autoejecución",
+DlgFlashChkLoop		: "Repetir",
+DlgFlashChkMenu		: "Activar Menú Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar todo",
+DlgFlashScaleNoBorder	: "Sin Borde",
+DlgFlashScaleFit	: "Ajustado",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Vínculo",
+DlgLnkInfoTab		: "Información de Vínculo",
+DlgLnkTargetTab		: "Destino",
+
+DlgLnkType			: "Tipo de vínculo",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referencia en esta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<otro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar una referencia",
+DlgLnkAnchorByName	: "Por Nombre de Referencia",
+DlgLnkAnchorById	: "Por ID de elemento",
+DlgLnkNoAnchors		: "(No hay referencias disponibles en el documento)",
+DlgLnkEMail			: "Dirección de E-Mail",
+DlgLnkEMailSubject	: "Título del Mensaje",
+DlgLnkEMailBody		: "Cuerpo del Mensaje",
+DlgLnkUpload		: "Cargar",
+DlgLnkBtnUpload		: "Enviar al Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<marco>",
+DlgLnkTargetPopup	: "<ventana emergente>",
+DlgLnkTargetBlank	: "Nueva Ventana(_blank)",
+DlgLnkTargetParent	: "Ventana Padre (_parent)",
+DlgLnkTargetSelf	: "Misma Ventana (_self)",
+DlgLnkTargetTop		: "Ventana primaria (_top)",
+DlgLnkTargetFrameName	: "Nombre del Marco Destino",
+DlgLnkPopWinName	: "Nombre de Ventana Emergente",
+DlgLnkPopWinFeat	: "Características de Ventana Emergente",
+DlgLnkPopResize		: "Ajustable",
+DlgLnkPopLocation	: "Barra de ubicación",
+DlgLnkPopMenu		: "Barra de Menú",
+DlgLnkPopScroll		: "Barras de desplazamiento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Herramientas",
+DlgLnkPopFullScrn	: "Pantalla Completa (IE)",
+DlgLnkPopDependent	: "Dependiente (Netscape)",
+DlgLnkPopWidth		: "Anchura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posición Izquierda",
+DlgLnkPopTop		: "Posición Derecha",
+
+DlnLnkMsgNoUrl		: "Por favor tipee el vínculo URL",
+DlnLnkMsgNoEMail	: "Por favor tipee la dirección de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor seleccione una referencia",
+DlnLnkMsgInvPopName	: "El nombre debe empezar con un caracter alfanumérico y no debe contener espacios",
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Color",
+DlgColorBtnClear	: "Ninguno",
+DlgColorHighlight	: "Resaltado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insertar un Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione un caracter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propiedades de Tabla",
+DlgTableRows		: "Filas",
+DlgTableColumns		: "Columnas",
+DlgTableBorder		: "Tamaño de Borde",
+DlgTableAlign		: "Alineación",
+DlgTableAlignNotSet	: "<No establecido>",
+DlgTableAlignLeft	: "Izquierda",
+DlgTableAlignCenter	: "Centrado",
+DlgTableAlignRight	: "Derecha",
+DlgTableWidth		: "Anchura",
+DlgTableWidthPx		: "pixeles",
+DlgTableWidthPc		: "porcentaje",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Esp. e/celdas",
+DlgTableCellPad		: "Esp. interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Síntesis",
+DlgTableHeaders		: "Encabezados",
+DlgTableHeadersNone		: "Ninguno",
+DlgTableHeadersColumn	: "Primera columna",
+DlgTableHeadersRow		: "Primera fila",
+DlgTableHeadersBoth		: "Ambas",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propiedades de Celda",
+DlgCellWidth		: "Anchura",
+DlgCellWidthPx		: "pixeles",
+DlgCellWidthPc		: "porcentaje",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Cortar Línea",
+DlgCellWordWrapNotSet	: "<No establecido>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Alineación Horizontal",
+DlgCellHorAlignNotSet	: "<No establecido>",
+DlgCellHorAlignLeft	: "Izquierda",
+DlgCellHorAlignCenter	: "Centrado",
+DlgCellHorAlignRight: "Derecha",
+DlgCellVerAlign		: "Alineación Vertical",
+DlgCellVerAlignNotSet	: "<Not establecido>",
+DlgCellVerAlignTop	: "Tope",
+DlgCellVerAlignMiddle	: "Medio",
+DlgCellVerAlignBottom	: "ie",
+DlgCellVerAlignBaseline	: "Línea de Base",
+DlgCellType		: "Tipo de celda",
+DlgCellTypeData		: "Datos",
+DlgCellTypeHeader	: "Encabezado",
+DlgCellRowSpan		: "Abarcar Filas",
+DlgCellCollSpan		: "Abarcar Columnas",
+DlgCellBackColor	: "Color de Fondo",
+DlgCellBorderColor	: "Color de Borde",
+DlgCellBtnSelect	: "Seleccione...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Buscar y Reemplazar",
+
+// Find Dialog
+DlgFindTitle		: "Buscar",
+DlgFindFindBtn		: "Buscar",
+DlgFindNotFoundMsg	: "El texto especificado no ha sido encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Reemplazar",
+DlgReplaceFindLbl		: "Texto a buscar:",
+DlgReplaceReplaceLbl	: "Reemplazar con:",
+DlgReplaceCaseChk		: "Coincidir may/min",
+DlgReplaceReplaceBtn	: "Reemplazar",
+DlgReplaceReplAllBtn	: "Reemplazar Todo",
+DlgReplaceWordChk		: "Coincidir toda la palabra",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).",
+PasteErrorCopy	: "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).",
+
+PasteAsText		: "Pegar como Texto Plano",
+PasteFromWord	: "Pegar desde Word",
+
+DlgPasteMsg2	: "Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.",
+DlgPasteIgnoreFont		: "Ignorar definiciones de fuentes",
+DlgPasteRemoveStyles	: "Remover definiciones de estilo",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Más Colores...",
+
+// Document Properties
+DocProps		: "Propiedades del Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propiedades de la Referencia",
+DlgAnchorName		: "Nombre de la Referencia",
+DlgAnchorErrorName	: "Por favor, complete el nombre de la Referencia",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "No se encuentra en el Diccionario",
+DlgSpellChangeTo		: "Cambiar a",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Todo",
+DlgSpellBtnReplace		: "Reemplazar",
+DlgSpellBtnReplaceAll	: "Reemplazar Todo",
+DlgSpellBtnUndo			: "Deshacer",
+DlgSpellNoSuggestions	: "- No hay sugerencias -",
+DlgSpellProgress		: "Control de Ortografía en progreso...",
+DlgSpellNoMispell		: "Control finalizado: no se encontraron errores",
+DlgSpellNoChanges		: "Control finalizado: no se ha cambiado ninguna palabra",
+DlgSpellOneChange		: "Control finalizado: se ha cambiado una palabra",
+DlgSpellManyChanges		: "Control finalizado: se ha cambiado %1 palabras",
+
+IeSpellDownload			: "Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Boton",
+DlgButtonTypeSbm	: "Enviar",
+DlgButtonTypeRst	: "Reestablecer",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nombre",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nombre",
+DlgFormAction	: "Acción",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nombre",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamaño",
+DlgSelectLines		: "Lineas",
+DlgSelectChkMulti	: "Permitir múltiple selección",
+DlgSelectOpAvail	: "Opciones disponibles",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Agregar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Subir",
+DlgSelectBtnDown	: "Bajar",
+DlgSelectBtnSetValue : "Establecer como predeterminado",
+DlgSelectBtnDelete	: "Eliminar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nombre",
+DlgTextareaCols	: "Columnas",
+DlgTextareaRows	: "Filas",
+
+// Text Field Dialog
+DlgTextName			: "Nombre",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Caracteres de ancho",
+DlgTextMaxChars		: "Máximo caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Contraseña",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nombre",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propiedades de Viñetas",
+NumberedListProp	: "Propiedades de Numeraciones",
+DlgLstStart			: "Inicio",
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Cuadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "letras en minúsculas (a, b, c)",
+DlgLstTypeUCase		: "letras en mayúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fondo",
+DlgDocColorsTab		: "Colores y Márgenes",
+DlgDocMetaTab		: "Meta Información",
+
+DlgDocPageTitle		: "Título de Página",
+DlgDocLangDir		: "Orientación de idioma",
+DlgDocLangDirLTR	: "Izq. a Derecha (LTR)",
+DlgDocLangDirRTL	: "Der. a Izquierda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codif. de Conjunto de Caracteres",
+DlgDocCharSetCE		: "Centro Europeo",
+DlgDocCharSetCT		: "Chino Tradicional (Big5)",
+DlgDocCharSetCR		: "Cirílico",
+DlgDocCharSetGR		: "Griego",
+DlgDocCharSetJP		: "Japonés",
+DlgDocCharSetKR		: "Coreano",
+DlgDocCharSetTR		: "Turco",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Europeo occidental",
+DlgDocCharSetOther	: "Otra Codificación",
+
+DlgDocDocType		: "Encabezado de Tipo de Documento",
+DlgDocDocTypeOther	: "Otro Encabezado",
+DlgDocIncXHTML		: "Incluir Declaraciones XHTML",
+DlgDocBgColor		: "Color de Fondo",
+DlgDocBgImage		: "URL de Imagen de Fondo",
+DlgDocBgNoScroll	: "Fondo sin rolido",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Vínculo",
+DlgDocCVisited		: "Vínculo Visitado",
+DlgDocCActive		: "Vínculo Activo",
+DlgDocMargins		: "Márgenes de Página",
+DlgDocMaTop			: "Tope",
+DlgDocMaLeft		: "Izquierda",
+DlgDocMaRight		: "Derecha",
+DlgDocMaBottom		: "Pie",
+DlgDocMeIndex		: "Claves de indexación del Documento (separados por comas)",
+DlgDocMeDescr		: "Descripción del Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista Previa",
+
+// Templates Dialog
+Templates			: "Plantillas",
+DlgTemplatesTitle	: "Contenido de Plantillas",
+DlgTemplatesSelMsg	: "Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):",
+DlgTemplatesLoading	: "Cargando lista de Plantillas. Por favor, aguarde...",
+DlgTemplatesNoTpl	: "(No hay plantillas definidas)",
+DlgTemplatesReplace	: "Reemplazar el contenido actual",
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca de",
+DlgAboutBrowserInfoTab	: "Información de Navegador",
+DlgAboutLicenseTab	: "Licencia",
+DlgAboutVersion		: "versión",
+DlgAboutInfo		: "Para mayor información por favor dirigirse a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Avanzado",
+DlgDivStyle		: "Estilo",
+DlgDivInlineStyle	: "Estilos CSS",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/km.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/km.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/km.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Khmer language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "បង្រួមរបាឧបរកណ៍",
+ToolbarExpand		: "ពង្រីករបាឧបរណ៍",
+
+// Toolbar Items and Context Menu
+Save				: "រក្សាទុក",
+NewPage				: "ទំព័រថ្មី",
+Preview				: "មើលសាកល្បង",
+Cut					: "កាត់យក",
+Copy				: "ចំលងយក",
+Paste				: "ចំលងដាក់",
+PasteText			: "ចំលងដាក់ជាអត្ថបទធម្មតា",
+PasteWord			: "ចំលងដាក់ពី Word",
+Print				: "បោះពុម្ភ",
+SelectAll			: "ជ្រើសរើសទាំងអស់",
+RemoveFormat		: "លប់ចោល ការរចនា",
+InsertLinkLbl		: "ឈ្នាប់",
+InsertLink			: "បន្ថែម/កែប្រែ ឈ្នាប់",
+RemoveLink			: "លប់ឈ្នាប់",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "បន្ថែម/កែប្រែ យុថ្កា",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "រូបភាព",
+InsertImage			: "បន្ថែម/កែប្រែ រូបភាព",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "បន្ថែម/កែប្រែ Flash",
+InsertTableLbl		: "តារាង",
+InsertTable			: "បន្ថែម/កែប្រែ តារាង",
+InsertLineLbl		: "បន្ទាត់",
+InsertLine			: "បន្ថែមបន្ទាត់ផ្តេក",
+InsertSpecialCharLbl: "អក្សរពិសេស",
+InsertSpecialChar	: "បន្ថែមអក្សរពិសេស",
+InsertSmileyLbl		: "រូបភាព",
+InsertSmiley		: "បន្ថែម រូបភាព",
+About				: "អំពី FCKeditor",
+Bold				: "អក្សរដិតធំ",
+Italic				: "អក្សរផ្តេក",
+Underline			: "ដិតបន្ទាត់ពីក្រោមអក្សរ",
+StrikeThrough		: "ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ",
+Subscript			: "អក្សរតូចក្រោម",
+Superscript			: "អក្សរតូចលើ",
+LeftJustify			: "តំរឹមឆ្វេង",
+CenterJustify		: "តំរឹមកណ្តាល",
+RightJustify		: "តំរឹមស្តាំ",
+BlockJustify		: "តំរឹមសងខាង",
+DecreaseIndent		: "បន្ថយការចូលបន្ទាត់",
+IncreaseIndent		: "បន្ថែមការចូលបន្ទាត់",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "សារឡើងវិញ",
+Redo				: "ធ្វើឡើងវិញ",
+NumberedListLbl		: "បញ្ជីជាអក្សរ",
+NumberedList		: "បន្ថែម/លប់ បញ្ជីជាអក្សរ",
+BulletedListLbl		: "បញ្ជីជារង្វង់មូល",
+BulletedList		: "បន្ថែម/លប់ បញ្ជីជារង្វង់មូល",
+ShowTableBorders	: "បង្ហាញស៊ុមតារាង",
+ShowDetails			: "បង្ហាញពិស្តារ",
+Style				: "ម៉ូត",
+FontFormat			: "រចនា",
+Font				: "ហ្វុង",
+FontSize			: "ទំហំ",
+TextColor			: "ពណ៌អក្សរ",
+BGColor				: "ពណ៌ផ្ទៃខាងក្រោយ",
+Source				: "កូត",
+Find				: "ស្វែងរក",
+Replace				: "ជំនួស",
+SpellCheck			: "ពិនិត្យអក្ខរាវិរុទ្ធ",
+UniversalKeyboard	: "ក្តារពុម្ភអក្សរសកល",
+PageBreakLbl		: "ការផ្តាច់ទំព័រ",
+PageBreak			: "បន្ថែម ការផ្តាច់ទំព័រ",
+
+Form			: "បែបបទ",
+Checkbox		: "ប្រអប់ជ្រើសរើស",
+RadioButton		: "ប៉ូតុនរង្វង់មូល",
+TextField		: "ជួរសរសេរអត្ថបទ",
+Textarea		: "តំបន់សរសេរអត្ថបទ",
+HiddenField		: "ជួរលាក់",
+Button			: "ប៉ូតុន",
+SelectionField	: "ជួរជ្រើសរើស",
+ImageButton		: "ប៉ូតុនរូបភាព",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "កែប្រែឈ្នាប់",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "លប់ជួរផ្តេក",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "លប់ជួរឈរ",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "លប់សែល",
+MergeCells			: "បញ្ជូលសែល",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "លប់តារាង",
+CellProperties		: "ការកំណត់សែល",
+TableProperties		: "ការកំណត់តារាង",
+ImageProperties		: "ការកំណត់រូបភាព",
+FlashProperties		: "ការកំណត់ Flash",
+
+AnchorProp			: "ការកំណត់យុថ្កា",
+ButtonProp			: "ការកំណត់ ប៉ូតុន",
+CheckboxProp		: "ការកំណត់ប្រអប់ជ្រើសរើស",
+HiddenFieldProp		: "ការកំណត់ជួរលាក់",
+RadioButtonProp		: "ការកំណត់ប៉ូតុនរង្វង់",
+ImageButtonProp		: "ការកំណត់ប៉ូតុនរូបភាព",
+TextFieldProp		: "ការកំណត់ជួរអត្ថបទ",
+SelectionFieldProp	: "ការកំណត់ជួរជ្រើសរើស",
+TextareaProp		: "ការកំណត់កន្លែងសរសេរអត្ថបទ",
+FormProp			: "ការកំណត់បែបបទ",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "កំពុងដំណើរការ XHTML ។ សូមរងចាំ...",
+Done				: "ចប់រួចរាល់",
+PasteWordConfirm	: "អត្ថបទដែលលោកអ្នកបំរុងចំលងដាក់ ហាក់បីដូចជាត្រូវចំលងមកពីកម្មវិធី​Word​។ តើលោកអ្នកចង់សំអាតមុនចំលងអត្ថបទដាក់ទេ?",
+NotCompatiblePaste	: "ពាក្យបញ្ជានេះប្រើបានតែជាមួយ Internet Explorer កំរិត 5.5 រឺ លើសនេះ ។ តើលោកអ្នកចង់ចំលងដាក់ដោយមិនចាំបាច់សំអាតទេ?",
+UnknownToolbarItem	: "វត្ថុលើរបាឧបរកណ៍ មិនស្គាល់ \"%1\"",
+UnknownCommand		: "ឈ្មោះពាក្យបញ្ជា មិនស្គាល់ \"%1\"",
+NotImplemented		: "ពាក្យបញ្ជា មិនបានអនុវត្ត",
+UnknownToolbarSet	: "របាឧបរកណ៍ \"%1\" ពុំមាន ។",
+NoActiveX			: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​អាចធ្វើអោយលោកអ្នកមិនអាចប្រើមុខងារខ្លះរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។ លោកអ្នកត្រូវកំណត់អោយ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាត់បង់មុខងារណាមួយរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "វីនដូវមិនអាចបើកបានទេ ។ សូមពិនិត្យចំពោះកម្មវិធីបិទ វីនដូវលោត (popup) ថាតើវាដំណើរការរឺទេ ។",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "យល់ព្រម",
+DlgBtnCancel		: "មិនយល់ព្រម",
+DlgBtnClose			: "បិទ",
+DlgBtnBrowseServer	: "មើល",
+DlgAdvancedTag		: "កំរិតខ្ពស់",
+DlgOpOther			: "<ផ្សេងទៅត>",
+DlgInfoTab			: "ពត៌មាន",
+DlgAlertUrl			: "សូមសរសេរ URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<មិនមែន>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ទិសដៅភាសា",
+DlgGenLangDirLtr	: "ពីឆ្វេងទៅស្តាំ(LTR)",
+DlgGenLangDirRtl	: "ពីស្តាំទៅឆ្វេង(RTL)",
+DlgGenLangCode		: "លេខកូតភាសា",
+DlgGenAccessKey		: "ឃី សំរាប់ចូល",
+DlgGenName			: "ឈ្មោះ",
+DlgGenTabIndex		: "លេខ Tab",
+DlgGenLongDescr		: "អធិប្បាយ URL វែង",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "ចំណងជើង ប្រឹក្សា",
+DlgGenContType		: "ប្រភេទអត្ថបទ ប្រឹក្សា",
+DlgGenLinkCharset	: "លេខកូតអក្សររបស់ឈ្នាប់",
+DlgGenStyle			: "ម៉ូត",
+
+// Image Dialog
+DlgImgTitle			: "ការកំណត់រូបភាព",
+DlgImgInfoTab		: "ពត៌មានអំពីរូបភាព",
+DlgImgBtnUpload		: "បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា",
+DlgImgURL			: "URL",
+DlgImgUpload		: "ទាញយក",
+DlgImgAlt			: "អត្ថបទជំនួស",
+DlgImgWidth			: "ទទឹង",
+DlgImgHeight		: "កំពស់",
+DlgImgLockRatio		: "អត្រាឡុក",
+DlgBtnResetSize		: "កំណត់ទំហំឡើងវិញ",
+DlgImgBorder		: "ស៊ុម",
+DlgImgHSpace		: "គំលាតទទឹង",
+DlgImgVSpace		: "គំលាតបណ្តោយ",
+DlgImgAlign			: "កំណត់ទីតាំង",
+DlgImgAlignLeft		: "ខាងឆ្វង",
+DlgImgAlignAbsBottom: "Abs Bottom",	//MISSING
+DlgImgAlignAbsMiddle: "Abs Middle",	//MISSING
+DlgImgAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgImgAlignBottom	: "ខាងក្រោម",
+DlgImgAlignMiddle	: "កណ្តាល",
+DlgImgAlignRight	: "ខាងស្តាំ",
+DlgImgAlignTextTop	: "លើអត្ថបទ",
+DlgImgAlignTop		: "ខាងលើ",
+DlgImgPreview		: "មើលសាកល្បង",
+DlgImgAlertUrl		: "សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព",
+DlgImgLinkTab		: "ឈ្នាប់",
+
+// Flash Dialog
+DlgFlashTitle		: "ការកំណត់ Flash",
+DlgFlashChkPlay		: "លេងដោយស្វ័យប្រវត្ត",
+DlgFlashChkLoop		: "ចំនួនដង",
+DlgFlashChkMenu		: "បង្ហាញ មឺនុយរបស់ Flash",
+DlgFlashScale		: "ទំហំ",
+DlgFlashScaleAll	: "បង្ហាញទាំងអស់",
+DlgFlashScaleNoBorder	: "មិនបង្ហាញស៊ុម",
+DlgFlashScaleFit	: "ត្រូវល្មម",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ឈ្នាប់",
+DlgLnkInfoTab		: "ពត៌មានអំពីឈ្នាប់",
+DlgLnkTargetTab		: "គោលដៅ",
+
+DlgLnkType			: "ប្រភេទឈ្នាប់",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "យុថ្កានៅក្នុងទំព័រនេះ",
+DlgLnkTypeEMail		: "អ៊ីមែល",
+DlgLnkProto			: "ប្រូតូកូល",
+DlgLnkProtoOther	: "<ផ្សេងទៀត>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ជ្រើសរើសយុថ្កា",
+DlgLnkAnchorByName	: "តាមឈ្មោះរបស់យុថ្កា",
+DlgLnkAnchorById	: "តាម Id",
+DlgLnkNoAnchors		: "(No anchors available in the document)",	//MISSING
+DlgLnkEMail			: "អ៊ីមែល",
+DlgLnkEMailSubject	: "ចំណងជើងអត្ថបទ",
+DlgLnkEMailBody		: "អត្ថបទ",
+DlgLnkUpload		: "ទាញយក",
+DlgLnkBtnUpload		: "ទាញយក",
+
+DlgLnkTarget		: "គោលដៅ",
+DlgLnkTargetFrame	: "<ហ្វ្រេម>",
+DlgLnkTargetPopup	: "<វីនដូវ លោត>",
+DlgLnkTargetBlank	: "វីនដូវថ្មី (_blank)",
+DlgLnkTargetParent	: "វីនដូវមេ (_parent)",
+DlgLnkTargetSelf	: "វីនដូវដដែល (_self)",
+DlgLnkTargetTop		: "វីនដូវនៅលើគេ(_top)",
+DlgLnkTargetFrameName	: "ឈ្មោះហ្រ្វេមដែលជាគោលដៅ",
+DlgLnkPopWinName	: "ឈ្មោះវីនដូវលោត",
+DlgLnkPopWinFeat	: "លក្ខណះរបស់វីនដូលលោត",
+DlgLnkPopResize		: "ទំហំអាចផ្លាស់ប្តូរ",
+DlgLnkPopLocation	: "របា ទីតាំង",
+DlgLnkPopMenu		: "របា មឺនុយ",
+DlgLnkPopScroll		: "របា ទាញ",
+DlgLnkPopStatus		: "របា ពត៌មាន",
+DlgLnkPopToolbar	: "របា ឩបករណ៍",
+DlgLnkPopFullScrn	: "អេក្រុងពេញ(IE)",
+DlgLnkPopDependent	: "អាស្រ័យលើ (Netscape)",
+DlgLnkPopWidth		: "ទទឹង",
+DlgLnkPopHeight		: "កំពស់",
+DlgLnkPopLeft		: "ទីតាំងខាងឆ្វេង",
+DlgLnkPopTop		: "ទីតាំងខាងលើ",
+
+DlnLnkMsgNoUrl		: "សូមសរសេរ អាស័យដ្ឋាន URL",
+DlnLnkMsgNoEMail	: "សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល",
+DlnLnkMsgNoAnchor	: "សូមជ្រើសរើស យុថ្កា",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "ជ្រើសរើស ពណ៌",
+DlgColorBtnClear	: "លប់",
+DlgColorHighlight	: "ផាត់ពណ៌",
+DlgColorSelected	: "បានជ្រើសរើស",
+
+// Smiley Dialog
+DlgSmileyTitle		: "បញ្ជូលរូបភាព",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "តូអក្សរពិសេស",
+
+// Table Dialog
+DlgTableTitle		: "ការកំណត់ តារាង",
+DlgTableRows		: "ជួរផ្តេក",
+DlgTableColumns		: "ជួរឈរ",
+DlgTableBorder		: "ទំហំស៊ុម",
+DlgTableAlign		: "ការកំណត់ទីតាំង",
+DlgTableAlignNotSet	: "<មិនកំណត់>",
+DlgTableAlignLeft	: "ខាងឆ្វេង",
+DlgTableAlignCenter	: "កណ្តាល",
+DlgTableAlignRight	: "ខាងស្តាំ",
+DlgTableWidth		: "ទទឹង",
+DlgTableWidthPx		: "ភីកសែល",
+DlgTableWidthPc		: "ភាគរយ",
+DlgTableHeight		: "កំពស់",
+DlgTableCellSpace	: "គំលាតសែល",
+DlgTableCellPad		: "គែមសែល",
+DlgTableCaption		: "ចំណងជើង",
+DlgTableSummary		: "សេចក្តីសង្ខេប",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "ការកំណត់ សែល",
+DlgCellWidth		: "ទទឹង",
+DlgCellWidthPx		: "ភីកសែល",
+DlgCellWidthPc		: "ភាគរយ",
+DlgCellHeight		: "កំពស់",
+DlgCellWordWrap		: "បង្ហាញអត្ថបទទាំងអស់",
+DlgCellWordWrapNotSet	: "<មិនកំណត់>",
+DlgCellWordWrapYes	: "បាទ(ចា)",
+DlgCellWordWrapNo	: "ទេ",
+DlgCellHorAlign		: "តំរឹមផ្តេក",
+DlgCellHorAlignNotSet	: "<មិនកំណត់>",
+DlgCellHorAlignLeft	: "ខាងឆ្វេង",
+DlgCellHorAlignCenter	: "កណ្តាល",
+DlgCellHorAlignRight: "Right",	//MISSING
+DlgCellVerAlign		: "តំរឹមឈរ",
+DlgCellVerAlignNotSet	: "<មិនកណត់>",
+DlgCellVerAlignTop	: "ខាងលើ",
+DlgCellVerAlignMiddle	: "កណ្តាល",
+DlgCellVerAlignBottom	: "ខាងក្រោម",
+DlgCellVerAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "បញ្ជូលជួរផ្តេក",
+DlgCellCollSpan		: "បញ្ជូលជួរឈរ",
+DlgCellBackColor	: "ពណ៌ផ្នែកខាងក្រោម",
+DlgCellBorderColor	: "ពណ៌ស៊ុម",
+DlgCellBtnSelect	: "ជ្រើសរើស...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "ស្វែងរក",
+DlgFindFindBtn		: "ស្វែងរក",
+DlgFindNotFoundMsg	: "ពាក្យនេះ រកមិនឃើញទេ ។",
+
+// Replace Dialog
+DlgReplaceTitle			: "ជំនួស",
+DlgReplaceFindLbl		: "ស្វែងរកអ្វី:",
+DlgReplaceReplaceLbl	: "ជំនួសជាមួយ:",
+DlgReplaceCaseChk		: "ករណ៉ត្រូវរក",
+DlgReplaceReplaceBtn	: "ជំនួស",
+DlgReplaceReplAllBtn	: "ជំនួសទាំងអស់",
+DlgReplaceWordChk		: "ត្រូវពាក្យទាំងអស់",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។",
+PasteErrorCopy	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។",
+
+PasteAsText		: "ចំលងដាក់អត្ថបទធម្មតា",
+PasteFromWord	: "ចំលងពាក្យពីកម្មវិធី Word",
+
+DlgPasteMsg2	: "សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "មិនគិតអំពីប្រភេទពុម្ភអក្សរ",
+DlgPasteRemoveStyles	: "លប់ម៉ូត",
+
+// Color Picker
+ColorAutomatic	: "ស្វ័យប្រវត្ត",
+ColorMoreColors	: "ពណ៌ផ្សេងទៀត..",
+
+// Document Properties
+DocProps		: "ការកំណត់ ឯកសារ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ការកំណត់ចំណងជើងយុទ្ធថ្កា",
+DlgAnchorName		: "ឈ្មោះយុទ្ធថ្កា",
+DlgAnchorErrorName	: "សូមសរសេរ ឈ្មោះយុទ្ធថ្កា",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "គ្មានក្នុងវចនានុក្រម",
+DlgSpellChangeTo		: "ផ្លាស់ប្តូរទៅ",
+DlgSpellBtnIgnore		: "មិនផ្លាស់ប្តូរ",
+DlgSpellBtnIgnoreAll	: "មិនផ្លាស់ប្តូរ ទាំងអស់",
+DlgSpellBtnReplace		: "ជំនួស",
+DlgSpellBtnReplaceAll	: "ជំនួសទាំងអស់",
+DlgSpellBtnUndo			: "សារឡើងវិញ",
+DlgSpellNoSuggestions	: "- គ្មានសំណើរ -",
+DlgSpellProgress		: "កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...",
+DlgSpellNoMispell		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស",
+DlgSpellNoChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ",
+DlgSpellOneChange		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ",
+DlgSpellManyChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ",
+
+IeSpellDownload			: "ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?",
+
+// Button Dialog
+DlgButtonText		: "អត្ថបទ(តំលៃ)",
+DlgButtonType		: "ប្រភេទ",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "ឈ្មោះ",
+DlgCheckboxValue	: "តំលៃ",
+DlgCheckboxSelected	: "បានជ្រើសរើស",
+
+// Form Dialog
+DlgFormName		: "ឈ្មោះ",
+DlgFormAction	: "សកម្មភាព",
+DlgFormMethod	: "វិធី",
+
+// Select Field Dialog
+DlgSelectName		: "ឈ្មោះ",
+DlgSelectValue		: "តំលៃ",
+DlgSelectSize		: "ទំហំ",
+DlgSelectLines		: "បន្ទាត់",
+DlgSelectChkMulti	: "អនុញ្ញាតអោយជ្រើសរើសច្រើន",
+DlgSelectOpAvail	: "ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន",
+DlgSelectOpText		: "ពាក្យ",
+DlgSelectOpValue	: "តំលៃ",
+DlgSelectBtnAdd		: "បន្ថែម",
+DlgSelectBtnModify	: "ផ្លាស់ប្តូរ",
+DlgSelectBtnUp		: "លើ",
+DlgSelectBtnDown	: "ក្រោម",
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "លប់",
+
+// Textarea Dialog
+DlgTextareaName	: "ឈ្មោះ",
+DlgTextareaCols	: "ជូរឈរ",
+DlgTextareaRows	: "ជូរផ្តេក",
+
+// Text Field Dialog
+DlgTextName			: "ឈ្មោះ",
+DlgTextValue		: "តំលៃ",
+DlgTextCharWidth	: "ទទឹង អក្សរ",
+DlgTextMaxChars		: "អក្សរអតិបរិមា",
+DlgTextType			: "ប្រភេទ",
+DlgTextTypeText		: "ពាក្យ",
+DlgTextTypePass		: "ពាក្យសំងាត់",
+
+// Hidden Field Dialog
+DlgHiddenName	: "ឈ្មោះ",
+DlgHiddenValue	: "តំលៃ",
+
+// Bulleted List Dialog
+BulletedListProp	: "កំណត់បញ្ជីរង្វង់",
+NumberedListProp	: "កំណត់បញ្េជីលេខ",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "ប្រភេទ",
+DlgLstTypeCircle	: "រង្វង់",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "ការេ",
+DlgLstTypeNumbers	: "លេខ(1, 2, 3)",
+DlgLstTypeLCase		: "អក្សរតូច(a, b, c)",
+DlgLstTypeUCase		: "អក្សរធំ(A, B, C)",
+DlgLstTypeSRoman	: "អក្សរឡាតាំងតូច(i, ii, iii)",
+DlgLstTypeLRoman	: "អក្សរឡាតាំងធំ(I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "ទូទៅ",
+DlgDocBackTab		: "ផ្នែកខាងក្រោយ",
+DlgDocColorsTab		: "ទំព័រ​និង ស៊ុម",
+DlgDocMetaTab		: "ទិន្នន័យមេ",
+
+DlgDocPageTitle		: "ចំណងជើងទំព័រ",
+DlgDocLangDir		: "ទិសដៅសរសេរភាសា",
+DlgDocLangDirLTR	: "ពីឆ្វេងទៅស្ដាំ(LTR)",
+DlgDocLangDirRTL	: "ពីស្ដាំទៅឆ្វេង(RTL)",
+DlgDocLangCode		: "លេខកូតភាសា",
+DlgDocCharSet		: "កំណត់លេខកូតភាសា",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "កំណត់លេខកូតភាសាផ្សេងទៀត",
+
+DlgDocDocType		: "ប្រភេទក្បាលទំព័រ",
+DlgDocDocTypeOther	: "ប្រភេទក្បាលទំព័រផ្សេងទៀត",
+DlgDocIncXHTML		: "បញ្ជូល XHTML",
+DlgDocBgColor		: "ពណ៌ខាងក្រោម",
+DlgDocBgImage		: "URL របស់រូបភាពខាងក្រោម",
+DlgDocBgNoScroll	: "ទំព័រក្រោមមិនប្តូរ",
+DlgDocCText			: "អត្តបទ",
+DlgDocCLink			: "ឈ្នាប់",
+DlgDocCVisited		: "ឈ្នាប់មើលហើយ",
+DlgDocCActive		: "ឈ្នាប់កំពុងមើល",
+DlgDocMargins		: "ស៊ុមទំព័រ",
+DlgDocMaTop			: "លើ",
+DlgDocMaLeft		: "ឆ្វេង",
+DlgDocMaRight		: "ស្ដាំ",
+DlgDocMaBottom		: "ក្រោម",
+DlgDocMeIndex		: "ពាក្យនៅក្នុងឯកសារ (ផ្តាច់ពីគ្នាដោយក្បៀស)",
+DlgDocMeDescr		: "សេចក្តីអត្ថាធិប្បាយអំពីឯកសារ",
+DlgDocMeAuthor		: "អ្នកនិពន្ធ",
+DlgDocMeCopy		: "រក្សាសិទ្ធិ៏",
+DlgDocPreview		: "មើលសាកល្បង",
+
+// Templates Dialog
+Templates			: "ឯកសារគំរូ",
+DlgTemplatesTitle	: "ឯកសារគំរូ របស់អត្ថន័យ",
+DlgTemplatesSelMsg	: "សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):",
+DlgTemplatesLoading	: "កំពុងអានបញ្ជីឯកសារគំរូ ។ សូមរងចាំ...",
+DlgTemplatesNoTpl	: "(ពុំមានឯកសារគំរូត្រូវបានកំណត់)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "អំពី",
+DlgAboutBrowserInfoTab	: "ព៌តមានកម្មវិធីរុករក",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "ជំនាន់",
+DlgAboutInfo		: "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eu.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eu.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eu.js	(revision 1610)
@@ -0,0 +1,540 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Basque language file.
+ * Euskara hizkuntza fitxategia.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Estutu Tresna Barra",
+ToolbarExpand		: "Hedatu Tresna Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Gorde",
+NewPage				: "Orrialde Berria",
+Preview				: "Aurrebista",
+Cut					: "Ebaki",
+Copy				: "Kopiatu",
+Paste				: "Itsatsi",
+PasteText			: "Itsatsi testu bezala",
+PasteWord			: "Itsatsi Word-etik",
+Print				: "Inprimatu",
+SelectAll			: "Hautatu dena",
+RemoveFormat		: "Kendu Formatua",
+InsertLinkLbl		: "Esteka",
+InsertLink			: "Txertatu/Editatu Esteka",
+RemoveLink			: "Kendu Esteka",
+VisitLink			: "Ireki Esteka",
+Anchor				: "Aingura",
+AnchorDelete		: "Ezabatu Aingura",
+InsertImageLbl		: "Irudia",
+InsertImage			: "Txertatu/Editatu Irudia",
+InsertFlashLbl		: "Flasha",
+InsertFlash			: "Txertatu/Editatu Flasha",
+InsertTableLbl		: "Taula",
+InsertTable			: "Txertatu/Editatu Taula",
+InsertLineLbl		: "Lerroa",
+InsertLine			: "Txertatu Marra Horizontala",
+InsertSpecialCharLbl: "Karaktere Berezia",
+InsertSpecialChar	: "Txertatu Karaktere Berezia",
+InsertSmileyLbl		: "Aurpegierak",
+InsertSmiley		: "Txertatu Aurpegierak",
+About				: "FCKeditor-ri buruz",
+Bold				: "Lodia",
+Italic				: "Etzana",
+Underline			: "Azpimarratu",
+StrikeThrough		: "Marratua",
+Subscript			: "Azpi-indize",
+Superscript			: "Goi-indize",
+LeftJustify			: "Lerrokatu Ezkerrean",
+CenterJustify		: "Lerrokatu Erdian",
+RightJustify		: "Lerrokatu Eskuman",
+BlockJustify		: "Justifikatu",
+DecreaseIndent		: "Txikitu Koska",
+IncreaseIndent		: "Handitu Koska",
+Blockquote			: "Aipamen blokea",
+CreateDiv			: "Sortu Div Edukitzailea",
+EditDiv				: "Editatu Div Edukitzailea",
+DeleteDiv			: "Ezabatu Div Edukitzailea",
+Undo				: "Desegin",
+Redo				: "Berregin",
+NumberedListLbl		: "Zenbakidun Zerrenda",
+NumberedList		: "Txertatu/Kendu Zenbakidun zerrenda",
+BulletedListLbl		: "Buletdun Zerrenda",
+BulletedList		: "Txertatu/Kendu Buletdun zerrenda",
+ShowTableBorders	: "Erakutsi Taularen Ertzak",
+ShowDetails			: "Erakutsi Xehetasunak",
+Style				: "Estiloa",
+FontFormat			: "Formatua",
+Font				: "Letra-tipoa",
+FontSize			: "Tamaina",
+TextColor			: "Testu Kolorea",
+BGColor				: "Atzeko kolorea",
+Source				: "HTML Iturburua",
+Find				: "Bilatu",
+Replace				: "Ordezkatu",
+SpellCheck			: "Ortografia",
+UniversalKeyboard	: "Teklatu Unibertsala",
+PageBreakLbl		: "Orrialde-jauzia",
+PageBreak			: "Txertatu Orrialde-jauzia",
+
+Form			: "Formularioa",
+Checkbox		: "Kontrol-laukia",
+RadioButton		: "Aukera-botoia",
+TextField		: "Testu Eremua",
+Textarea		: "Testu-area",
+HiddenField		: "Ezkutuko Eremua",
+Button			: "Botoia",
+SelectionField	: "Hautespen Eremua",
+ImageButton		: "Irudi Botoia",
+
+FitWindow		: "Maximizatu editorearen tamaina",
+ShowBlocks		: "Blokeak erakutsi",
+
+// Context Menu
+EditLink			: "Aldatu Esteka",
+CellCM				: "Gelaxka",
+RowCM				: "Errenkada",
+ColumnCM			: "Zutabea",
+InsertRowAfter		: "Txertatu Lerroa Ostean",
+InsertRowBefore		: "Txertatu Lerroa Aurretik",
+DeleteRows			: "Ezabatu Errenkadak",
+InsertColumnAfter	: "Txertatu Zutabea Ostean",
+InsertColumnBefore	: "Txertatu Zutabea Aurretik",
+DeleteColumns		: "Ezabatu Zutabeak",
+InsertCellAfter		: "Txertatu Gelaxka Ostean",
+InsertCellBefore	: "Txertatu Gelaxka Aurretik",
+DeleteCells			: "Kendu Gelaxkak",
+MergeCells			: "Batu Gelaxkak",
+MergeRight			: "Elkartu Eskumara",
+MergeDown			: "Elkartu Behera",
+HorizontalSplitCell	: "Banatu Gelaxkak Horizontalki",
+VerticalSplitCell	: "Banatu Gelaxkak Bertikalki",
+TableDelete			: "Ezabatu Taula",
+CellProperties		: "Gelaxkaren Ezaugarriak",
+TableProperties		: "Taularen Ezaugarriak",
+ImageProperties		: "Irudiaren Ezaugarriak",
+FlashProperties		: "Flasharen Ezaugarriak",
+
+AnchorProp			: "Ainguraren Ezaugarriak",
+ButtonProp			: "Botoiaren Ezaugarriak",
+CheckboxProp		: "Kontrol-laukiko Ezaugarriak",
+HiddenFieldProp		: "Ezkutuko Eremuaren Ezaugarriak",
+RadioButtonProp		: "Aukera-botoiaren Ezaugarriak",
+ImageButtonProp		: "Irudi Botoiaren Ezaugarriak",
+TextFieldProp		: "Testu Eremuaren Ezaugarriak",
+SelectionFieldProp	: "Hautespen Eremuaren Ezaugarriak",
+TextareaProp		: "Testu-arearen Ezaugarriak",
+FormProp			: "Formularioaren Ezaugarriak",
+
+FontFormats			: "Arrunta;Formateatua;Helbidea;Izenburua 1;Izenburua 2;Izenburua 3;Izenburua 4;Izenburua 5;Izenburua 6;Paragrafoa (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML Prozesatzen. Itxaron mesedez...",
+Done				: "Eginda",
+PasteWordConfirm	: "Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?",
+NotCompatiblePaste	: "Komando hau Internet Explorer 5.5 bertsiorako edo ondorengoentzako erabilgarria dago. Garbitu gabe itsatsi nahi duzu?",
+UnknownToolbarItem	: "Ataza barrako elementu ezezaguna \"%1\"",
+UnknownCommand		: "Komando izen ezezaguna \"%1\"",
+NotImplemented		: "Komando ez inplementatua",
+UnknownToolbarSet	: "Ataza barra \"%1\" taldea ez da existitzen",
+NoActiveX			: "Zure nabigatzailearen segurtasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta pluginak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.",
+BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+DialogBlocked		: "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+VisitLinkBlocked	: "Ezin da leiho berri bat ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+
+// Dialogs
+DlgBtnOK			: "Ados",
+DlgBtnCancel		: "Utzi",
+DlgBtnClose			: "Itxi",
+DlgBtnBrowseServer	: "Zerbitzaria arakatu",
+DlgAdvancedTag		: "Aurreratua",
+DlgOpOther			: "<Bestelakoak>",
+DlgInfoTab			: "Informazioa",
+DlgAlertUrl			: "Mesedez URLa idatzi ezazu",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Ezarri gabe>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Hizkuntzaren Norabidea",
+DlgGenLangDirLtr	: "Ezkerretik Eskumara(LTR)",
+DlgGenLangDirRtl	: "Eskumatik Ezkerrera (RTL)",
+DlgGenLangCode		: "Hizkuntza Kodea",
+DlgGenAccessKey		: "Sarbide-gakoa",
+DlgGenName			: "Izena",
+DlgGenTabIndex		: "Tabulazio Indizea",
+DlgGenLongDescr		: "URL Deskribapen Luzea",
+DlgGenClass			: "Estilo-orriko Klaseak",
+DlgGenTitle			: "Izenburua",
+DlgGenContType		: "Eduki Mota (Content Type)",
+DlgGenLinkCharset	: "Estekatutako Karaktere Multzoa",
+DlgGenStyle			: "Estiloa",
+
+// Image Dialog
+DlgImgTitle			: "Irudi Ezaugarriak",
+DlgImgInfoTab		: "Irudi informazioa",
+DlgImgBtnUpload		: "Zerbitzarira bidalia",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Gora Kargatu",
+DlgImgAlt			: "Ordezko Testua",
+DlgImgWidth			: "Zabalera",
+DlgImgHeight		: "Altuera",
+DlgImgLockRatio		: "Erlazioa Blokeatu",
+DlgBtnResetSize		: "Tamaina Berrezarri",
+DlgImgBorder		: "Ertza",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Lerrokatu",
+DlgImgAlignLeft		: "Ezkerrera",
+DlgImgAlignAbsBottom: "Abs Behean",
+DlgImgAlignAbsMiddle: "Abs Erdian",
+DlgImgAlignBaseline	: "Oinan",
+DlgImgAlignBottom	: "Behean",
+DlgImgAlignMiddle	: "Erdian",
+DlgImgAlignRight	: "Eskuman",
+DlgImgAlignTextTop	: "Testua Goian",
+DlgImgAlignTop		: "Goian",
+DlgImgPreview		: "Aurrebista",
+DlgImgAlertUrl		: "Mesedez Irudiaren URLa idatzi",
+DlgImgLinkTab		: "Esteka",
+
+// Flash Dialog
+DlgFlashTitle		: "Flasharen Ezaugarriak",
+DlgFlashChkPlay		: "Automatikoki Erreproduzitu",
+DlgFlashChkLoop		: "Begizta",
+DlgFlashChkMenu		: "Flasharen Menua Gaitu",
+DlgFlashScale		: "Eskalatu",
+DlgFlashScaleAll	: "Dena erakutsi",
+DlgFlashScaleNoBorder	: "Ertzik gabe",
+DlgFlashScaleFit	: "Doitu",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Esteka",
+DlgLnkInfoTab		: "Estekaren Informazioa",
+DlgLnkTargetTab		: "Helburua",
+
+DlgLnkType			: "Esteka Mota",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Aingura orrialde honetan",
+DlgLnkTypeEMail		: "ePosta",
+DlgLnkProto			: "Protokoloa",
+DlgLnkProtoOther	: "<Beste batzuk>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Aingura bat hautatu",
+DlgLnkAnchorByName	: "Aingura izenagatik",
+DlgLnkAnchorById	: "Elementuaren ID-gatik",
+DlgLnkNoAnchors		: "(Ez daude aingurak eskuragarri dokumentuan)",
+DlgLnkEMail			: "ePosta Helbidea",
+DlgLnkEMailSubject	: "Mezuaren Gaia",
+DlgLnkEMailBody		: "Mezuaren Gorputza",
+DlgLnkUpload		: "Gora kargatu",
+DlgLnkBtnUpload		: "Zerbitzarira bidali",
+
+DlgLnkTarget		: "Target (Helburua)",
+DlgLnkTargetFrame	: "<marko>",
+DlgLnkTargetPopup	: "<popup leihoa>",
+DlgLnkTargetBlank	: "Leiho Berria (_blank)",
+DlgLnkTargetParent	: "Leiho Gurasoa (_parent)",
+DlgLnkTargetSelf	: "Leiho Berdina (_self)",
+DlgLnkTargetTop		: "Goiko Leihoa (_top)",
+DlgLnkTargetFrameName	: "Marko Helburuaren Izena",
+DlgLnkPopWinName	: "Popup Leihoaren Izena",
+DlgLnkPopWinFeat	: "Popup Leihoaren Ezaugarriak",
+DlgLnkPopResize		: "Tamaina Aldakorra",
+DlgLnkPopLocation	: "Kokaleku Barra",
+DlgLnkPopMenu		: "Menu Barra",
+DlgLnkPopScroll		: "Korritze Barrak",
+DlgLnkPopStatus		: "Egoera Barra",
+DlgLnkPopToolbar	: "Tresna Barra",
+DlgLnkPopFullScrn	: "Pantaila Osoa (IE)",
+DlgLnkPopDependent	: "Menpekoa (Netscape)",
+DlgLnkPopWidth		: "Zabalera",
+DlgLnkPopHeight		: "Altuera",
+DlgLnkPopLeft		: "Ezkerreko  Posizioa",
+DlgLnkPopTop		: "Goiko Posizioa",
+
+DlnLnkMsgNoUrl		: "Mesedez URL esteka idatzi",
+DlnLnkMsgNoEMail	: "Mesedez ePosta helbidea idatzi",
+DlnLnkMsgNoAnchor	: "Mesedez aingura bat aukeratu",
+DlnLnkMsgInvPopName	: "Popup leihoaren izenak karaktere alfabetiko batekin hasi behar du eta eta ezin du zuriunerik izan",
+
+// Color Dialog
+DlgColorTitle		: "Kolore Aukeraketa",
+DlgColorBtnClear	: "Garbitu",
+DlgColorHighlight	: "Nabarmendu",
+DlgColorSelected	: "Aukeratuta",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Aurpegiera Sartu",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Karaktere Berezia Aukeratu",
+
+// Table Dialog
+DlgTableTitle		: "Taularen Ezaugarriak",
+DlgTableRows		: "Lerroak",
+DlgTableColumns		: "Zutabeak",
+DlgTableBorder		: "Ertzaren Zabalera",
+DlgTableAlign		: "Lerrokatu",
+DlgTableAlignNotSet	: "<Ezarri gabe>",
+DlgTableAlignLeft	: "Ezkerrean",
+DlgTableAlignCenter	: "Erdian",
+DlgTableAlignRight	: "Eskuman",
+DlgTableWidth		: "Zabalera",
+DlgTableWidthPx		: "pixel",
+DlgTableWidthPc		: "ehuneko",
+DlgTableHeight		: "Altuera",
+DlgTableCellSpace	: "Gelaxka arteko tartea",
+DlgTableCellPad		: "Gelaxken betegarria",
+DlgTableCaption		: "Epigrafea",
+DlgTableSummary		: "Laburpena",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Gelaxken Ezaugarriak",
+DlgCellWidth		: "Zabalera",
+DlgCellWidthPx		: "pixel",
+DlgCellWidthPc		: "ehuneko",
+DlgCellHeight		: "Altuera",
+DlgCellWordWrap		: "Itzulbira",
+DlgCellWordWrapNotSet	: "<Ezarri gabe>",
+DlgCellWordWrapYes	: "Bai",
+DlgCellWordWrapNo	: "Ez",
+DlgCellHorAlign		: "Lerrokatu Horizontalki",
+DlgCellHorAlignNotSet	: "<Ezarri gabe>",
+DlgCellHorAlignLeft	: "Ezkerrean",
+DlgCellHorAlignCenter	: "Erdian",
+DlgCellHorAlignRight: "Eskuman",
+DlgCellVerAlign		: "Lerrokatu Bertikalki",
+DlgCellVerAlignNotSet	: "<Ezarri gabe>",
+DlgCellVerAlignTop	: "Goian",
+DlgCellVerAlignMiddle	: "Erdian",
+DlgCellVerAlignBottom	: "Behean",
+DlgCellVerAlignBaseline	: "Oinean",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Lerroak Hedatu",
+DlgCellCollSpan		: "Zutabeak Hedatu",
+DlgCellBackColor	: "Atzeko Kolorea",
+DlgCellBorderColor	: "Ertzako Kolorea",
+DlgCellBtnSelect	: "Aukeratu...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Bilatu eta Ordeztu",
+
+// Find Dialog
+DlgFindTitle		: "Bilaketa",
+DlgFindFindBtn		: "Bilatu",
+DlgFindNotFoundMsg	: "Idatzitako testua ez da topatu.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ordeztu",
+DlgReplaceFindLbl		: "Zer bilatu:",
+DlgReplaceReplaceLbl	: "Zerekin ordeztu:",
+DlgReplaceCaseChk		: "Maiuskula/minuskula",
+DlgReplaceReplaceBtn	: "Ordeztu",
+DlgReplaceReplAllBtn	: "Ordeztu Guztiak",
+DlgReplaceWordChk		: "Esaldi osoa bilatu",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).",
+PasteErrorCopy	: "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).",
+
+PasteAsText		: "Testu Arrunta bezala Itsatsi",
+PasteFromWord	: "Word-etik itsatsi",
+
+DlgPasteMsg2	: "Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.",
+DlgPasteSec		: "Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.",
+DlgPasteIgnoreFont		: "Letra Motaren definizioa ezikusi",
+DlgPasteRemoveStyles	: "Estilo definizioak kendu",
+
+// Color Picker
+ColorAutomatic	: "Automatikoa",
+ColorMoreColors	: "Kolore gehiago...",
+
+// Document Properties
+DocProps		: "Dokumentuaren Ezarpenak",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ainguraren Ezaugarriak",
+DlgAnchorName		: "Ainguraren Izena",
+DlgAnchorErrorName	: "Idatzi ainguraren izena",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ez dago hiztegian",
+DlgSpellChangeTo		: "Honekin ordezkatu",
+DlgSpellBtnIgnore		: "Ezikusi",
+DlgSpellBtnIgnoreAll	: "Denak Ezikusi",
+DlgSpellBtnReplace		: "Ordezkatu",
+DlgSpellBtnReplaceAll	: "Denak Ordezkatu",
+DlgSpellBtnUndo			: "Desegin",
+DlgSpellNoSuggestions	: "- Iradokizunik ez -",
+DlgSpellProgress		: "Zuzenketa ortografikoa martxan...",
+DlgSpellNoMispell		: "Zuzenketa ortografikoa bukatuta: Akatsik ez",
+DlgSpellNoChanges		: "Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu",
+DlgSpellOneChange		: "Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da",
+DlgSpellManyChanges		: "Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira",
+
+IeSpellDownload			: "Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?",
+
+// Button Dialog
+DlgButtonText		: "Testua (Balorea)",
+DlgButtonType		: "Mota",
+DlgButtonTypeBtn	: "Botoia",
+DlgButtonTypeSbm	: "Bidali",
+DlgButtonTypeRst	: "Garbitu",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Izena",
+DlgCheckboxValue	: "Balorea",
+DlgCheckboxSelected	: "Hautatuta",
+
+// Form Dialog
+DlgFormName		: "Izena",
+DlgFormAction	: "Ekintza",
+DlgFormMethod	: "Metodoa",
+
+// Select Field Dialog
+DlgSelectName		: "Izena",
+DlgSelectValue		: "Balorea",
+DlgSelectSize		: "Tamaina",
+DlgSelectLines		: "lerro kopurura",
+DlgSelectChkMulti	: "Hautaketa anitzak baimendu",
+DlgSelectOpAvail	: "Aukera Eskuragarriak",
+DlgSelectOpText		: "Testua",
+DlgSelectOpValue	: "Balorea",
+DlgSelectBtnAdd		: "Gehitu",
+DlgSelectBtnModify	: "Aldatu",
+DlgSelectBtnUp		: "Gora",
+DlgSelectBtnDown	: "Behera",
+DlgSelectBtnSetValue : "Aukeratutako balorea ezarri",
+DlgSelectBtnDelete	: "Ezabatu",
+
+// Textarea Dialog
+DlgTextareaName	: "Izena",
+DlgTextareaCols	: "Zutabeak",
+DlgTextareaRows	: "Lerroak",
+
+// Text Field Dialog
+DlgTextName			: "Izena",
+DlgTextValue		: "Balorea",
+DlgTextCharWidth	: "Zabalera",
+DlgTextMaxChars		: "Zenbat karaktere gehienez",
+DlgTextType			: "Mota",
+DlgTextTypeText		: "Testua",
+DlgTextTypePass		: "Pasahitza",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Izena",
+DlgHiddenValue	: "Balorea",
+
+// Bulleted List Dialog
+BulletedListProp	: "Buletdun Zerrendaren Ezarpenak",
+NumberedListProp	: "Zenbakidun Zerrendaren Ezarpenak",
+DlgLstStart			: "Hasiera",
+DlgLstType			: "Mota",
+DlgLstTypeCircle	: "Zirkulua",
+DlgLstTypeDisc		: "Diskoa",
+DlgLstTypeSquare	: "Karratua",
+DlgLstTypeNumbers	: "Zenbakiak (1, 2, 3)",
+DlgLstTypeLCase		: "Letra xeheak (a, b, c)",
+DlgLstTypeUCase		: "Letra larriak (A, B, C)",
+DlgLstTypeSRoman	: "Erromatar zenbaki zeheak (i, ii, iii)",
+DlgLstTypeLRoman	: "Erromatar zenbaki larriak (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Orokorra",
+DlgDocBackTab		: "Atzealdea",
+DlgDocColorsTab		: "Koloreak eta Marjinak",
+DlgDocMetaTab		: "Meta Informazioa",
+
+DlgDocPageTitle		: "Orriaren Izenburua",
+DlgDocLangDir		: "Hizkuntzaren Norabidea",
+DlgDocLangDirLTR	: "Ezkerretik eskumara (LTR)",
+DlgDocLangDirRTL	: "Eskumatik ezkerrera (RTL)",
+DlgDocLangCode		: "Hizkuntzaren Kodea",
+DlgDocCharSet		: "Karaktere Multzoaren Kodeketa",
+DlgDocCharSetCE		: "Erdialdeko Europakoa",
+DlgDocCharSetCT		: "Txinatar Tradizionala (Big5)",
+DlgDocCharSetCR		: "Zirilikoa",
+DlgDocCharSetGR		: "Grekoa",
+DlgDocCharSetJP		: "Japoniarra",
+DlgDocCharSetKR		: "Korearra",
+DlgDocCharSetTR		: "Turkiarra",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Mendebaldeko Europakoa",
+DlgDocCharSetOther	: "Beste Karaktere Multzoko Kodeketa",
+
+DlgDocDocType		: "Document Type Goiburua",
+DlgDocDocTypeOther	: "Beste Document Type Goiburua",
+DlgDocIncXHTML		: "XHTML Ezarpenak",
+DlgDocBgColor		: "Atzeko Kolorea",
+DlgDocBgImage		: "Atzeko Irudiaren URL-a",
+DlgDocBgNoScroll	: "Korritze gabeko Atzealdea",
+DlgDocCText			: "Testua",
+DlgDocCLink			: "Estekak",
+DlgDocCVisited		: "Bisitatutako Estekak",
+DlgDocCActive		: "Esteka Aktiboa",
+DlgDocMargins		: "Orrialdearen marjinak",
+DlgDocMaTop			: "Goian",
+DlgDocMaLeft		: "Ezkerrean",
+DlgDocMaRight		: "Eskuman",
+DlgDocMaBottom		: "Behean",
+DlgDocMeIndex		: "Dokumentuaren Gako-hitzak (komarekin bananduta)",
+DlgDocMeDescr		: "Dokumentuaren Deskribapena",
+DlgDocMeAuthor		: "Egilea",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Aurrebista",
+
+// Templates Dialog
+Templates			: "Txantiloiak",
+DlgTemplatesTitle	: "Eduki Txantiloiak",
+DlgTemplatesSelMsg	: "Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):",
+DlgTemplatesLoading	: "Txantiloiak kargatzen. Itxaron mesedez...",
+DlgTemplatesNoTpl	: "(Ez dago definitutako txantiloirik)",
+DlgTemplatesReplace	: "Ordeztu oraingo edukiak",
+
+// About Dialog
+DlgAboutAboutTab	: "Honi buruz",
+DlgAboutBrowserInfoTab	: "Nabigatzailearen Informazioa",
+DlgAboutLicenseTab	: "Lizentzia",
+DlgAboutVersion		: "bertsioa",
+DlgAboutInfo		: "Informazio gehiago eskuratzeko hona joan",
+
+// Div Dialog
+DlgDivGeneralTab	: "Orokorra",
+DlgDivAdvancedTab	: "Aurreratua",
+DlgDivStyle		: "Estiloa",
+DlgDivInlineStyle	: "Inline Estiloa",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ko.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ko.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ko.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Korean language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "툴바 감추기",
+ToolbarExpand		: "툴바 보이기",
+
+// Toolbar Items and Context Menu
+Save				: "저장하기",
+NewPage				: "새 문서",
+Preview				: "미리보기",
+Cut					: "잘라내기",
+Copy				: "복사하기",
+Paste				: "붙여넣기",
+PasteText			: "텍스트로 붙여넣기",
+PasteWord			: "MS Word 형식에서 붙여넣기",
+Print				: "인쇄하기",
+SelectAll			: "전체선택",
+RemoveFormat		: "포맷 지우기",
+InsertLinkLbl		: "링크",
+InsertLink			: "링크 삽입/변경",
+RemoveLink			: "링크 삭제",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "책갈피 삽입/변경",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "이미지",
+InsertImage			: "이미지 삽입/변경",
+InsertFlashLbl		: "플래쉬",
+InsertFlash			: "플래쉬 삽입/변경",
+InsertTableLbl		: "표",
+InsertTable			: "표 삽입/변경",
+InsertLineLbl		: "수평선",
+InsertLine			: "수평선 삽입",
+InsertSpecialCharLbl: "특수문자 삽입",
+InsertSpecialChar	: "특수문자 삽입",
+InsertSmileyLbl		: "아이콘",
+InsertSmiley		: "아이콘 삽입",
+About				: "FCKeditor에 대하여",
+Bold				: "진하게",
+Italic				: "이텔릭",
+Underline			: "밑줄",
+StrikeThrough		: "취소선",
+Subscript			: "아래 첨자",
+Superscript			: "위 첨자",
+LeftJustify			: "왼쪽 정렬",
+CenterJustify		: "가운데 정렬",
+RightJustify		: "오른쪽 정렬",
+BlockJustify		: "양쪽 맞춤",
+DecreaseIndent		: "내어쓰기",
+IncreaseIndent		: "들여쓰기",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "취소",
+Redo				: "재실행",
+NumberedListLbl		: "순서있는 목록",
+NumberedList		: "순서있는 목록",
+BulletedListLbl		: "순서없는 목록",
+BulletedList		: "순서없는 목록",
+ShowTableBorders	: "표 테두리 보기",
+ShowDetails			: "문서기호 보기",
+Style				: "스타일",
+FontFormat			: "포맷",
+Font				: "폰트",
+FontSize			: "글자 크기",
+TextColor			: "글자 색상",
+BGColor				: "배경 색상",
+Source				: "소스",
+Find				: "찾기",
+Replace				: "바꾸기",
+SpellCheck			: "철자검사",
+UniversalKeyboard	: "다국어 입력기",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "폼",
+Checkbox		: "체크박스",
+RadioButton		: "라디오버튼",
+TextField		: "입력필드",
+Textarea		: "입력영역",
+HiddenField		: "숨김필드",
+Button			: "버튼",
+SelectionField	: "펼침목록",
+ImageButton		: "이미지버튼",
+
+FitWindow		: "에디터 최대화",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "링크 수정",
+CellCM				: "셀/칸(Cell)",
+RowCM				: "행(Row)",
+ColumnCM			: "열(Column)",
+InsertRowAfter		: "뒤에 행 삽입",
+InsertRowBefore		: "앞에 행 삽입",
+DeleteRows			: "가로줄 삭제",
+InsertColumnAfter	: "뒤에 열 삽입",
+InsertColumnBefore	: "앞에 열 삽입",
+DeleteColumns		: "세로줄 삭제",
+InsertCellAfter		: "뒤에 셀/칸 삽입",
+InsertCellBefore	: "앞에 셀/칸 삽입",
+DeleteCells			: "셀 삭제",
+MergeCells			: "셀 합치기",
+MergeRight			: "오른쪽 뭉치기",
+MergeDown			: "왼쪽 뭉치기",
+HorizontalSplitCell	: "수평 나누기",
+VerticalSplitCell	: "수직 나누기",
+TableDelete			: "표 삭제",
+CellProperties		: "셀 속성",
+TableProperties		: "표 속성",
+ImageProperties		: "이미지 속성",
+FlashProperties		: "플래쉬 속성",
+
+AnchorProp			: "책갈피 속성",
+ButtonProp			: "버튼 속성",
+CheckboxProp		: "체크박스 속성",
+HiddenFieldProp		: "숨김필드 속성",
+RadioButtonProp		: "라디오버튼 속성",
+ImageButtonProp		: "이미지버튼 속성",
+TextFieldProp		: "입력필드 속성",
+SelectionFieldProp	: "펼침목록 속성",
+TextareaProp		: "입력영역 속성",
+FormProp			: "폼 속성",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML 처리중. 잠시만 기다려주십시요.",
+Done				: "완료",
+PasteWordConfirm	: "붙여넣기 할 텍스트는 MS Word에서 복사한 것입니다. 붙여넣기 전에 MS Word 포멧을 삭제하시겠습니까?",
+NotCompatiblePaste	: "이 명령은 인터넷익스플로러 5.5 버전 이상에서만 작동합니다. 포멧을 삭제하지 않고 붙여넣기 하시겠습니까?",
+UnknownToolbarItem	: "알수없는 툴바입니다. : \"%1\"",
+UnknownCommand		: "알수없는 기능입니다. : \"%1\"",
+NotImplemented		: "기능이 실행되지 않았습니다.",
+UnknownToolbarSet	: "툴바 설정이 없습니다. : \"%1\"",
+NoActiveX			: "브러우저의 보안 설정으로 인해 몇몇 기능의 작동에 장애가 있을 수 있습니다. \"액티브-액스 기능과 플러그 인\" 옵션을 허용하여 주시지 않으면 오류가 발생할 수 있습니다.",
+BrowseServerBlocked : "브러우저 요소가 열리지 않습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
+DialogBlocked		: "윈도우 대화창을 열 수 없습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "예",
+DlgBtnCancel		: "아니오",
+DlgBtnClose			: "닫기",
+DlgBtnBrowseServer	: "서버 보기",
+DlgAdvancedTag		: "자세히",
+DlgOpOther			: "<기타>",
+DlgInfoTab			: "정보",
+DlgAlertUrl			: "URL을 입력하십시요",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<설정되지 않음>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "쓰기 방향",
+DlgGenLangDirLtr	: "왼쪽에서 오른쪽 (LTR)",
+DlgGenLangDirRtl	: "오른쪽에서 왼쪽 (RTL)",
+DlgGenLangCode		: "언어 코드",
+DlgGenAccessKey		: "엑세스 키",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "탭 순서",
+DlgGenLongDescr		: "URL 설명",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "이미지 설정",
+DlgImgInfoTab		: "이미지 정보",
+DlgImgBtnUpload		: "서버로 전송",
+DlgImgURL			: "URL",
+DlgImgUpload		: "업로드",
+DlgImgAlt			: "이미지 설명",
+DlgImgWidth			: "너비",
+DlgImgHeight		: "높이",
+DlgImgLockRatio		: "비율 유지",
+DlgBtnResetSize		: "원래 크기로",
+DlgImgBorder		: "테두리",
+DlgImgHSpace		: "수평여백",
+DlgImgVSpace		: "수직여백",
+DlgImgAlign			: "정렬",
+DlgImgAlignLeft		: "왼쪽",
+DlgImgAlignAbsBottom: "줄아래(Abs Bottom)",
+DlgImgAlignAbsMiddle: "줄중간(Abs Middle)",
+DlgImgAlignBaseline	: "기준선",
+DlgImgAlignBottom	: "아래",
+DlgImgAlignMiddle	: "중간",
+DlgImgAlignRight	: "오른쪽",
+DlgImgAlignTextTop	: "글자상단",
+DlgImgAlignTop		: "위",
+DlgImgPreview		: "미리보기",
+DlgImgAlertUrl		: "이미지 URL을 입력하십시요",
+DlgImgLinkTab		: "링크",
+
+// Flash Dialog
+DlgFlashTitle		: "플래쉬 등록정보",
+DlgFlashChkPlay		: "자동재생",
+DlgFlashChkLoop		: "반복",
+DlgFlashChkMenu		: "플래쉬메뉴 가능",
+DlgFlashScale		: "영역",
+DlgFlashScaleAll	: "모두보기",
+DlgFlashScaleNoBorder	: "경계선없음",
+DlgFlashScaleFit	: "영역자동조절",
+
+// Link Dialog
+DlgLnkWindowTitle	: "링크",
+DlgLnkInfoTab		: "링크 정보",
+DlgLnkTargetTab		: "타겟",
+
+DlgLnkType			: "링크 종류",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "책갈피",
+DlgLnkTypeEMail		: "이메일",
+DlgLnkProto			: "프로토콜",
+DlgLnkProtoOther	: "<기타>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "책갈피 선택",
+DlgLnkAnchorByName	: "책갈피 이름",
+DlgLnkAnchorById	: "책갈피 ID",
+DlgLnkNoAnchors		: "(문서에 책갈피가 없습니다.)",
+DlgLnkEMail			: "이메일 주소",
+DlgLnkEMailSubject	: "제목",
+DlgLnkEMailBody		: "내용",
+DlgLnkUpload		: "업로드",
+DlgLnkBtnUpload		: "서버로 전송",
+
+DlgLnkTarget		: "타겟",
+DlgLnkTargetFrame	: "<프레임>",
+DlgLnkTargetPopup	: "<팝업창>",
+DlgLnkTargetBlank	: "새 창 (_blank)",
+DlgLnkTargetParent	: "부모 창 (_parent)",
+DlgLnkTargetSelf	: "현재 창 (_self)",
+DlgLnkTargetTop		: "최 상위 창 (_top)",
+DlgLnkTargetFrameName	: "타겟 프레임 이름",
+DlgLnkPopWinName	: "팝업창 이름",
+DlgLnkPopWinFeat	: "팝업창 설정",
+DlgLnkPopResize		: "크기조정",
+DlgLnkPopLocation	: "주소표시줄",
+DlgLnkPopMenu		: "메뉴바",
+DlgLnkPopScroll		: "스크롤바",
+DlgLnkPopStatus		: "상태바",
+DlgLnkPopToolbar	: "툴바",
+DlgLnkPopFullScrn	: "전체화면 (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "너비",
+DlgLnkPopHeight		: "높이",
+DlgLnkPopLeft		: "왼쪽 위치",
+DlgLnkPopTop		: "윗쪽 위치",
+
+DlnLnkMsgNoUrl		: "링크 URL을 입력하십시요.",
+DlnLnkMsgNoEMail	: "이메일주소를 입력하십시요.",
+DlnLnkMsgNoAnchor	: "책갈피명을 입력하십시요.",
+DlnLnkMsgInvPopName	: "팝업창의 타이틀은 공백을 허용하지 않습니다.",
+
+// Color Dialog
+DlgColorTitle		: "색상 선택",
+DlgColorBtnClear	: "지우기",
+DlgColorHighlight	: "현재",
+DlgColorSelected	: "선택됨",
+
+// Smiley Dialog
+DlgSmileyTitle		: "아이콘 삽입",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "특수문자 선택",
+
+// Table Dialog
+DlgTableTitle		: "표 설정",
+DlgTableRows		: "가로줄",
+DlgTableColumns		: "세로줄",
+DlgTableBorder		: "테두리 크기",
+DlgTableAlign		: "정렬",
+DlgTableAlignNotSet	: "<설정되지 않음>",
+DlgTableAlignLeft	: "왼쪽",
+DlgTableAlignCenter	: "가운데",
+DlgTableAlignRight	: "오른쪽",
+DlgTableWidth		: "너비",
+DlgTableWidthPx		: "픽셀",
+DlgTableWidthPc		: "퍼센트",
+DlgTableHeight		: "높이",
+DlgTableCellSpace	: "셀 간격",
+DlgTableCellPad		: "셀 여백",
+DlgTableCaption		: "캡션",
+DlgTableSummary		: "요약",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "셀 설정",
+DlgCellWidth		: "너비",
+DlgCellWidthPx		: "픽셀",
+DlgCellWidthPc		: "퍼센트",
+DlgCellHeight		: "높이",
+DlgCellWordWrap		: "워드랩",
+DlgCellWordWrapNotSet	: "<설정되지 않음>",
+DlgCellWordWrapYes	: "예",
+DlgCellWordWrapNo	: "아니오",
+DlgCellHorAlign		: "수평 정렬",
+DlgCellHorAlignNotSet	: "<설정되지 않음>",
+DlgCellHorAlignLeft	: "왼쪽",
+DlgCellHorAlignCenter	: "가운데",
+DlgCellHorAlignRight: "오른쪽",
+DlgCellVerAlign		: "수직 정렬",
+DlgCellVerAlignNotSet	: "<설정되지 않음>",
+DlgCellVerAlignTop	: "위",
+DlgCellVerAlignMiddle	: "중간",
+DlgCellVerAlignBottom	: "아래",
+DlgCellVerAlignBaseline	: "기준선",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "세로 합치기",
+DlgCellCollSpan		: "가로 합치기",
+DlgCellBackColor	: "배경 색상",
+DlgCellBorderColor	: "테두리 색상",
+DlgCellBtnSelect	: "선택",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "찾기 & 바꾸기",
+
+// Find Dialog
+DlgFindTitle		: "찾기",
+DlgFindFindBtn		: "찾기",
+DlgFindNotFoundMsg	: "문자열을 찾을 수 없습니다.",
+
+// Replace Dialog
+DlgReplaceTitle			: "바꾸기",
+DlgReplaceFindLbl		: "찾을 문자열:",
+DlgReplaceReplaceLbl	: "바꿀 문자열:",
+DlgReplaceCaseChk		: "대소문자 구분",
+DlgReplaceReplaceBtn	: "바꾸기",
+DlgReplaceReplAllBtn	: "모두 바꾸기",
+DlgReplaceWordChk		: "온전한 단어",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).",
+PasteErrorCopy	: "브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요.  (Ctrl+C).",
+
+PasteAsText		: "텍스트로 붙여넣기",
+PasteFromWord	: "MS Word 형식에서 붙여넣기",
+
+DlgPasteMsg2	: "키보드의 (<STRONG>Ctrl+V</STRONG>) 를 이용해서 상자안에 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.",
+DlgPasteSec		: "브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.",
+DlgPasteIgnoreFont		: "폰트 설정 무시",
+DlgPasteRemoveStyles	: "스타일 정의 제거",
+
+// Color Picker
+ColorAutomatic	: "기본색상",
+ColorMoreColors	: "색상선택...",
+
+// Document Properties
+DocProps		: "문서 속성",
+
+// Anchor Dialog
+DlgAnchorTitle		: "책갈피 속성",
+DlgAnchorName		: "책갈피 이름",
+DlgAnchorErrorName	: "책갈피 이름을 입력하십시요.",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "사전에 없는 단어",
+DlgSpellChangeTo		: "변경할 단어",
+DlgSpellBtnIgnore		: "건너뜀",
+DlgSpellBtnIgnoreAll	: "모두 건너뜀",
+DlgSpellBtnReplace		: "변경",
+DlgSpellBtnReplaceAll	: "모두 변경",
+DlgSpellBtnUndo			: "취소",
+DlgSpellNoSuggestions	: "- 추천단어 없음 -",
+DlgSpellProgress		: "철자검사를 진행중입니다...",
+DlgSpellNoMispell		: "철자검사 완료: 잘못된 철자가 없습니다.",
+DlgSpellNoChanges		: "철자검사 완료: 변경된 단어가 없습니다.",
+DlgSpellOneChange		: "철자검사 완료: 단어가 변경되었습니다.",
+DlgSpellManyChanges		: "철자검사 완료: %1 단어가 변경되었습니다.",
+
+IeSpellDownload			: "철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?",
+
+// Button Dialog
+DlgButtonText		: "버튼글자(값)",
+DlgButtonType		: "버튼종류",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "이름",
+DlgCheckboxValue	: "값",
+DlgCheckboxSelected	: "선택됨",
+
+// Form Dialog
+DlgFormName		: "폼이름",
+DlgFormAction	: "실행경로(Action)",
+DlgFormMethod	: "방법(Method)",
+
+// Select Field Dialog
+DlgSelectName		: "이름",
+DlgSelectValue		: "값",
+DlgSelectSize		: "세로크기",
+DlgSelectLines		: "줄",
+DlgSelectChkMulti	: "여러항목 선택 허용",
+DlgSelectOpAvail	: "선택옵션",
+DlgSelectOpText		: "이름",
+DlgSelectOpValue	: "값",
+DlgSelectBtnAdd		: "추가",
+DlgSelectBtnModify	: "변경",
+DlgSelectBtnUp		: "위로",
+DlgSelectBtnDown	: "아래로",
+DlgSelectBtnSetValue : "선택된것으로 설정",
+DlgSelectBtnDelete	: "삭제",
+
+// Textarea Dialog
+DlgTextareaName	: "이름",
+DlgTextareaCols	: "칸수",
+DlgTextareaRows	: "줄수",
+
+// Text Field Dialog
+DlgTextName			: "이름",
+DlgTextValue		: "값",
+DlgTextCharWidth	: "글자 너비",
+DlgTextMaxChars		: "최대 글자수",
+DlgTextType			: "종류",
+DlgTextTypeText		: "문자열",
+DlgTextTypePass		: "비밀번호",
+
+// Hidden Field Dialog
+DlgHiddenName	: "이름",
+DlgHiddenValue	: "값",
+
+// Bulleted List Dialog
+BulletedListProp	: "순서없는 목록 속성",
+NumberedListProp	: "순서있는 목록 속성",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "종류",
+DlgLstTypeCircle	: "원(Circle)",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "네모점(Square)",
+DlgLstTypeNumbers	: "번호 (1, 2, 3)",
+DlgLstTypeLCase		: "소문자 (a, b, c)",
+DlgLstTypeUCase		: "대문자 (A, B, C)",
+DlgLstTypeSRoman	: "로마자 수문자 (i, ii, iii)",
+DlgLstTypeLRoman	: "로마자 대문자 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "일반",
+DlgDocBackTab		: "배경",
+DlgDocColorsTab		: "색상 및 여백",
+DlgDocMetaTab		: "메타데이터",
+
+DlgDocPageTitle		: "페이지명",
+DlgDocLangDir		: "문자 쓰기방향",
+DlgDocLangDirLTR	: "왼쪽에서 오른쪽 (LTR)",
+DlgDocLangDirRTL	: "오른쪽에서 왼쪽 (RTL)",
+DlgDocLangCode		: "언어코드",
+DlgDocCharSet		: "캐릭터셋 인코딩",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "다른 캐릭터셋 인코딩",
+
+DlgDocDocType		: "문서 헤드",
+DlgDocDocTypeOther	: "다른 문서헤드",
+DlgDocIncXHTML		: "XHTML 문서정의 포함",
+DlgDocBgColor		: "배경색상",
+DlgDocBgImage		: "배경이미지 URL",
+DlgDocBgNoScroll	: "스크롤되지않는 배경",
+DlgDocCText			: "텍스트",
+DlgDocCLink			: "링크",
+DlgDocCVisited		: "방문한 링크(Visited)",
+DlgDocCActive		: "활성화된 링크(Active)",
+DlgDocMargins		: "페이지 여백",
+DlgDocMaTop			: "위",
+DlgDocMaLeft		: "왼쪽",
+DlgDocMaRight		: "오른쪽",
+DlgDocMaBottom		: "아래",
+DlgDocMeIndex		: "문서 키워드 (콤마로 구분)",
+DlgDocMeDescr		: "문서 설명",
+DlgDocMeAuthor		: "작성자",
+DlgDocMeCopy		: "저작권",
+DlgDocPreview		: "미리보기",
+
+// Templates Dialog
+Templates			: "템플릿",
+DlgTemplatesTitle	: "내용 템플릿",
+DlgTemplatesSelMsg	: "에디터에서 사용할 템플릿을 선택하십시요.<br>(지금까지 작성된 내용은 사라집니다.):",
+DlgTemplatesLoading	: "템플릿 목록을 불러오는중입니다. 잠시만 기다려주십시요.",
+DlgTemplatesNoTpl	: "(템플릿이 없습니다.)",
+DlgTemplatesReplace	: "현재 내용 바꾸기",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "브라우저 정보",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "버전",
+DlgAboutInfo		: "더 많은 정보를 보시려면 다음 사이트로 가십시오.",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/is.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/is.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/is.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Icelandic language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Fela verkstiku",
+ToolbarExpand		: "Sýna verkstiku",
+
+// Toolbar Items and Context Menu
+Save				: "Vista",
+NewPage				: "Ný síða",
+Preview				: "Forskoða",
+Cut					: "Klippa",
+Copy				: "Afrita",
+Paste				: "Líma",
+PasteText			: "Líma ósniðinn texta",
+PasteWord			: "Líma úr Word",
+Print				: "Prenta",
+SelectAll			: "Velja allt",
+RemoveFormat		: "Fjarlægja snið",
+InsertLinkLbl		: "Stikla",
+InsertLink			: "Stofna/breyta stiklu",
+RemoveLink			: "Fjarlægja stiklu",
+VisitLink			: "Opna stiklusíðu",
+Anchor				: "Stofna/breyta kaflamerki",
+AnchorDelete		: "Eyða kaflamerki",
+InsertImageLbl		: "Setja inn mynd",
+InsertImage			: "Setja inn/breyta mynd",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Setja inn/breyta Flash",
+InsertTableLbl		: "Tafla",
+InsertTable			: "Setja inn/breyta töflu",
+InsertLineLbl		: "Lína",
+InsertLine			: "Lóðrétt lína",
+InsertSpecialCharLbl: "Merki",
+InsertSpecialChar	: "Setja inn merki",
+InsertSmileyLbl		: "Svipur",
+InsertSmiley		: "Setja upp svip",
+About				: "Um FCKeditor",
+Bold				: "Feitletrað",
+Italic				: "Skáletrað",
+Underline			: "Undirstrikað",
+StrikeThrough		: "Yfirstrikað",
+Subscript			: "Niðurskrifað",
+Superscript			: "Uppskrifað",
+LeftJustify			: "Vinstrijöfnun",
+CenterJustify		: "Miðja texta",
+RightJustify		: "Hægrijöfnun",
+BlockJustify		: "Jafna báðum megin",
+DecreaseIndent		: "Auka inndrátt",
+IncreaseIndent		: "Minnka inndrátt",
+Blockquote			: "Inndráttur",
+CreateDiv			: "Búa til DIV-hýsil",
+EditDiv				: "Breyta DIV-hýsli",
+DeleteDiv			: "Eyða DIV-hýsli",
+Undo				: "Afturkalla",
+Redo				: "Hætta við afturköllun",
+NumberedListLbl		: "Númeraður listi",
+NumberedList		: "Setja inn/fella númeraðan lista",
+BulletedListLbl		: "Punktalisti",
+BulletedList		: "Setja inn/fella punktalista",
+ShowTableBorders	: "Sýna töflugrind",
+ShowDetails			: "Sýna smáatriði",
+Style				: "Stílflokkur",
+FontFormat			: "Stílsnið",
+Font				: "Leturgerð ",
+FontSize			: "Leturstærð ",
+TextColor			: "Litur texta",
+BGColor				: "Bakgrunnslitur",
+Source				: "Kóði",
+Find				: "Leita",
+Replace				: "Skipta út",
+SpellCheck			: "Villuleit",
+UniversalKeyboard	: "Hnattrænt lyklaborð",
+PageBreakLbl		: "Síðuskil",
+PageBreak			: "Setja inn síðuskil",
+
+Form			: "Setja inn innsláttarform",
+Checkbox		: "Setja inn hökunarreit",
+RadioButton		: "Setja inn valhnapp",
+TextField		: "Setja inn textareit",
+Textarea		: "Setja inn textasvæði",
+HiddenField		: "Setja inn falið svæði",
+Button			: "Setja inn hnapp",
+SelectionField	: "Setja inn lista",
+ImageButton		: "Setja inn myndahnapp",
+
+FitWindow		: "Skoða ritil í fullri stærð",
+ShowBlocks		: "Sýna blokkir",
+
+// Context Menu
+EditLink			: "Breyta stiklu",
+CellCM				: "Reitur",
+RowCM				: "Röð",
+ColumnCM			: "Dálkur",
+InsertRowAfter		: "Skjóta inn röð fyrir neðan",
+InsertRowBefore		: "Skjóta inn röð fyrir ofan",
+DeleteRows			: "Eyða röð",
+InsertColumnAfter	: "Skjóta inn dálki hægra megin",
+InsertColumnBefore	: "Skjóta inn dálki vinstra megin",
+DeleteColumns		: "Fella dálk",
+InsertCellAfter		: "Skjóta inn reiti fyrir framan",
+InsertCellBefore	: "Skjóta inn reiti fyrir aftan",
+DeleteCells			: "Fella reit",
+MergeCells			: "Sameina reiti",
+MergeRight			: "Sameina til hægri",
+MergeDown			: "Sameina niður á við",
+HorizontalSplitCell	: "Kljúfa reit lárétt",
+VerticalSplitCell	: "Kljúfa reit lóðrétt",
+TableDelete			: "Fella töflu",
+CellProperties		: "Eigindi reits",
+TableProperties		: "Eigindi töflu",
+ImageProperties		: "Eigindi myndar",
+FlashProperties		: "Eigindi Flash",
+
+AnchorProp			: "Eigindi kaflamerkis",
+ButtonProp			: "Eigindi hnapps",
+CheckboxProp		: "Eigindi markreits",
+HiddenFieldProp		: "Eigindi falins svæðis",
+RadioButtonProp		: "Eigindi valhnapps",
+ImageButtonProp		: "Eigindi myndahnapps",
+TextFieldProp		: "Eigindi textareits",
+SelectionFieldProp	: "Eigindi lista",
+TextareaProp		: "Eigindi textasvæðis",
+FormProp			: "Eigindi innsláttarforms",
+
+FontFormats			: "Venjulegt letur;Forsniðið;Vistfang;Fyrirsögn 1;Fyrirsögn 2;Fyrirsögn 3;Fyrirsögn 4;Fyrirsögn 5;Fyrirsögn 6;Venjulegt (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Meðhöndla XHTML...",
+Done				: "Tilbúið",
+PasteWordConfirm	: "Textinn sem þú ætlar að líma virðist koma úr Word. Viltu hreinsa óþarfar Word-skipanir úr honum?",
+NotCompatiblePaste	: "Þessi aðgerð er bundin við Internet Explorer 5.5 og nýrri. Viltu líma textann án þess að hreinsa hann?",
+UnknownToolbarItem	: "Óþekktur hlutur í verkstiku \"%1\"!",
+UnknownCommand		: "Óþekkt skipanaheiti \"%1\"!",
+NotImplemented		: "Skipun ekki virkjuð!",
+UnknownToolbarSet	: "Verkstikan \"%1\" ekki til!",
+NoActiveX			: "Öryggisstillingarnar í vafranum þínum leyfa ekki alla möguleika ritilsins.<br>Láttu vafrann leyfa Active-X og viðbætur til að komast hjá villum og takmörkunum.",
+BrowseServerBlocked : "Ritillinn getur ekki opnað nauðsynlega hjálparglugga!<br>Láttu hann leyfa þessari síðu að opna sprettiglugga.",
+DialogBlocked		: "Ekki var hægt að opna skipanaglugga!<br>Nauðsynlegt er að leyfa síðunni að opna sprettiglugga.",
+VisitLinkBlocked	: "Ekki var hægt að opna nýjan glugga. Gangtu úr skugga um að engir sprettigluggabanar séu virkir.",
+
+// Dialogs
+DlgBtnOK			: "Í lagi",
+DlgBtnCancel		: "Hætta við",
+DlgBtnClose			: "Loka",
+DlgBtnBrowseServer	: "Fletta í skjalasafni",
+DlgAdvancedTag		: "Tæknilegt",
+DlgOpOther			: "<Annað>",
+DlgInfoTab			: "Upplýsingar",
+DlgAlertUrl			: "Sláðu inn slóð",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ekkert valið>",
+DlgGenId			: "Auðkenni",
+DlgGenLangDir		: "Lesstefna",
+DlgGenLangDirLtr	: "Frá vinstri til hægri (LTR)",
+DlgGenLangDirRtl	: "Frá hægri til vinstri (RTL)",
+DlgGenLangCode		: "Tungumálakóði",
+DlgGenAccessKey		: "Skammvalshnappur",
+DlgGenName			: "Nafn",
+DlgGenTabIndex		: "Raðnúmer innsláttarreits",
+DlgGenLongDescr		: "Nánari lýsing",
+DlgGenClass			: "Stílsniðsflokkur",
+DlgGenTitle			: "Titill",
+DlgGenContType		: "Tegund innihalds",
+DlgGenLinkCharset	: "Táknróf",
+DlgGenStyle			: "Stíll",
+
+// Image Dialog
+DlgImgTitle			: "Eigindi myndar",
+DlgImgInfoTab		: "Almennt",
+DlgImgBtnUpload		: "Hlaða upp",
+DlgImgURL			: "Vefslóð",
+DlgImgUpload		: "Hlaða upp",
+DlgImgAlt			: "Baklægur texti",
+DlgImgWidth			: "Breidd",
+DlgImgHeight		: "Hæð",
+DlgImgLockRatio		: "Festa stærðarhlutfall",
+DlgBtnResetSize		: "Reikna stærð",
+DlgImgBorder		: "Rammi",
+DlgImgHSpace		: "Vinstri bil",
+DlgImgVSpace		: "Hægri bil",
+DlgImgAlign			: "Jöfnun",
+DlgImgAlignLeft		: "Vinstri",
+DlgImgAlignAbsBottom: "Abs neðst",
+DlgImgAlignAbsMiddle: "Abs miðjuð",
+DlgImgAlignBaseline	: "Grunnlína",
+DlgImgAlignBottom	: "Neðst",
+DlgImgAlignMiddle	: "Miðjuð",
+DlgImgAlignRight	: "Hægri",
+DlgImgAlignTextTop	: "Efri brún texta",
+DlgImgAlignTop		: "Efst",
+DlgImgPreview		: "Sýna dæmi",
+DlgImgAlertUrl		: "Sláðu inn slóðina að myndinni",
+DlgImgLinkTab		: "Stikla",
+
+// Flash Dialog
+DlgFlashTitle		: "Eigindi Flash",
+DlgFlashChkPlay		: "Sjálfvirk spilun",
+DlgFlashChkLoop		: "Endurtekning",
+DlgFlashChkMenu		: "Sýna Flash-valmynd",
+DlgFlashScale		: "Skali",
+DlgFlashScaleAll	: "Sýna allt",
+DlgFlashScaleNoBorder	: "Án ramma",
+DlgFlashScaleFit	: "Fella skala að stærð",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Stikla",
+DlgLnkInfoTab		: "Almennt",
+DlgLnkTargetTab		: "Mark",
+
+DlgLnkType			: "Stikluflokkur",
+DlgLnkTypeURL		: "Vefslóð",
+DlgLnkTypeAnchor	: "Bókamerki á þessari síðu",
+DlgLnkTypeEMail		: "Netfang",
+DlgLnkProto			: "Samskiptastaðall",
+DlgLnkProtoOther	: "<annað>",
+DlgLnkURL			: "Vefslóð",
+DlgLnkAnchorSel		: "Veldu akkeri",
+DlgLnkAnchorByName	: "Eftir akkerisnafni",
+DlgLnkAnchorById	: "Eftir auðkenni einingar",
+DlgLnkNoAnchors		: "<Engin bókamerki á skrá>",
+DlgLnkEMail			: "Netfang",
+DlgLnkEMailSubject	: "Efni",
+DlgLnkEMailBody		: "Meginmál",
+DlgLnkUpload		: "Senda upp",
+DlgLnkBtnUpload		: "Senda upp",
+
+DlgLnkTarget		: "Mark",
+DlgLnkTargetFrame	: "<rammi>",
+DlgLnkTargetPopup	: "<sprettigluggi>",
+DlgLnkTargetBlank	: "Nýr gluggi (_blank)",
+DlgLnkTargetParent	: "Yfirsettur rammi (_parent)",
+DlgLnkTargetSelf	: "Sami gluggi (_self)",
+DlgLnkTargetTop		: "Allur glugginn (_top)",
+DlgLnkTargetFrameName	: "Nafn markglugga",
+DlgLnkPopWinName	: "Nafn sprettiglugga",
+DlgLnkPopWinFeat	: "Eigindi sprettiglugga",
+DlgLnkPopResize		: "Skölun",
+DlgLnkPopLocation	: "Fanglína",
+DlgLnkPopMenu		: "Vallína",
+DlgLnkPopScroll		: "Skrunstikur",
+DlgLnkPopStatus		: "Stöðustika",
+DlgLnkPopToolbar	: "Verkfærastika",
+DlgLnkPopFullScrn	: "Heilskjár (IE)",
+DlgLnkPopDependent	: "Háð venslum (Netscape)",
+DlgLnkPopWidth		: "Breidd",
+DlgLnkPopHeight		: "Hæð",
+DlgLnkPopLeft		: "Fjarlægð frá vinstri",
+DlgLnkPopTop		: "Fjarlægð frá efri brún",
+
+DlnLnkMsgNoUrl		: "Sláðu inn veffang stiklunnar!",
+DlnLnkMsgNoEMail	: "Sláðu inn netfang!",
+DlnLnkMsgNoAnchor	: "Veldu fyrst eitthvert bókamerki!",
+DlnLnkMsgInvPopName	: "Sprettisíðan verður að byrja á bókstaf (a-z) og má ekki innihalda stafabil",
+
+// Color Dialog
+DlgColorTitle		: "Velja lit",
+DlgColorBtnClear	: "Núllstilla",
+DlgColorHighlight	: "Litmerkja",
+DlgColorSelected	: "Valið",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Velja svip",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Velja tákn",
+
+// Table Dialog
+DlgTableTitle		: "Eigindi töflu",
+DlgTableRows		: "Raðir",
+DlgTableColumns		: "Dálkar",
+DlgTableBorder		: "Breidd ramma",
+DlgTableAlign		: "Jöfnun",
+DlgTableAlignNotSet	: "<ekkert valið>",
+DlgTableAlignLeft	: "Vinstrijafnað",
+DlgTableAlignCenter	: "Miðjað",
+DlgTableAlignRight	: "Hægrijafnað",
+DlgTableWidth		: "Breidd",
+DlgTableWidthPx		: "myndeindir",
+DlgTableWidthPc		: "prósent",
+DlgTableHeight		: "Hæð",
+DlgTableCellSpace	: "Bil milli reita",
+DlgTableCellPad		: "Reitaspássía",
+DlgTableCaption		: "Titill",
+DlgTableSummary		: "Áfram",
+DlgTableHeaders		: "Fyrirsagnir",
+DlgTableHeadersNone		: "Engar",
+DlgTableHeadersColumn	: "Fyrsti dálkur",
+DlgTableHeadersRow		: "Fyrsta röð",
+DlgTableHeadersBoth		: "Hvort tveggja",
+
+// Table Cell Dialog
+DlgCellTitle		: "Eigindi reits",
+DlgCellWidth		: "Breidd",
+DlgCellWidthPx		: "myndeindir",
+DlgCellWidthPc		: "prósent",
+DlgCellHeight		: "Hæð",
+DlgCellWordWrap		: "Línuskipting",
+DlgCellWordWrapNotSet	: "<ekkert valið>",
+DlgCellWordWrapYes	: "Já",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Lárétt jöfnun",
+DlgCellHorAlignNotSet	: "<ekkert valið>",
+DlgCellHorAlignLeft	: "Vinstrijafnað",
+DlgCellHorAlignCenter	: "Miðjað",
+DlgCellHorAlignRight: "Hægrijafnað",
+DlgCellVerAlign		: "Lóðrétt jöfnun",
+DlgCellVerAlignNotSet	: "<ekkert valið>",
+DlgCellVerAlignTop	: "Efst",
+DlgCellVerAlignMiddle	: "Miðjað",
+DlgCellVerAlignBottom	: "Neðst",
+DlgCellVerAlignBaseline	: "Grunnlína",
+DlgCellType		: "Tegund reits",
+DlgCellTypeData		: "Gögn",
+DlgCellTypeHeader	: "Fyrirsögn",
+DlgCellRowSpan		: "Hæð í röðum talið",
+DlgCellCollSpan		: "Breidd í dálkum talið",
+DlgCellBackColor	: "Bakgrunnslitur",
+DlgCellBorderColor	: "Rammalitur",
+DlgCellBtnSelect	: "Veldu...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Finna og skipta",
+
+// Find Dialog
+DlgFindTitle		: "Finna",
+DlgFindFindBtn		: "Finna",
+DlgFindNotFoundMsg	: "Leitartexti fannst ekki!",
+
+// Replace Dialog
+DlgReplaceTitle			: "Skipta út",
+DlgReplaceFindLbl		: "Leita að:",
+DlgReplaceReplaceLbl	: "Skipta út fyrir:",
+DlgReplaceCaseChk		: "Gera greinarmun á¡ há¡- og lágstöfum",
+DlgReplaceReplaceBtn	: "Skipta út",
+DlgReplaceReplAllBtn	: "Skipta út allsstaðar",
+DlgReplaceWordChk		: "Aðeins heil orð",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).",
+PasteErrorCopy	: "Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).",
+
+PasteAsText		: "Líma sem ósniðinn texta",
+PasteFromWord	: "Líma úr Word",
+
+DlgPasteMsg2	: "Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.",
+DlgPasteIgnoreFont		: "Hunsa leturskilgreiningar",
+DlgPasteRemoveStyles	: "Hunsa letureigindi",
+
+// Color Picker
+ColorAutomatic	: "Sjálfval",
+ColorMoreColors	: "Fleiri liti...",
+
+// Document Properties
+DocProps		: "Eigindi skjals",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Eigindi bókamerkis",
+DlgAnchorName		: "Nafn bókamerkis",
+DlgAnchorErrorName	: "Sláðu inn nafn bókamerkis!",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ekki í orðabókinni",
+DlgSpellChangeTo		: "Tillaga",
+DlgSpellBtnIgnore		: "Hunsa",
+DlgSpellBtnIgnoreAll	: "Hunsa allt",
+DlgSpellBtnReplace		: "Skipta",
+DlgSpellBtnReplaceAll	: "Skipta öllu",
+DlgSpellBtnUndo			: "Til baka",
+DlgSpellNoSuggestions	: "- engar tillögur -",
+DlgSpellProgress		: "Villuleit í gangi...",
+DlgSpellNoMispell		: "Villuleit lokið: Engin villa fannst",
+DlgSpellNoChanges		: "Villuleit lokið: Engu orði breytt",
+DlgSpellOneChange		: "Villuleit lokið: Einu orði breytt",
+DlgSpellManyChanges		: "Villuleit lokið: %1 orðum breytt",
+
+IeSpellDownload			: "Villuleit ekki sett upp.<br>Viltu setja hana upp?",
+
+// Button Dialog
+DlgButtonText		: "Texti",
+DlgButtonType		: "Gerð",
+DlgButtonTypeBtn	: "Hnappur",
+DlgButtonTypeSbm	: "Staðfesta",
+DlgButtonTypeRst	: "Hreinsa",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nafn",
+DlgCheckboxValue	: "Gildi",
+DlgCheckboxSelected	: "Valið",
+
+// Form Dialog
+DlgFormName		: "Nafn",
+DlgFormAction	: "Aðgerð",
+DlgFormMethod	: "Aðferð",
+
+// Select Field Dialog
+DlgSelectName		: "Nafn",
+DlgSelectValue		: "Gildi",
+DlgSelectSize		: "Stærð",
+DlgSelectLines		: "línur",
+DlgSelectChkMulti	: "Leyfa fleiri kosti",
+DlgSelectOpAvail	: "Kostir",
+DlgSelectOpText		: "Texti",
+DlgSelectOpValue	: "Gildi",
+DlgSelectBtnAdd		: "Bæta við",
+DlgSelectBtnModify	: "Breyta",
+DlgSelectBtnUp		: "Upp",
+DlgSelectBtnDown	: "Niður",
+DlgSelectBtnSetValue : "Merkja sem valið",
+DlgSelectBtnDelete	: "Eyða",
+
+// Textarea Dialog
+DlgTextareaName	: "Nafn",
+DlgTextareaCols	: "Dálkar",
+DlgTextareaRows	: "Línur",
+
+// Text Field Dialog
+DlgTextName			: "Nafn",
+DlgTextValue		: "Gildi",
+DlgTextCharWidth	: "Breidd (leturtákn)",
+DlgTextMaxChars		: "Hámarksfjöldi leturtákna",
+DlgTextType			: "Gerð",
+DlgTextTypeText		: "Texti",
+DlgTextTypePass		: "Lykilorð",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nafn",
+DlgHiddenValue	: "Gildi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Eigindi depillista",
+NumberedListProp	: "Eigindi tölusetts lista",
+DlgLstStart			: "Byrja",
+DlgLstType			: "Gerð",
+DlgLstTypeCircle	: "Hringur",
+DlgLstTypeDisc		: "Fylltur hringur",
+DlgLstTypeSquare	: "Ferningur",
+DlgLstTypeNumbers	: "Tölusett (1, 2, 3)",
+DlgLstTypeLCase		: "Lágstafir (a, b, c)",
+DlgLstTypeUCase		: "Hástafir (A, B, C)",
+DlgLstTypeSRoman	: "Rómverkar lágstafatölur (i, ii, iii)",
+DlgLstTypeLRoman	: "Rómverkar hástafatölur (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Almennt",
+DlgDocBackTab		: "Bakgrunnur",
+DlgDocColorsTab		: "Litir og rammar",
+DlgDocMetaTab		: "Lýsigögn",
+
+DlgDocPageTitle		: "Titill síðu",
+DlgDocLangDir		: "Tungumál",
+DlgDocLangDirLTR	: "Vinstri til hægri (LTR)",
+DlgDocLangDirRTL	: "Hægri til vinstri (RTL)",
+DlgDocLangCode		: "Tungumálakóði",
+DlgDocCharSet		: "Letursett",
+DlgDocCharSetCE		: "Mið-evrópskt",
+DlgDocCharSetCT		: "Kínverskt, hefðbundið (Big5)",
+DlgDocCharSetCR		: "Kýrilskt",
+DlgDocCharSetGR		: "Grískt",
+DlgDocCharSetJP		: "Japanskt",
+DlgDocCharSetKR		: "Kóreskt",
+DlgDocCharSetTR		: "Tyrkneskt",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Vestur-evrópst",
+DlgDocCharSetOther	: "Annað letursett",
+
+DlgDocDocType		: "Flokkur skjalategunda",
+DlgDocDocTypeOther	: "Annar flokkur skjalategunda",
+DlgDocIncXHTML		: "Fella inn XHTML lýsingu",
+DlgDocBgColor		: "Bakgrunnslitur",
+DlgDocBgImage		: "Slóð bakgrunnsmyndar",
+DlgDocBgNoScroll	: "Læstur bakgrunnur",
+DlgDocCText			: "Texti",
+DlgDocCLink			: "Stikla",
+DlgDocCVisited		: "Heimsótt stikla",
+DlgDocCActive		: "Virk stikla",
+DlgDocMargins		: "Hliðarspássía",
+DlgDocMaTop			: "Efst",
+DlgDocMaLeft		: "Vinstri",
+DlgDocMaRight		: "Hægri",
+DlgDocMaBottom		: "Neðst",
+DlgDocMeIndex		: "Lykilorð efnisorðaskrár (aðgreind með kommum)",
+DlgDocMeDescr		: "Lýsing skjals",
+DlgDocMeAuthor		: "Höfundur",
+DlgDocMeCopy		: "Höfundarréttur",
+DlgDocPreview		: "Sýna",
+
+// Templates Dialog
+Templates			: "Sniðmát",
+DlgTemplatesTitle	: "Innihaldssniðmát",
+DlgTemplatesSelMsg	: "Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):",
+DlgTemplatesLoading	: "Sæki lista yfir sniðmát...",
+DlgTemplatesNoTpl	: "(Ekkert sniðmát er skilgreint!)",
+DlgTemplatesReplace	: "Skipta út raunverulegu innihaldi",
+
+// About Dialog
+DlgAboutAboutTab	: "Um",
+DlgAboutBrowserInfoTab	: "Almennt",
+DlgAboutLicenseTab	: "Leyfi",
+DlgAboutVersion		: "útgáfa",
+DlgAboutInfo		: "Nánari upplýsinar, sjá:",
+
+// Div Dialog
+DlgDivGeneralTab	: "Almennt",
+DlgDivAdvancedTab	: "Sérhæft",
+DlgDivStyle		: "Stíll",
+DlgDivInlineStyle	: "Línulægur stíll",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gu.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gu.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gu.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Gujarati language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ટૂલબાર નાનું કરવું",
+ToolbarExpand		: "ટૂલબાર મોટું કરવું",
+
+// Toolbar Items and Context Menu
+Save				: "સેવ",
+NewPage				: "નવુ પાનું",
+Preview				: "પૂર્વદર્શન",
+Cut					: "કાપવું",
+Copy				: "નકલ",
+Paste				: "પેસ્ટ",
+PasteText			: "પેસ્ટ (સાદી ટેક્સ્ટ)",
+PasteWord			: "પેસ્ટ (વડૅ ટેક્સ્ટ)",
+Print				: "પ્રિન્ટ",
+SelectAll			: "બઘું પસંદ કરવું",
+RemoveFormat		: "ફૉર્મટ કાઢવું",
+InsertLinkLbl		: "સંબંધન, લિંક",
+InsertLink			: "લિંક ઇન્સર્ટ/દાખલ કરવી",
+RemoveLink			: "લિંક કાઢવી",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "ઍંકર ઇન્સર્ટ/દાખલ કરવી",
+AnchorDelete		: "ઍંકર કાઢવી",
+InsertImageLbl		: "ચિત્ર",
+InsertImage			: "ચિત્ર ઇન્સર્ટ/દાખલ કરવું",
+InsertFlashLbl		: "ફ્લૅશ",
+InsertFlash			: "ફ્લૅશ ઇન્સર્ટ/દાખલ કરવું",
+InsertTableLbl		: "ટેબલ, કોઠો",
+InsertTable			: "ટેબલ, કોઠો ઇન્સર્ટ/દાખલ કરવું",
+InsertLineLbl		: "રેખા",
+InsertLine			: "સમસ્તરીય રેખા ઇન્સર્ટ/દાખલ કરવી",
+InsertSpecialCharLbl: "વિશિષ્ટ અક્ષર",
+InsertSpecialChar	: "વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું",
+InsertSmileyLbl		: "સ્માઇલી",
+InsertSmiley		: "સ્માઇલી ઇન્સર્ટ/દાખલ કરવી",
+About				: "FCKeditorના વિષે",
+Bold				: "બોલ્ડ/સ્પષ્ટ",
+Italic				: "ઇટેલિક, ત્રાંસા",
+Underline			: "અન્ડર્લાઇન, નીચે લીટી",
+StrikeThrough		: "છેકી નાખવું",
+Subscript			: "એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન",
+Superscript			: "એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.",
+LeftJustify			: "ડાબી બાજુએ/બાજુ તરફ",
+CenterJustify		: "સંકેંદ્રણ/સેંટરિંગ",
+RightJustify		: "જમણી બાજુએ/બાજુ તરફ",
+BlockJustify		: "બ્લૉક, અંતરાય જસ્ટિફાઇ",
+DecreaseIndent		: "ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી",
+IncreaseIndent		: "ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી",
+Blockquote			: "બ્લૉક-કોટ, અવતરણચિહ્નો",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી",
+Redo				: "રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી",
+NumberedListLbl		: "સંખ્યાંકન સૂચિ",
+NumberedList		: "સંખ્યાંકન સૂચિ ઇન્સર્ટ/દાખલ કરવી",
+BulletedListLbl		: "બુલેટ સૂચિ",
+BulletedList		: "બુલેટ સૂચિ ઇન્સર્ટ/દાખલ કરવી",
+ShowTableBorders	: "ટેબલ, કોઠાની બાજુ(બોર્ડર) બતાવવી",
+ShowDetails			: "વિસ્તૃત વિગતવાર બતાવવું",
+Style				: "શૈલી/રીત",
+FontFormat			: "ફૉન્ટ ફૉર્મટ, રચનાની શૈલી",
+Font				: "ફૉન્ટ",
+FontSize			: "ફૉન્ટ સાઇઝ/કદ",
+TextColor			: "શબ્દનો રંગ",
+BGColor				: "બૅકગ્રાઉન્ડ રંગ,",
+Source				: "મૂળ કે પ્રાથમિક દસ્તાવેજ",
+Find				: "શોધવું",
+Replace				: "રિપ્લેસ/બદલવું",
+SpellCheck			: "જોડણી (સ્પેલિંગ) તપાસવી",
+UniversalKeyboard	: "યૂનિવર્સલ/વિશ્વવ્યાપક કીબૉર્ડ",
+PageBreakLbl		: "પેજબ્રેક/પાનાને અલગ કરવું",
+PageBreak			: "ઇન્સર્ટ પેજબ્રેક/પાનાને અલગ કરવું/દાખલ કરવું",
+
+Form			: "ફૉર્મ/પત્રક",
+Checkbox		: "ચેક બોક્સ",
+RadioButton		: "રેડિઓ બટન",
+TextField		: "ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્ર",
+Textarea		: "ટેક્સ્ટ એરિઆ, શબ્દ વિસ્તાર",
+HiddenField		: "ગુપ્ત ક્ષેત્ર",
+Button			: "બટન",
+SelectionField	: "પસંદગી ક્ષેત્ર",
+ImageButton		: "ચિત્ર બટન",
+
+FitWindow		: "એડિટરની સાઇઝ અધિકતમ કરવી",
+ShowBlocks		: "બ્લૉક બતાવવું",
+
+// Context Menu
+EditLink			: " લિંક એડિટ/માં ફેરફાર કરવો",
+CellCM				: "કોષના ખાના",
+RowCM				: "પંક્તિના ખાના",
+ColumnCM			: "કૉલમ/ઊભી કટાર",
+InsertRowAfter		: "પછી પંક્તિ ઉમેરવી",
+InsertRowBefore		: "પહેલાં પંક્તિ ઉમેરવી",
+DeleteRows			: "પંક્તિઓ ડિલીટ/કાઢી નાખવી",
+InsertColumnAfter	: "પછી કૉલમ/ઊભી કટાર ઉમેરવી",
+InsertColumnBefore	: "પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી",
+DeleteColumns		: "કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી",
+InsertCellAfter		: "પછી કોષ ઉમેરવો",
+InsertCellBefore	: "પહેલાં કોષ ઉમેરવો",
+DeleteCells			: "કોષ ડિલીટ/કાઢી નાખવો",
+MergeCells			: "કોષ ભેગા કરવા",
+MergeRight			: "જમણી બાજુ ભેગા કરવા",
+MergeDown			: "નીચે ભેગા કરવા",
+HorizontalSplitCell	: "કોષને સમસ્તરીય વિભાજન કરવું",
+VerticalSplitCell	: "કોષને સીધું ને ઊભું વિભાજન કરવું",
+TableDelete			: "કોઠો ડિલીટ/કાઢી નાખવું",
+CellProperties		: "કોષના ગુણ",
+TableProperties		: "કોઠાના  ગુણ",
+ImageProperties		: "ચિત્રના ગુણ",
+FlashProperties		: "ફ્લૅશના ગુણ",
+
+AnchorProp			: "ઍંકરના ગુણ",
+ButtonProp			: "બટનના ગુણ",
+CheckboxProp		: "ચેક બોક્સ ગુણ",
+HiddenFieldProp		: "ગુપ્ત ક્ષેત્રના ગુણ",
+RadioButtonProp		: "રેડિઓ બટનના ગુણ",
+ImageButtonProp		: "ચિત્ર બટનના ગુણ",
+TextFieldProp		: "ટેક્સ્ટ ફીલ્ડ, શબ્દ ક્ષેત્રના ગુણ",
+SelectionFieldProp	: "પસંદગી ક્ષેત્રના ગુણ",
+TextareaProp		: "ટેક્સ્ટ એઅરિઆ, શબ્દ વિસ્તારના ગુણ",
+FormProp			: "ફૉર્મ/પત્રકના ગુણ",
+
+FontFormats			: "સામાન્ય;ફૉર્મટેડ;સરનામું;શીર્ષક 1;શીર્ષક 2;શીર્ષક 3;શીર્ષક 4;શીર્ષક 5;શીર્ષક 6;શીર્ષક (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML પ્રક્રિયા ચાલુ છે. મહેરબાની કરીને રાહ જોવો...",
+Done				: "પતી ગયું",
+PasteWordConfirm	: "તમે જે ટેક્સ્ટ પેસ્ટ કરવા માંગો છો, તે વડૅમાંથી કોપી કરેલુ લાગે છે. પેસ્ટ કરતા પહેલાં ટેક્સ્ટ સાફ કરવી છે?",
+NotCompatiblePaste	: "આ કમાન્ડ ઈનટરનેટ એક્સપ્લોરર(Internet Explorer) 5.5 અથવા એના પછીના વર્ઝન માટેજ છે. ટેક્સ્ટને સાફ કયૅા પહેલાં પેસ્ટ કરવી છે?",
+UnknownToolbarItem	: "અજાણી ટૂલબાર આઇટમ \"%1\"",
+UnknownCommand		: "અજાણયો કમાન્ડ \"%1\"",
+NotImplemented		: "કમાન્ડ ઇમ્પ્લિમન્ટ નથી કરોયો",
+UnknownToolbarSet	: "ટૂલબાર સેટ \"%1\" ઉપલબ્ધ નથી",
+NoActiveX			: "તમારા બ્રાઉઝરની સુરક્ષા સેટિંગસ એડિટરના અમુક ફીચરને પરવાનગી આપતી નથી. કૃપયા \"Run ActiveX controls and plug-ins\" વિકલ્પને ઇનેબલ/સમર્થ કરો. તમારા બ્રાઉઝરમાં એરર ઇન્વિઝિબલ ફીચરનો અનુભવ થઈ શકે છે. કૃપયા પૉપ-અપ બ્લૉકર ડિસેબલ કરો.",
+BrowseServerBlocked : "રિસૉર્સ બ્રાઉઝર ખોલી ન સકાયું.",
+DialogBlocked		: "ડાયલૉગ વિન્ડો ખોલી ન સકાયું. કૃપયા પૉપ-અપ બ્લૉકર ડિસેબલ કરો.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ઠીક છે",
+DlgBtnCancel		: "રદ કરવું",
+DlgBtnClose			: "બંધ કરવું",
+DlgBtnBrowseServer	: "સર્વર બ્રાઉઝ કરો",
+DlgAdvancedTag		: "અડ્વાન્સડ",
+DlgOpOther			: "<અન્ય>",
+DlgInfoTab			: "સૂચના",
+DlgAlertUrl			: "URL ઇન્સર્ટ કરો",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<સેટ નથી>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ભાષા લેખવાની પદ્ધતિ",
+DlgGenLangDirLtr	: "ડાબે થી જમણે (LTR)",
+DlgGenLangDirRtl	: "જમણે થી ડાબે (RTL)",
+DlgGenLangCode		: "ભાષા કોડ",
+DlgGenAccessKey		: "ઍક્સેસ કી",
+DlgGenName			: "નામ",
+DlgGenTabIndex		: "ટૅબ ઇન્ડેક્સ",
+DlgGenLongDescr		: "વધારે માહિતી માટે URL",
+DlgGenClass			: "સ્ટાઇલ-શીટ ક્લાસ",
+DlgGenTitle			: "મુખ્ય મથાળું",
+DlgGenContType		: "મુખ્ય કન્ટેન્ટ પ્રકાર",
+DlgGenLinkCharset	: "લિંક રિસૉર્સ કૅરિક્ટર સેટ",
+DlgGenStyle			: "સ્ટાઇલ",
+
+// Image Dialog
+DlgImgTitle			: "ચિત્રના ગુણ",
+DlgImgInfoTab		: "ચિત્ર ની જાણકારી",
+DlgImgBtnUpload		: "આ સર્વરને મોકલવું",
+DlgImgURL			: "URL",
+DlgImgUpload		: "અપલોડ",
+DlgImgAlt			: "ઑલ્ટર્નટ ટેક્સ્ટ",
+DlgImgWidth			: "પહોળાઈ",
+DlgImgHeight		: "ઊંચાઈ",
+DlgImgLockRatio		: "લૉક ગુણોત્તર",
+DlgBtnResetSize		: "રીસેટ સાઇઝ",
+DlgImgBorder		: "બોર્ડર",
+DlgImgHSpace		: "સમસ્તરીય જગ્યા",
+DlgImgVSpace		: "લંબરૂપ જગ્યા",
+DlgImgAlign			: "લાઇનદોરીમાં ગોઠવવું",
+DlgImgAlignLeft		: "ડાબી બાજુ ગોઠવવું",
+DlgImgAlignAbsBottom: "Abs નીચે",
+DlgImgAlignAbsMiddle: "Abs ઉપર",
+DlgImgAlignBaseline	: "આધાર લીટી",
+DlgImgAlignBottom	: "નીચે",
+DlgImgAlignMiddle	: "વચ્ચે",
+DlgImgAlignRight	: "જમણી",
+DlgImgAlignTextTop	: "ટેક્સ્ટ ઉપર",
+DlgImgAlignTop		: "ઉપર",
+DlgImgPreview		: "પૂર્વદર્શન",
+DlgImgAlertUrl		: "ચિત્રની URL ટાઇપ કરો",
+DlgImgLinkTab		: "લિંક",
+
+// Flash Dialog
+DlgFlashTitle		: "ફ્લૅશ ગુણ",
+DlgFlashChkPlay		: "ઑટો/સ્વયં પ્લે",
+DlgFlashChkLoop		: "લૂપ",
+DlgFlashChkMenu		: "ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો",
+DlgFlashScale		: "સ્કેલ",
+DlgFlashScaleAll	: "સ્કેલ ઓલ/બધુ બતાવો",
+DlgFlashScaleNoBorder	: "સ્કેલ બોર્ડર વગર",
+DlgFlashScaleFit	: "સ્કેલ એકદમ ફીટ",
+
+// Link Dialog
+DlgLnkWindowTitle	: "લિંક",
+DlgLnkInfoTab		: "લિંક ઇન્ફૉ ટૅબ",
+DlgLnkTargetTab		: "ટાર્ગેટ/લક્ષ્ય ટૅબ",
+
+DlgLnkType			: "લિંક પ્રકાર",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "આ પેજનો ઍંકર",
+DlgLnkTypeEMail		: "ઈ-મેલ",
+DlgLnkProto			: "પ્રોટોકૉલ",
+DlgLnkProtoOther	: "<અન્ય>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ઍંકર પસંદ કરો",
+DlgLnkAnchorByName	: "ઍંકર નામથી પસંદ કરો",
+DlgLnkAnchorById	: "ઍંકર એલિમન્ટ Id થી પસંદ કરો",
+DlgLnkNoAnchors		: "(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)",
+DlgLnkEMail			: "ઈ-મેલ સરનામું",
+DlgLnkEMailSubject	: "ઈ-મેલ વિષય",
+DlgLnkEMailBody		: "સંદેશ",
+DlgLnkUpload		: "અપલોડ",
+DlgLnkBtnUpload		: "આ સર્વરને મોકલવું",
+
+DlgLnkTarget		: "ટાર્ગેટ/લક્ષ્ય",
+DlgLnkTargetFrame	: "<ફ્રેમ>",
+DlgLnkTargetPopup	: "<પૉપ-અપ વિન્ડો>",
+DlgLnkTargetBlank	: "નવી  વિન્ડો (_blank)",
+DlgLnkTargetParent	: "મૂળ વિન્ડો (_parent)",
+DlgLnkTargetSelf	: "આજ વિન્ડો (_self)",
+DlgLnkTargetTop		: "ઉપરની વિન્ડો (_top)",
+DlgLnkTargetFrameName	: "ટાર્ગેટ ફ્રેમ નું નામ",
+DlgLnkPopWinName	: "પૉપ-અપ વિન્ડો નું નામ",
+DlgLnkPopWinFeat	: "પૉપ-અપ વિન્ડો ફીચરસૅ",
+DlgLnkPopResize		: "સાઇઝ બદલી સકાય છે",
+DlgLnkPopLocation	: "લોકેશન બાર",
+DlgLnkPopMenu		: "મેન્યૂ બાર",
+DlgLnkPopScroll		: "સ્ક્રોલ બાર",
+DlgLnkPopStatus		: "સ્ટૅટસ બાર",
+DlgLnkPopToolbar	: "ટૂલ બાર",
+DlgLnkPopFullScrn	: "ફુલ સ્ક્રીન (IE)",
+DlgLnkPopDependent	: "ડિપેન્ડન્ટ (Netscape)",
+DlgLnkPopWidth		: "પહોળાઈ",
+DlgLnkPopHeight		: "ઊંચાઈ",
+DlgLnkPopLeft		: "ડાબી બાજુ",
+DlgLnkPopTop		: "જમણી બાજુ",
+
+DlnLnkMsgNoUrl		: "લિંક  URL ટાઇપ કરો",
+DlnLnkMsgNoEMail	: "ઈ-મેલ સરનામું ટાઇપ કરો",
+DlnLnkMsgNoAnchor	: "ઍંકર પસંદ કરો",
+DlnLnkMsgInvPopName	: "પૉપ-અપ વિન્ડો નું નામ ઍલ્ફબેટથી શરૂ કરવો અને તેમાં સ્પેઇસ ન હોવી જોઈએ",
+
+// Color Dialog
+DlgColorTitle		: "રંગ  પસંદ કરો",
+DlgColorBtnClear	: "સાફ કરો",
+DlgColorHighlight	: "હાઈલાઇટ",
+DlgColorSelected	: "સિલેક્ટેડ/પસંદ કરવું",
+
+// Smiley Dialog
+DlgSmileyTitle		: "સ્માઇલી  પસંદ કરો",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો",
+
+// Table Dialog
+DlgTableTitle		: "ટેબલ, કોઠાનું મથાળું",
+DlgTableRows		: "પંક્તિના ખાના",
+DlgTableColumns		: "કૉલમ/ઊભી કટાર",
+DlgTableBorder		: "કોઠાની બાજુ(બોર્ડર) સાઇઝ",
+DlgTableAlign		: "અલાઇનમન્ટ/ગોઠવાયેલું ",
+DlgTableAlignNotSet	: "<સેટ નથી>",
+DlgTableAlignLeft	: "ડાબી બાજુ",
+DlgTableAlignCenter	: "મધ્ય સેન્ટર",
+DlgTableAlignRight	: "જમણી બાજુ",
+DlgTableWidth		: "પહોળાઈ",
+DlgTableWidthPx		: "પિકસલ",
+DlgTableWidthPc		: "પ્રતિશત",
+DlgTableHeight		: "ઊંચાઈ",
+DlgTableCellSpace	: "સેલ અંતર",
+DlgTableCellPad		: "સેલ પૅડિંગ",
+DlgTableCaption		: "મથાળું/કૅપ્શન ",
+DlgTableSummary		: "ટૂંકો એહેવાલ",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "પંક્તિના ખાનાના ગુણ",
+DlgCellWidth		: "પહોળાઈ",
+DlgCellWidthPx		: "પિકસલ",
+DlgCellWidthPc		: "પ્રતિશત",
+DlgCellHeight		: "ઊંચાઈ",
+DlgCellWordWrap		: "વર્ડ રૅપ",
+DlgCellWordWrapNotSet	: "<સેટ નથી>",
+DlgCellWordWrapYes	: "હા",
+DlgCellWordWrapNo	: "ના",
+DlgCellHorAlign		: "સમસ્તરીય ગોઠવવું",
+DlgCellHorAlignNotSet	: "<સેટ નથી>",
+DlgCellHorAlignLeft	: "ડાબી બાજુ",
+DlgCellHorAlignCenter	: "મધ્ય સેન્ટર",
+DlgCellHorAlignRight: "જમણી બાજુ",
+DlgCellVerAlign		: "લંબરૂપ ગોઠવવું",
+DlgCellVerAlignNotSet	: "<સેટ નથી>",
+DlgCellVerAlignTop	: "ઉપર",
+DlgCellVerAlignMiddle	: "મધ્ય સેન્ટર",
+DlgCellVerAlignBottom	: "નીચે",
+DlgCellVerAlignBaseline	: "મૂળ રેખા",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "પંક્તિ સ્પાન",
+DlgCellCollSpan		: "કૉલમ/ઊભી કટાર સ્પાન",
+DlgCellBackColor	: "બૅકગ્રાઉન્ડ રંગ",
+DlgCellBorderColor	: "બોર્ડરનો રંગ",
+DlgCellBtnSelect	: "પસંદ કરો...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "શોધવું અને બદલવું",
+
+// Find Dialog
+DlgFindTitle		: "શોધવું",
+DlgFindFindBtn		: "શોધવું",
+DlgFindNotFoundMsg	: "તમે શોધેલી ટેક્સ્ટ નથી મળી",
+
+// Replace Dialog
+DlgReplaceTitle			: "બદલવું",
+DlgReplaceFindLbl		: "આ શોધો",
+DlgReplaceReplaceLbl	: "આનાથી બદલો",
+DlgReplaceCaseChk		: "કેસ સરખા રાખો",
+DlgReplaceReplaceBtn	: "બદલવું",
+DlgReplaceReplAllBtn	: "બઘા બદલી ",
+DlgReplaceWordChk		: "બઘા શબ્દ સરખા રાખો",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.",
+PasteErrorCopy	: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી.  (Ctrl+C) का प्रयोग करें।",
+
+PasteAsText		: "પેસ્ટ (ટેક્સ્ટ)",
+PasteFromWord	: "પેસ્ટ (વર્ડ થી)",
+
+DlgPasteMsg2	: "Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો",
+DlgPasteSec		: "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.",
+DlgPasteIgnoreFont		: "ફૉન્ટફેસ વ્યાખ્યાની અવગણના",
+DlgPasteRemoveStyles	: "સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી",
+
+// Color Picker
+ColorAutomatic	: "સ્વચાલિત",
+ColorMoreColors	: "ઔર રંગ...",
+
+// Document Properties
+DocProps		: "ડૉક્યુમન્ટ ગુણ/પ્રૉપર્ટિઝ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ઍંકર ગુણ/પ્રૉપર્ટિઝ",
+DlgAnchorName		: "ઍંકરનું નામ",
+DlgAnchorErrorName	: "ઍંકરનું નામ ટાઈપ કરો",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "શબ્દકોશમાં નથી",
+DlgSpellChangeTo		: "આનાથી બદલવું",
+DlgSpellBtnIgnore		: "ઇગ્નોર/અવગણના કરવી",
+DlgSpellBtnIgnoreAll	: "બધાની ઇગ્નોર/અવગણના કરવી",
+DlgSpellBtnReplace		: "બદલવું",
+DlgSpellBtnReplaceAll	: "બધા બદલી કરો",
+DlgSpellBtnUndo			: "અન્ડૂ",
+DlgSpellNoSuggestions	: "- કઇ સજેશન નથી -",
+DlgSpellProgress		: "શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...",
+DlgSpellNoMispell		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી",
+DlgSpellNoChanges		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી",
+DlgSpellOneChange		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે",
+DlgSpellManyChanges		: "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે",
+
+IeSpellDownload			: "સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?",
+
+// Button Dialog
+DlgButtonText		: "ટેક્સ્ટ (વૅલ્યૂ)",
+DlgButtonType		: "પ્રકાર",
+DlgButtonTypeBtn	: "બટન",
+DlgButtonTypeSbm	: "સબ્મિટ",
+DlgButtonTypeRst	: "રિસેટ",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "નામ",
+DlgCheckboxValue	: "વૅલ્યૂ",
+DlgCheckboxSelected	: "સિલેક્ટેડ",
+
+// Form Dialog
+DlgFormName		: "નામ",
+DlgFormAction	: "ક્રિયા",
+DlgFormMethod	: "પદ્ધતિ",
+
+// Select Field Dialog
+DlgSelectName		: "નામ",
+DlgSelectValue		: "વૅલ્યૂ",
+DlgSelectSize		: "સાઇઝ",
+DlgSelectLines		: "લીટીઓ",
+DlgSelectChkMulti	: "એકથી વધારે પસંદ કરી શકો",
+DlgSelectOpAvail	: "ઉપલબ્ધ વિકલ્પ",
+DlgSelectOpText		: "ટેક્સ્ટ",
+DlgSelectOpValue	: "વૅલ્યૂ",
+DlgSelectBtnAdd		: "ઉમેરવું",
+DlgSelectBtnModify	: "બદલવું",
+DlgSelectBtnUp		: "ઉપર",
+DlgSelectBtnDown	: "નીચે",
+DlgSelectBtnSetValue : "પસંદ કરલી વૅલ્યૂ સેટ કરો",
+DlgSelectBtnDelete	: "રદ કરવું",
+
+// Textarea Dialog
+DlgTextareaName	: "નામ",
+DlgTextareaCols	: "કૉલમ/ઊભી કટાર",
+DlgTextareaRows	: "પંક્તિઓ",
+
+// Text Field Dialog
+DlgTextName			: "નામ",
+DlgTextValue		: "વૅલ્યૂ",
+DlgTextCharWidth	: "કેરેક્ટરની પહોળાઈ",
+DlgTextMaxChars		: "અધિકતમ કેરેક્ટર",
+DlgTextType			: "ટાઇપ",
+DlgTextTypeText		: "ટેક્સ્ટ",
+DlgTextTypePass		: "પાસવર્ડ",
+
+// Hidden Field Dialog
+DlgHiddenName	: "નામ",
+DlgHiddenValue	: "વૅલ્યૂ",
+
+// Bulleted List Dialog
+BulletedListProp	: "બુલેટ સૂચિ ગુણ",
+NumberedListProp	: "સંખ્યાંક્તિ સૂચિ ગુણ",
+DlgLstStart			: "શરૂઆતથી",
+DlgLstType			: "પ્રકાર",
+DlgLstTypeCircle	: "વર્તુળ",
+DlgLstTypeDisc		: "ડિસ્ક",
+DlgLstTypeSquare	: "ચોરસ",
+DlgLstTypeNumbers	: "સંખ્યા (1, 2, 3)",
+DlgLstTypeLCase		: "નાના અક્ષર (a, b, c)",
+DlgLstTypeUCase		: "મોટા અક્ષર (A, B, C)",
+DlgLstTypeSRoman	: "નાના રોમન આંક (i, ii, iii)",
+DlgLstTypeLRoman	: "મોટા રોમન આંક (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "સાધારણ",
+DlgDocBackTab		: "બૅકગ્રાઉન્ડ",
+DlgDocColorsTab		: "રંગ અને માર્જિન/કિનાર",
+DlgDocMetaTab		: "મેટાડૅટા",
+
+DlgDocPageTitle		: "પેજ મથાળું/ટાઇટલ",
+DlgDocLangDir		: "ભાષા લેખવાની પદ્ધતિ",
+DlgDocLangDirLTR	: "ડાબે થી જમણે (LTR)",
+DlgDocLangDirRTL	: "જમણે થી ડાબે (RTL)",
+DlgDocLangCode		: "ભાષા કોડ",
+DlgDocCharSet		: "કેરેક્ટર સેટ એન્કોડિંગ",
+DlgDocCharSetCE		: "મધ્ય યુરોપિઅન (Central European)",
+DlgDocCharSetCT		: "ચાઇનીઝ (Chinese Traditional Big5)",
+DlgDocCharSetCR		: "સિરીલિક (Cyrillic)",
+DlgDocCharSetGR		: "ગ્રીક (Greek)",
+DlgDocCharSetJP		: "જાપાનિઝ (Japanese)",
+DlgDocCharSetKR		: "કોરીયન (Korean)",
+DlgDocCharSetTR		: "ટર્કિ (Turkish)",
+DlgDocCharSetUN		: "યૂનિકોડ (UTF-8)",
+DlgDocCharSetWE		: "પશ્ચિમ યુરોપિઅન (Western European)",
+DlgDocCharSetOther	: "અન્ય કેરેક્ટર સેટ એન્કોડિંગ",
+
+DlgDocDocType		: "ડૉક્યુમન્ટ પ્રકાર શીર્ષક",
+DlgDocDocTypeOther	: "અન્ય ડૉક્યુમન્ટ પ્રકાર શીર્ષક",
+DlgDocIncXHTML		: "XHTML સૂચના સમાવિષ્ટ કરવી",
+DlgDocBgColor		: "બૅકગ્રાઉન્ડ રંગ",
+DlgDocBgImage		: "બૅકગ્રાઉન્ડ ચિત્ર URL",
+DlgDocBgNoScroll	: "સ્ક્રોલ ન થાય તેવું બૅકગ્રાઉન્ડ",
+DlgDocCText			: "ટેક્સ્ટ",
+DlgDocCLink			: "લિંક",
+DlgDocCVisited		: "વિઝિટેડ લિંક",
+DlgDocCActive		: "સક્રિય લિંક",
+DlgDocMargins		: "પેજ માર્જિન",
+DlgDocMaTop			: "ઉપર",
+DlgDocMaLeft		: "ડાબી",
+DlgDocMaRight		: "જમણી",
+DlgDocMaBottom		: "નીચે",
+DlgDocMeIndex		: "ડૉક્યુમન્ટ ઇન્ડેક્સ સંકેતશબ્દ (અલ્પવિરામ (,) થી અલગ કરો)",
+DlgDocMeDescr		: "ડૉક્યુમન્ટ વર્ણન",
+DlgDocMeAuthor		: "લેખક",
+DlgDocMeCopy		: "કૉપિરાઇટ",
+DlgDocPreview		: "પૂર્વદર્શન",
+
+// Templates Dialog
+Templates			: "ટેમ્પ્લેટ",
+DlgTemplatesTitle	: "કન્ટેન્ટ ટેમ્પ્લેટ",
+DlgTemplatesSelMsg	: "એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):",
+DlgTemplatesLoading	: "ટેમ્પ્લેટ સૂચિ લોડ થાય છે. રાહ જુઓ...",
+DlgTemplatesNoTpl	: "(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)",
+DlgTemplatesReplace	: "મૂળ શબ્દને બદલો",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor ના વિષે",
+DlgAboutBrowserInfoTab	: "બ્રાઉઝર ના વિષે",
+DlgAboutLicenseTab	: "લાઇસન્સ",
+DlgAboutVersion		: "વર્ઝન",
+DlgAboutInfo		: "વધારે માહિતી માટે:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hu.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hu.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hu.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Hungarian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Eszköztár elrejtése",
+ToolbarExpand		: "Eszköztár megjelenítése",
+
+// Toolbar Items and Context Menu
+Save				: "Mentés",
+NewPage				: "Új oldal",
+Preview				: "Előnézet",
+Cut					: "Kivágás",
+Copy				: "Másolás",
+Paste				: "Beillesztés",
+PasteText			: "Beillesztés formázás nélkül",
+PasteWord			: "Beillesztés Word-ből",
+Print				: "Nyomtatás",
+SelectAll			: "Mindent kijelöl",
+RemoveFormat		: "Formázás eltávolítása",
+InsertLinkLbl		: "Hivatkozás",
+InsertLink			: "Hivatkozás beillesztése/módosítása",
+RemoveLink			: "Hivatkozás törlése",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Horgony beillesztése/szerkesztése",
+AnchorDelete		: "Horgony eltávolítása",
+InsertImageLbl		: "Kép",
+InsertImage			: "Kép beillesztése/módosítása",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash beillesztése, módosítása",
+InsertTableLbl		: "Táblázat",
+InsertTable			: "Táblázat beillesztése/módosítása",
+InsertLineLbl		: "Vonal",
+InsertLine			: "Elválasztóvonal beillesztése",
+InsertSpecialCharLbl: "Speciális karakter",
+InsertSpecialChar	: "Speciális karakter beillesztése",
+InsertSmileyLbl		: "Hangulatjelek",
+InsertSmiley		: "Hangulatjelek beillesztése",
+About				: "FCKeditor névjegy",
+Bold				: "Félkövér",
+Italic				: "Dőlt",
+Underline			: "Aláhúzott",
+StrikeThrough		: "Áthúzott",
+Subscript			: "Alsó index",
+Superscript			: "Felső index",
+LeftJustify			: "Balra",
+CenterJustify		: "Középre",
+RightJustify		: "Jobbra",
+BlockJustify		: "Sorkizárt",
+DecreaseIndent		: "Behúzás csökkentése",
+IncreaseIndent		: "Behúzás növelése",
+Blockquote			: "Idézet blokk",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Visszavonás",
+Redo				: "Ismétlés",
+NumberedListLbl		: "Számozás",
+NumberedList		: "Számozás beillesztése/törlése",
+BulletedListLbl		: "Felsorolás",
+BulletedList		: "Felsorolás beillesztése/törlése",
+ShowTableBorders	: "Táblázat szegély mutatása",
+ShowDetails			: "Részletek mutatása",
+Style				: "Stílus",
+FontFormat			: "Formátum",
+Font				: "Betűtípus",
+FontSize			: "Méret",
+TextColor			: "Betűszín",
+BGColor				: "Háttérszín",
+Source				: "Forráskód",
+Find				: "Keresés",
+Replace				: "Csere",
+SpellCheck			: "Helyesírás-ellenőrzés",
+UniversalKeyboard	: "Univerzális billentyűzet",
+PageBreakLbl		: "Oldaltörés",
+PageBreak			: "Oldaltörés beillesztése",
+
+Form			: "Űrlap",
+Checkbox		: "Jelölőnégyzet",
+RadioButton		: "Választógomb",
+TextField		: "Szövegmező",
+Textarea		: "Szövegterület",
+HiddenField		: "Rejtettmező",
+Button			: "Gomb",
+SelectionField	: "Legördülő lista",
+ImageButton		: "Képgomb",
+
+FitWindow		: "Maximalizálás",
+ShowBlocks		: "Blokkok megjelenítése",
+
+// Context Menu
+EditLink			: "Hivatkozás módosítása",
+CellCM				: "Cella",
+RowCM				: "Sor",
+ColumnCM			: "Oszlop",
+InsertRowAfter		: "Sor beillesztése az aktuális sor mögé",
+InsertRowBefore		: "Sor beillesztése az aktuális sor elé",
+DeleteRows			: "Sorok törlése",
+InsertColumnAfter	: "Oszlop beillesztése az aktuális oszlop mögé",
+InsertColumnBefore	: "Oszlop beillesztése az aktuális oszlop elé",
+DeleteColumns		: "Oszlopok törlése",
+InsertCellAfter		: "Cella beillesztése az aktuális cella mögé",
+InsertCellBefore	: "Cella beillesztése az aktuális cella elé",
+DeleteCells			: "Cellák törlése",
+MergeCells			: "Cellák egyesítése",
+MergeRight			: "Cellák egyesítése jobbra",
+MergeDown			: "Cellák egyesítése lefelé",
+HorizontalSplitCell	: "Cellák szétválasztása vízszintesen",
+VerticalSplitCell	: "Cellák szétválasztása függőlegesen",
+TableDelete			: "Táblázat törlése",
+CellProperties		: "Cella tulajdonságai",
+TableProperties		: "Táblázat tulajdonságai",
+ImageProperties		: "Kép tulajdonságai",
+FlashProperties		: "Flash tulajdonságai",
+
+AnchorProp			: "Horgony tulajdonságai",
+ButtonProp			: "Gomb tulajdonságai",
+CheckboxProp		: "Jelölőnégyzet tulajdonságai",
+HiddenFieldProp		: "Rejtett mező tulajdonságai",
+RadioButtonProp		: "Választógomb tulajdonságai",
+ImageButtonProp		: "Képgomb tulajdonságai",
+TextFieldProp		: "Szövegmező tulajdonságai",
+SelectionFieldProp	: "Legördülő lista tulajdonságai",
+TextareaProp		: "Szövegterület tulajdonságai",
+FormProp			: "Űrlap tulajdonságai",
+
+FontFormats			: "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML feldolgozása. Kérem várjon...",
+Done				: "Kész",
+PasteWordConfirm	: "A beilleszteni kívánt szöveg Word-ből van másolva. El kívánja távolítani a formázást a beillesztés előtt?",
+NotCompatiblePaste	: "Ez a parancs csak Internet Explorer 5.5 verziótól használható. Megpróbálja beilleszteni a szöveget az eredeti formázással?",
+UnknownToolbarItem	: "Ismeretlen eszköztár elem \"%1\"",
+UnknownCommand		: "Ismeretlen parancs \"%1\"",
+NotImplemented		: "A parancs nem hajtható végre",
+UnknownToolbarSet	: "Az eszközkészlet \"%1\" nem létezik",
+NoActiveX			: "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.",
+BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+DialogBlocked		: "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "Rendben",
+DlgBtnCancel		: "Mégsem",
+DlgBtnClose			: "Bezárás",
+DlgBtnBrowseServer	: "Böngészés a szerveren",
+DlgAdvancedTag		: "További opciók",
+DlgOpOther			: "Egyéb",
+DlgInfoTab			: "Alaptulajdonságok",
+DlgAlertUrl			: "Illessze be a webcímet",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nincs beállítva>",
+DlgGenId			: "Azonosító",
+DlgGenLangDir		: "Írás iránya",
+DlgGenLangDirLtr	: "Balról jobbra",
+DlgGenLangDirRtl	: "Jobbról balra",
+DlgGenLangCode		: "Nyelv kódja",
+DlgGenAccessKey		: "Billentyűkombináció",
+DlgGenName			: "Név",
+DlgGenTabIndex		: "Tabulátor index",
+DlgGenLongDescr		: "Részletes leírás webcíme",
+DlgGenClass			: "Stíluskészlet",
+DlgGenTitle			: "Súgócimke",
+DlgGenContType		: "Súgó tartalomtípusa",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Hivatkozott tartalom kódlapja",
+DlgGenStyle			: "Stílus",
+
+// Image Dialog
+DlgImgTitle			: "Kép tulajdonságai",
+DlgImgInfoTab		: "Alaptulajdonságok",
+DlgImgBtnUpload		: "Küldés a szerverre",
+DlgImgURL			: "Hivatkozás",
+DlgImgUpload		: "Feltöltés",
+DlgImgAlt			: "Buborék szöveg",
+DlgImgWidth			: "Szélesség",
+DlgImgHeight		: "Magasság",
+DlgImgLockRatio		: "Arány megtartása",
+DlgBtnResetSize		: "Eredeti méret",
+DlgImgBorder		: "Keret",
+DlgImgHSpace		: "Vízsz. táv",
+DlgImgVSpace		: "Függ. táv",
+DlgImgAlign			: "Igazítás",
+DlgImgAlignLeft		: "Bal",
+DlgImgAlignAbsBottom: "Legaljára",
+DlgImgAlignAbsMiddle: "Közepére",
+DlgImgAlignBaseline	: "Alapvonalhoz",
+DlgImgAlignBottom	: "Aljára",
+DlgImgAlignMiddle	: "Középre",
+DlgImgAlignRight	: "Jobbra",
+DlgImgAlignTextTop	: "Szöveg tetejére",
+DlgImgAlignTop		: "Tetejére",
+DlgImgPreview		: "Előnézet",
+DlgImgAlertUrl		: "Töltse ki a kép webcímét",
+DlgImgLinkTab		: "Hivatkozás",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash tulajdonságai",
+DlgFlashChkPlay		: "Automata lejátszás",
+DlgFlashChkLoop		: "Folyamatosan",
+DlgFlashChkMenu		: "Flash menü engedélyezése",
+DlgFlashScale		: "Méretezés",
+DlgFlashScaleAll	: "Mindent mutat",
+DlgFlashScaleNoBorder	: "Keret nélkül",
+DlgFlashScaleFit	: "Teljes kitöltés",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hivatkozás tulajdonságai",
+DlgLnkInfoTab		: "Alaptulajdonságok",
+DlgLnkTargetTab		: "Megjelenítés",
+
+DlgLnkType			: "Hivatkozás típusa",
+DlgLnkTypeURL		: "Webcím",
+DlgLnkTypeAnchor	: "Horgony az oldalon",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<más>",
+DlgLnkURL			: "Webcím",
+DlgLnkAnchorSel		: "Horgony választása",
+DlgLnkAnchorByName	: "Horgony név szerint",
+DlgLnkAnchorById	: "Azonosító szerint",
+DlgLnkNoAnchors		: "(Nincs horgony a dokumentumban)",
+DlgLnkEMail			: "E-Mail cím",
+DlgLnkEMailSubject	: "Üzenet tárgya",
+DlgLnkEMailBody		: "Üzenet",
+DlgLnkUpload		: "Feltöltés",
+DlgLnkBtnUpload		: "Küldés a szerverre",
+
+DlgLnkTarget		: "Tartalom megjelenítése",
+DlgLnkTargetFrame	: "<keretben>",
+DlgLnkTargetPopup	: "<felugró ablakban>",
+DlgLnkTargetBlank	: "Új ablakban (_blank)",
+DlgLnkTargetParent	: "Szülő ablakban (_parent)",
+DlgLnkTargetSelf	: "Azonos ablakban (_self)",
+DlgLnkTargetTop		: "Legfelső ablakban (_top)",
+DlgLnkTargetFrameName	: "Keret neve",
+DlgLnkPopWinName	: "Felugró ablak neve",
+DlgLnkPopWinFeat	: "Felugró ablak jellemzői",
+DlgLnkPopResize		: "Méretezhető",
+DlgLnkPopLocation	: "Címsor",
+DlgLnkPopMenu		: "Menü sor",
+DlgLnkPopScroll		: "Gördítősáv",
+DlgLnkPopStatus		: "Állapotsor",
+DlgLnkPopToolbar	: "Eszköztár",
+DlgLnkPopFullScrn	: "Teljes képernyő (csak IE)",
+DlgLnkPopDependent	: "Szülőhöz kapcsolt (csak Netscape)",
+DlgLnkPopWidth		: "Szélesség",
+DlgLnkPopHeight		: "Magasság",
+DlgLnkPopLeft		: "Bal pozíció",
+DlgLnkPopTop		: "Felső pozíció",
+
+DlnLnkMsgNoUrl		: "Adja meg a hivatkozás webcímét",
+DlnLnkMsgNoEMail	: "Adja meg az E-Mail címet",
+DlnLnkMsgNoAnchor	: "Válasszon egy horgonyt",
+DlnLnkMsgInvPopName	: "A felbukkanó ablak neve alfanumerikus karakterrel kezdôdjön, valamint ne tartalmazzon szóközt",
+
+// Color Dialog
+DlgColorTitle		: "Színválasztás",
+DlgColorBtnClear	: "Törlés",
+DlgColorHighlight	: "Előnézet",
+DlgColorSelected	: "Kiválasztott",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Hangulatjel beszúrása",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Speciális karakter választása",
+
+// Table Dialog
+DlgTableTitle		: "Táblázat tulajdonságai",
+DlgTableRows		: "Sorok",
+DlgTableColumns		: "Oszlopok",
+DlgTableBorder		: "Szegélyméret",
+DlgTableAlign		: "Igazítás",
+DlgTableAlignNotSet	: "<Nincs beállítva>",
+DlgTableAlignLeft	: "Balra",
+DlgTableAlignCenter	: "Középre",
+DlgTableAlignRight	: "Jobbra",
+DlgTableWidth		: "Szélesség",
+DlgTableWidthPx		: "képpont",
+DlgTableWidthPc		: "százalék",
+DlgTableHeight		: "Magasság",
+DlgTableCellSpace	: "Cella térköz",
+DlgTableCellPad		: "Cella belső margó",
+DlgTableCaption		: "Felirat",
+DlgTableSummary		: "Leírás",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Cella tulajdonságai",
+DlgCellWidth		: "Szélesség",
+DlgCellWidthPx		: "képpont",
+DlgCellWidthPc		: "százalék",
+DlgCellHeight		: "Magasság",
+DlgCellWordWrap		: "Sortörés",
+DlgCellWordWrapNotSet	: "<Nincs beállítva>",
+DlgCellWordWrapYes	: "Igen",
+DlgCellWordWrapNo	: "Nem",
+DlgCellHorAlign		: "Vízsz. igazítás",
+DlgCellHorAlignNotSet	: "<Nincs beállítva>",
+DlgCellHorAlignLeft	: "Balra",
+DlgCellHorAlignCenter	: "Középre",
+DlgCellHorAlignRight: "Jobbra",
+DlgCellVerAlign		: "Függ. igazítás",
+DlgCellVerAlignNotSet	: "<Nincs beállítva>",
+DlgCellVerAlignTop	: "Tetejére",
+DlgCellVerAlignMiddle	: "Középre",
+DlgCellVerAlignBottom	: "Aljára",
+DlgCellVerAlignBaseline	: "Egyvonalba",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Sorok egyesítése",
+DlgCellCollSpan		: "Oszlopok egyesítése",
+DlgCellBackColor	: "Háttérszín",
+DlgCellBorderColor	: "Szegélyszín",
+DlgCellBtnSelect	: "Kiválasztás...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Keresés és csere",
+
+// Find Dialog
+DlgFindTitle		: "Keresés",
+DlgFindFindBtn		: "Keresés",
+DlgFindNotFoundMsg	: "A keresett szöveg nem található.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Csere",
+DlgReplaceFindLbl		: "Keresett szöveg:",
+DlgReplaceReplaceLbl	: "Csere erre:",
+DlgReplaceCaseChk		: "kis- és nagybetű megkülönböztetése",
+DlgReplaceReplaceBtn	: "Csere",
+DlgReplaceReplAllBtn	: "Az összes cseréje",
+DlgReplaceWordChk		: "csak ha ez a teljes szó",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
+PasteErrorCopy	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
+
+PasteAsText		: "Beillesztés formázatlan szövegként",
+PasteFromWord	: "Beillesztés Word-ből",
+
+DlgPasteMsg2	: "Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.",
+DlgPasteSec		: "A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.",
+DlgPasteIgnoreFont		: "Betű formázások megszüntetése",
+DlgPasteRemoveStyles	: "Stílusok eltávolítása",
+
+// Color Picker
+ColorAutomatic	: "Automatikus",
+ColorMoreColors	: "További színek...",
+
+// Document Properties
+DocProps		: "Dokumentum tulajdonságai",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Horgony tulajdonságai",
+DlgAnchorName		: "Horgony neve",
+DlgAnchorErrorName	: "Kérem adja meg a horgony nevét",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nincs a szótárban",
+DlgSpellChangeTo		: "Módosítás",
+DlgSpellBtnIgnore		: "Kihagyja",
+DlgSpellBtnIgnoreAll	: "Mindet kihagyja",
+DlgSpellBtnReplace		: "Csere",
+DlgSpellBtnReplaceAll	: "Összes cseréje",
+DlgSpellBtnUndo			: "Visszavonás",
+DlgSpellNoSuggestions	: "Nincs javaslat",
+DlgSpellProgress		: "Helyesírás-ellenőrzés folyamatban...",
+DlgSpellNoMispell		: "Helyesírás-ellenőrzés kész: Nem találtam hibát",
+DlgSpellNoChanges		: "Helyesírás-ellenőrzés kész: Nincs változtatott szó",
+DlgSpellOneChange		: "Helyesírás-ellenőrzés kész: Egy szó cserélve",
+DlgSpellManyChanges		: "Helyesírás-ellenőrzés kész: %1 szó cserélve",
+
+IeSpellDownload			: "A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?",
+
+// Button Dialog
+DlgButtonText		: "Szöveg (Érték)",
+DlgButtonType		: "Típus",
+DlgButtonTypeBtn	: "Gomb",
+DlgButtonTypeSbm	: "Küldés",
+DlgButtonTypeRst	: "Alaphelyzet",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Név",
+DlgCheckboxValue	: "Érték",
+DlgCheckboxSelected	: "Kiválasztott",
+
+// Form Dialog
+DlgFormName		: "Név",
+DlgFormAction	: "Adatfeldolgozást végző hivatkozás",
+DlgFormMethod	: "Adatküldés módja",
+
+// Select Field Dialog
+DlgSelectName		: "Név",
+DlgSelectValue		: "Érték",
+DlgSelectSize		: "Méret",
+DlgSelectLines		: "sor",
+DlgSelectChkMulti	: "több sor is kiválasztható",
+DlgSelectOpAvail	: "Elérhető opciók",
+DlgSelectOpText		: "Szöveg",
+DlgSelectOpValue	: "Érték",
+DlgSelectBtnAdd		: "Hozzáad",
+DlgSelectBtnModify	: "Módosít",
+DlgSelectBtnUp		: "Fel",
+DlgSelectBtnDown	: "Le",
+DlgSelectBtnSetValue : "Legyen az alapértelmezett érték",
+DlgSelectBtnDelete	: "Töröl",
+
+// Textarea Dialog
+DlgTextareaName	: "Név",
+DlgTextareaCols	: "Karakterek száma egy sorban",
+DlgTextareaRows	: "Sorok száma",
+
+// Text Field Dialog
+DlgTextName			: "Név",
+DlgTextValue		: "Érték",
+DlgTextCharWidth	: "Megjelenített karakterek száma",
+DlgTextMaxChars		: "Maximális karakterszám",
+DlgTextType			: "Típus",
+DlgTextTypeText		: "Szöveg",
+DlgTextTypePass		: "Jelszó",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Név",
+DlgHiddenValue	: "Érték",
+
+// Bulleted List Dialog
+BulletedListProp	: "Felsorolás tulajdonságai",
+NumberedListProp	: "Számozás tulajdonságai",
+DlgLstStart			: "Start",
+DlgLstType			: "Formátum",
+DlgLstTypeCircle	: "Kör",
+DlgLstTypeDisc		: "Lemez",
+DlgLstTypeSquare	: "Négyzet",
+DlgLstTypeNumbers	: "Számok (1, 2, 3)",
+DlgLstTypeLCase		: "Kisbetűk (a, b, c)",
+DlgLstTypeUCase		: "Nagybetűk (A, B, C)",
+DlgLstTypeSRoman	: "Kis római számok (i, ii, iii)",
+DlgLstTypeLRoman	: "Nagy római számok (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Általános",
+DlgDocBackTab		: "Háttér",
+DlgDocColorsTab		: "Színek és margók",
+DlgDocMetaTab		: "Meta adatok",
+
+DlgDocPageTitle		: "Oldalcím",
+DlgDocLangDir		: "Írás iránya",
+DlgDocLangDirLTR	: "Balról jobbra",
+DlgDocLangDirRTL	: "Jobbról balra",
+DlgDocLangCode		: "Nyelv kód",
+DlgDocCharSet		: "Karakterkódolás",
+DlgDocCharSetCE		: "Közép-Európai",
+DlgDocCharSetCT		: "Kínai Tradicionális (Big5)",
+DlgDocCharSetCR		: "Cyrill",
+DlgDocCharSetGR		: "Görög",
+DlgDocCharSetJP		: "Japán",
+DlgDocCharSetKR		: "Koreai",
+DlgDocCharSetTR		: "Török",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Nyugat-Európai",
+DlgDocCharSetOther	: "Más karakterkódolás",
+
+DlgDocDocType		: "Dokumentum típus fejléc",
+DlgDocDocTypeOther	: "Más dokumentum típus fejléc",
+DlgDocIncXHTML		: "XHTML deklarációk beillesztése",
+DlgDocBgColor		: "Háttérszín",
+DlgDocBgImage		: "Háttérkép cím",
+DlgDocBgNoScroll	: "Nem gördíthető háttér",
+DlgDocCText			: "Szöveg",
+DlgDocCLink			: "Cím",
+DlgDocCVisited		: "Látogatott cím",
+DlgDocCActive		: "Aktív cím",
+DlgDocMargins		: "Oldal margók",
+DlgDocMaTop			: "Felső",
+DlgDocMaLeft		: "Bal",
+DlgDocMaRight		: "Jobb",
+DlgDocMaBottom		: "Alsó",
+DlgDocMeIndex		: "Dokumentum keresőszavak (vesszővel elválasztva)",
+DlgDocMeDescr		: "Dokumentum leírás",
+DlgDocMeAuthor		: "Szerző",
+DlgDocMeCopy		: "Szerzői jog",
+DlgDocPreview		: "Előnézet",
+
+// Templates Dialog
+Templates			: "Sablonok",
+DlgTemplatesTitle	: "Elérhető sablonok",
+DlgTemplatesSelMsg	: "Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):",
+DlgTemplatesLoading	: "Sablon lista betöltése. Kis türelmet...",
+DlgTemplatesNoTpl	: "(Nincs sablon megadva)",
+DlgTemplatesReplace	: "Kicseréli a jelenlegi tartalmat",
+
+// About Dialog
+DlgAboutAboutTab	: "Névjegy",
+DlgAboutBrowserInfoTab	: "Böngésző információ",
+DlgAboutLicenseTab	: "Licensz",
+DlgAboutVersion		: "verzió",
+DlgAboutInfo		: "További információkért látogasson el ide:",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/no.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/no.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/no.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Norwegian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul verktøylinje",
+ToolbarExpand		: "Vis verktøylinje",
+
+// Toolbar Items and Context Menu
+Save				: "Lagre",
+NewPage				: "Ny Side",
+Preview				: "Forhåndsvis",
+Cut					: "Klipp ut",
+Copy				: "Kopier",
+Paste				: "Lim inn",
+PasteText			: "Lim inn som ren tekst",
+PasteWord			: "Lim inn fra Word",
+Print				: "Skriv ut",
+SelectAll			: "Merk alt",
+RemoveFormat		: "Fjern format",
+InsertLinkLbl		: "Lenke",
+InsertLink			: "Sett inn/Rediger lenke",
+RemoveLink			: "Fjern lenke",
+VisitLink			: "Åpne lenke",
+Anchor				: "Sett inn/Rediger anker",
+AnchorDelete		: "Fjern anker",
+InsertImageLbl		: "Bilde",
+InsertImage			: "Sett inn/Rediger bilde",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sett inn/Rediger Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Sett inn/Rediger tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Sett inn horisontal linje",
+InsertSpecialCharLbl: "Spesielt tegn",
+InsertSpecialChar	: "Sett inn spesielt tegn",
+InsertSmileyLbl		: "Smil",
+InsertSmiley		: "Sett inn smil",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understrek",
+StrikeThrough		: "Gjennomstrek",
+Subscript			: "Senket skrift",
+Superscript			: "Hevet skrift",
+LeftJustify			: "Venstrejuster",
+CenterJustify		: "Midtjuster",
+RightJustify		: "Høyrejuster",
+BlockJustify		: "Blokkjuster",
+DecreaseIndent		: "Senk nivå",
+IncreaseIndent		: "Øk nivå",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Angre",
+Redo				: "Gjør om",
+NumberedListLbl		: "Nummerert liste",
+NumberedList		: "Sett inn/Fjern nummerert liste",
+BulletedListLbl		: "Uordnet liste",
+BulletedList		: "Sett inn/Fjern uordnet liste",
+ShowTableBorders	: "Vis tabellrammer",
+ShowDetails			: "Vis detaljer",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Skrift",
+FontSize			: "Størrelse",
+TextColor			: "Tekstfarge",
+BGColor				: "Bakgrunnsfarge",
+Source				: "Kilde",
+Find				: "Søk",
+Replace				: "Erstatt",
+SpellCheck			: "Stavekontroll",
+UniversalKeyboard	: "Universelt tastatur",
+PageBreakLbl		: "Sideskift",
+PageBreak			: "Sett inn sideskift",
+
+Form			: "Skjema",
+Checkbox		: "Avmerkingsboks",
+RadioButton		: "Alternativknapp",
+TextField		: "Tekstboks",
+Textarea		: "Tekstområde",
+HiddenField		: "Skjult felt",
+Button			: "Knapp",
+SelectionField	: "Rullegardinliste",
+ImageButton		: "Bildeknapp",
+
+FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Rediger lenke",
+CellCM				: "Celle",
+RowCM				: "Rader",
+ColumnCM			: "Kolonne",
+InsertRowAfter		: "Sett inn rad etter",
+InsertRowBefore		: "Sett inn rad før",
+DeleteRows			: "Slett rader",
+InsertColumnAfter	: "Sett inn kolonne etter",
+InsertColumnBefore	: "Sett inn kolonne før",
+DeleteColumns		: "Slett kolonner",
+InsertCellAfter		: "Sett inn celle etter",
+InsertCellBefore	: "Sett inn celle før",
+DeleteCells			: "Slett celler",
+MergeCells			: "Slå sammen celler",
+MergeRight			: "Slå sammen høyre",
+MergeDown			: "Slå sammen ned",
+HorizontalSplitCell	: "Del celle horisontalt",
+VerticalSplitCell	: "Del celle vertikalt",
+TableDelete			: "Slett tabell",
+CellProperties		: "Egenskaper for celle",
+TableProperties		: "Egenskaper for tabell",
+ImageProperties		: "Egenskaper for bilde",
+FlashProperties		: "Egenskaper for Flash-objekt",
+
+AnchorProp			: "Egenskaper for anker",
+ButtonProp			: "Egenskaper for knapp",
+CheckboxProp		: "Egenskaper for avmerkingsboks",
+HiddenFieldProp		: "Egenskaper for skjult felt",
+RadioButtonProp		: "Egenskaper for alternativknapp",
+ImageButtonProp		: "Egenskaper for bildeknapp",
+TextFieldProp		: "Egenskaper for tekstfelt",
+SelectionFieldProp	: "Egenskaper for rullegardinliste",
+TextareaProp		: "Egenskaper for tekstområde",
+FormProp			: "Egenskaper for skjema",
+
+FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
+Done				: "Ferdig",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
+NotCompatiblePaste	: "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
+UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
+UnknownCommand		: "Ukjent kommando \"%1\"",
+NotImplemented		: "Kommando ikke implimentert",
+UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
+NoActiveX			: "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
+VisitLinkBlocked	: "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Lukk",
+DlgBtnBrowseServer	: "Bla igjennom server",
+DlgAdvancedTag		: "Avansert",
+DlgOpOther			: "<Annet>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Vennligst skriv inn URL-en",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikke satt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkretning",
+DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
+DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
+DlgGenLangCode		: "Språkkode",
+DlgGenAccessKey		: "Aksessknapp",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Utvidet beskrivelse",
+DlgGenClass			: "Stilarkklasser",
+DlgGenTitle			: "Tittel",
+DlgGenContType		: "Type",
+DlgGenLinkCharset	: "Lenket språkkart",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Bildeegenskaper",
+DlgImgInfoTab		: "Bildeinformasjon",
+DlgImgBtnUpload		: "Send det til serveren",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Last opp",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Høyde",
+DlgImgLockRatio		: "Lås forhold",
+DlgBtnResetSize		: "Tilbakestill størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMarg",
+DlgImgVSpace		: "VMarg",
+DlgImgAlign			: "Juster",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Abs bunn",
+DlgImgAlignAbsMiddle: "Abs midten",
+DlgImgAlignBaseline	: "Bunnlinje",
+DlgImgAlignBottom	: "Bunn",
+DlgImgAlignMiddle	: "Midten",
+DlgImgAlignRight	: "Høyre",
+DlgImgAlignTextTop	: "Tekst topp",
+DlgImgAlignTop		: "Topp",
+DlgImgPreview		: "Forhåndsvis",
+DlgImgAlertUrl		: "Vennligst skriv bilde-urlen",
+DlgImgLinkTab		: "Lenke",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash-egenskaper",
+DlgFlashChkPlay		: "Autospill",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Slå på Flash-meny",
+DlgFlashScale		: "Skaler",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Skaler til å passe",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Lenke",
+DlgLnkInfoTab		: "Lenkeinfo",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Lenketype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Lenke til anker i teksten",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<annet>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Velg et anker",
+DlgLnkAnchorByName	: "Anker etter navn",
+DlgLnkAnchorById	: "Element etter ID",
+DlgLnkNoAnchors		: "(Ingen anker i dokumentet)",
+DlgLnkEMail			: "E-postadresse",
+DlgLnkEMailSubject	: "Meldingsemne",
+DlgLnkEMailBody		: "Melding",
+DlgLnkUpload		: "Last opp",
+DlgLnkBtnUpload		: "Send til server",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindu>",
+DlgLnkTargetBlank	: "Nytt vindu (_blank)",
+DlgLnkTargetParent	: "Foreldrevindu (_parent)",
+DlgLnkTargetSelf	: "Samme vindu (_self)",
+DlgLnkTargetTop		: "Hele vindu (_top)",
+DlgLnkTargetFrameName	: "Målramme",
+DlgLnkPopWinName	: "Navn på popup-vindus",
+DlgLnkPopWinFeat	: "Egenskaper for popup-vindu",
+DlgLnkPopResize		: "Endre størrelse",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menylinje",
+DlgLnkPopScroll		: "Scrollbar",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Verktøylinje",
+DlgLnkPopFullScrn	: "Full skjerm (IE)",
+DlgLnkPopDependent	: "Avhenging (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Høyde",
+DlgLnkPopLeft		: "Venstre posisjon",
+DlgLnkPopTop		: "Topp-posisjon",
+
+DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
+DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
+DlnLnkMsgNoAnchor	: "Vennligst velg et anker",
+DlnLnkMsgInvPopName	: "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
+
+// Color Dialog
+DlgColorTitle		: "Velg farge",
+DlgColorBtnClear	: "Tøm",
+DlgColorHighlight	: "Marker",
+DlgColorSelected	: "Valgt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sett inn smil",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Velg spesielt tegn",
+
+// Table Dialog
+DlgTableTitle		: "Egenskaper for tabell",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammestørrelse",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Ikke satt>",
+DlgTableAlignLeft	: "Venstre",
+DlgTableAlignCenter	: "Midtjuster",
+DlgTableAlignRight	: "Høyre",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "piksler",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Høyde",
+DlgTableCellSpace	: "Cellemarg",
+DlgTableCellPad		: "Cellepolstring",
+DlgTableCaption		: "Tittel",
+DlgTableSummary		: "Sammendrag",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Celleegenskaper",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "piksler",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Høyde",
+DlgCellWordWrap		: "Tekstbrytning",
+DlgCellWordWrapNotSet	: "<Ikke satt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ikke satt>",
+DlgCellHorAlignLeft	: "Venstre",
+DlgCellHorAlignCenter	: "Midtjuster",
+DlgCellHorAlignRight: "Høyre",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ikke satt>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Midten",
+DlgCellVerAlignBottom	: "Bunn",
+DlgCellVerAlignBaseline	: "Bunnlinje",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Radspenn",
+DlgCellCollSpan		: "Kolonnespenn",
+DlgCellBackColor	: "Bakgrunnsfarge",
+DlgCellBorderColor	: "Rammefarge",
+DlgCellBtnSelect	: "Velg...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Søk og erstatt",
+
+// Find Dialog
+DlgFindTitle		: "Søk",
+DlgFindFindBtn		: "Søk",
+DlgFindNotFoundMsg	: "Fant ikke søketeksten.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstatt",
+DlgReplaceFindLbl		: "Søk etter:",
+DlgReplaceReplaceLbl	: "Erstatt med:",
+DlgReplaceCaseChk		: "Skill mellom store og små bokstaver",
+DlgReplaceReplaceBtn	: "Erstatt",
+DlgReplaceReplAllBtn	: "Erstatt alle",
+DlgReplaceWordChk		: "Bare hele ord",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
+
+PasteAsText		: "Lim inn som ren tekst",
+PasteFromWord	: "Lim inn fra Word",
+
+DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
+DlgPasteIgnoreFont		: "Fjern skrifttyper",
+DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankeregenskaper",
+DlgAnchorName		: "Ankernavn",
+DlgAnchorErrorName	: "Vennligst skriv inn ankernavnet",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordboken",
+DlgSpellChangeTo		: "Endre til",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstatt",
+DlgSpellBtnReplaceAll	: "Erstatt alle",
+DlgSpellBtnUndo			: "Angre",
+DlgSpellNoSuggestions	: "- Ingen forslag -",
+DlgSpellProgress		: "Stavekontroll pågår...",
+DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
+DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
+DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
+DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
+
+IeSpellDownload			: "Stavekontroll er ikke installert. Vil du laste den ned nå?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (verdi)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Knapp",
+DlgButtonTypeSbm	: "Send",
+DlgButtonTypeRst	: "Nullstill",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Verdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Verdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillat flervalg",
+DlgSelectOpAvail	: "Tilgjenglige alternativer",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Verdi",
+DlgSelectBtnAdd		: "Legg til",
+DlgSelectBtnModify	: "Endre",
+DlgSelectBtnUp		: "Opp",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sett som valgt",
+DlgSelectBtnDelete	: "Slett",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Verdi",
+DlgTextCharWidth	: "Tegnbredde",
+DlgTextMaxChars		: "Maks antall tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Passord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Verdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaper for uordnet liste",
+NumberedListProp	: "Egenskaper for ordnet liste",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Sirkel",
+DlgLstTypeDisc		: "Hel sirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Numre (1, 2, 3)",
+DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bokstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Bakgrunn",
+DlgDocColorsTab		: "Farger og marginer",
+DlgDocMetaTab		: "Meta-data",
+
+DlgDocPageTitle		: "Sidetittel",
+DlgDocLangDir		: "Språkretning",
+DlgDocLangDirLTR	: "Venstre til høyre (LTR)",
+DlgDocLangDirRTL	: "Høyre til venstre (RTL)",
+DlgDocLangCode		: "Språkkode",
+DlgDocCharSet		: "Tegnsett",
+DlgDocCharSetCE		: "Sentraleuropeisk",
+DlgDocCharSetCT		: "Tradisonell kinesisk(Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Gresk",
+DlgDocCharSetJP		: "Japansk",
+DlgDocCharSetKR		: "Koreansk",
+DlgDocCharSetTR		: "Tyrkisk",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Vesteuropeisk",
+DlgDocCharSetOther	: "Annet tegnsett",
+
+DlgDocDocType		: "Dokumenttype header",
+DlgDocDocTypeOther	: "Annet dokumenttype header",
+DlgDocIncXHTML		: "Inkluder XHTML-deklarasjon",
+DlgDocBgColor		: "Bakgrunnsfarge",
+DlgDocBgImage		: "URL for bakgrunnsbilde",
+DlgDocBgNoScroll	: "Lås bakgrunnsbilde",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besøkt lenke",
+DlgDocCActive		: "Aktiv lenke",
+DlgDocMargins		: "Sidemargin",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Høyre",
+DlgDocMaBottom		: "Bunn",
+DlgDocMeIndex		: "Dokument nøkkelord (kommaseparert)",
+DlgDocMeDescr		: "Dokumentbeskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Kopirett",
+DlgDocPreview		: "Forhåndsvising",
+
+// Templates Dialog
+Templates			: "Maler",
+DlgTemplatesTitle	: "Innholdsmaler",
+DlgTemplatesSelMsg	: "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
+DlgTemplatesLoading	: "Laster malliste. Vennligst vent...",
+DlgTemplatesNoTpl	: "(Ingen maler definert)",
+DlgTemplatesReplace	: "Erstatt faktisk innold",
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Nettleserinfo",
+DlgAboutLicenseTab	: "Lisens",
+DlgAboutVersion		: "versjon",
+DlgAboutInfo		: "For mer informasjon, se",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Avansert",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sk.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sk.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sk.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Slovak language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skryť panel nástrojov",
+ToolbarExpand		: "Zobraziť panel nástrojov",
+
+// Toolbar Items and Context Menu
+Save				: "Uložiť",
+NewPage				: "Nová stránka",
+Preview				: "Náhľad",
+Cut					: "Vystrihnúť",
+Copy				: "Kopírovať",
+Paste				: "Vložiť",
+PasteText			: "Vložiť ako čistý text",
+PasteWord			: "Vložiť z Wordu",
+Print				: "Tlač",
+SelectAll			: "Vybrať všetko",
+RemoveFormat		: "Odstrániť formátovanie",
+InsertLinkLbl		: "Odkaz",
+InsertLink			: "Vložiť/zmeniť odkaz",
+RemoveLink			: "Odstrániť odkaz",
+VisitLink			: "Ísť na odkaz",
+Anchor				: "Vložiť/zmeniť kotvu",
+AnchorDelete		: "Odstrániť kotvu",
+InsertImageLbl		: "Obrázok",
+InsertImage			: "Vložiť/zmeniť obrázok",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vložiť/zmeniť Flash",
+InsertTableLbl		: "Tabuľka",
+InsertTable			: "Vložiť/zmeniť tabuľku",
+InsertLineLbl		: "Čiara",
+InsertLine			: "Vložiť vodorovnú čiaru",
+InsertSpecialCharLbl: "Špeciálne znaky",
+InsertSpecialChar	: "Vložiť špeciálne znaky",
+InsertSmileyLbl		: "Smajlíky",
+InsertSmiley		: "Vložiť smajlíka",
+About				: "O aplikácii FCKeditor",
+Bold				: "Tučné",
+Italic				: "Kurzíva",
+Underline			: "Podčiarknuté",
+StrikeThrough		: "Prečiarknuté",
+Subscript			: "Dolný index",
+Superscript			: "Horný index",
+LeftJustify			: "Zarovnať vľavo",
+CenterJustify		: "Zarovnať na stred",
+RightJustify		: "Zarovnať vpravo",
+BlockJustify		: "Zarovnať do bloku",
+DecreaseIndent		: "Zmenšiť odsadenie",
+IncreaseIndent		: "Zväčšiť odsadenie",
+Blockquote			: "Citácia",
+CreateDiv			: "Vytvoriť Div kontajner",
+EditDiv				: "Editovať Div kontajner",
+DeleteDiv			: "Odstrániť Div kontajner",
+Undo				: "Späť",
+Redo				: "Znovu",
+NumberedListLbl		: "Číslovanie",
+NumberedList		: "Vložiť/odstrániť číslovanie",
+BulletedListLbl		: "Odrážky",
+BulletedList		: "Vložiť/odstraniť odrážky",
+ShowTableBorders	: "Zobraziť okraje tabuliek",
+ShowDetails			: "Zobraziť podrobnosti",
+Style				: "Štýl",
+FontFormat			: "Formát",
+Font				: "Písmo",
+FontSize			: "Veľkosť",
+TextColor			: "Farba textu",
+BGColor				: "Farba pozadia",
+Source				: "Zdroj",
+Find				: "Hľadať",
+Replace				: "Nahradiť",
+SpellCheck			: "Kontrola pravopisu",
+UniversalKeyboard	: "Univerzálna klávesnica",
+PageBreakLbl		: "Oddeľovač stránky",
+PageBreak			: "Vložiť oddeľovač stránky",
+
+Form			: "Formulár",
+Checkbox		: "Zaškrtávacie políčko",
+RadioButton		: "Prepínač",
+TextField		: "Textové pole",
+Textarea		: "Textová oblasť",
+HiddenField		: "Skryté pole",
+Button			: "Tlačidlo",
+SelectionField	: "Rozbaľovací zoznam",
+ImageButton		: "Obrázkové tlačidlo",
+
+FitWindow		: "Maximalizovať veľkosť okna editora",
+ShowBlocks		: "Ukázať bloky",
+
+// Context Menu
+EditLink			: "Zmeniť odkaz",
+CellCM				: "Bunka",
+RowCM				: "Riadok",
+ColumnCM			: "Stĺpec",
+InsertRowAfter		: "Vložiť riadok pred",
+InsertRowBefore		: "Vložiť riadok za",
+DeleteRows			: "Vymazať riadok",
+InsertColumnAfter	: "Vložiť stĺpec pred",
+InsertColumnBefore	: "Vložiť stĺpec za",
+DeleteColumns		: "Zmazať stĺpec",
+InsertCellAfter		: "Vložiť bunku za",
+InsertCellBefore	: "Vložiť bunku pred",
+DeleteCells			: "Vymazať bunky",
+MergeCells			: "Zlúčiť bunky",
+MergeRight			: "Zlúčiť doprava",
+MergeDown			: "Zlúčiť dole",
+HorizontalSplitCell	: "Rozdeliť bunky horizontálne",
+VerticalSplitCell	: "Rozdeliť bunky vertikálne",
+TableDelete			: "Vymazať tabuľku",
+CellProperties		: "Vlastnosti bunky",
+TableProperties		: "Vlastnosti tabuľky",
+ImageProperties		: "Vlastnosti obrázku",
+FlashProperties		: "Vlastnosti Flashu",
+
+AnchorProp			: "Vlastnosti kotvy",
+ButtonProp			: "Vlastnosti tlačidla",
+CheckboxProp		: "Vlastnosti zaškrtávacieho políčka",
+HiddenFieldProp		: "Vlastnosti skrytého poľa",
+RadioButtonProp		: "Vlastnosti prepínača",
+ImageButtonProp		: "Vlastnosti obrázkového tlačidla",
+TextFieldProp		: "Vlastnosti textového poľa",
+SelectionFieldProp	: "Vlastnosti rozbaľovacieho zoznamu",
+TextareaProp		: "Vlastnosti textovej oblasti",
+FormProp			: "Vlastnosti formulára",
+
+FontFormats			: "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Prebieha spracovanie XHTML. Čakajte prosím...",
+Done				: "Dokončené.",
+PasteWordConfirm	: "Vyzerá to tak, že vkladaný text je kopírovaný z Wordu. Chcete ho pred vložením vyčistiť?",
+NotCompatiblePaste	: "Tento príkaz je dostupný len v prehliadači Internet Explorer verzie 5.5 alebo vyššej. Chcete vložiť text bez vyčistenia?",
+UnknownToolbarItem	: "Neznáma položka panela nástrojov \"%1\"",
+UnknownCommand		: "Neznámy príkaz \"%1\"",
+NotImplemented		: "Príkaz nie je implementovaný",
+UnknownToolbarSet	: "Panel nástrojov \"%1\" neexistuje",
+NoActiveX			: "Bezpečnostné nastavenia vášho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.",
+BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnutú službu blokovania popup okien.",
+DialogBlocked		: "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnutú službu blokovania popup okien.",
+VisitLinkBlocked	: "Nebolo možné otvoriť nové okno. Uistite sa, že máte vypnutú službu blokovania popup okien.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Zrušiť",
+DlgBtnClose			: "Zavrieť",
+DlgBtnBrowseServer	: "Prechádzať server",
+DlgAdvancedTag		: "Rozšírené",
+DlgOpOther			: "<Ďalšie>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Prosím vložte URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nenastavené>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientácia jazyka",
+DlgGenLangDirLtr	: "Zľava doprava (LTR)",
+DlgGenLangDirRtl	: "Sprava doľava (RTL)",
+DlgGenLangCode		: "Kód jazyka",
+DlgGenAccessKey		: "Prístupový kľúč",
+DlgGenName			: "Meno",
+DlgGenTabIndex		: "Poradie prvku",
+DlgGenLongDescr		: "Dlhý popis URL",
+DlgGenClass			: "Trieda štýlu",
+DlgGenTitle			: "Pomocný titulok",
+DlgGenContType		: "Pomocný typ obsahu",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Priradená znaková sada",
+DlgGenStyle			: "Štýl",
+
+// Image Dialog
+DlgImgTitle			: "Vlastnosti obrázku",
+DlgImgInfoTab		: "Informácie o obrázku",
+DlgImgBtnUpload		: "Odoslať na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Odoslať",
+DlgImgAlt			: "Alternatívny text",
+DlgImgWidth			: "Šírka",
+DlgImgHeight		: "Výška",
+DlgImgLockRatio		: "Zámok",
+DlgBtnResetSize		: "Pôvodná veľkosť",
+DlgImgBorder		: "Okraje",
+DlgImgHSpace		: "H-medzera",
+DlgImgVSpace		: "V-medzera",
+DlgImgAlign			: "Zarovnanie",
+DlgImgAlignLeft		: "Vľavo",
+DlgImgAlignAbsBottom: "Úplne dole",
+DlgImgAlignAbsMiddle: "Do stredu",
+DlgImgAlignBaseline	: "Na základňu",
+DlgImgAlignBottom	: "Dole",
+DlgImgAlignMiddle	: "Na stred",
+DlgImgAlignRight	: "Vpravo",
+DlgImgAlignTextTop	: "Na horný okraj textu",
+DlgImgAlignTop		: "Nahor",
+DlgImgPreview		: "Náhľad",
+DlgImgAlertUrl		: "Zadajte prosím URL obrázku",
+DlgImgLinkTab		: "Odkaz",
+
+// Flash Dialog
+DlgFlashTitle		: "Vlastnosti Flashu",
+DlgFlashChkPlay		: "Automatické prehrávanie",
+DlgFlashChkLoop		: "Opakovanie",
+DlgFlashChkMenu		: "Povoliť Flash Menu",
+DlgFlashScale		: "Mierka",
+DlgFlashScaleAll	: "Zobraziť mierku",
+DlgFlashScaleNoBorder	: "Bez okrajov",
+DlgFlashScaleFit	: "Roztiahnuť na celé",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Odkaz",
+DlgLnkInfoTab		: "Informácie o odkaze",
+DlgLnkTargetTab		: "Cieľ",
+
+DlgLnkType			: "Typ odkazu",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Kotva v tejto stránke",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<iný>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vybrať kotvu",
+DlgLnkAnchorByName	: "Podľa mena kotvy",
+DlgLnkAnchorById	: "Podľa Id objektu",
+DlgLnkNoAnchors		: "(V stránke nie je definovaná žiadna kotva)",
+DlgLnkEMail			: "E-Mailová adresa",
+DlgLnkEMailSubject	: "Predmet správy",
+DlgLnkEMailBody		: "Telo správy",
+DlgLnkUpload		: "Odoslať",
+DlgLnkBtnUpload		: "Odoslať na server",
+
+DlgLnkTarget		: "Cieľ",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovacie okno>",
+DlgLnkTargetBlank	: "Nové okno (_blank)",
+DlgLnkTargetParent	: "Rodičovské okno (_parent)",
+DlgLnkTargetSelf	: "Rovnaké okno (_self)",
+DlgLnkTargetTop		: "Hlavné okno (_top)",
+DlgLnkTargetFrameName	: "Meno rámu cieľa",
+DlgLnkPopWinName	: "Názov vyskakovacieho okna",
+DlgLnkPopWinFeat	: "Vlastnosti vyskakovacieho okna",
+DlgLnkPopResize		: "Meniteľná veľkosť",
+DlgLnkPopLocation	: "Panel umiestnenia",
+DlgLnkPopMenu		: "Panel ponuky",
+DlgLnkPopScroll		: "Posuvníky",
+DlgLnkPopStatus		: "Stavový riadok",
+DlgLnkPopToolbar	: "Panel nástrojov",
+DlgLnkPopFullScrn	: "Celá obrazovka (IE)",
+DlgLnkPopDependent	: "Závislosť (Netscape)",
+DlgLnkPopWidth		: "Šírka",
+DlgLnkPopHeight		: "Výška",
+DlgLnkPopLeft		: "Ľavý okraj",
+DlgLnkPopTop		: "Horný okraj",
+
+DlnLnkMsgNoUrl		: "Zadajte prosím URL odkazu",
+DlnLnkMsgNoEMail	: "Zadajte prosím e-mailovú adresu",
+DlnLnkMsgNoAnchor	: "Vyberte prosím kotvu",
+DlnLnkMsgInvPopName	: "Názov vyskakovacieho okna sa musá začínať písmenom a nemôže obsahovať medzery",
+
+// Color Dialog
+DlgColorTitle		: "Výber farby",
+DlgColorBtnClear	: "Vymazať",
+DlgColorHighlight	: "Zvýraznená",
+DlgColorSelected	: "Vybraná",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vkladanie smajlíkov",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Výber špeciálneho znaku",
+
+// Table Dialog
+DlgTableTitle		: "Vlastnosti tabuľky",
+DlgTableRows		: "Riadky",
+DlgTableColumns		: "Stĺpce",
+DlgTableBorder		: "Ohraničenie",
+DlgTableAlign		: "Zarovnanie",
+DlgTableAlignNotSet	: "<nenastavené>",
+DlgTableAlignLeft	: "Vľavo",
+DlgTableAlignCenter	: "Na stred",
+DlgTableAlignRight	: "Vpravo",
+DlgTableWidth		: "Šírka",
+DlgTableWidthPx		: "pixelov",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Výška",
+DlgTableCellSpace	: "Vzdialenosť buniek",
+DlgTableCellPad		: "Odsadenie obsahu",
+DlgTableCaption		: "Popis",
+DlgTableSummary		: "Prehľad",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Vlastnosti bunky",
+DlgCellWidth		: "Šírka",
+DlgCellWidthPx		: "bodov",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Výška",
+DlgCellWordWrap		: "Zalamovannie",
+DlgCellWordWrapNotSet	: "<nenastavené>",
+DlgCellWordWrapYes	: "Áno",
+DlgCellWordWrapNo	: "Nie",
+DlgCellHorAlign		: "Vodorovné zarovnanie",
+DlgCellHorAlignNotSet	: "<nenastavené>",
+DlgCellHorAlignLeft	: "Vľavo",
+DlgCellHorAlignCenter	: "Na stred",
+DlgCellHorAlignRight: "Vpravo",
+DlgCellVerAlign		: "Zvislé zarovnanie",
+DlgCellVerAlignNotSet	: "<nenastavené>",
+DlgCellVerAlignTop	: "Nahor",
+DlgCellVerAlignMiddle	: "Doprostred",
+DlgCellVerAlignBottom	: "Dole",
+DlgCellVerAlignBaseline	: "Na základňu",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Zlúčené riadky",
+DlgCellCollSpan		: "Zlúčené stĺpce",
+DlgCellBackColor	: "Farba pozadia",
+DlgCellBorderColor	: "Farba ohraničenia",
+DlgCellBtnSelect	: "Výber...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Nájsť a nahradiť",
+
+// Find Dialog
+DlgFindTitle		: "Hľadať",
+DlgFindFindBtn		: "Hľadať",
+DlgFindNotFoundMsg	: "Hľadaný text nebol nájdený.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Nahradiť",
+DlgReplaceFindLbl		: "Čo hľadať:",
+DlgReplaceReplaceLbl	: "Čím nahradiť:",
+DlgReplaceCaseChk		: "Rozlišovať malé/veľké písmená",
+DlgReplaceReplaceBtn	: "Nahradiť",
+DlgReplaceReplAllBtn	: "Nahradiť všetko",
+DlgReplaceWordChk		: "Len celé slová",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).",
+PasteErrorCopy	: "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).",
+
+PasteAsText		: "Vložiť ako čistý text",
+PasteFromWord	: "Vložiť text z Wordu",
+
+DlgPasteMsg2	: "Prosím vložte nasledovný rámček použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.",
+DlgPasteIgnoreFont		: "Ignorovať nastavenia typu písma",
+DlgPasteRemoveStyles	: "Odstrániť formátovanie",
+
+// Color Picker
+ColorAutomatic	: "Automaticky",
+ColorMoreColors	: "Viac farieb...",
+
+// Document Properties
+DocProps		: "Vlastnosti dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Vlastnosti kotvy",
+DlgAnchorName		: "Meno kotvy",
+DlgAnchorErrorName	: "Zadajte prosím meno kotvy",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nie je v slovníku",
+DlgSpellChangeTo		: "Zmeniť na",
+DlgSpellBtnIgnore		: "Ignorovať",
+DlgSpellBtnIgnoreAll	: "Ignorovať všetko",
+DlgSpellBtnReplace		: "Prepísat",
+DlgSpellBtnReplaceAll	: "Prepísat všetko",
+DlgSpellBtnUndo			: "Späť",
+DlgSpellNoSuggestions	: "- Žiadny návrh -",
+DlgSpellProgress		: "Prebieha kontrola pravopisu...",
+DlgSpellNoMispell		: "Kontrola pravopisu dokončená: bez chýb",
+DlgSpellNoChanges		: "Kontrola pravopisu dokončená: žiadne slová nezmenené",
+DlgSpellOneChange		: "Kontrola pravopisu dokončená: zmenené jedno slovo",
+DlgSpellManyChanges		: "Kontrola pravopisu dokončená: zmenených %1 slov",
+
+IeSpellDownload			: "Kontrola pravopisu nie je naištalovaná. Chcete ju hneď stiahnuť?",
+
+// Button Dialog
+DlgButtonText		: "Text",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Tlačidlo",
+DlgButtonTypeSbm	: "Odoslať",
+DlgButtonTypeRst	: "Vymazať",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Názov",
+DlgCheckboxValue	: "Hodnota",
+DlgCheckboxSelected	: "Vybrané",
+
+// Form Dialog
+DlgFormName		: "Názov",
+DlgFormAction	: "Akcie",
+DlgFormMethod	: "Metóda",
+
+// Select Field Dialog
+DlgSelectName		: "Názov",
+DlgSelectValue		: "Hodnota",
+DlgSelectSize		: "Veľkosť",
+DlgSelectLines		: "riadkov",
+DlgSelectChkMulti	: "Povoliť viacnásobný výber",
+DlgSelectOpAvail	: "Dostupné možnosti",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Hodnota",
+DlgSelectBtnAdd		: "Pridať",
+DlgSelectBtnModify	: "Zmeniť",
+DlgSelectBtnUp		: "Hore",
+DlgSelectBtnDown	: "Dole",
+DlgSelectBtnSetValue : "Nastaviť ako vybranú hodnotu",
+DlgSelectBtnDelete	: "Zmazať",
+
+// Textarea Dialog
+DlgTextareaName	: "Názov",
+DlgTextareaCols	: "Stĺpce",
+DlgTextareaRows	: "Riadky",
+
+// Text Field Dialog
+DlgTextName			: "Názov",
+DlgTextValue		: "Hodnota",
+DlgTextCharWidth	: "Šírka pola (znakov)",
+DlgTextMaxChars		: "Maximálny počet znakov",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Heslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Názov",
+DlgHiddenValue	: "Hodnota",
+
+// Bulleted List Dialog
+BulletedListProp	: "Vlastnosti odrážok",
+NumberedListProp	: "Vlastnosti číslovania",
+DlgLstStart			: "Štart",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Krúžok",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Štvorec",
+DlgLstTypeNumbers	: "Číslovanie (1, 2, 3)",
+DlgLstTypeLCase		: "Malé písmená (a, b, c)",
+DlgLstTypeUCase		: "Veľké písmená (A, B, C)",
+DlgLstTypeSRoman	: "Malé rímske číslice (i, ii, iii)",
+DlgLstTypeLRoman	: "Veľké rímske číslice (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Všeobecné",
+DlgDocBackTab		: "Pozadie",
+DlgDocColorsTab		: "Farby a okraje",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titulok",
+DlgDocLangDir		: "Orientácie jazyka",
+DlgDocLangDirLTR	: "Zľava doprava (LTR)",
+DlgDocLangDirRTL	: "Sprava doľava (RTL)",
+DlgDocLangCode		: "Kód jazyka",
+DlgDocCharSet		: "Kódová stránka",
+DlgDocCharSetCE		: "Stredoeurópske",
+DlgDocCharSetCT		: "Čínština tradičná (Big5)",
+DlgDocCharSetCR		: "Cyrillika",
+DlgDocCharSetGR		: "Gréčtina",
+DlgDocCharSetJP		: "Japončina",
+DlgDocCharSetKR		: "Korejčina",
+DlgDocCharSetTR		: "Turečtina",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Západná európa",
+DlgDocCharSetOther	: "Iná kódová stránka",
+
+DlgDocDocType		: "Typ záhlavia dokumentu",
+DlgDocDocTypeOther	: "Iný typ záhlavia dokumentu",
+DlgDocIncXHTML		: "Obsahuje deklarácie XHTML",
+DlgDocBgColor		: "Farba pozadia",
+DlgDocBgImage		: "URL adresa obrázku na pozadí",
+DlgDocBgNoScroll	: "Fixné pozadie",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Odkaz",
+DlgDocCVisited		: "Navštívený odkaz",
+DlgDocCActive		: "Aktívny odkaz",
+DlgDocMargins		: "Okraje stránky",
+DlgDocMaTop			: "Horný",
+DlgDocMaLeft		: "Ľavý",
+DlgDocMaRight		: "Pravý",
+DlgDocMaBottom		: "Dolný",
+DlgDocMeIndex		: "Kľúčové slová pre indexovanie (oddelené čiarkou)",
+DlgDocMeDescr		: "Popis stránky",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorské práva",
+DlgDocPreview		: "Náhľad",
+
+// Templates Dialog
+Templates			: "Šablóny",
+DlgTemplatesTitle	: "Šablóny obsahu",
+DlgTemplatesSelMsg	: "Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):",
+DlgTemplatesLoading	: "Nahrávam zoznam šablón. Čakajte prosím...",
+DlgTemplatesNoTpl	: "(žiadne šablóny nenájdené)",
+DlgTemplatesReplace	: "Nahradiť aktuálny obsah",
+
+// About Dialog
+DlgAboutAboutTab	: "O aplikáci",
+DlgAboutBrowserInfoTab	: "Informácie o prehliadači",
+DlgAboutLicenseTab	: "Licencia",
+DlgAboutVersion		: "verzia",
+DlgAboutInfo		: "Viac informácií získate na",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Hlavné",
+DlgDivAdvancedTab	: "Rozšírené",
+DlgDivStyle		: "Štýl",
+DlgDivInlineStyle	: "Inline štýl",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/vi.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/vi.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/vi.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Vietnamese language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Thu gọn Thanh công cụ",
+ToolbarExpand		: "Mở rộng Thanh công cụ",
+
+// Toolbar Items and Context Menu
+Save				: "Lưu",
+NewPage				: "Trang mới",
+Preview				: "Xem trước",
+Cut					: "Cắt",
+Copy				: "Sao chép",
+Paste				: "Dán",
+PasteText			: "Dán theo dạng văn bản thuần",
+PasteWord			: "Dán với định dạng Word",
+Print				: "In",
+SelectAll			: "Chọn Tất cả",
+RemoveFormat		: "Xoá Định dạng",
+InsertLinkLbl		: "Liên kết",
+InsertLink			: "Chèn/Sửa Liên kết",
+RemoveLink			: "Xoá Liên kết",
+VisitLink			: "Mở Liên Kết",
+Anchor				: "Chèn/Sửa Neo",
+AnchorDelete		: "Gỡ bỏ Neo",
+InsertImageLbl		: "Hình ảnh",
+InsertImage			: "Chèn/Sửa Hình ảnh",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Chèn/Sửa Flash",
+InsertTableLbl		: "Bảng",
+InsertTable			: "Chèn/Sửa Bảng",
+InsertLineLbl		: "Đường phân cách ngang",
+InsertLine			: "Chèn Đường phân cách ngang",
+InsertSpecialCharLbl: "Ký tự đặc biệt",
+InsertSpecialChar	: "Chèn Ký tự đặc biệt",
+InsertSmileyLbl		: "Hình biểu lộ cảm xúc (mặt cười)",
+InsertSmiley		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
+About				: "Giới thiệu về FCKeditor",
+Bold				: "Đậm",
+Italic				: "Nghiêng",
+Underline			: "Gạch chân",
+StrikeThrough		: "Gạch xuyên ngang",
+Subscript			: "Chỉ số dưới",
+Superscript			: "Chỉ số trên",
+LeftJustify			: "Canh trái",
+CenterJustify		: "Canh giữa",
+RightJustify		: "Canh phải",
+BlockJustify		: "Canh đều",
+DecreaseIndent		: "Dịch ra ngoài",
+IncreaseIndent		: "Dịch vào trong",
+Blockquote			: "Khối Trích dẫn",
+CreateDiv			: "Tạo Div Container",
+EditDiv				: "Chỉnh sửa Div Container",
+DeleteDiv			: "Gỡ bỏ Div Container",
+Undo				: "Khôi phục thao tác",
+Redo				: "Làm lại thao tác",
+NumberedListLbl		: "Danh sách có thứ tự",
+NumberedList		: "Chèn/Xoá Danh sách có thứ tự",
+BulletedListLbl		: "Danh sách không thứ tự",
+BulletedList		: "Chèn/Xoá Danh sách không thứ tự",
+ShowTableBorders	: "Hiển thị Đường viền bảng",
+ShowDetails			: "Hiển thị Chi tiết",
+Style				: "Mẫu",
+FontFormat			: "Định dạng",
+Font				: "Phông",
+FontSize			: "Cỡ chữ",
+TextColor			: "Màu chữ",
+BGColor				: "Màu nền",
+Source				: "Mã HTML",
+Find				: "Tìm kiếm",
+Replace				: "Thay thế",
+SpellCheck			: "Kiểm tra Chính tả",
+UniversalKeyboard	: "Bàn phím Quốc tế",
+PageBreakLbl		: "Ngắt trang",
+PageBreak			: "Chèn Ngắt trang",
+
+Form			: "Biểu mẫu",
+Checkbox		: "Nút kiểm",
+RadioButton		: "Nút chọn",
+TextField		: "Trường văn bản",
+Textarea		: "Vùng văn bản",
+HiddenField		: "Trường ẩn",
+Button			: "Nút",
+SelectionField	: "Ô chọn",
+ImageButton		: "Nút hình ảnh",
+
+FitWindow		: "Mở rộng tối đa kích thước trình biên tập",
+ShowBlocks		: "Hiển thị các Khối",
+
+// Context Menu
+EditLink			: "Sửa Liên kết",
+CellCM				: "Ô",
+RowCM				: "Hàng",
+ColumnCM			: "Cột",
+InsertRowAfter		: "Chèn Hàng Phía sau",
+InsertRowBefore		: "Chèn Hàng Phía trước",
+DeleteRows			: "Xoá Hàng",
+InsertColumnAfter	: "Chèn Cột Phía sau",
+InsertColumnBefore	: "Chèn Cột Phía trước",
+DeleteColumns		: "Xoá Cột",
+InsertCellAfter		: "Chèn Ô Phía sau",
+InsertCellBefore	: "Chèn Ô Phía trước",
+DeleteCells			: "Xoá Ô",
+MergeCells			: "Kết hợp Ô",
+MergeRight			: "Kết hợp Sang phải",
+MergeDown			: "Kết hợp Xuống dưới",
+HorizontalSplitCell	: "Tách ngang Ô",
+VerticalSplitCell	: "Tách dọc Ô",
+TableDelete			: "Xóa Bảng",
+CellProperties		: "Thuộc tính Ô",
+TableProperties		: "Thuộc tính Bảng",
+ImageProperties		: "Thuộc tính Hình ảnh",
+FlashProperties		: "Thuộc tính Flash",
+
+AnchorProp			: "Thuộc tính Neo",
+ButtonProp			: "Thuộc tính Nút",
+CheckboxProp		: "Thuộc tính Nút kiểm",
+HiddenFieldProp		: "Thuộc tính Trường ẩn",
+RadioButtonProp		: "Thuộc tính Nút chọn",
+ImageButtonProp		: "Thuộc tính Nút hình ảnh",
+TextFieldProp		: "Thuộc tính Trường văn bản",
+SelectionFieldProp	: "Thuộc tính Ô chọn",
+TextareaProp		: "Thuộc tính Vùng văn bản",
+FormProp			: "Thuộc tính Biểu mẫu",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Đang xử lý XHTML. Vui lòng đợi trong giây lát...",
+Done				: "Đã hoàn thành",
+PasteWordConfirm	: "Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?",
+NotCompatiblePaste	: "Lệnh này chỉ được hỗ trợ từ trình duyệt Internet Explorer phiên bản 5.5 hoặc mới hơn. Bạn có muốn dán nguyên mẫu?",
+UnknownToolbarItem	: "Không rõ mục trên thanh công cụ \"%1\"",
+UnknownCommand		: "Không rõ lệnh \"%1\"",
+NotImplemented		: "Lệnh không được thực hiện",
+UnknownToolbarSet	: "Thanh công cụ \"%1\" không tồn tại",
+NoActiveX			: "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu một số chức năng.",
+BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+DialogBlocked		: "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+VisitLinkBlocked	: "Không thể mở được cửa sổ trình duyệt mới. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+
+// Dialogs
+DlgBtnOK			: "Đồng ý",
+DlgBtnCancel		: "Bỏ qua",
+DlgBtnClose			: "Đóng",
+DlgBtnBrowseServer	: "Duyệt trên máy chủ",
+DlgAdvancedTag		: "Mở rộng",
+DlgOpOther			: "<Khác>",
+DlgInfoTab			: "Thông tin",
+DlgAlertUrl			: "Hãy nhập vào một URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<không thiết lập>",
+DlgGenId			: "Định danh",
+DlgGenLangDir		: "Đường dẫn Ngôn ngữ",
+DlgGenLangDirLtr	: "Trái sang Phải (LTR)",
+DlgGenLangDirRtl	: "Phải sang Trái (RTL)",
+DlgGenLangCode		: "Mã Ngôn ngữ",
+DlgGenAccessKey		: "Phím Hỗ trợ truy cập",
+DlgGenName			: "Tên",
+DlgGenTabIndex		: "Chỉ số của Tab",
+DlgGenLongDescr		: "Mô tả URL",
+DlgGenClass			: "Lớp Stylesheet",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Bảng mã của tài nguyên được liên kết đến",
+DlgGenStyle			: "Mẫu",
+
+// Image Dialog
+DlgImgTitle			: "Thuộc tính Hình ảnh",
+DlgImgInfoTab		: "Thông tin Hình ảnh",
+DlgImgBtnUpload		: "Tải lên Máy chủ",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Tải lên",
+DlgImgAlt			: "Chú thích Hình ảnh",
+DlgImgWidth			: "Rộng",
+DlgImgHeight		: "Cao",
+DlgImgLockRatio		: "Giữ nguyên tỷ lệ",
+DlgBtnResetSize		: "Kích thước gốc",
+DlgImgBorder		: "Đường viền",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Vị trí",
+DlgImgAlignLeft		: "Trái",
+DlgImgAlignAbsBottom: "Dưới tuyệt đối",
+DlgImgAlignAbsMiddle: "Giữa tuyệt đối",
+DlgImgAlignBaseline	: "Đường cơ sở",
+DlgImgAlignBottom	: "Dưới",
+DlgImgAlignMiddle	: "Giữa",
+DlgImgAlignRight	: "Phải",
+DlgImgAlignTextTop	: "Phía trên chữ",
+DlgImgAlignTop		: "Trên",
+DlgImgPreview		: "Xem trước",
+DlgImgAlertUrl		: "Hãy đưa vào URL của hình ảnh",
+DlgImgLinkTab		: "Liên kết",
+
+// Flash Dialog
+DlgFlashTitle		: "Thuộc tính Flash",
+DlgFlashChkPlay		: "Tự động chạy",
+DlgFlashChkLoop		: "Lặp",
+DlgFlashChkMenu		: "Cho phép bật Menu của Flash",
+DlgFlashScale		: "Tỷ lệ",
+DlgFlashScaleAll	: "Hiển thị tất cả",
+DlgFlashScaleNoBorder	: "Không đường viền",
+DlgFlashScaleFit	: "Vừa vặn",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Liên kết",
+DlgLnkInfoTab		: "Thông tin Liên kết",
+DlgLnkTargetTab		: "Đích",
+
+DlgLnkType			: "Kiểu Liên kết",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Neo trong trang này",
+DlgLnkTypeEMail		: "Thư điện tử",
+DlgLnkProto			: "Giao thức",
+DlgLnkProtoOther	: "<khác>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Chọn một Neo",
+DlgLnkAnchorByName	: "Theo Tên Neo",
+DlgLnkAnchorById	: "Theo Định danh Element",
+DlgLnkNoAnchors		: "(Không có Neo nào trong tài liệu)",
+DlgLnkEMail			: "Thư điện tử",
+DlgLnkEMailSubject	: "Tiêu đề Thông điệp",
+DlgLnkEMailBody		: "Nội dung Thông điệp",
+DlgLnkUpload		: "Tải lên",
+DlgLnkBtnUpload		: "Tải lên Máy chủ",
+
+DlgLnkTarget		: "Đích",
+DlgLnkTargetFrame	: "<khung>",
+DlgLnkTargetPopup	: "<cửa sổ popup>",
+DlgLnkTargetBlank	: "Cửa sổ mới (_blank)",
+DlgLnkTargetParent	: "Cửa sổ cha (_parent)",
+DlgLnkTargetSelf	: "Cùng cửa sổ (_self)",
+DlgLnkTargetTop		: "Cửa sổ trên cùng(_top)",
+DlgLnkTargetFrameName	: "Tên Khung đích",
+DlgLnkPopWinName	: "Tên Cửa sổ Popup",
+DlgLnkPopWinFeat	: "Đặc điểm của Cửa sổ Popup",
+DlgLnkPopResize		: "Kích thước thay đổi",
+DlgLnkPopLocation	: "Thanh vị trí",
+DlgLnkPopMenu		: "Thanh Menu",
+DlgLnkPopScroll		: "Thanh cuộn",
+DlgLnkPopStatus		: "Thanh trạng thái",
+DlgLnkPopToolbar	: "Thanh công cụ",
+DlgLnkPopFullScrn	: "Toàn màn hình (IE)",
+DlgLnkPopDependent	: "Phụ thuộc (Netscape)",
+DlgLnkPopWidth		: "Rộng",
+DlgLnkPopHeight		: "Cao",
+DlgLnkPopLeft		: "Vị trí Trái",
+DlgLnkPopTop		: "Vị trí Trên",
+
+DlnLnkMsgNoUrl		: "Hãy đưa vào Liên kết URL",
+DlnLnkMsgNoEMail	: "Hãy đưa vào địa chỉ thư điện tử",
+DlnLnkMsgNoAnchor	: "Hãy chọn một Neo",
+DlnLnkMsgInvPopName	: "Tên của cửa sổ Popup phải bắt đầu bằng một ký tự và không được chứa khoảng trắng",
+
+// Color Dialog
+DlgColorTitle		: "Chọn màu",
+DlgColorBtnClear	: "Xoá",
+DlgColorHighlight	: "Tô sáng",
+DlgColorSelected	: "Đã chọn",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Hãy chọn Ký tự đặc biệt",
+
+// Table Dialog
+DlgTableTitle		: "Thuộc tính bảng",
+DlgTableRows		: "Hàng",
+DlgTableColumns		: "Cột",
+DlgTableBorder		: "Cỡ Đường viền",
+DlgTableAlign		: "Canh lề",
+DlgTableAlignNotSet	: "<Chưa thiết lập>",
+DlgTableAlignLeft	: "Trái",
+DlgTableAlignCenter	: "Giữa",
+DlgTableAlignRight	: "Phải",
+DlgTableWidth		: "Rộng",
+DlgTableWidthPx		: "điểm (px)",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Cao",
+DlgTableCellSpace	: "Khoảng cách Ô",
+DlgTableCellPad		: "Đệm Ô",
+DlgTableCaption		: "Đầu đề",
+DlgTableSummary		: "Tóm lược",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Thuộc tính Ô",
+DlgCellWidth		: "Rộng",
+DlgCellWidthPx		: "điểm (px)",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Cao",
+DlgCellWordWrap		: "Bọc từ",
+DlgCellWordWrapNotSet	: "<Chưa thiết lập>",
+DlgCellWordWrapYes	: "Đồng ý",
+DlgCellWordWrapNo	: "Không",
+DlgCellHorAlign		: "Canh theo Chiều ngang",
+DlgCellHorAlignNotSet	: "<Chưa thiết lập>",
+DlgCellHorAlignLeft	: "Trái",
+DlgCellHorAlignCenter	: "Giữa",
+DlgCellHorAlignRight: "Phải",
+DlgCellVerAlign		: "Canh theo Chiều dọc",
+DlgCellVerAlignNotSet	: "<Chưa thiết lập>",
+DlgCellVerAlignTop	: "Trên",
+DlgCellVerAlignMiddle	: "Giữa",
+DlgCellVerAlignBottom	: "Dưới",
+DlgCellVerAlignBaseline	: "Đường cơ sở",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Nối Hàng",
+DlgCellCollSpan		: "Nối Cột",
+DlgCellBackColor	: "Màu nền",
+DlgCellBorderColor	: "Màu viền",
+DlgCellBtnSelect	: "Chọn...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Tìm kiếm và Thay Thế",
+
+// Find Dialog
+DlgFindTitle		: "Tìm kiếm",
+DlgFindFindBtn		: "Tìm kiếm",
+DlgFindNotFoundMsg	: "Không tìm thấy chuỗi cần tìm.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Thay thế",
+DlgReplaceFindLbl		: "Tìm chuỗi:",
+DlgReplaceReplaceLbl	: "Thay bằng:",
+DlgReplaceCaseChk		: "Phân biệt chữ hoa/thường",
+DlgReplaceReplaceBtn	: "Thay thế",
+DlgReplaceReplAllBtn	: "Thay thế Tất cả",
+DlgReplaceWordChk		: "Đúng toàn bộ từ",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).",
+PasteErrorCopy	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).",
+
+PasteAsText		: "Dán theo định dạng văn bản thuần",
+PasteFromWord	: "Dán với định dạng Word",
+
+DlgPasteMsg2	: "Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Chấp nhận các định dạng phông",
+DlgPasteRemoveStyles	: "Gỡ bỏ các định dạng Styles",
+
+// Color Picker
+ColorAutomatic	: "Tự động",
+ColorMoreColors	: "Màu khác...",
+
+// Document Properties
+DocProps		: "Thuộc tính Tài liệu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Thuộc tính Neo",
+DlgAnchorName		: "Tên của Neo",
+DlgAnchorErrorName	: "Hãy nhập vào tên của Neo",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Không có trong từ điển",
+DlgSpellChangeTo		: "Chuyển thành",
+DlgSpellBtnIgnore		: "Bỏ qua",
+DlgSpellBtnIgnoreAll	: "Bỏ qua Tất cả",
+DlgSpellBtnReplace		: "Thay thế",
+DlgSpellBtnReplaceAll	: "Thay thế Tất cả",
+DlgSpellBtnUndo			: "Phục hồi lại",
+DlgSpellNoSuggestions	: "- Không đưa ra gợi ý về từ -",
+DlgSpellProgress		: "Đang tiến hành kiểm tra chính tả...",
+DlgSpellNoMispell		: "Hoàn tất kiểm tra chính tả: Không có lỗi chính tả",
+DlgSpellNoChanges		: "Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi",
+DlgSpellOneChange		: "Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi",
+DlgSpellManyChanges		: "Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi",
+
+IeSpellDownload			: "Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?",
+
+// Button Dialog
+DlgButtonText		: "Chuỗi hiển thị (Giá trị)",
+DlgButtonType		: "Kiểu",
+DlgButtonTypeBtn	: "Nút Bấm",
+DlgButtonTypeSbm	: "Nút Gửi",
+DlgButtonTypeRst	: "Nút Nhập lại",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Tên",
+DlgCheckboxValue	: "Giá trị",
+DlgCheckboxSelected	: "Được chọn",
+
+// Form Dialog
+DlgFormName		: "Tên",
+DlgFormAction	: "Hành động",
+DlgFormMethod	: "Phương thức",
+
+// Select Field Dialog
+DlgSelectName		: "Tên",
+DlgSelectValue		: "Giá trị",
+DlgSelectSize		: "Kích cỡ",
+DlgSelectLines		: "dòng",
+DlgSelectChkMulti	: "Cho phép chọn nhiều",
+DlgSelectOpAvail	: "Các tùy chọn có thể sử dụng",
+DlgSelectOpText		: "Văn bản",
+DlgSelectOpValue	: "Giá trị",
+DlgSelectBtnAdd		: "Thêm",
+DlgSelectBtnModify	: "Thay đổi",
+DlgSelectBtnUp		: "Lên",
+DlgSelectBtnDown	: "Xuống",
+DlgSelectBtnSetValue : "Giá trị được chọn",
+DlgSelectBtnDelete	: "Xoá",
+
+// Textarea Dialog
+DlgTextareaName	: "Tên",
+DlgTextareaCols	: "Cột",
+DlgTextareaRows	: "Hàng",
+
+// Text Field Dialog
+DlgTextName			: "Tên",
+DlgTextValue		: "Giá trị",
+DlgTextCharWidth	: "Rộng",
+DlgTextMaxChars		: "Số Ký tự tối đa",
+DlgTextType			: "Kiểu",
+DlgTextTypeText		: "Ký tự",
+DlgTextTypePass		: "Mật khẩu",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Tên",
+DlgHiddenValue	: "Giá trị",
+
+// Bulleted List Dialog
+BulletedListProp	: "Thuộc tính Danh sách không thứ tự",
+NumberedListProp	: "Thuộc tính Danh sách có thứ tự",
+DlgLstStart			: "Bắt đầu",
+DlgLstType			: "Kiểu",
+DlgLstTypeCircle	: "Hình tròn",
+DlgLstTypeDisc		: "Hình đĩa",
+DlgLstTypeSquare	: "Hình vuông",
+DlgLstTypeNumbers	: "Số thứ tự (1, 2, 3)",
+DlgLstTypeLCase		: "Chữ cái thường (a, b, c)",
+DlgLstTypeUCase		: "Chữ cái hoa (A, B, C)",
+DlgLstTypeSRoman	: "Số La Mã thường (i, ii, iii)",
+DlgLstTypeLRoman	: "Số La Mã hoa (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Toàn thể",
+DlgDocBackTab		: "Nền",
+DlgDocColorsTab		: "Màu sắc và Đường biên",
+DlgDocMetaTab		: "Siêu dữ liệu",
+
+DlgDocPageTitle		: "Tiêu đề Trang",
+DlgDocLangDir		: "Đường dẫn Ngôn ngữ",
+DlgDocLangDirLTR	: "Trái sang Phải (LTR)",
+DlgDocLangDirRTL	: "Phải sang Trái (RTL)",
+DlgDocLangCode		: "Mã Ngôn ngữ",
+DlgDocCharSet		: "Bảng mã ký tự",
+DlgDocCharSetCE		: "Trung Âu",
+DlgDocCharSetCT		: "Tiếng Trung Quốc (Big5)",
+DlgDocCharSetCR		: "Tiếng Kirin",
+DlgDocCharSetGR		: "Tiếng Hy Lạp",
+DlgDocCharSetJP		: "Tiếng Nhật",
+DlgDocCharSetKR		: "Tiếng Hàn",
+DlgDocCharSetTR		: "Tiếng Thổ Nhĩ Kỳ",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Tây Âu",
+DlgDocCharSetOther	: "Bảng mã ký tự khác",
+
+DlgDocDocType		: "Kiểu Đề mục Tài liệu",
+DlgDocDocTypeOther	: "Kiểu Đề mục Tài liệu khác",
+DlgDocIncXHTML		: "Bao gồm cả định nghĩa XHTML",
+DlgDocBgColor		: "Màu nền",
+DlgDocBgImage		: "URL của Hình ảnh nền",
+DlgDocBgNoScroll	: "Không cuộn nền",
+DlgDocCText			: "Văn bản",
+DlgDocCLink			: "Liên kết",
+DlgDocCVisited		: "Liên kết Đã ghé thăm",
+DlgDocCActive		: "Liên kết Hiện hành",
+DlgDocMargins		: "Đường biên của Trang",
+DlgDocMaTop			: "Trên",
+DlgDocMaLeft		: "Trái",
+DlgDocMaRight		: "Phải",
+DlgDocMaBottom		: "Dưới",
+DlgDocMeIndex		: "Các từ khóa chỉ mục tài liệu (phân cách bởi dấu phẩy)",
+DlgDocMeDescr		: "Mô tả tài liệu",
+DlgDocMeAuthor		: "Tác giả",
+DlgDocMeCopy		: "Bản quyền",
+DlgDocPreview		: "Xem trước",
+
+// Templates Dialog
+Templates			: "Mẫu dựng sẵn",
+DlgTemplatesTitle	: "Nội dung Mẫu dựng sẵn",
+DlgTemplatesSelMsg	: "Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):",
+DlgTemplatesLoading	: "Đang nạp Danh sách Mẫu dựng sẵn. Vui lòng đợi trong giây lát...",
+DlgTemplatesNoTpl	: "(Không có Mẫu dựng sẵn nào được định nghĩa)",
+DlgTemplatesReplace	: "Thay thế nội dung hiện tại",
+
+// About Dialog
+DlgAboutAboutTab	: "Giới thiệu",
+DlgAboutBrowserInfoTab	: "Thông tin trình duyệt",
+DlgAboutLicenseTab	: "Giấy phép",
+DlgAboutVersion		: "phiên bản",
+DlgAboutInfo		: "Để biết thêm thông tin, hãy truy cập",
+
+// Div Dialog
+DlgDivGeneralTab	: "Chung",
+DlgDivAdvancedTab	: "Nâng cao",
+DlgDivStyle		: "Kiểu Style",
+DlgDivInlineStyle	: "Kiểu Style Trực tiếp",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh-cn.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh-cn.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh-cn.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Chinese Simplified language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "折叠工具栏",
+ToolbarExpand		: "展开工具栏",
+
+// Toolbar Items and Context Menu
+Save				: "保存",
+NewPage				: "新建",
+Preview				: "预览",
+Cut					: "剪切",
+Copy				: "复制",
+Paste				: "粘贴",
+PasteText			: "粘贴为无格式文本",
+PasteWord			: "从 MS Word 粘贴",
+Print				: "打印",
+SelectAll			: "全选",
+RemoveFormat		: "清除格式",
+InsertLinkLbl		: "超链接",
+InsertLink			: "插入/编辑超链接",
+RemoveLink			: "取消超链接",
+VisitLink			: "打开超链接",
+Anchor				: "插入/编辑锚点链接",
+AnchorDelete		: "清除锚点链接",
+InsertImageLbl		: "图象",
+InsertImage			: "插入/编辑图象",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "插入/编辑 Flash",
+InsertTableLbl		: "表格",
+InsertTable			: "插入/编辑表格",
+InsertLineLbl		: "水平线",
+InsertLine			: "插入水平线",
+InsertSpecialCharLbl: "特殊符号",
+InsertSpecialChar	: "插入特殊符号",
+InsertSmileyLbl		: "表情符",
+InsertSmiley		: "插入表情图标",
+About				: "关于 FCKeditor",
+Bold				: "加粗",
+Italic				: "倾斜",
+Underline			: "下划线",
+StrikeThrough		: "删除线",
+Subscript			: "下标",
+Superscript			: "上标",
+LeftJustify			: "左对齐",
+CenterJustify		: "居中对齐",
+RightJustify		: "右对齐",
+BlockJustify		: "两端对齐",
+DecreaseIndent		: "减少缩进量",
+IncreaseIndent		: "增加缩进量",
+Blockquote			: "块引用",
+CreateDiv			: "插入 Div 标签",
+EditDiv				: "编辑 Div 标签",
+DeleteDiv			: "删除 Div 标签",
+Undo				: "撤消",
+Redo				: "重做",
+NumberedListLbl		: "编号列表",
+NumberedList		: "插入/删除编号列表",
+BulletedListLbl		: "项目列表",
+BulletedList		: "插入/删除项目列表",
+ShowTableBorders	: "显示表格边框",
+ShowDetails			: "显示详细资料",
+Style				: "样式",
+FontFormat			: "格式",
+Font				: "字体",
+FontSize			: "大小",
+TextColor			: "文本颜色",
+BGColor				: "背景颜色",
+Source				: "源代码",
+Find				: "查找",
+Replace				: "替换",
+SpellCheck			: "拼写检查",
+UniversalKeyboard	: "软键盘",
+PageBreakLbl		: "分页符",
+PageBreak			: "插入分页符",
+
+Form			: "表单",
+Checkbox		: "复选框",
+RadioButton		: "单选按钮",
+TextField		: "单行文本",
+Textarea		: "多行文本",
+HiddenField		: "隐藏域",
+Button			: "按钮",
+SelectionField	: "列表/菜单",
+ImageButton		: "图像域",
+
+FitWindow		: "全屏编辑",
+ShowBlocks		: "显示区块",
+
+// Context Menu
+EditLink			: "编辑超链接",
+CellCM				: "单元格",
+RowCM				: "行",
+ColumnCM			: "列",
+InsertRowAfter		: "在下方插入行",
+InsertRowBefore		: "在上方插入行",
+DeleteRows			: "删除行",
+InsertColumnAfter	: "在右侧插入列",
+InsertColumnBefore	: "在左侧插入列",
+DeleteColumns		: "删除列",
+InsertCellAfter		: "在右侧插入单元格",
+InsertCellBefore	: "在左侧插入单元格",
+DeleteCells			: "删除单元格",
+MergeCells			: "合并单元格",
+MergeRight			: "向右合并单元格",
+MergeDown			: "向下合并单元格",
+HorizontalSplitCell	: "水平拆分单元格",
+VerticalSplitCell	: "垂直拆分单元格",
+TableDelete			: "删除表格",
+CellProperties		: "单元格属性",
+TableProperties		: "表格属性",
+ImageProperties		: "图象属性",
+FlashProperties		: "Flash 属性",
+
+AnchorProp			: "锚点链接属性",
+ButtonProp			: "按钮属性",
+CheckboxProp		: "复选框属性",
+HiddenFieldProp		: "隐藏域属性",
+RadioButtonProp		: "单选按钮属性",
+ImageButtonProp		: "图像域属性",
+TextFieldProp		: "单行文本属性",
+SelectionFieldProp	: "菜单/列表属性",
+TextareaProp		: "多行文本属性",
+FormProp			: "表单属性",
+
+FontFormats			: "普通;已编排格式;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "正在处理 XHTML，请稍等...",
+Done				: "完成",
+PasteWordConfirm	: "您要粘贴的内容好像是来自 MS Word，是否要清除 MS Word 格式后再粘贴？",
+NotCompatiblePaste	: "该命令需要 Internet Explorer 5.5 或更高版本的支持，是否按常规粘贴进行？",
+UnknownToolbarItem	: "未知工具栏项目 \"%1\"",
+UnknownCommand		: "未知命令名称 \"%1\"",
+NotImplemented		: "命令无法执行",
+UnknownToolbarSet	: "工具栏设置 \"%1\" 不存在",
+NoActiveX			: "浏览器安全设置限制了本编辑器的某些功能。您必须启用安全设置中的“运行 ActiveX 控件和插件”，否则将出现某些错误并缺少功能。",
+BrowseServerBlocked : "无法打开资源浏览器，请确认是否启用了禁止弹出窗口。",
+DialogBlocked		: "无法打开对话框窗口，请确认是否启用了禁止弹出窗口或网页对话框（IE）。",
+VisitLinkBlocked	: "无法打开新窗口，请确认是否启用了禁止弹出窗口或网页对话框（IE）。",
+
+// Dialogs
+DlgBtnOK			: "确定",
+DlgBtnCancel		: "取消",
+DlgBtnClose			: "关闭",
+DlgBtnBrowseServer	: "浏览服务器",
+DlgAdvancedTag		: "高级",
+DlgOpOther			: "<其它>",
+DlgInfoTab			: "信息",
+DlgAlertUrl			: "请插入 URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<没有设置>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "语言方向",
+DlgGenLangDirLtr	: "从左到右 (LTR)",
+DlgGenLangDirRtl	: "从右到左 (RTL)",
+DlgGenLangCode		: "语言代码",
+DlgGenAccessKey		: "访问键",
+DlgGenName			: "名称",
+DlgGenTabIndex		: "Tab 键次序",
+DlgGenLongDescr		: "详细说明地址",
+DlgGenClass			: "样式类名称",
+DlgGenTitle			: "标题",
+DlgGenContType		: "内容类型",
+DlgGenLinkCharset	: "字符编码",
+DlgGenStyle			: "行内样式",
+
+// Image Dialog
+DlgImgTitle			: "图象属性",
+DlgImgInfoTab		: "图象",
+DlgImgBtnUpload		: "发送到服务器上",
+DlgImgURL			: "源文件",
+DlgImgUpload		: "上传",
+DlgImgAlt			: "替换文本",
+DlgImgWidth			: "宽度",
+DlgImgHeight		: "高度",
+DlgImgLockRatio		: "锁定比例",
+DlgBtnResetSize		: "恢复尺寸",
+DlgImgBorder		: "边框大小",
+DlgImgHSpace		: "水平间距",
+DlgImgVSpace		: "垂直间距",
+DlgImgAlign			: "对齐方式",
+DlgImgAlignLeft		: "左对齐",
+DlgImgAlignAbsBottom: "绝对底边",
+DlgImgAlignAbsMiddle: "绝对居中",
+DlgImgAlignBaseline	: "基线",
+DlgImgAlignBottom	: "底边",
+DlgImgAlignMiddle	: "居中",
+DlgImgAlignRight	: "右对齐",
+DlgImgAlignTextTop	: "文本上方",
+DlgImgAlignTop		: "顶端",
+DlgImgPreview		: "预览",
+DlgImgAlertUrl		: "请输入图象地址",
+DlgImgLinkTab		: "链接",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash 属性",
+DlgFlashChkPlay		: "自动播放",
+DlgFlashChkLoop		: "循环",
+DlgFlashChkMenu		: "启用 Flash 菜单",
+DlgFlashScale		: "缩放",
+DlgFlashScaleAll	: "全部显示",
+DlgFlashScaleNoBorder	: "无边框",
+DlgFlashScaleFit	: "严格匹配",
+
+// Link Dialog
+DlgLnkWindowTitle	: "超链接",
+DlgLnkInfoTab		: "超链接信息",
+DlgLnkTargetTab		: "目标",
+
+DlgLnkType			: "超链接类型",
+DlgLnkTypeURL		: "超链接",
+DlgLnkTypeAnchor	: "页内锚点链接",
+DlgLnkTypeEMail		: "电子邮件",
+DlgLnkProto			: "协议",
+DlgLnkProtoOther	: "<其它>",
+DlgLnkURL			: "地址",
+DlgLnkAnchorSel		: "选择一个锚点",
+DlgLnkAnchorByName	: "按锚点名称",
+DlgLnkAnchorById	: "按锚点 ID",
+DlgLnkNoAnchors		: "(此文档没有可用的锚点)",
+DlgLnkEMail			: "地址",
+DlgLnkEMailSubject	: "主题",
+DlgLnkEMailBody		: "内容",
+DlgLnkUpload		: "上传",
+DlgLnkBtnUpload		: "发送到服务器上",
+
+DlgLnkTarget		: "目标",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<弹出窗口>",
+DlgLnkTargetBlank	: "新窗口 (_blank)",
+DlgLnkTargetParent	: "父窗口 (_parent)",
+DlgLnkTargetSelf	: "本窗口 (_self)",
+DlgLnkTargetTop		: "整页 (_top)",
+DlgLnkTargetFrameName	: "目标框架名称",
+DlgLnkPopWinName	: "弹出窗口名称",
+DlgLnkPopWinFeat	: "弹出窗口属性",
+DlgLnkPopResize		: "调整大小",
+DlgLnkPopLocation	: "地址栏",
+DlgLnkPopMenu		: "菜单栏",
+DlgLnkPopScroll		: "滚动条",
+DlgLnkPopStatus		: "状态栏",
+DlgLnkPopToolbar	: "工具栏",
+DlgLnkPopFullScrn	: "全屏 (IE)",
+DlgLnkPopDependent	: "依附 (NS)",
+DlgLnkPopWidth		: "宽",
+DlgLnkPopHeight		: "高",
+DlgLnkPopLeft		: "左",
+DlgLnkPopTop		: "右",
+
+DlnLnkMsgNoUrl		: "请输入超链接地址",
+DlnLnkMsgNoEMail	: "请输入电子邮件地址",
+DlnLnkMsgNoAnchor	: "请选择一个锚点",
+DlnLnkMsgInvPopName	: "弹出窗口名称必须以字母开头，并且不能含有空格。",
+
+// Color Dialog
+DlgColorTitle		: "选择颜色",
+DlgColorBtnClear	: "清除",
+DlgColorHighlight	: "预览",
+DlgColorSelected	: "选择",
+
+// Smiley Dialog
+DlgSmileyTitle		: "插入表情图标",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "选择特殊符号",
+
+// Table Dialog
+DlgTableTitle		: "表格属性",
+DlgTableRows		: "行数",
+DlgTableColumns		: "列数",
+DlgTableBorder		: "边框",
+DlgTableAlign		: "对齐",
+DlgTableAlignNotSet	: "<没有设置>",
+DlgTableAlignLeft	: "左对齐",
+DlgTableAlignCenter	: "居中",
+DlgTableAlignRight	: "右对齐",
+DlgTableWidth		: "宽度",
+DlgTableWidthPx		: "像素",
+DlgTableWidthPc		: "百分比",
+DlgTableHeight		: "高度",
+DlgTableCellSpace	: "间距",
+DlgTableCellPad		: "边距",
+DlgTableCaption		: "标题",
+DlgTableSummary		: "摘要",
+DlgTableHeaders		: "标题单元格",
+DlgTableHeadersNone		: "无",
+DlgTableHeadersColumn	: "第一列",
+DlgTableHeadersRow		: "第一行",
+DlgTableHeadersBoth		: "第一列和第一行",
+
+// Table Cell Dialog
+DlgCellTitle		: "单元格属性",
+DlgCellWidth		: "宽度",
+DlgCellWidthPx		: "像素",
+DlgCellWidthPc		: "百分比",
+DlgCellHeight		: "高度",
+DlgCellWordWrap		: "自动换行",
+DlgCellWordWrapNotSet	: "<没有设置>",
+DlgCellWordWrapYes	: "是",
+DlgCellWordWrapNo	: "否",
+DlgCellHorAlign		: "水平对齐",
+DlgCellHorAlignNotSet	: "<没有设置>",
+DlgCellHorAlignLeft	: "左对齐",
+DlgCellHorAlignCenter	: "居中",
+DlgCellHorAlignRight: "右对齐",
+DlgCellVerAlign		: "垂直对齐",
+DlgCellVerAlignNotSet	: "<没有设置>",
+DlgCellVerAlignTop	: "顶端",
+DlgCellVerAlignMiddle	: "居中",
+DlgCellVerAlignBottom	: "底部",
+DlgCellVerAlignBaseline	: "基线",
+DlgCellType		: "单元格类型",
+DlgCellTypeData		: "资料",
+DlgCellTypeHeader	: "标题",
+DlgCellRowSpan		: "纵跨行数",
+DlgCellCollSpan		: "横跨列数",
+DlgCellBackColor	: "背景颜色",
+DlgCellBorderColor	: "边框颜色",
+DlgCellBtnSelect	: "选择...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "查找和替换",
+
+// Find Dialog
+DlgFindTitle		: "查找",
+DlgFindFindBtn		: "查找",
+DlgFindNotFoundMsg	: "指定文本没有找到。",
+
+// Replace Dialog
+DlgReplaceTitle			: "替换",
+DlgReplaceFindLbl		: "查找:",
+DlgReplaceReplaceLbl	: "替换:",
+DlgReplaceCaseChk		: "区分大小写",
+DlgReplaceReplaceBtn	: "替换",
+DlgReplaceReplAllBtn	: "全部替换",
+DlgReplaceWordChk		: "全字匹配",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "您的浏览器安全设置不允许编辑器自动执行剪切操作，请使用键盘快捷键(Ctrl+X)来完成。",
+PasteErrorCopy	: "您的浏览器安全设置不允许编辑器自动执行复制操作，请使用键盘快捷键(Ctrl+C)来完成。",
+
+PasteAsText		: "粘贴为无格式文本",
+PasteFromWord	: "从 MS Word 粘贴",
+
+DlgPasteMsg2	: "请使用键盘快捷键(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下面的方框里，再按 <STRONG>确定</STRONG>。",
+DlgPasteSec		: "因为你的浏览器的安全设置原因，本编辑器不能直接访问你的剪贴板内容，你需要在本窗口重新粘贴一次。",
+DlgPasteIgnoreFont		: "忽略 Font 标签",
+DlgPasteRemoveStyles	: "清理 CSS 样式",
+
+// Color Picker
+ColorAutomatic	: "自动",
+ColorMoreColors	: "其它颜色...",
+
+// Document Properties
+DocProps		: "页面属性",
+
+// Anchor Dialog
+DlgAnchorTitle		: "命名锚点",
+DlgAnchorName		: "锚点名称",
+DlgAnchorErrorName	: "请输入锚点名称",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "没有在字典里",
+DlgSpellChangeTo		: "更改为",
+DlgSpellBtnIgnore		: "忽略",
+DlgSpellBtnIgnoreAll	: "全部忽略",
+DlgSpellBtnReplace		: "替换",
+DlgSpellBtnReplaceAll	: "全部替换",
+DlgSpellBtnUndo			: "撤消",
+DlgSpellNoSuggestions	: "- 没有建议 -",
+DlgSpellProgress		: "正在进行拼写检查...",
+DlgSpellNoMispell		: "拼写检查完成：没有发现拼写错误",
+DlgSpellNoChanges		: "拼写检查完成：没有更改任何单词",
+DlgSpellOneChange		: "拼写检查完成：更改了一个单词",
+DlgSpellManyChanges		: "拼写检查完成：更改了 %1 个单词",
+
+IeSpellDownload			: "拼写检查插件还没安装，你是否想现在就下载？",
+
+// Button Dialog
+DlgButtonText		: "标签(值)",
+DlgButtonType		: "类型",
+DlgButtonTypeBtn	: "按钮",
+DlgButtonTypeSbm	: "提交",
+DlgButtonTypeRst	: "重设",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名称",
+DlgCheckboxValue	: "选定值",
+DlgCheckboxSelected	: "已勾选",
+
+// Form Dialog
+DlgFormName		: "名称",
+DlgFormAction	: "动作",
+DlgFormMethod	: "方法",
+
+// Select Field Dialog
+DlgSelectName		: "名称",
+DlgSelectValue		: "选定",
+DlgSelectSize		: "高度",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "允许多选",
+DlgSelectOpAvail	: "列表值",
+DlgSelectOpText		: "标签",
+DlgSelectOpValue	: "值",
+DlgSelectBtnAdd		: "新增",
+DlgSelectBtnModify	: "修改",
+DlgSelectBtnUp		: "上移",
+DlgSelectBtnDown	: "下移",
+DlgSelectBtnSetValue : "设为初始化时选定",
+DlgSelectBtnDelete	: "删除",
+
+// Textarea Dialog
+DlgTextareaName	: "名称",
+DlgTextareaCols	: "字符宽度",
+DlgTextareaRows	: "行数",
+
+// Text Field Dialog
+DlgTextName			: "名称",
+DlgTextValue		: "初始值",
+DlgTextCharWidth	: "字符宽度",
+DlgTextMaxChars		: "最多字符数",
+DlgTextType			: "类型",
+DlgTextTypeText		: "文本",
+DlgTextTypePass		: "密码",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名称",
+DlgHiddenValue	: "初始值",
+
+// Bulleted List Dialog
+BulletedListProp	: "项目列表属性",
+NumberedListProp	: "编号列表属性",
+DlgLstStart			: "开始序号",
+DlgLstType			: "列表类型",
+DlgLstTypeCircle	: "圆圈",
+DlgLstTypeDisc		: "圆点",
+DlgLstTypeSquare	: "方块",
+DlgLstTypeNumbers	: "数字 (1, 2, 3)",
+DlgLstTypeLCase		: "小写字母 (a, b, c)",
+DlgLstTypeUCase		: "大写字母 (A, B, C)",
+DlgLstTypeSRoman	: "小写罗马数字 (i, ii, iii)",
+DlgLstTypeLRoman	: "大写罗马数字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "常规",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "颜色和边距",
+DlgDocMetaTab		: "Meta 数据",
+
+DlgDocPageTitle		: "页面标题",
+DlgDocLangDir		: "语言方向",
+DlgDocLangDirLTR	: "从左到右 (LTR)",
+DlgDocLangDirRTL	: "从右到左 (RTL)",
+DlgDocLangCode		: "语言代码",
+DlgDocCharSet		: "字符编码",
+DlgDocCharSetCE		: "中欧",
+DlgDocCharSetCT		: "繁体中文 (Big5)",
+DlgDocCharSetCR		: "西里尔文",
+DlgDocCharSetGR		: "希腊文",
+DlgDocCharSetJP		: "日文",
+DlgDocCharSetKR		: "韩文",
+DlgDocCharSetTR		: "土耳其文",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "西欧",
+DlgDocCharSetOther	: "其它字符编码",
+
+DlgDocDocType		: "文档类型",
+DlgDocDocTypeOther	: "其它文档类型",
+DlgDocIncXHTML		: "包含 XHTML 声明",
+DlgDocBgColor		: "背景颜色",
+DlgDocBgImage		: "背景图像",
+DlgDocBgNoScroll	: "不滚动背景图像",
+DlgDocCText			: "文本",
+DlgDocCLink			: "超链接",
+DlgDocCVisited		: "已访问的超链接",
+DlgDocCActive		: "活动超链接",
+DlgDocMargins		: "页面边距",
+DlgDocMaTop			: "上",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下",
+DlgDocMeIndex		: "页面索引关键字 (用半角逗号[,]分隔)",
+DlgDocMeDescr		: "页面说明",
+DlgDocMeAuthor		: "作者",
+DlgDocMeCopy		: "版权",
+DlgDocPreview		: "预览",
+
+// Templates Dialog
+Templates			: "模板",
+DlgTemplatesTitle	: "内容模板",
+DlgTemplatesSelMsg	: "请选择编辑器内容模板:",
+DlgTemplatesLoading	: "正在加载模板列表，请稍等...",
+DlgTemplatesNoTpl	: "(没有模板)",
+DlgTemplatesReplace	: "替换当前内容",
+
+// About Dialog
+DlgAboutAboutTab	: "关于",
+DlgAboutBrowserInfoTab	: "浏览器信息",
+DlgAboutLicenseTab	: "许可证",
+DlgAboutVersion		: "版本",
+DlgAboutInfo		: "要获得更多信息请访问 ",
+
+// Div Dialog
+DlgDivGeneralTab	: "常规",
+DlgDivAdvancedTab	: "高级",
+DlgDivStyle		: "样式",
+DlgDivInlineStyle	: "CSS 样式",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/uk.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/uk.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/uk.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Ukrainian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Згорнути панель інструментів",
+ToolbarExpand		: "Розгорнути панель інструментів",
+
+// Toolbar Items and Context Menu
+Save				: "Зберегти",
+NewPage				: "Нова сторінка",
+Preview				: "Попередній перегляд",
+Cut					: "Вирізати",
+Copy				: "Копіювати",
+Paste				: "Вставити",
+PasteText			: "Вставити тільки текст",
+PasteWord			: "Вставити з Word",
+Print				: "Друк",
+SelectAll			: "Виділити все",
+RemoveFormat		: "Прибрати форматування",
+InsertLinkLbl		: "Посилання",
+InsertLink			: "Вставити/Редагувати посилання",
+RemoveLink			: "Знищити посилання",
+VisitLink			: "Відкрити посилання",
+Anchor				: "Вставити/Редагувати якір",
+AnchorDelete		: "Видалити якір",
+InsertImageLbl		: "Зображення",
+InsertImage			: "Вставити/Редагувати зображення",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Вставити/Редагувати Flash",
+InsertTableLbl		: "Таблиця",
+InsertTable			: "Вставити/Редагувати таблицю",
+InsertLineLbl		: "Лінія",
+InsertLine			: "Вставити горизонтальну лінію",
+InsertSpecialCharLbl: "Спеціальний символ",
+InsertSpecialChar	: "Вставити спеціальний символ",
+InsertSmileyLbl		: "Смайлик",
+InsertSmiley		: "Вставити смайлик",
+About				: "Про FCKeditor",
+Bold				: "Жирний",
+Italic				: "Курсив",
+Underline			: "Підкреслений",
+StrikeThrough		: "Закреслений",
+Subscript			: "Підрядковий індекс",
+Superscript			: "Надрядковий индекс",
+LeftJustify			: "По лівому краю",
+CenterJustify		: "По центру",
+RightJustify		: "По правому краю",
+BlockJustify		: "По ширині",
+DecreaseIndent		: "Зменшити відступ",
+IncreaseIndent		: "Збільшити відступ",
+Blockquote			: "Цитата",
+CreateDiv			: "Створити Div контейнер",
+EditDiv				: "Редагувати Div контейнер",
+DeleteDiv			: "Видалити Div контейнер",
+Undo				: "Повернути",
+Redo				: "Повторити",
+NumberedListLbl		: "Нумерований список",
+NumberedList		: "Вставити/Видалити нумерований список",
+BulletedListLbl		: "Маркований список",
+BulletedList		: "Вставити/Видалити маркований список",
+ShowTableBorders	: "Показати бордюри таблиці",
+ShowDetails			: "Показати деталі",
+Style				: "Стиль",
+FontFormat			: "Форматування",
+Font				: "Шрифт",
+FontSize			: "Розмір",
+TextColor			: "Колір тексту",
+BGColor				: "Колір фону",
+Source				: "Джерело",
+Find				: "Пошук",
+Replace				: "Заміна",
+SpellCheck			: "Перевірити орфографію",
+UniversalKeyboard	: "Універсальна клавіатура",
+PageBreakLbl		: "Розривши сторінки",
+PageBreak			: "Вставити розривши сторінки",
+
+Form			: "Форма",
+Checkbox		: "Флагова кнопка",
+RadioButton		: "Кнопка вибору",
+TextField		: "Текстове поле",
+Textarea		: "Текстова область",
+HiddenField		: "Приховане поле",
+Button			: "Кнопка",
+SelectionField	: "Список",
+ImageButton		: "Кнопка із зображенням",
+
+FitWindow		: "Розвернути вікно редактора",
+ShowBlocks		: "Показувати блоки",
+
+// Context Menu
+EditLink			: "Вставити посилання",
+CellCM				: "Осередок",
+RowCM				: "Рядок",
+ColumnCM			: "Колонка",
+InsertRowAfter		: "Вставити рядок після",
+InsertRowBefore		: "Вставити рядок до",
+DeleteRows			: "Видалити строки",
+InsertColumnAfter	: "Вставити колонку після",
+InsertColumnBefore	: "Вставити колонку до",
+DeleteColumns		: "Видалити колонки",
+InsertCellAfter		: "Вставити комірку після",
+InsertCellBefore	: "Вставити комірку до",
+DeleteCells			: "Видалити комірки",
+MergeCells			: "Об'єднати комірки",
+MergeRight			: "Об'єднати зправа",
+MergeDown			: "Об'єднати до низу",
+HorizontalSplitCell	: "Розділити комірку по горизонталі",
+VerticalSplitCell	: "Розділити комірку по вертикалі",
+TableDelete			: "Видалити таблицю",
+CellProperties		: "Властивості комірки",
+TableProperties		: "Властивості таблиці",
+ImageProperties		: "Властивості зображення",
+FlashProperties		: "Властивості Flash",
+
+AnchorProp			: "Властивості якоря",
+ButtonProp			: "Властивості кнопки",
+CheckboxProp		: "Властивості флагової кнопки",
+HiddenFieldProp		: "Властивості прихованого поля",
+RadioButtonProp		: "Властивості кнопки вибору",
+ImageButtonProp		: "Властивості кнопки із зображенням",
+TextFieldProp		: "Властивості текстового поля",
+SelectionFieldProp	: "Властивості списку",
+TextareaProp		: "Властивості текстової області",
+FormProp			: "Властивості форми",
+
+FontFormats			: "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальний (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обробка XHTML. Зачекайте, будь ласка...",
+Done				: "Зроблено",
+PasteWordConfirm	: "Текст, що ви хочете вставити, схожий на копійований з Word. Ви хочете очистити його перед вставкою?",
+NotCompatiblePaste	: "Ця команда доступна для Internet Explorer версії 5.5 або вище. Ви хочете вставити без очищення?",
+UnknownToolbarItem	: "Невідомий елемент панелі інструментів \"%1\"",
+UnknownCommand		: "Невідоме ім'я команди \"%1\"",
+NotImplemented		: "Команда не реалізована",
+UnknownToolbarSet	: "Панель інструментів \"%1\" не існує",
+NoActiveX			: "Настройки безпеки вашого браузера можуть обмежувати деякі властивості редактора. Ви повинні включити опцію \"Запускати елементи управління ACTIVEX і плугіни\". Ви можете бачити помилки і помічати відсутність можливостей.",
+BrowseServerBlocked : "Ресурси браузера не можуть бути відкриті. Перевірте що блокування спливаючих вікон вимкнені.",
+DialogBlocked		: "Не можливо відкрити вікно діалогу. Перевірте що блокування спливаючих вікон вимкнені.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Скасувати",
+DlgBtnClose			: "Зачинити",
+DlgBtnBrowseServer	: "Передивитися на сервері",
+DlgAdvancedTag		: "Розширений",
+DlgOpOther			: "<Інше>",
+DlgInfoTab			: "Інфо",
+DlgAlertUrl			: "Вставте, будь-ласка, URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не визначено>",
+DlgGenId			: "Ідентифікатор",
+DlgGenLangDir		: "Напрямок мови",
+DlgGenLangDirLtr	: "Зліва на право (LTR)",
+DlgGenLangDirRtl	: "Зправа на ліво (RTL)",
+DlgGenLangCode		: "Мова",
+DlgGenAccessKey		: "Гаряча клавіша",
+DlgGenName			: "Им'я",
+DlgGenTabIndex		: "Послідовність переходу",
+DlgGenLongDescr		: "Довгий опис URL",
+DlgGenClass			: "Клас CSS",
+DlgGenTitle			: "Заголовок",
+DlgGenContType		: "Тип вмісту",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Кодировка",
+DlgGenStyle			: "Стиль CSS",
+
+// Image Dialog
+DlgImgTitle			: "Властивості зображення",
+DlgImgInfoTab		: "Інформація про изображении",
+DlgImgBtnUpload		: "Надіслати на сервер",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Закачати",
+DlgImgAlt			: "Альтернативний текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Висота",
+DlgImgLockRatio		: "Зберегти пропорції",
+DlgBtnResetSize		: "Скинути розмір",
+DlgImgBorder		: "Бордюр",
+DlgImgHSpace		: "Горизонтальний відступ",
+DlgImgVSpace		: "Вертикальний відступ",
+DlgImgAlign			: "Вирівнювання",
+DlgImgAlignLeft		: "По лівому краю",
+DlgImgAlignAbsBottom: "Абс по низу",
+DlgImgAlignAbsMiddle: "Абс по середині",
+DlgImgAlignBaseline	: "По базовій лінії",
+DlgImgAlignBottom	: "По низу",
+DlgImgAlignMiddle	: "По середині",
+DlgImgAlignRight	: "По правому краю",
+DlgImgAlignTextTop	: "Текст на верху",
+DlgImgAlignTop		: "По верху",
+DlgImgPreview		: "Попередній перегляд",
+DlgImgAlertUrl		: "Будь ласка, введіть URL зображення",
+DlgImgLinkTab		: "Посилання",
+
+// Flash Dialog
+DlgFlashTitle		: "Властивості Flash",
+DlgFlashChkPlay		: "Авто програвання",
+DlgFlashChkLoop		: "Зациклити",
+DlgFlashChkMenu		: "Дозволити меню Flash",
+DlgFlashScale		: "Масштаб",
+DlgFlashScaleAll	: "Показати всі",
+DlgFlashScaleNoBorder	: "Без рамки",
+DlgFlashScaleFit	: "Дійсний розмір",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Посилання",
+DlgLnkInfoTab		: "Інформація посилання",
+DlgLnkTargetTab		: "Ціль",
+
+DlgLnkType			: "Тип посилання",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Якір на цю сторінку",
+DlgLnkTypeEMail		: "Эл. пошта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<інше>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Оберіть якір",
+DlgLnkAnchorByName	: "За ім'ям якоря",
+DlgLnkAnchorById	: "За ідентифікатором елемента",
+DlgLnkNoAnchors		: "(Немає якорів доступних в цьому документі)",
+DlgLnkEMail			: "Адреса ел. пошти",
+DlgLnkEMailSubject	: "Тема листа",
+DlgLnkEMailBody		: "Тіло повідомлення",
+DlgLnkUpload		: "Закачати",
+DlgLnkBtnUpload		: "Переслати на сервер",
+
+DlgLnkTarget		: "Ціль",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<спливаюче вікно>",
+DlgLnkTargetBlank	: "Нове вікно (_blank)",
+DlgLnkTargetParent	: "Батьківське вікно (_parent)",
+DlgLnkTargetSelf	: "Теж вікно (_self)",
+DlgLnkTargetTop		: "Найвище вікно (_top)",
+DlgLnkTargetFrameName	: "Ім'я целевого фрейма",
+DlgLnkPopWinName	: "Ім'я спливаючого вікна",
+DlgLnkPopWinFeat	: "Властивості спливаючого вікна",
+DlgLnkPopResize		: "Змінюється в розмірах",
+DlgLnkPopLocation	: "Панель локації",
+DlgLnkPopMenu		: "Панель меню",
+DlgLnkPopScroll		: "Полоси прокрутки",
+DlgLnkPopStatus		: "Строка статусу",
+DlgLnkPopToolbar	: "Панель інструментів",
+DlgLnkPopFullScrn	: "Повний екран (IE)",
+DlgLnkPopDependent	: "Залежний (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Висота",
+DlgLnkPopLeft		: "Позиція зліва",
+DlgLnkPopTop		: "Позиція зверху",
+
+DlnLnkMsgNoUrl		: "Будь ласка, занесіть URL посилання",
+DlnLnkMsgNoEMail	: "Будь ласка, занесіть адрес эл. почты",
+DlnLnkMsgNoAnchor	: "Будь ласка, оберіть якір",
+DlnLnkMsgInvPopName	: "Назва спливаючого вікна повинна починатися букви і не може містити пропусків",
+
+// Color Dialog
+DlgColorTitle		: "Оберіть колір",
+DlgColorBtnClear	: "Очистити",
+DlgColorHighlight	: "Підсвічений",
+DlgColorSelected	: "Обраний",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Вставити смайлик",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Оберіть спеціальний символ",
+
+// Table Dialog
+DlgTableTitle		: "Властивості таблиці",
+DlgTableRows		: "Строки",
+DlgTableColumns		: "Колонки",
+DlgTableBorder		: "Розмір бордюра",
+DlgTableAlign		: "Вирівнювання",
+DlgTableAlignNotSet	: "<Не вст.>",
+DlgTableAlignLeft	: "Зліва",
+DlgTableAlignCenter	: "По центру",
+DlgTableAlignRight	: "Зправа",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пікселів",
+DlgTableWidthPc		: "відсотків",
+DlgTableHeight		: "Висота",
+DlgTableCellSpace	: "Проміжок (spacing)",
+DlgTableCellPad		: "Відступ (padding)",
+DlgTableCaption		: "Заголовок",
+DlgTableSummary		: "Резюме",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Властивості комірки",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пікселів",
+DlgCellWidthPc		: "відсотків",
+DlgCellHeight		: "Висота",
+DlgCellWordWrap		: "Згортання текста",
+DlgCellWordWrapNotSet	: "<Не вст.>",
+DlgCellWordWrapYes	: "Так",
+DlgCellWordWrapNo	: "Ні",
+DlgCellHorAlign		: "Горизонтальне вирівнювання",
+DlgCellHorAlignNotSet	: "<Не вст.>",
+DlgCellHorAlignLeft	: "Зліва",
+DlgCellHorAlignCenter	: "По центру",
+DlgCellHorAlignRight: "Зправа",
+DlgCellVerAlign		: "Вертикальное вирівнювання",
+DlgCellVerAlignNotSet	: "<Не вст.>",
+DlgCellVerAlignTop	: "Зверху",
+DlgCellVerAlignMiddle	: "Посередині",
+DlgCellVerAlignBottom	: "Знизу",
+DlgCellVerAlignBaseline	: "По базовій лінії",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Діапазон строк (span)",
+DlgCellCollSpan		: "Діапазон колонок (span)",
+DlgCellBackColor	: "Колір фона",
+DlgCellBorderColor	: "Колір бордюра",
+DlgCellBtnSelect	: "Оберіть...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Знайти і замінити",
+
+// Find Dialog
+DlgFindTitle		: "Пошук",
+DlgFindFindBtn		: "Пошук",
+DlgFindNotFoundMsg	: "Вказаний текст не знайдений.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замінити",
+DlgReplaceFindLbl		: "Шукати:",
+DlgReplaceReplaceLbl	: "Замінити на:",
+DlgReplaceCaseChk		: "Учитывать регистр",
+DlgReplaceReplaceBtn	: "Замінити",
+DlgReplaceReplAllBtn	: "Замінити все",
+DlgReplaceWordChk		: "Збіг цілих слів",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).",
+PasteErrorCopy	: "Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).",
+
+PasteAsText		: "Вставити тільки текст",
+PasteFromWord	: "Вставити з Word",
+
+DlgPasteMsg2	: "Будь-ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натисніть <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.",
+DlgPasteIgnoreFont		: "Ігнорувати налаштування шрифтів",
+DlgPasteRemoveStyles	: "Видалити налаштування стилів",
+
+// Color Picker
+ColorAutomatic	: "Автоматичний",
+ColorMoreColors	: "Кольори...",
+
+// Document Properties
+DocProps		: "Властивості документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Властивості якоря",
+DlgAnchorName		: "Ім'я якоря",
+DlgAnchorErrorName	: "Будь ласка, занесіть ім'я якоря",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Не має в словнику",
+DlgSpellChangeTo		: "Замінити на",
+DlgSpellBtnIgnore		: "Ігнорувати",
+DlgSpellBtnIgnoreAll	: "Ігнорувати все",
+DlgSpellBtnReplace		: "Замінити",
+DlgSpellBtnReplaceAll	: "Замінити все",
+DlgSpellBtnUndo			: "Назад",
+DlgSpellNoSuggestions	: "- Немає припущень -",
+DlgSpellProgress		: "Виконується перевірка орфографії...",
+DlgSpellNoMispell		: "Перевірку орфографії завершено: помилок не знайдено",
+DlgSpellNoChanges		: "Перевірку орфографії завершено: жодне слово не змінено",
+DlgSpellOneChange		: "Перевірку орфографії завершено: змінено одно слово",
+DlgSpellManyChanges		: "Перевірку орфографії завершено: 1% слів змінено",
+
+IeSpellDownload			: "Модуль перевірки орфографії не встановлено. Бажаєтн завантажити його зараз?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Значення)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Кнопка",
+DlgButtonTypeSbm	: "Відправити",
+DlgButtonTypeRst	: "Скинути",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ім'я",
+DlgCheckboxValue	: "Значення",
+DlgCheckboxSelected	: "Обрана",
+
+// Form Dialog
+DlgFormName		: "Ім'я",
+DlgFormAction	: "Дія",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Ім'я",
+DlgSelectValue		: "Значення",
+DlgSelectSize		: "Розмір",
+DlgSelectLines		: "лінії",
+DlgSelectChkMulti	: "Дозволити обрання декількох позицій",
+DlgSelectOpAvail	: "Доступні варіанти",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Значення",
+DlgSelectBtnAdd		: "Добавити",
+DlgSelectBtnModify	: "Змінити",
+DlgSelectBtnUp		: "Вгору",
+DlgSelectBtnDown	: "Вниз",
+DlgSelectBtnSetValue : "Встановити як вибране значення",
+DlgSelectBtnDelete	: "Видалити",
+
+// Textarea Dialog
+DlgTextareaName	: "Ім'я",
+DlgTextareaCols	: "Колонки",
+DlgTextareaRows	: "Строки",
+
+// Text Field Dialog
+DlgTextName			: "Ім'я",
+DlgTextValue		: "Значення",
+DlgTextCharWidth	: "Ширина",
+DlgTextMaxChars		: "Макс. кіл-ть символів",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Пароль",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ім'я",
+DlgHiddenValue	: "Значення",
+
+// Bulleted List Dialog
+BulletedListProp	: "Властивості маркованого списка",
+NumberedListProp	: "Властивості нумерованного списка",
+DlgLstStart			: "Початок",
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Коло",
+DlgLstTypeDisc		: "Диск",
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Номери (1, 2, 3)",
+DlgLstTypeLCase		: "Літери нижнього регістра(a, b, c)",
+DlgLstTypeUCase		: "Букви верхнього регістра (A, B, C)",
+DlgLstTypeSRoman	: "Малі римські літери (i, ii, iii)",
+DlgLstTypeLRoman	: "Великі римські літери (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Загальні",
+DlgDocBackTab		: "Заднє тло",
+DlgDocColorsTab		: "Кольори та відступи",
+DlgDocMetaTab		: "Мета дані",
+
+DlgDocPageTitle		: "Заголовок сторінки",
+DlgDocLangDir		: "Напрямок тексту",
+DlgDocLangDirLTR	: "Зліва на право (LTR)",
+DlgDocLangDirRTL	: "Зправа на лево (RTL)",
+DlgDocLangCode		: "Код мови",
+DlgDocCharSet		: "Кодування набору символів",
+DlgDocCharSetCE		: "Центрально-європейська",
+DlgDocCharSetCT		: "Китайська традиційна (Big5)",
+DlgDocCharSetCR		: "Кирилиця",
+DlgDocCharSetGR		: "Грецька",
+DlgDocCharSetJP		: "Японська",
+DlgDocCharSetKR		: "Корейська",
+DlgDocCharSetTR		: "Турецька",
+DlgDocCharSetUN		: "Юнікод (UTF-8)",
+DlgDocCharSetWE		: "Західно-европейская",
+DlgDocCharSetOther	: "Інше кодування набору символів",
+
+DlgDocDocType		: "Заголовок типу документу",
+DlgDocDocTypeOther	: "Інший заголовок типу документу",
+DlgDocIncXHTML		: "Ввімкнути XHTML оголошення",
+DlgDocBgColor		: "Колір тла",
+DlgDocBgImage		: "URL зображення тла",
+DlgDocBgNoScroll	: "Тло без прокрутки",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Посилання",
+DlgDocCVisited		: "Відвідане посилання",
+DlgDocCActive		: "Активне посилання",
+DlgDocMargins		: "Відступи сторінки",
+DlgDocMaTop			: "Верхній",
+DlgDocMaLeft		: "Лівий",
+DlgDocMaRight		: "Правий",
+DlgDocMaBottom		: "Нижній",
+DlgDocMeIndex		: "Ключові слова документа (розділені комами)",
+DlgDocMeDescr		: "Опис документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторські права",
+DlgDocPreview		: "Попередній перегляд",
+
+// Templates Dialog
+Templates			: "Шаблони",
+DlgTemplatesTitle	: "Шаблони змісту",
+DlgTemplatesSelMsg	: "Оберіть, будь ласка, шаблон для відкриття в редакторі<br>(поточний зміст буде втрачено):",
+DlgTemplatesLoading	: "Завантаження списку шаблонів. Зачекайте, будь ласка...",
+DlgTemplatesNoTpl	: "(Не визначено жодного шаблону)",
+DlgTemplatesReplace	: "Замінити поточний вміст",
+
+// About Dialog
+DlgAboutAboutTab	: "Про програму",
+DlgAboutBrowserInfoTab	: "Інформація браузера",
+DlgAboutLicenseTab	: "Ліцензія",
+DlgAboutVersion		: "Версія",
+DlgAboutInfo		: "Додаткову інформацію дивіться на ",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Загальна",
+DlgDivAdvancedTab	: "Розширена",
+DlgDivStyle		: "Стиль",
+DlgDivInlineStyle	: "Inline стиль",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-uk.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-uk.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-uk.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * English (United Kingdom) language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
+Anchor				: "Insert/Edit Anchor",
+AnchorDelete		: "Remove Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+ShowBlocks		: "Show Blocks",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRowAfter		: "Insert Row After",
+InsertRowBefore		: "Insert Row Before",
+DeleteRows			: "Delete Rows",
+InsertColumnAfter	: "Insert Column After",
+InsertColumnBefore	: "Insert Column Before",
+DeleteColumns		: "Delete Columns",
+InsertCellAfter		: "Insert Cell After",
+InsertCellBefore	: "Insert Cell Before",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+MergeRight			: "Merge Right",
+MergeDown			: "Merge Down",
+HorizontalSplitCell	: "Split Cell Horizontally",
+VerticalSplitCell	: "Split Cell Vertically",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "(No anchors available in the document)",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Header",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "For further information go to",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ms.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ms.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ms.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Malay language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Simpan",
+NewPage				: "Helaian Baru",
+Preview				: "Prebiu",
+Cut					: "Potong",
+Copy				: "Salin",
+Paste				: "Tampal",
+PasteText			: "Tampal sebagai Text Biasa",
+PasteWord			: "Tampal dari Word",
+Print				: "Cetak",
+SelectAll			: "Pilih Semua",
+RemoveFormat		: "Buang Format",
+InsertLinkLbl		: "Sambungan",
+InsertLink			: "Masukkan/Sunting Sambungan",
+RemoveLink			: "Buang Sambungan",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Masukkan/Sunting Pautan",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Gambar",
+InsertImage			: "Masukkan/Sunting Gambar",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Jadual",
+InsertTable			: "Masukkan/Sunting Jadual",
+InsertLineLbl		: "Garisan",
+InsertLine			: "Masukkan Garisan Membujur",
+InsertSpecialCharLbl: "Huruf Istimewa",
+InsertSpecialChar	: "Masukkan Huruf Istimewa",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Masukkan Smiley",
+About				: "Tentang FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Jajaran Kiri",
+CenterJustify		: "Jajaran Tengah",
+RightJustify		: "Jajaran Kanan",
+BlockJustify		: "Jajaran Blok",
+DecreaseIndent		: "Kurangkan Inden",
+IncreaseIndent		: "Tambahkan Inden",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Batalkan",
+Redo				: "Ulangkan",
+NumberedListLbl		: "Senarai bernombor",
+NumberedList		: "Masukkan/Sunting Senarai bernombor",
+BulletedListLbl		: "Senarai tidak bernombor",
+BulletedList		: "Masukkan/Sunting Senarai tidak bernombor",
+ShowTableBorders	: "Tunjukkan Border Jadual",
+ShowDetails			: "Tunjukkan Butiran",
+Style				: "Stail",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Saiz",
+TextColor			: "Warna Text",
+BGColor				: "Warna Latarbelakang",
+Source				: "Sumber",
+Find				: "Cari",
+Replace				: "Ganti",
+SpellCheck			: "Semak Ejaan",
+UniversalKeyboard	: "Papan Kekunci Universal",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Borang",
+Checkbox		: "Checkbox",
+RadioButton		: "Butang Radio",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Field Tersembunyi",
+Button			: "Butang",
+SelectionField	: "Field Pilihan",
+ImageButton		: "Butang Bergambar",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Sunting Sambungan",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Buangkan Baris",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Buangkan Lajur",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Buangkan Sel-sel",
+MergeCells			: "Cantumkan Sel-sel",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Ciri-ciri Sel",
+TableProperties		: "Ciri-ciri Jadual",
+ImageProperties		: "Ciri-ciri Gambar",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Ciri-ciri Pautan",
+ButtonProp			: "Ciri-ciri Butang",
+CheckboxProp		: "Ciri-ciri Checkbox",
+HiddenFieldProp		: "Ciri-ciri Field Tersembunyi",
+RadioButtonProp		: "Ciri-ciri Butang Radio",
+ImageButtonProp		: "Ciri-ciri Butang Bergambar",
+TextFieldProp		: "Ciri-ciri Text Field",
+SelectionFieldProp	: "Ciri-ciri Selection Field",
+TextareaProp		: "Ciri-ciri Textarea",
+FormProp			: "Ciri-ciri Borang",
+
+FontFormats			: "Normal;Telah Diformat;Alamat;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Perenggan (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Memproses XHTML. Sila tunggu...",
+Done				: "Siap",
+PasteWordConfirm	: "Text yang anda hendak tampal adalah berasal dari Word. Adakah anda mahu membuang semua format Word sebelum tampal ke dalam text?",
+NotCompatiblePaste	: "Arahan ini bole dilakukan jika anda mempuunyai Internet Explorer version 5.5 atau yang lebih tinggi. Adakah anda hendak tampal text tanpa membuang format Word?",
+UnknownToolbarItem	: "Toolbar item tidak diketahui\"%1\"",
+UnknownCommand		: "Arahan tidak diketahui \"%1\"",
+NotImplemented		: "Arahan tidak terdapat didalam sistem",
+UnknownToolbarSet	: "Set toolbar \"%1\" tidak wujud",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Batal",
+DlgBtnClose			: "Tutup",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Lain-lain>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<tidak di set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Arah Tulisan",
+DlgGenLangDirLtr	: "Kiri ke Kanan (LTR)",
+DlgGenLangDirRtl	: "Kanan ke Kiri (RTL)",
+DlgGenLangCode		: "Kod Bahasa",
+DlgGenAccessKey		: "Kunci Akses",
+DlgGenName			: "Nama",
+DlgGenTabIndex		: "Indeks Tab ",
+DlgGenLongDescr		: "Butiran Panjang URL",
+DlgGenClass			: "Kelas-kelas Stylesheet",
+DlgGenTitle			: "Tajuk Makluman",
+DlgGenContType		: "Jenis Kandungan Makluman",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stail",
+
+// Image Dialog
+DlgImgTitle			: "Ciri-ciri Imej",
+DlgImgInfoTab		: "Info Imej",
+DlgImgBtnUpload		: "Hantar ke Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Muat Naik",
+DlgImgAlt			: "Text Alternatif",
+DlgImgWidth			: "Lebar",
+DlgImgHeight		: "Tinggi",
+DlgImgLockRatio		: "Tetapkan Nisbah",
+DlgBtnResetSize		: "Saiz Set Semula",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "Ruang Melintang",
+DlgImgVSpace		: "Ruang Menegak",
+DlgImgAlign			: "Jajaran",
+DlgImgAlignLeft		: "Kiri",
+DlgImgAlignAbsBottom: "Bawah Mutlak",
+DlgImgAlignAbsMiddle: "Pertengahan Mutlak",
+DlgImgAlignBaseline	: "Garis Dasar",
+DlgImgAlignBottom	: "Bawah",
+DlgImgAlignMiddle	: "Pertengahan",
+DlgImgAlignRight	: "Kanan",
+DlgImgAlignTextTop	: "Atas Text",
+DlgImgAlignTop		: "Atas",
+DlgImgPreview		: "Prebiu",
+DlgImgAlertUrl		: "Sila taip URL untuk fail gambar",
+DlgImgLinkTab		: "Sambungan",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Sambungan",
+DlgLnkInfoTab		: "Butiran Sambungan",
+DlgLnkTargetTab		: "Sasaran",
+
+DlgLnkType			: "Jenis Sambungan",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Pautan dalam muka surat ini",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<lain-lain>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sila pilih pautan",
+DlgLnkAnchorByName	: "dengan menggunakan nama pautan",
+DlgLnkAnchorById	: "dengan menggunakan ID elemen",
+DlgLnkNoAnchors		: "(Tiada pautan terdapat dalam dokumen ini)",
+DlgLnkEMail			: "Alamat E-Mail",
+DlgLnkEMailSubject	: "Subjek Mesej",
+DlgLnkEMailBody		: "Isi Kandungan Mesej",
+DlgLnkUpload		: "Muat Naik",
+DlgLnkBtnUpload		: "Hantar ke Server",
+
+DlgLnkTarget		: "Sasaran",
+DlgLnkTargetFrame	: "<bingkai>",
+DlgLnkTargetPopup	: "<tetingkap popup>",
+DlgLnkTargetBlank	: "Tetingkap Baru (_blank)",
+DlgLnkTargetParent	: "Tetingkap Parent (_parent)",
+DlgLnkTargetSelf	: "Tetingkap yang Sama (_self)",
+DlgLnkTargetTop		: "Tetingkap yang paling atas (_top)",
+DlgLnkTargetFrameName	: "Nama Bingkai Sasaran",
+DlgLnkPopWinName	: "Nama Tetingkap Popup",
+DlgLnkPopWinFeat	: "Ciri Tetingkap Popup",
+DlgLnkPopResize		: "Saiz bolehubah",
+DlgLnkPopLocation	: "Bar Lokasi",
+DlgLnkPopMenu		: "Bar Menu",
+DlgLnkPopScroll		: "Bar-bar skrol",
+DlgLnkPopStatus		: "Bar Status",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Skrin Penuh (IE)",
+DlgLnkPopDependent	: "Bergantungan (Netscape)",
+DlgLnkPopWidth		: "Lebar",
+DlgLnkPopHeight		: "Tinggi",
+DlgLnkPopLeft		: "Posisi Kiri",
+DlgLnkPopTop		: "Posisi Atas",
+
+DlnLnkMsgNoUrl		: "Sila taip sambungan URL",
+DlnLnkMsgNoEMail	: "Sila taip alamat e-mail",
+DlnLnkMsgNoAnchor	: "Sila pilih pautan berkenaaan",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Pilihan Warna",
+DlgColorBtnClear	: "Nyahwarna",
+DlgColorHighlight	: "Terang",
+DlgColorSelected	: "Dipilih",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Masukkan Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Sila pilih huruf istimewa",
+
+// Table Dialog
+DlgTableTitle		: "Ciri-ciri Jadual",
+DlgTableRows		: "Barisan",
+DlgTableColumns		: "Jaluran",
+DlgTableBorder		: "Saiz Border",
+DlgTableAlign		: "Penjajaran",
+DlgTableAlignNotSet	: "<Tidak diset>",
+DlgTableAlignLeft	: "Kiri",
+DlgTableAlignCenter	: "Tengah",
+DlgTableAlignRight	: "Kanan",
+DlgTableWidth		: "Lebar",
+DlgTableWidthPx		: "piksel-piksel",
+DlgTableWidthPc		: "peratus",
+DlgTableHeight		: "Tinggi",
+DlgTableCellSpace	: "Ruangan Antara Sel",
+DlgTableCellPad		: "Tambahan Ruang Sel",
+DlgTableCaption		: "Keterangan",
+DlgTableSummary		: "Summary",	//MISSING
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Ciri-ciri Sel",
+DlgCellWidth		: "Lebar",
+DlgCellWidthPx		: "piksel-piksel",
+DlgCellWidthPc		: "peratus",
+DlgCellHeight		: "Tinggi",
+DlgCellWordWrap		: "Mengulung Perkataan",
+DlgCellWordWrapNotSet	: "<Tidak diset>",
+DlgCellWordWrapYes	: "Ya",
+DlgCellWordWrapNo	: "Tidak",
+DlgCellHorAlign		: "Jajaran Membujur",
+DlgCellHorAlignNotSet	: "<Tidak diset>",
+DlgCellHorAlignLeft	: "Kiri",
+DlgCellHorAlignCenter	: "Tengah",
+DlgCellHorAlignRight: "Kanan",
+DlgCellVerAlign		: "Jajaran Menegak",
+DlgCellVerAlignNotSet	: "<Tidak diset>",
+DlgCellVerAlignTop	: "Atas",
+DlgCellVerAlignMiddle	: "Tengah",
+DlgCellVerAlignBottom	: "Bawah",
+DlgCellVerAlignBaseline	: "Garis Dasar",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Penggunaan Baris",
+DlgCellCollSpan		: "Penggunaan Lajur",
+DlgCellBackColor	: "Warna Latarbelakang",
+DlgCellBorderColor	: "Warna Border",
+DlgCellBtnSelect	: "Pilih...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Carian",
+DlgFindFindBtn		: "Cari",
+DlgFindNotFoundMsg	: "Text yang dicari tidak dijumpai.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Gantian",
+DlgReplaceFindLbl		: "Perkataan yang dicari:",
+DlgReplaceReplaceLbl	: "Diganti dengan:",
+DlgReplaceCaseChk		: "Padanan case huruf",
+DlgReplaceReplaceBtn	: "Ganti",
+DlgReplaceReplAllBtn	: "Ganti semua",
+DlgReplaceWordChk		: "Padana Keseluruhan perkataan",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).",
+PasteErrorCopy	: "Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).",
+
+PasteAsText		: "Tampal sebagai text biasa",
+PasteFromWord	: "Tampal dari perisian \"Word\"",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",	//MISSING
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Otomatik",
+ColorMoreColors	: "Warna lain-lain...",
+
+// Document Properties
+DocProps		: "Ciri-ciri dokumen",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ciri-ciri Pautan",
+DlgAnchorName		: "Nama Pautan",
+DlgAnchorErrorName	: "Sila taip nama pautan",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Tidak terdapat didalam kamus",
+DlgSpellChangeTo		: "Tukarkan kepada",
+DlgSpellBtnIgnore		: "Biar",
+DlgSpellBtnIgnoreAll	: "Biarkan semua",
+DlgSpellBtnReplace		: "Ganti",
+DlgSpellBtnReplaceAll	: "Gantikan Semua",
+DlgSpellBtnUndo			: "Batalkan",
+DlgSpellNoSuggestions	: "- Tiada cadangan -",
+DlgSpellProgress		: "Pemeriksaan ejaan sedang diproses...",
+DlgSpellNoMispell		: "Pemeriksaan ejaan siap: Tiada salah ejaan",
+DlgSpellNoChanges		: "Pemeriksaan ejaan siap: Tiada perkataan diubah",
+DlgSpellOneChange		: "Pemeriksaan ejaan siap: Satu perkataan telah diubah",
+DlgSpellManyChanges		: "Pemeriksaan ejaan siap: %1 perkataan diubah",
+
+IeSpellDownload			: "Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?",
+
+// Button Dialog
+DlgButtonText		: "Teks (Nilai)",
+DlgButtonType		: "Jenis",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nama",
+DlgCheckboxValue	: "Nilai",
+DlgCheckboxSelected	: "Dipilih",
+
+// Form Dialog
+DlgFormName		: "Nama",
+DlgFormAction	: "Tindakan borang",
+DlgFormMethod	: "Cara borang dihantar",
+
+// Select Field Dialog
+DlgSelectName		: "Nama",
+DlgSelectValue		: "Nilai",
+DlgSelectSize		: "Saiz",
+DlgSelectLines		: "garisan",
+DlgSelectChkMulti	: "Benarkan pilihan pelbagai",
+DlgSelectOpAvail	: "Pilihan sediada",
+DlgSelectOpText		: "Teks",
+DlgSelectOpValue	: "Nilai",
+DlgSelectBtnAdd		: "Tambah Pilihan",
+DlgSelectBtnModify	: "Ubah Pilihan",
+DlgSelectBtnUp		: "Naik ke atas",
+DlgSelectBtnDown	: "Turun ke bawah",
+DlgSelectBtnSetValue : "Set sebagai nilai terpilih",
+DlgSelectBtnDelete	: "Padam",
+
+// Textarea Dialog
+DlgTextareaName	: "Nama",
+DlgTextareaCols	: "Lajur",
+DlgTextareaRows	: "Baris",
+
+// Text Field Dialog
+DlgTextName			: "Nama",
+DlgTextValue		: "Nilai",
+DlgTextCharWidth	: "Lebar isian",
+DlgTextMaxChars		: "Isian Maksimum",
+DlgTextType			: "Jenis",
+DlgTextTypeText		: "Teks",
+DlgTextTypePass		: "Kata Laluan",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nama",
+DlgHiddenValue	: "Nilai",
+
+// Bulleted List Dialog
+BulletedListProp	: "Ciri-ciri senarai berpeluru",
+NumberedListProp	: "Ciri-ciri senarai bernombor",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Jenis",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Nombor-nombor (1, 2, 3)",
+DlgLstTypeLCase		: "Huruf-huruf kecil (a, b, c)",
+DlgLstTypeUCase		: "Huruf-huruf besar (A, B, C)",
+DlgLstTypeSRoman	: "Nombor Roman Kecil (i, ii, iii)",
+DlgLstTypeLRoman	: "Nombor Roman Besar (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Umum",
+DlgDocBackTab		: "Latarbelakang",
+DlgDocColorsTab		: "Warna dan margin",
+DlgDocMetaTab		: "Data Meta",
+
+DlgDocPageTitle		: "Tajuk Muka Surat",
+DlgDocLangDir		: "Arah Tulisan",
+DlgDocLangDirLTR	: "Kiri ke Kanan (LTR)",
+DlgDocLangDirRTL	: "Kanan ke Kiri (RTL)",
+DlgDocLangCode		: "Kod Bahasa",
+DlgDocCharSet		: "Enkod Set Huruf",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Enkod Set Huruf yang Lain",
+
+DlgDocDocType		: "Jenis Kepala Dokumen",
+DlgDocDocTypeOther	: "Jenis Kepala Dokumen yang Lain",
+DlgDocIncXHTML		: "Masukkan pemula kod XHTML",
+DlgDocBgColor		: "Warna Latarbelakang",
+DlgDocBgImage		: "URL Gambar Latarbelakang",
+DlgDocBgNoScroll	: "Imej Latarbelakang tanpa Skrol",
+DlgDocCText			: "Teks",
+DlgDocCLink			: "Sambungan",
+DlgDocCVisited		: "Sambungan telah Dilawati",
+DlgDocCActive		: "Sambungan Aktif",
+DlgDocMargins		: "Margin Muka Surat",
+DlgDocMaTop			: "Atas",
+DlgDocMaLeft		: "Kiri",
+DlgDocMaRight		: "Kanan",
+DlgDocMaBottom		: "Bawah",
+DlgDocMeIndex		: "Kata Kunci Indeks Dokumen (dipisahkan oleh koma)",
+DlgDocMeDescr		: "Keterangan Dokumen",
+DlgDocMeAuthor		: "Penulis",
+DlgDocMeCopy		: "Hakcipta",
+DlgDocPreview		: "Prebiu",
+
+// Templates Dialog
+Templates			: "Templat",
+DlgTemplatesTitle	: "Templat Kandungan",
+DlgTemplatesSelMsg	: "Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):",
+DlgTemplatesLoading	: "Senarai Templat sedang diproses. Sila Tunggu...",
+DlgTemplatesNoTpl	: "(Tiada Templat Disimpan)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Tentang",
+DlgAboutBrowserInfoTab	: "Maklumat Perisian Browser",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versi",
+DlgAboutInfo		: "Untuk maklumat lanjut sila pergi ke",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ro.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ro.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ro.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Romanian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ascunde bara cu opţiuni",
+ToolbarExpand		: "Expandează bara cu opţiuni",
+
+// Toolbar Items and Context Menu
+Save				: "Salvează",
+NewPage				: "Pagină nouă",
+Preview				: "Previzualizare",
+Cut					: "Taie",
+Copy				: "Copiază",
+Paste				: "Adaugă",
+PasteText			: "Adaugă ca text simplu",
+PasteWord			: "Adaugă din Word",
+Print				: "Printează",
+SelectAll			: "Selectează tot",
+RemoveFormat		: "Înlătură formatarea",
+InsertLinkLbl		: "Link (Legătură web)",
+InsertLink			: "Inserează/Editează link (legătură web)",
+RemoveLink			: "Înlătură link (legătură web)",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Inserează/Editează ancoră",
+AnchorDelete		: "Şterge ancoră",
+InsertImageLbl		: "Imagine",
+InsertImage			: "Inserează/Editează imagine",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserează/Editează flash",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Inserează/Editează tabel",
+InsertLineLbl		: "Linie",
+InsertLine			: "Inserează linie orizontă",
+InsertSpecialCharLbl: "Caracter special",
+InsertSpecialChar	: "Inserează caracter special",
+InsertSmileyLbl		: "Figură expresivă (Emoticon)",
+InsertSmiley		: "Inserează Figură expresivă (Emoticon)",
+About				: "Despre FCKeditor",
+Bold				: "Îngroşat (bold)",
+Italic				: "Înclinat (italic)",
+Underline			: "Subliniat (underline)",
+StrikeThrough		: "Tăiat (strike through)",
+Subscript			: "Indice (subscript)",
+Superscript			: "Putere (superscript)",
+LeftJustify			: "Aliniere la stânga",
+CenterJustify		: "Aliniere centrală",
+RightJustify		: "Aliniere la dreapta",
+BlockJustify		: "Aliniere în bloc (Block Justify)",
+DecreaseIndent		: "Scade indentarea",
+IncreaseIndent		: "Creşte indentarea",
+Blockquote			: "Citat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Starea anterioară (undo)",
+Redo				: "Starea ulterioară (redo)",
+NumberedListLbl		: "Listă numerotată",
+NumberedList		: "Inserează/Şterge listă numerotată",
+BulletedListLbl		: "Listă cu puncte",
+BulletedList		: "Inserează/Şterge listă cu puncte",
+ShowTableBorders	: "Arată marginile tabelului",
+ShowDetails			: "Arată detalii",
+Style				: "Stil",
+FontFormat			: "Formatare",
+Font				: "Font",
+FontSize			: "Mărime",
+TextColor			: "Culoarea textului",
+BGColor				: "Coloarea fundalului",
+Source				: "Sursa",
+Find				: "Găseşte",
+Replace				: "Înlocuieşte",
+SpellCheck			: "Verifică text",
+UniversalKeyboard	: "Tastatură universală",
+PageBreakLbl		: "Separator de pagină (Page Break)",
+PageBreak			: "Inserează separator de pagină (Page Break)",
+
+Form			: "Formular (Form)",
+Checkbox		: "Bifă (Checkbox)",
+RadioButton		: "Buton radio (RadioButton)",
+TextField		: "Câmp text (TextField)",
+Textarea		: "Suprafaţă text (Textarea)",
+HiddenField		: "Câmp ascuns (HiddenField)",
+Button			: "Buton",
+SelectionField	: "Câmp selecţie (SelectionField)",
+ImageButton		: "Buton imagine (ImageButton)",
+
+FitWindow		: "Maximizează mărimea editorului",
+ShowBlocks		: "Arată blocurile",
+
+// Context Menu
+EditLink			: "Editează Link",
+CellCM				: "Celulă",
+RowCM				: "Linie",
+ColumnCM			: "Coloană",
+InsertRowAfter		: "Inserează linie după",
+InsertRowBefore		: "Inserează linie înainte",
+DeleteRows			: "Şterge linii",
+InsertColumnAfter	: "Inserează coloană după",
+InsertColumnBefore	: "Inserează coloană înainte",
+DeleteColumns		: "Şterge celule",
+InsertCellAfter		: "Inserează celulă după",
+InsertCellBefore	: "Inserează celulă înainte",
+DeleteCells			: "Şterge celule",
+MergeCells			: "Uneşte celule",
+MergeRight			: "Uneşte la dreapta",
+MergeDown			: "Uneşte jos",
+HorizontalSplitCell	: "Împarte celula pe orizontală",
+VerticalSplitCell	: "Împarte celula pe verticală",
+TableDelete			: "Şterge tabel",
+CellProperties		: "Proprietăţile celulei",
+TableProperties		: "Proprietăţile tabelului",
+ImageProperties		: "Proprietăţile imaginii",
+FlashProperties		: "Proprietăţile flash-ului",
+
+AnchorProp			: "Proprietăţi ancoră",
+ButtonProp			: "Proprietăţi buton",
+CheckboxProp		: "Proprietăţi bifă (Checkbox)",
+HiddenFieldProp		: "Proprietăţi câmp ascuns (Hidden Field)",
+RadioButtonProp		: "Proprietăţi buton radio (Radio Button)",
+ImageButtonProp		: "Proprietăţi buton imagine (Image Button)",
+TextFieldProp		: "Proprietăţi câmp text (Text Field)",
+SelectionFieldProp	: "Proprietăţi câmp selecţie (Selection Field)",
+TextareaProp		: "Proprietăţi suprafaţă text (Textarea)",
+FormProp			: "Proprietăţi formular (Form)",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",	//MISSING
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesăm XHTML. Vă rugăm aşteptaţi...",
+Done				: "Am terminat",
+PasteWordConfirm	: "Textul pe care doriţi să-l adăugaţi pare a fi formatat pentru Word. Doriţi să-l curăţaţi de această formatare înainte de a-l adăuga?",
+NotCompatiblePaste	: "Această facilitate e disponibilă doar pentru Microsoft Internet Explorer, versiunea 5.5 sau ulterioară. Vreţi să-l adăugaţi fără a-i fi înlăturat formatarea?",
+UnknownToolbarItem	: "Obiectul \"%1\" din bara cu opţiuni necunoscut",
+UnknownCommand		: "Comanda \"%1\" necunoscută",
+NotImplemented		: "Comandă neimplementată",
+UnknownToolbarSet	: "Grupul din bara cu opţiuni \"%1\" nu există",
+NoActiveX			: "Setările de securitate ale programului dvs. cu care navigaţi pe internet (browser) pot limita anumite funcţionalităţi ale editorului. Pentru a evita asta, trebuie să activaţi opţiunea \"Run ActiveX controls and plug-ins\". Poate veţi întâlni erori sau veţi observa funcţionalităţi lipsă.",
+BrowseServerBlocked : "The resources browser could not be opened. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+DialogBlocked		: "Nu a fost posibilă deschiderea unei ferestre de dialog. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "Bine",
+DlgBtnCancel		: "Anulare",
+DlgBtnClose			: "Închidere",
+DlgBtnBrowseServer	: "Răsfoieşte server",
+DlgAdvancedTag		: "Avansat",
+DlgOpOther			: "<Altul>",
+DlgInfoTab			: "Informaţii",
+DlgAlertUrl			: "Vă rugăm să scrieţi URL-ul",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nesetat>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direcţia cuvintelor",
+DlgGenLangDirLtr	: "stânga-dreapta (LTR)",
+DlgGenLangDirRtl	: "dreapta-stânga (RTL)",
+DlgGenLangCode		: "Codul limbii",
+DlgGenAccessKey		: "Tasta de acces",
+DlgGenName			: "Nume",
+DlgGenTabIndex		: "Indexul tabului",
+DlgGenLongDescr		: "Descrierea lungă URL",
+DlgGenClass			: "Clasele cu stilul paginii (CSS)",
+DlgGenTitle			: "Titlul consultativ",
+DlgGenContType		: "Tipul consultativ al titlului",
+DlgGenLinkCharset	: "Setul de caractere al resursei legate",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Proprietăţile imaginii",
+DlgImgInfoTab		: "Informaţii despre imagine",
+DlgImgBtnUpload		: "Trimite la server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Încarcă",
+DlgImgAlt			: "Text alternativ",
+DlgImgWidth			: "Lăţime",
+DlgImgHeight		: "Înălţime",
+DlgImgLockRatio		: "Păstrează proporţiile",
+DlgBtnResetSize		: "Resetează mărimea",
+DlgImgBorder		: "Margine",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Aliniere",
+DlgImgAlignLeft		: "Stânga",
+DlgImgAlignAbsBottom: "Jos absolut (Abs Bottom)",
+DlgImgAlignAbsMiddle: "Mijloc absolut (Abs Middle)",
+DlgImgAlignBaseline	: "Linia de jos (Baseline)",
+DlgImgAlignBottom	: "Jos",
+DlgImgAlignMiddle	: "Mijloc",
+DlgImgAlignRight	: "Dreapta",
+DlgImgAlignTextTop	: "Text sus",
+DlgImgAlignTop		: "Sus",
+DlgImgPreview		: "Previzualizare",
+DlgImgAlertUrl		: "Vă rugăm să scrieţi URL-ul imaginii",
+DlgImgLinkTab		: "Link (Legătură web)",
+
+// Flash Dialog
+DlgFlashTitle		: "Proprietăţile flash-ului",
+DlgFlashChkPlay		: "Rulează automat",
+DlgFlashChkLoop		: "Repetă (Loop)",
+DlgFlashChkMenu		: "Activează meniul flash",
+DlgFlashScale		: "Scală",
+DlgFlashScaleAll	: "Arată tot",
+DlgFlashScaleNoBorder	: "Fără margini (No border)",
+DlgFlashScaleFit	: "Potriveşte",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link (Legătură web)",
+DlgLnkInfoTab		: "Informaţii despre link (Legătură web)",
+DlgLnkTargetTab		: "Ţintă (Target)",
+
+DlgLnkType			: "Tipul link-ului (al legăturii web)",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancoră în această pagină",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<altul>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Selectaţi o ancoră",
+DlgLnkAnchorByName	: "după numele ancorei",
+DlgLnkAnchorById	: "după Id-ul elementului",
+DlgLnkNoAnchors		: "(Nicio ancoră disponibilă în document)",
+DlgLnkEMail			: "Adresă de e-mail",
+DlgLnkEMailSubject	: "Subiectul mesajului",
+DlgLnkEMailBody		: "Conţinutul mesajului",
+DlgLnkUpload		: "Încarcă",
+DlgLnkBtnUpload		: "Trimite la server",
+
+DlgLnkTarget		: "Ţintă (Target)",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<fereastra popup>",
+DlgLnkTargetBlank	: "Fereastră nouă (_blank)",
+DlgLnkTargetParent	: "Fereastra părinte (_parent)",
+DlgLnkTargetSelf	: "Aceeaşi fereastră (_self)",
+DlgLnkTargetTop		: "Fereastra din topul ierarhiei (_top)",
+DlgLnkTargetFrameName	: "Numele frame-ului ţintă",
+DlgLnkPopWinName	: "Numele ferestrei popup",
+DlgLnkPopWinFeat	: "Proprietăţile ferestrei popup",
+DlgLnkPopResize		: "Scalabilă",
+DlgLnkPopLocation	: "Bara de locaţie",
+DlgLnkPopMenu		: "Bara de meniu",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Bara de status",
+DlgLnkPopToolbar	: "Bara de opţiuni",
+DlgLnkPopFullScrn	: "Tot ecranul (Full Screen)(IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Lăţime",
+DlgLnkPopHeight		: "Înălţime",
+DlgLnkPopLeft		: "Poziţia la stânga",
+DlgLnkPopTop		: "Poziţia la dreapta",
+
+DlnLnkMsgNoUrl		: "Vă rugăm să scrieţi URL-ul",
+DlnLnkMsgNoEMail	: "Vă rugăm să scrieţi adresa de e-mail",
+DlnLnkMsgNoAnchor	: "Vă rugăm să selectaţi o ancoră",
+DlnLnkMsgInvPopName	: "Numele 'popup'-ului trebuie să înceapă cu un caracter alfabetic şi trebuie să nu conţină spaţii",
+
+// Color Dialog
+DlgColorTitle		: "Selectează culoare",
+DlgColorBtnClear	: "Curăţă",
+DlgColorHighlight	: "Subliniază (Highlight)",
+DlgColorSelected	: "Selectat",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserează o figură expresivă (Emoticon)",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selectează caracter special",
+
+// Table Dialog
+DlgTableTitle		: "Proprietăţile tabelului",
+DlgTableRows		: "Linii",
+DlgTableColumns		: "Coloane",
+DlgTableBorder		: "Mărimea marginii",
+DlgTableAlign		: "Aliniament",
+DlgTableAlignNotSet	: "<Nesetat>",
+DlgTableAlignLeft	: "Stânga",
+DlgTableAlignCenter	: "Centru",
+DlgTableAlignRight	: "Dreapta",
+DlgTableWidth		: "Lăţime",
+DlgTableWidthPx		: "pixeli",
+DlgTableWidthPc		: "procente",
+DlgTableHeight		: "Înălţime",
+DlgTableCellSpace	: "Spaţiu între celule",
+DlgTableCellPad		: "Spaţiu în cadrul celulei",
+DlgTableCaption		: "Titlu (Caption)",
+DlgTableSummary		: "Rezumat",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Proprietăţile celulei",
+DlgCellWidth		: "Lăţime",
+DlgCellWidthPx		: "pixeli",
+DlgCellWidthPc		: "procente",
+DlgCellHeight		: "Înălţime",
+DlgCellWordWrap		: "Desparte cuvintele (Wrap)",
+DlgCellWordWrapNotSet	: "<Nesetat>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Nu",
+DlgCellHorAlign		: "Aliniament orizontal",
+DlgCellHorAlignNotSet	: "<Nesetat>",
+DlgCellHorAlignLeft	: "Stânga",
+DlgCellHorAlignCenter	: "Centru",
+DlgCellHorAlignRight: "Dreapta",
+DlgCellVerAlign		: "Aliniament vertical",
+DlgCellVerAlignNotSet	: "<Nesetat>",
+DlgCellVerAlignTop	: "Sus",
+DlgCellVerAlignMiddle	: "Mijloc",
+DlgCellVerAlignBottom	: "Jos",
+DlgCellVerAlignBaseline	: "Linia de jos (Baseline)",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Lungimea în linii (Span)",
+DlgCellCollSpan		: "Lungimea în coloane (Span)",
+DlgCellBackColor	: "Culoarea fundalului",
+DlgCellBorderColor	: "Culoarea marginii",
+DlgCellBtnSelect	: "Selectaţi...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Găseşte şi înlocuieşte",
+
+// Find Dialog
+DlgFindTitle		: "Găseşte",
+DlgFindFindBtn		: "Găseşte",
+DlgFindNotFoundMsg	: "Textul specificat nu a fost găsit.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Găseşte:",
+DlgReplaceReplaceLbl	: "Înlocuieşte cu:",
+DlgReplaceCaseChk		: "Deosebeşte majuscule de minuscule (Match case)",
+DlgReplaceReplaceBtn	: "Înlocuieşte",
+DlgReplaceReplAllBtn	: "Înlocuieşte tot",
+DlgReplaceWordChk		: "Doar cuvintele întregi",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).",
+PasteErrorCopy	: "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).",
+
+PasteAsText		: "Adaugă ca text simplu (Plain Text)",
+PasteFromWord	: "Adaugă din Word",
+
+DlgPasteMsg2	: "Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.",
+DlgPasteIgnoreFont		: "Ignoră definiţiile Font Face",
+DlgPasteRemoveStyles	: "Şterge definiţiile stilurilor",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "Mai multe culori...",
+
+// Document Properties
+DocProps		: "Proprietăţile documentului",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Proprietăţile ancorei",
+DlgAnchorName		: "Numele ancorei",
+DlgAnchorErrorName	: "Vă rugăm scrieţi numele ancorei",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nu e în dicţionar",
+DlgSpellChangeTo		: "Schimbă în",
+DlgSpellBtnIgnore		: "Ignoră",
+DlgSpellBtnIgnoreAll	: "Ignoră toate",
+DlgSpellBtnReplace		: "Înlocuieşte",
+DlgSpellBtnReplaceAll	: "Înlocuieşte tot",
+DlgSpellBtnUndo			: "Starea anterioară (undo)",
+DlgSpellNoSuggestions	: "- Fără sugestii -",
+DlgSpellProgress		: "Verificarea textului în desfăşurare...",
+DlgSpellNoMispell		: "Verificarea textului terminată: Nicio greşeală găsită",
+DlgSpellNoChanges		: "Verificarea textului terminată: Niciun cuvânt modificat",
+DlgSpellOneChange		: "Verificarea textului terminată: Un cuvânt modificat",
+DlgSpellManyChanges		: "Verificarea textului terminată: 1% cuvinte modificate",
+
+IeSpellDownload			: "Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?",
+
+// Button Dialog
+DlgButtonText		: "Text (Valoare)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nume",
+DlgCheckboxValue	: "Valoare",
+DlgCheckboxSelected	: "Selectat",
+
+// Form Dialog
+DlgFormName		: "Nume",
+DlgFormAction	: "Acţiune",
+DlgFormMethod	: "Metodă",
+
+// Select Field Dialog
+DlgSelectName		: "Nume",
+DlgSelectValue		: "Valoare",
+DlgSelectSize		: "Mărime",
+DlgSelectLines		: "linii",
+DlgSelectChkMulti	: "Permite selecţii multiple",
+DlgSelectOpAvail	: "Opţiuni disponibile",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Valoare",
+DlgSelectBtnAdd		: "Adaugă",
+DlgSelectBtnModify	: "Modifică",
+DlgSelectBtnUp		: "Sus",
+DlgSelectBtnDown	: "Jos",
+DlgSelectBtnSetValue : "Setează ca valoare selectată",
+DlgSelectBtnDelete	: "Şterge",
+
+// Textarea Dialog
+DlgTextareaName	: "Nume",
+DlgTextareaCols	: "Coloane",
+DlgTextareaRows	: "Linii",
+
+// Text Field Dialog
+DlgTextName			: "Nume",
+DlgTextValue		: "Valoare",
+DlgTextCharWidth	: "Lărgimea caracterului",
+DlgTextMaxChars		: "Caractere maxime",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Parolă",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nume",
+DlgHiddenValue	: "Valoare",
+
+// Bulleted List Dialog
+BulletedListProp	: "Proprietăţile listei punctate (Bulleted List)",
+NumberedListProp	: "Proprietăţile listei numerotate (Numbered List)",
+DlgLstStart			: "Start",
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Cerc",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Pătrat",
+DlgLstTypeNumbers	: "Numere (1, 2, 3)",
+DlgLstTypeLCase		: "Minuscule-litere mici (a, b, c)",
+DlgLstTypeUCase		: "Majuscule (A, B, C)",
+DlgLstTypeSRoman	: "Cifre romane mici (i, ii, iii)",
+DlgLstTypeLRoman	: "Cifre romane mari (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fundal",
+DlgDocColorsTab		: "Culori si margini",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titlul paginii",
+DlgDocLangDir		: "Descrierea limbii",
+DlgDocLangDirLTR	: "stânga-dreapta (LTR)",
+DlgDocLangDirRTL	: "dreapta-stânga (RTL)",
+DlgDocLangCode		: "Codul limbii",
+DlgDocCharSet		: "Encoding setului de caractere",
+DlgDocCharSetCE		: "Central european",
+DlgDocCharSetCT		: "Chinezesc tradiţional (Big5)",
+DlgDocCharSetCR		: "Chirilic",
+DlgDocCharSetGR		: "Grecesc",
+DlgDocCharSetJP		: "Japonez",
+DlgDocCharSetKR		: "Corean",
+DlgDocCharSetTR		: "Turcesc",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Vest european",
+DlgDocCharSetOther	: "Alt encoding al setului de caractere",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Alt Document Type Heading",
+DlgDocIncXHTML		: "Include declaraţii XHTML",
+DlgDocBgColor		: "Culoarea fundalului (Background Color)",
+DlgDocBgImage		: "URL-ul imaginii din fundal (Background Image URL)",
+DlgDocBgNoScroll	: "Fundal neflotant, fix (Nonscrolling Background)",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link (Legătură web)",
+DlgDocCVisited		: "Link (Legătură web) vizitat",
+DlgDocCActive		: "Link (Legătură web) activ",
+DlgDocMargins		: "Marginile paginii",
+DlgDocMaTop			: "Sus",
+DlgDocMaLeft		: "Stânga",
+DlgDocMaRight		: "Dreapta",
+DlgDocMaBottom		: "Jos",
+DlgDocMeIndex		: "Cuvinte cheie după care se va indexa documentul (separate prin virgulă)",
+DlgDocMeDescr		: "Descrierea documentului",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Drepturi de autor",
+DlgDocPreview		: "Previzualizare",
+
+// Templates Dialog
+Templates			: "Template-uri (şabloane)",
+DlgTemplatesTitle	: "Template-uri (şabloane) de conţinut",
+DlgTemplatesSelMsg	: "Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):",
+DlgTemplatesLoading	: "Se încarcă lista cu template-uri (şabloane). Vă rugăm aşteptaţi...",
+DlgTemplatesNoTpl	: "(Niciun template (şablon) definit)",
+DlgTemplatesReplace	: "Înlocuieşte cuprinsul actual",
+
+// About Dialog
+DlgAboutAboutTab	: "Despre",
+DlgAboutBrowserInfoTab	: "Informaţii browser",
+DlgAboutLicenseTab	: "Licenţă",
+DlgAboutVersion		: "versiune",
+DlgAboutInfo		: "Pentru informaţii amănunţite, vizitaţi",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt-br.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt-br.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt-br.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Brazilian Portuguese language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ocultar Barra de Ferramentas",
+ToolbarExpand		: "Exibir Barra de Ferramentas",
+
+// Toolbar Items and Context Menu
+Save				: "Salvar",
+NewPage				: "Novo",
+Preview				: "Visualizar",
+Cut					: "Recortar",
+Copy				: "Copiar",
+Paste				: "Colar",
+PasteText			: "Colar como Texto sem Formatação",
+PasteWord			: "Colar do Word",
+Print				: "Imprimir",
+SelectAll			: "Selecionar Tudo",
+RemoveFormat		: "Remover Formatação",
+InsertLinkLbl		: "Hiperlink",
+InsertLink			: "Inserir/Editar Hiperlink",
+RemoveLink			: "Remover Hiperlink",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Inserir/Editar Âncora",
+AnchorDelete		: "Remover Âncora",
+InsertImageLbl		: "Figura",
+InsertImage			: "Inserir/Editar Figura",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insere/Edita Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Inserir/Editar Tabela",
+InsertLineLbl		: "Linha",
+InsertLine			: "Inserir Linha Horizontal",
+InsertSpecialCharLbl: "Caracteres Especiais",
+InsertSpecialChar	: "Inserir Caractere Especial",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Inserir Emoticon",
+About				: "Sobre FCKeditor",
+Bold				: "Negrito",
+Italic				: "Itálico",
+Underline			: "Sublinhado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subscrito",
+Superscript			: "Sobrescrito",
+LeftJustify			: "Alinhar Esquerda",
+CenterJustify		: "Centralizar",
+RightJustify		: "Alinhar Direita",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Diminuir Recuo",
+IncreaseIndent		: "Aumentar Recuo",
+Blockquote			: "Recuo",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Desfazer",
+Redo				: "Refazer",
+NumberedListLbl		: "Numeração",
+NumberedList		: "Inserir/Remover Numeração",
+BulletedListLbl		: "Marcadores",
+BulletedList		: "Inserir/Remover Marcadores",
+ShowTableBorders	: "Exibir Bordas da Tabela",
+ShowDetails			: "Exibir Detalhes",
+Style				: "Estilo",
+FontFormat			: "Formatação",
+Font				: "Fonte",
+FontSize			: "Tamanho",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor do Plano de Fundo",
+Source				: "Código-Fonte",
+Find				: "Localizar",
+Replace				: "Substituir",
+SpellCheck			: "Verificar Ortografia",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
+
+Form			: "Formulário",
+Checkbox		: "Caixa de Seleção",
+RadioButton		: "Botão de Opção",
+TextField		: "Caixa de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botão",
+SelectionField	: "Caixa de Listagem",
+ImageButton		: "Botão de Imagem",
+
+FitWindow		: "Maximizar o tamanho do editor",
+ShowBlocks		: "Mostrar blocos",
+
+// Context Menu
+EditLink			: "Editar Hiperlink",
+CellCM				: "Célula",
+RowCM				: "Linha",
+ColumnCM			: "Coluna",
+InsertRowAfter		: "Inserir linha abaixo",
+InsertRowBefore		: "Inserir linha acima",
+DeleteRows			: "Remover Linhas",
+InsertColumnAfter	: "Inserir coluna à direita",
+InsertColumnBefore	: "Inserir coluna à esquerda",
+DeleteColumns		: "Remover Colunas",
+InsertCellAfter		: "Inserir célula à direita",
+InsertCellBefore	: "Inserir célula à esquerda",
+DeleteCells			: "Remover Células",
+MergeCells			: "Mesclar Células",
+MergeRight			: "Mesclar com célula à direita",
+MergeDown			: "Mesclar com célula abaixo",
+HorizontalSplitCell	: "Dividir célula horizontalmente",
+VerticalSplitCell	: "Dividir célula verticalmente",
+TableDelete			: "Apagar Tabela",
+CellProperties		: "Formatar Célula",
+TableProperties		: "Formatar Tabela",
+ImageProperties		: "Formatar Figura",
+FlashProperties		: "Propriedades Flash",
+
+AnchorProp			: "Formatar Âncora",
+ButtonProp			: "Formatar Botão",
+CheckboxProp		: "Formatar Caixa de Seleção",
+HiddenFieldProp		: "Formatar Campo Oculto",
+RadioButtonProp		: "Formatar Botão de Opção",
+ImageButtonProp		: "Formatar Botão de Imagem",
+TextFieldProp		: "Formatar Caixa de Texto",
+SelectionFieldProp	: "Formatar Caixa de Listagem",
+TextareaProp		: "Formatar Área de Texto",
+FormProp			: "Formatar Formulário",
+
+FontFormats			: "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processando XHTML. Por favor, aguarde...",
+Done				: "Pronto",
+PasteWordConfirm	: "O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?",
+NotCompatiblePaste	: "Este comando está disponível para o navegador Internet Explorer 5.5 ou superior. Você gostaria de colar sem remover a formatação?",
+UnknownToolbarItem	: "O item da barra de ferramentas \"%1\" não é reconhecido",
+UnknownCommand		: "O comando \"%1\" não é reconhecido",
+NotImplemented		: "O comando não foi implementado",
+UnknownToolbarSet	: "A barra de ferramentas \"%1\" não existe",
+NoActiveX			: "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.",
+BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Fechar",
+DlgBtnBrowseServer	: "Localizar no Servidor",
+DlgAdvancedTag		: "Avançado",
+DlgOpOther			: "<Outros>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Inserir a URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<não ajustado>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direção do idioma",
+DlgGenLangDirLtr	: "Esquerda para Direita (LTR)",
+DlgGenLangDirRtl	: "Direita para Esquerda (RTL)",
+DlgGenLangCode		: "Idioma",
+DlgGenAccessKey		: "Chave de Acesso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tabulação",
+DlgGenLongDescr		: "Descrição da URL",
+DlgGenClass			: "Classe de Folhas de Estilo",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Conteúdo",
+DlgGenLinkCharset	: "Conjunto de Caracteres do Hiperlink",
+DlgGenStyle			: "Estilos",
+
+// Image Dialog
+DlgImgTitle			: "Formatar Figura",
+DlgImgInfoTab		: "Informações da Figura",
+DlgImgBtnUpload		: "Enviar para o Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Submeter",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Manter proporções",
+DlgBtnResetSize		: "Redefinir para o Tamanho Original",
+DlgImgBorder		: "Borda",
+DlgImgHSpace		: "Horizontal",
+DlgImgVSpace		: "Vertical",
+DlgImgAlign			: "Alinhamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Inferior Absoluto",
+DlgImgAlignAbsMiddle: "Centralizado Absoluto",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Inferior",
+DlgImgAlignMiddle	: "Centralizado",
+DlgImgAlignRight	: "Direita",
+DlgImgAlignTextTop	: "Superior Absoluto",
+DlgImgAlignTop		: "Superior",
+DlgImgPreview		: "Visualização",
+DlgImgAlertUrl		: "Por favor, digite o URL da figura.",
+DlgImgLinkTab		: "Hiperlink",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades Flash",
+DlgFlashChkPlay		: "Tocar Automaticamente",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Habilita Menu Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar tudo",
+DlgFlashScaleNoBorder	: "Sem Borda",
+DlgFlashScaleFit	: "Escala Exata",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperlink",
+DlgLnkInfoTab		: "Informações",
+DlgLnkTargetTab		: "Destino",
+
+DlgLnkType			: "Tipo de hiperlink",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Âncora nesta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL do hiperlink",
+DlgLnkAnchorSel		: "Selecione uma âncora",
+DlgLnkAnchorByName	: "Pelo Nome da âncora",
+DlgLnkAnchorById	: "Pelo Id do Elemento",
+DlgLnkNoAnchors		: "(Não há âncoras disponíveis neste documento)",
+DlgLnkEMail			: "Endereço E-Mail",
+DlgLnkEMailSubject	: "Assunto da Mensagem",
+DlgLnkEMailBody		: "Corpo da Mensagem",
+DlgLnkUpload		: "Enviar ao Servidor",
+DlgLnkBtnUpload		: "Enviar ao Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<janela popup>",
+DlgLnkTargetBlank	: "Nova Janela (_blank)",
+DlgLnkTargetParent	: "Janela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma Janela (_self)",
+DlgLnkTargetTop		: "Janela Superior (_top)",
+DlgLnkTargetFrameName	: "Nome do Frame de Destino",
+DlgLnkPopWinName	: "Nome da Janela Pop-up",
+DlgLnkPopWinFeat	: "Atributos da Janela Pop-up",
+DlgLnkPopResize		: "Redimensionável",
+DlgLnkPopLocation	: "Barra de Endereços",
+DlgLnkPopMenu		: "Barra de Menus",
+DlgLnkPopScroll		: "Barras de Rolagem",
+DlgLnkPopStatus		: "Barra de Status",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "Modo Tela Cheia (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Esquerda",
+DlgLnkPopTop		: "Superior",
+
+DlnLnkMsgNoUrl		: "Por favor, digite o endereço do Hiperlink",
+DlnLnkMsgNoEMail	: "Por favor, digite o endereço de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor, selecione uma âncora",
+DlnLnkMsgInvPopName	: "O nome da janela popup deve começar com uma letra ou sublinhado (_) e não pode conter espaços",
+
+// Color Dialog
+DlgColorTitle		: "Selecione uma Cor",
+DlgColorBtnClear	: "Limpar",
+DlgColorHighlight	: "Visualização",
+DlgColorSelected	: "Selecionada",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserir Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecione um Caractere Especial",
+
+// Table Dialog
+DlgTableTitle		: "Formatar Tabela",
+DlgTableRows		: "Linhas",
+DlgTableColumns		: "Colunas",
+DlgTableBorder		: "Borda",
+DlgTableAlign		: "Alinhamento",
+DlgTableAlignNotSet	: "<Não ajustado>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centralizado",
+DlgTableAlignRight	: "Direita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Espaçamento",
+DlgTableCellPad		: "Enchimento",
+DlgTableCaption		: "Legenda",
+DlgTableSummary		: "Resumo",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Formatar célula",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Quebra de Linha",
+DlgCellWordWrapNotSet	: "<Não ajustado>",
+DlgCellWordWrapYes	: "Sim",
+DlgCellWordWrapNo	: "Não",
+DlgCellHorAlign		: "Alinhamento Horizontal",
+DlgCellHorAlignNotSet	: "<Não ajustado>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centralizado",
+DlgCellHorAlignRight: "Direita",
+DlgCellVerAlign		: "Alinhamento Vertical",
+DlgCellVerAlignNotSet	: "<Não ajustado>",
+DlgCellVerAlignTop	: "Superior",
+DlgCellVerAlignMiddle	: "Centralizado",
+DlgCellVerAlignBottom	: "Inferior",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Transpor Linhas",
+DlgCellCollSpan		: "Transpor Colunas",
+DlgCellBackColor	: "Cor do Plano de Fundo",
+DlgCellBorderColor	: "Cor da Borda",
+DlgCellBtnSelect	: "Selecionar...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Localizar e Substituir",
+
+// Find Dialog
+DlgFindTitle		: "Localizar...",
+DlgFindFindBtn		: "Localizar",
+DlgFindNotFoundMsg	: "O texto especificado não foi encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Procurar por:",
+DlgReplaceReplaceLbl	: "Substituir por:",
+DlgReplaceCaseChk		: "Coincidir Maiúsculas/Minúsculas",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substituir Tudo",
+DlgReplaceWordChk		: "Coincidir a palavra inteira",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).",
+PasteErrorCopy	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).",
+
+PasteAsText		: "Colar como Texto sem Formatação",
+PasteFromWord	: "Colar do Word",
+
+DlgPasteMsg2	: "Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.",
+DlgPasteSec		: "As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.",
+DlgPasteIgnoreFont		: "Ignorar definições de fonte",
+DlgPasteRemoveStyles	: "Remove definições de estilo",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Mais Cores...",
+
+// Document Properties
+DocProps		: "Propriedades Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Formatar Âncora",
+DlgAnchorName		: "Nome da Âncora",
+DlgAnchorErrorName	: "Por favor, digite o nome da âncora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Não encontrada",
+DlgSpellChangeTo		: "Alterar para",
+DlgSpellBtnIgnore		: "Ignorar uma vez",
+DlgSpellBtnIgnoreAll	: "Ignorar Todas",
+DlgSpellBtnReplace		: "Alterar",
+DlgSpellBtnReplaceAll	: "Alterar Todas",
+DlgSpellBtnUndo			: "Desfazer",
+DlgSpellNoSuggestions	: "-sem sugestões de ortografia-",
+DlgSpellProgress		: "Verificação ortográfica em andamento...",
+DlgSpellNoMispell		: "Verificação encerrada: Não foram encontrados erros de ortografia",
+DlgSpellNoChanges		: "Verificação ortográfica encerrada: Não houve alterações",
+DlgSpellOneChange		: "Verificação ortográfica encerrada: Uma palavra foi alterada",
+DlgSpellManyChanges		: "Verificação ortográfica encerrada: %1 foram alteradas",
+
+IeSpellDownload			: "A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Botão",
+DlgButtonTypeSbm	: "Enviar",
+DlgButtonTypeRst	: "Limpar",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Selecionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamanho",
+DlgSelectLines		: "linhas",
+DlgSelectChkMulti	: "Permitir múltiplas seleções",
+DlgSelectOpAvail	: "Opções disponíveis",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Adicionar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Para cima",
+DlgSelectBtnDown	: "Para baixo",
+DlgSelectBtnSetValue : "Definir como selecionado",
+DlgSelectBtnDelete	: "Remover",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colunas",
+DlgTextareaRows	: "Linhas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Comprimento (em caracteres)",
+DlgTextMaxChars		: "Número Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Senha",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Formatar Marcadores",
+NumberedListProp	: "Formatar Numeração",
+DlgLstStart			: "Iniciar",
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos Minúsculos (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos Maiúsculos (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Geral",
+DlgDocBackTab		: "Plano de Fundo",
+DlgDocColorsTab		: "Cores e Margens",
+DlgDocMetaTab		: "Meta Dados",
+
+DlgDocPageTitle		: "Título da Página",
+DlgDocLangDir		: "Direção do Idioma",
+DlgDocLangDirLTR	: "Esquerda para Direita (LTR)",
+DlgDocLangDirRTL	: "Direita para Esquerda (RTL)",
+DlgDocLangCode		: "Código do Idioma",
+DlgDocCharSet		: "Codificação de Caracteres",
+DlgDocCharSetCE		: "Europa Central",
+DlgDocCharSetCT		: "Chinês Tradicional (Big5)",
+DlgDocCharSetCR		: "Cirílico",
+DlgDocCharSetGR		: "Grego",
+DlgDocCharSetJP		: "Japonês",
+DlgDocCharSetKR		: "Coreano",
+DlgDocCharSetTR		: "Turco",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Europa Ocidental",
+DlgDocCharSetOther	: "Outra Codificação de Caracteres",
+
+DlgDocDocType		: "Cabeçalho Tipo de Documento",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Incluir Declarações XHTML",
+DlgDocBgColor		: "Cor do Plano de Fundo",
+DlgDocBgImage		: "URL da Imagem de Plano de Fundo",
+DlgDocBgNoScroll	: "Plano de Fundo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Hiperlink",
+DlgDocCVisited		: "Hiperlink Visitado",
+DlgDocCActive		: "Hiperlink Ativo",
+DlgDocMargins		: "Margens da Página",
+DlgDocMaTop			: "Superior",
+DlgDocMaLeft		: "Inferior",
+DlgDocMaRight		: "Direita",
+DlgDocMaBottom		: "Inferior",
+DlgDocMeIndex		: "Palavras-chave de Indexação do Documento (separadas por vírgula)",
+DlgDocMeDescr		: "Descrição do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Direitos Autorais",
+DlgDocPreview		: "Visualizar",
+
+// Templates Dialog
+Templates			: "Modelos de layout",
+DlgTemplatesTitle	: "Modelo de layout do conteúdo",
+DlgTemplatesSelMsg	: "Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):",
+DlgTemplatesLoading	: "Carregando a lista de modelos de layout. Aguarde...",
+DlgTemplatesNoTpl	: "(Não foram definidos modelos de layout)",
+DlgTemplatesReplace	: "Substituir o conteúdo atual",
+
+// About Dialog
+DlgAboutAboutTab	: "Sobre",
+DlgAboutBrowserInfoTab	: "Informações do Navegador",
+DlgAboutLicenseTab	: "Licença",
+DlgAboutVersion		: "versão",
+DlgAboutInfo		: "Para maiores informações visite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ru.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ru.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ru.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Russian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Свернуть панель инструментов",
+ToolbarExpand		: "Развернуть панель инструментов",
+
+// Toolbar Items and Context Menu
+Save				: "Сохранить",
+NewPage				: "Новая страница",
+Preview				: "Предварительный просмотр",
+Cut					: "Вырезать",
+Copy				: "Копировать",
+Paste				: "Вставить",
+PasteText			: "Вставить только текст",
+PasteWord			: "Вставить из Word",
+Print				: "Печать",
+SelectAll			: "Выделить все",
+RemoveFormat		: "Убрать форматирование",
+InsertLinkLbl		: "Ссылка",
+InsertLink			: "Вставить/Редактировать ссылку",
+RemoveLink			: "Убрать ссылку",
+VisitLink			: "Перейти по ссылке",
+Anchor				: "Вставить/Редактировать якорь",
+AnchorDelete		: "Убрать якорь",
+InsertImageLbl		: "Изображение",
+InsertImage			: "Вставить/Редактировать изображение",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Вставить/Редактировать Flash",
+InsertTableLbl		: "Таблица",
+InsertTable			: "Вставить/Редактировать таблицу",
+InsertLineLbl		: "Линия",
+InsertLine			: "Вставить горизонтальную линию",
+InsertSpecialCharLbl: "Специальный символ",
+InsertSpecialChar	: "Вставить специальный символ",
+InsertSmileyLbl		: "Смайлик",
+InsertSmiley		: "Вставить смайлик",
+About				: "О FCKeditor",
+Bold				: "Жирный",
+Italic				: "Курсив",
+Underline			: "Подчеркнутый",
+StrikeThrough		: "Зачеркнутый",
+Subscript			: "Подстрочный индекс",
+Superscript			: "Надстрочный индекс",
+LeftJustify			: "По левому краю",
+CenterJustify		: "По центру",
+RightJustify		: "По правому краю",
+BlockJustify		: "По ширине",
+DecreaseIndent		: "Уменьшить отступ",
+IncreaseIndent		: "Увеличить отступ",
+Blockquote			: "Цитата",
+CreateDiv			: "Создать Div контейнер",
+EditDiv				: "Редактировать Div контейнер",
+DeleteDiv			: "Удалить Div контейнер",
+Undo				: "Отменить",
+Redo				: "Повторить",
+NumberedListLbl		: "Нумерованный список",
+NumberedList		: "Вставить/Удалить нумерованный список",
+BulletedListLbl		: "Маркированный список",
+BulletedList		: "Вставить/Удалить маркированный список",
+ShowTableBorders	: "Показать бордюры таблицы",
+ShowDetails			: "Показать детали",
+Style				: "Стиль",
+FontFormat			: "Форматирование",
+Font				: "Шрифт",
+FontSize			: "Размер",
+TextColor			: "Цвет текста",
+BGColor				: "Цвет фона",
+Source				: "Источник",
+Find				: "Найти",
+Replace				: "Заменить",
+SpellCheck			: "Проверить орфографию",
+UniversalKeyboard	: "Универсальная клавиатура",
+PageBreakLbl		: "Разрыв страницы",
+PageBreak			: "Вставить разрыв страницы",
+
+Form			: "Форма",
+Checkbox		: "Флаговая кнопка",
+RadioButton		: "Кнопка выбора",
+TextField		: "Текстовое поле",
+Textarea		: "Текстовая область",
+HiddenField		: "Скрытое поле",
+Button			: "Кнопка",
+SelectionField	: "Список",
+ImageButton		: "Кнопка с изображением",
+
+FitWindow		: "Развернуть окно редактора",
+ShowBlocks		: "Показать блоки",
+
+// Context Menu
+EditLink			: "Вставить ссылку",
+CellCM				: "Ячейка",
+RowCM				: "Строка",
+ColumnCM			: "Колонка",
+InsertRowAfter		: "Вставить строку после",
+InsertRowBefore		: "Вставить строку до",
+DeleteRows			: "Удалить строки",
+InsertColumnAfter	: "Вставить колонку после",
+InsertColumnBefore	: "Вставить колонку до",
+DeleteColumns		: "Удалить колонки",
+InsertCellAfter		: "Вставить ячейку после",
+InsertCellBefore	: "Вставить ячейку до",
+DeleteCells			: "Удалить ячейки",
+MergeCells			: "Соединить ячейки",
+MergeRight			: "Соединить вправо",
+MergeDown			: "Соединить вниз",
+HorizontalSplitCell	: "Разбить ячейку горизонтально",
+VerticalSplitCell	: "Разбить ячейку вертикально",
+TableDelete			: "Удалить таблицу",
+CellProperties		: "Свойства ячейки",
+TableProperties		: "Свойства таблицы",
+ImageProperties		: "Свойства изображения",
+FlashProperties		: "Свойства Flash",
+
+AnchorProp			: "Свойства якоря",
+ButtonProp			: "Свойства кнопки",
+CheckboxProp		: "Свойства флаговой кнопки",
+HiddenFieldProp		: "Свойства скрытого поля",
+RadioButtonProp		: "Свойства кнопки выбора",
+ImageButtonProp		: "Свойства кнопки с изображением",
+TextFieldProp		: "Свойства текстового поля",
+SelectionFieldProp	: "Свойства списка",
+TextareaProp		: "Свойства текстовой области",
+FormProp			: "Свойства формы",
+
+FontFormats			: "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальный (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обработка XHTML. Пожалуйста, подождите...",
+Done				: "Сделано",
+PasteWordConfirm	: "Текст, который вы хотите вставить, похож на копируемый из Word. Вы хотите очистить его перед вставкой?",
+NotCompatiblePaste	: "Эта команда доступна для Internet Explorer версии 5.5 или выше. Вы хотите вставить без очистки?",
+UnknownToolbarItem	: "Не известный элемент панели инструментов \"%1\"",
+UnknownCommand		: "Не известное имя команды \"%1\"",
+NotImplemented		: "Команда не реализована",
+UnknownToolbarSet	: "Панель инструментов \"%1\" не существует",
+NoActiveX			: "Настройки безопасности вашего браузера могут ограничивать некоторые свойства редактора. Вы должны включить опцию \"Запускать элементы управления ActiveX и плугины\". Вы можете видеть ошибки и замечать отсутствие возможностей.",
+BrowseServerBlocked : "Ресурсы браузера не могут быть открыты. Проверьте что блокировки всплывающих окон выключены.",
+DialogBlocked		: "Невозможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Отмена",
+DlgBtnClose			: "Закрыть",
+DlgBtnBrowseServer	: "Просмотреть на сервере",
+DlgAdvancedTag		: "Расширенный",
+DlgOpOther			: "<Другое>",
+DlgInfoTab			: "Информация",
+DlgAlertUrl			: "Пожалуйста, вставьте URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не определено>",
+DlgGenId			: "Идентификатор",
+DlgGenLangDir		: "Направление языка",
+DlgGenLangDirLtr	: "Слева на право (LTR)",
+DlgGenLangDirRtl	: "Справа на лево (RTL)",
+DlgGenLangCode		: "Язык",
+DlgGenAccessKey		: "Горячая клавиша",
+DlgGenName			: "Имя",
+DlgGenTabIndex		: "Последовательность перехода",
+DlgGenLongDescr		: "Длинное описание URL",
+DlgGenClass			: "Класс CSS",
+DlgGenTitle			: "Заголовок",
+DlgGenContType		: "Тип содержимого",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Кодировка",
+DlgGenStyle			: "Стиль CSS",
+
+// Image Dialog
+DlgImgTitle			: "Свойства изображения",
+DlgImgInfoTab		: "Информация о изображении",
+DlgImgBtnUpload		: "Послать на сервер",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Закачать",
+DlgImgAlt			: "Альтернативный текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Высота",
+DlgImgLockRatio		: "Сохранять пропорции",
+DlgBtnResetSize		: "Сбросить размер",
+DlgImgBorder		: "Бордюр",
+DlgImgHSpace		: "Горизонтальный отступ",
+DlgImgVSpace		: "Вертикальный отступ",
+DlgImgAlign			: "Выравнивание",
+DlgImgAlignLeft		: "По левому краю",
+DlgImgAlignAbsBottom: "Абс понизу",
+DlgImgAlignAbsMiddle: "Абс посередине",
+DlgImgAlignBaseline	: "По базовой линии",
+DlgImgAlignBottom	: "Понизу",
+DlgImgAlignMiddle	: "Посередине",
+DlgImgAlignRight	: "По правому краю",
+DlgImgAlignTextTop	: "Текст наверху",
+DlgImgAlignTop		: "По верху",
+DlgImgPreview		: "Предварительный просмотр",
+DlgImgAlertUrl		: "Пожалуйста, введите URL изображения",
+DlgImgLinkTab		: "Ссылка",
+
+// Flash Dialog
+DlgFlashTitle		: "Свойства Flash",
+DlgFlashChkPlay		: "Авто проигрывание",
+DlgFlashChkLoop		: "Повтор",
+DlgFlashChkMenu		: "Включить меню Flash",
+DlgFlashScale		: "Масштабировать",
+DlgFlashScaleAll	: "Показывать все",
+DlgFlashScaleNoBorder	: "Без бордюра",
+DlgFlashScaleFit	: "Точное совпадение",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ссылка",
+DlgLnkInfoTab		: "Информация ссылки",
+DlgLnkTargetTab		: "Цель",
+
+DlgLnkType			: "Тип ссылки",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Якорь на эту страницу",
+DlgLnkTypeEMail		: "Эл. почта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<другое>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Выберите якорь",
+DlgLnkAnchorByName	: "По имени якоря",
+DlgLnkAnchorById	: "По идентификатору элемента",
+DlgLnkNoAnchors		: "(Нет якорей доступных в этом документе)",
+DlgLnkEMail			: "Адрес эл. почты",
+DlgLnkEMailSubject	: "Заголовок сообщения",
+DlgLnkEMailBody		: "Тело сообщения",
+DlgLnkUpload		: "Закачать",
+DlgLnkBtnUpload		: "Послать на сервер",
+
+DlgLnkTarget		: "Цель",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<всплывающее окно>",
+DlgLnkTargetBlank	: "Новое окно (_blank)",
+DlgLnkTargetParent	: "Родительское окно (_parent)",
+DlgLnkTargetSelf	: "Тоже окно (_self)",
+DlgLnkTargetTop		: "Самое верхнее окно (_top)",
+DlgLnkTargetFrameName	: "Имя целевого фрейма",
+DlgLnkPopWinName	: "Имя всплывающего окна",
+DlgLnkPopWinFeat	: "Свойства всплывающего окна",
+DlgLnkPopResize		: "Изменяющееся в размерах",
+DlgLnkPopLocation	: "Панель локации",
+DlgLnkPopMenu		: "Панель меню",
+DlgLnkPopScroll		: "Полосы прокрутки",
+DlgLnkPopStatus		: "Строка состояния",
+DlgLnkPopToolbar	: "Панель инструментов",
+DlgLnkPopFullScrn	: "Полный экран (IE)",
+DlgLnkPopDependent	: "Зависимый (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Высота",
+DlgLnkPopLeft		: "Позиция слева",
+DlgLnkPopTop		: "Позиция сверху",
+
+DlnLnkMsgNoUrl		: "Пожалуйста, введите URL ссылки",
+DlnLnkMsgNoEMail	: "Пожалуйста, введите адрес эл. почты",
+DlnLnkMsgNoAnchor	: "Пожалуйста, выберете якорь",
+DlnLnkMsgInvPopName	: "Название вспывающего окна должно начинаться буквы и не может содержать пробелов",
+
+// Color Dialog
+DlgColorTitle		: "Выберите цвет",
+DlgColorBtnClear	: "Очистить",
+DlgColorHighlight	: "Подсвеченный",
+DlgColorSelected	: "Выбранный",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Вставить смайлик",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Выберите специальный символ",
+
+// Table Dialog
+DlgTableTitle		: "Свойства таблицы",
+DlgTableRows		: "Строки",
+DlgTableColumns		: "Колонки",
+DlgTableBorder		: "Размер бордюра",
+DlgTableAlign		: "Выравнивание",
+DlgTableAlignNotSet	: "<Не уст.>",
+DlgTableAlignLeft	: "Слева",
+DlgTableAlignCenter	: "По центру",
+DlgTableAlignRight	: "Справа",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пикселей",
+DlgTableWidthPc		: "процентов",
+DlgTableHeight		: "Высота",
+DlgTableCellSpace	: "Промежуток (spacing)",
+DlgTableCellPad		: "Отступ (padding)",
+DlgTableCaption		: "Заголовок",
+DlgTableSummary		: "Резюме",
+DlgTableHeaders		: "Заголовки",
+DlgTableHeadersNone		: "Нет",
+DlgTableHeadersColumn	: "Первый столбец",
+DlgTableHeadersRow		: "Первая строка",
+DlgTableHeadersBoth		: "Оба варианта",
+
+// Table Cell Dialog
+DlgCellTitle		: "Свойства ячейки",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пикселей",
+DlgCellWidthPc		: "процентов",
+DlgCellHeight		: "Высота",
+DlgCellWordWrap		: "Заворачивание текста",
+DlgCellWordWrapNotSet	: "<Не уст.>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "Нет",
+DlgCellHorAlign		: "Гор. выравнивание",
+DlgCellHorAlignNotSet	: "<Не уст.>",
+DlgCellHorAlignLeft	: "Слева",
+DlgCellHorAlignCenter	: "По центру",
+DlgCellHorAlignRight: "Справа",
+DlgCellVerAlign		: "Верт. выравнивание",
+DlgCellVerAlignNotSet	: "<Не уст.>",
+DlgCellVerAlignTop	: "Сверху",
+DlgCellVerAlignMiddle	: "Посередине",
+DlgCellVerAlignBottom	: "Снизу",
+DlgCellVerAlignBaseline	: "По базовой линии",
+DlgCellType		: "Тип ячейки",
+DlgCellTypeData		: "Данные",
+DlgCellTypeHeader	: "Заголовок",
+DlgCellRowSpan		: "Диапазон строк (span)",
+DlgCellCollSpan		: "Диапазон колонок (span)",
+DlgCellBackColor	: "Цвет фона",
+DlgCellBorderColor	: "Цвет бордюра",
+DlgCellBtnSelect	: "Выберите...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Найти и заменить",
+
+// Find Dialog
+DlgFindTitle		: "Найти",
+DlgFindFindBtn		: "Найти",
+DlgFindNotFoundMsg	: "Указанный текст не найден.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Заменить",
+DlgReplaceFindLbl		: "Найти:",
+DlgReplaceReplaceLbl	: "Заменить на:",
+DlgReplaceCaseChk		: "Учитывать регистр",
+DlgReplaceReplaceBtn	: "Заменить",
+DlgReplaceReplAllBtn	: "Заменить все",
+DlgReplaceWordChk		: "Совпадение целых слов",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).",
+PasteErrorCopy	: "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).",
+
+PasteAsText		: "Вставить только текст",
+PasteFromWord	: "Вставить из Word",
+
+DlgPasteMsg2	: "Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.",
+DlgPasteSec		: "По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.",
+DlgPasteIgnoreFont		: "Игнорировать определения гарнитуры",
+DlgPasteRemoveStyles	: "Убрать определения стилей",
+
+// Color Picker
+ColorAutomatic	: "Автоматический",
+ColorMoreColors	: "Цвета...",
+
+// Document Properties
+DocProps		: "Свойства документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Свойства якоря",
+DlgAnchorName		: "Имя якоря",
+DlgAnchorErrorName	: "Пожалуйста, введите имя якоря",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Нет в словаре",
+DlgSpellChangeTo		: "Заменить на",
+DlgSpellBtnIgnore		: "Игнорировать",
+DlgSpellBtnIgnoreAll	: "Игнорировать все",
+DlgSpellBtnReplace		: "Заменить",
+DlgSpellBtnReplaceAll	: "Заменить все",
+DlgSpellBtnUndo			: "Отменить",
+DlgSpellNoSuggestions	: "- Нет предположений -",
+DlgSpellProgress		: "Идет проверка орфографии...",
+DlgSpellNoMispell		: "Проверка орфографии закончена: ошибок не найдено",
+DlgSpellNoChanges		: "Проверка орфографии закончена: ни одного слова не изменено",
+DlgSpellOneChange		: "Проверка орфографии закончена: одно слово изменено",
+DlgSpellManyChanges		: "Проверка орфографии закончена: 1% слов изменен",
+
+IeSpellDownload			: "Модуль проверки орфографии не установлен. Хотите скачать его сейчас?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Значение)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Кнопка",
+DlgButtonTypeSbm	: "Отправить",
+DlgButtonTypeRst	: "Сбросить",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Имя",
+DlgCheckboxValue	: "Значение",
+DlgCheckboxSelected	: "Выбранная",
+
+// Form Dialog
+DlgFormName		: "Имя",
+DlgFormAction	: "Действие",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Имя",
+DlgSelectValue		: "Значение",
+DlgSelectSize		: "Размер",
+DlgSelectLines		: "линии",
+DlgSelectChkMulti	: "Разрешить множественный выбор",
+DlgSelectOpAvail	: "Доступные варианты",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Значение",
+DlgSelectBtnAdd		: "Добавить",
+DlgSelectBtnModify	: "Модифицировать",
+DlgSelectBtnUp		: "Вверх",
+DlgSelectBtnDown	: "Вниз",
+DlgSelectBtnSetValue : "Установить как выбранное значение",
+DlgSelectBtnDelete	: "Удалить",
+
+// Textarea Dialog
+DlgTextareaName	: "Имя",
+DlgTextareaCols	: "Колонки",
+DlgTextareaRows	: "Строки",
+
+// Text Field Dialog
+DlgTextName			: "Имя",
+DlgTextValue		: "Значение",
+DlgTextCharWidth	: "Ширина",
+DlgTextMaxChars		: "Макс. кол-во символов",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Пароль",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Имя",
+DlgHiddenValue	: "Значение",
+
+// Bulleted List Dialog
+BulletedListProp	: "Свойства маркированного списка",
+NumberedListProp	: "Свойства нумерованного списка",
+DlgLstStart			: "Начало",
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Круг",
+DlgLstTypeDisc		: "Диск",
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Номера (1, 2, 3)",
+DlgLstTypeLCase		: "Буквы нижнего регистра (a, b, c)",
+DlgLstTypeUCase		: "Буквы верхнего регистра (A, B, C)",
+DlgLstTypeSRoman	: "Малые римские буквы (i, ii, iii)",
+DlgLstTypeLRoman	: "Большие римские буквы (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Общие",
+DlgDocBackTab		: "Задний фон",
+DlgDocColorsTab		: "Цвета и отступы",
+DlgDocMetaTab		: "Мета данные",
+
+DlgDocPageTitle		: "Заголовок страницы",
+DlgDocLangDir		: "Направление текста",
+DlgDocLangDirLTR	: "Слева направо (LTR)",
+DlgDocLangDirRTL	: "Справа налево (RTL)",
+DlgDocLangCode		: "Код языка",
+DlgDocCharSet		: "Кодировка набора символов",
+DlgDocCharSetCE		: "Центрально-европейская",
+DlgDocCharSetCT		: "Китайская традиционная (Big5)",
+DlgDocCharSetCR		: "Кириллица",
+DlgDocCharSetGR		: "Греческая",
+DlgDocCharSetJP		: "Японская",
+DlgDocCharSetKR		: "Корейская",
+DlgDocCharSetTR		: "Турецкая",
+DlgDocCharSetUN		: "Юникод (UTF-8)",
+DlgDocCharSetWE		: "Западно-европейская",
+DlgDocCharSetOther	: "Другая кодировка набора символов",
+
+DlgDocDocType		: "Заголовок типа документа",
+DlgDocDocTypeOther	: "Другой заголовок типа документа",
+DlgDocIncXHTML		: "Включить XHTML объявления",
+DlgDocBgColor		: "Цвет фона",
+DlgDocBgImage		: "URL изображения фона",
+DlgDocBgNoScroll	: "Нескроллируемый фон",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Ссылка",
+DlgDocCVisited		: "Посещенная ссылка",
+DlgDocCActive		: "Активная ссылка",
+DlgDocMargins		: "Отступы страницы",
+DlgDocMaTop			: "Верхний",
+DlgDocMaLeft		: "Левый",
+DlgDocMaRight		: "Правый",
+DlgDocMaBottom		: "Нижний",
+DlgDocMeIndex		: "Ключевые слова документа (разделенные запятой)",
+DlgDocMeDescr		: "Описание документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторские права",
+DlgDocPreview		: "Предварительный просмотр",
+
+// Templates Dialog
+Templates			: "Шаблоны",
+DlgTemplatesTitle	: "Шаблоны содержимого",
+DlgTemplatesSelMsg	: "Пожалуйста, выберете шаблон для открытия в редакторе<br>(текущее содержимое будет потеряно):",
+DlgTemplatesLoading	: "Загрузка списка шаблонов. Пожалуйста, подождите...",
+DlgTemplatesNoTpl	: "(Ни одного шаблона не определено)",
+DlgTemplatesReplace	: "Заменить текущее содержание",
+
+// About Dialog
+DlgAboutAboutTab	: "О программе",
+DlgAboutBrowserInfoTab	: "Информация браузера",
+DlgAboutLicenseTab	: "Лицензия",
+DlgAboutVersion		: "Версия",
+DlgAboutInfo		: "Для большей информации, посетите",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Информация",
+DlgDivAdvancedTab	: "Расширенные настройки",
+DlgDivStyle		: "Стиль",
+DlgDivInlineStyle	: "Встроенные стили",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/af.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/af.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/af.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Afrikaans language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Vou Gereedskaps balk toe",
+ToolbarExpand		: "Vou Gereedskaps balk oop",
+
+// Toolbar Items and Context Menu
+Save				: "Bewaar",
+NewPage				: "Nuwe Bladsy",
+Preview				: "Voorskou",
+Cut					: "Uitsny ",
+Copy				: "Kopieer",
+Paste				: "Byvoeg",
+PasteText			: "Slegs inhoud byvoeg",
+PasteWord			: "Van Word af byvoeg",
+Print				: "Druk",
+SelectAll			: "Selekteer alles",
+RemoveFormat		: "Formaat verweider",
+InsertLinkLbl		: "Skakel",
+InsertLink			: "Skakel byvoeg/verander",
+RemoveLink			: "Skakel verweider",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Plekhouer byvoeg/verander",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Beeld",
+InsertImage			: "Beeld byvoeg/verander",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash byvoeg/verander",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Tabel byvoeg/verander",
+InsertLineLbl		: "Lyn",
+InsertLine			: "Horisontale lyn byvoeg",
+InsertSpecialCharLbl: "Spesiaale karakter",
+InsertSpecialChar	: "Spesiaale Karakter byvoeg",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley byvoeg",
+About				: "Meer oor FCKeditor",
+Bold				: "Vet",
+Italic				: "Skuins",
+Underline			: "Onderstreep",
+StrikeThrough		: "Gestreik",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Links rig",
+CenterJustify		: "Rig Middel",
+RightJustify		: "Regs rig",
+BlockJustify		: "Blok paradeer",
+DecreaseIndent		: "Paradeering verkort",
+IncreaseIndent		: "Paradeering verleng",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Ont-skep",
+Redo				: "Her-skep",
+NumberedListLbl		: "Genommerde lys",
+NumberedList		: "Genommerde lys byvoeg/verweider",
+BulletedListLbl		: "Gepunkte lys",
+BulletedList		: "Gepunkte lys byvoeg/verweider",
+ShowTableBorders	: "Wys tabel kante",
+ShowDetails			: "Wys informasie",
+Style				: "Styl",
+FontFormat			: "Karakter formaat",
+Font				: "Karakters",
+FontSize			: "Karakter grote",
+TextColor			: "Karakter kleur",
+BGColor				: "Agtergrond kleur",
+Source				: "Source",
+Find				: "Vind",
+Replace				: "Vervang",
+SpellCheck			: "Spelling nagaan",
+UniversalKeyboard	: "Universeele Sleutelbord",
+PageBreakLbl		: "Bladsy breek",
+PageBreak			: "Bladsy breek byvoeg",
+
+Form			: "Form",
+Checkbox		: "HakBox",
+RadioButton		: "PuntBox",
+TextField		: "Byvoegbare karakter strook",
+Textarea		: "Byvoegbare karakter area",
+HiddenField		: "Blinde strook",
+Button			: "Knop",
+SelectionField	: "Opklapbare keuse strook",
+ImageButton		: "Beeld knop",
+
+FitWindow		: "Maksimaliseer venster grote",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Verander skakel",
+CellCM				: "Cell",
+RowCM				: "Ry",
+ColumnCM			: "Kolom",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Ry verweider",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Kolom verweider",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Cell verweider",
+MergeCells			: "Cell verenig",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Tabel verweider",
+CellProperties		: "Cell eienskappe",
+TableProperties		: "Tabel eienskappe",
+ImageProperties		: "Beeld eienskappe",
+FlashProperties		: "Flash eienskappe",
+
+AnchorProp			: "Plekhouer eienskappe",
+ButtonProp			: "Knop eienskappe",
+CheckboxProp		: "HakBox eienskappe",
+HiddenFieldProp		: "Blinde strook eienskappe",
+RadioButtonProp		: "PuntBox eienskappe",
+ImageButtonProp		: "Beeld knop eienskappe",
+TextFieldProp		: "Karakter strook eienskappe",
+SelectionFieldProp	: "Opklapbare keuse strook eienskappe",
+TextareaProp		: "Karakter area eienskappe",
+FormProp			: "Form eienskappe",
+
+FontFormats			: "Normaal;Geformateerd;Adres;Opskrif 1;Opskrif 2;Opskrif 3;Opskrif 4;Opskrif 5;Opskrif 6;Normaal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML word verarbeit. U geduld asseblief...",
+Done				: "Kompleet",
+PasteWordConfirm	: "Die informasie wat U probeer byvoeg is warskynlik van Word. Wil U dit reinig voor die byvoeging?",
+NotCompatiblePaste	: "Die instruksie is beskikbaar vir Internet Explorer weergawe 5.5 of hor. Wil U dir byvoeg sonder reiniging?",
+UnknownToolbarItem	: "Unbekende gereedskaps balk item \"%1\"",
+UnknownCommand		: "Unbekende instruksie naam \"%1\"",
+NotImplemented		: "Instruksie is nie geimplementeer nie.",
+UnknownToolbarSet	: "Gereedskaps balk \"%1\" bestaan nie",
+NoActiveX			: "U browser sekuriteit instellings kan die funksies van die editor behinder. U moet die opsie \"Run ActiveX controls and plug-ins\" aktiveer. U ondervinding mag problematies geskiet of sekere funksionaliteit mag verhinder word.",
+BrowseServerBlocked : "Die vorraad venster word geblok! Verseker asseblief dat U die \"popup blocker\" instelling verander.",
+DialogBlocked		: "Die dialoog venster vir verdere informasie word geblok. De-aktiveer asseblief die \"popup blocker\" instellings wat dit behinder.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Kanseleer",
+DlgBtnClose			: "Sluit",
+DlgBtnBrowseServer	: "Server deurblaai",
+DlgAdvancedTag		: "Ingewikkeld",
+DlgOpOther			: "<Ander>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Voeg asseblief die URL in",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<geen instelling>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Taal rigting",
+DlgGenLangDirLtr	: "Links na regs (LTR)",
+DlgGenLangDirRtl	: "Regs na links (RTL)",
+DlgGenLangCode		: "Taal kode",
+DlgGenAccessKey		: "Toegang sleutel",
+DlgGenName			: "Naam",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Lang beskreiwing URL",
+DlgGenClass			: "Skakel Tiepe",
+DlgGenTitle			: "Voorbeveelings Titel",
+DlgGenContType		: "Voorbeveelings inhoud soort",
+DlgGenLinkCharset	: "Geskakelde voorbeeld karakterstel",
+DlgGenStyle			: "Styl",
+
+// Image Dialog
+DlgImgTitle			: "Beeld eienskappe",
+DlgImgInfoTab		: "Beeld informasie",
+DlgImgBtnUpload		: "Stuur dit na die Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Uplaai",
+DlgImgAlt			: "Alternatiewe beskrywing",
+DlgImgWidth			: "Weidte",
+DlgImgHeight		: "Hoogde",
+DlgImgLockRatio		: "Behou preporsie",
+DlgBtnResetSize		: "Herstel groote",
+DlgImgBorder		: "Kant",
+DlgImgHSpace		: "HSpasie",
+DlgImgVSpace		: "VSpasie",
+DlgImgAlign			: "Paradeer",
+DlgImgAlignLeft		: "Links",
+DlgImgAlignAbsBottom: "Abs Onder",
+DlgImgAlignAbsMiddle: "Abs Middel",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Onder",
+DlgImgAlignMiddle	: "Middel",
+DlgImgAlignRight	: "Regs",
+DlgImgAlignTextTop	: "Text Bo",
+DlgImgAlignTop		: "Bo",
+DlgImgPreview		: "Voorskou",
+DlgImgAlertUrl		: "Voeg asseblief Beeld URL in.",
+DlgImgLinkTab		: "Skakel",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash eienskappe",
+DlgFlashChkPlay		: "Automaties Speel",
+DlgFlashChkLoop		: "Herhaling",
+DlgFlashChkMenu		: "Laat Flash Menu toe",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Wys alles",
+DlgFlashScaleNoBorder	: "Geen kante",
+DlgFlashScaleFit	: "Presiese pas",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Skakel",
+DlgLnkInfoTab		: "Skakel informasie",
+DlgLnkTargetTab		: "Mikpunt",
+
+DlgLnkType			: "Skakel soort",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Skakel na plekhouers in text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<ander>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Kies 'n plekhouer",
+DlgLnkAnchorByName	: "Volgens plekhouer naam",
+DlgLnkAnchorById	: "Volgens element Id",
+DlgLnkNoAnchors		: "(Geen plekhouers beskikbaar in dokument}",
+DlgLnkEMail			: "E-Mail Adres",
+DlgLnkEMailSubject	: "Boodskap Opskrif",
+DlgLnkEMailBody		: "Boodskap Inhoud",
+DlgLnkUpload		: "Oplaai",
+DlgLnkBtnUpload		: "Stuur na Server",
+
+DlgLnkTarget		: "Mikpunt",
+DlgLnkTargetFrame	: "<raam>",
+DlgLnkTargetPopup	: "<popup venster>",
+DlgLnkTargetBlank	: "Nuwe Venster (_blank)",
+DlgLnkTargetParent	: "Vorige Venster (_parent)",
+DlgLnkTargetSelf	: "Selfde Venster (_self)",
+DlgLnkTargetTop		: "Boonste Venster (_top)",
+DlgLnkTargetFrameName	: "Mikpunt Venster Naam",
+DlgLnkPopWinName	: "Popup Venster Naam",
+DlgLnkPopWinFeat	: "Popup Venster Geaartheid",
+DlgLnkPopResize		: "Verstelbare Groote",
+DlgLnkPopLocation	: "Adres Balk",
+DlgLnkPopMenu		: "Menu Balk",
+DlgLnkPopScroll		: "Gleibalkstuk",
+DlgLnkPopStatus		: "Status Balk",
+DlgLnkPopToolbar	: "Gereedskap Balk",
+DlgLnkPopFullScrn	: "Voll Skerm (IE)",
+DlgLnkPopDependent	: "Afhanklik (Netscape)",
+DlgLnkPopWidth		: "Weite",
+DlgLnkPopHeight		: "Hoogde",
+DlgLnkPopLeft		: "Links Posisie",
+DlgLnkPopTop		: "Bo Posisie",
+
+DlnLnkMsgNoUrl		: "Voeg asseblief die URL in",
+DlnLnkMsgNoEMail	: "Voeg asseblief die e-mail adres in",
+DlnLnkMsgNoAnchor	: "Kies asseblief 'n plekhouer",
+DlnLnkMsgInvPopName	: "Die popup naam moet begin met alphabetiese karakters sonder spasies.",
+
+// Color Dialog
+DlgColorTitle		: "Kies Kleur",
+DlgColorBtnClear	: "Maak skoon",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Geselekteer",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Voeg Smiley by",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Kies spesiale karakter",
+
+// Table Dialog
+DlgTableTitle		: "Tabel eienskappe",
+DlgTableRows		: "Reie",
+DlgTableColumns		: "Kolome",
+DlgTableBorder		: "Kant groote",
+DlgTableAlign		: "Parideering",
+DlgTableAlignNotSet	: "<geen instelling>",
+DlgTableAlignLeft	: "Links",
+DlgTableAlignCenter	: "Middel",
+DlgTableAlignRight	: "Regs",
+DlgTableWidth		: "Weite",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Hoogde",
+DlgTableCellSpace	: "Cell spasieering",
+DlgTableCellPad		: "Cell buffer",
+DlgTableCaption		: "Beskreiwing",
+DlgTableSummary		: "Opsomming",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell eienskappe",
+DlgCellWidth		: "Weite",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Hoogde",
+DlgCellWordWrap		: "Woord Wrap",
+DlgCellWordWrapNotSet	: "<geen instelling>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nee",
+DlgCellHorAlign		: "Horisontale rigting",
+DlgCellHorAlignNotSet	: "<geen instelling>",
+DlgCellHorAlignLeft	: "Links",
+DlgCellHorAlignCenter	: "Middel",
+DlgCellHorAlignRight: "Regs",
+DlgCellVerAlign		: "Vertikale rigting",
+DlgCellVerAlignNotSet	: "<geen instelling>",
+DlgCellVerAlignTop	: "Bo",
+DlgCellVerAlignMiddle	: "Middel",
+DlgCellVerAlignBottom	: "Onder",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Rei strekking",
+DlgCellCollSpan		: "Kolom strekking",
+DlgCellBackColor	: "Agtergrond Kleur",
+DlgCellBorderColor	: "Kant Kleur",
+DlgCellBtnSelect	: "Keuse...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Vind",
+DlgFindFindBtn		: "Vind",
+DlgFindNotFoundMsg	: "Die gespesifiseerde karakters word nie gevind nie.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Vervang",
+DlgReplaceFindLbl		: "Soek wat:",
+DlgReplaceReplaceLbl	: "Vervang met:",
+DlgReplaceCaseChk		: "Vergelyk karakter skryfweise",
+DlgReplaceReplaceBtn	: "Vervang",
+DlgReplaceReplAllBtn	: "Vervang alles",
+DlgReplaceWordChk		: "Vergelyk komplete woord",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).",
+PasteErrorCopy	: "U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).",
+
+PasteAsText		: "Voeg slegs karakters by",
+PasteFromWord	: "Byvoeging uit Word",
+
+DlgPasteMsg2	: "Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignoreer karakter soort defenisies",
+DlgPasteRemoveStyles	: "Verweider Styl defenisies",
+
+// Color Picker
+ColorAutomatic	: "Automaties",
+ColorMoreColors	: "Meer Kleure...",
+
+// Document Properties
+DocProps		: "Dokument Eienskappe",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Plekhouer Eienskappe",
+DlgAnchorName		: "Plekhouer Naam",
+DlgAnchorErrorName	: "Voltooi die plekhouer naam asseblief",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nie in woordeboek nie",
+DlgSpellChangeTo		: "Verander na",
+DlgSpellBtnIgnore		: "Ignoreer",
+DlgSpellBtnIgnoreAll	: "Ignoreer na-volgende",
+DlgSpellBtnReplace		: "Vervang",
+DlgSpellBtnReplaceAll	: "vervang na-volgende",
+DlgSpellBtnUndo			: "Ont-skep",
+DlgSpellNoSuggestions	: "- Geen voorstel -",
+DlgSpellProgress		: "Spelling word beproef...",
+DlgSpellNoMispell		: "Spellproef kompleet: Geen foute",
+DlgSpellNoChanges		: "Spellproef kompleet: Geen woord veranderings",
+DlgSpellOneChange		: "Spellproef kompleet: Een woord verander",
+DlgSpellManyChanges		: "Spellproef kompleet: %1 woorde verander",
+
+IeSpellDownload			: "Geen Spellproefer geinstaleer nie. Wil U dit aflaai?",
+
+// Button Dialog
+DlgButtonText		: "Karakters (Waarde)",
+DlgButtonType		: "Soort",
+DlgButtonTypeBtn	: "Knop",
+DlgButtonTypeSbm	: "Indien",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Naam",
+DlgCheckboxValue	: "Waarde",
+DlgCheckboxSelected	: "Uitgekies",
+
+// Form Dialog
+DlgFormName		: "Naam",
+DlgFormAction	: "Aksie",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Naam",
+DlgSelectValue		: "Waarde",
+DlgSelectSize		: "Grote",
+DlgSelectLines		: "lyne",
+DlgSelectChkMulti	: "Laat meerere keuses toe",
+DlgSelectOpAvail	: "Beskikbare Opsies",
+DlgSelectOpText		: "Karakters",
+DlgSelectOpValue	: "Waarde",
+DlgSelectBtnAdd		: "Byvoeg",
+DlgSelectBtnModify	: "Verander",
+DlgSelectBtnUp		: "Op",
+DlgSelectBtnDown	: "Af",
+DlgSelectBtnSetValue : "Stel as uitgekiesde waarde",
+DlgSelectBtnDelete	: "Verweider",
+
+// Textarea Dialog
+DlgTextareaName	: "Naam",
+DlgTextareaCols	: "Kolom",
+DlgTextareaRows	: "Reie",
+
+// Text Field Dialog
+DlgTextName			: "Naam",
+DlgTextValue		: "Waarde",
+DlgTextCharWidth	: "Karakter weite",
+DlgTextMaxChars		: "Maximale karakters",
+DlgTextType			: "Soort",
+DlgTextTypeText		: "Karakters",
+DlgTextTypePass		: "Wagwoord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Naam",
+DlgHiddenValue	: "Waarde",
+
+// Bulleted List Dialog
+BulletedListProp	: "Gepunkte lys eienskappe",
+NumberedListProp	: "Genommerde lys eienskappe",
+DlgLstStart			: "Begin",
+DlgLstType			: "Soort",
+DlgLstTypeCircle	: "Sirkel",
+DlgLstTypeDisc		: "Skyf",
+DlgLstTypeSquare	: "Vierkant",
+DlgLstTypeNumbers	: "Nommer (1, 2, 3)",
+DlgLstTypeLCase		: "Klein Letters (a, b, c)",
+DlgLstTypeUCase		: "Hoof Letters (A, B, C)",
+DlgLstTypeSRoman	: "Klein Romeinse nommers (i, ii, iii)",
+DlgLstTypeLRoman	: "Groot Romeinse nommers (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Algemeen",
+DlgDocBackTab		: "Agtergrond",
+DlgDocColorsTab		: "Kleure en Rante",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Bladsy Opskrif",
+DlgDocLangDir		: "Taal rigting",
+DlgDocLangDirLTR	: "Link na Regs (LTR)",
+DlgDocLangDirRTL	: "Regs na Links (RTL)",
+DlgDocLangCode		: "Taal Kode",
+DlgDocCharSet		: "Karakterstel Kodeering",
+DlgDocCharSetCE		: "Sentraal Europa",
+DlgDocCharSetCT		: "Chinees Traditioneel (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Grieks",
+DlgDocCharSetJP		: "Japanees",
+DlgDocCharSetKR		: "Koreans",
+DlgDocCharSetTR		: "Turks",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Ander Karakterstel Kodeering",
+
+DlgDocDocType		: "Dokument Opskrif Soort",
+DlgDocDocTypeOther	: "Ander Dokument Opskrif Soort",
+DlgDocIncXHTML		: "Voeg XHTML verklaring by",
+DlgDocBgColor		: "Agtergrond kleur",
+DlgDocBgImage		: "Agtergrond Beeld URL",
+DlgDocBgNoScroll	: "Vasgeklemde Agtergrond",
+DlgDocCText			: "Karakters",
+DlgDocCLink			: "Skakel",
+DlgDocCVisited		: "Besoekte Skakel",
+DlgDocCActive		: "Aktiewe Skakel",
+DlgDocMargins		: "Bladsy Rante",
+DlgDocMaTop			: "Bo",
+DlgDocMaLeft		: "Links",
+DlgDocMaRight		: "Regs",
+DlgDocMaBottom		: "Onder",
+DlgDocMeIndex		: "Dokument Index Sleutelwoorde(comma verdeelt)",
+DlgDocMeDescr		: "Dokument Beskrywing",
+DlgDocMeAuthor		: "Skrywer",
+DlgDocMeCopy		: "Kopiereg",
+DlgDocPreview		: "Voorskou",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Inhoud Templates",
+DlgTemplatesSelMsg	: "Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):",
+DlgTemplatesLoading	: "Templates word gelaai. U geduld asseblief...",
+DlgTemplatesNoTpl	: "(Geen templates gedefinieerd)",
+DlgTemplatesReplace	: "Vervang bestaande inhoud",
+
+// About Dialog
+DlgAboutAboutTab	: "Meer oor",
+DlgAboutBrowserInfoTab	: "Blaai Informasie deur",
+DlgAboutLicenseTab	: "Lesensie",
+DlgAboutVersion		: "weergawe",
+DlgAboutInfo		: "Vir meer informasie gaan na ",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr-ca.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr-ca.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr-ca.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Canadian French language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Masquer Outils",
+ToolbarExpand		: "Afficher Outils",
+
+// Toolbar Items and Context Menu
+Save				: "Sauvegarder",
+NewPage				: "Nouvelle page",
+Preview				: "Previsualiser",
+Cut					: "Couper",
+Copy				: "Copier",
+Paste				: "Coller",
+PasteText			: "Coller en tant que texte",
+PasteWord			: "Coller en tant que Word (formaté)",
+Print				: "Imprimer",
+SelectAll			: "Tout sélectionner",
+RemoveFormat		: "Supprimer le formatage",
+InsertLinkLbl		: "Lien",
+InsertLink			: "Insérer/modifier le lien",
+RemoveLink			: "Supprimer le lien",
+VisitLink			: "Suivre le lien",
+Anchor				: "Insérer/modifier l'ancre",
+AnchorDelete		: "Supprimer l'ancre",
+InsertImageLbl		: "Image",
+InsertImage			: "Insérer/modifier l'image",
+InsertFlashLbl		: "Animation Flash",
+InsertFlash			: "Insérer/modifier l'animation Flash",
+InsertTableLbl		: "Tableau",
+InsertTable			: "Insérer/modifier le tableau",
+InsertLineLbl		: "Séparateur",
+InsertLine			: "Insérer un séparateur",
+InsertSpecialCharLbl: "Caractères spéciaux",
+InsertSpecialChar	: "Insérer un caractère spécial",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Insérer un Emoticon",
+About				: "A propos de FCKeditor",
+Bold				: "Gras",
+Italic				: "Italique",
+Underline			: "Souligné",
+StrikeThrough		: "Barrer",
+Subscript			: "Indice",
+Superscript			: "Exposant",
+LeftJustify			: "Aligner à gauche",
+CenterJustify		: "Centrer",
+RightJustify		: "Aligner à Droite",
+BlockJustify		: "Texte justifié",
+DecreaseIndent		: "Diminuer le retrait",
+IncreaseIndent		: "Augmenter le retrait",
+Blockquote			: "Citation",
+CreateDiv			: "Créer Balise Div",
+EditDiv				: "Modifier Balise Div",
+DeleteDiv			: "Supprimer Balise Div",
+Undo				: "Annuler",
+Redo				: "Refaire",
+NumberedListLbl		: "Liste numérotée",
+NumberedList		: "Insérer/supprimer la liste numérotée",
+BulletedListLbl		: "Liste à puces",
+BulletedList		: "Insérer/supprimer la liste à puces",
+ShowTableBorders	: "Afficher les bordures du tableau",
+ShowDetails			: "Afficher les caractères invisibles",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Police",
+FontSize			: "Taille",
+TextColor			: "Couleur de caractère",
+BGColor				: "Couleur de fond",
+Source				: "Source",
+Find				: "Chercher",
+Replace				: "Remplacer",
+SpellCheck			: "Orthographe",
+UniversalKeyboard	: "Clavier universel",
+PageBreakLbl		: "Saut de page",
+PageBreak			: "Insérer un saut de page",
+
+Form			: "Formulaire",
+Checkbox		: "Case à cocher",
+RadioButton		: "Bouton radio",
+TextField		: "Champ texte",
+Textarea		: "Zone de texte",
+HiddenField		: "Champ caché",
+Button			: "Bouton",
+SelectionField	: "Champ de sélection",
+ImageButton		: "Bouton image",
+
+FitWindow		: "Edition pleine page",
+ShowBlocks		: "Afficher les blocs",
+
+// Context Menu
+EditLink			: "Modifier le lien",
+CellCM				: "Cellule",
+RowCM				: "Ligne",
+ColumnCM			: "Colonne",
+InsertRowAfter		: "Insérer une ligne après",
+InsertRowBefore		: "Insérer une ligne avant",
+DeleteRows			: "Supprimer des lignes",
+InsertColumnAfter	: "Insérer une colonne après",
+InsertColumnBefore	: "Insérer une colonne avant",
+DeleteColumns		: "Supprimer des colonnes",
+InsertCellAfter		: "Insérer une cellule après",
+InsertCellBefore	: "Insérer une cellule avant",
+DeleteCells			: "Supprimer des cellules",
+MergeCells			: "Fusionner les cellules",
+MergeRight			: "Fusionner à droite",
+MergeDown			: "Fusionner en bas",
+HorizontalSplitCell	: "Scinder la cellule horizontalement",
+VerticalSplitCell	: "Scinder la cellule verticalement",
+TableDelete			: "Supprimer le tableau",
+CellProperties		: "Propriétés de cellule",
+TableProperties		: "Propriétés du tableau",
+ImageProperties		: "Propriétés de l'image",
+FlashProperties		: "Propriétés de l'animation Flash",
+
+AnchorProp			: "Propriétés de l'ancre",
+ButtonProp			: "Propriétés du bouton",
+CheckboxProp		: "Propriétés de la case à cocher",
+HiddenFieldProp		: "Propriétés du champ caché",
+RadioButtonProp		: "Propriétés du bouton radio",
+ImageButtonProp		: "Propriétés du bouton image",
+TextFieldProp		: "Propriétés du champ texte",
+SelectionFieldProp	: "Propriétés de la liste/du menu",
+TextareaProp		: "Propriétés de la zone de texte",
+FormProp			: "Propriétés du formulaire",
+
+FontFormats			: "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Calcul XHTML. Veuillez patienter...",
+Done				: "Terminé",
+PasteWordConfirm	: "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
+NotCompatiblePaste	: "Cette commande nécessite Internet Explorer version 5.5 et plus. Souhaitez-vous coller sans nettoyage?",
+UnknownToolbarItem	: "Élément de barre d'outil inconnu \"%1\"",
+UnknownCommand		: "Nom de commande inconnu \"%1\"",
+NotImplemented		: "Commande indisponible",
+UnknownToolbarSet	: "La barre d'outils \"%1\" n'existe pas",
+NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
+BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
+DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuler",
+DlgBtnClose			: "Fermer",
+DlgBtnBrowseServer	: "Parcourir le serveur",
+DlgAdvancedTag		: "Avancée",
+DlgOpOther			: "<autre>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Veuillez saisir l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Par défaut>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Sens d'écriture",
+DlgGenLangDirLtr	: "De gauche à droite (LTR)",
+DlgGenLangDirRtl	: "De droite à gauche (RTL)",
+DlgGenLangCode		: "Code langue",
+DlgGenAccessKey		: "Équivalent clavier",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Ordre de tabulation",
+DlgGenLongDescr		: "URL de description longue",
+DlgGenClass			: "Classes de feuilles de style",
+DlgGenTitle			: "Titre",
+DlgGenContType		: "Type de contenu",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Encodage de caractère",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Propriétés de l'image",
+DlgImgInfoTab		: "Informations sur l'image",
+DlgImgBtnUpload		: "Envoyer sur le serveur",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Télécharger",
+DlgImgAlt			: "Texte de remplacement",
+DlgImgWidth			: "Largeur",
+DlgImgHeight		: "Hauteur",
+DlgImgLockRatio		: "Garder les proportions",
+DlgBtnResetSize		: "Taille originale",
+DlgImgBorder		: "Bordure",
+DlgImgHSpace		: "Espacement horizontal",
+DlgImgVSpace		: "Espacement vertical",
+DlgImgAlign			: "Alignement",
+DlgImgAlignLeft		: "Gauche",
+DlgImgAlignAbsBottom: "Abs Bas",
+DlgImgAlignAbsMiddle: "Abs Milieu",
+DlgImgAlignBaseline	: "Bas du texte",
+DlgImgAlignBottom	: "Bas",
+DlgImgAlignMiddle	: "Milieu",
+DlgImgAlignRight	: "Droite",
+DlgImgAlignTextTop	: "Haut du texte",
+DlgImgAlignTop		: "Haut",
+DlgImgPreview		: "Prévisualisation",
+DlgImgAlertUrl		: "Veuillez saisir l'URL de l'image",
+DlgImgLinkTab		: "Lien",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriétés de l'animation Flash",
+DlgFlashChkPlay		: "Lecture automatique",
+DlgFlashChkLoop		: "Boucle",
+DlgFlashChkMenu		: "Activer le menu Flash",
+DlgFlashScale		: "Affichage",
+DlgFlashScaleAll	: "Par défaut (tout montrer)",
+DlgFlashScaleNoBorder	: "Sans bordure",
+DlgFlashScaleFit	: "Ajuster aux dimensions",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Propriétés du lien",
+DlgLnkInfoTab		: "Informations sur le lien",
+DlgLnkTargetTab		: "Destination",
+
+DlgLnkType			: "Type de lien",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancre dans cette page",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocole",
+DlgLnkProtoOther	: "<autre>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sélectionner une ancre",
+DlgLnkAnchorByName	: "Par nom",
+DlgLnkAnchorById	: "Par id",
+DlgLnkNoAnchors		: "(Pas d'ancre disponible dans le document)",
+DlgLnkEMail			: "Adresse E-Mail",
+DlgLnkEMailSubject	: "Sujet du message",
+DlgLnkEMailBody		: "Corps du message",
+DlgLnkUpload		: "Télécharger",
+DlgLnkBtnUpload		: "Envoyer sur le serveur",
+
+DlgLnkTarget		: "Destination",
+DlgLnkTargetFrame	: "<Cadre>",
+DlgLnkTargetPopup	: "<fenêtre popup>",
+DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
+DlgLnkTargetParent	: "Fenêtre mère (_parent)",
+DlgLnkTargetSelf	: "Même fenêtre (_self)",
+DlgLnkTargetTop		: "Fenêtre supérieure (_top)",
+DlgLnkTargetFrameName	: "Nom du cadre de destination",
+DlgLnkPopWinName	: "Nom de la fenêtre popup",
+DlgLnkPopWinFeat	: "Caractéristiques de la fenêtre popup",
+DlgLnkPopResize		: "Taille modifiable",
+DlgLnkPopLocation	: "Barre d'adresses",
+DlgLnkPopMenu		: "Barre de menu",
+DlgLnkPopScroll		: "Barres de défilement",
+DlgLnkPopStatus		: "Barre d'état",
+DlgLnkPopToolbar	: "Barre d'outils",
+DlgLnkPopFullScrn	: "Plein écran (IE)",
+DlgLnkPopDependent	: "Dépendante (Netscape)",
+DlgLnkPopWidth		: "Largeur",
+DlgLnkPopHeight		: "Hauteur",
+DlgLnkPopLeft		: "Position à partir de la gauche",
+DlgLnkPopTop		: "Position à partir du haut",
+
+DlnLnkMsgNoUrl		: "Veuillez saisir l'URL",
+DlnLnkMsgNoEMail	: "Veuillez saisir l'adresse e-mail",
+DlnLnkMsgNoAnchor	: "Veuillez sélectionner une ancre",
+DlnLnkMsgInvPopName	: "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
+
+// Color Dialog
+DlgColorTitle		: "Sélectionner",
+DlgColorBtnClear	: "Effacer",
+DlgColorHighlight	: "Prévisualisation",
+DlgColorSelected	: "Sélectionné",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insérer un Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Insérer un caractère spécial",
+
+// Table Dialog
+DlgTableTitle		: "Propriétés du tableau",
+DlgTableRows		: "Lignes",
+DlgTableColumns		: "Colonnes",
+DlgTableBorder		: "Taille de la bordure",
+DlgTableAlign		: "Alignement",
+DlgTableAlignNotSet	: "<Par défaut>",
+DlgTableAlignLeft	: "Gauche",
+DlgTableAlignCenter	: "Centré",
+DlgTableAlignRight	: "Droite",
+DlgTableWidth		: "Largeur",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "pourcentage",
+DlgTableHeight		: "Hauteur",
+DlgTableCellSpace	: "Espacement",
+DlgTableCellPad		: "Contour",
+DlgTableCaption		: "Titre",
+DlgTableSummary		: "Résumé",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriétés de la cellule",
+DlgCellWidth		: "Largeur",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "pourcentage",
+DlgCellHeight		: "Hauteur",
+DlgCellWordWrap		: "Retour à la ligne",
+DlgCellWordWrapNotSet	: "<Par défaut>",
+DlgCellWordWrapYes	: "Oui",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Alignement horizontal",
+DlgCellHorAlignNotSet	: "<Par défaut>",
+DlgCellHorAlignLeft	: "Gauche",
+DlgCellHorAlignCenter	: "Centré",
+DlgCellHorAlignRight: "Droite",
+DlgCellVerAlign		: "Alignement vertical",
+DlgCellVerAlignNotSet	: "<Par défaut>",
+DlgCellVerAlignTop	: "Haut",
+DlgCellVerAlignMiddle	: "Milieu",
+DlgCellVerAlignBottom	: "Bas",
+DlgCellVerAlignBaseline	: "Bas du texte",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Lignes fusionnées",
+DlgCellCollSpan		: "Colonnes fusionnées",
+DlgCellBackColor	: "Couleur de fond",
+DlgCellBorderColor	: "Couleur de bordure",
+DlgCellBtnSelect	: "Sélectionner...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Chercher et Remplacer",
+
+// Find Dialog
+DlgFindTitle		: "Chercher",
+DlgFindFindBtn		: "Chercher",
+DlgFindNotFoundMsg	: "Le texte indiqué est introuvable.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Remplacer",
+DlgReplaceFindLbl		: "Rechercher:",
+DlgReplaceReplaceLbl	: "Remplacer par:",
+DlgReplaceCaseChk		: "Respecter la casse",
+DlgReplaceReplaceBtn	: "Remplacer",
+DlgReplaceReplAllBtn	: "Tout remplacer",
+DlgReplaceWordChk		: "Mot entier",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
+PasteErrorCopy	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
+
+PasteAsText		: "Coller comme texte",
+PasteFromWord	: "Coller à partir de Word",
+
+DlgPasteMsg2	: "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.",
+DlgPasteSec		: "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",
+DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
+DlgPasteRemoveStyles	: "Supprimer les styles",
+
+// Color Picker
+ColorAutomatic	: "Automatique",
+ColorMoreColors	: "Plus de couleurs...",
+
+// Document Properties
+DocProps		: "Propriétés du document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriétés de l'ancre",
+DlgAnchorName		: "Nom de l'ancre",
+DlgAnchorErrorName	: "Veuillez saisir le nom de l'ancre",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Pas dans le dictionnaire",
+DlgSpellChangeTo		: "Changer en",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer tout",
+DlgSpellBtnReplace		: "Remplacer",
+DlgSpellBtnReplaceAll	: "Remplacer tout",
+DlgSpellBtnUndo			: "Annuler",
+DlgSpellNoSuggestions	: "- Pas de suggestion -",
+DlgSpellProgress		: "Vérification d'orthographe en cours...",
+DlgSpellNoMispell		: "Vérification d'orthographe terminée: pas d'erreur trouvée",
+DlgSpellNoChanges		: "Vérification d'orthographe terminée: Pas de modifications",
+DlgSpellOneChange		: "Vérification d'orthographe terminée: Un mot modifié",
+DlgSpellManyChanges		: "Vérification d'orthographe terminée: %1 mots modifiés",
+
+IeSpellDownload			: "Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?",
+
+// Button Dialog
+DlgButtonText		: "Texte (Valeur)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Bouton",
+DlgButtonTypeSbm	: "Soumettre",
+DlgButtonTypeRst	: "Réinitialiser",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valeur",
+DlgCheckboxSelected	: "Sélectionné",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Méthode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valeur",
+DlgSelectSize		: "Taille",
+DlgSelectLines		: "lignes",
+DlgSelectChkMulti	: "Sélection multiple",
+DlgSelectOpAvail	: "Options disponibles",
+DlgSelectOpText		: "Texte",
+DlgSelectOpValue	: "Valeur",
+DlgSelectBtnAdd		: "Ajouter",
+DlgSelectBtnModify	: "Modifier",
+DlgSelectBtnUp		: "Monter",
+DlgSelectBtnDown	: "Descendre",
+DlgSelectBtnSetValue : "Valeur sélectionnée",
+DlgSelectBtnDelete	: "Supprimer",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Colonnes",
+DlgTextareaRows	: "Lignes",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valeur",
+DlgTextCharWidth	: "Largeur en caractères",
+DlgTextMaxChars		: "Nombre maximum de caractères",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Texte",
+DlgTextTypePass		: "Mot de passe",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valeur",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriétés de liste à puces",
+NumberedListProp	: "Propriétés de liste numérotée",
+DlgLstStart			: "Début",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disque",
+DlgLstTypeSquare	: "Carré",
+DlgLstTypeNumbers	: "Nombres (1, 2, 3)",
+DlgLstTypeLCase		: "Lettres minuscules (a, b, c)",
+DlgLstTypeUCase		: "Lettres majuscules (A, B, C)",
+DlgLstTypeSRoman	: "Chiffres romains minuscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Chiffres romains majuscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Général",
+DlgDocBackTab		: "Fond",
+DlgDocColorsTab		: "Couleurs et Marges",
+DlgDocMetaTab		: "Méta-Données",
+
+DlgDocPageTitle		: "Titre de la page",
+DlgDocLangDir		: "Sens d'écriture",
+DlgDocLangDirLTR	: "De la gauche vers la droite (LTR)",
+DlgDocLangDirRTL	: "De la droite vers la gauche (RTL)",
+DlgDocLangCode		: "Code langue",
+DlgDocCharSet		: "Encodage de caractère",
+DlgDocCharSetCE		: "Europe Centrale",
+DlgDocCharSetCT		: "Chinois Traditionnel (Big5)",
+DlgDocCharSetCR		: "Cyrillique",
+DlgDocCharSetGR		: "Grecque",
+DlgDocCharSetJP		: "Japonais",
+DlgDocCharSetKR		: "Coréen",
+DlgDocCharSetTR		: "Turcque",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Occidental",
+DlgDocCharSetOther	: "Autre encodage de caractère",
+
+DlgDocDocType		: "Type de document",
+DlgDocDocTypeOther	: "Autre type de document",
+DlgDocIncXHTML		: "Inclure les déclarations XHTML",
+DlgDocBgColor		: "Couleur de fond",
+DlgDocBgImage		: "Image de fond",
+DlgDocBgNoScroll	: "Image fixe sans défilement",
+DlgDocCText			: "Texte",
+DlgDocCLink			: "Lien",
+DlgDocCVisited		: "Lien visité",
+DlgDocCActive		: "Lien activé",
+DlgDocMargins		: "Marges",
+DlgDocMaTop			: "Haut",
+DlgDocMaLeft		: "Gauche",
+DlgDocMaRight		: "Droite",
+DlgDocMaBottom		: "Bas",
+DlgDocMeIndex		: "Mots-clés (séparés par des virgules)",
+DlgDocMeDescr		: "Description",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Prévisualisation",
+
+// Templates Dialog
+Templates			: "Modèles",
+DlgTemplatesTitle	: "Modèles de contenu",
+DlgTemplatesSelMsg	: "Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
+DlgTemplatesLoading	: "Chargement de la liste des modèles. Veuillez patienter...",
+DlgTemplatesNoTpl	: "(Aucun modèle disponible)",
+DlgTemplatesReplace	: "Remplacer tout le contenu actuel",
+
+// About Dialog
+DlgAboutAboutTab	: "Á propos de",
+DlgAboutBrowserInfoTab	: "Navigateur",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "Version",
+DlgAboutInfo		: "Pour plus d'informations, visiter",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Général",
+DlgDivAdvancedTab	: "Avancé",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Attribut Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nb.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nb.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nb.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Norwegian Bokmål language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul verktøylinje",
+ToolbarExpand		: "Vis verktøylinje",
+
+// Toolbar Items and Context Menu
+Save				: "Lagre",
+NewPage				: "Ny Side",
+Preview				: "Forhåndsvis",
+Cut					: "Klipp ut",
+Copy				: "Kopier",
+Paste				: "Lim inn",
+PasteText			: "Lim inn som ren tekst",
+PasteWord			: "Lim inn fra Word",
+Print				: "Skriv ut",
+SelectAll			: "Merk alt",
+RemoveFormat		: "Fjern format",
+InsertLinkLbl		: "Lenke",
+InsertLink			: "Sett inn/Rediger lenke",
+RemoveLink			: "Fjern lenke",
+VisitLink			: "Åpne lenke",
+Anchor				: "Sett inn/Rediger anker",
+AnchorDelete		: "Fjern anker",
+InsertImageLbl		: "Bilde",
+InsertImage			: "Sett inn/Rediger bilde",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sett inn/Rediger Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Sett inn/Rediger tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Sett inn horisontal linje",
+InsertSpecialCharLbl: "Spesielt tegn",
+InsertSpecialChar	: "Sett inn spesielt tegn",
+InsertSmileyLbl		: "Smil",
+InsertSmiley		: "Sett inn smil",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understrek",
+StrikeThrough		: "Gjennomstrek",
+Subscript			: "Senket skrift",
+Superscript			: "Hevet skrift",
+LeftJustify			: "Venstrejuster",
+CenterJustify		: "Midtjuster",
+RightJustify		: "Høyrejuster",
+BlockJustify		: "Blokkjuster",
+DecreaseIndent		: "Senk nivå",
+IncreaseIndent		: "Øk nivå",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Angre",
+Redo				: "Gjør om",
+NumberedListLbl		: "Nummerert liste",
+NumberedList		: "Sett inn/Fjern nummerert liste",
+BulletedListLbl		: "Uordnet liste",
+BulletedList		: "Sett inn/Fjern uordnet liste",
+ShowTableBorders	: "Vis tabellrammer",
+ShowDetails			: "Vis detaljer",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Skrift",
+FontSize			: "Størrelse",
+TextColor			: "Tekstfarge",
+BGColor				: "Bakgrunnsfarge",
+Source				: "Kilde",
+Find				: "Søk",
+Replace				: "Erstatt",
+SpellCheck			: "Stavekontroll",
+UniversalKeyboard	: "Universelt tastatur",
+PageBreakLbl		: "Sideskift",
+PageBreak			: "Sett inn sideskift",
+
+Form			: "Skjema",
+Checkbox		: "Avmerkingsboks",
+RadioButton		: "Alternativknapp",
+TextField		: "Tekstboks",
+Textarea		: "Tekstområde",
+HiddenField		: "Skjult felt",
+Button			: "Knapp",
+SelectionField	: "Rullegardinliste",
+ImageButton		: "Bildeknapp",
+
+FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Rediger lenke",
+CellCM				: "Celle",
+RowCM				: "Rader",
+ColumnCM			: "Kolonne",
+InsertRowAfter		: "Sett inn rad etter",
+InsertRowBefore		: "Sett inn rad før",
+DeleteRows			: "Slett rader",
+InsertColumnAfter	: "Sett inn kolonne etter",
+InsertColumnBefore	: "Sett inn kolonne før",
+DeleteColumns		: "Slett kolonner",
+InsertCellAfter		: "Sett inn celle etter",
+InsertCellBefore	: "Sett inn celle før",
+DeleteCells			: "Slett celler",
+MergeCells			: "Slå sammen celler",
+MergeRight			: "Slå sammen høyre",
+MergeDown			: "Slå sammen ned",
+HorizontalSplitCell	: "Del celle horisontalt",
+VerticalSplitCell	: "Del celle vertikalt",
+TableDelete			: "Slett tabell",
+CellProperties		: "Egenskaper for celle",
+TableProperties		: "Egenskaper for tabell",
+ImageProperties		: "Egenskaper for bilde",
+FlashProperties		: "Egenskaper for Flash-objekt",
+
+AnchorProp			: "Egenskaper for anker",
+ButtonProp			: "Egenskaper for knapp",
+CheckboxProp		: "Egenskaper for avmerkingsboks",
+HiddenFieldProp		: "Egenskaper for skjult felt",
+RadioButtonProp		: "Egenskaper for alternativknapp",
+ImageButtonProp		: "Egenskaper for bildeknapp",
+TextFieldProp		: "Egenskaper for tekstfelt",
+SelectionFieldProp	: "Egenskaper for rullegardinliste",
+TextareaProp		: "Egenskaper for tekstområde",
+FormProp			: "Egenskaper for skjema",
+
+FontFormats			: "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Lager XHTML. Vennligst vent...",
+Done				: "Ferdig",
+PasteWordConfirm	: "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
+NotCompatiblePaste	: "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
+UnknownToolbarItem	: "Ukjent menyvalg \"%1\"",
+UnknownCommand		: "Ukjent kommando \"%1\"",
+NotImplemented		: "Kommando ikke implimentert",
+UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
+NoActiveX			: "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
+VisitLinkBlocked	: "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Lukk",
+DlgBtnBrowseServer	: "Bla igjennom server",
+DlgAdvancedTag		: "Avansert",
+DlgOpOther			: "<Annet>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Vennligst skriv inn URL-en",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ikke satt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkretning",
+DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
+DlgGenLangDirRtl	: "Høyre til venstre (HTV)",
+DlgGenLangCode		: "Språkkode",
+DlgGenAccessKey		: "Aksessknapp",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Utvidet beskrivelse",
+DlgGenClass			: "Stilarkklasser",
+DlgGenTitle			: "Tittel",
+DlgGenContType		: "Type",
+DlgGenLinkCharset	: "Lenket språkkart",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Bildeegenskaper",
+DlgImgInfoTab		: "Bildeinformasjon",
+DlgImgBtnUpload		: "Send det til serveren",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Last opp",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Høyde",
+DlgImgLockRatio		: "Lås forhold",
+DlgBtnResetSize		: "Tilbakestill størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMarg",
+DlgImgVSpace		: "VMarg",
+DlgImgAlign			: "Juster",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Abs bunn",
+DlgImgAlignAbsMiddle: "Abs midten",
+DlgImgAlignBaseline	: "Bunnlinje",
+DlgImgAlignBottom	: "Bunn",
+DlgImgAlignMiddle	: "Midten",
+DlgImgAlignRight	: "Høyre",
+DlgImgAlignTextTop	: "Tekst topp",
+DlgImgAlignTop		: "Topp",
+DlgImgPreview		: "Forhåndsvis",
+DlgImgAlertUrl		: "Vennligst skriv bilde-urlen",
+DlgImgLinkTab		: "Lenke",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash-egenskaper",
+DlgFlashChkPlay		: "Autospill",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Slå på Flash-meny",
+DlgFlashScale		: "Skaler",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Skaler til å passe",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Lenke",
+DlgLnkInfoTab		: "Lenkeinfo",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Lenketype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Lenke til anker i teksten",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<annet>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Velg et anker",
+DlgLnkAnchorByName	: "Anker etter navn",
+DlgLnkAnchorById	: "Element etter ID",
+DlgLnkNoAnchors		: "(Ingen anker i dokumentet)",
+DlgLnkEMail			: "E-postadresse",
+DlgLnkEMailSubject	: "Meldingsemne",
+DlgLnkEMailBody		: "Melding",
+DlgLnkUpload		: "Last opp",
+DlgLnkBtnUpload		: "Send til server",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindu>",
+DlgLnkTargetBlank	: "Nytt vindu (_blank)",
+DlgLnkTargetParent	: "Foreldrevindu (_parent)",
+DlgLnkTargetSelf	: "Samme vindu (_self)",
+DlgLnkTargetTop		: "Hele vindu (_top)",
+DlgLnkTargetFrameName	: "Målramme",
+DlgLnkPopWinName	: "Navn på popup-vindus",
+DlgLnkPopWinFeat	: "Egenskaper for popup-vindu",
+DlgLnkPopResize		: "Endre størrelse",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menylinje",
+DlgLnkPopScroll		: "Scrollbar",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Verktøylinje",
+DlgLnkPopFullScrn	: "Full skjerm (IE)",
+DlgLnkPopDependent	: "Avhenging (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Høyde",
+DlgLnkPopLeft		: "Venstre posisjon",
+DlgLnkPopTop		: "Topp-posisjon",
+
+DlnLnkMsgNoUrl		: "Vennligst skriv inn lenkens url",
+DlnLnkMsgNoEMail	: "Vennligst skriv inn e-postadressen",
+DlnLnkMsgNoAnchor	: "Vennligst velg et anker",
+DlnLnkMsgInvPopName	: "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
+
+// Color Dialog
+DlgColorTitle		: "Velg farge",
+DlgColorBtnClear	: "Tøm",
+DlgColorHighlight	: "Marker",
+DlgColorSelected	: "Valgt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sett inn smil",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Velg spesielt tegn",
+
+// Table Dialog
+DlgTableTitle		: "Egenskaper for tabell",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammestørrelse",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<Ikke satt>",
+DlgTableAlignLeft	: "Venstre",
+DlgTableAlignCenter	: "Midtjuster",
+DlgTableAlignRight	: "Høyre",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "piksler",
+DlgTableWidthPc		: "prosent",
+DlgTableHeight		: "Høyde",
+DlgTableCellSpace	: "Cellemarg",
+DlgTableCellPad		: "Cellepolstring",
+DlgTableCaption		: "Tittel",
+DlgTableSummary		: "Sammendrag",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Celleegenskaper",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "piksler",
+DlgCellWidthPc		: "prosent",
+DlgCellHeight		: "Høyde",
+DlgCellWordWrap		: "Tekstbrytning",
+DlgCellWordWrapNotSet	: "<Ikke satt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nei",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ikke satt>",
+DlgCellHorAlignLeft	: "Venstre",
+DlgCellHorAlignCenter	: "Midtjuster",
+DlgCellHorAlignRight: "Høyre",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ikke satt>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Midten",
+DlgCellVerAlignBottom	: "Bunn",
+DlgCellVerAlignBaseline	: "Bunnlinje",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Radspenn",
+DlgCellCollSpan		: "Kolonnespenn",
+DlgCellBackColor	: "Bakgrunnsfarge",
+DlgCellBorderColor	: "Rammefarge",
+DlgCellBtnSelect	: "Velg...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Søk og erstatt",
+
+// Find Dialog
+DlgFindTitle		: "Søk",
+DlgFindFindBtn		: "Søk",
+DlgFindNotFoundMsg	: "Fant ikke søketeksten.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstatt",
+DlgReplaceFindLbl		: "Søk etter:",
+DlgReplaceReplaceLbl	: "Erstatt med:",
+DlgReplaceCaseChk		: "Skill mellom store og små bokstaver",
+DlgReplaceReplaceBtn	: "Erstatt",
+DlgReplaceReplAllBtn	: "Erstatt alle",
+DlgReplaceWordChk		: "Bare hele ord",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
+PasteErrorCopy	: "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
+
+PasteAsText		: "Lim inn som ren tekst",
+PasteFromWord	: "Lim inn fra Word",
+
+DlgPasteMsg2	: "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
+DlgPasteIgnoreFont		: "Fjern skrifttyper",
+DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankeregenskaper",
+DlgAnchorName		: "Ankernavn",
+DlgAnchorErrorName	: "Vennligst skriv inn ankernavnet",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordboken",
+DlgSpellChangeTo		: "Endre til",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstatt",
+DlgSpellBtnReplaceAll	: "Erstatt alle",
+DlgSpellBtnUndo			: "Angre",
+DlgSpellNoSuggestions	: "- Ingen forslag -",
+DlgSpellProgress		: "Stavekontroll pågår...",
+DlgSpellNoMispell		: "Stavekontroll fullført: ingen feilstavinger funnet",
+DlgSpellNoChanges		: "Stavekontroll fullført: ingen ord endret",
+DlgSpellOneChange		: "Stavekontroll fullført: Ett ord endret",
+DlgSpellManyChanges		: "Stavekontroll fullført: %1 ord endret",
+
+IeSpellDownload			: "Stavekontroll er ikke installert. Vil du laste den ned nå?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (verdi)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Knapp",
+DlgButtonTypeSbm	: "Send",
+DlgButtonTypeRst	: "Nullstill",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Verdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Verdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillat flervalg",
+DlgSelectOpAvail	: "Tilgjenglige alternativer",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Verdi",
+DlgSelectBtnAdd		: "Legg til",
+DlgSelectBtnModify	: "Endre",
+DlgSelectBtnUp		: "Opp",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sett som valgt",
+DlgSelectBtnDelete	: "Slett",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Verdi",
+DlgTextCharWidth	: "Tegnbredde",
+DlgTextMaxChars		: "Maks antall tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Passord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Verdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaper for uordnet liste",
+NumberedListProp	: "Egenskaper for ordnet liste",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Sirkel",
+DlgLstTypeDisc		: "Hel sirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Numre (1, 2, 3)",
+DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bokstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romerske tall (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romerske tall (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Bakgrunn",
+DlgDocColorsTab		: "Farger og marginer",
+DlgDocMetaTab		: "Meta-data",
+
+DlgDocPageTitle		: "Sidetittel",
+DlgDocLangDir		: "Språkretning",
+DlgDocLangDirLTR	: "Venstre til høyre (LTR)",
+DlgDocLangDirRTL	: "Høyre til venstre (RTL)",
+DlgDocLangCode		: "Språkkode",
+DlgDocCharSet		: "Tegnsett",
+DlgDocCharSetCE		: "Sentraleuropeisk",
+DlgDocCharSetCT		: "Tradisonell kinesisk(Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Gresk",
+DlgDocCharSetJP		: "Japansk",
+DlgDocCharSetKR		: "Koreansk",
+DlgDocCharSetTR		: "Tyrkisk",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Vesteuropeisk",
+DlgDocCharSetOther	: "Annet tegnsett",
+
+DlgDocDocType		: "Dokumenttype header",
+DlgDocDocTypeOther	: "Annet dokumenttype header",
+DlgDocIncXHTML		: "Inkluder XHTML-deklarasjon",
+DlgDocBgColor		: "Bakgrunnsfarge",
+DlgDocBgImage		: "URL for bakgrunnsbilde",
+DlgDocBgNoScroll	: "Lås bakgrunnsbilde",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besøkt lenke",
+DlgDocCActive		: "Aktiv lenke",
+DlgDocMargins		: "Sidemargin",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Høyre",
+DlgDocMaBottom		: "Bunn",
+DlgDocMeIndex		: "Dokument nøkkelord (kommaseparert)",
+DlgDocMeDescr		: "Dokumentbeskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Kopirett",
+DlgDocPreview		: "Forhåndsvising",
+
+// Templates Dialog
+Templates			: "Maler",
+DlgTemplatesTitle	: "Innholdsmaler",
+DlgTemplatesSelMsg	: "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
+DlgTemplatesLoading	: "Laster malliste. Vennligst vent...",
+DlgTemplatesNoTpl	: "(Ingen maler definert)",
+DlgTemplatesReplace	: "Erstatt faktisk innold",
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Nettleserinfo",
+DlgAboutLicenseTab	: "Lisens",
+DlgAboutVersion		: "versjon",
+DlgAboutInfo		: "For mer informasjon, se",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Avansert",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bn.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bn.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bn.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Bengali/Bangla language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "টূলবার গুটিয়ে দাও",
+ToolbarExpand		: "টূলবার ছড়িয়ে দাও",
+
+// Toolbar Items and Context Menu
+Save				: "সংরক্ষন কর",
+NewPage				: "নতুন পেজ",
+Preview				: "প্রিভিউ",
+Cut					: "কাট",
+Copy				: "কপি",
+Paste				: "পেস্ট",
+PasteText			: "পেস্ট (সাদা টেক্সট)",
+PasteWord			: "পেস্ট (শব্দ)",
+Print				: "প্রিন্ট",
+SelectAll			: "সব সিলেক্ট কর",
+RemoveFormat		: "ফরমেট সরাও",
+InsertLinkLbl		: "লিংকের যুক্ত করার লেবেল",
+InsertLink			: "লিংক যুক্ত কর",
+RemoveLink			: "লিংক সরাও",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "নোঙ্গর",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "ছবির লেবেল যুক্ত কর",
+InsertImage			: "ছবি যুক্ত কর",
+InsertFlashLbl		: "ফ্লাশ লেবেল যুক্ত কর",
+InsertFlash			: "ফ্লাশ যুক্ত কর",
+InsertTableLbl		: "টেবিলের লেবেল যুক্ত কর",
+InsertTable			: "টেবিল যুক্ত কর",
+InsertLineLbl		: "রেখা যুক্ত কর",
+InsertLine			: "রেখা যুক্ত কর",
+InsertSpecialCharLbl: "বিশেষ অক্ষরের লেবেল যুক্ত কর",
+InsertSpecialChar	: "বিশেষ অক্ষর যুক্ত কর",
+InsertSmileyLbl		: "স্মাইলী",
+InsertSmiley		: "স্মাইলী যুক্ত কর",
+About				: "FCKeditor কে বানিয়েছে",
+Bold				: "বোল্ড",
+Italic				: "ইটালিক",
+Underline			: "আন্ডারলাইন",
+StrikeThrough		: "স্ট্রাইক থ্রু",
+Subscript			: "অধোলেখ",
+Superscript			: "অভিলেখ",
+LeftJustify			: "বা দিকে ঘেঁষা",
+CenterJustify		: "মাঝ বরাবর ঘেষা",
+RightJustify		: "ডান দিকে ঘেঁষা",
+BlockJustify		: "ব্লক জাস্টিফাই",
+DecreaseIndent		: "ইনডেন্ট কমাও",
+IncreaseIndent		: "ইনডেন্ট বাড়াও",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "আনডু",
+Redo				: "রি-ডু",
+NumberedListLbl		: "সাংখ্যিক লিস্টের লেবেল",
+NumberedList		: "সাংখ্যিক লিস্ট",
+BulletedListLbl		: "বুলেট লিস্ট লেবেল",
+BulletedList		: "বুলেটেড লিস্ট",
+ShowTableBorders	: "টেবিল বর্ডার",
+ShowDetails			: "সবটুকু দেখাও",
+Style				: "স্টাইল",
+FontFormat			: "ফন্ট ফরমেট",
+Font				: "ফন্ট",
+FontSize			: "সাইজ",
+TextColor			: "টেক্স্ট রং",
+BGColor				: "বেকগ্রাউন্ড রং",
+Source				: "সোর্স",
+Find				: "খোজো",
+Replace				: "রিপ্লেস",
+SpellCheck			: "বানান চেক",
+UniversalKeyboard	: "সার্বজনীন কিবোর্ড",
+PageBreakLbl		: "পেজ ব্রেক লেবেল",
+PageBreak			: "পেজ ব্রেক",
+
+Form			: "ফর্ম",
+Checkbox		: "চেক বাক্স",
+RadioButton		: "রেডিও বাটন",
+TextField		: "টেক্সট ফীল্ড",
+Textarea		: "টেক্সট এরিয়া",
+HiddenField		: "গুপ্ত ফীল্ড",
+Button			: "বাটন",
+SelectionField	: "বাছাই ফীল্ড",
+ImageButton		: "ছবির বাটন",
+
+FitWindow		: "উইন্ডো ফিট কর",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "লিংক সম্পাদন",
+CellCM				: "সেল",
+RowCM				: "রো",
+ColumnCM			: "কলাম",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "রো মুছে দাও",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "কলাম মুছে দাও",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "সেল মুছে দাও",
+MergeCells			: "সেল জোড়া দাও",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "টেবিল ডিলীট কর",
+CellProperties		: "সেলের প্রোপার্টিজ",
+TableProperties		: "টেবিল প্রোপার্টি",
+ImageProperties		: "ছবি প্রোপার্টি",
+FlashProperties		: "ফ্লাশ প্রোপার্টি",
+
+AnchorProp			: "নোঙর প্রোপার্টি",
+ButtonProp			: "বাটন প্রোপার্টি",
+CheckboxProp		: "চেক বক্স প্রোপার্টি",
+HiddenFieldProp		: "গুপ্ত ফীল্ড প্রোপার্টি",
+RadioButtonProp		: "রেডিও বাটন প্রোপার্টি",
+ImageButtonProp		: "ছবি বাটন প্রোপার্টি",
+TextFieldProp		: "টেক্সট ফীল্ড প্রোপার্টি",
+SelectionFieldProp	: "বাছাই ফীল্ড প্রোপার্টি",
+TextareaProp		: "টেক্সট এরিয়া প্রোপার্টি",
+FormProp			: "ফর্ম প্রোপার্টি",
+
+FontFormats			: "সাধারণ;ফর্মেটেড;ঠিকানা;শীর্ষক ১;শীর্ষক ২;শীর্ষক ৩;শীর্ষক ৪;শীর্ষক ৫;শীর্ষক ৬;শীর্ষক (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML প্রসেস করা হচ্ছে",
+Done				: "শেষ হয়েছে",
+PasteWordConfirm	: "যে টেকস্টটি আপনি পেস্ট করতে চাচ্ছেন মনে হচ্ছে সেটি ওয়ার্ড থেকে কপি করা। আপনি কি পেস্ট করার আগে একে পরিষ্কার করতে চান?",
+NotCompatiblePaste	: "এই কমান্ডটি শুধুমাত্র ইন্টারনেট এক্সপ্লোরার ৫.০ বা তার পরের ভার্সনে পাওয়া সম্ভব। আপনি কি পরিষ্কার না করেই পেস্ট করতে চান?",
+UnknownToolbarItem	: "অজানা টুলবার আইটেম \"%1\"",
+UnknownCommand		: "অজানা কমান্ড \"%1\"",
+NotImplemented		: "কমান্ড ইমপ্লিমেন্ট করা হয়নি",
+UnknownToolbarSet	: "টুলবার সেট \"%1\" এর অস্তিত্ব নেই",
+NoActiveX			: "আপনার ব্রাউজারের সুরক্ষা সেটিংস কারনে এডিটরের কিছু ফিচার পাওয়া নাও যেতে পারে। আপনাকে অবশ্যই \"Run ActiveX controls and plug-ins\" এনাবেল করে নিতে হবে। আপনি ভুলভ্রান্তি কিছু কিছু ফিচারের অনুপস্থিতি উপলব্ধি করতে পারেন।",
+BrowseServerBlocked : "রিসোর্স ব্রাউজার খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
+DialogBlocked		: "ডায়ালগ ইউন্ডো খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ওকে",
+DlgBtnCancel		: "বাতিল",
+DlgBtnClose			: "বন্ধ কর",
+DlgBtnBrowseServer	: "ব্রাউজ সার্ভার",
+DlgAdvancedTag		: "এডভান্সড",
+DlgOpOther			: "<অন্য>",
+DlgInfoTab			: "তথ্য",
+DlgAlertUrl			: "দয়া করে URL যুক্ত করুন",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<সেট নেই>",
+DlgGenId			: "আইডি",
+DlgGenLangDir		: "ভাষা লেখার দিক",
+DlgGenLangDirLtr	: "বাম থেকে ডান (LTR)",
+DlgGenLangDirRtl	: "ডান থেকে বাম (RTL)",
+DlgGenLangCode		: "ভাষা কোড",
+DlgGenAccessKey		: "এক্সেস কী",
+DlgGenName			: "নাম",
+DlgGenTabIndex		: "ট্যাব ইন্ডেক্স",
+DlgGenLongDescr		: "URL এর লম্বা বর্ণনা",
+DlgGenClass			: "স্টাইল-শীট ক্লাস",
+DlgGenTitle			: "পরামর্শ শীর্ষক",
+DlgGenContType		: "পরামর্শ কন্টেন্টের প্রকার",
+DlgGenLinkCharset	: "লিংক রিসোর্স ক্যারেক্টর সেট",
+DlgGenStyle			: "স্টাইল",
+
+// Image Dialog
+DlgImgTitle			: "ছবির প্রোপার্টি",
+DlgImgInfoTab		: "ছবির তথ্য",
+DlgImgBtnUpload		: "ইহাকে সার্ভারে প্রেরন কর",
+DlgImgURL			: "URL",
+DlgImgUpload		: "আপলোড",
+DlgImgAlt			: "বিকল্প টেক্সট",
+DlgImgWidth			: "প্রস্থ",
+DlgImgHeight		: "দৈর্ঘ্য",
+DlgImgLockRatio		: "অনুপাত লক কর",
+DlgBtnResetSize		: "সাইজ পূর্বাবস্থায় ফিরিয়ে দাও",
+DlgImgBorder		: "বর্ডার",
+DlgImgHSpace		: "হরাইজন্টাল স্পেস",
+DlgImgVSpace		: "ভার্টিকেল স্পেস",
+DlgImgAlign			: "এলাইন",
+DlgImgAlignLeft		: "বামে",
+DlgImgAlignAbsBottom: "Abs নীচে",
+DlgImgAlignAbsMiddle: "Abs উপর",
+DlgImgAlignBaseline	: "মূল রেখা",
+DlgImgAlignBottom	: "নীচে",
+DlgImgAlignMiddle	: "মধ্য",
+DlgImgAlignRight	: "ডানে",
+DlgImgAlignTextTop	: "টেক্সট উপর",
+DlgImgAlignTop		: "উপর",
+DlgImgPreview		: "প্রীভিউ",
+DlgImgAlertUrl		: "অনুগ্রহক করে ছবির URL টাইপ করুন",
+DlgImgLinkTab		: "লিংক",
+
+// Flash Dialog
+DlgFlashTitle		: "ফ্ল্যাশ প্রোপার্টি",
+DlgFlashChkPlay		: "অটো প্লে",
+DlgFlashChkLoop		: "লূপ",
+DlgFlashChkMenu		: "ফ্ল্যাশ মেনু এনাবল কর",
+DlgFlashScale		: "স্কেল",
+DlgFlashScaleAll	: "সব দেখাও",
+DlgFlashScaleNoBorder	: "কোনো বর্ডার নেই",
+DlgFlashScaleFit	: "নিখুঁত ফিট",
+
+// Link Dialog
+DlgLnkWindowTitle	: "লিংক",
+DlgLnkInfoTab		: "লিংক তথ্য",
+DlgLnkTargetTab		: "টার্গেট",
+
+DlgLnkType			: "লিংক প্রকার",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "এই পেজে নোঙর কর",
+DlgLnkTypeEMail		: "ইমেইল",
+DlgLnkProto			: "প্রোটোকল",
+DlgLnkProtoOther	: "<অন্য>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "নোঙর বাছাই",
+DlgLnkAnchorByName	: "নোঙরের নাম দিয়ে",
+DlgLnkAnchorById	: "নোঙরের আইডি দিয়ে",
+DlgLnkNoAnchors		: "(No anchors available in the document)",	//MISSING
+DlgLnkEMail			: "ইমেইল ঠিকানা",
+DlgLnkEMailSubject	: "মেসেজের বিষয়",
+DlgLnkEMailBody		: "মেসেজের দেহ",
+DlgLnkUpload		: "আপলোড",
+DlgLnkBtnUpload		: "একে সার্ভারে পাঠাও",
+
+DlgLnkTarget		: "টার্গেট",
+DlgLnkTargetFrame	: "<ফ্রেম>",
+DlgLnkTargetPopup	: "<পপআপ উইন্ডো>",
+DlgLnkTargetBlank	: "নতুন উইন্ডো (_blank)",
+DlgLnkTargetParent	: "মূল উইন্ডো (_parent)",
+DlgLnkTargetSelf	: "এই উইন্ডো (_self)",
+DlgLnkTargetTop		: "শীর্ষ উইন্ডো (_top)",
+DlgLnkTargetFrameName	: "টার্গেট ফ্রেমের নাম",
+DlgLnkPopWinName	: "পপআপ উইন্ডোর নাম",
+DlgLnkPopWinFeat	: "পপআপ উইন্ডো ফীচার সমূহ",
+DlgLnkPopResize		: "রিসাইজ করা সম্ভব",
+DlgLnkPopLocation	: "লোকেশন বার",
+DlgLnkPopMenu		: "মেন্যু বার",
+DlgLnkPopScroll		: "স্ক্রল বার",
+DlgLnkPopStatus		: "স্ট্যাটাস বার",
+DlgLnkPopToolbar	: "টুল বার",
+DlgLnkPopFullScrn	: "পূর্ণ পর্দা জুড়ে (IE)",
+DlgLnkPopDependent	: "ডিপেন্ডেন্ট (Netscape)",
+DlgLnkPopWidth		: "প্রস্থ",
+DlgLnkPopHeight		: "দৈর্ঘ্য",
+DlgLnkPopLeft		: "বামের পজিশন",
+DlgLnkPopTop		: "ডানের পজিশন",
+
+DlnLnkMsgNoUrl		: "অনুগ্রহ করে URL লিংক টাইপ করুন",
+DlnLnkMsgNoEMail	: "অনুগ্রহ করে ইমেইল এড্রেস টাইপ করুন",
+DlnLnkMsgNoAnchor	: "অনুগ্রহ করে নোঙর বাছাই করুন",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "রং বাছাই কর",
+DlgColorBtnClear	: "পরিষ্কার কর",
+DlgColorHighlight	: "হাইলাইট",
+DlgColorSelected	: "সিলেক্টেড",
+
+// Smiley Dialog
+DlgSmileyTitle		: "স্মাইলী যুক্ত কর",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "বিশেষ ক্যারেক্টার বাছাই কর",
+
+// Table Dialog
+DlgTableTitle		: "টেবিল প্রোপার্টি",
+DlgTableRows		: "রো",
+DlgTableColumns		: "কলাম",
+DlgTableBorder		: "বর্ডার সাইজ",
+DlgTableAlign		: "এলাইনমেন্ট",
+DlgTableAlignNotSet	: "<সেট নেই>",
+DlgTableAlignLeft	: "বামে",
+DlgTableAlignCenter	: "মাঝখানে",
+DlgTableAlignRight	: "ডানে",
+DlgTableWidth		: "প্রস্থ",
+DlgTableWidthPx		: "পিক্সেল",
+DlgTableWidthPc		: "শতকরা",
+DlgTableHeight		: "দৈর্ঘ্য",
+DlgTableCellSpace	: "সেল স্পেস",
+DlgTableCellPad		: "সেল প্যাডিং",
+DlgTableCaption		: "শীর্ষক",
+DlgTableSummary		: "সারাংশ",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "সেল প্রোপার্টি",
+DlgCellWidth		: "প্রস্থ",
+DlgCellWidthPx		: "পিক্সেল",
+DlgCellWidthPc		: "শতকরা",
+DlgCellHeight		: "দৈর্ঘ্য",
+DlgCellWordWrap		: "ওয়ার্ড রেপ",
+DlgCellWordWrapNotSet	: "<সেট নেই>",
+DlgCellWordWrapYes	: "হাঁ",
+DlgCellWordWrapNo	: "না",
+DlgCellHorAlign		: "হরাইজন্টাল এলাইনমেন্ট",
+DlgCellHorAlignNotSet	: "<সেট নেই>",
+DlgCellHorAlignLeft	: "বামে",
+DlgCellHorAlignCenter	: "মাঝখানে",
+DlgCellHorAlignRight: "ডানে",
+DlgCellVerAlign		: "ভার্টিক্যাল এলাইনমেন্ট",
+DlgCellVerAlignNotSet	: "<সেট নেই>",
+DlgCellVerAlignTop	: "উপর",
+DlgCellVerAlignMiddle	: "মধ্য",
+DlgCellVerAlignBottom	: "নীচে",
+DlgCellVerAlignBaseline	: "মূলরেখা",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "রো স্প্যান",
+DlgCellCollSpan		: "কলাম স্প্যান",
+DlgCellBackColor	: "ব্যাকগ্রাউন্ড রং",
+DlgCellBorderColor	: "বর্ডারের রং",
+DlgCellBtnSelect	: "বাছাই কর",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "খোঁজো",
+DlgFindFindBtn		: "খোঁজো",
+DlgFindNotFoundMsg	: "আপনার উল্লেখিত টেকস্ট পাওয়া যায়নি",
+
+// Replace Dialog
+DlgReplaceTitle			: "বদলে দাও",
+DlgReplaceFindLbl		: "যা খুঁজতে হবে:",
+DlgReplaceReplaceLbl	: "যার সাথে বদলাতে হবে:",
+DlgReplaceCaseChk		: "কেস মিলাও",
+DlgReplaceReplaceBtn	: "বদলে দাও",
+DlgReplaceReplAllBtn	: "সব বদলে দাও",
+DlgReplaceWordChk		: "পুরা শব্দ মেলাও",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।",
+PasteErrorCopy	: "আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।",
+
+PasteAsText		: "সাদা টেক্সট হিসেবে পেস্ট কর",
+PasteFromWord	: "ওয়ার্ড থেকে পেস্ট কর",
+
+DlgPasteMsg2	: "অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (<STRONG>Ctrl+V</STRONG>) পেস্ট করুন এবং <STRONG>OK</STRONG> চাপ দিন",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "ফন্ট ফেস ডেফিনেশন ইগনোর করুন",
+DlgPasteRemoveStyles	: "স্টাইল ডেফিনেশন সরিয়ে দিন",
+
+// Color Picker
+ColorAutomatic	: "অটোমেটিক",
+ColorMoreColors	: "আরও রং...",
+
+// Document Properties
+DocProps		: "ডক্যুমেন্ট প্রোপার্টি",
+
+// Anchor Dialog
+DlgAnchorTitle		: "নোঙরের প্রোপার্টি",
+DlgAnchorName		: "নোঙরের নাম",
+DlgAnchorErrorName	: "নোঙরের নাম টাইপ করুন",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "শব্দকোষে নেই",
+DlgSpellChangeTo		: "এতে বদলাও",
+DlgSpellBtnIgnore		: "ইগনোর কর",
+DlgSpellBtnIgnoreAll	: "সব ইগনোর কর",
+DlgSpellBtnReplace		: "বদলে দাও",
+DlgSpellBtnReplaceAll	: "সব বদলে দাও",
+DlgSpellBtnUndo			: "আন্ডু",
+DlgSpellNoSuggestions	: "- কোন সাজেশন নেই -",
+DlgSpellProgress		: "বানান পরীক্ষা চলছে...",
+DlgSpellNoMispell		: "বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি",
+DlgSpellNoChanges		: "বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি",
+DlgSpellOneChange		: "বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে",
+DlgSpellManyChanges		: "বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে",
+
+IeSpellDownload			: "বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?",
+
+// Button Dialog
+DlgButtonText		: "টেক্সট (ভ্যালু)",
+DlgButtonType		: "প্রকার",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "নাম",
+DlgCheckboxValue	: "ভ্যালু",
+DlgCheckboxSelected	: "সিলেক্টেড",
+
+// Form Dialog
+DlgFormName		: "নাম",
+DlgFormAction	: "একশ্যন",
+DlgFormMethod	: "পদ্ধতি",
+
+// Select Field Dialog
+DlgSelectName		: "নাম",
+DlgSelectValue		: "ভ্যালু",
+DlgSelectSize		: "সাইজ",
+DlgSelectLines		: "লাইন সমূহ",
+DlgSelectChkMulti	: "একাধিক সিলেকশন এলাউ কর",
+DlgSelectOpAvail	: "অন্যান্য বিকল্প",
+DlgSelectOpText		: "টেক্সট",
+DlgSelectOpValue	: "ভ্যালু",
+DlgSelectBtnAdd		: "যুক্ত",
+DlgSelectBtnModify	: "বদলে দাও",
+DlgSelectBtnUp		: "উপর",
+DlgSelectBtnDown	: "নীচে",
+DlgSelectBtnSetValue : "বাছাই করা ভ্যালু হিসেবে সেট কর",
+DlgSelectBtnDelete	: "ডিলীট",
+
+// Textarea Dialog
+DlgTextareaName	: "নাম",
+DlgTextareaCols	: "কলাম",
+DlgTextareaRows	: "রো",
+
+// Text Field Dialog
+DlgTextName			: "নাম",
+DlgTextValue		: "ভ্যালু",
+DlgTextCharWidth	: "ক্যারেক্টার প্রশস্ততা",
+DlgTextMaxChars		: "সর্বাধিক ক্যারেক্টার",
+DlgTextType			: "টাইপ",
+DlgTextTypeText		: "টেক্সট",
+DlgTextTypePass		: "পাসওয়ার্ড",
+
+// Hidden Field Dialog
+DlgHiddenName	: "নাম",
+DlgHiddenValue	: "ভ্যালু",
+
+// Bulleted List Dialog
+BulletedListProp	: "বুলেটেড সূচী প্রোপার্টি",
+NumberedListProp	: "সাংখ্যিক সূচী প্রোপার্টি",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "প্রকার",
+DlgLstTypeCircle	: "গোল",
+DlgLstTypeDisc		: "ডিস্ক",
+DlgLstTypeSquare	: "চৌকোণা",
+DlgLstTypeNumbers	: "সংখ্যা (1, 2, 3)",
+DlgLstTypeLCase		: "ছোট অক্ষর (a, b, c)",
+DlgLstTypeUCase		: "বড় অক্ষর (A, B, C)",
+DlgLstTypeSRoman	: "ছোট রোমান সংখ্যা (i, ii, iii)",
+DlgLstTypeLRoman	: "বড় রোমান সংখ্যা (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "সাধারন",
+DlgDocBackTab		: "ব্যাকগ্রাউন্ড",
+DlgDocColorsTab		: "রং এবং মার্জিন",
+DlgDocMetaTab		: "মেটাডেটা",
+
+DlgDocPageTitle		: "পেজ শীর্ষক",
+DlgDocLangDir		: "ভাষা লিখার দিক",
+DlgDocLangDirLTR	: "বাম থেকে ডানে (LTR)",
+DlgDocLangDirRTL	: "ডান থেকে বামে (RTL)",
+DlgDocLangCode		: "ভাষা কোড",
+DlgDocCharSet		: "ক্যারেক্টার সেট এনকোডিং",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "অন্য ক্যারেক্টার সেট এনকোডিং",
+
+DlgDocDocType		: "ডক্যুমেন্ট টাইপ হেডিং",
+DlgDocDocTypeOther	: "অন্য ডক্যুমেন্ট টাইপ হেডিং",
+DlgDocIncXHTML		: "XHTML ডেক্লারেশন যুক্ত কর",
+DlgDocBgColor		: "ব্যাকগ্রাউন্ড রং",
+DlgDocBgImage		: "ব্যাকগ্রাউন্ড ছবির URL",
+DlgDocBgNoScroll	: "স্ক্রলহীন ব্যাকগ্রাউন্ড",
+DlgDocCText			: "টেক্সট",
+DlgDocCLink			: "লিংক",
+DlgDocCVisited		: "ভিজিট করা লিংক",
+DlgDocCActive		: "সক্রিয় লিংক",
+DlgDocMargins		: "পেজ মার্জিন",
+DlgDocMaTop			: "উপর",
+DlgDocMaLeft		: "বামে",
+DlgDocMaRight		: "ডানে",
+DlgDocMaBottom		: "নীচে",
+DlgDocMeIndex		: "ডক্যুমেন্ট ইন্ডেক্স কিওয়ার্ড (কমা দ্বারা বিচ্ছিন্ন)",
+DlgDocMeDescr		: "ডক্যূমেন্ট বর্ণনা",
+DlgDocMeAuthor		: "লেখক",
+DlgDocMeCopy		: "কপীরাইট",
+DlgDocPreview		: "প্রীভিউ",
+
+// Templates Dialog
+Templates			: "টেমপ্লেট",
+DlgTemplatesTitle	: "কনটেন্ট টেমপ্লেট",
+DlgTemplatesSelMsg	: "অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন<br>(আসল কনটেন্ট হারিয়ে যাবে):",
+DlgTemplatesLoading	: "টেমপ্লেট লিস্ট হারিয়ে যাবে। অনুগ্রহ করে অপেক্ষা করুন...",
+DlgTemplatesNoTpl	: "(কোন টেমপ্লেট ডিফাইন করা নেই)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "কে বানিয়েছে",
+DlgAboutBrowserInfoTab	: "ব্রাউজারের ব্যাপারে তথ্য",
+DlgAboutLicenseTab	: "লাইসেন্স",
+DlgAboutVersion		: "ভার্সন",
+DlgAboutInfo		: "আরও তথ্যের জন্য যান",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/el.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/el.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/el.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Greek language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Απόκρυψη Μπάρας Εργαλείων",
+ToolbarExpand		: "Εμφάνιση Μπάρας Εργαλείων",
+
+// Toolbar Items and Context Menu
+Save				: "Αποθήκευση",
+NewPage				: "Νέα Σελίδα",
+Preview				: "Προεπισκόπιση",
+Cut					: "Αποκοπή",
+Copy				: "Αντιγραφή",
+Paste				: "Επικόλληση",
+PasteText			: "Επικόλληση (απλό κείμενο)",
+PasteWord			: "Επικόλληση από το Word",
+Print				: "Εκτύπωση",
+SelectAll			: "Επιλογή όλων",
+RemoveFormat		: "Αφαίρεση Μορφοποίησης",
+InsertLinkLbl		: "Σύνδεσμος (Link)",
+InsertLink			: "Εισαγωγή/Μεταβολή Συνδέσμου (Link)",
+RemoveLink			: "Αφαίρεση Συνδέσμου (Link)",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Εισαγωγή/επεξεργασία Anchor",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Εικόνα",
+InsertImage			: "Εισαγωγή/Μεταβολή Εικόνας",
+InsertFlashLbl		: "Εισαγωγή Flash",
+InsertFlash			: "Εισαγωγή/επεξεργασία Flash",
+InsertTableLbl		: "Πίνακας",
+InsertTable			: "Εισαγωγή/Μεταβολή Πίνακα",
+InsertLineLbl		: "Γραμμή",
+InsertLine			: "Εισαγωγή Οριζόντιας Γραμμής",
+InsertSpecialCharLbl: "Ειδικό Σύμβολο",
+InsertSpecialChar	: "Εισαγωγή Ειδικού Συμβόλου",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Εισαγωγή Smiley",
+About				: "Περί του FCKeditor",
+Bold				: "Έντονα",
+Italic				: "Πλάγια",
+Underline			: "Υπογράμμιση",
+StrikeThrough		: "Διαγράμμιση",
+Subscript			: "Δείκτης",
+Superscript			: "Εκθέτης",
+LeftJustify			: "Στοίχιση Αριστερά",
+CenterJustify		: "Στοίχιση στο Κέντρο",
+RightJustify		: "Στοίχιση Δεξιά",
+BlockJustify		: "Πλήρης Στοίχιση (Block)",
+DecreaseIndent		: "Μείωση Εσοχής",
+IncreaseIndent		: "Αύξηση Εσοχής",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Αναίρεση",
+Redo				: "Επαναφορά",
+NumberedListLbl		: "Λίστα με Αριθμούς",
+NumberedList		: "Εισαγωγή/Διαγραφή Λίστας με Αριθμούς",
+BulletedListLbl		: "Λίστα με Bullets",
+BulletedList		: "Εισαγωγή/Διαγραφή Λίστας με Bullets",
+ShowTableBorders	: "Προβολή Ορίων Πίνακα",
+ShowDetails			: "Προβολή Λεπτομερειών",
+Style				: "Στυλ",
+FontFormat			: "Μορφή Γραμματοσειράς",
+Font				: "Γραμματοσειρά",
+FontSize			: "Μέγεθος",
+TextColor			: "Χρώμα Γραμμάτων",
+BGColor				: "Χρώμα Υποβάθρου",
+Source				: "HTML κώδικας",
+Find				: "Αναζήτηση",
+Replace				: "Αντικατάσταση",
+SpellCheck			: "Ορθογραφικός έλεγχος",
+UniversalKeyboard	: "Διεθνής πληκτρολόγιο",
+PageBreakLbl		: "Τέλος σελίδας",
+PageBreak			: "Εισαγωγή τέλους σελίδας",
+
+Form			: "Φόρμα",
+Checkbox		: "Κουτί επιλογής",
+RadioButton		: "Κουμπί Radio",
+TextField		: "Πεδίο κειμένου",
+Textarea		: "Περιοχή κειμένου",
+HiddenField		: "Κρυφό πεδίο",
+Button			: "Κουμπί",
+SelectionField	: "Πεδίο επιλογής",
+ImageButton		: "Κουμπί εικόνας",
+
+FitWindow		: "Μεγιστοποίηση προγράμματος",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Μεταβολή Συνδέσμου (Link)",
+CellCM				: "Κελί",
+RowCM				: "Σειρά",
+ColumnCM			: "Στήλη",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Διαγραφή Γραμμών",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Διαγραφή Κολωνών",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Διαγραφή Κελιών",
+MergeCells			: "Ενοποίηση Κελιών",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Διαγραφή πίνακα",
+CellProperties		: "Ιδιότητες Κελιού",
+TableProperties		: "Ιδιότητες Πίνακα",
+ImageProperties		: "Ιδιότητες Εικόνας",
+FlashProperties		: "Ιδιότητες Flash",
+
+AnchorProp			: "Ιδιότητες άγκυρας",
+ButtonProp			: "Ιδιότητες κουμπιού",
+CheckboxProp		: "Ιδιότητες κουμπιού επιλογής",
+HiddenFieldProp		: "Ιδιότητες κρυφού πεδίου",
+RadioButtonProp		: "Ιδιότητες κουμπιού radio",
+ImageButtonProp		: "Ιδιότητες κουμπιού εικόνας",
+TextFieldProp		: "Ιδιότητες πεδίου κειμένου",
+SelectionFieldProp	: "Ιδιότητες πεδίου επιλογής",
+TextareaProp		: "Ιδιότητες περιοχής κειμένου",
+FormProp			: "Ιδιότητες φόρμας",
+
+FontFormats			: "Κανονικό;Μορφοποιημένο;Διεύθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Επεξεργασία XHTML. Παρακαλώ περιμένετε...",
+Done				: "Έτοιμο",
+PasteWordConfirm	: "Το κείμενο που θέλετε να επικολήσετε, φαίνεται πως προέρχεται από το Word. Θέλετε να καθαριστεί πριν επικοληθεί;",
+NotCompatiblePaste	: "Αυτή η επιλογή είναι διαθέσιμη στον Internet Explorer έκδοση 5.5+. Θέλετε να γίνει η επικόλληση χωρίς καθαρισμό;",
+UnknownToolbarItem	: "Άγνωστο αντικείμενο της μπάρας εργαλείων \"%1\"",
+UnknownCommand		: "Άγνωστή εντολή \"%1\"",
+NotImplemented		: "Η εντολή δεν έχει ενεργοποιηθεί",
+UnknownToolbarSet	: "Η μπάρα εργαλείων \"%1\" δεν υπάρχει",
+NoActiveX			: "Οι ρυθμίσεις ασφαλείας του browser σας μπορεί να περιορίσουν κάποιες ρυθμίσεις του προγράμματος. Χρειάζεται να ενεργοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παρουσιαστούν λάθη και παρατηρήσετε ελειπείς λειτουργίες.",
+BrowseServerBlocked : "Οι πόροι του browser σας δεν είναι προσπελάσιμοι. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+DialogBlocked		: "Δεν ήταν δυνατό να ανοίξει το παράθυρο διαλόγου. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Ακύρωση",
+DlgBtnClose			: "Κλείσιμο",
+DlgBtnBrowseServer	: "Εξερεύνηση διακομιστή",
+DlgAdvancedTag		: "Για προχωρημένους",
+DlgOpOther			: "<Άλλα>",
+DlgInfoTab			: "Πληροφορίες",
+DlgAlertUrl			: "Παρακαλώ εισάγετε URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<χωρίς>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Κατεύθυνση κειμένου",
+DlgGenLangDirLtr	: "Αριστερά προς Δεξιά (LTR)",
+DlgGenLangDirRtl	: "Δεξιά προς Αριστερά (RTL)",
+DlgGenLangCode		: "Κωδικός Γλώσσας",
+DlgGenAccessKey		: "Συντόμευση (Access Key)",
+DlgGenName			: "Όνομα",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Αναλυτική περιγραφή URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Συμβουλευτικός τίτλος",
+DlgGenContType		: "Συμβουλευτικός τίτλος περιεχομένου",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Στύλ",
+
+// Image Dialog
+DlgImgTitle			: "Ιδιότητες Εικόνας",
+DlgImgInfoTab		: "Πληροφορίες Εικόνας",
+DlgImgBtnUpload		: "Αποστολή στον Διακομιστή",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Αποστολή",
+DlgImgAlt			: "Εναλλακτικό Κείμενο (ALT)",
+DlgImgWidth			: "Πλάτος",
+DlgImgHeight		: "Ύψος",
+DlgImgLockRatio		: "Κλείδωμα Αναλογίας",
+DlgBtnResetSize		: "Επαναφορά Αρχικού Μεγέθους",
+DlgImgBorder		: "Περιθώριο",
+DlgImgHSpace		: "Οριζόντιος Χώρος (HSpace)",
+DlgImgVSpace		: "Κάθετος Χώρος (VSpace)",
+DlgImgAlign			: "Ευθυγράμμιση (Align)",
+DlgImgAlignLeft		: "Αριστερά",
+DlgImgAlignAbsBottom: "Απόλυτα Κάτω (Abs Bottom)",
+DlgImgAlignAbsMiddle: "Απόλυτα στη Μέση (Abs Middle)",
+DlgImgAlignBaseline	: "Γραμμή Βάσης (Baseline)",
+DlgImgAlignBottom	: "Κάτω (Bottom)",
+DlgImgAlignMiddle	: "Μέση (Middle)",
+DlgImgAlignRight	: "Δεξιά (Right)",
+DlgImgAlignTextTop	: "Κορυφή Κειμένου (Text Top)",
+DlgImgAlignTop		: "Πάνω (Top)",
+DlgImgPreview		: "Προεπισκόπιση",
+DlgImgAlertUrl		: "Εισάγετε την τοποθεσία (URL) της εικόνας",
+DlgImgLinkTab		: "Σύνδεσμος",
+
+// Flash Dialog
+DlgFlashTitle		: "Ιδιότητες flash",
+DlgFlashChkPlay		: "Αυτόματη έναρξη",
+DlgFlashChkLoop		: "Επανάληψη",
+DlgFlashChkMenu		: "Ενεργοποίηση Flash Menu",
+DlgFlashScale		: "Κλίμακα",
+DlgFlashScaleAll	: "Εμφάνιση όλων",
+DlgFlashScaleNoBorder	: "Χωρίς όρια",
+DlgFlashScaleFit	: "Ακριβής εφαρμογή",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Σύνδεσμος (Link)",
+DlgLnkInfoTab		: "Link",
+DlgLnkTargetTab		: "Παράθυρο Στόχος (Target)",
+
+DlgLnkType			: "Τύπος συνδέσμου (Link)",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Άγκυρα σε αυτή τη σελίδα",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Προτόκολο",
+DlgLnkProtoOther	: "<άλλο>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Επιλέξτε μια άγκυρα",
+DlgLnkAnchorByName	: "Βάσει του Ονόματος (Name) της άγκυρας",
+DlgLnkAnchorById	: "Βάσει του Element Id",
+DlgLnkNoAnchors		: "(Δεν υπάρχουν άγκυρες στο κείμενο)",
+DlgLnkEMail			: "Διεύθυνση Ηλεκτρονικού Ταχυδρομείου",
+DlgLnkEMailSubject	: "Θέμα Μηνύματος",
+DlgLnkEMailBody		: "Κείμενο Μηνύματος",
+DlgLnkUpload		: "Αποστολή",
+DlgLnkBtnUpload		: "Αποστολή στον Διακομιστή",
+
+DlgLnkTarget		: "Παράθυρο Στόχος (Target)",
+DlgLnkTargetFrame	: "<πλαίσιο>",
+DlgLnkTargetPopup	: "<παράθυρο popup>",
+DlgLnkTargetBlank	: "Νέο Παράθυρο (_blank)",
+DlgLnkTargetParent	: "Γονικό Παράθυρο (_parent)",
+DlgLnkTargetSelf	: "Ίδιο Παράθυρο (_self)",
+DlgLnkTargetTop		: "Ανώτατο Παράθυρο (_top)",
+DlgLnkTargetFrameName	: "Όνομα πλαισίου στόχου",
+DlgLnkPopWinName	: "Όνομα Popup Window",
+DlgLnkPopWinFeat	: "Επιλογές Popup Window",
+DlgLnkPopResize		: "Με αλλαγή Μεγέθους",
+DlgLnkPopLocation	: "Μπάρα Τοποθεσίας",
+DlgLnkPopMenu		: "Μπάρα Menu",
+DlgLnkPopScroll		: "Μπάρες Κύλισης",
+DlgLnkPopStatus		: "Μπάρα Status",
+DlgLnkPopToolbar	: "Μπάρα Εργαλείων",
+DlgLnkPopFullScrn	: "Ολόκληρη η Οθόνη (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Πλάτος",
+DlgLnkPopHeight		: "Ύψος",
+DlgLnkPopLeft		: "Τοποθεσία Αριστερής Άκρης",
+DlgLnkPopTop		: "Τοποθεσία Πάνω Άκρης",
+
+DlnLnkMsgNoUrl		: "Εισάγετε την τοποθεσία (URL) του υπερσυνδέσμου (Link)",
+DlnLnkMsgNoEMail	: "Εισάγετε την διεύθυνση ηλεκτρονικού ταχυδρομείου",
+DlnLnkMsgNoAnchor	: "Επιλέξτε ένα Anchor",
+DlnLnkMsgInvPopName	: "Το όνομα του popup πρέπει να αρχίζει με χαρακτήρα της αλφαβήτου και να μην περιέχει κενά",
+
+// Color Dialog
+DlgColorTitle		: "Επιλογή χρώματος",
+DlgColorBtnClear	: "Καθαρισμός",
+DlgColorHighlight	: "Προεπισκόπιση",
+DlgColorSelected	: "Επιλεγμένο",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Επιλέξτε ένα Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Επιλέξτε ένα Ειδικό Σύμβολο",
+
+// Table Dialog
+DlgTableTitle		: "Ιδιότητες Πίνακα",
+DlgTableRows		: "Γραμμές",
+DlgTableColumns		: "Κολώνες",
+DlgTableBorder		: "Μέγεθος Περιθωρίου",
+DlgTableAlign		: "Στοίχιση",
+DlgTableAlignNotSet	: "<χωρίς>",
+DlgTableAlignLeft	: "Αριστερά",
+DlgTableAlignCenter	: "Κέντρο",
+DlgTableAlignRight	: "Δεξιά",
+DlgTableWidth		: "Πλάτος",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "\%",
+DlgTableHeight		: "Ύψος",
+DlgTableCellSpace	: "Απόσταση κελιών",
+DlgTableCellPad		: "Γέμισμα κελιών",
+DlgTableCaption		: "Υπέρτιτλος",
+DlgTableSummary		: "Περίληψη",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Ιδιότητες Κελιού",
+DlgCellWidth		: "Πλάτος",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "\%",
+DlgCellHeight		: "Ύψος",
+DlgCellWordWrap		: "Με αλλαγή γραμμής",
+DlgCellWordWrapNotSet	: "<χωρίς>",
+DlgCellWordWrapYes	: "Ναι",
+DlgCellWordWrapNo	: "Όχι",
+DlgCellHorAlign		: "Οριζόντια Στοίχιση",
+DlgCellHorAlignNotSet	: "<χωρίς>",
+DlgCellHorAlignLeft	: "Αριστερά",
+DlgCellHorAlignCenter	: "Κέντρο",
+DlgCellHorAlignRight: "Δεξιά",
+DlgCellVerAlign		: "Κάθετη Στοίχιση",
+DlgCellVerAlignNotSet	: "<χωρίς>",
+DlgCellVerAlignTop	: "Πάνω (Top)",
+DlgCellVerAlignMiddle	: "Μέση (Middle)",
+DlgCellVerAlignBottom	: "Κάτω (Bottom)",
+DlgCellVerAlignBaseline	: "Γραμμή Βάσης (Baseline)",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Αριθμός Γραμμών (Rows Span)",
+DlgCellCollSpan		: "Αριθμός Κολωνών (Columns Span)",
+DlgCellBackColor	: "Χρώμα Υποβάθρου",
+DlgCellBorderColor	: "Χρώμα Περιθωρίου",
+DlgCellBtnSelect	: "Επιλογή...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Αναζήτηση",
+DlgFindFindBtn		: "Αναζήτηση",
+DlgFindNotFoundMsg	: "Το κείμενο δεν βρέθηκε.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Αντικατάσταση",
+DlgReplaceFindLbl		: "Αναζήτηση:",
+DlgReplaceReplaceLbl	: "Αντικατάσταση με:",
+DlgReplaceCaseChk		: "Έλεγχος πεζών/κεφαλαίων",
+DlgReplaceReplaceBtn	: "Αντικατάσταση",
+DlgReplaceReplAllBtn	: "Αντικατάσταση Όλων",
+DlgReplaceWordChk		: "Εύρεση πλήρους λέξης",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).",
+PasteErrorCopy	: "Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).",
+
+PasteAsText		: "Επικόλληση ως Απλό Κείμενο",
+PasteFromWord	: "Επικόλληση από το Word",
+
+DlgPasteMsg2	: "Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Αγνόηση προδιαγραφών γραμματοσειράς",
+DlgPasteRemoveStyles	: "Αφαίρεση προδιαγραφών στύλ",
+
+// Color Picker
+ColorAutomatic	: "Αυτόματο",
+ColorMoreColors	: "Περισσότερα χρώματα...",
+
+// Document Properties
+DocProps		: "Ιδιότητες εγγράφου",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ιδιότητες άγκυρας",
+DlgAnchorName		: "Όνομα άγκυρας",
+DlgAnchorErrorName	: "Παρακαλούμε εισάγετε όνομα άγκυρας",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Δεν υπάρχει στο λεξικό",
+DlgSpellChangeTo		: "Αλλαγή σε",
+DlgSpellBtnIgnore		: "Αγνόηση",
+DlgSpellBtnIgnoreAll	: "Αγνόηση όλων",
+DlgSpellBtnReplace		: "Αντικατάσταση",
+DlgSpellBtnReplaceAll	: "Αντικατάσταση όλων",
+DlgSpellBtnUndo			: "Αναίρεση",
+DlgSpellNoSuggestions	: "- Δεν υπάρχουν προτάσεις -",
+DlgSpellProgress		: "Ορθογραφικός έλεγχος σε εξέλιξη...",
+DlgSpellNoMispell		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη",
+DlgSpellNoChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις",
+DlgSpellOneChange		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Μια λέξη άλλαξε",
+DlgSpellManyChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: %1 λέξεις άλλαξαν",
+
+IeSpellDownload			: "Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;",
+
+// Button Dialog
+DlgButtonText		: "Κείμενο (Τιμή)",
+DlgButtonType		: "Τύπος",
+DlgButtonTypeBtn	: "Κουμπί",
+DlgButtonTypeSbm	: "Καταχώρηση",
+DlgButtonTypeRst	: "Επαναφορά",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Όνομα",
+DlgCheckboxValue	: "Τιμή",
+DlgCheckboxSelected	: "Επιλεγμένο",
+
+// Form Dialog
+DlgFormName		: "Όνομα",
+DlgFormAction	: "Δράση",
+DlgFormMethod	: "Μάθοδος",
+
+// Select Field Dialog
+DlgSelectName		: "Όνομα",
+DlgSelectValue		: "Τιμή",
+DlgSelectSize		: "Μέγεθος",
+DlgSelectLines		: "γραμμές",
+DlgSelectChkMulti	: "Πολλαπλές επιλογές",
+DlgSelectOpAvail	: "Διαθέσιμες επιλογές",
+DlgSelectOpText		: "Κείμενο",
+DlgSelectOpValue	: "Τιμή",
+DlgSelectBtnAdd		: "Προσθήκη",
+DlgSelectBtnModify	: "Αλλαγή",
+DlgSelectBtnUp		: "Πάνω",
+DlgSelectBtnDown	: "Κάτω",
+DlgSelectBtnSetValue : "Προεπιλεγμένη επιλογή",
+DlgSelectBtnDelete	: "Διαγραφή",
+
+// Textarea Dialog
+DlgTextareaName	: "Όνομα",
+DlgTextareaCols	: "Στήλες",
+DlgTextareaRows	: "Σειρές",
+
+// Text Field Dialog
+DlgTextName			: "Όνομα",
+DlgTextValue		: "Τιμή",
+DlgTextCharWidth	: "Μήκος χαρακτήρων",
+DlgTextMaxChars		: "Μέγιστοι χαρακτήρες",
+DlgTextType			: "Τύπος",
+DlgTextTypeText		: "Κείμενο",
+DlgTextTypePass		: "Κωδικός",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Όνομα",
+DlgHiddenValue	: "Τιμή",
+
+// Bulleted List Dialog
+BulletedListProp	: "Ιδιότητες λίστας Bulleted",
+NumberedListProp	: "Ιδιότητες αριθμημένης λίστας ",
+DlgLstStart			: "Αρχή",
+DlgLstType			: "Τύπος",
+DlgLstTypeCircle	: "Κύκλος",
+DlgLstTypeDisc		: "Δίσκος",
+DlgLstTypeSquare	: "Τετράγωνο",
+DlgLstTypeNumbers	: "Αριθμοί (1, 2, 3)",
+DlgLstTypeLCase		: "Πεζά γράμματα (a, b, c)",
+DlgLstTypeUCase		: "Κεφαλαία γράμματα (A, B, C)",
+DlgLstTypeSRoman	: "Μικρά λατινικά αριθμητικά (i, ii, iii)",
+DlgLstTypeLRoman	: "Μεγάλα λατινικά αριθμητικά (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Γενικά",
+DlgDocBackTab		: "Φόντο",
+DlgDocColorsTab		: "Χρώματα και περιθώρια",
+DlgDocMetaTab		: "Δεδομένα Meta",
+
+DlgDocPageTitle		: "Τίτλος σελίδας",
+DlgDocLangDir		: "Κατεύθυνση γραφής",
+DlgDocLangDirLTR	: "αριστερά προς δεξιά (LTR)",
+DlgDocLangDirRTL	: "δεξιά προς αριστερά (RTL)",
+DlgDocLangCode		: "Κωδικός γλώσσας",
+DlgDocCharSet		: "Κωδικοποίηση χαρακτήρων",
+DlgDocCharSetCE		: "Κεντρικής Ευρώπης",
+DlgDocCharSetCT		: "Παραδοσιακά κινέζικα (Big5)",
+DlgDocCharSetCR		: "Κυριλλική",
+DlgDocCharSetGR		: "Ελληνική",
+DlgDocCharSetJP		: "Ιαπωνική",
+DlgDocCharSetKR		: "Κορεάτικη",
+DlgDocCharSetTR		: "Τουρκική",
+DlgDocCharSetUN		: "Διεθνής (UTF-8)",
+DlgDocCharSetWE		: "Δυτικής Ευρώπης",
+DlgDocCharSetOther	: "Άλλη κωδικοποίηση χαρακτήρων",
+
+DlgDocDocType		: "Επικεφαλίδα τύπου εγγράφου",
+DlgDocDocTypeOther	: "Άλλη επικεφαλίδα τύπου εγγράφου",
+DlgDocIncXHTML		: "Να συμπεριληφθούν οι δηλώσεις XHTML",
+DlgDocBgColor		: "Χρώμα φόντου",
+DlgDocBgImage		: "Διεύθυνση εικόνας φόντου",
+DlgDocBgNoScroll	: "Φόντο χωρίς κύλιση",
+DlgDocCText			: "Κείμενο",
+DlgDocCLink			: "Σύνδεσμος",
+DlgDocCVisited		: "Σύνδεσμος που έχει επισκευθεί",
+DlgDocCActive		: "Ενεργός σύνδεσμος",
+DlgDocMargins		: "Περιθώρια σελίδας",
+DlgDocMaTop			: "Κορυφή",
+DlgDocMaLeft		: "Αριστερά",
+DlgDocMaRight		: "Δεξιά",
+DlgDocMaBottom		: "Κάτω",
+DlgDocMeIndex		: "Λέξεις κλειδιά δείκτες εγγράφου (διαχωρισμός με κόμμα)",
+DlgDocMeDescr		: "Περιγραφή εγγράφου",
+DlgDocMeAuthor		: "Συγγραφέας",
+DlgDocMeCopy		: "Πνευματικά δικαιώματα",
+DlgDocPreview		: "Προεπισκόπηση",
+
+// Templates Dialog
+Templates			: "Πρότυπα",
+DlgTemplatesTitle	: "Πρότυπα περιεχομένου",
+DlgTemplatesSelMsg	: "Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):",
+DlgTemplatesLoading	: "Φόρτωση καταλόγου προτύπων. Παρακαλώ περιμένετε...",
+DlgTemplatesNoTpl	: "(Δεν έχουν καθοριστεί πρότυπα)",
+DlgTemplatesReplace	: "Αντικατάσταση υπάρχοντων περιεχομένων",
+
+// About Dialog
+DlgAboutAboutTab	: "Σχετικά",
+DlgAboutBrowserInfoTab	: "Πληροφορίες Browser",
+DlgAboutLicenseTab	: "Άδεια",
+DlgAboutVersion		: "έκδοση",
+DlgAboutInfo		: "Για περισσότερες πληροφορίες",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * English language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
+Anchor				: "Insert/Edit Anchor",
+AnchorDelete		: "Remove Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Center Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Color",
+BGColor				: "Background Color",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+ShowBlocks		: "Show Blocks",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRowAfter		: "Insert Row After",
+InsertRowBefore		: "Insert Row Before",
+DeleteRows			: "Delete Rows",
+InsertColumnAfter	: "Insert Column After",
+InsertColumnBefore	: "Insert Column Before",
+DeleteColumns		: "Delete Columns",
+InsertCellAfter		: "Insert Cell After",
+InsertCellBefore	: "Insert Cell Before",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+MergeRight			: "Merge Right",
+MergeDown			: "Merge Down",
+HorizontalSplitCell	: "Split Cell Horizontally",
+VerticalSplitCell	: "Split Cell Vertically",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "(No anchors available in the document)",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Color",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Center",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+DlgTableHeaders		: "Headers",
+DlgTableHeadersNone		: "None",
+DlgTableHeadersColumn	: "First column",
+DlgTableHeadersRow		: "First Row",
+DlgTableHeadersBoth		: "Both",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Center",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Header",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Color",
+DlgCellBorderColor	: "Border Color",
+DlgCellBtnSelect	: "Select...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colors...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colors and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Color",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "For further information go to",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",
+ScaytTitleOptions	: "Options",
+ScaytTitleLangs		: "Languages",
+ScaytTitleAbout		: "About"
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ar.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ar.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ar.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Arabic language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "ضم شريط الأدوات",
+ToolbarExpand		: "تمدد شريط الأدوات",
+
+// Toolbar Items and Context Menu
+Save				: "حفظ",
+NewPage				: "صفحة جديدة",
+Preview				: "معاينة الصفحة",
+Cut					: "قص",
+Copy				: "نسخ",
+Paste				: "لصق",
+PasteText			: "لصق كنص بسيط",
+PasteWord			: "لصق من وورد",
+Print				: "طباعة",
+SelectAll			: "تحديد الكل",
+RemoveFormat		: "إزالة التنسيقات",
+InsertLinkLbl		: "رابط",
+InsertLink			: "إدراج/تحرير رابط",
+RemoveLink			: "إزالة رابط",
+VisitLink			: "افتح الرابط",
+Anchor				: "إدراج/تحرير إشارة مرجعية",
+AnchorDelete		: "إزالة إشارة مرجعية",
+InsertImageLbl		: "صورة",
+InsertImage			: "إدراج/تحرير صورة",
+InsertFlashLbl		: "فلاش",
+InsertFlash			: "إدراج/تحرير فيلم فلاش",
+InsertTableLbl		: "جدول",
+InsertTable			: "إدراج/تحرير جدول",
+InsertLineLbl		: "خط فاصل",
+InsertLine			: "إدراج خط فاصل",
+InsertSpecialCharLbl: "رموز",
+InsertSpecialChar	: "إدراج  رموز..ِ",
+InsertSmileyLbl		: "ابتسامات",
+InsertSmiley		: "إدراج ابتسامات",
+About				: "حول FCKeditor",
+Bold				: "غامق",
+Italic				: "مائل",
+Underline			: "تسطير",
+StrikeThrough		: "يتوسطه خط",
+Subscript			: "منخفض",
+Superscript			: "مرتفع",
+LeftJustify			: "محاذاة إلى اليسار",
+CenterJustify		: "توسيط",
+RightJustify		: "محاذاة إلى اليمين",
+BlockJustify		: "ضبط",
+DecreaseIndent		: "إنقاص المسافة البادئة",
+IncreaseIndent		: "زيادة المسافة البادئة",
+Blockquote			: "اقتباس",
+CreateDiv			: "إنشاء حاوية Div",
+EditDiv				: "تعديل حاوية Div",
+DeleteDiv			: "إزالة حاوية Div",
+Undo				: "تراجع",
+Redo				: "إعادة",
+NumberedListLbl		: "تعداد رقمي",
+NumberedList		: "إدراج/إلغاء تعداد رقمي",
+BulletedListLbl		: "تعداد نقطي",
+BulletedList		: "إدراج/إلغاء تعداد نقطي",
+ShowTableBorders	: "معاينة حدود الجداول",
+ShowDetails			: "معاينة التفاصيل",
+Style				: "نمط",
+FontFormat			: "تنسيق",
+Font				: "خط",
+FontSize			: "حجم الخط",
+TextColor			: "لون النص",
+BGColor				: "لون الخلفية",
+Source				: "شفرة المصدر",
+Find				: "بحث",
+Replace				: "إستبدال",
+SpellCheck			: "تدقيق إملائي",
+UniversalKeyboard	: "لوحة المفاتيح العالمية",
+PageBreakLbl		: "فصل الصفحة",
+PageBreak			: "إدخال صفحة جديدة",
+
+Form			: "نموذج",
+Checkbox		: "خانة إختيار",
+RadioButton		: "زر خيار",
+TextField		: "مربع نص",
+Textarea		: "ناحية نص",
+HiddenField		: "إدراج حقل خفي",
+Button			: "زر ضغط",
+SelectionField	: "قائمة منسدلة",
+ImageButton		: "زر صورة",
+
+FitWindow		: "تكبير حجم المحرر",
+ShowBlocks		: "مخطط تفصيلي",
+
+// Context Menu
+EditLink			: "تحرير رابط",
+CellCM				: "خلية",
+RowCM				: "صف",
+ColumnCM			: "عمود",
+InsertRowAfter		: "إدراج صف بعد",
+InsertRowBefore		: "إدراج صف قبل",
+DeleteRows			: "حذف صفوف",
+InsertColumnAfter	: "إدراج عمود بعد",
+InsertColumnBefore	: "إدراج عمود قبل",
+DeleteColumns		: "حذف أعمدة",
+InsertCellAfter		: "إدراج خلية بعد",
+InsertCellBefore	: "إدراج خلية قبل",
+DeleteCells			: "حذف خلايا",
+MergeCells			: "دمج خلايا",
+MergeRight			: "دمج لليمين",
+MergeDown			: "دمج للأسفل",
+HorizontalSplitCell	: "تقسيم الخلية أفقياً",
+VerticalSplitCell	: "تقسيم الخلية عمودياً",
+TableDelete			: "حذف الجدول",
+CellProperties		: "خصائص الخلية",
+TableProperties		: "خصائص الجدول",
+ImageProperties		: "خصائص الصورة",
+FlashProperties		: "خصائص فيلم الفلاش",
+
+AnchorProp			: "خصائص الإشارة المرجعية",
+ButtonProp			: "خصائص زر الضغط",
+CheckboxProp		: "خصائص خانة الإختيار",
+HiddenFieldProp		: "خصائص الحقل الخفي",
+RadioButtonProp		: "خصائص زر الخيار",
+ImageButtonProp		: "خصائص زر الصورة",
+TextFieldProp		: "خصائص مربع النص",
+SelectionFieldProp	: "خصائص القائمة المنسدلة",
+TextareaProp		: "خصائص ناحية النص",
+FormProp			: "خصائص النموذج",
+
+FontFormats			: "عادي;منسّق;دوس;العنوان 1;العنوان  2;العنوان  3;العنوان  4;العنوان  5;العنوان  6",
+
+// Alerts and Messages
+ProcessingXHTML		: "إنتظر قليلاً ريثما تتم   معالَجة‏ XHTML. لن يستغرق طويلاً...",
+Done				: "تم",
+PasteWordConfirm	: "يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟",
+NotCompatiblePaste	: "هذه الميزة تحتاج لمتصفح من النوعInternet Explorer إصدار 5.5 فما فوق. هل تود اللصق دون تنظيف الكود؟",
+UnknownToolbarItem	: "عنصر شريط أدوات غير معروف \"%1\"",
+UnknownCommand		: "أمر غير معروف \"%1\"",
+NotImplemented		: "لم يتم دعم هذا الأمر",
+UnknownToolbarSet	: "لم أتمكن من العثور على طقم الأدوات \"%1\" ",
+NoActiveX			: "لتأمين متصفحك يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات مفقودة",
+BrowseServerBlocked : "لايمكن فتح مصدر المتصفح. فضلا يجب التأكد بأن جميع موانع النوافذ المنبثقة معطلة",
+DialogBlocked		: "لايمكن فتح نافذة الحوار . فضلا تأكد من أن  مانع النوافذ المنبثة معطل .",
+VisitLinkBlocked	: "لا يمكن فتح نافذة جديدة. تأكد من إيقاف كل مانعي فتح النوافذ من العمل.",
+
+// Dialogs
+DlgBtnOK			: "موافق",
+DlgBtnCancel		: "إلغاء الأمر",
+DlgBtnClose			: "إغلاق",
+DlgBtnBrowseServer	: "تصفح الخادم",
+DlgAdvancedTag		: "متقدم",
+DlgOpOther			: "<أخرى>",
+DlgInfoTab			: "معلومات",
+DlgAlertUrl			: "الرجاء كتابة عنوان الإنترنت",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<بدون تحديد>",
+DlgGenId			: "الرقم",
+DlgGenLangDir		: "إتجاه النص",
+DlgGenLangDirLtr	: "اليسار لليمين (LTR)",
+DlgGenLangDirRtl	: "اليمين لليسار (RTL)",
+DlgGenLangCode		: "رمز اللغة",
+DlgGenAccessKey		: "مفاتيح الإختصار",
+DlgGenName			: "الاسم",
+DlgGenTabIndex		: "الترتيب",
+DlgGenLongDescr		: "عنوان الوصف المفصّل",
+DlgGenClass			: "فئات التنسيق",
+DlgGenTitle			: "تلميح الشاشة",
+DlgGenContType		: "نوع التلميح",
+DlgGenLinkCharset	: "ترميز المادة المطلوبة",
+DlgGenStyle			: "نمط",
+
+// Image Dialog
+DlgImgTitle			: "خصائص الصورة",
+DlgImgInfoTab		: "معلومات الصورة",
+DlgImgBtnUpload		: "أرسلها للخادم",
+DlgImgURL			: "موقع الصورة",
+DlgImgUpload		: "رفع",
+DlgImgAlt			: "الوصف",
+DlgImgWidth			: "العرض",
+DlgImgHeight		: "الإرتفاع",
+DlgImgLockRatio		: "تناسق الحجم",
+DlgBtnResetSize		: "إستعادة الحجم الأصلي",
+DlgImgBorder		: "سمك الحدود",
+DlgImgHSpace		: "تباعد أفقي",
+DlgImgVSpace		: "تباعد عمودي",
+DlgImgAlign			: "محاذاة",
+DlgImgAlignLeft		: "يسار",
+DlgImgAlignAbsBottom: "أسفل النص",
+DlgImgAlignAbsMiddle: "وسط السطر",
+DlgImgAlignBaseline	: "على السطر",
+DlgImgAlignBottom	: "أسفل",
+DlgImgAlignMiddle	: "وسط",
+DlgImgAlignRight	: "يمين",
+DlgImgAlignTextTop	: "أعلى النص",
+DlgImgAlignTop		: "أعلى",
+DlgImgPreview		: "معاينة",
+DlgImgAlertUrl		: "فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.",
+DlgImgLinkTab		: "الرابط",
+
+// Flash Dialog
+DlgFlashTitle		: "خصائص فيلم الفلاش",
+DlgFlashChkPlay		: "تشغيل تلقائي",
+DlgFlashChkLoop		: "تكرار",
+DlgFlashChkMenu		: "تمكين قائمة فيلم الفلاش",
+DlgFlashScale		: "الحجم",
+DlgFlashScaleAll	: "إظهار الكل",
+DlgFlashScaleNoBorder	: "بلا حدود",
+DlgFlashScaleFit	: "ضبط تام",
+
+// Link Dialog
+DlgLnkWindowTitle	: "إرتباط تشعبي",
+DlgLnkInfoTab		: "معلومات الرابط",
+DlgLnkTargetTab		: "الهدف",
+
+DlgLnkType			: "نوع الربط",
+DlgLnkTypeURL		: "العنوان",
+DlgLnkTypeAnchor	: "مكان في هذا المستند",
+DlgLnkTypeEMail		: "بريد إلكتروني",
+DlgLnkProto			: "البروتوكول",
+DlgLnkProtoOther	: "<أخرى>",
+DlgLnkURL			: "الموقع",
+DlgLnkAnchorSel		: "اختر علامة مرجعية",
+DlgLnkAnchorByName	: "حسب اسم العلامة",
+DlgLnkAnchorById	: "حسب تعريف العنصر",
+DlgLnkNoAnchors		: "(لا يوجد علامات مرجعية في هذا المستند)",
+DlgLnkEMail			: "عنوان بريد إلكتروني",
+DlgLnkEMailSubject	: "موضوع الرسالة",
+DlgLnkEMailBody		: "محتوى الرسالة",
+DlgLnkUpload		: "رفع",
+DlgLnkBtnUpload		: "أرسلها للخادم",
+
+DlgLnkTarget		: "الهدف",
+DlgLnkTargetFrame	: "<إطار>",
+DlgLnkTargetPopup	: "<نافذة منبثقة>",
+DlgLnkTargetBlank	: "إطار جديد (_blank)",
+DlgLnkTargetParent	: "الإطار الأصل (_parent)",
+DlgLnkTargetSelf	: "نفس الإطار (_self)",
+DlgLnkTargetTop		: "صفحة كاملة (_top)",
+DlgLnkTargetFrameName	: "اسم الإطار الهدف",
+DlgLnkPopWinName	: "تسمية النافذة المنبثقة",
+DlgLnkPopWinFeat	: "خصائص النافذة المنبثقة",
+DlgLnkPopResize		: "قابلة للتحجيم",
+DlgLnkPopLocation	: "شريط العنوان",
+DlgLnkPopMenu		: "القوائم الرئيسية",
+DlgLnkPopScroll		: "أشرطة التمرير",
+DlgLnkPopStatus		: "شريط الحالة السفلي",
+DlgLnkPopToolbar	: "شريط الأدوات",
+DlgLnkPopFullScrn	: "ملئ الشاشة (IE)",
+DlgLnkPopDependent	: "تابع (Netscape)",
+DlgLnkPopWidth		: "العرض",
+DlgLnkPopHeight		: "الإرتفاع",
+DlgLnkPopLeft		: "التمركز لليسار",
+DlgLnkPopTop		: "التمركز للأعلى",
+
+DlnLnkMsgNoUrl		: "فضلاً أدخل عنوان الموقع الذي يشير إليه الرابط",
+DlnLnkMsgNoEMail	: "فضلاً أدخل عنوان البريد الإلكتروني",
+DlnLnkMsgNoAnchor	: "فضلاً حدد العلامة المرجعية المرغوبة",
+DlnLnkMsgInvPopName	: "اسم النافذة المنبثقة يجب أن يبدأ بحرف أبجدي دون مسافات",
+
+// Color Dialog
+DlgColorTitle		: "اختر لوناً",
+DlgColorBtnClear	: "مسح",
+DlgColorHighlight	: "تحديد",
+DlgColorSelected	: "إختيار",
+
+// Smiley Dialog
+DlgSmileyTitle		: "إدراج إبتسامات ",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "إدراج رمز",
+
+// Table Dialog
+DlgTableTitle		: "إدراج جدول",
+DlgTableRows		: "صفوف",
+DlgTableColumns		: "أعمدة",
+DlgTableBorder		: "سمك الحدود",
+DlgTableAlign		: "المحاذاة",
+DlgTableAlignNotSet	: "<بدون تحديد>",
+DlgTableAlignLeft	: "يسار",
+DlgTableAlignCenter	: "وسط",
+DlgTableAlignRight	: "يمين",
+DlgTableWidth		: "العرض",
+DlgTableWidthPx		: "بكسل",
+DlgTableWidthPc		: "بالمئة",
+DlgTableHeight		: "الإرتفاع",
+DlgTableCellSpace	: "تباعد الخلايا",
+DlgTableCellPad		: "المسافة البادئة",
+DlgTableCaption		: "الوصف",
+DlgTableSummary		: "الخلاصة",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "خصائص الخلية",
+DlgCellWidth		: "العرض",
+DlgCellWidthPx		: "بكسل",
+DlgCellWidthPc		: "بالمئة",
+DlgCellHeight		: "الإرتفاع",
+DlgCellWordWrap		: "التفاف النص",
+DlgCellWordWrapNotSet	: "<بدون تحديد>",
+DlgCellWordWrapYes	: "نعم",
+DlgCellWordWrapNo	: "لا",
+DlgCellHorAlign		: "المحاذاة الأفقية",
+DlgCellHorAlignNotSet	: "<بدون تحديد>",
+DlgCellHorAlignLeft	: "يسار",
+DlgCellHorAlignCenter	: "وسط",
+DlgCellHorAlignRight: "يمين",
+DlgCellVerAlign		: "المحاذاة العمودية",
+DlgCellVerAlignNotSet	: "<بدون تحديد>",
+DlgCellVerAlignTop	: "أعلى",
+DlgCellVerAlignMiddle	: "وسط",
+DlgCellVerAlignBottom	: "أسفل",
+DlgCellVerAlignBaseline	: "على السطر",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "إمتداد الصفوف",
+DlgCellCollSpan		: "إمتداد الأعمدة",
+DlgCellBackColor	: "لون الخلفية",
+DlgCellBorderColor	: "لون الحدود",
+DlgCellBtnSelect	: "حدّد...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "بحث واستبدال",
+
+// Find Dialog
+DlgFindTitle		: "بحث",
+DlgFindFindBtn		: "ابحث",
+DlgFindNotFoundMsg	: "لم يتم العثور على النص المحدد.",
+
+// Replace Dialog
+DlgReplaceTitle			: "إستبدال",
+DlgReplaceFindLbl		: "البحث عن:",
+DlgReplaceReplaceLbl	: "إستبدال بـ:",
+DlgReplaceCaseChk		: "مطابقة حالة الأحرف",
+DlgReplaceReplaceBtn	: "إستبدال",
+DlgReplaceReplAllBtn	: "إستبدال الكل",
+DlgReplaceWordChk		: "الكلمة بالكامل فقط",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).",
+PasteErrorCopy	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).",
+
+PasteAsText		: "لصق كنص بسيط",
+PasteFromWord	: "لصق من وورد",
+
+DlgPasteMsg2	: "الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.",
+DlgPasteSec		: "نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذا وجب عليك لصق المحتوى مرة أخرى في هذه النافذة.",
+DlgPasteIgnoreFont		: "تجاهل تعريفات أسماء الخطوط",
+DlgPasteRemoveStyles	: "إزالة تعريفات الأنماط",
+
+// Color Picker
+ColorAutomatic	: "تلقائي",
+ColorMoreColors	: "ألوان إضافية...",
+
+// Document Properties
+DocProps		: "خصائص الصفحة",
+
+// Anchor Dialog
+DlgAnchorTitle		: "خصائص إشارة مرجعية",
+DlgAnchorName		: "اسم الإشارة المرجعية",
+DlgAnchorErrorName	: "الرجاء كتابة اسم الإشارة المرجعية",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "ليست في القاموس",
+DlgSpellChangeTo		: "التغيير إلى",
+DlgSpellBtnIgnore		: "تجاهل",
+DlgSpellBtnIgnoreAll	: "تجاهل الكل",
+DlgSpellBtnReplace		: "تغيير",
+DlgSpellBtnReplaceAll	: "تغيير الكل",
+DlgSpellBtnUndo			: "تراجع",
+DlgSpellNoSuggestions	: "- لا توجد إقتراحات -",
+DlgSpellProgress		: "جاري التدقيق إملائياً",
+DlgSpellNoMispell		: "تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية",
+DlgSpellNoChanges		: "تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة",
+DlgSpellOneChange		: "تم إكمال التدقيق الإملائي: تم تغيير كلمة واحدة فقط",
+DlgSpellManyChanges		: "تم إكمال التدقيق الإملائي: تم تغيير %1 كلمات\كلمة",
+
+IeSpellDownload			: "المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟",
+
+// Button Dialog
+DlgButtonText		: "القيمة/التسمية",
+DlgButtonType		: "نوع الزر",
+DlgButtonTypeBtn	: "زر",
+DlgButtonTypeSbm	: "إرسال",
+DlgButtonTypeRst	: "إعادة تعيين",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "الاسم",
+DlgCheckboxValue	: "القيمة",
+DlgCheckboxSelected	: "محدد",
+
+// Form Dialog
+DlgFormName		: "الاسم",
+DlgFormAction	: "اسم الملف",
+DlgFormMethod	: "الأسلوب",
+
+// Select Field Dialog
+DlgSelectName		: "الاسم",
+DlgSelectValue		: "القيمة",
+DlgSelectSize		: "الحجم",
+DlgSelectLines		: "الأسطر",
+DlgSelectChkMulti	: "السماح بتحديدات متعددة",
+DlgSelectOpAvail	: "الخيارات المتاحة",
+DlgSelectOpText		: "النص",
+DlgSelectOpValue	: "القيمة",
+DlgSelectBtnAdd		: "إضافة",
+DlgSelectBtnModify	: "تعديل",
+DlgSelectBtnUp		: "تحريك لأعلى",
+DlgSelectBtnDown	: "تحريك لأسفل",
+DlgSelectBtnSetValue : "إجعلها محددة",
+DlgSelectBtnDelete	: "إزالة",
+
+// Textarea Dialog
+DlgTextareaName	: "الاسم",
+DlgTextareaCols	: "الأعمدة",
+DlgTextareaRows	: "الصفوف",
+
+// Text Field Dialog
+DlgTextName			: "الاسم",
+DlgTextValue		: "القيمة",
+DlgTextCharWidth	: "العرض بالأحرف",
+DlgTextMaxChars		: "عدد الحروف الأقصى",
+DlgTextType			: "نوع المحتوى",
+DlgTextTypeText		: "نص",
+DlgTextTypePass		: "كلمة مرور",
+
+// Hidden Field Dialog
+DlgHiddenName	: "الاسم",
+DlgHiddenValue	: "القيمة",
+
+// Bulleted List Dialog
+BulletedListProp	: "خصائص التعداد النقطي",
+NumberedListProp	: "خصائص التعداد الرقمي",
+DlgLstStart			: "البدء عند",
+DlgLstType			: "النوع",
+DlgLstTypeCircle	: "دائرة",
+DlgLstTypeDisc		: "قرص",
+DlgLstTypeSquare	: "مربع",
+DlgLstTypeNumbers	: "أرقام (1، 2، 3)َ",
+DlgLstTypeLCase		: "حروف صغيرة (a, b, c)َ",
+DlgLstTypeUCase		: "حروف كبيرة (A, B, C)َ",
+DlgLstTypeSRoman	: "ترقيم روماني صغير (i, ii, iii)َ",
+DlgLstTypeLRoman	: "ترقيم روماني كبير (I, II, III)َ",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "عام",
+DlgDocBackTab		: "الخلفية",
+DlgDocColorsTab		: "الألوان والهوامش",
+DlgDocMetaTab		: "المعرّفات الرأسية",
+
+DlgDocPageTitle		: "عنوان الصفحة",
+DlgDocLangDir		: "إتجاه اللغة",
+DlgDocLangDirLTR	: "اليسار لليمين (LTR)",
+DlgDocLangDirRTL	: "اليمين لليسار (RTL)",
+DlgDocLangCode		: "رمز اللغة",
+DlgDocCharSet		: "ترميز الحروف",
+DlgDocCharSetCE		: "أوروبا الوسطى",
+DlgDocCharSetCT		: "الصينية التقليدية (Big5)",
+DlgDocCharSetCR		: "السيريلية",
+DlgDocCharSetGR		: "اليونانية",
+DlgDocCharSetJP		: "اليابانية",
+DlgDocCharSetKR		: "الكورية",
+DlgDocCharSetTR		: "التركية",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "أوروبا الغربية",
+DlgDocCharSetOther	: "ترميز آخر",
+
+DlgDocDocType		: "ترويسة نوع  الصفحة",
+DlgDocDocTypeOther	: "ترويسة نوع  صفحة أخرى",
+DlgDocIncXHTML		: "تضمين   إعلانات‏ لغة XHTMLَ",
+DlgDocBgColor		: "لون الخلفية",
+DlgDocBgImage		: "رابط الصورة الخلفية",
+DlgDocBgNoScroll	: "جعلها علامة مائية",
+DlgDocCText			: "النص",
+DlgDocCLink			: "الروابط",
+DlgDocCVisited		: "المزارة",
+DlgDocCActive		: "النشطة",
+DlgDocMargins		: "هوامش الصفحة",
+DlgDocMaTop			: "علوي",
+DlgDocMaLeft		: "أيسر",
+DlgDocMaRight		: "أيمن",
+DlgDocMaBottom		: "سفلي",
+DlgDocMeIndex		: "الكلمات الأساسية (مفصولة بفواصل)َ",
+DlgDocMeDescr		: "وصف الصفحة",
+DlgDocMeAuthor		: "الكاتب",
+DlgDocMeCopy		: "المالك",
+DlgDocPreview		: "معاينة",
+
+// Templates Dialog
+Templates			: "القوالب",
+DlgTemplatesTitle	: "قوالب المحتوى",
+DlgTemplatesSelMsg	: "اختر القالب الذي تود وضعه في المحرر <br>(سيتم فقدان المحتوى الحالي):",
+DlgTemplatesLoading	: "جاري تحميل قائمة القوالب، الرجاء الإنتظار...",
+DlgTemplatesNoTpl	: "(لم يتم تعريف أي قالب)",
+DlgTemplatesReplace	: "استبدال المحتوى",
+
+// About Dialog
+DlgAboutAboutTab	: "نبذة",
+DlgAboutBrowserInfoTab	: "معلومات متصفحك",
+DlgAboutLicenseTab	: "الترخيص",
+DlgAboutVersion		: "الإصدار",
+DlgAboutInfo		: "لمزيد من المعلومات تفضل بزيارة",
+
+// Div Dialog
+DlgDivGeneralTab	: "عام",
+DlgDivAdvancedTab	: "متقدم",
+DlgDivStyle		: "المظهر",
+DlgDivInlineStyle	: "المظهر المضمن",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/gl.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Galician language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Ocultar Ferramentas",
+ToolbarExpand		: "Mostrar Ferramentas",
+
+// Toolbar Items and Context Menu
+Save				: "Gardar",
+NewPage				: "Nova Páxina",
+Preview				: "Vista Previa",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Pegar",
+PasteText			: "Pegar como texto plano",
+PasteWord			: "Pegar dende Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar todo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Ligazón",
+InsertLink			: "Inserir/Editar Ligazón",
+RemoveLink			: "Eliminar Ligazón",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Inserir/Editar Referencia",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Imaxe",
+InsertImage			: "Inserir/Editar Imaxe",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserir/Editar Flash",
+InsertTableLbl		: "Tabla",
+InsertTable			: "Inserir/Editar Tabla",
+InsertLineLbl		: "Liña",
+InsertLine			: "Inserir Liña Horizontal",
+InsertSpecialCharLbl: "Carácter Special",
+InsertSpecialChar	: "Inserir Carácter Especial",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Inserir Smiley",
+About				: "Acerca de FCKeditor",
+Bold				: "Negrita",
+Italic				: "Cursiva",
+Underline			: "Sub-raiado",
+StrikeThrough		: "Tachado",
+Subscript			: "Subíndice",
+Superscript			: "Superíndice",
+LeftJustify			: "Aliñar á Esquerda",
+CenterJustify		: "Centrado",
+RightJustify		: "Aliñar á Dereita",
+BlockJustify		: "Xustificado",
+DecreaseIndent		: "Disminuir Sangría",
+IncreaseIndent		: "Aumentar Sangría",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Desfacer",
+Redo				: "Refacer",
+NumberedListLbl		: "Lista Numerada",
+NumberedList		: "Inserir/Eliminar Lista Numerada",
+BulletedListLbl		: "Marcas",
+BulletedList		: "Inserir/Eliminar Marcas",
+ShowTableBorders	: "Mostrar Bordes das Táboas",
+ShowDetails			: "Mostrar Marcas Parágrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Tipo",
+FontSize			: "Tamaño",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor do Fondo",
+Source				: "Código Fonte",
+Find				: "Procurar",
+Replace				: "Substituir",
+SpellCheck			: "Corrección Ortográfica",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Páxina",
+PageBreak			: "Inserir Salto de Páxina",
+
+Form			: "Formulario",
+Checkbox		: "Cadro de Verificación",
+RadioButton		: "Botón de Radio",
+TextField		: "Campo de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Oculto",
+Button			: "Botón",
+SelectionField	: "Campo de Selección",
+ImageButton		: "Botón de Imaxe",
+
+FitWindow		: "Maximizar o tamaño do editor",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Editar Ligazón",
+CellCM				: "Cela",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Borrar Filas",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Borrar Columnas",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Borrar Cela",
+MergeCells			: "Unir Celas",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Borrar Táboa",
+CellProperties		: "Propriedades da Cela",
+TableProperties		: "Propriedades da Táboa",
+ImageProperties		: "Propriedades Imaxe",
+FlashProperties		: "Propriedades Flash",
+
+AnchorProp			: "Propriedades da Referencia",
+ButtonProp			: "Propriedades do Botón",
+CheckboxProp		: "Propriedades do Cadro de Verificación",
+HiddenFieldProp		: "Propriedades do Campo Oculto",
+RadioButtonProp		: "Propriedades do Botón de Radio",
+ImageButtonProp		: "Propriedades do Botón de Imaxe",
+TextFieldProp		: "Propriedades do Campo de Texto",
+SelectionFieldProp	: "Propriedades do Campo de Selección",
+TextareaProp		: "Propriedades da Área de Texto",
+FormProp			: "Propriedades do Formulario",
+
+FontFormats			: "Normal;Formateado;Enderezo;Enacabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Procesando XHTML. Por facor, agarde...",
+Done				: "Feiro",
+PasteWordConfirm	: "Parece que o texto que quere pegar está copiado do Word.¿Quere limpar o formato antes de pegalo?",
+NotCompatiblePaste	: "Este comando está disponible para Internet Explorer versión 5.5 ou superior. ¿Quere pegalo sen limpar o formato?",
+UnknownToolbarItem	: "Ítem de ferramentas descoñecido \"%1\"",
+UnknownCommand		: "Nome de comando descoñecido \"%1\"",
+NotImplemented		: "Comando non implementado",
+UnknownToolbarSet	: "O conxunto de ferramentas \"%1\" non existe",
+NoActiveX			: "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros",
+BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+DialogBlocked		: "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Pechar",
+DlgBtnBrowseServer	: "Navegar no Servidor",
+DlgAdvancedTag		: "Advanzado",
+DlgOpOther			: "<Outro>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Por favor, insira a URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<non definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientación do Idioma",
+DlgGenLangDirLtr	: "Esquerda a Dereita (LTR)",
+DlgGenLangDirRtl	: "Dereita a Esquerda (RTL)",
+DlgGenLangCode		: "Código do Idioma",
+DlgGenAccessKey		: "Chave de Acceso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tabulación",
+DlgGenLongDescr		: "Descrición Completa da URL",
+DlgGenClass			: "Clases da Folla de Estilos",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Contido",
+DlgGenLinkCharset	: "Fonte de Caracteres Vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propriedades da Imaxe",
+DlgImgInfoTab		: "Información da Imaxe",
+DlgImgBtnUpload		: "Enviar ó Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carregar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamaño Orixinal",
+DlgImgBorder		: "Límite",
+DlgImgHSpace		: "Esp. Horiz.",
+DlgImgVSpace		: "Esp. Vert.",
+DlgImgAlign			: "Aliñamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Abs Inferior",
+DlgImgAlignAbsMiddle: "Abs Centro",
+DlgImgAlignBaseline	: "Liña Base",
+DlgImgAlignBottom	: "Pé",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Dereita",
+DlgImgAlignTextTop	: "Tope do Texto",
+DlgImgAlignTop		: "Tope",
+DlgImgPreview		: "Vista Previa",
+DlgImgAlertUrl		: "Por favor, escriba a URL da imaxe",
+DlgImgLinkTab		: "Ligazón",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades Flash",
+DlgFlashChkPlay		: "Auto Execución",
+DlgFlashChkLoop		: "Bucle",
+DlgFlashChkMenu		: "Activar Menú Flash",
+DlgFlashScale		: "Escalar",
+DlgFlashScaleAll	: "Amosar Todo",
+DlgFlashScaleNoBorder	: "Sen Borde",
+DlgFlashScaleFit	: "Encaixar axustando",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ligazón",
+DlgLnkInfoTab		: "Información da Ligazón",
+DlgLnkTargetTab		: "Referencia a esta páxina",
+
+DlgLnkType			: "Tipo de Ligazón",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referencia nesta páxina",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar unha Referencia",
+DlgLnkAnchorByName	: "Por Nome de Referencia",
+DlgLnkAnchorById	: "Por Element Id",
+DlgLnkNoAnchors		: "(Non hai referencias disponibles no documento)",
+DlgLnkEMail			: "Enderezo de E-Mail",
+DlgLnkEMailSubject	: "Asunto do Mensaxe",
+DlgLnkEMailBody		: "Corpo do Mensaxe",
+DlgLnkUpload		: "Carregar",
+DlgLnkBtnUpload		: "Enviar ó servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<Xanela Emerxente>",
+DlgLnkTargetBlank	: "Nova Xanela (_blank)",
+DlgLnkTargetParent	: "Xanela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma Xanela (_self)",
+DlgLnkTargetTop		: "Xanela Primaria (_top)",
+DlgLnkTargetFrameName	: "Nome do Marco Destino",
+DlgLnkPopWinName	: "Nome da Xanela Emerxente",
+DlgLnkPopWinFeat	: "Características da Xanela Emerxente",
+DlgLnkPopResize		: "Axustable",
+DlgLnkPopLocation	: "Barra de Localización",
+DlgLnkPopMenu		: "Barra de Menú",
+DlgLnkPopScroll		: "Barras de Desplazamento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "A Toda Pantalla (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posición Esquerda",
+DlgLnkPopTop		: "Posición dende Arriba",
+
+DlnLnkMsgNoUrl		: "Por favor, escriba a ligazón URL",
+DlnLnkMsgNoEMail	: "Por favor, escriba o enderezo de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor, seleccione un destino",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Color",
+DlgColorBtnClear	: "Nengunha",
+DlgColorHighlight	: "Destacado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserte un Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione Caracter Especial",
+
+// Table Dialog
+DlgTableTitle		: "Propiedades da Táboa",
+DlgTableRows		: "Filas",
+DlgTableColumns		: "Columnas",
+DlgTableBorder		: "Tamaño do Borde",
+DlgTableAlign		: "Aliñamento",
+DlgTableAlignNotSet	: "<Non Definido>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centro",
+DlgTableAlignRight	: "Ereita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Marxe entre Celas",
+DlgTableCellPad		: "Marxe interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumario",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriedades da Cela",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Axustar Liñas",
+DlgCellWordWrapNotSet	: "<Non Definido>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Aliñamento Horizontal",
+DlgCellHorAlignNotSet	: "<Non definido>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centro",
+DlgCellHorAlignRight: "Dereita",
+DlgCellVerAlign		: "Aliñamento Vertical",
+DlgCellVerAlignNotSet	: "<Non definido>",
+DlgCellVerAlignTop	: "Arriba",
+DlgCellVerAlignMiddle	: "Medio",
+DlgCellVerAlignBottom	: "Abaixo",
+DlgCellVerAlignBaseline	: "Liña de Base",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Ocupar Filas",
+DlgCellCollSpan		: "Ocupar Columnas",
+DlgCellBackColor	: "Color de Fondo",
+DlgCellBorderColor	: "Color de Borde",
+DlgCellBtnSelect	: "Seleccionar...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Procurar",
+DlgFindFindBtn		: "Procurar",
+DlgFindNotFoundMsg	: "Non te atopou o texto indicado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Texto a procurar:",
+DlgReplaceReplaceLbl	: "Substituir con:",
+DlgReplaceCaseChk		: "Coincidir Mai./min.",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substitiur Todo",
+DlgReplaceWordChk		: "Coincidir con toda a palabra",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).",
+PasteErrorCopy	: "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).",
+
+PasteAsText		: "Pegar como texto plano",
+PasteFromWord	: "Pegar dende Word",
+
+DlgPasteMsg2	: "Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignorar as definicións de Tipografía",
+DlgPasteRemoveStyles	: "Eliminar as definicións de Estilos",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Máis Cores...",
+
+// Document Properties
+DocProps		: "Propriedades do Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriedades da Referencia",
+DlgAnchorName		: "Nome da Referencia",
+DlgAnchorErrorName	: "Por favor, escriba o nome da referencia",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Non está no diccionario",
+DlgSpellChangeTo		: "Cambiar a",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Todas",
+DlgSpellBtnReplace		: "Substituir",
+DlgSpellBtnReplaceAll	: "Substituir Todas",
+DlgSpellBtnUndo			: "Desfacer",
+DlgSpellNoSuggestions	: "- Sen candidatos -",
+DlgSpellProgress		: "Corrección ortográfica en progreso...",
+DlgSpellNoMispell		: "Corrección ortográfica rematada: Non se atoparon erros",
+DlgSpellNoChanges		: "Corrección ortográfica rematada: Non se substituiu nengunha verba",
+DlgSpellOneChange		: "Corrección ortográfica rematada: Unha verba substituida",
+DlgSpellManyChanges		: "Corrección ortográfica rematada: %1 verbas substituidas",
+
+IeSpellDownload			: "O corrector ortográfico non está instalado. ¿Quere descargalo agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Acción",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamaño",
+DlgSelectLines		: "liñas",
+DlgSelectChkMulti	: "Permitir múltiples seleccións",
+DlgSelectOpAvail	: "Opcións Disponibles",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Engadir",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Subir",
+DlgSelectBtnDown	: "Baixar",
+DlgSelectBtnSetValue : "Definir como valor por defecto",
+DlgSelectBtnDelete	: "Borrar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Columnas",
+DlgTextareaRows	: "Filas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Tamaño do Caracter",
+DlgTextMaxChars		: "Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Chave",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriedades das Marcas",
+NumberedListProp	: "Propriedades da Lista de Numeración",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Círculo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Cuadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Números Romanos en minúscula (i, ii, iii)",
+DlgLstTypeLRoman	: "Números Romanos en Maiúscula (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Xeral",
+DlgDocBackTab		: "Fondo",
+DlgDocColorsTab		: "Cores e Marxes",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Título da Páxina",
+DlgDocLangDir		: "Orientación do Idioma",
+DlgDocLangDirLTR	: "Esquerda a Dereita (LTR)",
+DlgDocLangDirRTL	: "Dereita a Esquerda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codificación do Xogo de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Outra Codificación do Xogo de Caracteres",
+
+DlgDocDocType		: "Encabezado do Tipo de Documento",
+DlgDocDocTypeOther	: "Outro Encabezado do Tipo de Documento",
+DlgDocIncXHTML		: "Incluir Declaracións XHTML",
+DlgDocBgColor		: "Cor de Fondo",
+DlgDocBgImage		: "URL da Imaxe de Fondo",
+DlgDocBgNoScroll	: "Fondo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Ligazóns",
+DlgDocCVisited		: "Ligazón Visitada",
+DlgDocCActive		: "Ligazón Activa",
+DlgDocMargins		: "Marxes da Páxina",
+DlgDocMaTop			: "Arriba",
+DlgDocMaLeft		: "Esquerda",
+DlgDocMaRight		: "Dereita",
+DlgDocMaBottom		: "Abaixo",
+DlgDocMeIndex		: "Palabras Chave de Indexación do Documento (separadas por comas)",
+DlgDocMeDescr		: "Descripción do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista Previa",
+
+// Templates Dialog
+Templates			: "Plantillas",
+DlgTemplatesTitle	: "Plantillas de Contido",
+DlgTemplatesSelMsg	: "Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):",
+DlgTemplatesLoading	: "Cargando listado de plantillas. Por favor, espere...",
+DlgTemplatesNoTpl	: "(Non hai plantillas definidas)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca de",
+DlgAboutBrowserInfoTab	: "Información do Navegador",
+DlgAboutLicenseTab	: "Licencia",
+DlgAboutVersion		: "versión",
+DlgAboutInfo		: "Para máis información visitar:",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/_translationstatus.txt
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/_translationstatus.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/_translationstatus.txt	(revision 1610)
@@ -0,0 +1,79 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Translations Status.
+ */
+
+af.js      Found: 396   Missing: 36
+ar.js      Found: 420   Missing: 12
+bg.js      Found: 373   Missing: 59
+bn.js      Found: 380   Missing: 52
+bs.js      Found: 226   Missing: 206
+ca.js      Found: 420   Missing: 12
+cs.js      Found: 432   Missing: 0
+da.js      Found: 419   Missing: 13
+de.js      Found: 420   Missing: 12
+el.js      Found: 396   Missing: 36
+en-au.js   Found: 423   Missing: 9
+en-ca.js   Found: 423   Missing: 9
+en-uk.js   Found: 423   Missing: 9
+eo.js      Found: 346   Missing: 86
+es.js      Found: 428   Missing: 4
+et.js      Found: 411   Missing: 21
+eu.js      Found: 420   Missing: 12
+fa.js      Found: 413   Missing: 19
+fi.js      Found: 427   Missing: 5
+fo.js      Found: 420   Missing: 12
+fr-ca.js   Found: 419   Missing: 13
+fr.js      Found: 428   Missing: 4
+gl.js      Found: 381   Missing: 51
+gu.js      Found: 411   Missing: 21
+he.js      Found: 428   Missing: 4
+hi.js      Found: 420   Missing: 12
+hr.js      Found: 420   Missing: 12
+hu.js      Found: 411   Missing: 21
+is.js      Found: 428   Missing: 4
+it.js      Found: 410   Missing: 22
+ja.js      Found: 420   Missing: 12
+km.js      Found: 370   Missing: 62
+ko.js      Found: 391   Missing: 41
+lt.js      Found: 428   Missing: 4
+lv.js      Found: 381   Missing: 51
+mn.js      Found: 411   Missing: 21
+ms.js      Found: 352   Missing: 80
+nb.js      Found: 414   Missing: 18
+nl.js      Found: 420   Missing: 12
+no.js      Found: 414   Missing: 18
+pl.js      Found: 412   Missing: 20
+pt-br.js   Found: 411   Missing: 21
+pt.js      Found: 381   Missing: 51
+ro.js      Found: 410   Missing: 22
+ru.js      Found: 427   Missing: 5
+sk.js      Found: 420   Missing: 12
+sl.js      Found: 426   Missing: 6
+sr-latn.js Found: 368   Missing: 64
+sr.js      Found: 368   Missing: 64
+sv.js      Found: 431   Missing: 1
+th.js      Found: 393   Missing: 39
+tr.js      Found: 428   Missing: 4
+uk.js      Found: 419   Missing: 13
+vi.js      Found: 419   Missing: 13
+zh-cn.js   Found: 428   Missing: 4
+zh.js      Found: 423   Missing: 9
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fr.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * French language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Masquer Outils",
+ToolbarExpand		: "Afficher Outils",
+
+// Toolbar Items and Context Menu
+Save				: "Enregistrer",
+NewPage				: "Nouvelle page",
+Preview				: "Prévisualisation",
+Cut					: "Couper",
+Copy				: "Copier",
+Paste				: "Coller",
+PasteText			: "Coller comme texte",
+PasteWord			: "Coller de Word",
+Print				: "Imprimer",
+SelectAll			: "Tout sélectionner",
+RemoveFormat		: "Supprimer le format",
+InsertLinkLbl		: "Lien",
+InsertLink			: "Insérer/modifier le lien",
+RemoveLink			: "Supprimer le lien",
+VisitLink			: "Suivre le lien",
+Anchor				: "Insérer/modifier l'ancre",
+AnchorDelete		: "Supprimer l'ancre",
+InsertImageLbl		: "Image",
+InsertImage			: "Insérer/modifier l'image",
+InsertFlashLbl		: "Animation Flash",
+InsertFlash			: "Insérer/modifier l'animation Flash",
+InsertTableLbl		: "Tableau",
+InsertTable			: "Insérer/modifier le tableau",
+InsertLineLbl		: "Séparateur",
+InsertLine			: "Insérer un séparateur",
+InsertSpecialCharLbl: "Caractères spéciaux",
+InsertSpecialChar	: "Insérer un caractère spécial",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insérer un Smiley",
+About				: "A propos de FCKeditor",
+Bold				: "Gras",
+Italic				: "Italique",
+Underline			: "Souligné",
+StrikeThrough		: "Barré",
+Subscript			: "Indice",
+Superscript			: "Exposant",
+LeftJustify			: "Aligné à gauche",
+CenterJustify		: "Centré",
+RightJustify		: "Aligné à Droite",
+BlockJustify		: "Texte justifié",
+DecreaseIndent		: "Diminuer le retrait",
+IncreaseIndent		: "Augmenter le retrait",
+Blockquote			: "Citation",
+CreateDiv			: "Créer Balise Div",
+EditDiv				: "Modifier Balise Div",
+DeleteDiv			: "Supprimer Balise Div",
+Undo				: "Annuler",
+Redo				: "Refaire",
+NumberedListLbl		: "Liste numérotée",
+NumberedList		: "Insérer/supprimer la liste numérotée",
+BulletedListLbl		: "Liste à puces",
+BulletedList		: "Insérer/supprimer la liste à puces",
+ShowTableBorders	: "Afficher les bordures du tableau",
+ShowDetails			: "Afficher les caractères invisibles",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Police",
+FontSize			: "Taille",
+TextColor			: "Couleur de caractère",
+BGColor				: "Couleur de fond",
+Source				: "Source",
+Find				: "Chercher",
+Replace				: "Remplacer",
+SpellCheck			: "Orthographe",
+UniversalKeyboard	: "Clavier universel",
+PageBreakLbl		: "Saut de page",
+PageBreak			: "Insérer un saut de page",
+
+Form			: "Formulaire",
+Checkbox		: "Case à cocher",
+RadioButton		: "Bouton radio",
+TextField		: "Champ texte",
+Textarea		: "Zone de texte",
+HiddenField		: "Champ caché",
+Button			: "Bouton",
+SelectionField	: "Liste/menu",
+ImageButton		: "Bouton image",
+
+FitWindow		: "Edition pleine page",
+ShowBlocks		: "Afficher les blocs",
+
+// Context Menu
+EditLink			: "Modifier le lien",
+CellCM				: "Cellule",
+RowCM				: "Ligne",
+ColumnCM			: "Colonne",
+InsertRowAfter		: "Insérer une ligne après",
+InsertRowBefore		: "Insérer une ligne avant",
+DeleteRows			: "Supprimer des lignes",
+InsertColumnAfter	: "Insérer une colonne après",
+InsertColumnBefore	: "Insérer une colonne avant",
+DeleteColumns		: "Supprimer des colonnes",
+InsertCellAfter		: "Insérer une cellule après",
+InsertCellBefore	: "Insérer une cellule avant",
+DeleteCells			: "Supprimer des cellules",
+MergeCells			: "Fusionner les cellules",
+MergeRight			: "Fusionner à droite",
+MergeDown			: "Fusionner en bas",
+HorizontalSplitCell	: "Scinder la cellule horizontalement",
+VerticalSplitCell	: "Scinder la cellule verticalement",
+TableDelete			: "Supprimer le tableau",
+CellProperties		: "Propriétés de cellule",
+TableProperties		: "Propriétés du tableau",
+ImageProperties		: "Propriétés de l'image",
+FlashProperties		: "Propriétés de l'animation Flash",
+
+AnchorProp			: "Propriétés de l'ancre",
+ButtonProp			: "Propriétés du bouton",
+CheckboxProp		: "Propriétés de la case à cocher",
+HiddenFieldProp		: "Propriétés du champ caché",
+RadioButtonProp		: "Propriétés du bouton radio",
+ImageButtonProp		: "Propriétés du bouton image",
+TextFieldProp		: "Propriétés du champ texte",
+SelectionFieldProp	: "Propriétés de la liste/du menu",
+TextareaProp		: "Propriétés de la zone de texte",
+FormProp			: "Propriétés du formulaire",
+
+FontFormats			: "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Calcul XHTML. Veuillez patienter...",
+Done				: "Terminé",
+PasteWordConfirm	: "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
+NotCompatiblePaste	: "Cette commande nécessite Internet Explorer version 5.5 minimum. Souhaitez-vous coller sans nettoyage?",
+UnknownToolbarItem	: "Elément de barre d'outil inconnu \"%1\"",
+UnknownCommand		: "Nom de commande inconnu \"%1\"",
+NotImplemented		: "Commande non encore écrite",
+UnknownToolbarSet	: "La barre d'outils \"%1\" n'existe pas",
+NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
+BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
+DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
+VisitLinkBlocked	: "Impossible d'ouvrir une nouvelle fenêtre. Assurez-vous que les bloqueurs de popups soient désactivés.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuler",
+DlgBtnClose			: "Fermer",
+DlgBtnBrowseServer	: "Parcourir le serveur",
+DlgAdvancedTag		: "Avancé",
+DlgOpOther			: "<Autre>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Veuillez saisir l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Par défaut>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Sens d'écriture",
+DlgGenLangDirLtr	: "De gauche à droite (LTR)",
+DlgGenLangDirRtl	: "De droite à gauche (RTL)",
+DlgGenLangCode		: "Code langue",
+DlgGenAccessKey		: "Equivalent clavier",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Ordre de tabulation",
+DlgGenLongDescr		: "URL de description longue",
+DlgGenClass			: "Classes de feuilles de style",
+DlgGenTitle			: "Titre",
+DlgGenContType		: "Type de contenu",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Encodage de caractère",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Propriétés de l'image",
+DlgImgInfoTab		: "Informations sur l'image",
+DlgImgBtnUpload		: "Envoyer sur le serveur",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Télécharger",
+DlgImgAlt			: "Texte de remplacement",
+DlgImgWidth			: "Largeur",
+DlgImgHeight		: "Hauteur",
+DlgImgLockRatio		: "Garder les proportions",
+DlgBtnResetSize		: "Taille originale",
+DlgImgBorder		: "Bordure",
+DlgImgHSpace		: "Espacement horizontal",
+DlgImgVSpace		: "Espacement vertical",
+DlgImgAlign			: "Alignement",
+DlgImgAlignLeft		: "Gauche",
+DlgImgAlignAbsBottom: "Abs Bas",
+DlgImgAlignAbsMiddle: "Abs Milieu",
+DlgImgAlignBaseline	: "Bas du texte",
+DlgImgAlignBottom	: "Bas",
+DlgImgAlignMiddle	: "Milieu",
+DlgImgAlignRight	: "Droite",
+DlgImgAlignTextTop	: "Haut du texte",
+DlgImgAlignTop		: "Haut",
+DlgImgPreview		: "Prévisualisation",
+DlgImgAlertUrl		: "Veuillez saisir l'URL de l'image",
+DlgImgLinkTab		: "Lien",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriétés de l'animation Flash",
+DlgFlashChkPlay		: "Lecture automatique",
+DlgFlashChkLoop		: "Boucle",
+DlgFlashChkMenu		: "Activer le menu Flash",
+DlgFlashScale		: "Affichage",
+DlgFlashScaleAll	: "Par défaut (tout montrer)",
+DlgFlashScaleNoBorder	: "Sans bordure",
+DlgFlashScaleFit	: "Ajuster aux dimensions",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Propriétés du lien",
+DlgLnkInfoTab		: "Informations sur le lien",
+DlgLnkTargetTab		: "Destination",
+
+DlgLnkType			: "Type de lien",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancre dans cette page",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocole",
+DlgLnkProtoOther	: "<autre>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Sélectionner une ancre",
+DlgLnkAnchorByName	: "Par nom",
+DlgLnkAnchorById	: "Par id",
+DlgLnkNoAnchors		: "(Pas d'ancre disponible dans le document)",
+DlgLnkEMail			: "Adresse E-Mail",
+DlgLnkEMailSubject	: "Sujet du message",
+DlgLnkEMailBody		: "Corps du message",
+DlgLnkUpload		: "Télécharger",
+DlgLnkBtnUpload		: "Envoyer sur le serveur",
+
+DlgLnkTarget		: "Destination",
+DlgLnkTargetFrame	: "<Cadre>",
+DlgLnkTargetPopup	: "<fenêtre popup>",
+DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
+DlgLnkTargetParent	: "Fenêtre mère (_parent)",
+DlgLnkTargetSelf	: "Même fenêtre (_self)",
+DlgLnkTargetTop		: "Fenêtre supérieure (_top)",
+DlgLnkTargetFrameName	: "Nom du cadre de destination",
+DlgLnkPopWinName	: "Nom de la fenêtre popup",
+DlgLnkPopWinFeat	: "Caractéristiques de la fenêtre popup",
+DlgLnkPopResize		: "Taille modifiable",
+DlgLnkPopLocation	: "Barre d'adresses",
+DlgLnkPopMenu		: "Barre de menu",
+DlgLnkPopScroll		: "Barres de défilement",
+DlgLnkPopStatus		: "Barre d'état",
+DlgLnkPopToolbar	: "Barre d'outils",
+DlgLnkPopFullScrn	: "Plein écran (IE)",
+DlgLnkPopDependent	: "Dépendante (Netscape)",
+DlgLnkPopWidth		: "Largeur",
+DlgLnkPopHeight		: "Hauteur",
+DlgLnkPopLeft		: "Position à partir de la gauche",
+DlgLnkPopTop		: "Position à partir du haut",
+
+DlnLnkMsgNoUrl		: "Veuillez saisir l'URL",
+DlnLnkMsgNoEMail	: "Veuillez saisir l'adresse e-mail",
+DlnLnkMsgNoAnchor	: "Veuillez sélectionner une ancre",
+DlnLnkMsgInvPopName	: "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
+
+// Color Dialog
+DlgColorTitle		: "Sélectionner",
+DlgColorBtnClear	: "Effacer",
+DlgColorHighlight	: "Prévisualisation",
+DlgColorSelected	: "Sélectionné",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insérer un Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Insérer un caractère spécial",
+
+// Table Dialog
+DlgTableTitle		: "Propriétés du tableau",
+DlgTableRows		: "Lignes",
+DlgTableColumns		: "Colonnes",
+DlgTableBorder		: "Bordure",
+DlgTableAlign		: "Alignement",
+DlgTableAlignNotSet	: "<Par défaut>",
+DlgTableAlignLeft	: "Gauche",
+DlgTableAlignCenter	: "Centré",
+DlgTableAlignRight	: "Droite",
+DlgTableWidth		: "Largeur",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "pourcentage",
+DlgTableHeight		: "Hauteur",
+DlgTableCellSpace	: "Espacement",
+DlgTableCellPad		: "Contour",
+DlgTableCaption		: "Titre",
+DlgTableSummary		: "Résumé",
+DlgTableHeaders		: "Entêtes",
+DlgTableHeadersNone		: "Sans",
+DlgTableHeadersColumn	: "Première colonne",
+DlgTableHeadersRow		: "Première Ligne",
+DlgTableHeadersBoth		: "Les 2",
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriétés de la cellule",
+DlgCellWidth		: "Largeur",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "pourcentage",
+DlgCellHeight		: "Hauteur",
+DlgCellWordWrap		: "Retour à la ligne",
+DlgCellWordWrapNotSet	: "<Par défaut>",
+DlgCellWordWrapYes	: "Oui",
+DlgCellWordWrapNo	: "Non",
+DlgCellHorAlign		: "Alignement horizontal",
+DlgCellHorAlignNotSet	: "<Par défaut>",
+DlgCellHorAlignLeft	: "Gauche",
+DlgCellHorAlignCenter	: "Centré",
+DlgCellHorAlignRight: "Droite",
+DlgCellVerAlign		: "Alignement vertical",
+DlgCellVerAlignNotSet	: "<Par défaut>",
+DlgCellVerAlignTop	: "Haut",
+DlgCellVerAlignMiddle	: "Milieu",
+DlgCellVerAlignBottom	: "Bas",
+DlgCellVerAlignBaseline	: "Bas du texte",
+DlgCellType		: "Type de Cellule",
+DlgCellTypeData		: "Données",
+DlgCellTypeHeader	: "Entête",
+DlgCellRowSpan		: "Lignes fusionnées",
+DlgCellCollSpan		: "Colonnes fusionnées",
+DlgCellBackColor	: "Fond",
+DlgCellBorderColor	: "Bordure",
+DlgCellBtnSelect	: "Choisir...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Chercher et Remplacer",
+
+// Find Dialog
+DlgFindTitle		: "Chercher",
+DlgFindFindBtn		: "Chercher",
+DlgFindNotFoundMsg	: "Le texte indiqué est introuvable.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Remplacer",
+DlgReplaceFindLbl		: "Rechercher:",
+DlgReplaceReplaceLbl	: "Remplacer par:",
+DlgReplaceCaseChk		: "Respecter la casse",
+DlgReplaceReplaceBtn	: "Remplacer",
+DlgReplaceReplAllBtn	: "Tout remplacer",
+DlgReplaceWordChk		: "Mot entier",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
+PasteErrorCopy	: "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
+
+PasteAsText		: "Coller comme texte",
+PasteFromWord	: "Coller à partir de Word",
+
+DlgPasteMsg2	: "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et cliquez sur <STRONG>OK</STRONG>.",
+DlgPasteSec		: "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",
+DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
+DlgPasteRemoveStyles	: "Supprimer les styles",
+
+// Color Picker
+ColorAutomatic	: "Automatique",
+ColorMoreColors	: "Plus de couleurs...",
+
+// Document Properties
+DocProps		: "Propriétés du document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriétés de l'ancre",
+DlgAnchorName		: "Nom de l'ancre",
+DlgAnchorErrorName	: "Veuillez saisir le nom de l'ancre",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Pas dans le dictionnaire",
+DlgSpellChangeTo		: "Changer en",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer tout",
+DlgSpellBtnReplace		: "Remplacer",
+DlgSpellBtnReplaceAll	: "Remplacer tout",
+DlgSpellBtnUndo			: "Annuler",
+DlgSpellNoSuggestions	: "- Aucune suggestion -",
+DlgSpellProgress		: "Vérification d'orthographe en cours...",
+DlgSpellNoMispell		: "Vérification d'orthographe terminée: Aucune erreur trouvée",
+DlgSpellNoChanges		: "Vérification d'orthographe terminée: Pas de modifications",
+DlgSpellOneChange		: "Vérification d'orthographe terminée: Un mot modifié",
+DlgSpellManyChanges		: "Vérification d'orthographe terminée: %1 mots modifiés",
+
+IeSpellDownload			: "Le Correcteur n'est pas installé. Souhaitez-vous le télécharger maintenant?",
+
+// Button Dialog
+DlgButtonText		: "Texte (valeur)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Bouton",
+DlgButtonTypeSbm	: "Envoyer",
+DlgButtonTypeRst	: "Réinitialiser",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valeur",
+DlgCheckboxSelected	: "Sélectionné",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Méthode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valeur",
+DlgSelectSize		: "Taille",
+DlgSelectLines		: "lignes",
+DlgSelectChkMulti	: "Sélection multiple",
+DlgSelectOpAvail	: "Options disponibles",
+DlgSelectOpText		: "Texte",
+DlgSelectOpValue	: "Valeur",
+DlgSelectBtnAdd		: "Ajouter",
+DlgSelectBtnModify	: "Modifier",
+DlgSelectBtnUp		: "Monter",
+DlgSelectBtnDown	: "Descendre",
+DlgSelectBtnSetValue : "Valeur sélectionnée",
+DlgSelectBtnDelete	: "Supprimer",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Colonnes",
+DlgTextareaRows	: "Lignes",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valeur",
+DlgTextCharWidth	: "Largeur en caractères",
+DlgTextMaxChars		: "Nombre maximum de caractères",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Texte",
+DlgTextTypePass		: "Mot de passe",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valeur",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriétés de liste à puces",
+NumberedListProp	: "Propriétés de liste numérotée",
+DlgLstStart			: "Début",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disque",
+DlgLstTypeSquare	: "Carré",
+DlgLstTypeNumbers	: "Nombres (1, 2, 3)",
+DlgLstTypeLCase		: "Lettres minuscules (a, b, c)",
+DlgLstTypeUCase		: "Lettres majuscules (A, B, C)",
+DlgLstTypeSRoman	: "Chiffres romains minuscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Chiffres romains majuscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Général",
+DlgDocBackTab		: "Fond",
+DlgDocColorsTab		: "Couleurs et marges",
+DlgDocMetaTab		: "Métadonnées",
+
+DlgDocPageTitle		: "Titre de la page",
+DlgDocLangDir		: "Sens d'écriture",
+DlgDocLangDirLTR	: "De la gauche vers la droite (LTR)",
+DlgDocLangDirRTL	: "De la droite vers la gauche (RTL)",
+DlgDocLangCode		: "Code langue",
+DlgDocCharSet		: "Encodage de caractère",
+DlgDocCharSetCE		: "Europe Centrale",
+DlgDocCharSetCT		: "Chinois Traditionnel (Big5)",
+DlgDocCharSetCR		: "Cyrillique",
+DlgDocCharSetGR		: "Grec",
+DlgDocCharSetJP		: "Japonais",
+DlgDocCharSetKR		: "Coréen",
+DlgDocCharSetTR		: "Turc",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Occidental",
+DlgDocCharSetOther	: "Autre encodage de caractère",
+
+DlgDocDocType		: "Type de document",
+DlgDocDocTypeOther	: "Autre type de document",
+DlgDocIncXHTML		: "Inclure les déclarations XHTML",
+DlgDocBgColor		: "Couleur de fond",
+DlgDocBgImage		: "Image de fond",
+DlgDocBgNoScroll	: "Image fixe sans défilement",
+DlgDocCText			: "Texte",
+DlgDocCLink			: "Lien",
+DlgDocCVisited		: "Lien visité",
+DlgDocCActive		: "Lien activé",
+DlgDocMargins		: "Marges",
+DlgDocMaTop			: "Haut",
+DlgDocMaLeft		: "Gauche",
+DlgDocMaRight		: "Droite",
+DlgDocMaBottom		: "Bas",
+DlgDocMeIndex		: "Mots-clés (séparés par des virgules)",
+DlgDocMeDescr		: "Description",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Prévisualisation",
+
+// Templates Dialog
+Templates			: "Modèles",
+DlgTemplatesTitle	: "Modèles de contenu",
+DlgTemplatesSelMsg	: "Veuillez sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
+DlgTemplatesLoading	: "Chargement de la liste des modèles. Veuillez patienter...",
+DlgTemplatesNoTpl	: "(Aucun modèle disponible)",
+DlgTemplatesReplace	: "Remplacer tout le contenu",
+
+// About Dialog
+DlgAboutAboutTab	: "A propos de",
+DlgAboutBrowserInfoTab	: "Navigateur",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "Version",
+DlgAboutInfo		: "Pour plus d'informations, aller à",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Général",
+DlgDivAdvancedTab	: "Avancé",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Attribut Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/et.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/et.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/et.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Estonian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Voldi tööriistariba",
+ToolbarExpand		: "Laienda tööriistariba",
+
+// Toolbar Items and Context Menu
+Save				: "Salvesta",
+NewPage				: "Uus leht",
+Preview				: "Eelvaade",
+Cut					: "Lõika",
+Copy				: "Kopeeri",
+Paste				: "Kleebi",
+PasteText			: "Kleebi tavalise tekstina",
+PasteWord			: "Kleebi Wordist",
+Print				: "Prindi",
+SelectAll			: "Vali kõik",
+RemoveFormat		: "Eemalda vorming",
+InsertLinkLbl		: "Link",
+InsertLink			: "Sisesta link / Muuda linki",
+RemoveLink			: "Eemalda link",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Sisesta ankur / Muuda ankrut",
+AnchorDelete		: "Eemalda ankur",
+InsertImageLbl		: "Pilt",
+InsertImage			: "Sisesta pilt / Muuda pilti",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sisesta flash / Muuda flashi",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Sisesta tabel / Muuda tabelit",
+InsertLineLbl		: "Joon",
+InsertLine			: "Sisesta horisontaaljoon",
+InsertSpecialCharLbl: "Erimärgid",
+InsertSpecialChar	: "Sisesta erimärk",
+InsertSmileyLbl		: "Emotikon",
+InsertSmiley		: "Sisesta emotikon",
+About				: "FCKeditor teave",
+Bold				: "Paks",
+Italic				: "Kursiiv",
+Underline			: "Allajoonitud",
+StrikeThrough		: "Läbijoonitud",
+Subscript			: "Allindeks",
+Superscript			: "Ülaindeks",
+LeftJustify			: "Vasakjoondus",
+CenterJustify		: "Keskjoondus",
+RightJustify		: "Paremjoondus",
+BlockJustify		: "Rööpjoondus",
+DecreaseIndent		: "Vähenda taanet",
+IncreaseIndent		: "Suurenda taanet",
+Blockquote			: "Blokktsitaat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Võta tagasi",
+Redo				: "Korda toimingut",
+NumberedListLbl		: "Nummerdatud loetelu",
+NumberedList		: "Sisesta/Eemalda nummerdatud loetelu",
+BulletedListLbl		: "Punktiseeritud loetelu",
+BulletedList		: "Sisesta/Eemalda punktiseeritud loetelu",
+ShowTableBorders	: "Näita tabeli jooni",
+ShowDetails			: "Näita üksikasju",
+Style				: "Laad",
+FontFormat			: "Vorming",
+Font				: "Kiri",
+FontSize			: "Suurus",
+TextColor			: "Teksti värv",
+BGColor				: "Tausta värv",
+Source				: "Lähtekood",
+Find				: "Otsi",
+Replace				: "Asenda",
+SpellCheck			: "Kontrolli õigekirja",
+UniversalKeyboard	: "Universaalne klaviatuur",
+PageBreakLbl		: "Lehepiir",
+PageBreak			: "Sisesta lehevahetuskoht",
+
+Form			: "Vorm",
+Checkbox		: "Märkeruut",
+RadioButton		: "Raadionupp",
+TextField		: "Tekstilahter",
+Textarea		: "Tekstiala",
+HiddenField		: "Varjatud lahter",
+Button			: "Nupp",
+SelectionField	: "Valiklahter",
+ImageButton		: "Piltnupp",
+
+FitWindow		: "Maksimeeri redaktori mõõtmed",
+ShowBlocks		: "Näita blokke",
+
+// Context Menu
+EditLink			: "Muuda linki",
+CellCM				: "Lahter",
+RowCM				: "Rida",
+ColumnCM			: "Veerg",
+InsertRowAfter		: "Sisesta rida peale",
+InsertRowBefore		: "Sisesta rida enne",
+DeleteRows			: "Eemalda read",
+InsertColumnAfter	: "Sisesta veerg peale",
+InsertColumnBefore	: "Sisesta veerg enne",
+DeleteColumns		: "Eemalda veerud",
+InsertCellAfter		: "Sisesta lahter peale",
+InsertCellBefore	: "Sisesta lahter enne",
+DeleteCells			: "Eemalda lahtrid",
+MergeCells			: "Ühenda lahtrid",
+MergeRight			: "Ühenda paremale",
+MergeDown			: "Ühenda alla",
+HorizontalSplitCell	: "Poolita lahter horisontaalselt",
+VerticalSplitCell	: "Poolita lahter vertikaalselt",
+TableDelete			: "Kustuta tabel",
+CellProperties		: "Lahtri atribuudid",
+TableProperties		: "Tabeli atribuudid",
+ImageProperties		: "Pildi atribuudid",
+FlashProperties		: "Flash omadused",
+
+AnchorProp			: "Ankru omadused",
+ButtonProp			: "Nupu omadused",
+CheckboxProp		: "Märkeruudu omadused",
+HiddenFieldProp		: "Varjatud lahtri omadused",
+RadioButtonProp		: "Raadionupu omadused",
+ImageButtonProp		: "Piltnupu omadused",
+TextFieldProp		: "Tekstilahtri omadused",
+SelectionFieldProp	: "Valiklahtri omadused",
+TextareaProp		: "Tekstiala omadused",
+FormProp			: "Vormi omadused",
+
+FontFormats			: "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6;Tavaline (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Töötlen XHTML'i. Palun oota...",
+Done				: "Tehtud",
+PasteWordConfirm	: "Tekst, mida soovid lisada paistab pärinevat Word'ist. Kas soovid seda enne kleepimist puhastada?",
+NotCompatiblePaste	: "See käsk on saadaval ainult Internet Explorer versioon 5.5 või uuema puhul. Kas soovid kleepida ilma puhastamata?",
+UnknownToolbarItem	: "Tundmatu tööriistarea üksus \"%1\"",
+UnknownCommand		: "Tundmatu käsunimi \"%1\"",
+NotImplemented		: "Käsku ei täidetud",
+UnknownToolbarSet	: "Tööriistariba \"%1\" ei eksisteeri",
+NoActiveX			: "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutusvõimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma veebisirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
+BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
+DialogBlocked		: "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Loobu",
+DlgBtnClose			: "Sulge",
+DlgBtnBrowseServer	: "Sirvi serverit",
+DlgAdvancedTag		: "Täpsemalt",
+DlgOpOther			: "<Teine>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Palun sisesta URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<määramata>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Keele suund",
+DlgGenLangDirLtr	: "Vasakult paremale (LTR)",
+DlgGenLangDirRtl	: "Paremalt vasakule (RTL)",
+DlgGenLangCode		: "Keele kood",
+DlgGenAccessKey		: "Juurdepääsu võti",
+DlgGenName			: "Nimi",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Pikk kirjeldus URL",
+DlgGenClass			: "Stiilistiku klassid",
+DlgGenTitle			: "Juhendav tiitel",
+DlgGenContType		: "Juhendava sisu tüüp",
+DlgGenLinkCharset	: "Lingitud ressurssi märgistik",
+DlgGenStyle			: "Laad",
+
+// Image Dialog
+DlgImgTitle			: "Pildi atribuudid",
+DlgImgInfoTab		: "Pildi info",
+DlgImgBtnUpload		: "Saada serverissee",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Lae üles",
+DlgImgAlt			: "Alternatiivne tekst",
+DlgImgWidth			: "Laius",
+DlgImgHeight		: "Kõrgus",
+DlgImgLockRatio		: "Lukusta kuvasuhe",
+DlgBtnResetSize		: "Lähtesta suurus",
+DlgImgBorder		: "Joon",
+DlgImgHSpace		: "H. vaheruum",
+DlgImgVSpace		: "V. vaheruum",
+DlgImgAlign			: "Joondus",
+DlgImgAlignLeft		: "Vasak",
+DlgImgAlignAbsBottom: "Abs alla",
+DlgImgAlignAbsMiddle: "Abs keskele",
+DlgImgAlignBaseline	: "Baasjoonele",
+DlgImgAlignBottom	: "Alla",
+DlgImgAlignMiddle	: "Keskele",
+DlgImgAlignRight	: "Paremale",
+DlgImgAlignTextTop	: "Tekstit üles",
+DlgImgAlignTop		: "Üles",
+DlgImgPreview		: "Eelvaade",
+DlgImgAlertUrl		: "Palun kirjuta pildi URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash omadused",
+DlgFlashChkPlay		: "Automaatne start ",
+DlgFlashChkLoop		: "Korduv",
+DlgFlashChkMenu		: "Võimalda flash menüü",
+DlgFlashScale		: "Mastaap",
+DlgFlashScaleAll	: "Näita kõike",
+DlgFlashScaleNoBorder	: "Äärist ei ole",
+DlgFlashScaleFit	: "Täpne sobivus",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Lingi info",
+DlgLnkTargetTab		: "Sihtkoht",
+
+DlgLnkType			: "Lingi tüüp",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankur sellel lehel",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<muu>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vali ankur",
+DlgLnkAnchorByName	: "Ankru nime järgi",
+DlgLnkAnchorById	: "Elemendi id järgi",
+DlgLnkNoAnchors		: "(Selles dokumendis ei ole ankruid)",
+DlgLnkEMail			: "E-posti aadress",
+DlgLnkEMailSubject	: "Sõnumi teema",
+DlgLnkEMailBody		: "Sõnumi tekst",
+DlgLnkUpload		: "Lae üles",
+DlgLnkBtnUpload		: "Saada serverisse",
+
+DlgLnkTarget		: "Sihtkoht",
+DlgLnkTargetFrame	: "<raam>",
+DlgLnkTargetPopup	: "<hüpikaken>",
+DlgLnkTargetBlank	: "Uus aken (_blank)",
+DlgLnkTargetParent	: "Esivanem aken (_parent)",
+DlgLnkTargetSelf	: "Sama aken (_self)",
+DlgLnkTargetTop		: "Pealmine aken (_top)",
+DlgLnkTargetFrameName	: "Sihtmärk raami nimi",
+DlgLnkPopWinName	: "Hüpikakna nimi",
+DlgLnkPopWinFeat	: "Hüpikakna omadused",
+DlgLnkPopResize		: "Suurendatav",
+DlgLnkPopLocation	: "Aadressiriba",
+DlgLnkPopMenu		: "Menüüriba",
+DlgLnkPopScroll		: "Kerimisribad",
+DlgLnkPopStatus		: "Olekuriba",
+DlgLnkPopToolbar	: "Tööriistariba",
+DlgLnkPopFullScrn	: "Täisekraan (IE)",
+DlgLnkPopDependent	: "Sõltuv (Netscape)",
+DlgLnkPopWidth		: "Laius",
+DlgLnkPopHeight		: "Kõrgus",
+DlgLnkPopLeft		: "Vasak asukoht",
+DlgLnkPopTop		: "Ülemine asukoht",
+
+DlnLnkMsgNoUrl		: "Palun kirjuta lingi URL",
+DlnLnkMsgNoEMail	: "Palun kirjuta E-Posti aadress",
+DlnLnkMsgNoAnchor	: "Palun vali ankur",
+DlnLnkMsgInvPopName	: "Hüpikakna nimi peab algama alfabeetilise tähega ja ei tohi sisaldada tühikuid",
+
+// Color Dialog
+DlgColorTitle		: "Vali värv",
+DlgColorBtnClear	: "Tühjenda",
+DlgColorHighlight	: "Märgi",
+DlgColorSelected	: "Valitud",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Sisesta emotikon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Vali erimärk",
+
+// Table Dialog
+DlgTableTitle		: "Tabeli atribuudid",
+DlgTableRows		: "Read",
+DlgTableColumns		: "Veerud",
+DlgTableBorder		: "Joone suurus",
+DlgTableAlign		: "Joondus",
+DlgTableAlignNotSet	: "<Määramata>",
+DlgTableAlignLeft	: "Vasak",
+DlgTableAlignCenter	: "Kesk",
+DlgTableAlignRight	: "Parem",
+DlgTableWidth		: "Laius",
+DlgTableWidthPx		: "pikslit",
+DlgTableWidthPc		: "protsenti",
+DlgTableHeight		: "Kõrgus",
+DlgTableCellSpace	: "Lahtri vahe",
+DlgTableCellPad		: "Lahtri täidis",
+DlgTableCaption		: "Tabeli tiitel",
+DlgTableSummary		: "Kokkuvõte",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Lahtri atribuudid",
+DlgCellWidth		: "Laius",
+DlgCellWidthPx		: "pikslit",
+DlgCellWidthPc		: "protsenti",
+DlgCellHeight		: "Kõrgus",
+DlgCellWordWrap		: "Sõna ülekanne",
+DlgCellWordWrapNotSet	: "<Määramata>",
+DlgCellWordWrapYes	: "Jah",
+DlgCellWordWrapNo	: "Ei",
+DlgCellHorAlign		: "Horisontaaljoondus",
+DlgCellHorAlignNotSet	: "<Määramata>",
+DlgCellHorAlignLeft	: "Vasak",
+DlgCellHorAlignCenter	: "Kesk",
+DlgCellHorAlignRight: "Parem",
+DlgCellVerAlign		: "Vertikaaljoondus",
+DlgCellVerAlignNotSet	: "<Määramata>",
+DlgCellVerAlignTop	: "Üles",
+DlgCellVerAlignMiddle	: "Keskele",
+DlgCellVerAlignBottom	: "Alla",
+DlgCellVerAlignBaseline	: "Baasjoonele",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Reaulatus",
+DlgCellCollSpan		: "Veeruulatus",
+DlgCellBackColor	: "Tausta värv",
+DlgCellBorderColor	: "Joone värv",
+DlgCellBtnSelect	: "Vali...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Otsi ja asenda",
+
+// Find Dialog
+DlgFindTitle		: "Otsi",
+DlgFindFindBtn		: "Otsi",
+DlgFindNotFoundMsg	: "Valitud teksti ei leitud.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Asenda",
+DlgReplaceFindLbl		: "Leia mida:",
+DlgReplaceReplaceLbl	: "Asenda millega:",
+DlgReplaceCaseChk		: "Erista suur- ja väiketähti",
+DlgReplaceReplaceBtn	: "Asenda",
+DlgReplaceReplAllBtn	: "Asenda kõik",
+DlgReplaceWordChk		: "Otsi terviklike sõnu",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
+PasteErrorCopy	: "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
+
+PasteAsText		: "Kleebi tavalise tekstina",
+PasteFromWord	: "Kleebi Wordist",
+
+DlgPasteMsg2	: "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.",
+DlgPasteIgnoreFont		: "Ignoreeri kirja definitsioone",
+DlgPasteRemoveStyles	: "Eemalda stiilide definitsioonid",
+
+// Color Picker
+ColorAutomatic	: "Automaatne",
+ColorMoreColors	: "Rohkem värve...",
+
+// Document Properties
+DocProps		: "Dokumendi omadused",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankru omadused",
+DlgAnchorName		: "Ankru nimi",
+DlgAnchorErrorName	: "Palun sisest ankru nimi",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Puudub sõnastikust",
+DlgSpellChangeTo		: "Muuda",
+DlgSpellBtnIgnore		: "Ignoreeri",
+DlgSpellBtnIgnoreAll	: "Ignoreeri kõiki",
+DlgSpellBtnReplace		: "Asenda",
+DlgSpellBtnReplaceAll	: "Asenda kõik",
+DlgSpellBtnUndo			: "Võta tagasi",
+DlgSpellNoSuggestions	: "- Soovitused puuduvad -",
+DlgSpellProgress		: "Toimub õigekirja kontroll...",
+DlgSpellNoMispell		: "Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud",
+DlgSpellNoChanges		: "Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud",
+DlgSpellOneChange		: "Õigekirja kontroll sooritatud: üks sõna muudeti",
+DlgSpellManyChanges		: "Õigekirja kontroll sooritatud: %1 sõna muudetud",
+
+IeSpellDownload			: "Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (väärtus)",
+DlgButtonType		: "Tüüp",
+DlgButtonTypeBtn	: "Nupp",
+DlgButtonTypeSbm	: "Saada",
+DlgButtonTypeRst	: "Lähtesta",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nimi",
+DlgCheckboxValue	: "Väärtus",
+DlgCheckboxSelected	: "Valitud",
+
+// Form Dialog
+DlgFormName		: "Nimi",
+DlgFormAction	: "Toiming",
+DlgFormMethod	: "Meetod",
+
+// Select Field Dialog
+DlgSelectName		: "Nimi",
+DlgSelectValue		: "Väärtus",
+DlgSelectSize		: "Suurus",
+DlgSelectLines		: "ridu",
+DlgSelectChkMulti	: "Võimalda mitu valikut",
+DlgSelectOpAvail	: "Võimalikud valikud",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Väärtus",
+DlgSelectBtnAdd		: "Lisa",
+DlgSelectBtnModify	: "Muuda",
+DlgSelectBtnUp		: "Üles",
+DlgSelectBtnDown	: "Alla",
+DlgSelectBtnSetValue : "Sea valitud olekuna",
+DlgSelectBtnDelete	: "Kustuta",
+
+// Textarea Dialog
+DlgTextareaName	: "Nimi",
+DlgTextareaCols	: "Veerge",
+DlgTextareaRows	: "Ridu",
+
+// Text Field Dialog
+DlgTextName			: "Nimi",
+DlgTextValue		: "Väärtus",
+DlgTextCharWidth	: "Laius (tähemärkides)",
+DlgTextMaxChars		: "Maksimaalselt tähemärke",
+DlgTextType			: "Tüüp",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Parool",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nimi",
+DlgHiddenValue	: "Väärtus",
+
+// Bulleted List Dialog
+BulletedListProp	: "Täpitud loetelu omadused",
+NumberedListProp	: "Nummerdatud loetelu omadused",
+DlgLstStart			: "Alusta",
+DlgLstType			: "Tüüp",
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Ketas",
+DlgLstTypeSquare	: "Ruut",
+DlgLstTypeNumbers	: "Numbrid (1, 2, 3)",
+DlgLstTypeLCase		: "Väiketähed (a, b, c)",
+DlgLstTypeUCase		: "Suurtähed (A, B, C)",
+DlgLstTypeSRoman	: "Väiksed Rooma numbrid (i, ii, iii)",
+DlgLstTypeLRoman	: "Suured Rooma numbrid (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Üldine",
+DlgDocBackTab		: "Taust",
+DlgDocColorsTab		: "Värvid ja veerised",
+DlgDocMetaTab		: "Meta andmed",
+
+DlgDocPageTitle		: "Lehekülje tiitel",
+DlgDocLangDir		: "Kirja suund",
+DlgDocLangDirLTR	: "Vasakult paremale (LTR)",
+DlgDocLangDirRTL	: "Paremalt vasakule (RTL)",
+DlgDocLangCode		: "Keele kood",
+DlgDocCharSet		: "Märgistiku kodeering",
+DlgDocCharSetCE		: "Kesk-Euroopa",
+DlgDocCharSetCT		: "Hiina traditsiooniline (Big5)",
+DlgDocCharSetCR		: "Kirillisa",
+DlgDocCharSetGR		: "Kreeka",
+DlgDocCharSetJP		: "Jaapani",
+DlgDocCharSetKR		: "Korea",
+DlgDocCharSetTR		: "Türgi",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Lääne-Euroopa",
+DlgDocCharSetOther	: "Ülejäänud märgistike kodeeringud",
+
+DlgDocDocType		: "Dokumendi tüüppäis",
+DlgDocDocTypeOther	: "Teised dokumendi tüüppäised",
+DlgDocIncXHTML		: "Arva kaasa XHTML deklaratsioonid",
+DlgDocBgColor		: "Taustavärv",
+DlgDocBgImage		: "Taustapildi URL",
+DlgDocBgNoScroll	: "Mittekeritav tagataust",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Külastatud link",
+DlgDocCActive		: "Aktiivne link",
+DlgDocMargins		: "Lehekülje äärised",
+DlgDocMaTop			: "Ülaserv",
+DlgDocMaLeft		: "Vasakserv",
+DlgDocMaRight		: "Paremserv",
+DlgDocMaBottom		: "Alaserv",
+DlgDocMeIndex		: "Dokumendi võtmesõnad (eraldatud komadega)",
+DlgDocMeDescr		: "Dokumendi kirjeldus",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autoriõigus",
+DlgDocPreview		: "Eelvaade",
+
+// Templates Dialog
+Templates			: "Šabloon",
+DlgTemplatesTitle	: "Sisu šabloonid",
+DlgTemplatesSelMsg	: "Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):",
+DlgTemplatesLoading	: "Laen šabloonide nimekirja. Palun oota...",
+DlgTemplatesNoTpl	: "(Ühtegi šablooni ei ole defineeritud)",
+DlgTemplatesReplace	: "Asenda tegelik sisu",
+
+// About Dialog
+DlgAboutAboutTab	: "Teave",
+DlgAboutBrowserInfoTab	: "Veebisirvija info",
+DlgAboutLicenseTab	: "Litsents",
+DlgAboutVersion		: "versioon",
+DlgAboutInfo		: "Täpsema info saamiseks mine",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hr.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Croatian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Smanji trake s alatima",
+ToolbarExpand		: "Proširi trake s alatima",
+
+// Toolbar Items and Context Menu
+Save				: "Snimi",
+NewPage				: "Nova stranica",
+Preview				: "Pregledaj",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Zalijepi",
+PasteText			: "Zalijepi kao čisti tekst",
+PasteWord			: "Zalijepi iz Worda",
+Print				: "Ispiši",
+SelectAll			: "Odaberi sve",
+RemoveFormat		: "Ukloni formatiranje",
+InsertLinkLbl		: "Link",
+InsertLink			: "Ubaci/promijeni link",
+RemoveLink			: "Ukloni link",
+VisitLink			: "Otvori link",
+Anchor				: "Ubaci/promijeni sidro",
+AnchorDelete		: "Ukloni sidro",
+InsertImageLbl		: "Slika",
+InsertImage			: "Ubaci/promijeni sliku",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Ubaci/promijeni Flash",
+InsertTableLbl		: "Tablica",
+InsertTable			: "Ubaci/promijeni tablicu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Ubaci vodoravnu liniju",
+InsertSpecialCharLbl: "Posebni karakteri",
+InsertSpecialChar	: "Ubaci posebne znakove",
+InsertSmileyLbl		: "Smješko",
+InsertSmiley		: "Ubaci smješka",
+About				: "O FCKeditoru",
+Bold				: "Podebljaj",
+Italic				: "Ukosi",
+Underline			: "Potcrtano",
+StrikeThrough		: "Precrtano",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Lijevo poravnanje",
+CenterJustify		: "Središnje poravnanje",
+RightJustify		: "Desno poravnanje",
+BlockJustify		: "Blok poravnanje",
+DecreaseIndent		: "Pomakni ulijevo",
+IncreaseIndent		: "Pomakni udesno",
+Blockquote			: "Blockquote",
+CreateDiv			: "Napravi Div kontejner",
+EditDiv				: "Uredi Div kontejner",
+DeleteDiv			: "Ukloni Div kontejner",
+Undo				: "Poništi",
+Redo				: "Ponovi",
+NumberedListLbl		: "Brojčana lista",
+NumberedList		: "Ubaci/ukloni brojčanu listu",
+BulletedListLbl		: "Obična lista",
+BulletedList		: "Ubaci/ukloni običnu listu",
+ShowTableBorders	: "Prikaži okvir tablice",
+ShowDetails			: "Prikaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Veličina",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "Kôd",
+Find				: "Pronađi",
+Replace				: "Zamijeni",
+SpellCheck			: "Provjeri pravopis",
+UniversalKeyboard	: "Univerzalna tipkovnica",
+PageBreakLbl		: "Prijelom stranice",
+PageBreak			: "Ubaci prijelom stranice",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Povećaj veličinu editora",
+ShowBlocks		: "Prikaži blokove",
+
+// Context Menu
+EditLink			: "Promijeni link",
+CellCM				: "Ćelija",
+RowCM				: "Red",
+ColumnCM			: "Kolona",
+InsertRowAfter		: "Ubaci red poslije",
+InsertRowBefore		: "Ubaci red prije",
+DeleteRows			: "Izbriši redove",
+InsertColumnAfter	: "Ubaci kolonu poslije",
+InsertColumnBefore	: "Ubaci kolonu prije",
+DeleteColumns		: "Izbriši kolone",
+InsertCellAfter		: "Ubaci ćeliju poslije",
+InsertCellBefore	: "Ubaci ćeliju prije",
+DeleteCells			: "Izbriši ćelije",
+MergeCells			: "Spoji ćelije",
+MergeRight			: "Spoji desno",
+MergeDown			: "Spoji dolje",
+HorizontalSplitCell	: "Podijeli ćeliju vodoravno",
+VerticalSplitCell	: "Podijeli ćeliju okomito",
+TableDelete			: "Izbriši tablicu",
+CellProperties		: "Svojstva ćelije",
+TableProperties		: "Svojstva tablice",
+ImageProperties		: "Svojstva slike",
+FlashProperties		: "Flash svojstva",
+
+AnchorProp			: "Svojstva sidra",
+ButtonProp			: "Image Button svojstva",
+CheckboxProp		: "Checkbox svojstva",
+HiddenFieldProp		: "Hidden Field svojstva",
+RadioButtonProp		: "Radio Button svojstva",
+ImageButtonProp		: "Image Button svojstva",
+TextFieldProp		: "Text Field svojstva",
+SelectionFieldProp	: "Selection svojstva",
+TextareaProp		: "Textarea svojstva",
+FormProp			: "Form svojstva",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obrađujem XHTML. Molimo pričekajte...",
+Done				: "Završio",
+PasteWordConfirm	: "Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?",
+NotCompatiblePaste	: "Ova naredba je dostupna samo u Internet Exploreru 5.5 ili novijem. Želite li nastaviti bez čišćenja?",
+UnknownToolbarItem	: "Nepoznati član trake s alatima \"%1\"",
+UnknownCommand		: "Nepoznata naredba \"%1\"",
+NotImplemented		: "Naredba nije implementirana",
+UnknownToolbarSet	: "Traka s alatima \"%1\" ne postoji",
+NoActiveX			: "Vaše postavke pretraživača mogle bi ograničiti neke od mogućnosti editora. Morate uključiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne učinite, moguće su razliite greške tijekom rada.",
+BrowseServerBlocked : "Pretraivač nije moguće otvoriti. Provjerite da li je uključeno blokiranje pop-up prozora.",
+DialogBlocked		: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
+VisitLinkBlocked	: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Poništi",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Pretraži server",
+DlgAdvancedTag		: "Napredno",
+DlgOpOther			: "<Drugo>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Molimo unesite URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije postavljeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smjer jezika",
+DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na lijevo (RTL)",
+DlgGenLangCode		: "Kôd jezika",
+DlgGenAccessKey		: "Pristupna tipka",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab Indeks",
+DlgGenLongDescr		: "Dugački opis URL",
+DlgGenClass			: "Stylesheet klase",
+DlgGenTitle			: "Advisory naslov",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Kodna stranica povezanih resursa",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Svojstva slika",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Pošalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošalji",
+DlgImgAlt			: "Alternativni tekst",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zaključaj odnos",
+DlgBtnResetSize		: "Obriši veličinu",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Poravnaj",
+DlgImgAlignLeft		: "Lijevo",
+DlgImgAlignAbsBottom: "Abs dolje",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dolje",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Pregledaj",
+DlgImgAlertUrl		: "Unesite URL slike",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash svojstva",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Ponavljaj",
+DlgFlashChkMenu		: "Omogući Flash izbornik",
+DlgFlashScale		: "Omjer",
+DlgFlashScaleAll	: "Prikaži sve",
+DlgFlashScaleNoBorder	: "Bez okvira",
+DlgFlashScaleFit	: "Točna veličina",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Meta",
+
+DlgLnkType			: "Link vrsta",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Odaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id elementa",
+DlgLnkNoAnchors		: "(Nema dostupnih sidra)",
+DlgLnkEMail			: "E-Mail adresa",
+DlgLnkEMailSubject	: "Naslov",
+DlgLnkEMailBody		: "Sadržaj poruke",
+DlgLnkUpload		: "Pošalji",
+DlgLnkBtnUpload		: "Pošalji na server",
+
+DlgLnkTarget		: "Meta",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Vršni prozor (_top)",
+DlgLnkTargetFrameName	: "Ime ciljnog okvira",
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Mogućnosti popup prozora",
+DlgLnkPopResize		: "Promjenljive veličine",
+DlgLnkPopLocation	: "Traka za lokaciju",
+DlgLnkPopMenu		: "Izborna traka",
+DlgLnkPopScroll		: "Scroll traka",
+DlgLnkPopStatus		: "Statusna traka",
+DlgLnkPopToolbar	: "Traka s alatima",
+DlgLnkPopFullScrn	: "Cijeli ekran (IE)",
+DlgLnkPopDependent	: "Ovisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Lijeva pozicija",
+DlgLnkPopTop		: "Gornja pozicija",
+
+DlnLnkMsgNoUrl		: "Molimo upišite URL link",
+DlnLnkMsgNoEMail	: "Molimo upišite e-mail adresu",
+DlnLnkMsgNoAnchor	: "Molimo odaberite sidro",
+DlnLnkMsgInvPopName	: "Ime popup prozora mora početi sa slovom i ne smije sadržavati razmake",
+
+// Color Dialog
+DlgColorTitle		: "Odaberite boju",
+DlgColorBtnClear	: "Obriši",
+DlgColorHighlight	: "Osvijetli",
+DlgColorSelected	: "Odaberi",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ubaci smješka",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Odaberite posebni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Svojstva tablice",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Veličina okvira",
+DlgTableAlign		: "Poravnanje",
+DlgTableAlignNotSet	: "<nije postavljeno>",
+DlgTableAlignLeft	: "Lijevo",
+DlgTableAlignCenter	: "Središnje",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "postotaka",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Prostornost ćelija",
+DlgTableCellPad		: "Razmak ćelija",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Sažetak",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Svojstva ćelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "postotaka",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravno poravnanje",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
+DlgCellHorAlignLeft	: "Lijevo",
+DlgCellHorAlignCenter	: "Središnje",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Okomito poravnanje",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
+DlgCellVerAlignTop	: "Gornje",
+DlgCellVerAlignMiddle	: "Srednišnje",
+DlgCellVerAlignBottom	: "Donje",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Spajanje redova",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Odaberi...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Pronađi i zamijeni",
+
+// Find Dialog
+DlgFindTitle		: "Pronađi",
+DlgFindFindBtn		: "Pronađi",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronađen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamijeni",
+DlgReplaceFindLbl		: "Pronađi:",
+DlgReplaceReplaceLbl	: "Zamijeni s:",
+DlgReplaceCaseChk		: "Usporedi mala/velika slova",
+DlgReplaceReplaceBtn	: "Zamijeni",
+DlgReplaceReplAllBtn	: "Zamijeni sve",
+DlgReplaceWordChk		: "Usporedi cijele riječi",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).",
+
+PasteAsText		: "Zalijepi kao čisti tekst",
+PasteFromWord	: "Zalijepi iz Worda",
+
+DlgPasteMsg2	: "Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.",
+DlgPasteIgnoreFont		: "Zanemari definiciju vrste fonta",
+DlgPasteRemoveStyles	: "Ukloni definicije stilova",
+
+// Color Picker
+ColorAutomatic	: "Automatski",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Svojstva dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Svojstva sidra",
+DlgAnchorName		: "Ime sidra",
+DlgAnchorErrorName	: "Molimo unesite ime sidra",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nije u rječniku",
+DlgSpellChangeTo		: "Promijeni u",
+DlgSpellBtnIgnore		: "Zanemari",
+DlgSpellBtnIgnoreAll	: "Zanemari sve",
+DlgSpellBtnReplace		: "Zamijeni",
+DlgSpellBtnReplaceAll	: "Zamijeni sve",
+DlgSpellBtnUndo			: "Vrati",
+DlgSpellNoSuggestions	: "-Nema preporuke-",
+DlgSpellProgress		: "Provjera u tijeku...",
+DlgSpellNoMispell		: "Provjera završena: Nema grešaka",
+DlgSpellNoChanges		: "Provjera završena: Nije napravljena promjena",
+DlgSpellOneChange		: "Provjera završena: Jedna riječ promjenjena",
+DlgSpellManyChanges		: "Provjera završena: Promijenjeno %1 riječi",
+
+IeSpellDownload			: "Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (vrijednost)",
+DlgButtonType		: "Vrsta",
+DlgButtonTypeBtn	: "Gumb",
+DlgButtonTypeSbm	: "Pošalji",
+DlgButtonTypeRst	: "Poništi",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ime",
+DlgCheckboxValue	: "Vrijednost",
+DlgCheckboxSelected	: "Odabrano",
+
+// Form Dialog
+DlgFormName		: "Ime",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Ime",
+DlgSelectValue		: "Vrijednost",
+DlgSelectSize		: "Veličina",
+DlgSelectLines		: "linija",
+DlgSelectChkMulti	: "Dozvoli višestruki odabir",
+DlgSelectOpAvail	: "Dostupne opcije",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Vrijednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Promijeni",
+DlgSelectBtnUp		: "Gore",
+DlgSelectBtnDown	: "Dolje",
+DlgSelectBtnSetValue : "Postavi kao odabranu vrijednost",
+DlgSelectBtnDelete	: "Obriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Ime",
+DlgTextareaCols	: "Kolona",
+DlgTextareaRows	: "Redova",
+
+// Text Field Dialog
+DlgTextName			: "Ime",
+DlgTextValue		: "Vrijednost",
+DlgTextCharWidth	: "Širina",
+DlgTextMaxChars		: "Najviše karaktera",
+DlgTextType			: "Vrsta",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Šifra",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ime",
+DlgHiddenValue	: "Vrijednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Svojstva liste",
+NumberedListProp	: "Svojstva brojčane liste",
+DlgLstStart			: "Početak",
+DlgLstType			: "Vrsta",
+DlgLstTypeCircle	: "Krug",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Kvadrat",
+DlgLstTypeNumbers	: "Brojevi (1, 2, 3)",
+DlgLstTypeLCase		: "Mala slova (a, b, c)",
+DlgLstTypeUCase		: "Velika slova (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske brojke (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske brojke (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Općenito",
+DlgDocBackTab		: "Pozadina",
+DlgDocColorsTab		: "Boje i margine",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Naslov stranice",
+DlgDocLangDir		: "Smjer jezika",
+DlgDocLangDirLTR	: "S lijeva na desno",
+DlgDocLangDirRTL	: "S desna na lijevo",
+DlgDocLangCode		: "Kôd jezika",
+DlgDocCharSet		: "Enkodiranje znakova",
+DlgDocCharSetCE		: "Središnja Europa",
+DlgDocCharSetCT		: "Tradicionalna kineska (Big5)",
+DlgDocCharSetCR		: "Ćirilica",
+DlgDocCharSetGR		: "Grčka",
+DlgDocCharSetJP		: "Japanska",
+DlgDocCharSetKR		: "Koreanska",
+DlgDocCharSetTR		: "Turska",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Zapadna Europa",
+DlgDocCharSetOther	: "Ostalo enkodiranje znakova",
+
+DlgDocDocType		: "Zaglavlje vrste dokumenta",
+DlgDocDocTypeOther	: "Ostalo zaglavlje vrste dokumenta",
+DlgDocIncXHTML		: "Ubaci XHTML deklaracije",
+DlgDocBgColor		: "Boja pozadine",
+DlgDocBgImage		: "URL slike pozadine",
+DlgDocBgNoScroll	: "Pozadine se ne pomiče",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Posjećeni link",
+DlgDocCActive		: "Aktivni link",
+DlgDocMargins		: "Margine stranice",
+DlgDocMaTop			: "Vrh",
+DlgDocMaLeft		: "Lijevo",
+DlgDocMaRight		: "Desno",
+DlgDocMaBottom		: "Dolje",
+DlgDocMeIndex		: "Ključne riječi dokumenta (odvojene zarezom)",
+DlgDocMeDescr		: "Opis dokumenta",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorska prava",
+DlgDocPreview		: "Pregledaj",
+
+// Templates Dialog
+Templates			: "Predlošci",
+DlgTemplatesTitle	: "Predlošci sadržaja",
+DlgTemplatesSelMsg	: "Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):",
+DlgTemplatesLoading	: "Učitavam listu predložaka. Molimo pričekajte...",
+DlgTemplatesNoTpl	: "(Nema definiranih predložaka)",
+DlgTemplatesReplace	: "Zamijeni trenutne sadržaje",
+
+// About Dialog
+DlgAboutAboutTab	: "O FCKEditoru",
+DlgAboutBrowserInfoTab	: "Podaci o pretraživaču",
+DlgAboutLicenseTab	: "Licenca",
+DlgAboutVersion		: "inačica",
+DlgAboutInfo		: "Za više informacija posjetite",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Općenito",
+DlgDivAdvancedTab	: "Napredno",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Stil u redu",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/nl.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Dutch language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Menubalk inklappen",
+ToolbarExpand		: "Menubalk uitklappen",
+
+// Toolbar Items and Context Menu
+Save				: "Opslaan",
+NewPage				: "Nieuwe pagina",
+Preview				: "Voorbeeld",
+Cut					: "Knippen",
+Copy				: "Kopiëren",
+Paste				: "Plakken",
+PasteText			: "Plakken als platte tekst",
+PasteWord			: "Plakken als Word-gegevens",
+Print				: "Printen",
+SelectAll			: "Alles selecteren",
+RemoveFormat		: "Opmaak verwijderen",
+InsertLinkLbl		: "Link",
+InsertLink			: "Link invoegen/wijzigen",
+RemoveLink			: "Link verwijderen",
+VisitLink			: "Link volgen",
+Anchor				: "Interne link",
+AnchorDelete		: "Anker verwijderen",
+InsertImageLbl		: "Afbeelding",
+InsertImage			: "Afbeelding invoegen/wijzigen",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash invoegen/wijzigen",
+InsertTableLbl		: "Tabel",
+InsertTable			: "Tabel invoegen/wijzigen",
+InsertLineLbl		: "Lijn",
+InsertLine			: "Horizontale lijn invoegen",
+InsertSpecialCharLbl: "Speciale tekens",
+InsertSpecialChar	: "Speciaal teken invoegen",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley invoegen",
+About				: "Over FCKeditor",
+Bold				: "Vet",
+Italic				: "Schuingedrukt",
+Underline			: "Onderstreept",
+StrikeThrough		: "Doorhalen",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Links uitlijnen",
+CenterJustify		: "Centreren",
+RightJustify		: "Rechts uitlijnen",
+BlockJustify		: "Uitvullen",
+DecreaseIndent		: "Inspringen verkleinen",
+IncreaseIndent		: "Inspringen vergroten",
+Blockquote			: "Citaatblok",
+CreateDiv			: "DIV aanmaken",
+EditDiv				: "DIV wijzigen",
+DeleteDiv			: "DIV verwijderen",
+Undo				: "Ongedaan maken",
+Redo				: "Opnieuw uitvoeren",
+NumberedListLbl		: "Genummerde lijst",
+NumberedList		: "Genummerde lijst invoegen/verwijderen",
+BulletedListLbl		: "Opsomming",
+BulletedList		: "Opsomming invoegen/verwijderen",
+ShowTableBorders	: "Randen tabel weergeven",
+ShowDetails			: "Details weergeven",
+Style				: "Stijl",
+FontFormat			: "Opmaak",
+Font				: "Lettertype",
+FontSize			: "Grootte",
+TextColor			: "Tekstkleur",
+BGColor				: "Achtergrondkleur",
+Source				: "Code",
+Find				: "Zoeken",
+Replace				: "Vervangen",
+SpellCheck			: "Spellingscontrole",
+UniversalKeyboard	: "Universeel toetsenbord",
+PageBreakLbl		: "Pagina-einde",
+PageBreak			: "Pagina-einde invoegen",
+
+Form			: "Formulier",
+Checkbox		: "Aanvinkvakje",
+RadioButton		: "Selectievakje",
+TextField		: "Tekstveld",
+Textarea		: "Tekstvak",
+HiddenField		: "Verborgen veld",
+Button			: "Knop",
+SelectionField	: "Selectieveld",
+ImageButton		: "Afbeeldingsknop",
+
+FitWindow		: "De editor maximaliseren",
+ShowBlocks		: "Toon blokken",
+
+// Context Menu
+EditLink			: "Link wijzigen",
+CellCM				: "Cel",
+RowCM				: "Rij",
+ColumnCM			: "Kolom",
+InsertRowAfter		: "Voeg rij in achter",
+InsertRowBefore		: "Voeg rij in voor",
+DeleteRows			: "Rijen verwijderen",
+InsertColumnAfter	: "Voeg kolom in achter",
+InsertColumnBefore	: "Voeg kolom in voor",
+DeleteColumns		: "Kolommen verwijderen",
+InsertCellAfter		: "Voeg cel in achter",
+InsertCellBefore	: "Voeg cel in voor",
+DeleteCells			: "Cellen verwijderen",
+MergeCells			: "Cellen samenvoegen",
+MergeRight			: "Voeg samen naar rechts",
+MergeDown			: "Voeg samen naar beneden",
+HorizontalSplitCell	: "Splits cellen horizontaal",
+VerticalSplitCell	: "Splits cellen verticaal",
+TableDelete			: "Tabel verwijderen",
+CellProperties		: "Eigenschappen cel",
+TableProperties		: "Eigenschappen tabel",
+ImageProperties		: "Eigenschappen afbeelding",
+FlashProperties		: "Eigenschappen Flash",
+
+AnchorProp			: "Eigenschappen interne link",
+ButtonProp			: "Eigenschappen knop",
+CheckboxProp		: "Eigenschappen aanvinkvakje",
+HiddenFieldProp		: "Eigenschappen verborgen veld",
+RadioButtonProp		: "Eigenschappen selectievakje",
+ImageButtonProp		: "Eigenschappen afbeeldingsknop",
+TextFieldProp		: "Eigenschappen tekstveld",
+SelectionFieldProp	: "Eigenschappen selectieveld",
+TextareaProp		: "Eigenschappen tekstvak",
+FormProp			: "Eigenschappen formulier",
+
+FontFormats			: "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Bezig met verwerken XHTML. Even geduld aub...",
+Done				: "Klaar",
+PasteWordConfirm	: "De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?",
+NotCompatiblePaste	: "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wilt u plakken zonder op te schonen?",
+UnknownToolbarItem	: "Onbekend item op menubalk \"%1\"",
+UnknownCommand		: "Onbekende opdrachtnaam: \"%1\"",
+NotImplemented		: "Opdracht niet geïmplementeerd.",
+UnknownToolbarSet	: "Menubalk \"%1\" bestaat niet.",
+NoActiveX			: "De beveilingsinstellingen van uw browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.",
+BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+DialogBlocked		: "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+VisitLinkBlocked	: "Het was niet mogelijk een nieuw venster te openen. Controleer of er geen pop-up-blocker aktief is.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuleren",
+DlgBtnClose			: "Afsluiten",
+DlgBtnBrowseServer	: "Bladeren op server",
+DlgAdvancedTag		: "Geavanceerd",
+DlgOpOther			: "<Anders>",
+DlgInfoTab			: "Informatie",
+DlgAlertUrl			: "Geef URL op",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<niet ingevuld>",
+DlgGenId			: "Kenmerk",
+DlgGenLangDir		: "Schrijfrichting",
+DlgGenLangDirLtr	: "Links naar rechts (LTR)",
+DlgGenLangDirRtl	: "Rechts naar links (RTL)",
+DlgGenLangCode		: "Taalcode",
+DlgGenAccessKey		: "Toegangstoets",
+DlgGenName			: "Naam",
+DlgGenTabIndex		: "Tabvolgorde",
+DlgGenLongDescr		: "Lange URL-omschrijving",
+DlgGenClass			: "Stylesheet-klassen",
+DlgGenTitle			: "Aanbevolen titel",
+DlgGenContType		: "Aanbevolen content-type",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Karakterset van gelinkte bron",
+DlgGenStyle			: "Stijl",
+
+// Image Dialog
+DlgImgTitle			: "Eigenschappen afbeelding",
+DlgImgInfoTab		: "Informatie afbeelding",
+DlgImgBtnUpload		: "Naar server verzenden",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternatieve tekst",
+DlgImgWidth			: "Breedte",
+DlgImgHeight		: "Hoogte",
+DlgImgLockRatio		: "Afmetingen vergrendelen",
+DlgBtnResetSize		: "Afmetingen resetten",
+DlgImgBorder		: "Rand",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Uitlijning",
+DlgImgAlignLeft		: "Links",
+DlgImgAlignAbsBottom: "Absoluut-onder",
+DlgImgAlignAbsMiddle: "Absoluut-midden",
+DlgImgAlignBaseline	: "Basislijn",
+DlgImgAlignBottom	: "Beneden",
+DlgImgAlignMiddle	: "Midden",
+DlgImgAlignRight	: "Rechts",
+DlgImgAlignTextTop	: "Boven tekst",
+DlgImgAlignTop		: "Boven",
+DlgImgPreview		: "Voorbeeld",
+DlgImgAlertUrl		: "Geef de URL van de afbeelding",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Eigenschappen Flash",
+DlgFlashChkPlay		: "Automatisch afspelen",
+DlgFlashChkLoop		: "Herhalen",
+DlgFlashChkMenu		: "Flashmenu\'s inschakelen",
+DlgFlashScale		: "Schaal",
+DlgFlashScaleAll	: "Alles tonen",
+DlgFlashScaleNoBorder	: "Geen rand",
+DlgFlashScaleFit	: "Precies passend",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Linkomschrijving",
+DlgLnkTargetTab		: "Doel",
+
+DlgLnkType			: "Linktype",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Interne link in pagina",
+DlgLnkTypeEMail		: "E-mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<anders>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Kies een interne link",
+DlgLnkAnchorByName	: "Op naam interne link",
+DlgLnkAnchorById	: "Op kenmerk interne link",
+DlgLnkNoAnchors		: "(Geen interne links in document gevonden)",
+DlgLnkEMail			: "E-mailadres",
+DlgLnkEMailSubject	: "Onderwerp bericht",
+DlgLnkEMailBody		: "Inhoud bericht",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Naar de server versturen",
+
+DlgLnkTarget		: "Doel",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "Nieuw venster (_blank)",
+DlgLnkTargetParent	: "Origineel venster (_parent)",
+DlgLnkTargetSelf	: "Zelfde venster (_self)",
+DlgLnkTargetTop		: "Hele venster (_top)",
+DlgLnkTargetFrameName	: "Naam doelframe",
+DlgLnkPopWinName	: "Naam popupvenster",
+DlgLnkPopWinFeat	: "Instellingen popupvenster",
+DlgLnkPopResize		: "Grootte wijzigen",
+DlgLnkPopLocation	: "Locatiemenu",
+DlgLnkPopMenu		: "Menubalk",
+DlgLnkPopScroll		: "Schuifbalken",
+DlgLnkPopStatus		: "Statusbalk",
+DlgLnkPopToolbar	: "Menubalk",
+DlgLnkPopFullScrn	: "Volledig scherm (IE)",
+DlgLnkPopDependent	: "Afhankelijk (Netscape)",
+DlgLnkPopWidth		: "Breedte",
+DlgLnkPopHeight		: "Hoogte",
+DlgLnkPopLeft		: "Positie links",
+DlgLnkPopTop		: "Positie boven",
+
+DlnLnkMsgNoUrl		: "Geef de link van de URL",
+DlnLnkMsgNoEMail	: "Geef een e-mailadres",
+DlnLnkMsgNoAnchor	: "Selecteer een interne link",
+DlnLnkMsgInvPopName	: "De naam van de popup moet met een alfa-numerieke waarde beginnen, en mag geen spaties bevatten.",
+
+// Color Dialog
+DlgColorTitle		: "Selecteer kleur",
+DlgColorBtnClear	: "Opschonen",
+DlgColorHighlight	: "Accentueren",
+DlgColorSelected	: "Geselecteerd",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Smiley invoegen",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecteer speciaal teken",
+
+// Table Dialog
+DlgTableTitle		: "Eigenschappen tabel",
+DlgTableRows		: "Rijen",
+DlgTableColumns		: "Kolommen",
+DlgTableBorder		: "Breedte rand",
+DlgTableAlign		: "Uitlijning",
+DlgTableAlignNotSet	: "<Niet ingevoerd>",
+DlgTableAlignLeft	: "Links",
+DlgTableAlignCenter	: "Centreren",
+DlgTableAlignRight	: "Rechts",
+DlgTableWidth		: "Breedte",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Hoogte",
+DlgTableCellSpace	: "Afstand tussen cellen",
+DlgTableCellPad		: "Afstand vanaf rand cel",
+DlgTableCaption		: "Naam",
+DlgTableSummary		: "Samenvatting",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Eigenschappen cel",
+DlgCellWidth		: "Breedte",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Hoogte",
+DlgCellWordWrap		: "Afbreken woorden",
+DlgCellWordWrapNotSet	: "<Niet ingevoerd>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nee",
+DlgCellHorAlign		: "Horizontale uitlijning",
+DlgCellHorAlignNotSet	: "<Niet ingevoerd>",
+DlgCellHorAlignLeft	: "Links",
+DlgCellHorAlignCenter	: "Centreren",
+DlgCellHorAlignRight: "Rechts",
+DlgCellVerAlign		: "Verticale uitlijning",
+DlgCellVerAlignNotSet	: "<Niet ingevoerd>",
+DlgCellVerAlignTop	: "Boven",
+DlgCellVerAlignMiddle	: "Midden",
+DlgCellVerAlignBottom	: "Beneden",
+DlgCellVerAlignBaseline	: "Basislijn",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Overkoepeling rijen",
+DlgCellCollSpan		: "Overkoepeling kolommen",
+DlgCellBackColor	: "Achtergrondkleur",
+DlgCellBorderColor	: "Randkleur",
+DlgCellBtnSelect	: "Selecteren...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Zoeken en vervangen",
+
+// Find Dialog
+DlgFindTitle		: "Zoeken",
+DlgFindFindBtn		: "Zoeken",
+DlgFindNotFoundMsg	: "De opgegeven tekst is niet gevonden.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Vervangen",
+DlgReplaceFindLbl		: "Zoeken naar:",
+DlgReplaceReplaceLbl	: "Vervangen met:",
+DlgReplaceCaseChk		: "Hoofdlettergevoelig",
+DlgReplaceReplaceBtn	: "Vervangen",
+DlgReplaceReplAllBtn	: "Alles vervangen",
+DlgReplaceWordChk		: "Hele woord moet voorkomen",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.",
+PasteErrorCopy	: "De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.",
+
+PasteAsText		: "Plakken als platte tekst",
+PasteFromWord	: "Plakken als Word-gegevens",
+
+DlgPasteMsg2	: "Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.",
+DlgPasteSec		: "Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.",
+DlgPasteIgnoreFont		: "Negeer \"Font Face\"-definities",
+DlgPasteRemoveStyles	: "Verwijder \"Style\"-definities",
+
+// Color Picker
+ColorAutomatic	: "Automatisch",
+ColorMoreColors	: "Meer kleuren...",
+
+// Document Properties
+DocProps		: "Eigenschappen document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Eigenschappen interne link",
+DlgAnchorName		: "Naam interne link",
+DlgAnchorErrorName	: "Geef de naam van de interne link op",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Niet in het woordenboek",
+DlgSpellChangeTo		: "Wijzig in",
+DlgSpellBtnIgnore		: "Negeren",
+DlgSpellBtnIgnoreAll	: "Alles negeren",
+DlgSpellBtnReplace		: "Vervangen",
+DlgSpellBtnReplaceAll	: "Alles vervangen",
+DlgSpellBtnUndo			: "Ongedaan maken",
+DlgSpellNoSuggestions	: "-Geen suggesties-",
+DlgSpellProgress		: "Bezig met spellingscontrole...",
+DlgSpellNoMispell		: "Klaar met spellingscontrole: geen fouten gevonden",
+DlgSpellNoChanges		: "Klaar met spellingscontrole: geen woorden aangepast",
+DlgSpellOneChange		: "Klaar met spellingscontrole: één woord aangepast",
+DlgSpellManyChanges		: "Klaar met spellingscontrole: %1 woorden aangepast",
+
+IeSpellDownload			: "De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (waarde)",
+DlgButtonType		: "Soort",
+DlgButtonTypeBtn	: "Knop",
+DlgButtonTypeSbm	: "Versturen",
+DlgButtonTypeRst	: "Leegmaken",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Naam",
+DlgCheckboxValue	: "Waarde",
+DlgCheckboxSelected	: "Geselecteerd",
+
+// Form Dialog
+DlgFormName		: "Naam",
+DlgFormAction	: "Actie",
+DlgFormMethod	: "Methode",
+
+// Select Field Dialog
+DlgSelectName		: "Naam",
+DlgSelectValue		: "Waarde",
+DlgSelectSize		: "Grootte",
+DlgSelectLines		: "Regels",
+DlgSelectChkMulti	: "Gecombineerde selecties toestaan",
+DlgSelectOpAvail	: "Beschikbare opties",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Waarde",
+DlgSelectBtnAdd		: "Toevoegen",
+DlgSelectBtnModify	: "Wijzigen",
+DlgSelectBtnUp		: "Omhoog",
+DlgSelectBtnDown	: "Omlaag",
+DlgSelectBtnSetValue : "Als geselecteerde waarde instellen",
+DlgSelectBtnDelete	: "Verwijderen",
+
+// Textarea Dialog
+DlgTextareaName	: "Naam",
+DlgTextareaCols	: "Kolommen",
+DlgTextareaRows	: "Rijen",
+
+// Text Field Dialog
+DlgTextName			: "Naam",
+DlgTextValue		: "Waarde",
+DlgTextCharWidth	: "Breedte (tekens)",
+DlgTextMaxChars		: "Maximum aantal tekens",
+DlgTextType			: "Soort",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Wachtwoord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Naam",
+DlgHiddenValue	: "Waarde",
+
+// Bulleted List Dialog
+BulletedListProp	: "Eigenschappen opsommingslijst",
+NumberedListProp	: "Eigenschappen genummerde opsommingslijst",
+DlgLstStart			: "Start",
+DlgLstType			: "Soort",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Schijf",
+DlgLstTypeSquare	: "Vierkant",
+DlgLstTypeNumbers	: "Nummers (1, 2, 3)",
+DlgLstTypeLCase		: "Kleine letters (a, b, c)",
+DlgLstTypeUCase		: "Hoofdletters (A, B, C)",
+DlgLstTypeSRoman	: "Klein Romeins (i, ii, iii)",
+DlgLstTypeLRoman	: "Groot Romeins (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Algemeen",
+DlgDocBackTab		: "Achtergrond",
+DlgDocColorsTab		: "Kleuring en marges",
+DlgDocMetaTab		: "META-data",
+
+DlgDocPageTitle		: "Paginatitel",
+DlgDocLangDir		: "Schrijfrichting",
+DlgDocLangDirLTR	: "Links naar rechts",
+DlgDocLangDirRTL	: "Rechts naar links",
+DlgDocLangCode		: "Taalcode",
+DlgDocCharSet		: "Karakterset-encoding",
+DlgDocCharSetCE		: "Centraal Europees",
+DlgDocCharSetCT		: "Traditioneel Chinees (Big5)",
+DlgDocCharSetCR		: "Cyriliaans",
+DlgDocCharSetGR		: "Grieks",
+DlgDocCharSetJP		: "Japans",
+DlgDocCharSetKR		: "Koreaans",
+DlgDocCharSetTR		: "Turks",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "West europees",
+DlgDocCharSetOther	: "Andere karakterset-encoding",
+
+DlgDocDocType		: "Opschrift documentsoort",
+DlgDocDocTypeOther	: "Ander opschrift documentsoort",
+DlgDocIncXHTML		: "XHTML-declaraties meenemen",
+DlgDocBgColor		: "Achtergrondkleur",
+DlgDocBgImage		: "URL achtergrondplaatje",
+DlgDocBgNoScroll	: "Vaste achtergrond",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Bezochte link",
+DlgDocCActive		: "Active link",
+DlgDocMargins		: "Afstandsinstellingen document",
+DlgDocMaTop			: "Boven",
+DlgDocMaLeft		: "Links",
+DlgDocMaRight		: "Rechts",
+DlgDocMaBottom		: "Onder",
+DlgDocMeIndex		: "Trefwoorden betreffende document (kommagescheiden)",
+DlgDocMeDescr		: "Beschrijving document",
+DlgDocMeAuthor		: "Auteur",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Voorbeeld",
+
+// Templates Dialog
+Templates			: "Sjablonen",
+DlgTemplatesTitle	: "Inhoud sjabonen",
+DlgTemplatesSelMsg	: "Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):",
+DlgTemplatesLoading	: "Bezig met laden sjabonen. Even geduld alstublieft...",
+DlgTemplatesNoTpl	: "(Geen sjablonen gedefinieerd)",
+DlgTemplatesReplace	: "Vervang de huidige inhoud",
+
+// About Dialog
+DlgAboutAboutTab	: "Over",
+DlgAboutBrowserInfoTab	: "Browserinformatie",
+DlgAboutLicenseTab	: "Licentie",
+DlgAboutVersion		: "Versie",
+DlgAboutInfo		: "Voor meer informatie ga naar ",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Algemeen",
+DlgDivAdvancedTab	: "Geavanceerd",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/mn.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/mn.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/mn.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Mongolian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Багажны хэсэг эвдэх",
+ToolbarExpand		: "Багажны хэсэг өргөтгөх",
+
+// Toolbar Items and Context Menu
+Save				: "Хадгалах",
+NewPage				: "Шинэ хуудас",
+Preview				: "Уридчлан харах",
+Cut					: "Хайчлах",
+Copy				: "Хуулах",
+Paste				: "Буулгах",
+PasteText			: "plain text-ээс буулгах",
+PasteWord			: "Word-оос буулгах",
+Print				: "Хэвлэх",
+SelectAll			: "Бүгдийг нь сонгох",
+RemoveFormat		: "Формат авч хаях",
+InsertLinkLbl		: "Линк",
+InsertLink			: "Линк Оруулах/Засварлах",
+RemoveLink			: "Линк авч хаях",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Холбоос Оруулах/Засварлах",
+AnchorDelete		: "Холбоос Авах",
+InsertImageLbl		: "Зураг",
+InsertImage			: "Зураг Оруулах/Засварлах",
+InsertFlashLbl		: "Флаш",
+InsertFlash			: "Флаш Оруулах/Засварлах",
+InsertTableLbl		: "Хүснэгт",
+InsertTable			: "Хүснэгт Оруулах/Засварлах",
+InsertLineLbl		: "Зураас",
+InsertLine			: "Хөндлөн зураас оруулах",
+InsertSpecialCharLbl: "Онцгой тэмдэгт",
+InsertSpecialChar	: "Онцгой тэмдэгт оруулах",
+InsertSmileyLbl		: "Тодорхойлолт",
+InsertSmiley		: "Тодорхойлолт оруулах",
+About				: "FCKeditor-н тухай",
+Bold				: "Тод бүдүүн",
+Italic				: "Налуу",
+Underline			: "Доогуур нь зураастай болгох",
+StrikeThrough		: "Дундуур нь зураастай болгох",
+Subscript			: "Суурь болгох",
+Superscript			: "Зэрэг болгох",
+LeftJustify			: "Зүүн талд байрлуулах",
+CenterJustify		: "Төвд байрлуулах",
+RightJustify		: "Баруун талд байрлуулах",
+BlockJustify		: "Блок хэлбэрээр байрлуулах",
+DecreaseIndent		: "Догол мөр нэмэх",
+IncreaseIndent		: "Догол мөр хасах",
+Blockquote			: "Хайрцаглах",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Хүчингүй болгох",
+Redo				: "Өмнөх үйлдлээ сэргээх",
+NumberedListLbl		: "Дугаарлагдсан жагсаалт",
+NumberedList		: "Дугаарлагдсан жагсаалт Оруулах/Авах",
+BulletedListLbl		: "Цэгтэй жагсаалт",
+BulletedList		: "Цэгтэй жагсаалт Оруулах/Авах",
+ShowTableBorders	: "Хүснэгтийн хүрээг үзүүлэх",
+ShowDetails			: "Деталчлан үзүүлэх",
+Style				: "Загвар",
+FontFormat			: "Формат",
+Font				: "Фонт",
+FontSize			: "Хэмжээ",
+TextColor			: "Фонтны өнгө",
+BGColor				: "Фонны өнгө",
+Source				: "Код",
+Find				: "Хайх",
+Replace				: "Солих",
+SpellCheck			: "Үгийн дүрэх шалгах",
+UniversalKeyboard	: "Униварсал гар",
+PageBreakLbl		: "Хуудас тусгаарлах",
+PageBreak			: "Хуудас тусгаарлагч оруулах",
+
+Form			: "Форм",
+Checkbox		: "Чекбокс",
+RadioButton		: "Радио товч",
+TextField		: "Техт талбар",
+Textarea		: "Техт орчин",
+HiddenField		: "Нууц талбар",
+Button			: "Товч",
+SelectionField	: "Сонгогч талбар",
+ImageButton		: "Зурагтай товч",
+
+FitWindow		: "editor-н хэмжээг томруулах",
+ShowBlocks		: "Block-уудыг үзүүлэх",
+
+// Context Menu
+EditLink			: "Холбоос засварлах",
+CellCM				: "Нүх/зай",
+RowCM				: "Мөр",
+ColumnCM			: "Багана",
+InsertRowAfter		: "Мөр дараа нь оруулах",
+InsertRowBefore		: "Мөр өмнө нь оруулах",
+DeleteRows			: "Мөр устгах",
+InsertColumnAfter	: "Багана дараа нь оруулах",
+InsertColumnBefore	: "Багана өмнө нь оруулах",
+DeleteColumns		: "Багана устгах",
+InsertCellAfter		: "Нүх/зай дараа нь оруулах",
+InsertCellBefore	: "Нүх/зай өмнө нь оруулах",
+DeleteCells			: "Нүх устгах",
+MergeCells			: "Нүх нэгтэх",
+MergeRight			: "Баруун тийш нэгтгэх",
+MergeDown			: "Доош нэгтгэх",
+HorizontalSplitCell	: "Нүх/зайг босоогоор нь тусгаарлах",
+VerticalSplitCell	: "Нүх/зайг хөндлөнгөөр нь тусгаарлах",
+TableDelete			: "Хүснэгт устгах",
+CellProperties		: "Нүх/зай зайн шинж чанар",
+TableProperties		: "Хүснэгт",
+ImageProperties		: "Зураг",
+FlashProperties		: "Флаш шинж чанар",
+
+AnchorProp			: "Холбоос шинж чанар",
+ButtonProp			: "Товчны шинж чанар",
+CheckboxProp		: "Чекбоксны шинж чанар",
+HiddenFieldProp		: "Нууц талбарын шинж чанар",
+RadioButtonProp		: "Радио товчны шинж чанар",
+ImageButtonProp		: "Зурган товчны шинж чанар",
+TextFieldProp		: "Текст талбарын шинж чанар",
+SelectionFieldProp	: "Согогч талбарын шинж чанар",
+TextareaProp		: "Текст орчны шинж чанар",
+FormProp			: "Форм шинж чанар",
+
+FontFormats			: "Хэвийн;Formatted;Хаяг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML үйл явц явагдаж байна. Хүлээнэ үү...",
+Done				: "Хийх",
+PasteWordConfirm	: "Word-оос хуулсан текстээ санаж байгааг нь буулгахыг та хүсч байна уу. Та текст-ээ буулгахын өмнө цэвэрлэх үү?",
+NotCompatiblePaste	: "Энэ комманд Internet Explorer-ын 5.5 буюу түүнээс дээш хувилбарт идвэхшинэ. Та цэвэрлэхгүйгээр буулгахыг хүсч байна?",
+UnknownToolbarItem	: "Багажны хэсгийн \"%1\" item мэдэгдэхгүй байна",
+UnknownCommand		: "\"%1\" комманд нэр мэдагдэхгүй байна",
+NotImplemented		: "Зөвшөөрөгдөхгүй комманд",
+UnknownToolbarSet	: "Багажны хэсэгт \"%1\" оноох, үүсээгүй байна",
+NoActiveX			: "Таны үзүүлэгч/browser-н хамгаалалтын тохиргоо editor-н зарим боломжийг хязгаарлаж байна. Та \"Run ActiveX controls ба plug-ins\" сонголыг идвэхитэй болго.",
+BrowseServerBlocked : "Нөөц үзүүгч нээж чадсангүй. Бүх popup blocker-г disabled болгоно уу.",
+DialogBlocked		: "Харилцах цонхонд энийг нээхэд боломжгүй ээ. Бүх popup blocker-г disabled болгоно уу.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Болих",
+DlgBtnClose			: "Хаах",
+DlgBtnBrowseServer	: "Сервер харуулах",
+DlgAdvancedTag		: "Нэмэлт",
+DlgOpOther			: "<Бусад>",
+DlgInfoTab			: "Мэдээлэл",
+DlgAlertUrl			: "URL оруулна уу",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Оноохгүй>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Хэлний чиглэл",
+DlgGenLangDirLtr	: "Зүүнээс баруун (LTR)",
+DlgGenLangDirRtl	: "Баруунаас зүүн (RTL)",
+DlgGenLangCode		: "Хэлний код",
+DlgGenAccessKey		: "Холбох түлхүүр",
+DlgGenName			: "Нэр",
+DlgGenTabIndex		: "Tab индекс",
+DlgGenLongDescr		: "URL-ын тайлбар",
+DlgGenClass			: "Stylesheet классууд",
+DlgGenTitle			: "Зөвлөлдөх гарчиг",
+DlgGenContType		: "Зөвлөлдөх төрлийн агуулга",
+DlgGenLinkCharset	: "Тэмдэгт оноох нөөцөд холбогдсон",
+DlgGenStyle			: "Загвар",
+
+// Image Dialog
+DlgImgTitle			: "Зураг",
+DlgImgInfoTab		: "Зурагны мэдээлэл",
+DlgImgBtnUpload		: "Үүнийг сервэррүү илгээ",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Хуулах",
+DlgImgAlt			: "Тайлбар текст",
+DlgImgWidth			: "Өргөн",
+DlgImgHeight		: "Өндөр",
+DlgImgLockRatio		: "Радио түгжих",
+DlgBtnResetSize		: "хэмжээ дахин оноох",
+DlgImgBorder		: "Хүрээ",
+DlgImgHSpace		: "Хөндлөн зай",
+DlgImgVSpace		: "Босоо зай",
+DlgImgAlign			: "Эгнээ",
+DlgImgAlignLeft		: "Зүүн",
+DlgImgAlignAbsBottom: "Abs доод талд",
+DlgImgAlignAbsMiddle: "Abs Дунд талд",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Доод талд",
+DlgImgAlignMiddle	: "Дунд талд",
+DlgImgAlignRight	: "Баруун",
+DlgImgAlignTextTop	: "Текст дээр",
+DlgImgAlignTop		: "Дээд талд",
+DlgImgPreview		: "Уридчлан харах",
+DlgImgAlertUrl		: "Зурагны URL-ын төрлийн сонгоно уу",
+DlgImgLinkTab		: "Линк",
+
+// Flash Dialog
+DlgFlashTitle		: "Флаш  шинж чанар",
+DlgFlashChkPlay		: "Автоматаар тоглох",
+DlgFlashChkLoop		: "Давтах",
+DlgFlashChkMenu		: "Флаш цэс идвэхжүүлэх",
+DlgFlashScale		: "Өргөгтгөх",
+DlgFlashScaleAll	: "Бүгдийг харуулах",
+DlgFlashScaleNoBorder	: "Хүрээгүй",
+DlgFlashScaleFit	: "Яг тааруулах",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Линк",
+DlgLnkInfoTab		: "Линкийн мэдээлэл",
+DlgLnkTargetTab		: "Байрлал",
+
+DlgLnkType			: "Линкийн төрөл",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Энэ хуудасандах холбоос",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<бусад>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Холбоос сонгох",
+DlgLnkAnchorByName	: "Холбоосын нэрээр",
+DlgLnkAnchorById	: "Элемэнт Id-гаар",
+DlgLnkNoAnchors		: "(Баримт бичиг холбоосгүй байна)",
+DlgLnkEMail			: "E-Mail Хаяг",
+DlgLnkEMailSubject	: "Message гарчиг",
+DlgLnkEMailBody		: "Message-ийн агуулга",
+DlgLnkUpload		: "Хуулах",
+DlgLnkBtnUpload		: "Үүнийг серверрүү илгээ",
+
+DlgLnkTarget		: "Байрлал",
+DlgLnkTargetFrame	: "<Агуулах хүрээ>",
+DlgLnkTargetPopup	: "<popup цонх>",
+DlgLnkTargetBlank	: "Шинэ цонх (_blank)",
+DlgLnkTargetParent	: "Эцэг цонх (_parent)",
+DlgLnkTargetSelf	: "Төстэй цонх (_self)",
+DlgLnkTargetTop		: "Хамгийн түрүүн байх цонх (_top)",
+DlgLnkTargetFrameName	: "Очих фремын нэр",
+DlgLnkPopWinName	: "Popup цонхны нэр",
+DlgLnkPopWinFeat	: "Popup цонхны онцлог",
+DlgLnkPopResize		: "Хэмжээ өөрчлөх",
+DlgLnkPopLocation	: "Location хэсэг",
+DlgLnkPopMenu		: "Meню хэсэг",
+DlgLnkPopScroll		: "Скрол хэсэгүүд",
+DlgLnkPopStatus		: "Статус хэсэг",
+DlgLnkPopToolbar	: "Багажны хэсэг",
+DlgLnkPopFullScrn	: "Цонх дүүргэх (IE)",
+DlgLnkPopDependent	: "Хамаатай (Netscape)",
+DlgLnkPopWidth		: "Өргөн",
+DlgLnkPopHeight		: "Өндөр",
+DlgLnkPopLeft		: "Зүүн байрлал",
+DlgLnkPopTop		: "Дээд байрлал",
+
+DlnLnkMsgNoUrl		: "Линк URL-ээ төрөлжүүлнэ үү",
+DlnLnkMsgNoEMail	: "Е-mail хаягаа төрөлжүүлнэ үү",
+DlnLnkMsgNoAnchor	: "Холбоосоо сонгоно уу",
+DlnLnkMsgInvPopName	: "popup нэр нь үсгэн тэмдэгтээр эхэлсэн байх ба хоосон зай агуулаагүй байх ёстой.",
+
+// Color Dialog
+DlgColorTitle		: "Өнгө сонгох",
+DlgColorBtnClear	: "Цэвэрлэх",
+DlgColorHighlight	: "Өнгө",
+DlgColorSelected	: "Сонгогдсон",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Тодорхойлолт оруулах",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Онцгой тэмдэгт сонгох",
+
+// Table Dialog
+DlgTableTitle		: "Хүснэгт",
+DlgTableRows		: "Мөр",
+DlgTableColumns		: "Багана",
+DlgTableBorder		: "Хүрээний хэмжээ",
+DlgTableAlign		: "Эгнээ",
+DlgTableAlignNotSet	: "<Оноохгүй>",
+DlgTableAlignLeft	: "Зүүн талд",
+DlgTableAlignCenter	: "Төвд",
+DlgTableAlignRight	: "Баруун талд",
+DlgTableWidth		: "Өргөн",
+DlgTableWidthPx		: "цэг",
+DlgTableWidthPc		: "хувь",
+DlgTableHeight		: "Өндөр",
+DlgTableCellSpace	: "Нүх хоорондын зай (spacing)",
+DlgTableCellPad		: "Нүх доторлох(padding)",
+DlgTableCaption		: "Тайлбар",
+DlgTableSummary		: "Тайлбар",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Хоосон зайн шинж чанар",
+DlgCellWidth		: "Өргөн",
+DlgCellWidthPx		: "цэг",
+DlgCellWidthPc		: "хувь",
+DlgCellHeight		: "Өндөр",
+DlgCellWordWrap		: "Үг таслах",
+DlgCellWordWrapNotSet	: "<Оноохгүй>",
+DlgCellWordWrapYes	: "Тийм",
+DlgCellWordWrapNo	: "Үгүй",
+DlgCellHorAlign		: "Босоо эгнээ",
+DlgCellHorAlignNotSet	: "<Оноохгүй>",
+DlgCellHorAlignLeft	: "Зүүн",
+DlgCellHorAlignCenter	: "Төв",
+DlgCellHorAlignRight: "Баруун",
+DlgCellVerAlign		: "Хөндлөн эгнээ",
+DlgCellVerAlignNotSet	: "<Оноохгүй>",
+DlgCellVerAlignTop	: "Дээд тал",
+DlgCellVerAlignMiddle	: "Дунд",
+DlgCellVerAlignBottom	: "Доод тал",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Нийт мөр (span)",
+DlgCellCollSpan		: "Нийт багана (span)",
+DlgCellBackColor	: "Фонны өнгө",
+DlgCellBorderColor	: "Хүрээний өнгө",
+DlgCellBtnSelect	: "Сонго...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Хай мөн Дарж бич",
+
+// Find Dialog
+DlgFindTitle		: "Хайх",
+DlgFindFindBtn		: "Хайх",
+DlgFindNotFoundMsg	: "Хайсан текст олсонгүй.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Солих",
+DlgReplaceFindLbl		: "Хайх үг/үсэг:",
+DlgReplaceReplaceLbl	: "Солих үг:",
+DlgReplaceCaseChk		: "Тэнцэх төлөв",
+DlgReplaceReplaceBtn	: "Солих",
+DlgReplaceReplAllBtn	: "Бүгдийг нь Солих",
+DlgReplaceWordChk		: "Тэнцэх бүтэн үг",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.",
+PasteErrorCopy	: "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.",
+
+PasteAsText		: "Plain Text-ээс буулгах",
+PasteFromWord	: "Word-оос буулгах",
+
+DlgPasteMsg2	: "(<strong>Ctrl+V</strong>) товчийг ашиглан paste хийнэ үү. Мөн <strong>OK</strong> дар.",
+DlgPasteSec		: "Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.",
+DlgPasteIgnoreFont		: "Тодорхойлогдсон Font Face зөвшөөрнө",
+DlgPasteRemoveStyles	: "Тодорхойлогдсон загварыг авах",
+
+// Color Picker
+ColorAutomatic	: "Автоматаар",
+ColorMoreColors	: "Нэмэлт өнгөнүүд...",
+
+// Document Properties
+DocProps		: "Баримт бичиг шинж чанар",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Холбоос шинж чанар",
+DlgAnchorName		: "Холбоос нэр",
+DlgAnchorErrorName	: "Холбоос төрөл оруулна уу",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Толь бичиггүй",
+DlgSpellChangeTo		: "Өөрчлөх",
+DlgSpellBtnIgnore		: "Зөвшөөрөх",
+DlgSpellBtnIgnoreAll	: "Бүгдийг зөвшөөрөх",
+DlgSpellBtnReplace		: "Дарж бичих",
+DlgSpellBtnReplaceAll	: "Бүгдийг Дарж бичих",
+DlgSpellBtnUndo			: "Буцаах",
+DlgSpellNoSuggestions	: "- Тайлбаргүй -",
+DlgSpellProgress		: "Дүрэм шалгаж байгаа үйл явц...",
+DlgSpellNoMispell		: "Дүрэм шалгаад дууссан: Алдаа олдсонгүй",
+DlgSpellNoChanges		: "Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй",
+DlgSpellOneChange		: "Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн",
+DlgSpellManyChanges		: "Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн",
+
+IeSpellDownload			: "Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?",
+
+// Button Dialog
+DlgButtonText		: "Тэкст (Утга)",
+DlgButtonType		: "Төрөл",
+DlgButtonTypeBtn	: "Товч",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Болих",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Нэр",
+DlgCheckboxValue	: "Утга",
+DlgCheckboxSelected	: "Сонгогдсон",
+
+// Form Dialog
+DlgFormName		: "Нэр",
+DlgFormAction	: "Үйлдэл",
+DlgFormMethod	: "Арга",
+
+// Select Field Dialog
+DlgSelectName		: "Нэр",
+DlgSelectValue		: "Утга",
+DlgSelectSize		: "Хэмжээ",
+DlgSelectLines		: "Мөр",
+DlgSelectChkMulti	: "Олон сонголт зөвшөөрөх",
+DlgSelectOpAvail	: "Идвэхтэй сонголт",
+DlgSelectOpText		: "Тэкст",
+DlgSelectOpValue	: "Утга",
+DlgSelectBtnAdd		: "Нэмэх",
+DlgSelectBtnModify	: "Өөрчлөх",
+DlgSelectBtnUp		: "Дээш",
+DlgSelectBtnDown	: "Доош",
+DlgSelectBtnSetValue : "Сонгогдсан утга оноох",
+DlgSelectBtnDelete	: "Устгах",
+
+// Textarea Dialog
+DlgTextareaName	: "Нэр",
+DlgTextareaCols	: "Багана",
+DlgTextareaRows	: "Мөр",
+
+// Text Field Dialog
+DlgTextName			: "Нэр",
+DlgTextValue		: "Утга",
+DlgTextCharWidth	: "Тэмдэгтын өргөн",
+DlgTextMaxChars		: "Хамгийн их тэмдэгт",
+DlgTextType			: "Төрөл",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Нууц үг",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Нэр",
+DlgHiddenValue	: "Утга",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted жагсаалын шинж чанар",
+NumberedListProp	: "Дугаарласан жагсаалын шинж чанар",
+DlgLstStart			: "Эхлэх",
+DlgLstType			: "Төрөл",
+DlgLstTypeCircle	: "Тойрог",
+DlgLstTypeDisc		: "Тайлбар",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Тоо (1, 2, 3)",
+DlgLstTypeLCase		: "Жижиг үсэг (a, b, c)",
+DlgLstTypeUCase		: "Том үсэг (A, B, C)",
+DlgLstTypeSRoman	: "Жижиг Ром тоо (i, ii, iii)",
+DlgLstTypeLRoman	: "Том Ром тоо (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Ерөнхий",
+DlgDocBackTab		: "Фоно",
+DlgDocColorsTab		: "Захын зай ба Өнгө",
+DlgDocMetaTab		: "Meta өгөгдөл",
+
+DlgDocPageTitle		: "Хуудасны гарчиг",
+DlgDocLangDir		: "Хэлний чиглэл",
+DlgDocLangDirLTR	: "Зүүнээс баруунруу (LTR)",
+DlgDocLangDirRTL	: "Баруунаас зүүнрүү (RTL)",
+DlgDocLangCode		: "Хэлний код",
+DlgDocCharSet		: "Encoding тэмдэгт",
+DlgDocCharSetCE		: "Төв европ",
+DlgDocCharSetCT		: "Хятадын уламжлалт (Big5)",
+DlgDocCharSetCR		: "Крил",
+DlgDocCharSetGR		: "Гред",
+DlgDocCharSetJP		: "Япон",
+DlgDocCharSetKR		: "Солонгос",
+DlgDocCharSetTR		: "Tурк",
+DlgDocCharSetUN		: "Юникод (UTF-8)",
+DlgDocCharSetWE		: "Баруун европ",
+DlgDocCharSetOther	: "Encoding-д өөр тэмдэгт оноох",
+
+DlgDocDocType		: "Баримт бичгийн төрөл Heading",
+DlgDocDocTypeOther	: "Бусад баримт бичгийн төрөл Heading",
+DlgDocIncXHTML		: "XHTML агуулж зарлах",
+DlgDocBgColor		: "Фоно өнгө",
+DlgDocBgImage		: "Фоно зурагны URL",
+DlgDocBgNoScroll	: "Гүйдэггүй фоно",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Линк",
+DlgDocCVisited		: "Зочилсон линк",
+DlgDocCActive		: "Идвэхитэй линк",
+DlgDocMargins		: "Хуудасны захын зай",
+DlgDocMaTop			: "Дээд тал",
+DlgDocMaLeft		: "Зүүн тал",
+DlgDocMaRight		: "Баруун тал",
+DlgDocMaBottom		: "Доод тал",
+DlgDocMeIndex		: "Баримт бичгийн индекс түлхүүр үг (таслалаар тусгаарлагдана)",
+DlgDocMeDescr		: "Баримт бичгийн тайлбар",
+DlgDocMeAuthor		: "Зохиогч",
+DlgDocMeCopy		: "Зохиогчийн эрх",
+DlgDocPreview		: "Харах",
+
+// Templates Dialog
+Templates			: "Загварууд",
+DlgTemplatesTitle	: "Загварын агуулга",
+DlgTemplatesSelMsg	: "Загварыг нээж editor-рүү сонгож оруулна уу<br />(Одоогийн агууллагыг устаж магадгүй):",
+DlgTemplatesLoading	: "Загваруудыг ачааллаж байна. Түр хүлээнэ үү...",
+DlgTemplatesNoTpl	: "(Загвар тодорхойлогдоогүй байна)",
+DlgTemplatesReplace	: "Одоогийн агууллагыг дарж бичих",
+
+// About Dialog
+DlgAboutAboutTab	: "Тухай",
+DlgAboutBrowserInfoTab	: "Мэдээлэл үзүүлэгч",
+DlgAboutLicenseTab	: "Лиценз",
+DlgAboutVersion		: "Хувилбар",
+DlgAboutInfo		: "Мэдээллээр туслах",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pl.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Polish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Zwiń pasek narzędzi",
+ToolbarExpand		: "Rozwiń pasek narzędzi",
+
+// Toolbar Items and Context Menu
+Save				: "Zapisz",
+NewPage				: "Nowa strona",
+Preview				: "Podgląd",
+Cut					: "Wytnij",
+Copy				: "Kopiuj",
+Paste				: "Wklej",
+PasteText			: "Wklej jako czysty tekst",
+PasteWord			: "Wklej z Worda",
+Print				: "Drukuj",
+SelectAll			: "Zaznacz wszystko",
+RemoveFormat		: "Usuń formatowanie",
+InsertLinkLbl		: "Hiperłącze",
+InsertLink			: "Wstaw/edytuj hiperłącze",
+RemoveLink			: "Usuń hiperłącze",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Wstaw/edytuj kotwicę",
+AnchorDelete		: "Usuń kotwicę",
+InsertImageLbl		: "Obrazek",
+InsertImage			: "Wstaw/edytuj obrazek",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Dodaj/Edytuj element Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Wstaw/edytuj tabelę",
+InsertLineLbl		: "Linia pozioma",
+InsertLine			: "Wstaw poziomą linię",
+InsertSpecialCharLbl: "Znak specjalny",
+InsertSpecialChar	: "Wstaw znak specjalny",
+InsertSmileyLbl		: "Emotikona",
+InsertSmiley		: "Wstaw emotikonę",
+About				: "O programie FCKeditor",
+Bold				: "Pogrubienie",
+Italic				: "Kursywa",
+Underline			: "Podkreślenie",
+StrikeThrough		: "Przekreślenie",
+Subscript			: "Indeks dolny",
+Superscript			: "Indeks górny",
+LeftJustify			: "Wyrównaj do lewej",
+CenterJustify		: "Wyrównaj do środka",
+RightJustify		: "Wyrównaj do prawej",
+BlockJustify		: "Wyrównaj do lewej i prawej",
+DecreaseIndent		: "Zmniejsz wcięcie",
+IncreaseIndent		: "Zwiększ wcięcie",
+Blockquote			: "Cytat",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Cofnij",
+Redo				: "Ponów",
+NumberedListLbl		: "Lista numerowana",
+NumberedList		: "Wstaw/usuń numerowanie listy",
+BulletedListLbl		: "Lista wypunktowana",
+BulletedList		: "Wstaw/usuń wypunktowanie listy",
+ShowTableBorders	: "Pokazuj ramkę tabeli",
+ShowDetails			: "Pokaż szczegóły",
+Style				: "Styl",
+FontFormat			: "Format",
+Font				: "Czcionka",
+FontSize			: "Rozmiar",
+TextColor			: "Kolor tekstu",
+BGColor				: "Kolor tła",
+Source				: "Źródło dokumentu",
+Find				: "Znajdź",
+Replace				: "Zamień",
+SpellCheck			: "Sprawdź pisownię",
+UniversalKeyboard	: "Klawiatura Uniwersalna",
+PageBreakLbl		: "Odstęp",
+PageBreak			: "Wstaw odstęp",
+
+Form			: "Formularz",
+Checkbox		: "Pole wyboru (checkbox)",
+RadioButton		: "Pole wyboru (radio)",
+TextField		: "Pole tekstowe",
+Textarea		: "Obszar tekstowy",
+HiddenField		: "Pole ukryte",
+Button			: "Przycisk",
+SelectionField	: "Lista wyboru",
+ImageButton		: "Przycisk-obrazek",
+
+FitWindow		: "Maksymalizuj rozmiar edytora",
+ShowBlocks		: "Pokaż bloki",
+
+// Context Menu
+EditLink			: "Edytuj hiperłącze",
+CellCM				: "Komórka",
+RowCM				: "Wiersz",
+ColumnCM			: "Kolumna",
+InsertRowAfter		: "Wstaw wiersz poniżej",
+InsertRowBefore		: "Wstaw wiersz powyżej",
+DeleteRows			: "Usuń wiersze",
+InsertColumnAfter	: "Wstaw kolumnę z prawej",
+InsertColumnBefore	: "Wstaw kolumnę z lewej",
+DeleteColumns		: "Usuń kolumny",
+InsertCellAfter		: "Wstaw komórkę z prawej",
+InsertCellBefore	: "Wstaw komórkę z lewej",
+DeleteCells			: "Usuń komórki",
+MergeCells			: "Połącz komórki",
+MergeRight			: "Połącz z komórką z prawej",
+MergeDown			: "Połącz z komórką poniżej",
+HorizontalSplitCell	: "Podziel komórkę poziomo",
+VerticalSplitCell	: "Podziel komórkę pionowo",
+TableDelete			: "Usuń tabelę",
+CellProperties		: "Właściwości komórki",
+TableProperties		: "Właściwości tabeli",
+ImageProperties		: "Właściwości obrazka",
+FlashProperties		: "Właściwości elementu Flash",
+
+AnchorProp			: "Właściwości kotwicy",
+ButtonProp			: "Właściwości przycisku",
+CheckboxProp		: "Właściwości pola wyboru (checkbox)",
+HiddenFieldProp		: "Właściwości pola ukrytego",
+RadioButtonProp		: "Właściwości pola wyboru (radio)",
+ImageButtonProp		: "Właściwości przycisku obrazka",
+TextFieldProp		: "Właściwości pola tekstowego",
+SelectionFieldProp	: "Właściwości listy wyboru",
+TextareaProp		: "Właściwości obszaru tekstowego",
+FormProp			: "Właściwości formularza",
+
+FontFormats			: "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Przetwarzanie XHTML. Proszę czekać...",
+Done				: "Gotowe",
+PasteWordConfirm	: "Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?",
+NotCompatiblePaste	: "Ta funkcja jest dostępna w programie Internet Explorer w wersji 5.5 lub wyższej. Czy chcesz wkleić tekst bez czyszczenia?",
+UnknownToolbarItem	: "Nieznany element paska narzędzi \"%1\"",
+UnknownCommand		: "Nieznana komenda \"%1\"",
+NotImplemented		: "Komenda niezaimplementowana",
+UnknownToolbarSet	: "Pasek narzędzi \"%1\" nie istnieje",
+NoActiveX			: "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
+BrowseServerBlocked : "Nie można otworzyć okno menadżera plików. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
+DialogBlocked		: "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Anuluj",
+DlgBtnClose			: "Zamknij",
+DlgBtnBrowseServer	: "Przeglądaj",
+DlgAdvancedTag		: "Zaawansowane",
+DlgOpOther			: "<Inny>",
+DlgInfoTab			: "Informacje",
+DlgAlertUrl			: "Proszę podać URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nie ustawione>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Kierunek tekstu",
+DlgGenLangDirLtr	: "Od lewej do prawej (LTR)",
+DlgGenLangDirRtl	: "Od prawej do lewej (RTL)",
+DlgGenLangCode		: "Kod języka",
+DlgGenAccessKey		: "Klawisz dostępu",
+DlgGenName			: "Nazwa",
+DlgGenTabIndex		: "Indeks tabeli",
+DlgGenLongDescr		: "Długi opis hiperłącza",
+DlgGenClass			: "Nazwa klasy CSS",
+DlgGenTitle			: "Opis obiektu docelowego",
+DlgGenContType		: "Typ MIME obiektu docelowego",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Kodowanie znaków obiektu docelowego",
+DlgGenStyle			: "Styl",
+
+// Image Dialog
+DlgImgTitle			: "Właściwości obrazka",
+DlgImgInfoTab		: "Informacje o obrazku",
+DlgImgBtnUpload		: "Wyślij",
+DlgImgURL			: "Adres URL",
+DlgImgUpload		: "Wyślij",
+DlgImgAlt			: "Tekst zastępczy",
+DlgImgWidth			: "Szerokość",
+DlgImgHeight		: "Wysokość",
+DlgImgLockRatio		: "Zablokuj proporcje",
+DlgBtnResetSize		: "Przywróć rozmiar",
+DlgImgBorder		: "Ramka",
+DlgImgHSpace		: "Odstęp poziomy",
+DlgImgVSpace		: "Odstęp pionowy",
+DlgImgAlign			: "Wyrównaj",
+DlgImgAlignLeft		: "Do lewej",
+DlgImgAlignAbsBottom: "Do dołu",
+DlgImgAlignAbsMiddle: "Do środka w pionie",
+DlgImgAlignBaseline	: "Do linii bazowej",
+DlgImgAlignBottom	: "Do dołu",
+DlgImgAlignMiddle	: "Do środka",
+DlgImgAlignRight	: "Do prawej",
+DlgImgAlignTextTop	: "Do góry tekstu",
+DlgImgAlignTop		: "Do góry",
+DlgImgPreview		: "Podgląd",
+DlgImgAlertUrl		: "Podaj adres obrazka.",
+DlgImgLinkTab		: "Hiperłącze",
+
+// Flash Dialog
+DlgFlashTitle		: "Właściwości elementu Flash",
+DlgFlashChkPlay		: "Auto Odtwarzanie",
+DlgFlashChkLoop		: "Pętla",
+DlgFlashChkMenu		: "Włącz menu",
+DlgFlashScale		: "Skaluj",
+DlgFlashScaleAll	: "Pokaż wszystko",
+DlgFlashScaleNoBorder	: "Bez Ramki",
+DlgFlashScaleFit	: "Dokładne dopasowanie",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperłącze",
+DlgLnkInfoTab		: "Informacje ",
+DlgLnkTargetTab		: "Cel",
+
+DlgLnkType			: "Typ hiperłącza",
+DlgLnkTypeURL		: "Adres URL",
+DlgLnkTypeAnchor	: "Odnośnik wewnątrz strony",
+DlgLnkTypeEMail		: "Adres e-mail",
+DlgLnkProto			: "Protokół",
+DlgLnkProtoOther	: "<inny>",
+DlgLnkURL			: "Adres URL",
+DlgLnkAnchorSel		: "Wybierz etykietę",
+DlgLnkAnchorByName	: "Wg etykiety",
+DlgLnkAnchorById	: "Wg identyfikatora elementu",
+DlgLnkNoAnchors		: "(W dokumencie nie zdefiniowano żadnych etykiet)",
+DlgLnkEMail			: "Adres e-mail",
+DlgLnkEMailSubject	: "Temat",
+DlgLnkEMailBody		: "Treść",
+DlgLnkUpload		: "Wyślij",
+DlgLnkBtnUpload		: "Wyślij",
+
+DlgLnkTarget		: "Cel",
+DlgLnkTargetFrame	: "<ramka>",
+DlgLnkTargetPopup	: "<wyskakujące okno>",
+DlgLnkTargetBlank	: "Nowe okno (_blank)",
+DlgLnkTargetParent	: "Okno nadrzędne (_parent)",
+DlgLnkTargetSelf	: "To samo okno (_self)",
+DlgLnkTargetTop		: "Okno najwyższe w hierarchii (_top)",
+DlgLnkTargetFrameName	: "Nazwa Ramki Docelowej",
+DlgLnkPopWinName	: "Nazwa wyskakującego okna",
+DlgLnkPopWinFeat	: "Właściwości wyskakującego okna",
+DlgLnkPopResize		: "Możliwa zmiana rozmiaru",
+DlgLnkPopLocation	: "Pasek adresu",
+DlgLnkPopMenu		: "Pasek menu",
+DlgLnkPopScroll		: "Paski przewijania",
+DlgLnkPopStatus		: "Pasek statusu",
+DlgLnkPopToolbar	: "Pasek narzędzi",
+DlgLnkPopFullScrn	: "Pełny ekran (IE)",
+DlgLnkPopDependent	: "Okno zależne (Netscape)",
+DlgLnkPopWidth		: "Szerokość",
+DlgLnkPopHeight		: "Wysokość",
+DlgLnkPopLeft		: "Pozycja w poziomie",
+DlgLnkPopTop		: "Pozycja w pionie",
+
+DlnLnkMsgNoUrl		: "Podaj adres URL",
+DlnLnkMsgNoEMail	: "Podaj adres e-mail",
+DlnLnkMsgNoAnchor	: "Wybierz etykietę",
+DlnLnkMsgInvPopName	: "Nazwa wyskakującego okienka musi zaczynać się od znaku alfanumerycznego i nie może zawierać spacji",
+
+// Color Dialog
+DlgColorTitle		: "Wybierz kolor",
+DlgColorBtnClear	: "Wyczyść",
+DlgColorHighlight	: "Podgląd",
+DlgColorSelected	: "Wybrane",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Wstaw emotikonę",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Wybierz znak specjalny",
+
+// Table Dialog
+DlgTableTitle		: "Właściwości tabeli",
+DlgTableRows		: "Liczba wierszy",
+DlgTableColumns		: "Liczba kolumn",
+DlgTableBorder		: "Grubość ramki",
+DlgTableAlign		: "Wyrównanie",
+DlgTableAlignNotSet	: "<brak ustawień>",
+DlgTableAlignLeft	: "Do lewej",
+DlgTableAlignCenter	: "Do środka",
+DlgTableAlignRight	: "Do prawej",
+DlgTableWidth		: "Szerokość",
+DlgTableWidthPx		: "piksele",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Wysokość",
+DlgTableCellSpace	: "Odstęp pomiędzy komórkami",
+DlgTableCellPad		: "Margines wewnętrzny komórek",
+DlgTableCaption		: "Tytuł",
+DlgTableSummary		: "Podsumowanie",
+DlgTableHeaders		: "Nagłówki",
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Właściwości komórki",
+DlgCellWidth		: "Szerokość",
+DlgCellWidthPx		: "piksele",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Wysokość",
+DlgCellWordWrap		: "Zawijanie tekstu",
+DlgCellWordWrapNotSet	: "<brak ustawień>",
+DlgCellWordWrapYes	: "Tak",
+DlgCellWordWrapNo	: "Nie",
+DlgCellHorAlign		: "Wyrównanie poziome",
+DlgCellHorAlignNotSet	: "<brak ustawień>",
+DlgCellHorAlignLeft	: "Do lewej",
+DlgCellHorAlignCenter	: "Do środka",
+DlgCellHorAlignRight: "Do prawej",
+DlgCellVerAlign		: "Wyrównanie pionowe",
+DlgCellVerAlignNotSet	: "<brak ustawień>",
+DlgCellVerAlignTop	: "Do góry",
+DlgCellVerAlignMiddle	: "Do środka",
+DlgCellVerAlignBottom	: "Do dołu",
+DlgCellVerAlignBaseline	: "Do linii bazowej",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Zajętość wierszy",
+DlgCellCollSpan		: "Zajętość kolumn",
+DlgCellBackColor	: "Kolor tła",
+DlgCellBorderColor	: "Kolor ramki",
+DlgCellBtnSelect	: "Wybierz...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Znajdź i zamień",
+
+// Find Dialog
+DlgFindTitle		: "Znajdź",
+DlgFindFindBtn		: "Znajdź",
+DlgFindNotFoundMsg	: "Nie znaleziono szukanego hasła.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamień",
+DlgReplaceFindLbl		: "Znajdź:",
+DlgReplaceReplaceLbl	: "Zastąp przez:",
+DlgReplaceCaseChk		: "Uwzględnij wielkość liter",
+DlgReplaceReplaceBtn	: "Zastąp",
+DlgReplaceReplAllBtn	: "Zastąp wszystko",
+DlgReplaceWordChk		: "Całe słowa",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.",
+PasteErrorCopy	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.",
+
+PasteAsText		: "Wklej jako czysty tekst",
+PasteFromWord	: "Wklej z Worda",
+
+DlgPasteMsg2	: "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.",
+DlgPasteIgnoreFont		: "Ignoruj definicje 'Font Face'",
+DlgPasteRemoveStyles	: "Usuń definicje Stylów",
+
+// Color Picker
+ColorAutomatic	: "Automatycznie",
+ColorMoreColors	: "Więcej kolorów...",
+
+// Document Properties
+DocProps		: "Właściwości dokumentu",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Właściwości kotwicy",
+DlgAnchorName		: "Nazwa kotwicy",
+DlgAnchorErrorName	: "Wpisz nazwę kotwicy",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Słowa nie ma w słowniku",
+DlgSpellChangeTo		: "Zmień na",
+DlgSpellBtnIgnore		: "Ignoruj",
+DlgSpellBtnIgnoreAll	: "Ignoruj wszystkie",
+DlgSpellBtnReplace		: "Zmień",
+DlgSpellBtnReplaceAll	: "Zmień wszystkie",
+DlgSpellBtnUndo			: "Cofnij",
+DlgSpellNoSuggestions	: "- Brak sugestii -",
+DlgSpellProgress		: "Trwa sprawdzanie ...",
+DlgSpellNoMispell		: "Sprawdzanie zakończone: nie znaleziono błędów",
+DlgSpellNoChanges		: "Sprawdzanie zakończone: nie zmieniono żadnego słowa",
+DlgSpellOneChange		: "Sprawdzanie zakończone: zmieniono jedno słowo",
+DlgSpellManyChanges		: "Sprawdzanie zakończone: zmieniono %l słów",
+
+IeSpellDownload			: "Słownik nie jest zainstalowany. Chcesz go ściągnąć?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (Wartość)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Przycisk",
+DlgButtonTypeSbm	: "Wyślij",
+DlgButtonTypeRst	: "Wyzeruj",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nazwa",
+DlgCheckboxValue	: "Wartość",
+DlgCheckboxSelected	: "Zaznaczone",
+
+// Form Dialog
+DlgFormName		: "Nazwa",
+DlgFormAction	: "Akcja",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Nazwa",
+DlgSelectValue		: "Wartość",
+DlgSelectSize		: "Rozmiar",
+DlgSelectLines		: "linii",
+DlgSelectChkMulti	: "Wielokrotny wybór",
+DlgSelectOpAvail	: "Dostępne opcje",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Wartość",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Zmień",
+DlgSelectBtnUp		: "Do góry",
+DlgSelectBtnDown	: "Do dołu",
+DlgSelectBtnSetValue : "Ustaw wartość zaznaczoną",
+DlgSelectBtnDelete	: "Usuń",
+
+// Textarea Dialog
+DlgTextareaName	: "Nazwa",
+DlgTextareaCols	: "Kolumnu",
+DlgTextareaRows	: "Wiersze",
+
+// Text Field Dialog
+DlgTextName			: "Nazwa",
+DlgTextValue		: "Wartość",
+DlgTextCharWidth	: "Szerokość w znakach",
+DlgTextMaxChars		: "Max. szerokość",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Hasło",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nazwa",
+DlgHiddenValue	: "Wartość",
+
+// Bulleted List Dialog
+BulletedListProp	: "Właściwości listy punktowanej",
+NumberedListProp	: "Właściwości listy numerowanej",
+DlgLstStart			: "Początek",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Koło",
+DlgLstTypeDisc		: "Dysk",
+DlgLstTypeSquare	: "Kwadrat",
+DlgLstTypeNumbers	: "Cyfry (1, 2, 3)",
+DlgLstTypeLCase		: "Małe litery (a, b, c)",
+DlgLstTypeUCase		: "Duże litery (A, B, C)",
+DlgLstTypeSRoman	: "Numeracja rzymska (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeracja rzymska (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Ogólne",
+DlgDocBackTab		: "Tło",
+DlgDocColorsTab		: "Kolory i marginesy",
+DlgDocMetaTab		: "Meta Dane",
+
+DlgDocPageTitle		: "Tytuł strony",
+DlgDocLangDir		: "Kierunek pisania",
+DlgDocLangDirLTR	: "Od lewej do prawej (LTR)",
+DlgDocLangDirRTL	: "Od prawej do lewej (RTL)",
+DlgDocLangCode		: "Kod języka",
+DlgDocCharSet		: "Kodowanie znaków",
+DlgDocCharSetCE		: "Środkowoeuropejskie",
+DlgDocCharSetCT		: "Chińskie tradycyjne (Big5)",
+DlgDocCharSetCR		: "Cyrylica",
+DlgDocCharSetGR		: "Greckie",
+DlgDocCharSetJP		: "Japońskie",
+DlgDocCharSetKR		: "Koreańskie",
+DlgDocCharSetTR		: "Tureckie",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Zachodnioeuropejskie",
+DlgDocCharSetOther	: "Inne kodowanie znaków",
+
+DlgDocDocType		: "Nagłówek typu dokumentu",
+DlgDocDocTypeOther	: "Inny typ dokumentu",
+DlgDocIncXHTML		: "Dołącz deklarację XHTML",
+DlgDocBgColor		: "Kolor tła",
+DlgDocBgImage		: "Obrazek tła",
+DlgDocBgNoScroll	: "Tło nieruchome",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Hiperłącze",
+DlgDocCVisited		: "Odwiedzane hiperłącze",
+DlgDocCActive		: "Aktywne hiperłącze",
+DlgDocMargins		: "Marginesy strony",
+DlgDocMaTop			: "Górny",
+DlgDocMaLeft		: "Lewy",
+DlgDocMaRight		: "Prawy",
+DlgDocMaBottom		: "Dolny",
+DlgDocMeIndex		: "Słowa kluczowe (oddzielone przecinkami)",
+DlgDocMeDescr		: "Opis dokumentu",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Prawa autorskie",
+DlgDocPreview		: "Podgląd",
+
+// Templates Dialog
+Templates			: "Szablony",
+DlgTemplatesTitle	: "Szablony zawartości",
+DlgTemplatesSelMsg	: "Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):",
+DlgTemplatesLoading	: "Ładowanie listy szablonów. Proszę czekać...",
+DlgTemplatesNoTpl	: "(Brak zdefiniowanych szablonów)",
+DlgTemplatesReplace	: "Zastąp aktualną zawartość",
+
+// About Dialog
+DlgAboutAboutTab	: "O ...",
+DlgAboutBrowserInfoTab	: "O przeglądarce",
+DlgAboutLicenseTab	: "Licencja",
+DlgAboutVersion		: "wersja",
+DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/th.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/th.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/th.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Thai language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ซ่อนแถบเครื่องมือ",
+ToolbarExpand		: "แสดงแถบเครื่องมือ",
+
+// Toolbar Items and Context Menu
+Save				: "บันทึก",
+NewPage				: "สร้างหน้าเอกสารใหม่",
+Preview				: "ดูหน้าเอกสารตัวอย่าง",
+Cut					: "ตัด",
+Copy				: "สำเนา",
+Paste				: "วาง",
+PasteText			: "วางสำเนาจากตัวอักษรธรรมดา",
+PasteWord			: "วางสำเนาจากตัวอักษรเวิร์ด",
+Print				: "สั่งพิมพ์",
+SelectAll			: "เลือกทั้งหมด",
+RemoveFormat		: "ล้างรูปแบบ",
+InsertLinkLbl		: "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
+InsertLink			: "แทรก/แก้ไข ลิงค์",
+RemoveLink			: "ลบ ลิงค์",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "แทรก/แก้ไข Anchor",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "รูปภาพ",
+InsertImage			: "แทรก/แก้ไข รูปภาพ",
+InsertFlashLbl		: "ไฟล์ Flash",
+InsertFlash			: "แทรก/แก้ไข ไฟล์ Flash",
+InsertTableLbl		: "ตาราง",
+InsertTable			: "แทรก/แก้ไข ตาราง",
+InsertLineLbl		: "เส้นคั่นบรรทัด",
+InsertLine			: "แทรกเส้นคั่นบรรทัด",
+InsertSpecialCharLbl: "ตัวอักษรพิเศษ",
+InsertSpecialChar	: "แทรกตัวอักษรพิเศษ",
+InsertSmileyLbl		: "รูปสื่ออารมณ์",
+InsertSmiley		: "แทรกรูปสื่ออารมณ์",
+About				: "เกี่ยวกับโปรแกรม FCKeditor",
+Bold				: "ตัวหนา",
+Italic				: "ตัวเอียง",
+Underline			: "ตัวขีดเส้นใต้",
+StrikeThrough		: "ตัวขีดเส้นทับ",
+Subscript			: "ตัวห้อย",
+Superscript			: "ตัวยก",
+LeftJustify			: "จัดชิดซ้าย",
+CenterJustify		: "จัดกึ่งกลาง",
+RightJustify		: "จัดชิดขวา",
+BlockJustify		: "จัดพอดีหน้ากระดาษ",
+DecreaseIndent		: "ลดระยะย่อหน้า",
+IncreaseIndent		: "เพิ่มระยะย่อหน้า",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "ยกเลิกคำสั่ง",
+Redo				: "ทำซ้ำคำสั่ง",
+NumberedListLbl		: "ลำดับรายการแบบตัวเลข",
+NumberedList		: "แทรก/แก้ไข ลำดับรายการแบบตัวเลข",
+BulletedListLbl		: "ลำดับรายการแบบสัญลักษณ์",
+BulletedList		: "แทรก/แก้ไข ลำดับรายการแบบสัญลักษณ์",
+ShowTableBorders	: "แสดงขอบของตาราง",
+ShowDetails			: "แสดงรายละเอียด",
+Style				: "ลักษณะ",
+FontFormat			: "รูปแบบ",
+Font				: "แบบอักษร",
+FontSize			: "ขนาด",
+TextColor			: "สีตัวอักษร",
+BGColor				: "สีพื้นหลัง",
+Source				: "ดูรหัส HTML",
+Find				: "ค้นหา",
+Replace				: "ค้นหาและแทนที่",
+SpellCheck			: "ตรวจการสะกดคำ",
+UniversalKeyboard	: "คีย์บอร์ดหลากภาษา",
+PageBreakLbl		: "ใส่ตัวแบ่งหน้า Page Break",
+PageBreak			: "แทรกตัวแบ่งหน้า Page Break",
+
+Form			: "แบบฟอร์ม",
+Checkbox		: "เช็คบ๊อก",
+RadioButton		: "เรดิโอบัตตอน",
+TextField		: "เท็กซ์ฟิลด์",
+Textarea		: "เท็กซ์แอเรีย",
+HiddenField		: "ฮิดเดนฟิลด์",
+Button			: "ปุ่ม",
+SelectionField	: "แถบตัวเลือก",
+ImageButton		: "ปุ่มแบบรูปภาพ",
+
+FitWindow		: "ขยายขนาดตัวอีดิตเตอร์",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "แก้ไข ลิงค์",
+CellCM				: "ช่องตาราง",
+RowCM				: "แถว",
+ColumnCM			: "คอลัมน์",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "ลบแถว",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "ลบสดมน์",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "ลบช่อง",
+MergeCells			: "ผสานช่อง",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "ลบตาราง",
+CellProperties		: "คุณสมบัติของช่อง",
+TableProperties		: "คุณสมบัติของตาราง",
+ImageProperties		: "คุณสมบัติของรูปภาพ",
+FlashProperties		: "คุณสมบัติของไฟล์ Flash",
+
+AnchorProp			: "รายละเอียด Anchor",
+ButtonProp			: "รายละเอียดของ ปุ่ม",
+CheckboxProp		: "คุณสมบัติของ เช็คบ๊อก",
+HiddenFieldProp		: "คุณสมบัติของ ฮิดเดนฟิลด์",
+RadioButtonProp		: "คุณสมบัติของ เรดิโอบัตตอน",
+ImageButtonProp		: "คุณสมบัติของ ปุ่มแบบรูปภาพ",
+TextFieldProp		: "คุณสมบัติของ เท็กซ์ฟิลด์",
+SelectionFieldProp	: "คุณสมบัติของ แถบตัวเลือก",
+TextareaProp		: "คุณสมบัติของ เท็กแอเรีย",
+FormProp			: "คุณสมบัติของ แบบฟอร์ม",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "โปรแกรมกำลังทำงานด้วยเทคโนโลยี XHTML กรุณารอสักครู่...",
+Done				: "โปรแกรมทำงานเสร็จสมบูรณ์",
+PasteWordConfirm	: "ข้อมูลที่ท่านต้องการวางลงในแผ่นงาน ถูกจัดรูปแบบจากโปรแกรมเวิร์ด. ท่านต้องการล้างรูปแบบที่มาจากโปรแกรมเวิร์ดหรือไม่?",
+NotCompatiblePaste	: "คำสั่งนี้ทำงานในโปรแกรมท่องเว็บ Internet Explorer version รุ่น 5.5 หรือใหม่กว่าเท่านั้น. ท่านต้องการวางตัวอักษรโดยไม่ล้างรูปแบบที่มาจากโปรแกรมเวิร์ดหรือไม่?",
+UnknownToolbarItem	: "ไม่สามารถระบุปุ่มเครื่องมือได้ \"%1\"",
+UnknownCommand		: "ไม่สามารถระบุชื่อคำสั่งได้ \"%1\"",
+NotImplemented		: "ไม่สามารถใช้งานคำสั่งได้",
+UnknownToolbarSet	: "ไม่มีการติดตั้งชุดคำสั่งในแถบเครื่องมือ \"%1\" กรุณาติดต่อผู้ดูแลระบบ",
+NoActiveX			: "โปรแกรมท่องอินเตอร์เน็ตของท่านไม่อนุญาติให้อีดิตเตอร์ทำงาน \"Run ActiveX controls and plug-ins\". หากไม่อนุญาติให้ใช้งาน ActiveX controls ท่านจะไม่สามารถใช้งานได้อย่างเต็มประสิทธิภาพ.",
+BrowseServerBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย",
+DialogBlocked		: "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ตกลง",
+DlgBtnCancel		: "ยกเลิก",
+DlgBtnClose			: "ปิด",
+DlgBtnBrowseServer	: "เปิดหน้าต่างจัดการไฟล์อัพโหลด",
+DlgAdvancedTag		: "ขั้นสูง",
+DlgOpOther			: "<อื่นๆ>",
+DlgInfoTab			: "อินโฟ",
+DlgAlertUrl			: "กรุณาระบุ URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ไม่ระบุ>",
+DlgGenId			: "ไอดี",
+DlgGenLangDir		: "การเขียน-อ่านภาษา",
+DlgGenLangDirLtr	: "จากซ้ายไปขวา (LTR)",
+DlgGenLangDirRtl	: "จากขวามาซ้าย (RTL)",
+DlgGenLangCode		: "รหัสภาษา",
+DlgGenAccessKey		: "แอคเซส คีย์",
+DlgGenName			: "ชื่อ",
+DlgGenTabIndex		: "ลำดับของ แท็บ",
+DlgGenLongDescr		: "คำอธิบายประกอบ URL",
+DlgGenClass			: "คลาสของไฟล์กำหนดลักษณะการแสดงผล",
+DlgGenTitle			: "คำเกริ่นนำ",
+DlgGenContType		: "ชนิดของคำเกริ่นนำ",
+DlgGenLinkCharset	: "ลิงค์เชื่อมโยงไปยังชุดตัวอักษร",
+DlgGenStyle			: "ลักษณะการแสดงผล",
+
+// Image Dialog
+DlgImgTitle			: "คุณสมบัติของ รูปภาพ",
+DlgImgInfoTab		: "ข้อมูลของรูปภาพ",
+DlgImgBtnUpload		: "อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)",
+DlgImgURL			: "ที่อยู่อ้างอิง URL",
+DlgImgUpload		: "อัพโหลดไฟล์",
+DlgImgAlt			: "คำประกอบรูปภาพ",
+DlgImgWidth			: "ความกว้าง",
+DlgImgHeight		: "ความสูง",
+DlgImgLockRatio		: "กำหนดอัตราส่วน กว้าง-สูง แบบคงที่",
+DlgBtnResetSize		: "กำหนดรูปเท่าขนาดจริง",
+DlgImgBorder		: "ขนาดขอบรูป",
+DlgImgHSpace		: "ระยะแนวนอน",
+DlgImgVSpace		: "ระยะแนวตั้ง",
+DlgImgAlign			: "การจัดวาง",
+DlgImgAlignLeft		: "ชิดซ้าย",
+DlgImgAlignAbsBottom: "ชิดด้านล่างสุด",
+DlgImgAlignAbsMiddle: "กึ่งกลาง",
+DlgImgAlignBaseline	: "ชิดบรรทัด",
+DlgImgAlignBottom	: "ชิดด้านล่าง",
+DlgImgAlignMiddle	: "กึ่งกลางแนวตั้ง",
+DlgImgAlignRight	: "ชิดขวา",
+DlgImgAlignTextTop	: "ใต้ตัวอักษร",
+DlgImgAlignTop		: "บนสุด",
+DlgImgPreview		: "หน้าเอกสารตัวอย่าง",
+DlgImgAlertUrl		: "กรุณาระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)",
+DlgImgLinkTab		: "ลิ้งค์",
+
+// Flash Dialog
+DlgFlashTitle		: "คุณสมบัติของไฟล์ Flash",
+DlgFlashChkPlay		: "เล่นอัตโนมัติ Auto Play",
+DlgFlashChkLoop		: "เล่นวนรอบ Loop",
+DlgFlashChkMenu		: "ให้ใช้งานเมนูของ Flash",
+DlgFlashScale		: "อัตราส่วน Scale",
+DlgFlashScaleAll	: "แสดงให้เห็นทั้งหมด Show all",
+DlgFlashScaleNoBorder	: "ไม่แสดงเส้นขอบ No Border",
+DlgFlashScaleFit	: "แสดงให้พอดีกับพื้นที่ Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
+DlgLnkInfoTab		: "รายละเอียด",
+DlgLnkTargetTab		: "การเปิดหน้าจอ",
+
+DlgLnkType			: "ประเภทของลิงค์",
+DlgLnkTypeURL		: "ที่อยู่อ้างอิงออนไลน์ (URL)",
+DlgLnkTypeAnchor	: "จุดเชื่อมโยง (Anchor)",
+DlgLnkTypeEMail		: "ส่งอีเมล์ (E-Mail)",
+DlgLnkProto			: "โปรโตคอล",
+DlgLnkProtoOther	: "<อื่นๆ>",
+DlgLnkURL			: "ที่อยู่อ้างอิงออนไลน์ (URL)",
+DlgLnkAnchorSel		: "ระบุข้อมูลของจุดเชื่อมโยง (Anchor)",
+DlgLnkAnchorByName	: "ชื่อ",
+DlgLnkAnchorById	: "ไอดี",
+DlgLnkNoAnchors		: "(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)",
+DlgLnkEMail			: "อีเมล์ (E-Mail)",
+DlgLnkEMailSubject	: "หัวเรื่อง",
+DlgLnkEMailBody		: "ข้อความ",
+DlgLnkUpload		: "อัพโหลดไฟล์",
+DlgLnkBtnUpload		: "บันทึกไฟล์ไว้บนเซิร์ฟเวอร์",
+
+DlgLnkTarget		: "การเปิดหน้าลิงค์",
+DlgLnkTargetFrame	: "<เปิดในเฟรม>",
+DlgLnkTargetPopup	: "<เปิดหน้าจอเล็ก (Pop-up)>",
+DlgLnkTargetBlank	: "เปิดหน้าจอใหม่ (_blank)",
+DlgLnkTargetParent	: "เปิดในหน้าหลัก (_parent)",
+DlgLnkTargetSelf	: "เปิดในหน้าปัจจุบัน (_self)",
+DlgLnkTargetTop		: "เปิดในหน้าบนสุด (_top)",
+DlgLnkTargetFrameName	: "ชื่อทาร์เก็ตเฟรม",
+DlgLnkPopWinName	: "ระบุชื่อหน้าจอเล็ก (Pop-up)",
+DlgLnkPopWinFeat	: "คุณสมบัติของหน้าจอเล็ก (Pop-up)",
+DlgLnkPopResize		: "ปรับขนาดหน้าจอ",
+DlgLnkPopLocation	: "แสดงที่อยู่ของไฟล์",
+DlgLnkPopMenu		: "แสดงแถบเมนู",
+DlgLnkPopScroll		: "แสดงแถบเลื่อน",
+DlgLnkPopStatus		: "แสดงแถบสถานะ",
+DlgLnkPopToolbar	: "แสดงแถบเครื่องมือ",
+DlgLnkPopFullScrn	: "แสดงเต็มหน้าจอ (IE5.5++ เท่านั้น)",
+DlgLnkPopDependent	: "แสดงเต็มหน้าจอ (Netscape)",
+DlgLnkPopWidth		: "กว้าง",
+DlgLnkPopHeight		: "สูง",
+DlgLnkPopLeft		: "พิกัดซ้าย (Left Position)",
+DlgLnkPopTop		: "พิกัดบน (Top Position)",
+
+DlnLnkMsgNoUrl		: "กรุณาระบุที่อยู่อ้างอิงออนไลน์ (URL)",
+DlnLnkMsgNoEMail	: "กรุณาระบุอีเมล์ (E-mail)",
+DlnLnkMsgNoAnchor	: "กรุณาระบุจุดเชื่อมโยง (Anchor)",
+DlnLnkMsgInvPopName	: "ชื่อของหน้าต่างป๊อบอัพ จะต้องขึ้นต้นด้วยตัวอักษรเท่านั้น และต้องไม่มีช่องว่างในชื่อ",
+
+// Color Dialog
+DlgColorTitle		: "เลือกสี",
+DlgColorBtnClear	: "ล้างค่ารหัสสี",
+DlgColorHighlight	: "ตัวอย่างสี",
+DlgColorSelected	: "สีที่เลือก",
+
+// Smiley Dialog
+DlgSmileyTitle		: "แทรกสัญลักษณ์สื่ออารมณ์",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "แทรกตัวอักษรพิเศษ",
+
+// Table Dialog
+DlgTableTitle		: "คุณสมบัติของ ตาราง",
+DlgTableRows		: "แถว",
+DlgTableColumns		: "สดมน์",
+DlgTableBorder		: "ขนาดเส้นขอบ",
+DlgTableAlign		: "การจัดตำแหน่ง",
+DlgTableAlignNotSet	: "<ไม่ระบุ>",
+DlgTableAlignLeft	: "ชิดซ้าย",
+DlgTableAlignCenter	: "กึ่งกลาง",
+DlgTableAlignRight	: "ชิดขวา",
+DlgTableWidth		: "กว้าง",
+DlgTableWidthPx		: "จุดสี",
+DlgTableWidthPc		: "เปอร์เซ็น",
+DlgTableHeight		: "สูง",
+DlgTableCellSpace	: "ระยะแนวนอนน",
+DlgTableCellPad		: "ระยะแนวตั้ง",
+DlgTableCaption		: "หัวเรื่องของตาราง",
+DlgTableSummary		: "สรุปความ",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "คุณสมบัติของ ช่อง",
+DlgCellWidth		: "กว้าง",
+DlgCellWidthPx		: "จุดสี",
+DlgCellWidthPc		: "เปอร์เซ็น",
+DlgCellHeight		: "สูง",
+DlgCellWordWrap		: "ตัดบรรทัดอัตโนมัติ",
+DlgCellWordWrapNotSet	: "<ไม่ระบุ>",
+DlgCellWordWrapYes	: "ใ่ช่",
+DlgCellWordWrapNo	: "ไม่",
+DlgCellHorAlign		: "การจัดวางแนวนอน",
+DlgCellHorAlignNotSet	: "<ไม่ระบุ>",
+DlgCellHorAlignLeft	: "ชิดซ้าย",
+DlgCellHorAlignCenter	: "กึ่งกลาง",
+DlgCellHorAlignRight: "ชิดขวา",
+DlgCellVerAlign		: "การจัดวางแนวตั้ง",
+DlgCellVerAlignNotSet	: "<ไม่ระบุ>",
+DlgCellVerAlignTop	: "บนสุด",
+DlgCellVerAlignMiddle	: "กึ่งกลาง",
+DlgCellVerAlignBottom	: "ล่างสุด",
+DlgCellVerAlignBaseline	: "อิงบรรทัด",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "จำนวนแถวที่คร่อมกัน",
+DlgCellCollSpan		: "จำนวนสดมน์ที่คร่อมกัน",
+DlgCellBackColor	: "สีพื้นหลัง",
+DlgCellBorderColor	: "สีเส้นขอบ",
+DlgCellBtnSelect	: "เลือก..",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "ค้นหา",
+DlgFindFindBtn		: "ค้นหา",
+DlgFindNotFoundMsg	: "ไม่พบคำที่ค้นหา.",
+
+// Replace Dialog
+DlgReplaceTitle			: "ค้นหาและแทนที่",
+DlgReplaceFindLbl		: "ค้นหาคำว่า:",
+DlgReplaceReplaceLbl	: "แทนที่ด้วย:",
+DlgReplaceCaseChk		: "ตัวโหญ่-เล็ก ต้องตรงกัน",
+DlgReplaceReplaceBtn	: "แทนที่",
+DlgReplaceReplAllBtn	: "แทนที่ทั้งหมดที่พบ",
+DlgReplaceWordChk		: "ต้องตรงกันทุกคำ",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).",
+PasteErrorCopy	: "ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).",
+
+PasteAsText		: "วางแบบตัวอักษรธรรมดา",
+PasteFromWord	: "วางแบบตัวอักษรจากโปรแกรมเวิร์ด",
+
+DlgPasteMsg2	: "กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (<strong>Ctrl และ V</strong>)พร้อมๆกัน และกด <strong>OK</strong>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "ไม่สนใจ Font Face definitions",
+DlgPasteRemoveStyles	: "ลบ Styles definitions",
+
+// Color Picker
+ColorAutomatic	: "สีอัตโนมัติ",
+ColorMoreColors	: "เลือกสีอื่นๆ...",
+
+// Document Properties
+DocProps		: "คุณสมบัติของเอกสาร",
+
+// Anchor Dialog
+DlgAnchorTitle		: "คุณสมบัติของ Anchor",
+DlgAnchorName		: "ชื่อ Anchor",
+DlgAnchorErrorName	: "กรุณาระบุชื่อของ Anchor",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "ไม่พบในดิกชันนารี",
+DlgSpellChangeTo		: "แก้ไขเป็น",
+DlgSpellBtnIgnore		: "ยกเว้น",
+DlgSpellBtnIgnoreAll	: "ยกเว้นทั้งหมด",
+DlgSpellBtnReplace		: "แทนที่",
+DlgSpellBtnReplaceAll	: "แทนที่ทั้งหมด",
+DlgSpellBtnUndo			: "ยกเลิก",
+DlgSpellNoSuggestions	: "- ไม่มีคำแนะนำใดๆ -",
+DlgSpellProgress		: "กำลังตรวจสอบคำสะกด...",
+DlgSpellNoMispell		: "ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด",
+DlgSpellNoChanges		: "ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ",
+DlgSpellOneChange		: "ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ",
+DlgSpellManyChanges		: "ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ",
+
+IeSpellDownload			: "ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?",
+
+// Button Dialog
+DlgButtonText		: "ข้อความ (ค่าตัวแปร)",
+DlgButtonType		: "ข้อความ",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "ชื่อ",
+DlgCheckboxValue	: "ค่าตัวแปร",
+DlgCheckboxSelected	: "เลือกเป็นค่าเริ่มต้น",
+
+// Form Dialog
+DlgFormName		: "ชื่อ",
+DlgFormAction	: "แอคชั่น",
+DlgFormMethod	: "เมธอด",
+
+// Select Field Dialog
+DlgSelectName		: "ชื่อ",
+DlgSelectValue		: "ค่าตัวแปร",
+DlgSelectSize		: "ขนาด",
+DlgSelectLines		: "บรรทัด",
+DlgSelectChkMulti	: "เลือกหลายค่าได้",
+DlgSelectOpAvail	: "รายการตัวเลือก",
+DlgSelectOpText		: "ข้อความ",
+DlgSelectOpValue	: "ค่าตัวแปร",
+DlgSelectBtnAdd		: "เพิ่ม",
+DlgSelectBtnModify	: "แก้ไข",
+DlgSelectBtnUp		: "บน",
+DlgSelectBtnDown	: "ล่าง",
+DlgSelectBtnSetValue : "เลือกเป็นค่าเริ่มต้น",
+DlgSelectBtnDelete	: "ลบ",
+
+// Textarea Dialog
+DlgTextareaName	: "ชื่อ",
+DlgTextareaCols	: "สดมภ์",
+DlgTextareaRows	: "แถว",
+
+// Text Field Dialog
+DlgTextName			: "ชื่อ",
+DlgTextValue		: "ค่าตัวแปร",
+DlgTextCharWidth	: "ความกว้าง",
+DlgTextMaxChars		: "จำนวนตัวอักษรสูงสุด",
+DlgTextType			: "ชนิด",
+DlgTextTypeText		: "ข้อความ",
+DlgTextTypePass		: "รหัสผ่าน",
+
+// Hidden Field Dialog
+DlgHiddenName	: "ชื่อ",
+DlgHiddenValue	: "ค่าตัวแปร",
+
+// Bulleted List Dialog
+BulletedListProp	: "คุณสมบัติของ บูลเล็ตลิสต์",
+NumberedListProp	: "คุณสมบัติของ นัมเบอร์ลิสต์",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "ชนิด",
+DlgLstTypeCircle	: "รูปวงกลม",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "รูปสี่เหลี่ยม",
+DlgLstTypeNumbers	: "หมายเลข (1, 2, 3)",
+DlgLstTypeLCase		: "ตัวพิมพ์เล็ก (a, b, c)",
+DlgLstTypeUCase		: "ตัวพิมพ์ใหญ่ (A, B, C)",
+DlgLstTypeSRoman	: "เลขโรมันพิมพ์เล็ก (i, ii, iii)",
+DlgLstTypeLRoman	: "เลขโรมันพิมพ์ใหญ่ (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "ลักษณะทั่วไปของเอกสาร",
+DlgDocBackTab		: "พื้นหลัง",
+DlgDocColorsTab		: "สีและระยะขอบ",
+DlgDocMetaTab		: "ข้อมูลสำหรับเสิร์ชเอนจิ้น",
+
+DlgDocPageTitle		: "ชื่อไตเติ้ล",
+DlgDocLangDir		: "การอ่านภาษา",
+DlgDocLangDirLTR	: "จากซ้ายไปขวา (LTR)",
+DlgDocLangDirRTL	: "จากขวาไปซ้าย (RTL)",
+DlgDocLangCode		: "รหัสภาษา",
+DlgDocCharSet		: "ชุดตัวอักษร",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "ชุดตัวอักษรอื่นๆ",
+
+DlgDocDocType		: "ประเภทของเอกสาร",
+DlgDocDocTypeOther	: "ประเภทเอกสารอื่นๆ",
+DlgDocIncXHTML		: "รวมเอา  XHTML Declarations ไว้ด้วย",
+DlgDocBgColor		: "สีพื้นหลัง",
+DlgDocBgImage		: "ที่อยู่อ้างอิงออนไลน์ของรูปพื้นหลัง (Image URL)",
+DlgDocBgNoScroll	: "พื้นหลังแบบไม่มีแถบเลื่อน",
+DlgDocCText			: "ข้อความ",
+DlgDocCLink			: "ลิงค์",
+DlgDocCVisited		: "ลิงค์ที่เคยคลิ้กแล้ว Visited Link",
+DlgDocCActive		: "ลิงค์ที่กำลังคลิ้ก Active Link",
+DlgDocMargins		: "ระยะขอบของหน้าเอกสาร",
+DlgDocMaTop			: "ด้านบน",
+DlgDocMaLeft		: "ด้านซ้าย",
+DlgDocMaRight		: "ด้านขวา",
+DlgDocMaBottom		: "ด้านล่าง",
+DlgDocMeIndex		: "คำสำคัญอธิบายเอกสาร (คั่นคำด้วย คอมม่า)",
+DlgDocMeDescr		: "ประโยคอธิบายเกี่ยวกับเอกสาร",
+DlgDocMeAuthor		: "ผู้สร้างเอกสาร",
+DlgDocMeCopy		: "สงวนลิขสิทธิ์",
+DlgDocPreview		: "ตัวอย่างหน้าเอกสาร",
+
+// Templates Dialog
+Templates			: "เทมเพลต",
+DlgTemplatesTitle	: "เทมเพลตของส่วนเนื้อหาเว็บไซต์",
+DlgTemplatesSelMsg	: "กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):",
+DlgTemplatesLoading	: "กำลังโหลดรายการเทมเพลตทั้งหมด...",
+DlgTemplatesNoTpl	: "(ยังไม่มีการกำหนดเทมเพลต)",
+DlgTemplatesReplace	: "แทนที่เนื้อหาเว็บไซต์ที่เลือก",
+
+// About Dialog
+DlgAboutAboutTab	: "เกี่ยวกับโปรแกรม",
+DlgAboutBrowserInfoTab	: "โปรแกรมท่องเว็บที่ท่านใช้",
+DlgAboutLicenseTab	: "ลิขสิทธิ์",
+DlgAboutVersion		: "รุ่น",
+DlgAboutInfo		: "For further information go to",	//MISSING
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/it.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/it.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/it.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Italian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Nascondi la barra degli strumenti",
+ToolbarExpand		: "Mostra la barra degli strumenti",
+
+// Toolbar Items and Context Menu
+Save				: "Salva",
+NewPage				: "Nuova pagina vuota",
+Preview				: "Anteprima",
+Cut					: "Taglia",
+Copy				: "Copia",
+Paste				: "Incolla",
+PasteText			: "Incolla come testo semplice",
+PasteWord			: "Incolla da Word",
+Print				: "Stampa",
+SelectAll			: "Seleziona tutto",
+RemoveFormat		: "Elimina formattazione",
+InsertLinkLbl		: "Collegamento",
+InsertLink			: "Inserisci/Modifica collegamento",
+RemoveLink			: "Elimina collegamento",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Inserisci/Modifica Ancora",
+AnchorDelete		: "Rimuovi Ancora",
+InsertImageLbl		: "Immagine",
+InsertImage			: "Inserisci/Modifica immagine",
+InsertFlashLbl		: "Oggetto Flash",
+InsertFlash			: "Inserisci/Modifica Oggetto Flash",
+InsertTableLbl		: "Tabella",
+InsertTable			: "Inserisci/Modifica tabella",
+InsertLineLbl		: "Riga orizzontale",
+InsertLine			: "Inserisci riga orizzontale",
+InsertSpecialCharLbl: "Caratteri speciali",
+InsertSpecialChar	: "Inserisci carattere speciale",
+InsertSmileyLbl		: "Emoticon",
+InsertSmiley		: "Inserisci emoticon",
+About				: "Informazioni su FCKeditor",
+Bold				: "Grassetto",
+Italic				: "Corsivo",
+Underline			: "Sottolineato",
+StrikeThrough		: "Barrato",
+Subscript			: "Pedice",
+Superscript			: "Apice",
+LeftJustify			: "Allinea a sinistra",
+CenterJustify		: "Centra",
+RightJustify		: "Allinea a destra",
+BlockJustify		: "Giustifica",
+DecreaseIndent		: "Riduci rientro",
+IncreaseIndent		: "Aumenta rientro",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Annulla",
+Redo				: "Ripristina",
+NumberedListLbl		: "Elenco numerato",
+NumberedList		: "Inserisci/Modifica elenco numerato",
+BulletedListLbl		: "Elenco puntato",
+BulletedList		: "Inserisci/Modifica elenco puntato",
+ShowTableBorders	: "Mostra bordi tabelle",
+ShowDetails			: "Mostra dettagli",
+Style				: "Stile",
+FontFormat			: "Formato",
+Font				: "Font",
+FontSize			: "Dimensione",
+TextColor			: "Colore testo",
+BGColor				: "Colore sfondo",
+Source				: "Codice Sorgente",
+Find				: "Trova",
+Replace				: "Sostituisci",
+SpellCheck			: "Correttore ortografico",
+UniversalKeyboard	: "Tastiera universale",
+PageBreakLbl		: "Interruzione di pagina",
+PageBreak			: "Inserisci interruzione di pagina",
+
+Form			: "Modulo",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Campo di testo",
+Textarea		: "Area di testo",
+HiddenField		: "Campo nascosto",
+Button			: "Bottone",
+SelectionField	: "Menu di selezione",
+ImageButton		: "Bottone immagine",
+
+FitWindow		: "Massimizza l'area dell'editor",
+ShowBlocks		: "Visualizza Blocchi",
+
+// Context Menu
+EditLink			: "Modifica collegamento",
+CellCM				: "Cella",
+RowCM				: "Riga",
+ColumnCM			: "Colonna",
+InsertRowAfter		: "Inserisci Riga Dopo",
+InsertRowBefore		: "Inserisci Riga Prima",
+DeleteRows			: "Elimina righe",
+InsertColumnAfter	: "Inserisci Colonna Dopo",
+InsertColumnBefore	: "Inserisci Colonna Prima",
+DeleteColumns		: "Elimina colonne",
+InsertCellAfter		: "Inserisci Cella Dopo",
+InsertCellBefore	: "Inserisci Cella Prima",
+DeleteCells			: "Elimina celle",
+MergeCells			: "Unisce celle",
+MergeRight			: "Unisci a Destra",
+MergeDown			: "Unisci in Basso",
+HorizontalSplitCell	: "Dividi Cella Orizzontalmente",
+VerticalSplitCell	: "Dividi Cella Verticalmente",
+TableDelete			: "Cancella Tabella",
+CellProperties		: "Proprietà cella",
+TableProperties		: "Proprietà tabella",
+ImageProperties		: "Proprietà immagine",
+FlashProperties		: "Proprietà Oggetto Flash",
+
+AnchorProp			: "Proprietà ancora",
+ButtonProp			: "Proprietà bottone",
+CheckboxProp		: "Proprietà checkbox",
+HiddenFieldProp		: "Proprietà campo nascosto",
+RadioButtonProp		: "Proprietà radio button",
+ImageButtonProp		: "Proprietà bottone immagine",
+TextFieldProp		: "Proprietà campo di testo",
+SelectionFieldProp	: "Proprietà menu di selezione",
+TextareaProp		: "Proprietà area di testo",
+FormProp			: "Proprietà modulo",
+
+FontFormats			: "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Elaborazione XHTML in corso. Attendere prego...",
+Done				: "Completato",
+PasteWordConfirm	: "Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?",
+NotCompatiblePaste	: "Questa funzione è disponibile solo per Internet Explorer 5.5 o superiore. Desideri incollare il testo senza pulirlo?",
+UnknownToolbarItem	: "Elemento della barra strumenti sconosciuto \"%1\"",
+UnknownCommand		: "Comando sconosciuto \"%1\"",
+NotImplemented		: "Comando non implementato",
+UnknownToolbarSet	: "La barra di strumenti \"%1\" non esiste",
+NoActiveX			: "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.",
+BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.",
+DialogBlocked		: "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annulla",
+DlgBtnClose			: "Chiudi",
+DlgBtnBrowseServer	: "Cerca sul server",
+DlgAdvancedTag		: "Avanzate",
+DlgOpOther			: "<Altro>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Devi inserire l'URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<non impostato>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direzione scrittura",
+DlgGenLangDirLtr	: "Da Sinistra a Destra (LTR)",
+DlgGenLangDirRtl	: "Da Destra a Sinistra (RTL)",
+DlgGenLangCode		: "Codice Lingua",
+DlgGenAccessKey		: "Scorciatoia<br />da tastiera",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Ordine di tabulazione",
+DlgGenLongDescr		: "URL descrizione estesa",
+DlgGenClass			: "Nome classe CSS",
+DlgGenTitle			: "Titolo",
+DlgGenContType		: "Tipo della risorsa collegata",
+DlgGenLinkCharset	: "Set di caretteri della risorsa collegata",
+DlgGenStyle			: "Stile",
+
+// Image Dialog
+DlgImgTitle			: "Proprietà immagine",
+DlgImgInfoTab		: "Informazioni immagine",
+DlgImgBtnUpload		: "Invia al server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carica",
+DlgImgAlt			: "Testo alternativo",
+DlgImgWidth			: "Larghezza",
+DlgImgHeight		: "Altezza",
+DlgImgLockRatio		: "Blocca rapporto",
+DlgBtnResetSize		: "Reimposta dimensione",
+DlgImgBorder		: "Bordo",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Allineamento",
+DlgImgAlignLeft		: "Sinistra",
+DlgImgAlignAbsBottom: "In basso assoluto",
+DlgImgAlignAbsMiddle: "Centrato assoluto",
+DlgImgAlignBaseline	: "Linea base",
+DlgImgAlignBottom	: "In Basso",
+DlgImgAlignMiddle	: "Centrato",
+DlgImgAlignRight	: "Destra",
+DlgImgAlignTextTop	: "In alto al testo",
+DlgImgAlignTop		: "In Alto",
+DlgImgPreview		: "Anteprima",
+DlgImgAlertUrl		: "Devi inserire l'URL per l'immagine",
+DlgImgLinkTab		: "Collegamento",
+
+// Flash Dialog
+DlgFlashTitle		: "Proprietà Oggetto Flash",
+DlgFlashChkPlay		: "Avvio Automatico",
+DlgFlashChkLoop		: "Cicla",
+DlgFlashChkMenu		: "Abilita Menu di Flash",
+DlgFlashScale		: "Ridimensiona",
+DlgFlashScaleAll	: "Mostra Tutto",
+DlgFlashScaleNoBorder	: "Senza Bordo",
+DlgFlashScaleFit	: "Dimensione Esatta",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Collegamento",
+DlgLnkInfoTab		: "Informazioni collegamento",
+DlgLnkTargetTab		: "Destinazione",
+
+DlgLnkType			: "Tipo di Collegamento",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ancora nella pagina",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocollo",
+DlgLnkProtoOther	: "<altro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Scegli Ancora",
+DlgLnkAnchorByName	: "Per Nome",
+DlgLnkAnchorById	: "Per id elemento",
+DlgLnkNoAnchors		: "(Nessuna ancora disponibile nel documento)",
+DlgLnkEMail			: "Indirizzo E-Mail",
+DlgLnkEMailSubject	: "Oggetto del messaggio",
+DlgLnkEMailBody		: "Corpo del messaggio",
+DlgLnkUpload		: "Carica",
+DlgLnkBtnUpload		: "Invia al Server",
+
+DlgLnkTarget		: "Destinazione",
+DlgLnkTargetFrame	: "<riquadro>",
+DlgLnkTargetPopup	: "<finestra popup>",
+DlgLnkTargetBlank	: "Nuova finestra (_blank)",
+DlgLnkTargetParent	: "Finestra padre (_parent)",
+DlgLnkTargetSelf	: "Stessa finestra (_self)",
+DlgLnkTargetTop		: "Finestra superiore (_top)",
+DlgLnkTargetFrameName	: "Nome del riquadro di destinazione",
+DlgLnkPopWinName	: "Nome finestra popup",
+DlgLnkPopWinFeat	: "Caratteristiche finestra popup",
+DlgLnkPopResize		: "Ridimensionabile",
+DlgLnkPopLocation	: "Barra degli indirizzi",
+DlgLnkPopMenu		: "Barra del menu",
+DlgLnkPopScroll		: "Barre di scorrimento",
+DlgLnkPopStatus		: "Barra di stato",
+DlgLnkPopToolbar	: "Barra degli strumenti",
+DlgLnkPopFullScrn	: "A tutto schermo (IE)",
+DlgLnkPopDependent	: "Dipendente (Netscape)",
+DlgLnkPopWidth		: "Larghezza",
+DlgLnkPopHeight		: "Altezza",
+DlgLnkPopLeft		: "Posizione da sinistra",
+DlgLnkPopTop		: "Posizione dall'alto",
+
+DlnLnkMsgNoUrl		: "Devi inserire l'URL del collegamento",
+DlnLnkMsgNoEMail	: "Devi inserire un'indirizzo e-mail",
+DlnLnkMsgNoAnchor	: "Devi selezionare un'ancora",
+DlnLnkMsgInvPopName	: "Il nome del popup deve iniziare con una lettera, e non può contenere spazi",
+
+// Color Dialog
+DlgColorTitle		: "Seleziona colore",
+DlgColorBtnClear	: "Vuota",
+DlgColorHighlight	: "Evidenziato",
+DlgColorSelected	: "Selezionato",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserisci emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleziona carattere speciale",
+
+// Table Dialog
+DlgTableTitle		: "Proprietà tabella",
+DlgTableRows		: "Righe",
+DlgTableColumns		: "Colonne",
+DlgTableBorder		: "Dimensione bordo",
+DlgTableAlign		: "Allineamento",
+DlgTableAlignNotSet	: "<non impostato>",
+DlgTableAlignLeft	: "Sinistra",
+DlgTableAlignCenter	: "Centrato",
+DlgTableAlignRight	: "Destra",
+DlgTableWidth		: "Larghezza",
+DlgTableWidthPx		: "pixel",
+DlgTableWidthPc		: "percento",
+DlgTableHeight		: "Altezza",
+DlgTableCellSpace	: "Spaziatura celle",
+DlgTableCellPad		: "Padding celle",
+DlgTableCaption		: "Intestazione",
+DlgTableSummary		: "Indice",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Proprietà cella",
+DlgCellWidth		: "Larghezza",
+DlgCellWidthPx		: "pixel",
+DlgCellWidthPc		: "percento",
+DlgCellHeight		: "Altezza",
+DlgCellWordWrap		: "A capo automatico",
+DlgCellWordWrapNotSet	: "<non impostato>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Allineamento orizzontale",
+DlgCellHorAlignNotSet	: "<non impostato>",
+DlgCellHorAlignLeft	: "Sinistra",
+DlgCellHorAlignCenter	: "Centrato",
+DlgCellHorAlignRight: "Destra",
+DlgCellVerAlign		: "Allineamento verticale",
+DlgCellVerAlignNotSet	: "<non impostato>",
+DlgCellVerAlignTop	: "In Alto",
+DlgCellVerAlignMiddle	: "Centrato",
+DlgCellVerAlignBottom	: "In Basso",
+DlgCellVerAlignBaseline	: "Linea base",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Righe occupate",
+DlgCellCollSpan		: "Colonne occupate",
+DlgCellBackColor	: "Colore sfondo",
+DlgCellBorderColor	: "Colore bordo",
+DlgCellBtnSelect	: "Scegli...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Cerca e Sostituisci",
+
+// Find Dialog
+DlgFindTitle		: "Trova",
+DlgFindFindBtn		: "Trova",
+DlgFindNotFoundMsg	: "L'elemento cercato non è stato trovato.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Sostituisci",
+DlgReplaceFindLbl		: "Trova:",
+DlgReplaceReplaceLbl	: "Sostituisci con:",
+DlgReplaceCaseChk		: "Maiuscole/minuscole",
+DlgReplaceReplaceBtn	: "Sostituisci",
+DlgReplaceReplAllBtn	: "Sostituisci tutto",
+DlgReplaceWordChk		: "Solo parole intere",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).",
+PasteErrorCopy	: "Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).",
+
+PasteAsText		: "Incolla come testo semplice",
+PasteFromWord	: "Incolla da Word",
+
+DlgPasteMsg2	: "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",
+DlgPasteSec		: "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",
+DlgPasteIgnoreFont		: "Ignora le definizioni di Font",
+DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
+
+// Color Picker
+ColorAutomatic	: "Automatico",
+ColorMoreColors	: "Altri colori...",
+
+// Document Properties
+DocProps		: "Proprietà del Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Proprietà ancora",
+DlgAnchorName		: "Nome ancora",
+DlgAnchorErrorName	: "Inserici il nome dell'ancora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Non nel dizionario",
+DlgSpellChangeTo		: "Cambia in",
+DlgSpellBtnIgnore		: "Ignora",
+DlgSpellBtnIgnoreAll	: "Ignora tutto",
+DlgSpellBtnReplace		: "Cambia",
+DlgSpellBtnReplaceAll	: "Cambia tutto",
+DlgSpellBtnUndo			: "Annulla",
+DlgSpellNoSuggestions	: "- Nessun suggerimento -",
+DlgSpellProgress		: "Controllo ortografico in corso",
+DlgSpellNoMispell		: "Controllo ortografico completato: nessun errore trovato",
+DlgSpellNoChanges		: "Controllo ortografico completato: nessuna parola cambiata",
+DlgSpellOneChange		: "Controllo ortografico completato: 1 parola cambiata",
+DlgSpellManyChanges		: "Controllo ortografico completato: %1 parole cambiate",
+
+IeSpellDownload			: "Contollo ortografico non installato. Lo vuoi scaricare ora?",
+
+// Button Dialog
+DlgButtonText		: "Testo (Value)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Bottone",
+DlgButtonTypeSbm	: "Invio",
+DlgButtonTypeRst	: "Annulla",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valore",
+DlgCheckboxSelected	: "Selezionato",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Azione",
+DlgFormMethod	: "Metodo",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valore",
+DlgSelectSize		: "Dimensione",
+DlgSelectLines		: "righe",
+DlgSelectChkMulti	: "Permetti selezione multipla",
+DlgSelectOpAvail	: "Opzioni disponibili",
+DlgSelectOpText		: "Testo",
+DlgSelectOpValue	: "Valore",
+DlgSelectBtnAdd		: "Aggiungi",
+DlgSelectBtnModify	: "Modifica",
+DlgSelectBtnUp		: "Su",
+DlgSelectBtnDown	: "Gi",
+DlgSelectBtnSetValue : "Imposta come predefinito",
+DlgSelectBtnDelete	: "Rimuovi",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colonne",
+DlgTextareaRows	: "Righe",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valore",
+DlgTextCharWidth	: "Larghezza",
+DlgTextMaxChars		: "Numero massimo di caratteri",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Testo",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valore",
+
+// Bulleted List Dialog
+BulletedListProp	: "Proprietà lista puntata",
+NumberedListProp	: "Proprietà lista numerata",
+DlgLstStart			: "Inizio",
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Tondo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrato",
+DlgLstTypeNumbers	: "Numeri (1, 2, 3)",
+DlgLstTypeLCase		: "Caratteri minuscoli (a, b, c)",
+DlgLstTypeUCase		: "Caratteri maiuscoli (A, B, C)",
+DlgLstTypeSRoman	: "Numeri Romani minuscoli (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeri Romani maiuscoli (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Genarale",
+DlgDocBackTab		: "Sfondo",
+DlgDocColorsTab		: "Colori e margini",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Titolo pagina",
+DlgDocLangDir		: "Direzione scrittura",
+DlgDocLangDirLTR	: "Da Sinistra a Destra (LTR)",
+DlgDocLangDirRTL	: "Da Destra a Sinistra (RTL)",
+DlgDocLangCode		: "Codice Lingua",
+DlgDocCharSet		: "Set di caretteri",
+DlgDocCharSetCE		: "Europa Centrale",
+DlgDocCharSetCT		: "Cinese Tradizionale (Big5)",
+DlgDocCharSetCR		: "Cirillico",
+DlgDocCharSetGR		: "Greco",
+DlgDocCharSetJP		: "Giapponese",
+DlgDocCharSetKR		: "Coreano",
+DlgDocCharSetTR		: "Turco",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Europa Occidentale",
+DlgDocCharSetOther	: "Altro set di caretteri",
+
+DlgDocDocType		: "Intestazione DocType",
+DlgDocDocTypeOther	: "Altra intestazione DocType",
+DlgDocIncXHTML		: "Includi dichiarazione XHTML",
+DlgDocBgColor		: "Colore di sfondo",
+DlgDocBgImage		: "Immagine di sfondo",
+DlgDocBgNoScroll	: "Sfondo fissato",
+DlgDocCText			: "Testo",
+DlgDocCLink			: "Collegamento",
+DlgDocCVisited		: "Collegamento visitato",
+DlgDocCActive		: "Collegamento attivo",
+DlgDocMargins		: "Margini",
+DlgDocMaTop			: "In Alto",
+DlgDocMaLeft		: "A Sinistra",
+DlgDocMaRight		: "A Destra",
+DlgDocMaBottom		: "In Basso",
+DlgDocMeIndex		: "Chiavi di indicizzazione documento (separate da virgola)",
+DlgDocMeDescr		: "Descrizione documento",
+DlgDocMeAuthor		: "Autore",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Anteprima",
+
+// Templates Dialog
+Templates			: "Modelli",
+DlgTemplatesTitle	: "Contenuto dei modelli",
+DlgTemplatesSelMsg	: "Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",
+DlgTemplatesLoading	: "Caricamento modelli in corso. Attendere prego...",
+DlgTemplatesNoTpl	: "(Nessun modello definito)",
+DlgTemplatesReplace	: "Cancella il contenuto corrente",
+
+// About Dialog
+DlgAboutAboutTab	: "Informazioni",
+DlgAboutBrowserInfoTab	: "Informazioni Browser",
+DlgAboutLicenseTab	: "Licenza",
+DlgAboutVersion		: "versione",
+DlgAboutInfo		: "Per maggiori informazioni visitare",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sl.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Slovenian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Zloži orodno vrstico",
+ToolbarExpand		: "Razširi orodno vrstico",
+
+// Toolbar Items and Context Menu
+Save				: "Shrani",
+NewPage				: "Nova stran",
+Preview				: "Predogled",
+Cut					: "Izreži",
+Copy				: "Kopiraj",
+Paste				: "Prilepi",
+PasteText			: "Prilepi kot golo besedilo",
+PasteWord			: "Prilepi iz Worda",
+Print				: "Natisni",
+SelectAll			: "Izberi vse",
+RemoveFormat		: "Odstrani oblikovanje",
+InsertLinkLbl		: "Povezava",
+InsertLink			: "Vstavi/uredi povezavo",
+RemoveLink			: "Odstrani povezavo",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Vstavi/uredi zaznamek",
+AnchorDelete		: "Odstrani zaznamek",
+InsertImageLbl		: "Slika",
+InsertImage			: "Vstavi/uredi sliko",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vstavi/Uredi Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Vstavi/uredi tabelo",
+InsertLineLbl		: "Črta",
+InsertLine			: "Vstavi vodoravno črto",
+InsertSpecialCharLbl: "Posebni znak",
+InsertSpecialChar	: "Vstavi posebni znak",
+InsertSmileyLbl		: "Smeško",
+InsertSmiley		: "Vstavi smeška",
+About				: "O FCKeditorju",
+Bold				: "Krepko",
+Italic				: "Ležeče",
+Underline			: "Podčrtano",
+StrikeThrough		: "Prečrtano",
+Subscript			: "Podpisano",
+Superscript			: "Nadpisano",
+LeftJustify			: "Leva poravnava",
+CenterJustify		: "Sredinska poravnava",
+RightJustify		: "Desna poravnava",
+BlockJustify		: "Obojestranska poravnava",
+DecreaseIndent		: "Zmanjšaj zamik",
+IncreaseIndent		: "Povečaj zamik",
+Blockquote			: "Citat",
+CreateDiv			: "Ustvari Div element",
+EditDiv				: "Uredi Div element",
+DeleteDiv			: "Odstrani Div element",
+Undo				: "Razveljavi",
+Redo				: "Ponovi",
+NumberedListLbl		: "Oštevilčen seznam",
+NumberedList		: "Vstavi/odstrani oštevilčevanje",
+BulletedListLbl		: "Označen seznam",
+BulletedList		: "Vstavi/odstrani označevanje",
+ShowTableBorders	: "Pokaži meje tabele",
+ShowDetails			: "Pokaži podrobnosti",
+Style				: "Slog",
+FontFormat			: "Oblika",
+Font				: "Pisava",
+FontSize			: "Velikost",
+TextColor			: "Barva besedila",
+BGColor				: "Barva ozadja",
+Source				: "Izvorna koda",
+Find				: "Najdi",
+Replace				: "Zamenjaj",
+SpellCheck			: "Preveri črkovanje",
+UniversalKeyboard	: "Večjezična tipkovnica",
+PageBreakLbl		: "Prelom strani",
+PageBreak			: "Vstavi prelom strani",
+
+Form			: "Obrazec",
+Checkbox		: "Potrditveno polje",
+RadioButton		: "Izbirno polje",
+TextField		: "Vnosno polje",
+Textarea		: "Vnosno območje",
+HiddenField		: "Skrito polje",
+Button			: "Gumb",
+SelectionField	: "Spustni seznam",
+ImageButton		: "Gumb s sliko",
+
+FitWindow		: "Razširi velikost urejevalnika čez cel zaslon",
+ShowBlocks		: "Prikaži ograde",
+
+// Context Menu
+EditLink			: "Uredi povezavo",
+CellCM				: "Celica",
+RowCM				: "Vrstica",
+ColumnCM			: "Stolpec",
+InsertRowAfter		: "Vstavi vrstico za",
+InsertRowBefore		: "Vstavi vrstico pred",
+DeleteRows			: "Izbriši vrstice",
+InsertColumnAfter	: "Vstavi stolpec za",
+InsertColumnBefore	: "Vstavi stolpec pred",
+DeleteColumns		: "Izbriši stolpce",
+InsertCellAfter		: "Vstavi celico za",
+InsertCellBefore	: "Vstavi celico pred",
+DeleteCells			: "Izbriši celice",
+MergeCells			: "Združi celice",
+MergeRight			: "Združi desno",
+MergeDown			: "Druži navzdol",
+HorizontalSplitCell	: "Razdeli celico vodoravno",
+VerticalSplitCell	: "Razdeli celico navpično",
+TableDelete			: "Izbriši tabelo",
+CellProperties		: "Lastnosti celice",
+TableProperties		: "Lastnosti tabele",
+ImageProperties		: "Lastnosti slike",
+FlashProperties		: "Lastnosti Flash",
+
+AnchorProp			: "Lastnosti zaznamka",
+ButtonProp			: "Lastnosti gumba",
+CheckboxProp		: "Lastnosti potrditvenega polja",
+HiddenFieldProp		: "Lastnosti skritega polja",
+RadioButtonProp		: "Lastnosti izbirnega polja",
+ImageButtonProp		: "Lastnosti gumba s sliko",
+TextFieldProp		: "Lastnosti vnosnega polja",
+SelectionFieldProp	: "Lastnosti spustnega seznama",
+TextareaProp		: "Lastnosti vnosnega območja",
+FormProp			: "Lastnosti obrazca",
+
+FontFormats			: "Navaden;Oblikovan;Napis;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obdelujem XHTML. Prosim počakajte...",
+Done				: "Narejeno",
+PasteWordConfirm	: "Izgleda, da želite prilepiti besedilo iz Worda. Ali ga želite očistiti, preden ga prilepite?",
+NotCompatiblePaste	: "Ta ukaz deluje le v Internet Explorerje različice 5.5 ali višje. Ali želite prilepiti brez čiščenja?",
+UnknownToolbarItem	: "Neznan element orodne vrstice \"%1\"",
+UnknownCommand		: "Neznano ime ukaza \"%1\"",
+NotImplemented		: "Ukaz ni izdelan",
+UnknownToolbarSet	: "Skupina orodnih vrstic \"%1\" ne obstoja",
+NoActiveX			: "Varnostne nastavitve vašega brskalnika lahko omejijo delovanje nekaterih zmožnosti urejevalnika. Če ne želite zaznavati napak in sporočil o manjkajočih zmožnostih, omogočite možnost \"Zaženi ActiveX kontrolnike in vtičnike\".",
+BrowseServerBlocked : "Brskalnik virov se ne more odpreti. Prepričajte se, da je preprečevanje pojavnih oken onemogočeno.",
+DialogBlocked		: "Pogovorno okno se ni moglo odpreti. Prepričajte se, da je preprečevanje pojavnih oken onemogočeno.",
+VisitLinkBlocked	: "Pogovorno okno se ni moglo odpreti. Prepričajte se, da je preprečevanje pojavnih oken onemogočeno.",
+
+// Dialogs
+DlgBtnOK			: "V redu",
+DlgBtnCancel		: "Prekliči",
+DlgBtnClose			: "Zapri",
+DlgBtnBrowseServer	: "Prebrskaj na strežniku",
+DlgAdvancedTag		: "Napredno",
+DlgOpOther			: "<Ostalo>",
+DlgInfoTab			: "Podatki",
+DlgAlertUrl			: "Prosim vpiši spletni naslov",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ni postavljen>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smer jezika",
+DlgGenLangDirLtr	: "Od leve proti desni (LTR)",
+DlgGenLangDirRtl	: "Od desne proti levi (RTL)",
+DlgGenLangCode		: "Oznaka jezika",
+DlgGenAccessKey		: "Vstopno geslo",
+DlgGenName			: "Ime",
+DlgGenTabIndex		: "Številka tabulatorja",
+DlgGenLongDescr		: "Dolg opis URL-ja",
+DlgGenClass			: "Razred stilne predloge",
+DlgGenTitle			: "Predlagani naslov",
+DlgGenContType		: "Predlagani tip vsebine (content-type)",
+DlgGenLinkCharset	: "Kodna tabela povezanega vira",
+DlgGenStyle			: "Slog",
+
+// Image Dialog
+DlgImgTitle			: "Lastnosti slike",
+DlgImgInfoTab		: "Podatki o sliki",
+DlgImgBtnUpload		: "Pošlji na strežnik",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošlji",
+DlgImgAlt			: "Nadomestno besedilo",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Višina",
+DlgImgLockRatio		: "Zakleni razmerje",
+DlgBtnResetSize		: "Ponastavi velikost",
+DlgImgBorder		: "Obroba",
+DlgImgHSpace		: "Vodoravni razmik",
+DlgImgVSpace		: "Navpični razmik",
+DlgImgAlign			: "Poravnava",
+DlgImgAlignLeft		: "Levo",
+DlgImgAlignAbsBottom: "Popolnoma na dno",
+DlgImgAlignAbsMiddle: "Popolnoma v sredino",
+DlgImgAlignBaseline	: "Na osnovno črto",
+DlgImgAlignBottom	: "Na dno",
+DlgImgAlignMiddle	: "V sredino",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Besedilo na vrh",
+DlgImgAlignTop		: "Na vrh",
+DlgImgPreview		: "Predogled",
+DlgImgAlertUrl		: "Vnesite URL slike",
+DlgImgLinkTab		: "Povezava",
+
+// Flash Dialog
+DlgFlashTitle		: "Lastnosti Flash",
+DlgFlashChkPlay		: "Samodejno predvajaj",
+DlgFlashChkLoop		: "Ponavljanje",
+DlgFlashChkMenu		: "Omogoči Flash Meni",
+DlgFlashScale		: "Povečava",
+DlgFlashScaleAll	: "Pokaži vse",
+DlgFlashScaleNoBorder	: "Brez obrobe",
+DlgFlashScaleFit	: "Natančno prileganje",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Povezava",
+DlgLnkInfoTab		: "Podatki o povezavi",
+DlgLnkTargetTab		: "Cilj",
+
+DlgLnkType			: "Vrsta povezave",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Zaznamek na tej strani",
+DlgLnkTypeEMail		: "Elektronski naslov",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izberi zaznamek",
+DlgLnkAnchorByName	: "Po imenu zaznamka",
+DlgLnkAnchorById	: "Po ID-ju elementa",
+DlgLnkNoAnchors		: "(V tem dokumentu ni zaznamkov)",
+DlgLnkEMail			: "Elektronski naslov",
+DlgLnkEMailSubject	: "Predmet sporočila",
+DlgLnkEMailBody		: "Vsebina sporočila",
+DlgLnkUpload		: "Prenesi",
+DlgLnkBtnUpload		: "Pošlji na strežnik",
+
+DlgLnkTarget		: "Cilj",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<pojavno okno>",
+DlgLnkTargetBlank	: "Novo okno (_blank)",
+DlgLnkTargetParent	: "Starševsko okno (_parent)",
+DlgLnkTargetSelf	: "Isto okno (_self)",
+DlgLnkTargetTop		: "Najvišje okno (_top)",
+DlgLnkTargetFrameName	: "Ime ciljnega okvirja",
+DlgLnkPopWinName	: "Ime pojavnega okna",
+DlgLnkPopWinFeat	: "Značilnosti pojavnega okna",
+DlgLnkPopResize		: "Spremenljive velikosti",
+DlgLnkPopLocation	: "Naslovna vrstica",
+DlgLnkPopMenu		: "Menijska vrstica",
+DlgLnkPopScroll		: "Drsniki",
+DlgLnkPopStatus		: "Vrstica stanja",
+DlgLnkPopToolbar	: "Orodna vrstica",
+DlgLnkPopFullScrn	: "Celozaslonska slika (IE)",
+DlgLnkPopDependent	: "Podokno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Višina",
+DlgLnkPopLeft		: "Lega levo",
+DlgLnkPopTop		: "Lega na vrhu",
+
+DlnLnkMsgNoUrl		: "Vnesite URL povezave",
+DlnLnkMsgNoEMail	: "Vnesite elektronski naslov",
+DlnLnkMsgNoAnchor	: "Izberite zaznamek",
+DlnLnkMsgInvPopName	: "Ime pojavnega okna se mora začeti s črko ali številko in ne sme vsebovati presledkov",
+
+// Color Dialog
+DlgColorTitle		: "Izberite barvo",
+DlgColorBtnClear	: "Počisti",
+DlgColorHighlight	: "Označi",
+DlgColorSelected	: "Izbrano",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vstavi smeška",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Izberi posebni znak",
+
+// Table Dialog
+DlgTableTitle		: "Lastnosti tabele",
+DlgTableRows		: "Vrstice",
+DlgTableColumns		: "Stolpci",
+DlgTableBorder		: "Velikost obrobe",
+DlgTableAlign		: "Poravnava",
+DlgTableAlignNotSet	: "<Ni nastavljeno>",
+DlgTableAlignLeft	: "Levo",
+DlgTableAlignCenter	: "Sredinsko",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "pik",
+DlgTableWidthPc		: "procentov",
+DlgTableHeight		: "Višina",
+DlgTableCellSpace	: "Razmik med celicami",
+DlgTableCellPad		: "Polnilo med celicami",
+DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Povzetek",
+DlgTableHeaders		: "Glava",
+DlgTableHeadersNone		: "Brez",
+DlgTableHeadersColumn	: "Prvi stolpec",
+DlgTableHeadersRow		: "Prva vrstica",
+DlgTableHeadersBoth		: "Oboje",
+
+// Table Cell Dialog
+DlgCellTitle		: "Lastnosti celice",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "pik",
+DlgCellWidthPc		: "procentov",
+DlgCellHeight		: "Višina",
+DlgCellWordWrap		: "Pomikanje besedila",
+DlgCellWordWrapNotSet	: "<Ni nastavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravna poravnava",
+DlgCellHorAlignNotSet	: "<Ni nastavljeno>",
+DlgCellHorAlignLeft	: "Levo",
+DlgCellHorAlignCenter	: "Sredinsko",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Navpična poravnava",
+DlgCellVerAlignNotSet	: "<Ni nastavljeno>",
+DlgCellVerAlignTop	: "Na vrh",
+DlgCellVerAlignMiddle	: "V sredino",
+DlgCellVerAlignBottom	: "Na dno",
+DlgCellVerAlignBaseline	: "Na osnovno črto",
+DlgCellType		: "Tip celice",
+DlgCellTypeData		: "Podatek",
+DlgCellTypeHeader	: "Naslov",
+DlgCellRowSpan		: "Spojenih vrstic (row-span)",
+DlgCellCollSpan		: "Spojenih stolpcev (col-span)",
+DlgCellBackColor	: "Barva ozadja",
+DlgCellBorderColor	: "Barva obrobe",
+DlgCellBtnSelect	: "Izberi...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Najdi in zamenjaj",
+
+// Find Dialog
+DlgFindTitle		: "Najdi",
+DlgFindFindBtn		: "Najdi",
+DlgFindNotFoundMsg	: "Navedeno besedilo ni bilo najdeno.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zamenjaj",
+DlgReplaceFindLbl		: "Najdi:",
+DlgReplaceReplaceLbl	: "Zamenjaj z:",
+DlgReplaceCaseChk		: "Razlikuj velike in male črke",
+DlgReplaceReplaceBtn	: "Zamenjaj",
+DlgReplaceReplAllBtn	: "Zamenjaj vse",
+DlgReplaceWordChk		: "Samo cele besede",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).",
+PasteErrorCopy	: "Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).",
+
+PasteAsText		: "Prilepi kot golo besedilo",
+PasteFromWord	: "Prilepi iz Worda",
+
+DlgPasteMsg2	: "Prosim prilepite v sleči okvir s pomočjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.",
+DlgPasteSec		: "Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.",
+DlgPasteIgnoreFont		: "Prezri obliko pisave",
+DlgPasteRemoveStyles	: "Odstrani nastavitve stila",
+
+// Color Picker
+ColorAutomatic	: "Samodejno",
+ColorMoreColors	: "Več barv...",
+
+// Document Properties
+DocProps		: "Lastnosti dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Lastnosti zaznamka",
+DlgAnchorName		: "Ime zaznamka",
+DlgAnchorErrorName	: "Prosim vnesite ime zaznamka",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ni v slovarju",
+DlgSpellChangeTo		: "Spremeni v",
+DlgSpellBtnIgnore		: "Prezri",
+DlgSpellBtnIgnoreAll	: "Prezri vse",
+DlgSpellBtnReplace		: "Zamenjaj",
+DlgSpellBtnReplaceAll	: "Zamenjaj vse",
+DlgSpellBtnUndo			: "Razveljavi",
+DlgSpellNoSuggestions	: "- Ni predlogov -",
+DlgSpellProgress		: "Preverjanje črkovanja se izvaja...",
+DlgSpellNoMispell		: "Črkovanje je končano: Brez napak",
+DlgSpellNoChanges		: "Črkovanje je končano: Nobena beseda ni bila spremenjena",
+DlgSpellOneChange		: "Črkovanje je končano: Spremenjena je bila ena beseda",
+DlgSpellManyChanges		: "Črkovanje je končano: Spremenjenih je bilo %1 besed",
+
+IeSpellDownload			: "Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?",
+
+// Button Dialog
+DlgButtonText		: "Besedilo (Vrednost)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Gumb",
+DlgButtonTypeSbm	: "Potrdi",
+DlgButtonTypeRst	: "Ponastavi",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ime",
+DlgCheckboxValue	: "Vrednost",
+DlgCheckboxSelected	: "Izbrano",
+
+// Form Dialog
+DlgFormName		: "Ime",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Ime",
+DlgSelectValue		: "Vrednost",
+DlgSelectSize		: "Velikost",
+DlgSelectLines		: "vrstic",
+DlgSelectChkMulti	: "Dovoli izbor večih vrstic",
+DlgSelectOpAvail	: "Razpoložljive izbire",
+DlgSelectOpText		: "Besedilo",
+DlgSelectOpValue	: "Vrednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Spremeni",
+DlgSelectBtnUp		: "Gor",
+DlgSelectBtnDown	: "Dol",
+DlgSelectBtnSetValue : "Postavi kot privzeto izbiro",
+DlgSelectBtnDelete	: "Izbriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Ime",
+DlgTextareaCols	: "Stolpcev",
+DlgTextareaRows	: "Vrstic",
+
+// Text Field Dialog
+DlgTextName			: "Ime",
+DlgTextValue		: "Vrednost",
+DlgTextCharWidth	: "Dolžina",
+DlgTextMaxChars		: "Največje število znakov",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Besedilo",
+DlgTextTypePass		: "Geslo",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ime",
+DlgHiddenValue	: "Vrednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Lastnosti označenega seznama",
+NumberedListProp	: "Lastnosti oštevilčenega seznama",
+DlgLstStart			: "Začetek",
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Pikica",
+DlgLstTypeDisc		: "Kroglica",
+DlgLstTypeSquare	: "Kvadratek",
+DlgLstTypeNumbers	: "Številke (1, 2, 3)",
+DlgLstTypeLCase		: "Male črke (a, b, c)",
+DlgLstTypeUCase		: "Velike črke (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske številke (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske številke (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Splošno",
+DlgDocBackTab		: "Ozadje",
+DlgDocColorsTab		: "Barve in zamiki",
+DlgDocMetaTab		: "Meta podatki",
+
+DlgDocPageTitle		: "Naslov strani",
+DlgDocLangDir		: "Smer jezika",
+DlgDocLangDirLTR	: "Od leve proti desni (LTR)",
+DlgDocLangDirRTL	: "Od desne proti levi (RTL)",
+DlgDocLangCode		: "Oznaka jezika",
+DlgDocCharSet		: "Kodna tabela",
+DlgDocCharSetCE		: "Srednjeevropsko",
+DlgDocCharSetCT		: "Tradicionalno Kitajsko (Big5)",
+DlgDocCharSetCR		: "Cirilica",
+DlgDocCharSetGR		: "Grško",
+DlgDocCharSetJP		: "Japonsko",
+DlgDocCharSetKR		: "Korejsko",
+DlgDocCharSetTR		: "Turško",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Zahodnoevropsko",
+DlgDocCharSetOther	: "Druga kodna tabela",
+
+DlgDocDocType		: "Glava tipa dokumenta",
+DlgDocDocTypeOther	: "Druga glava tipa dokumenta",
+DlgDocIncXHTML		: "Vstavi XHTML deklaracije",
+DlgDocBgColor		: "Barva ozadja",
+DlgDocBgImage		: "URL slike za ozadje",
+DlgDocBgNoScroll	: "Nepremično ozadje",
+DlgDocCText			: "Besedilo",
+DlgDocCLink			: "Povezava",
+DlgDocCVisited		: "Obiskana povezava",
+DlgDocCActive		: "Aktivna povezava",
+DlgDocMargins		: "Zamiki strani",
+DlgDocMaTop			: "Na vrhu",
+DlgDocMaLeft		: "Levo",
+DlgDocMaRight		: "Desno",
+DlgDocMaBottom		: "Spodaj",
+DlgDocMeIndex		: "Ključne besede (ločene z vejicami)",
+DlgDocMeDescr		: "Opis strani",
+DlgDocMeAuthor		: "Avtor",
+DlgDocMeCopy		: "Avtorske pravice",
+DlgDocPreview		: "Predogled",
+
+// Templates Dialog
+Templates			: "Predloge",
+DlgTemplatesTitle	: "Vsebinske predloge",
+DlgTemplatesSelMsg	: "Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):",
+DlgTemplatesLoading	: "Nalagam seznam predlog. Prosim počakajte...",
+DlgTemplatesNoTpl	: "(Ni pripravljenih predlog)",
+DlgTemplatesReplace	: "Zamenjaj trenutno vsebino",
+
+// About Dialog
+DlgAboutAboutTab	: "Vizitka",
+DlgAboutBrowserInfoTab	: "Informacije o brskalniku",
+DlgAboutLicenseTab	: "Dovoljenja",
+DlgAboutVersion		: "različica",
+DlgAboutInfo		: "Za več informacij obiščite",
+
+// Div Dialog
+DlgDivGeneralTab	: "Splošno",
+DlgDivAdvancedTab	: "Napredno",
+DlgDivStyle		: "Oblika",
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lt.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lt.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lt.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Lithuanian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Sutraukti mygtukų juostą",
+ToolbarExpand		: "Išplėsti mygtukų juostą",
+
+// Toolbar Items and Context Menu
+Save				: "Išsaugoti",
+NewPage				: "Naujas puslapis",
+Preview				: "Peržiūra",
+Cut					: "Iškirpti",
+Copy				: "Kopijuoti",
+Paste				: "Įdėti",
+PasteText			: "Įdėti kaip gryną tekstą",
+PasteWord			: "Įdėti iš Word",
+Print				: "Spausdinti",
+SelectAll			: "Pažymėti viską",
+RemoveFormat		: "Panaikinti formatą",
+InsertLinkLbl		: "Nuoroda",
+InsertLink			: "Įterpti/taisyti nuorodą",
+RemoveLink			: "Panaikinti nuorodą",
+VisitLink			: "Atidaryti nuorodą",
+Anchor				: "Įterpti/modifikuoti žymę",
+AnchorDelete		: "Naikinti žymę",
+InsertImageLbl		: "Vaizdas",
+InsertImage			: "Įterpti/taisyti vaizdą",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Įterpti/taisyti Flash",
+InsertTableLbl		: "Lentelė",
+InsertTable			: "Įterpti/taisyti lentelę",
+InsertLineLbl		: "Linija",
+InsertLine			: "Įterpti horizontalią liniją",
+InsertSpecialCharLbl: "Spec. simbolis",
+InsertSpecialChar	: "Įterpti specialų simbolį",
+InsertSmileyLbl		: "Veideliai",
+InsertSmiley		: "Įterpti veidelį",
+About				: "Apie FCKeditor",
+Bold				: "Pusjuodis",
+Italic				: "Kursyvas",
+Underline			: "Pabrauktas",
+StrikeThrough		: "Perbrauktas",
+Subscript			: "Apatinis indeksas",
+Superscript			: "Viršutinis indeksas",
+LeftJustify			: "Lygiuoti kairę",
+CenterJustify		: "Centruoti",
+RightJustify		: "Lygiuoti dešinę",
+BlockJustify		: "Lygiuoti abi puses",
+DecreaseIndent		: "Sumažinti įtrauką",
+IncreaseIndent		: "Padidinti įtrauką",
+Blockquote			: "Citata",
+CreateDiv			: "Sukurti Div elementą",
+EditDiv				: "Reaguoti Div elementą",
+DeleteDiv			: "Šalinti Div elementą",
+Undo				: "Atšaukti",
+Redo				: "Atstatyti",
+NumberedListLbl		: "Numeruotas sąrašas",
+NumberedList		: "Įterpti/Panaikinti numeruotą sąrašą",
+BulletedListLbl		: "Suženklintas sąrašas",
+BulletedList		: "Įterpti/Panaikinti suženklintą sąrašą",
+ShowTableBorders	: "Rodyti lentelės rėmus",
+ShowDetails			: "Rodyti detales",
+Style				: "Stilius",
+FontFormat			: "Šrifto formatas",
+Font				: "Šriftas",
+FontSize			: "Šrifto dydis",
+TextColor			: "Teksto spalva",
+BGColor				: "Fono spalva",
+Source				: "Šaltinis",
+Find				: "Rasti",
+Replace				: "Pakeisti",
+SpellCheck			: "Rašybos tikrinimas",
+UniversalKeyboard	: "Universali klaviatūra",
+PageBreakLbl		: "Puslapių skirtukas",
+PageBreak			: "Įterpti puslapių skirtuką",
+
+Form			: "Forma",
+Checkbox		: "Žymimasis langelis",
+RadioButton		: "Žymimoji akutė",
+TextField		: "Teksto laukas",
+Textarea		: "Teksto sritis",
+HiddenField		: "Nerodomas laukas",
+Button			: "Mygtukas",
+SelectionField	: "Atrankos laukas",
+ImageButton		: "Vaizdinis mygtukas",
+
+FitWindow		: "Padidinti redaktorių",
+ShowBlocks		: "Rodyti blokus",
+
+// Context Menu
+EditLink			: "Taisyti nuorodą",
+CellCM				: "Langelis",
+RowCM				: "Eilutė",
+ColumnCM			: "Stulpelis",
+InsertRowAfter		: "Įterpti eilutę po",
+InsertRowBefore		: "Įterpti eilutę prieš",
+DeleteRows			: "Šalinti eilutes",
+InsertColumnAfter	: "Įterpti stulpelį po",
+InsertColumnBefore	: "Įterpti stulpelį prieš",
+DeleteColumns		: "Šalinti stulpelius",
+InsertCellAfter		: "Įterpti langelį po",
+InsertCellBefore	: "Įterpti langelį prieš",
+DeleteCells			: "Šalinti langelius",
+MergeCells			: "Sujungti langelius",
+MergeRight			: "Sujungti su dešine",
+MergeDown			: "Sujungti su apačia",
+HorizontalSplitCell	: "Skaidyti langelį horizontaliai",
+VerticalSplitCell	: "Skaidyti langelį vertikaliai",
+TableDelete			: "Šalinti lentelę",
+CellProperties		: "Langelio savybės",
+TableProperties		: "Lentelės savybės",
+ImageProperties		: "Vaizdo savybės",
+FlashProperties		: "Flash savybės",
+
+AnchorProp			: "Žymės savybės",
+ButtonProp			: "Mygtuko savybės",
+CheckboxProp		: "Žymimojo langelio savybės",
+HiddenFieldProp		: "Nerodomo lauko savybės",
+RadioButtonProp		: "Žymimosios akutės savybės",
+ImageButtonProp		: "Vaizdinio mygtuko savybės",
+TextFieldProp		: "Teksto lauko savybės",
+SelectionFieldProp	: "Atrankos lauko savybės",
+TextareaProp		: "Teksto srities savybės",
+FormProp			: "Formos savybės",
+
+FontFormats			: "Normalus;Formuotas;Kreipinio;Antraštinis 1;Antraštinis 2;Antraštinis 3;Antraštinis 4;Antraštinis 5;Antraštinis 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Apdorojamas XHTML. Prašome palaukti...",
+Done				: "Baigta",
+PasteWordConfirm	: "Įdedamas tekstas yra panašus į kopiją iš Word. Ar Jūs norite prieš įdėjimą išvalyti jį?",
+NotCompatiblePaste	: "Ši komanda yra prieinama tik per Internet Explorer 5.5 ar aukštesnę versiją. Ar Jūs norite įterpti be valymo?",
+UnknownToolbarItem	: "Nežinomas mygtukų juosta elementas \"%1\"",
+UnknownCommand		: "Nežinomas komandos vardas \"%1\"",
+NotImplemented		: "Komanda nėra įgyvendinta",
+UnknownToolbarSet	: "Mygtukų juostos rinkinys \"%1\" neegzistuoja",
+NoActiveX			: "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.",
+BrowseServerBlocked : "Neįmanoma atidaryti naujo naršyklės lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+DialogBlocked		: "Neįmanoma atidaryti dialogo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+VisitLinkBlocked	: "Neįmanoma atidaryti naujo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Nutraukti",
+DlgBtnClose			: "Uždaryti",
+DlgBtnBrowseServer	: "Naršyti po serverį",
+DlgAdvancedTag		: "Papildomas",
+DlgOpOther			: "<Kita>",
+DlgInfoTab			: "Informacija",
+DlgAlertUrl			: "Prašome įrašyti URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nėra nustatyta>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Teksto kryptis",
+DlgGenLangDirLtr	: "Iš kairės į dešinę (LTR)",
+DlgGenLangDirRtl	: "Iš dešinės į kairę (RTL)",
+DlgGenLangCode		: "Kalbos kodas",
+DlgGenAccessKey		: "Prieigos raktas",
+DlgGenName			: "Vardas",
+DlgGenTabIndex		: "Tabuliavimo indeksas",
+DlgGenLongDescr		: "Ilgas aprašymas URL",
+DlgGenClass			: "Stilių lentelės klasės",
+DlgGenTitle			: "Konsultacinė antraštė",
+DlgGenContType		: "Konsultacinio turinio tipas",
+DlgGenLinkCharset	: "Susietų išteklių simbolių lentelė",
+DlgGenStyle			: "Stilius",
+
+// Image Dialog
+DlgImgTitle			: "Vaizdo savybės",
+DlgImgInfoTab		: "Vaizdo informacija",
+DlgImgBtnUpload		: "Siųsti į serverį",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Nusiųsti",
+DlgImgAlt			: "Alternatyvus Tekstas",
+DlgImgWidth			: "Plotis",
+DlgImgHeight		: "Aukštis",
+DlgImgLockRatio		: "Išlaikyti proporciją",
+DlgBtnResetSize		: "Atstatyti dydį",
+DlgImgBorder		: "Rėmelis",
+DlgImgHSpace		: "Hor.Erdvė",
+DlgImgVSpace		: "Vert.Erdvė",
+DlgImgAlign			: "Lygiuoti",
+DlgImgAlignLeft		: "Kairę",
+DlgImgAlignAbsBottom: "Absoliučią apačią",
+DlgImgAlignAbsMiddle: "Absoliutų vidurį",
+DlgImgAlignBaseline	: "Apatinę liniją",
+DlgImgAlignBottom	: "Apačią",
+DlgImgAlignMiddle	: "Vidurį",
+DlgImgAlignRight	: "Dešinę",
+DlgImgAlignTextTop	: "Teksto viršūnę",
+DlgImgAlignTop		: "Viršūnę",
+DlgImgPreview		: "Peržiūra",
+DlgImgAlertUrl		: "Prašome įvesti vaizdo URL",
+DlgImgLinkTab		: "Nuoroda",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash savybės",
+DlgFlashChkPlay		: "Automatinis paleidimas",
+DlgFlashChkLoop		: "Ciklas",
+DlgFlashChkMenu		: "Leisti Flash meniu",
+DlgFlashScale		: "Mastelis",
+DlgFlashScaleAll	: "Rodyti visą",
+DlgFlashScaleNoBorder	: "Be rėmelio",
+DlgFlashScaleFit	: "Tikslus atitikimas",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Nuoroda",
+DlgLnkInfoTab		: "Nuorodos informacija",
+DlgLnkTargetTab		: "Paskirtis",
+
+DlgLnkType			: "Nuorodos tipas",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Žymė šiame puslapyje",
+DlgLnkTypeEMail		: "El.paštas",
+DlgLnkProto			: "Protokolas",
+DlgLnkProtoOther	: "<kitas>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Pasirinkite žymę",
+DlgLnkAnchorByName	: "Pagal žymės vardą",
+DlgLnkAnchorById	: "Pagal žymės Id",
+DlgLnkNoAnchors		: "(Šiame dokumente žymių nėra)",
+DlgLnkEMail			: "El.pašto adresas",
+DlgLnkEMailSubject	: "Žinutės tema",
+DlgLnkEMailBody		: "Žinutės turinys",
+DlgLnkUpload		: "Siųsti",
+DlgLnkBtnUpload		: "Siųsti į serverį",
+
+DlgLnkTarget		: "Paskirties vieta",
+DlgLnkTargetFrame	: "<kadras>",
+DlgLnkTargetPopup	: "<išskleidžiamas langas>",
+DlgLnkTargetBlank	: "Naujas langas (_blank)",
+DlgLnkTargetParent	: "Pirminis langas (_parent)",
+DlgLnkTargetSelf	: "Tas pats langas (_self)",
+DlgLnkTargetTop		: "Svarbiausias langas (_top)",
+DlgLnkTargetFrameName	: "Paskirties kadro vardas",
+DlgLnkPopWinName	: "Paskirties lango vardas",
+DlgLnkPopWinFeat	: "Išskleidžiamo lango savybės",
+DlgLnkPopResize		: "Keičiamas dydis",
+DlgLnkPopLocation	: "Adreso juosta",
+DlgLnkPopMenu		: "Meniu juosta",
+DlgLnkPopScroll		: "Slinkties juostos",
+DlgLnkPopStatus		: "Būsenos juosta",
+DlgLnkPopToolbar	: "Mygtukų juosta",
+DlgLnkPopFullScrn	: "Visas ekranas (IE)",
+DlgLnkPopDependent	: "Priklausomas (Netscape)",
+DlgLnkPopWidth		: "Plotis",
+DlgLnkPopHeight		: "Aukštis",
+DlgLnkPopLeft		: "Kairė pozicija",
+DlgLnkPopTop		: "Viršutinė pozicija",
+
+DlnLnkMsgNoUrl		: "Prašome įvesti nuorodos URL",
+DlnLnkMsgNoEMail	: "Prašome įvesti el.pašto adresą",
+DlnLnkMsgNoAnchor	: "Prašome pasirinkti žymę",
+DlnLnkMsgInvPopName	: "Iššokančio lango pavadinimas privalo prasidėti lotyniška raide ir negali turėti tarpų",
+
+// Color Dialog
+DlgColorTitle		: "Pasirinkite spalvą",
+DlgColorBtnClear	: "Trinti",
+DlgColorHighlight	: "Paryškinta",
+DlgColorSelected	: "Pažymėta",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Įterpti veidelį",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Pasirinkite specialų simbolį",
+
+// Table Dialog
+DlgTableTitle		: "Lentelės savybės",
+DlgTableRows		: "Eilutės",
+DlgTableColumns		: "Stulpeliai",
+DlgTableBorder		: "Rėmelio dydis",
+DlgTableAlign		: "Lygiuoti",
+DlgTableAlignNotSet	: "<Nenustatyta>",
+DlgTableAlignLeft	: "Kairę",
+DlgTableAlignCenter	: "Centrą",
+DlgTableAlignRight	: "Dešinę",
+DlgTableWidth		: "Plotis",
+DlgTableWidthPx		: "taškais",
+DlgTableWidthPc		: "procentais",
+DlgTableHeight		: "Aukštis",
+DlgTableCellSpace	: "Tarpas tarp langelių",
+DlgTableCellPad		: "Trapas nuo langelio rėmo iki teksto",
+DlgTableCaption		: "Antraštė",
+DlgTableSummary		: "Santrauka",
+DlgTableHeaders		: "Antraštės",
+DlgTableHeadersNone		: "Nėra",
+DlgTableHeadersColumn	: "Pirmas stulpelis",
+DlgTableHeadersRow		: "Pirma eilutė",
+DlgTableHeadersBoth		: "Abu",
+
+// Table Cell Dialog
+DlgCellTitle		: "Langelio savybės",
+DlgCellWidth		: "Plotis",
+DlgCellWidthPx		: "taškais",
+DlgCellWidthPc		: "procentais",
+DlgCellHeight		: "Aukštis",
+DlgCellWordWrap		: "Teksto laužymas",
+DlgCellWordWrapNotSet	: "<Nenustatyta>",
+DlgCellWordWrapYes	: "Taip",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizontaliai lygiuoti",
+DlgCellHorAlignNotSet	: "<Nenustatyta>",
+DlgCellHorAlignLeft	: "Kairę",
+DlgCellHorAlignCenter	: "Centrą",
+DlgCellHorAlignRight: "Dešinę",
+DlgCellVerAlign		: "Vertikaliai lygiuoti",
+DlgCellVerAlignNotSet	: "<Nenustatyta>",
+DlgCellVerAlignTop	: "Viršų",
+DlgCellVerAlignMiddle	: "Vidurį",
+DlgCellVerAlignBottom	: "Apačią",
+DlgCellVerAlignBaseline	: "Apatinę liniją",
+DlgCellType		: "Langelio tipas",
+DlgCellTypeData		: "Duomenys",
+DlgCellTypeHeader	: "Antraštė",
+DlgCellRowSpan		: "Eilučių apjungimas",
+DlgCellCollSpan		: "Stulpelių apjungimas",
+DlgCellBackColor	: "Fono spalva",
+DlgCellBorderColor	: "Rėmelio spalva",
+DlgCellBtnSelect	: "Pažymėti...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Surasti ir pakeisti",
+
+// Find Dialog
+DlgFindTitle		: "Paieška",
+DlgFindFindBtn		: "Surasti",
+DlgFindNotFoundMsg	: "Nurodytas tekstas nerastas.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Pakeisti",
+DlgReplaceFindLbl		: "Surasti tekstą:",
+DlgReplaceReplaceLbl	: "Pakeisti tekstu:",
+DlgReplaceCaseChk		: "Skirti didžiąsias ir mažąsias raides",
+DlgReplaceReplaceBtn	: "Pakeisti",
+DlgReplaceReplAllBtn	: "Pakeisti viską",
+DlgReplaceWordChk		: "Atitikti pilną žodį",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).",
+PasteErrorCopy	: "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).",
+
+PasteAsText		: "Įdėti kaip gryną tekstą",
+PasteFromWord	: "Įdėti iš Word",
+
+DlgPasteMsg2	: "Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (<STRONG>Ctrl+V</STRONG>) ir paspauskite mygtuką <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.",
+DlgPasteIgnoreFont		: "Ignoruoti šriftų nustatymus",
+DlgPasteRemoveStyles	: "Pašalinti stilių nustatymus",
+
+// Color Picker
+ColorAutomatic	: "Automatinis",
+ColorMoreColors	: "Daugiau spalvų...",
+
+// Document Properties
+DocProps		: "Dokumento savybės",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Žymės savybės",
+DlgAnchorName		: "Žymės vardas",
+DlgAnchorErrorName	: "Prašome įvesti žymės vardą",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Žodyne nerastas",
+DlgSpellChangeTo		: "Pakeisti į",
+DlgSpellBtnIgnore		: "Ignoruoti",
+DlgSpellBtnIgnoreAll	: "Ignoruoti visus",
+DlgSpellBtnReplace		: "Pakeisti",
+DlgSpellBtnReplaceAll	: "Pakeisti visus",
+DlgSpellBtnUndo			: "Atšaukti",
+DlgSpellNoSuggestions	: "- Nėra pasiūlymų -",
+DlgSpellProgress		: "Vyksta rašybos tikrinimas...",
+DlgSpellNoMispell		: "Rašybos tikrinimas baigtas: Nerasta rašybos klaidų",
+DlgSpellNoChanges		: "Rašybos tikrinimas baigtas: Nėra pakeistų žodžių",
+DlgSpellOneChange		: "Rašybos tikrinimas baigtas: Vienas žodis pakeistas",
+DlgSpellManyChanges		: "Rašybos tikrinimas baigtas: Pakeista %1 žodžių",
+
+IeSpellDownload			: "Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?",
+
+// Button Dialog
+DlgButtonText		: "Tekstas (Reikšmė)",
+DlgButtonType		: "Tipas",
+DlgButtonTypeBtn	: "Mygtukas",
+DlgButtonTypeSbm	: "Siųsti",
+DlgButtonTypeRst	: "Išvalyti",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Vardas",
+DlgCheckboxValue	: "Reikšmė",
+DlgCheckboxSelected	: "Pažymėtas",
+
+// Form Dialog
+DlgFormName		: "Vardas",
+DlgFormAction	: "Veiksmas",
+DlgFormMethod	: "Metodas",
+
+// Select Field Dialog
+DlgSelectName		: "Vardas",
+DlgSelectValue		: "Reikšmė",
+DlgSelectSize		: "Dydis",
+DlgSelectLines		: "eilučių",
+DlgSelectChkMulti	: "Leisti daugeriopą atranką",
+DlgSelectOpAvail	: "Galimos parinktys",
+DlgSelectOpText		: "Tekstas",
+DlgSelectOpValue	: "Reikšmė",
+DlgSelectBtnAdd		: "Įtraukti",
+DlgSelectBtnModify	: "Modifikuoti",
+DlgSelectBtnUp		: "Aukštyn",
+DlgSelectBtnDown	: "Žemyn",
+DlgSelectBtnSetValue : "Laikyti pažymėta reikšme",
+DlgSelectBtnDelete	: "Trinti",
+
+// Textarea Dialog
+DlgTextareaName	: "Vardas",
+DlgTextareaCols	: "Ilgis",
+DlgTextareaRows	: "Plotis",
+
+// Text Field Dialog
+DlgTextName			: "Vardas",
+DlgTextValue		: "Reikšmė",
+DlgTextCharWidth	: "Ilgis simboliais",
+DlgTextMaxChars		: "Maksimalus simbolių skaičius",
+DlgTextType			: "Tipas",
+DlgTextTypeText		: "Tekstas",
+DlgTextTypePass		: "Slaptažodis",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Vardas",
+DlgHiddenValue	: "Reikšmė",
+
+// Bulleted List Dialog
+BulletedListProp	: "Suženklinto sąrašo savybės",
+NumberedListProp	: "Numeruoto sąrašo savybės",
+DlgLstStart			: "Pradėti nuo",
+DlgLstType			: "Tipas",
+DlgLstTypeCircle	: "Apskritimas",
+DlgLstTypeDisc		: "Diskas",
+DlgLstTypeSquare	: "Kvadratas",
+DlgLstTypeNumbers	: "Skaičiai (1, 2, 3)",
+DlgLstTypeLCase		: "Mažosios raidės (a, b, c)",
+DlgLstTypeUCase		: "Didžiosios raidės (A, B, C)",
+DlgLstTypeSRoman	: "Romėnų mažieji skaičiai (i, ii, iii)",
+DlgLstTypeLRoman	: "Romėnų didieji skaičiai (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Bendros savybės",
+DlgDocBackTab		: "Fonas",
+DlgDocColorsTab		: "Spalvos ir kraštinės",
+DlgDocMetaTab		: "Meta duomenys",
+
+DlgDocPageTitle		: "Puslapio antraštė",
+DlgDocLangDir		: "Kalbos kryptis",
+DlgDocLangDirLTR	: "Iš kairės į dešinę (LTR)",
+DlgDocLangDirRTL	: "Iš dešinės į kairę (RTL)",
+DlgDocLangCode		: "Kalbos kodas",
+DlgDocCharSet		: "Simbolių kodavimo lentelė",
+DlgDocCharSetCE		: "Centrinės Europos",
+DlgDocCharSetCT		: "Tradicinės kinų (Big5)",
+DlgDocCharSetCR		: "Kirilica",
+DlgDocCharSetGR		: "Graikų",
+DlgDocCharSetJP		: "Japonų",
+DlgDocCharSetKR		: "Korėjiečių",
+DlgDocCharSetTR		: "Turkų",
+DlgDocCharSetUN		: "Unikodas (UTF-8)",
+DlgDocCharSetWE		: "Vakarų Europos",
+DlgDocCharSetOther	: "Kita simbolių kodavimo lentelė",
+
+DlgDocDocType		: "Dokumento tipo antraštė",
+DlgDocDocTypeOther	: "Kita dokumento tipo antraštė",
+DlgDocIncXHTML		: "Įtraukti XHTML deklaracijas",
+DlgDocBgColor		: "Fono spalva",
+DlgDocBgImage		: "Fono paveikslėlio nuoroda (URL)",
+DlgDocBgNoScroll	: "Neslenkantis fonas",
+DlgDocCText			: "Tekstas",
+DlgDocCLink			: "Nuoroda",
+DlgDocCVisited		: "Aplankyta nuoroda",
+DlgDocCActive		: "Aktyvi nuoroda",
+DlgDocMargins		: "Puslapio kraštinės",
+DlgDocMaTop			: "Viršuje",
+DlgDocMaLeft		: "Kairėje",
+DlgDocMaRight		: "Dešinėje",
+DlgDocMaBottom		: "Apačioje",
+DlgDocMeIndex		: "Dokumento indeksavimo raktiniai žodžiai (atskirti kableliais)",
+DlgDocMeDescr		: "Dokumento apibūdinimas",
+DlgDocMeAuthor		: "Autorius",
+DlgDocMeCopy		: "Autorinės teisės",
+DlgDocPreview		: "Peržiūra",
+
+// Templates Dialog
+Templates			: "Šablonai",
+DlgTemplatesTitle	: "Turinio šablonai",
+DlgTemplatesSelMsg	: "Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):",
+DlgTemplatesLoading	: "Įkeliamas šablonų sąrašas. Prašome palaukti...",
+DlgTemplatesNoTpl	: "(Šablonų sąrašas tuščias)",
+DlgTemplatesReplace	: "Pakeisti dabartinį turinį pasirinktu šablonu",
+
+// About Dialog
+DlgAboutAboutTab	: "Apie",
+DlgAboutBrowserInfoTab	: "Naršyklės informacija",
+DlgAboutLicenseTab	: "Licenzija",
+DlgAboutVersion		: "versija",
+DlgAboutInfo		: "Papildomą informaciją galima gauti",
+
+// Div Dialog
+DlgDivGeneralTab	: "Bendros savybės",
+DlgDivAdvancedTab	: "Papildomos savybės",
+DlgDivStyle		: "Stilius",
+DlgDivInlineStyle	: "Stilius kode",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr-latn.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr-latn.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr-latn.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Serbian (Latin) language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Smanji liniju sa alatkama",
+ToolbarExpand		: "Proiri liniju sa alatkama",
+
+// Toolbar Items and Context Menu
+Save				: "Sačuvaj",
+NewPage				: "Nova stranica",
+Preview				: "Izgled stranice",
+Cut					: "Iseci",
+Copy				: "Kopiraj",
+Paste				: "Zalepi",
+PasteText			: "Zalepi kao neformatiran tekst",
+PasteWord			: "Zalepi iz Worda",
+Print				: "Štampa",
+SelectAll			: "Označi sve",
+RemoveFormat		: "Ukloni formatiranje",
+InsertLinkLbl		: "Link",
+InsertLink			: "Unesi/izmeni link",
+RemoveLink			: "Ukloni link",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Unesi/izmeni sidro",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Slika",
+InsertImage			: "Unesi/izmeni sliku",
+InsertFlashLbl		: "Fleš",
+InsertFlash			: "Unesi/izmeni fleš",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Unesi/izmeni tabelu",
+InsertLineLbl		: "Linija",
+InsertLine			: "Unesi horizontalnu liniju",
+InsertSpecialCharLbl: "Specijalni karakteri",
+InsertSpecialChar	: "Unesi specijalni karakter",
+InsertSmileyLbl		: "Smajli",
+InsertSmiley		: "Unesi smajlija",
+About				: "O FCKeditoru",
+Bold				: "Podebljano",
+Italic				: "Kurziv",
+Underline			: "Podvučeno",
+StrikeThrough		: "Precrtano",
+Subscript			: "Indeks",
+Superscript			: "Stepen",
+LeftJustify			: "Levo ravnanje",
+CenterJustify		: "Centriran tekst",
+RightJustify		: "Desno ravnanje",
+BlockJustify		: "Obostrano ravnanje",
+DecreaseIndent		: "Smanji levu marginu",
+IncreaseIndent		: "Uvećaj levu marginu",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Poni�ti akciju",
+Redo				: "Ponovi akciju",
+NumberedListLbl		: "Nabrojiva lista",
+NumberedList		: "Unesi/ukloni nabrojivu listu",
+BulletedListLbl		: "Nenabrojiva lista",
+BulletedList		: "Unesi/ukloni nenabrojivu listu",
+ShowTableBorders	: "Prikaži okvir tabele",
+ShowDetails			: "Prikaži detalje",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Veličina fonta",
+TextColor			: "Boja teksta",
+BGColor				: "Boja pozadine",
+Source				: "Kôd",
+Find				: "Pretraga",
+Replace				: "Zamena",
+SpellCheck			: "Proveri spelovanje",
+UniversalKeyboard	: "Univerzalna tastatura",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Forma",
+Checkbox		: "Polje za potvrdu",
+RadioButton		: "Radio-dugme",
+TextField		: "Tekstualno polje",
+Textarea		: "Zona teksta",
+HiddenField		: "Skriveno polje",
+Button			: "Dugme",
+SelectionField	: "Izborno polje",
+ImageButton		: "Dugme sa slikom",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Izmeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Obriši redove",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Obriši kolone",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Obriši ćelije",
+MergeCells			: "Spoj celije",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Osobine celije",
+TableProperties		: "Osobine tabele",
+ImageProperties		: "Osobine slike",
+FlashProperties		: "Osobine fleša",
+
+AnchorProp			: "Osobine sidra",
+ButtonProp			: "Osobine dugmeta",
+CheckboxProp		: "Osobine polja za potvrdu",
+HiddenFieldProp		: "Osobine skrivenog polja",
+RadioButtonProp		: "Osobine radio-dugmeta",
+ImageButtonProp		: "Osobine dugmeta sa slikom",
+TextFieldProp		: "Osobine tekstualnog polja",
+SelectionFieldProp	: "Osobine izbornog polja",
+TextareaProp		: "Osobine zone teksta",
+FormProp			: "Osobine forme",
+
+FontFormats			: "Normal;Formatirano;Adresa;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Obradujem XHTML. Malo strpljenja...",
+Done				: "Završio",
+PasteWordConfirm	: "Tekst koji želite da nalepite kopiran je iz Worda. Da li želite da bude očišćen od formata pre lepljenja?",
+NotCompatiblePaste	: "Ova komanda je dostupna samo za Internet Explorer od verzije 5.5. Da li želite da nalepim tekst bez čišćenja?",
+UnknownToolbarItem	: "Nepoznata stavka toolbara \"%1\"",
+UnknownCommand		: "Nepoznata naredba \"%1\"",
+NotImplemented		: "Naredba nije implementirana",
+UnknownToolbarSet	: "Toolbar \"%1\" ne postoji",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Otkaži",
+DlgBtnClose			: "Zatvori",
+DlgBtnBrowseServer	: "Pretraži server",
+DlgAdvancedTag		: "Napredni tagovi",
+DlgOpOther			: "<Ostali>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Molimo Vas, unesite URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nije postavljeno>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Smer jezika",
+DlgGenLangDirLtr	: "S leva na desno (LTR)",
+DlgGenLangDirRtl	: "S desna na levo (RTL)",
+DlgGenLangCode		: "Kôd jezika",
+DlgGenAccessKey		: "Pristupni taster",
+DlgGenName			: "Naziv",
+DlgGenTabIndex		: "Tab indeks",
+DlgGenLongDescr		: "Pun opis URL",
+DlgGenClass			: "Stylesheet klase",
+DlgGenTitle			: "Advisory naslov",
+DlgGenContType		: "Advisory vrsta sadržaja",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Osobine slika",
+DlgImgInfoTab		: "Info slike",
+DlgImgBtnUpload		: "Pošalji na server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Pošalji",
+DlgImgAlt			: "Alternativni tekst",
+DlgImgWidth			: "Širina",
+DlgImgHeight		: "Visina",
+DlgImgLockRatio		: "Zaključaj odnos",
+DlgBtnResetSize		: "Resetuj veličinu",
+DlgImgBorder		: "Okvir",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Ravnanje",
+DlgImgAlignLeft		: "Levo",
+DlgImgAlignAbsBottom: "Abs dole",
+DlgImgAlignAbsMiddle: "Abs sredina",
+DlgImgAlignBaseline	: "Bazno",
+DlgImgAlignBottom	: "Dole",
+DlgImgAlignMiddle	: "Sredina",
+DlgImgAlignRight	: "Desno",
+DlgImgAlignTextTop	: "Vrh teksta",
+DlgImgAlignTop		: "Vrh",
+DlgImgPreview		: "Izgled",
+DlgImgAlertUrl		: "Unesite URL slike",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Osobine fleša",
+DlgFlashChkPlay		: "Automatski start",
+DlgFlashChkLoop		: "Ponavljaj",
+DlgFlashChkMenu		: "Uključi fleš meni",
+DlgFlashScale		: "Skaliraj",
+DlgFlashScaleAll	: "Prikaži sve",
+DlgFlashScaleNoBorder	: "Bez ivice",
+DlgFlashScaleFit	: "Popuni površinu",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Meta",
+
+DlgLnkType			: "Vrsta linka",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<drugo>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Odaberi sidro",
+DlgLnkAnchorByName	: "Po nazivu sidra",
+DlgLnkAnchorById	: "Po Id-ju elementa",
+DlgLnkNoAnchors		: "(Nema dostupnih sidra)",
+DlgLnkEMail			: "E-Mail adresa",
+DlgLnkEMailSubject	: "Naslov",
+DlgLnkEMailBody		: "Sadržaj poruke",
+DlgLnkUpload		: "Pošalji",
+DlgLnkBtnUpload		: "Pošalji na server",
+
+DlgLnkTarget		: "Meta",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
+DlgLnkTargetBlank	: "Novi prozor (_blank)",
+DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
+DlgLnkTargetSelf	: "Isti prozor (_self)",
+DlgLnkTargetTop		: "Prozor na vrhu (_top)",
+DlgLnkTargetFrameName	: "Naziv odredišnog frejma",
+DlgLnkPopWinName	: "Naziv popup prozora",
+DlgLnkPopWinFeat	: "Mogućnosti popup prozora",
+DlgLnkPopResize		: "Promenljiva velicina",
+DlgLnkPopLocation	: "Lokacija",
+DlgLnkPopMenu		: "Kontekstni meni",
+DlgLnkPopScroll		: "Scroll bar",
+DlgLnkPopStatus		: "Statusna linija",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Prikaz preko celog ekrana (IE)",
+DlgLnkPopDependent	: "Zavisno (Netscape)",
+DlgLnkPopWidth		: "Širina",
+DlgLnkPopHeight		: "Visina",
+DlgLnkPopLeft		: "Od leve ivice ekrana (px)",
+DlgLnkPopTop		: "Od vrha ekrana (px)",
+
+DlnLnkMsgNoUrl		: "Unesite URL linka",
+DlnLnkMsgNoEMail	: "Otkucajte adresu elektronske pote",
+DlnLnkMsgNoAnchor	: "Odaberite sidro",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Odaberite boju",
+DlgColorBtnClear	: "Obriši",
+DlgColorHighlight	: "Posvetli",
+DlgColorSelected	: "Odaberi",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Unesi smajlija",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Odaberite specijalni karakter",
+
+// Table Dialog
+DlgTableTitle		: "Osobine tabele",
+DlgTableRows		: "Redova",
+DlgTableColumns		: "Kolona",
+DlgTableBorder		: "Veličina okvira",
+DlgTableAlign		: "Ravnanje",
+DlgTableAlignNotSet	: "<nije postavljeno>",
+DlgTableAlignLeft	: "Levo",
+DlgTableAlignCenter	: "Sredina",
+DlgTableAlignRight	: "Desno",
+DlgTableWidth		: "Širina",
+DlgTableWidthPx		: "piksela",
+DlgTableWidthPc		: "procenata",
+DlgTableHeight		: "Visina",
+DlgTableCellSpace	: "Ćelijski prostor",
+DlgTableCellPad		: "Razmak ćelija",
+DlgTableCaption		: "Naslov tabele",
+DlgTableSummary		: "Summary",	//MISSING
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Osobine ćelije",
+DlgCellWidth		: "Širina",
+DlgCellWidthPx		: "piksela",
+DlgCellWidthPc		: "procenata",
+DlgCellHeight		: "Visina",
+DlgCellWordWrap		: "Deljenje reči",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
+DlgCellWordWrapYes	: "Da",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Vodoravno ravnanje",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
+DlgCellHorAlignLeft	: "Levo",
+DlgCellHorAlignCenter	: "Sredina",
+DlgCellHorAlignRight: "Desno",
+DlgCellVerAlign		: "Vertikalno ravnanje",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
+DlgCellVerAlignTop	: "Gornje",
+DlgCellVerAlignMiddle	: "Sredina",
+DlgCellVerAlignBottom	: "Donje",
+DlgCellVerAlignBaseline	: "Bazno",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Spajanje redova",
+DlgCellCollSpan		: "Spajanje kolona",
+DlgCellBackColor	: "Boja pozadine",
+DlgCellBorderColor	: "Boja okvira",
+DlgCellBtnSelect	: "Odaberi...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Pronađi",
+DlgFindFindBtn		: "Pronađi",
+DlgFindNotFoundMsg	: "Traženi tekst nije pronađen.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Zameni",
+DlgReplaceFindLbl		: "Pronadi:",
+DlgReplaceReplaceLbl	: "Zameni sa:",
+DlgReplaceCaseChk		: "Razlikuj mala i velika slova",
+DlgReplaceReplaceBtn	: "Zameni",
+DlgReplaceReplAllBtn	: "Zameni sve",
+DlgReplaceWordChk		: "Uporedi cele reci",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).",
+PasteErrorCopy	: "Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).",
+
+PasteAsText		: "Zalepi kao čist tekst",
+PasteFromWord	: "Zalepi iz Worda",
+
+DlgPasteMsg2	: "Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignoriši definicije fontova",
+DlgPasteRemoveStyles	: "Ukloni definicije stilova",
+
+// Color Picker
+ColorAutomatic	: "Automatski",
+ColorMoreColors	: "Više boja...",
+
+// Document Properties
+DocProps		: "Osobine dokumenta",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Osobine sidra",
+DlgAnchorName		: "Ime sidra",
+DlgAnchorErrorName	: "Unesite ime sidra",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nije u rečniku",
+DlgSpellChangeTo		: "Izmeni",
+DlgSpellBtnIgnore		: "Ignoriši",
+DlgSpellBtnIgnoreAll	: "Ignoriši sve",
+DlgSpellBtnReplace		: "Zameni",
+DlgSpellBtnReplaceAll	: "Zameni sve",
+DlgSpellBtnUndo			: "Vrati akciju",
+DlgSpellNoSuggestions	: "- Bez sugestija -",
+DlgSpellProgress		: "Provera spelovanja u toku...",
+DlgSpellNoMispell		: "Provera spelovanja završena: greške nisu pronadene",
+DlgSpellNoChanges		: "Provera spelovanja završena: Nije izmenjena nijedna rec",
+DlgSpellOneChange		: "Provera spelovanja završena: Izmenjena je jedna reč",
+DlgSpellManyChanges		: "Provera spelovanja završena: %1 reč(i) je izmenjeno",
+
+IeSpellDownload			: "Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?",
+
+// Button Dialog
+DlgButtonText		: "Tekst (vrednost)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Naziv",
+DlgCheckboxValue	: "Vrednost",
+DlgCheckboxSelected	: "Označeno",
+
+// Form Dialog
+DlgFormName		: "Naziv",
+DlgFormAction	: "Akcija",
+DlgFormMethod	: "Metoda",
+
+// Select Field Dialog
+DlgSelectName		: "Naziv",
+DlgSelectValue		: "Vrednost",
+DlgSelectSize		: "Veličina",
+DlgSelectLines		: "linija",
+DlgSelectChkMulti	: "Dozvoli višestruku selekciju",
+DlgSelectOpAvail	: "Dostupne opcije",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Vrednost",
+DlgSelectBtnAdd		: "Dodaj",
+DlgSelectBtnModify	: "Izmeni",
+DlgSelectBtnUp		: "Gore",
+DlgSelectBtnDown	: "Dole",
+DlgSelectBtnSetValue : "Podesi kao označenu vrednost",
+DlgSelectBtnDelete	: "Obriši",
+
+// Textarea Dialog
+DlgTextareaName	: "Naziv",
+DlgTextareaCols	: "Broj kolona",
+DlgTextareaRows	: "Broj redova",
+
+// Text Field Dialog
+DlgTextName			: "Naziv",
+DlgTextValue		: "Vrednost",
+DlgTextCharWidth	: "Širina (karaktera)",
+DlgTextMaxChars		: "Maksimalno karaktera",
+DlgTextType			: "Tip",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Lozinka",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Naziv",
+DlgHiddenValue	: "Vrednost",
+
+// Bulleted List Dialog
+BulletedListProp	: "Osobine nenabrojive liste",
+NumberedListProp	: "Osobine nabrojive liste",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Krug",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Kvadrat",
+DlgLstTypeNumbers	: "Brojevi (1, 2, 3)",
+DlgLstTypeLCase		: "mala slova (a, b, c)",
+DlgLstTypeUCase		: "VELIKA slova (A, B, C)",
+DlgLstTypeSRoman	: "Male rimske cifre (i, ii, iii)",
+DlgLstTypeLRoman	: "Velike rimske cifre (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Opšte osobine",
+DlgDocBackTab		: "Pozadina",
+DlgDocColorsTab		: "Boje i margine",
+DlgDocMetaTab		: "Metapodaci",
+
+DlgDocPageTitle		: "Naslov stranice",
+DlgDocLangDir		: "Smer jezika",
+DlgDocLangDirLTR	: "Sleva nadesno (LTR)",
+DlgDocLangDirRTL	: "Zdesna nalevo (RTL)",
+DlgDocLangCode		: "Šifra jezika",
+DlgDocCharSet		: "Kodiranje skupa karaktera",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Ostala kodiranja skupa karaktera",
+
+DlgDocDocType		: "Zaglavlje tipa dokumenta",
+DlgDocDocTypeOther	: "Ostala zaglavlja tipa dokumenta",
+DlgDocIncXHTML		: "Ukljuci XHTML deklaracije",
+DlgDocBgColor		: "Boja pozadine",
+DlgDocBgImage		: "URL pozadinske slike",
+DlgDocBgNoScroll	: "Fiksirana pozadina",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Posećeni link",
+DlgDocCActive		: "Aktivni link",
+DlgDocMargins		: "Margine stranice",
+DlgDocMaTop			: "Gornja",
+DlgDocMaLeft		: "Leva",
+DlgDocMaRight		: "Desna",
+DlgDocMaBottom		: "Donja",
+DlgDocMeIndex		: "Ključne reci za indeksiranje dokumenta (razdvojene zarezima)",
+DlgDocMeDescr		: "Opis dokumenta",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autorska prava",
+DlgDocPreview		: "Izgled stranice",
+
+// Templates Dialog
+Templates			: "Obrasci",
+DlgTemplatesTitle	: "Obrasci za sadržaj",
+DlgTemplatesSelMsg	: "Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):",
+DlgTemplatesLoading	: "Učitavam listu obrazaca. Malo strpljenja...",
+DlgTemplatesNoTpl	: "(Nema definisanih obrazaca)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "O editoru",
+DlgAboutBrowserInfoTab	: "Informacije o pretraživacu",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "verzija",
+DlgAboutInfo		: "Za više informacija posetite",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lv.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lv.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/lv.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Latvian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Samazināt rīku joslu",
+ToolbarExpand		: "Paplašināt rīku joslu",
+
+// Toolbar Items and Context Menu
+Save				: "Saglabāt",
+NewPage				: "Jauna lapa",
+Preview				: "Pārskatīt",
+Cut					: "Izgriezt",
+Copy				: "Kopēt",
+Paste				: "Ievietot",
+PasteText			: "Ievietot kā vienkāršu tekstu",
+PasteWord			: "Ievietot no Worda",
+Print				: "Drukāt",
+SelectAll			: "Iezīmēt visu",
+RemoveFormat		: "Noņemt stilus",
+InsertLinkLbl		: "Hipersaite",
+InsertLink			: "Ievietot/Labot hipersaiti",
+RemoveLink			: "Noņemt hipersaiti",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Ievietot/Labot iezīmi",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Attēls",
+InsertImage			: "Ievietot/Labot Attēlu",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Ievietot/Labot Flash",
+InsertTableLbl		: "Tabula",
+InsertTable			: "Ievietot/Labot Tabulu",
+InsertLineLbl		: "Atdalītājsvītra",
+InsertLine			: "Ievietot horizontālu Atdalītājsvītru",
+InsertSpecialCharLbl: "Īpašs simbols",
+InsertSpecialChar	: "Ievietot speciālo simbolu",
+InsertSmileyLbl		: "Smaidiņi",
+InsertSmiley		: "Ievietot smaidiņu",
+About				: "Īsumā par FCKeditor",
+Bold				: "Treknu šriftu",
+Italic				: "Slīprakstā",
+Underline			: "Apakšsvītra",
+StrikeThrough		: "Pārsvītrots",
+Subscript			: "Zemrakstā",
+Superscript			: "Augšrakstā",
+LeftJustify			: "Izlīdzināt pa kreisi",
+CenterJustify		: "Izlīdzināt pret centru",
+RightJustify		: "Izlīdzināt pa labi",
+BlockJustify		: "Izlīdzināt malas",
+DecreaseIndent		: "Samazināt atkāpi",
+IncreaseIndent		: "Palielināt atkāpi",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Atcelt",
+Redo				: "Atkārtot",
+NumberedListLbl		: "Numurēts saraksts",
+NumberedList		: "Ievietot/Noņemt numerēto sarakstu",
+BulletedListLbl		: "Izcelts saraksts",
+BulletedList		: "Ievietot/Noņemt izceltu sarakstu",
+ShowTableBorders	: "Parādīt tabulas robežas",
+ShowDetails			: "Parādīt sīkāku informāciju",
+Style				: "Stils",
+FontFormat			: "Formāts",
+Font				: "Šrifts",
+FontSize			: "Izmērs",
+TextColor			: "Teksta krāsa",
+BGColor				: "Fona krāsa",
+Source				: "HTML kods",
+Find				: "Meklēt",
+Replace				: "Nomainīt",
+SpellCheck			: "Pareizrakstības pārbaude",
+UniversalKeyboard	: "Universāla klaviatūra",
+PageBreakLbl		: "Lapas pārtraukums",
+PageBreak			: "Ievietot lapas pārtraukumu",
+
+Form			: "Forma",
+Checkbox		: "Atzīmēšanas kastīte",
+RadioButton		: "Izvēles poga",
+TextField		: "Teksta rinda",
+Textarea		: "Teksta laukums",
+HiddenField		: "Paslēpta teksta rinda",
+Button			: "Poga",
+SelectionField	: "Iezīmēšanas lauks",
+ImageButton		: "Attēlpoga",
+
+FitWindow		: "Maksimizēt redaktora izmēru",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Labot hipersaiti",
+CellCM				: "Šūna",
+RowCM				: "Rinda",
+ColumnCM			: "Kolonna",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Dzēst rindas",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Dzēst kolonnas",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Dzēst rūtiņas",
+MergeCells			: "Apvienot rūtiņas",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Dzēst tabulu",
+CellProperties		: "Rūtiņas īpašības",
+TableProperties		: "Tabulas īpašības",
+ImageProperties		: "Attēla īpašības",
+FlashProperties		: "Flash īpašības",
+
+AnchorProp			: "Iezīmes īpašības",
+ButtonProp			: "Pogas īpašības",
+CheckboxProp		: "Atzīmēšanas kastītes īpašības",
+HiddenFieldProp		: "Paslēptās teksta rindas īpašības",
+RadioButtonProp		: "Izvēles poga īpašības",
+ImageButtonProp		: "Attēlpogas īpašības",
+TextFieldProp		: "Teksta rindas  īpašības",
+SelectionFieldProp	: "Iezīmēšanas lauka īpašības",
+TextareaProp		: "Teksta laukuma īpašības",
+FormProp			: "Formas īpašības",
+
+FontFormats			: "Normāls teksts;Formatēts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Tiek apstrādāts XHTML. Lūdzu uzgaidiet...",
+Done				: "Darīts",
+PasteWordConfirm	: "Teksta fragments, kas tiek ievietots, izskatās, ka būtu sagatavots Word'ā. Vai vēlaties to apstrādāt pirms ievietošanas?",
+NotCompatiblePaste	: "Šī darbība ir pieejama Internet Explorer'ī, kas jaunāks par 5.5 versiju. Vai vēlaties ievietot bez apstrādes?",
+UnknownToolbarItem	: "Nezināms rīku joslas objekts \"%1\"",
+UnknownCommand		: "Nezināmas darbības nosaukums \"%1\"",
+NotImplemented		: "Darbība netika paveikta",
+UnknownToolbarSet	: "Rīku joslas komplekts \"%1\" neeksistē",
+NoActiveX			: "Interneta pārlūkprogrammas drošības uzstādījumi varētu ietekmēt dažas no redaktora īpašībām. Jābūt aktivizētai sadaļai \"Run ActiveX controls and plug-ins\". Savādāk ir iespējamas kļūdas darbībā un kļūdu paziņojumu parādīšanās.",
+BrowseServerBlocked : "Resursu pārlūks nevar tikt atvērts. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+DialogBlocked		: "Nav iespējams atvērt dialoglogu. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "Darīts!",
+DlgBtnCancel		: "Atcelt",
+DlgBtnClose			: "Aizvērt",
+DlgBtnBrowseServer	: "Skatīt servera saturu",
+DlgAdvancedTag		: "Izvērstais",
+DlgOpOther			: "<Cits>",
+DlgInfoTab			: "Informācija",
+DlgAlertUrl			: "Lūdzu, ievietojiet hipersaiti",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nav iestatīts>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Valodas lasīšanas virziens",
+DlgGenLangDirLtr	: "No kreisās uz labo (LTR)",
+DlgGenLangDirRtl	: "No labās uz kreiso (RTL)",
+DlgGenLangCode		: "Valodas kods",
+DlgGenAccessKey		: "Pieejas kods",
+DlgGenName			: "Nosaukums",
+DlgGenTabIndex		: "Ciļņu indekss",
+DlgGenLongDescr		: "Gara apraksta Hipersaite",
+DlgGenClass			: "Stilu saraksta klases",
+DlgGenTitle			: "Konsultatīvs virsraksts",
+DlgGenContType		: "Konsultatīvs satura tips",
+DlgGenLinkCharset	: "Pievienotā resursa kodu tabula",
+DlgGenStyle			: "Stils",
+
+// Image Dialog
+DlgImgTitle			: "Attēla īpašības",
+DlgImgInfoTab		: "Informācija par attēlu",
+DlgImgBtnUpload		: "Nosūtīt serverim",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Augšupielādēt",
+DlgImgAlt			: "Alternatīvais teksts",
+DlgImgWidth			: "Platums",
+DlgImgHeight		: "Augstums",
+DlgImgLockRatio		: "Nemainīga Augstuma/Platuma attiecība",
+DlgBtnResetSize		: "Atjaunot sākotnējo izmēru",
+DlgImgBorder		: "Rāmis",
+DlgImgHSpace		: "Horizontālā telpa",
+DlgImgVSpace		: "Vertikālā telpa",
+DlgImgAlign			: "Nolīdzināt",
+DlgImgAlignLeft		: "Pa kreisi",
+DlgImgAlignAbsBottom: "Absolūti apakšā",
+DlgImgAlignAbsMiddle: "Absolūti vertikāli centrēts",
+DlgImgAlignBaseline	: "Pamatrindā",
+DlgImgAlignBottom	: "Apakšā",
+DlgImgAlignMiddle	: "Vertikāli centrēts",
+DlgImgAlignRight	: "Pa labi",
+DlgImgAlignTextTop	: "Teksta augšā",
+DlgImgAlignTop		: "Augšā",
+DlgImgPreview		: "Pārskats",
+DlgImgAlertUrl		: "Lūdzu norādīt attēla hipersaiti",
+DlgImgLinkTab		: "Hipersaite",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash īpašības",
+DlgFlashChkPlay		: "Automātiska atskaņošana",
+DlgFlashChkLoop		: "Nepārtraukti",
+DlgFlashChkMenu		: "Atļaut Flash izvēlni",
+DlgFlashScale		: "Mainīt izmēru",
+DlgFlashScaleAll	: "Rādīt visu",
+DlgFlashScaleNoBorder	: "Bez rāmja",
+DlgFlashScaleFit	: "Precīzs izmērs",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hipersaite",
+DlgLnkInfoTab		: "Hipersaites informācija",
+DlgLnkTargetTab		: "Mērķis",
+
+DlgLnkType			: "Hipersaites tips",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Iezīme šajā lapā",
+DlgLnkTypeEMail		: "E-pasts",
+DlgLnkProto			: "Protokols",
+DlgLnkProtoOther	: "<cits>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izvēlēties iezīmi",
+DlgLnkAnchorByName	: "Pēc iezīmes nosaukuma",
+DlgLnkAnchorById	: "Pēc elementa ID",
+DlgLnkNoAnchors		: "(Šajā dokumentā nav iezīmju)",
+DlgLnkEMail			: "E-pasta adrese",
+DlgLnkEMailSubject	: "Ziņas tēma",
+DlgLnkEMailBody		: "Ziņas saturs",
+DlgLnkUpload		: "Augšupielādēt",
+DlgLnkBtnUpload		: "Nosūtīt serverim",
+
+DlgLnkTarget		: "Mērķis",
+DlgLnkTargetFrame	: "<ietvars>",
+DlgLnkTargetPopup	: "<uznirstošā logā>",
+DlgLnkTargetBlank	: "Jaunā logā (_blank)",
+DlgLnkTargetParent	: "Esošajā logā (_parent)",
+DlgLnkTargetSelf	: "Tajā pašā logā (_self)",
+DlgLnkTargetTop		: "Visredzamākajā logā (_top)",
+DlgLnkTargetFrameName	: "Mērķa ietvara nosaukums",
+DlgLnkPopWinName	: "Uznirstošā loga nosaukums",
+DlgLnkPopWinFeat	: "Uznirstošā loga nosaukums īpašības",
+DlgLnkPopResize		: "Ar maināmu izmēru",
+DlgLnkPopLocation	: "Atrašanās vietas josla",
+DlgLnkPopMenu		: "Izvēlnes josla",
+DlgLnkPopScroll		: "Ritjoslas",
+DlgLnkPopStatus		: "Statusa josla",
+DlgLnkPopToolbar	: "Rīku josla",
+DlgLnkPopFullScrn	: "Pilnā ekrānā (IE)",
+DlgLnkPopDependent	: "Atkarīgs (Netscape)",
+DlgLnkPopWidth		: "Platums",
+DlgLnkPopHeight		: "Augstums",
+DlgLnkPopLeft		: "Kreisā koordināte",
+DlgLnkPopTop		: "Augšējā koordināte",
+
+DlnLnkMsgNoUrl		: "Lūdzu norādi hipersaiti",
+DlnLnkMsgNoEMail	: "Lūdzu norādi e-pasta adresi",
+DlnLnkMsgNoAnchor	: "Lūdzu norādi iezīmi",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Izvēlies krāsu",
+DlgColorBtnClear	: "Dzēst",
+DlgColorHighlight	: "Izcelt",
+DlgColorSelected	: "Iezīmētais",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ievietot smaidiņu",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Ievietot īpašu simbolu",
+
+// Table Dialog
+DlgTableTitle		: "Tabulas īpašības",
+DlgTableRows		: "Rindas",
+DlgTableColumns		: "Kolonnas",
+DlgTableBorder		: "Rāmja izmērs",
+DlgTableAlign		: "Novietojums",
+DlgTableAlignNotSet	: "<nav norādīts>",
+DlgTableAlignLeft	: "Pa kreisi",
+DlgTableAlignCenter	: "Centrēti",
+DlgTableAlignRight	: "Pa labi",
+DlgTableWidth		: "Platums",
+DlgTableWidthPx		: "pikseļos",
+DlgTableWidthPc		: "procentuāli",
+DlgTableHeight		: "Augstums",
+DlgTableCellSpace	: "Rūtiņu atstatums",
+DlgTableCellPad		: "Rūtiņu nobīde",
+DlgTableCaption		: "Leģenda",
+DlgTableSummary		: "Anotācija",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Rūtiņas īpašības",
+DlgCellWidth		: "Platums",
+DlgCellWidthPx		: "pikseļi",
+DlgCellWidthPc		: "procentos",
+DlgCellHeight		: "Augstums",
+DlgCellWordWrap		: "Teksta pārnese",
+DlgCellWordWrapNotSet	: "<nav norādīta>",
+DlgCellWordWrapYes	: "Jā",
+DlgCellWordWrapNo	: "Nē",
+DlgCellHorAlign		: "Horizontāla novietojums",
+DlgCellHorAlignNotSet	: "<Nav norādīts>",
+DlgCellHorAlignLeft	: "Pa kreisi",
+DlgCellHorAlignCenter	: "Centrēti",
+DlgCellHorAlignRight: "Pa labi",
+DlgCellVerAlign		: "Vertikālais novietojums",
+DlgCellVerAlignNotSet	: "<nav norādīts>",
+DlgCellVerAlignTop	: "Augša",
+DlgCellVerAlignMiddle	: "Vidus",
+DlgCellVerAlignBottom	: "Apakša",
+DlgCellVerAlignBaseline	: "Pamatrindā",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Rindu pārnese",
+DlgCellCollSpan		: "Kolonnu pārnese",
+DlgCellBackColor	: "Fona krāsa",
+DlgCellBorderColor	: "Rāmja krāsa",
+DlgCellBtnSelect	: "Iezīmē...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Meklētājs",
+DlgFindFindBtn		: "Meklēt",
+DlgFindNotFoundMsg	: "Norādītā frāze netika atrasta.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Aizvietošana",
+DlgReplaceFindLbl		: "Meklēt:",
+DlgReplaceReplaceLbl	: "Nomainīt uz:",
+DlgReplaceCaseChk		: "Reģistrjūtīgs",
+DlgReplaceReplaceBtn	: "Aizvietot",
+DlgReplaceReplAllBtn	: "Aizvietot visu",
+DlgReplaceWordChk		: "Jāsakrīt pilnībā",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.",
+PasteErrorCopy	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.",
+
+PasteAsText		: "Ievietot kā vienkāršu tekstu",
+PasteFromWord	: "Ievietot no Worda",
+
+DlgPasteMsg2	: "Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignorēt iepriekš norādītos fontus",
+DlgPasteRemoveStyles	: "Noņemt norādītos stilus",
+
+// Color Picker
+ColorAutomatic	: "Automātiska",
+ColorMoreColors	: "Plašāka palete...",
+
+// Document Properties
+DocProps		: "Dokumenta īpašības",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Iezīmes īpašības",
+DlgAnchorName		: "Iezīmes nosaukums",
+DlgAnchorErrorName	: "Lūdzu norādiet iezīmes nosaukumu",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Netika atrasts vārdnīcā",
+DlgSpellChangeTo		: "Nomainīt uz",
+DlgSpellBtnIgnore		: "Ignorēt",
+DlgSpellBtnIgnoreAll	: "Ignorēt visu",
+DlgSpellBtnReplace		: "Aizvietot",
+DlgSpellBtnReplaceAll	: "Aizvietot visu",
+DlgSpellBtnUndo			: "Atcelt",
+DlgSpellNoSuggestions	: "- Nav ieteikumu -",
+DlgSpellProgress		: "Notiek pareizrakstības pārbaude...",
+DlgSpellNoMispell		: "Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas",
+DlgSpellNoChanges		: "Pareizrakstības pārbaude pabeigta: nekas netika labots",
+DlgSpellOneChange		: "Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts",
+DlgSpellManyChanges		: "Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti",
+
+IeSpellDownload			: "Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?",
+
+// Button Dialog
+DlgButtonText		: "Teksts (vērtība)",
+DlgButtonType		: "Tips",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nosaukums",
+DlgCheckboxValue	: "Vērtība",
+DlgCheckboxSelected	: "Iezīmēts",
+
+// Form Dialog
+DlgFormName		: "Nosaukums",
+DlgFormAction	: "Darbība",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Nosaukums",
+DlgSelectValue		: "Vērtība",
+DlgSelectSize		: "Izmērs",
+DlgSelectLines		: "rindas",
+DlgSelectChkMulti	: "Atļaut vairākus iezīmējumus",
+DlgSelectOpAvail	: "Pieejamās iespējas",
+DlgSelectOpText		: "Teksts",
+DlgSelectOpValue	: "Vērtība",
+DlgSelectBtnAdd		: "Pievienot",
+DlgSelectBtnModify	: "Veikt izmaiņas",
+DlgSelectBtnUp		: "Augšup",
+DlgSelectBtnDown	: "Lejup",
+DlgSelectBtnSetValue : "Noteikt kā iezīmēto vērtību",
+DlgSelectBtnDelete	: "Dzēst",
+
+// Textarea Dialog
+DlgTextareaName	: "Nosaukums",
+DlgTextareaCols	: "Kolonnas",
+DlgTextareaRows	: "Rindas",
+
+// Text Field Dialog
+DlgTextName			: "Nosaukums",
+DlgTextValue		: "Vērtība",
+DlgTextCharWidth	: "Simbolu platums",
+DlgTextMaxChars		: "Simbolu maksimālais daudzums",
+DlgTextType			: "Tips",
+DlgTextTypeText		: "Teksts",
+DlgTextTypePass		: "Parole",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nosaukums",
+DlgHiddenValue	: "Vērtība",
+
+// Bulleted List Dialog
+BulletedListProp	: "Aizzīmju saraksta īpašības",
+NumberedListProp	: "Numerētā saraksta īpašības",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tips",
+DlgLstTypeCircle	: "Aplis",
+DlgLstTypeDisc		: "Disks",
+DlgLstTypeSquare	: "Kvadrāts",
+DlgLstTypeNumbers	: "Skaitļi (1, 2, 3)",
+DlgLstTypeLCase		: "Maziem burtiem (a, b, c)",
+DlgLstTypeUCase		: "Lieliem burtiem (A, B, C)",
+DlgLstTypeSRoman	: "Maziem romiešu cipariem (i, ii, iii)",
+DlgLstTypeLRoman	: "Lieliem romiešu cipariem (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Vispārīga informācija",
+DlgDocBackTab		: "Fons",
+DlgDocColorsTab		: "Krāsas un robežu nobīdes",
+DlgDocMetaTab		: "META dati",
+
+DlgDocPageTitle		: "Dokumenta virsraksts <Title>",
+DlgDocLangDir		: "Valodas lasīšanas virziens",
+DlgDocLangDirLTR	: "No kreisās uz labo (LTR)",
+DlgDocLangDirRTL	: "No labās uz kreiso (RTL)",
+DlgDocLangCode		: "Valodas kods",
+DlgDocCharSet		: "Simbolu kodējums",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Cits simbolu kodējums",
+
+DlgDocDocType		: "Dokumenta tips",
+DlgDocDocTypeOther	: "Cits dokumenta tips",
+DlgDocIncXHTML		: "Ietvert XHTML deklarācijas",
+DlgDocBgColor		: "Fona krāsa",
+DlgDocBgImage		: "Fona attēla hipersaite",
+DlgDocBgNoScroll	: "Fona attēls ir fiksēts",
+DlgDocCText			: "Teksts",
+DlgDocCLink			: "Hipersaite",
+DlgDocCVisited		: "Apmeklēta hipersaite",
+DlgDocCActive		: "Aktīva hipersaite",
+DlgDocMargins		: "Lapas robežas",
+DlgDocMaTop			: "Augšā",
+DlgDocMaLeft		: "Pa kreisi",
+DlgDocMaRight		: "Pa labi",
+DlgDocMaBottom		: "Apakšā",
+DlgDocMeIndex		: "Dokumentu aprakstoši atslēgvārdi (atdalīti ar komatu)",
+DlgDocMeDescr		: "Dokumenta apraksts",
+DlgDocMeAuthor		: "Autors",
+DlgDocMeCopy		: "Autortiesības",
+DlgDocPreview		: "Priekšskats",
+
+// Templates Dialog
+Templates			: "Sagataves",
+DlgTemplatesTitle	: "Satura sagataves",
+DlgTemplatesSelMsg	: "Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):",
+DlgTemplatesLoading	: "Notiek sagatavju saraksta ielāde. Lūdzu, uzgaidiet...",
+DlgTemplatesNoTpl	: "(Nav norādītas sagataves)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Par",
+DlgAboutBrowserInfoTab	: "Informācija par pārlūkprogrammu",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "versija",
+DlgAboutInfo		: "Papildus informācija ir pieejama",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/zh.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Chinese Traditional language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "隱藏面板",
+ToolbarExpand		: "顯示面板",
+
+// Toolbar Items and Context Menu
+Save				: "儲存",
+NewPage				: "開新檔案",
+Preview				: "預覽",
+Cut					: "剪下",
+Copy				: "複製",
+Paste				: "貼上",
+PasteText			: "貼為純文字格式",
+PasteWord			: "自 Word 貼上",
+Print				: "列印",
+SelectAll			: "全選",
+RemoveFormat		: "清除格式",
+InsertLinkLbl		: "超連結",
+InsertLink			: "插入/編輯超連結",
+RemoveLink			: "移除超連結",
+VisitLink			: "開啟超連結",
+Anchor				: "插入/編輯錨點",
+AnchorDelete		: "移除錨點",
+InsertImageLbl		: "影像",
+InsertImage			: "插入/編輯影像",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "插入/編輯 Flash",
+InsertTableLbl		: "表格",
+InsertTable			: "插入/編輯表格",
+InsertLineLbl		: "水平線",
+InsertLine			: "插入水平線",
+InsertSpecialCharLbl: "特殊符號",
+InsertSpecialChar	: "插入特殊符號",
+InsertSmileyLbl		: "表情符號",
+InsertSmiley		: "插入表情符號",
+About				: "關於 FCKeditor",
+Bold				: "粗體",
+Italic				: "斜體",
+Underline			: "底線",
+StrikeThrough		: "刪除線",
+Subscript			: "下標",
+Superscript			: "上標",
+LeftJustify			: "靠左對齊",
+CenterJustify		: "置中",
+RightJustify		: "靠右對齊",
+BlockJustify		: "左右對齊",
+DecreaseIndent		: "減少縮排",
+IncreaseIndent		: "增加縮排",
+Blockquote			: "引用文字",
+CreateDiv			: "新增 Div 標籤",
+EditDiv				: "變更 Div 標籤",
+DeleteDiv			: "移除 Div 標籤",
+Undo				: "復原",
+Redo				: "重複",
+NumberedListLbl		: "編號清單",
+NumberedList		: "插入/移除編號清單",
+BulletedListLbl		: "項目清單",
+BulletedList		: "插入/移除項目清單",
+ShowTableBorders	: "顯示表格邊框",
+ShowDetails			: "顯示詳細資料",
+Style				: "樣式",
+FontFormat			: "格式",
+Font				: "字體",
+FontSize			: "大小",
+TextColor			: "文字顏色",
+BGColor				: "背景顏色",
+Source				: "原始碼",
+Find				: "尋找",
+Replace				: "取代",
+SpellCheck			: "拼字檢查",
+UniversalKeyboard	: "萬國鍵盤",
+PageBreakLbl		: "分頁符號",
+PageBreak			: "插入分頁符號",
+
+Form			: "表單",
+Checkbox		: "核取方塊",
+RadioButton		: "選項按鈕",
+TextField		: "文字方塊",
+Textarea		: "文字區域",
+HiddenField		: "隱藏欄位",
+Button			: "按鈕",
+SelectionField	: "清單/選單",
+ImageButton		: "影像按鈕",
+
+FitWindow		: "編輯器最大化",
+ShowBlocks		: "顯示區塊",
+
+// Context Menu
+EditLink			: "編輯超連結",
+CellCM				: "儲存格",
+RowCM				: "列",
+ColumnCM			: "欄",
+InsertRowAfter		: "向下插入列",
+InsertRowBefore		: "向上插入列",
+DeleteRows			: "刪除列",
+InsertColumnAfter	: "向右插入欄",
+InsertColumnBefore	: "向左插入欄",
+DeleteColumns		: "刪除欄",
+InsertCellAfter		: "向右插入儲存格",
+InsertCellBefore	: "向左插入儲存格",
+DeleteCells			: "刪除儲存格",
+MergeCells			: "合併儲存格",
+MergeRight			: "向右合併儲存格",
+MergeDown			: "向下合併儲存格",
+HorizontalSplitCell	: "橫向分割儲存格",
+VerticalSplitCell	: "縱向分割儲存格",
+TableDelete			: "刪除表格",
+CellProperties		: "儲存格屬性",
+TableProperties		: "表格屬性",
+ImageProperties		: "影像屬性",
+FlashProperties		: "Flash 屬性",
+
+AnchorProp			: "錨點屬性",
+ButtonProp			: "按鈕屬性",
+CheckboxProp		: "核取方塊屬性",
+HiddenFieldProp		: "隱藏欄位屬性",
+RadioButtonProp		: "選項按鈕屬性",
+ImageButtonProp		: "影像按鈕屬性",
+TextFieldProp		: "文字方塊屬性",
+SelectionFieldProp	: "清單/選單屬性",
+TextareaProp		: "文字區域屬性",
+FormProp			: "表單屬性",
+
+FontFormats			: "一般;已格式化;位址;標題 1;標題 2;標題 3;標題 4;標題 5;標題 6;一般 (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "處理 XHTML 中，請稍候…",
+Done				: "完成",
+PasteWordConfirm	: "您想貼上的文字似乎是自 Word 複製而來，請問您是否要先清除 Word 的格式後再行貼上？",
+NotCompatiblePaste	: "此指令僅在 Internet Explorer 5.5 或以上的版本有效。請問您是否同意不清除格式即貼上？",
+UnknownToolbarItem	: "未知工具列項目 \"%1\"",
+UnknownCommand		: "未知指令名稱 \"%1\"",
+NotImplemented		: "尚未安裝此指令",
+UnknownToolbarSet	: "工具列設定 \"%1\" 不存在",
+NoActiveX			: "瀏覽器的安全性設定限制了本編輯器的某些功能。您必須啟用安全性設定中的「執行ActiveX控制項與外掛程式」項目，否則本編輯器將會出現錯誤並缺少某些功能",
+BrowseServerBlocked : "無法開啟資源瀏覽器，請確定所有快顯視窗封鎖程式是否關閉",
+DialogBlocked		: "無法開啟對話視窗，請確定所有快顯視窗封鎖程式是否關閉",
+VisitLinkBlocked	: "無法開啟新視窗，請確定所有快顯視窗封鎖程式是否關閉",
+
+// Dialogs
+DlgBtnOK			: "確定",
+DlgBtnCancel		: "取消",
+DlgBtnClose			: "關閉",
+DlgBtnBrowseServer	: "瀏覽伺服器端",
+DlgAdvancedTag		: "進階",
+DlgOpOther			: "<其他>",
+DlgInfoTab			: "資訊",
+DlgAlertUrl			: "請插入 URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<尚未設定>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "語言方向",
+DlgGenLangDirLtr	: "由左而右 (LTR)",
+DlgGenLangDirRtl	: "由右而左 (RTL)",
+DlgGenLangCode		: "語言代碼",
+DlgGenAccessKey		: "存取鍵",
+DlgGenName			: "名稱",
+DlgGenTabIndex		: "定位順序",
+DlgGenLongDescr		: "詳細 URL",
+DlgGenClass			: "樣式表類別",
+DlgGenTitle			: "標題",
+DlgGenContType		: "內容類型",
+DlgGenLinkCharset	: "連結資源之編碼",
+DlgGenStyle			: "樣式",
+
+// Image Dialog
+DlgImgTitle			: "影像屬性",
+DlgImgInfoTab		: "影像資訊",
+DlgImgBtnUpload		: "上傳至伺服器",
+DlgImgURL			: "URL",
+DlgImgUpload		: "上傳",
+DlgImgAlt			: "替代文字",
+DlgImgWidth			: "寬度",
+DlgImgHeight		: "高度",
+DlgImgLockRatio		: "等比例",
+DlgBtnResetSize		: "重設為原大小",
+DlgImgBorder		: "邊框",
+DlgImgHSpace		: "水平距離",
+DlgImgVSpace		: "垂直距離",
+DlgImgAlign			: "對齊",
+DlgImgAlignLeft		: "靠左對齊",
+DlgImgAlignAbsBottom: "絕對下方",
+DlgImgAlignAbsMiddle: "絕對中間",
+DlgImgAlignBaseline	: "基準線",
+DlgImgAlignBottom	: "靠下對齊",
+DlgImgAlignMiddle	: "置中對齊",
+DlgImgAlignRight	: "靠右對齊",
+DlgImgAlignTextTop	: "文字上方",
+DlgImgAlignTop		: "靠上對齊",
+DlgImgPreview		: "預覽",
+DlgImgAlertUrl		: "請輸入影像 URL",
+DlgImgLinkTab		: "超連結",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash 屬性",
+DlgFlashChkPlay		: "自動播放",
+DlgFlashChkLoop		: "重複",
+DlgFlashChkMenu		: "開啟選單",
+DlgFlashScale		: "縮放",
+DlgFlashScaleAll	: "全部顯示",
+DlgFlashScaleNoBorder	: "無邊框",
+DlgFlashScaleFit	: "精確符合",
+
+// Link Dialog
+DlgLnkWindowTitle	: "超連結",
+DlgLnkInfoTab		: "超連結資訊",
+DlgLnkTargetTab		: "目標",
+
+DlgLnkType			: "超連接類型",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "本頁錨點",
+DlgLnkTypeEMail		: "電子郵件",
+DlgLnkProto			: "通訊協定",
+DlgLnkProtoOther	: "<其他>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "請選擇錨點",
+DlgLnkAnchorByName	: "依錨點名稱",
+DlgLnkAnchorById	: "依元件 ID",
+DlgLnkNoAnchors		: "(本文件尚無可用之錨點)",
+DlgLnkEMail			: "電子郵件",
+DlgLnkEMailSubject	: "郵件主旨",
+DlgLnkEMailBody		: "郵件內容",
+DlgLnkUpload		: "上傳",
+DlgLnkBtnUpload		: "傳送至伺服器",
+
+DlgLnkTarget		: "目標",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<快顯視窗>",
+DlgLnkTargetBlank	: "新視窗 (_blank)",
+DlgLnkTargetParent	: "父視窗 (_parent)",
+DlgLnkTargetSelf	: "本視窗 (_self)",
+DlgLnkTargetTop		: "最上層視窗 (_top)",
+DlgLnkTargetFrameName	: "目標框架名稱",
+DlgLnkPopWinName	: "快顯視窗名稱",
+DlgLnkPopWinFeat	: "快顯視窗屬性",
+DlgLnkPopResize		: "可調整大小",
+DlgLnkPopLocation	: "網址列",
+DlgLnkPopMenu		: "選單列",
+DlgLnkPopScroll		: "捲軸",
+DlgLnkPopStatus		: "狀態列",
+DlgLnkPopToolbar	: "工具列",
+DlgLnkPopFullScrn	: "全螢幕 (IE)",
+DlgLnkPopDependent	: "從屬 (NS)",
+DlgLnkPopWidth		: "寬",
+DlgLnkPopHeight		: "高",
+DlgLnkPopLeft		: "左",
+DlgLnkPopTop		: "右",
+
+DlnLnkMsgNoUrl		: "請輸入欲連結的 URL",
+DlnLnkMsgNoEMail	: "請輸入電子郵件位址",
+DlnLnkMsgNoAnchor	: "請選擇錨點",
+DlnLnkMsgInvPopName	: "快顯名稱必須以「英文字母」為開頭，且不得含有空白",
+
+// Color Dialog
+DlgColorTitle		: "請選擇顏色",
+DlgColorBtnClear	: "清除",
+DlgColorHighlight	: "預覽",
+DlgColorSelected	: "選擇",
+
+// Smiley Dialog
+DlgSmileyTitle		: "插入表情符號",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "請選擇特殊符號",
+
+// Table Dialog
+DlgTableTitle		: "表格屬性",
+DlgTableRows		: "列數",
+DlgTableColumns		: "欄數",
+DlgTableBorder		: "邊框",
+DlgTableAlign		: "對齊",
+DlgTableAlignNotSet	: "<未設定>",
+DlgTableAlignLeft	: "靠左對齊",
+DlgTableAlignCenter	: "置中",
+DlgTableAlignRight	: "靠右對齊",
+DlgTableWidth		: "寬度",
+DlgTableWidthPx		: "像素",
+DlgTableWidthPc		: "百分比",
+DlgTableHeight		: "高度",
+DlgTableCellSpace	: "間距",
+DlgTableCellPad		: "內距",
+DlgTableCaption		: "標題",
+DlgTableSummary		: "摘要",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "儲存格屬性",
+DlgCellWidth		: "寬度",
+DlgCellWidthPx		: "像素",
+DlgCellWidthPc		: "百分比",
+DlgCellHeight		: "高度",
+DlgCellWordWrap		: "自動換行",
+DlgCellWordWrapNotSet	: "<尚未設定>",
+DlgCellWordWrapYes	: "是",
+DlgCellWordWrapNo	: "否",
+DlgCellHorAlign		: "水平對齊",
+DlgCellHorAlignNotSet	: "<尚未設定>",
+DlgCellHorAlignLeft	: "靠左對齊",
+DlgCellHorAlignCenter	: "置中",
+DlgCellHorAlignRight: "靠右對齊",
+DlgCellVerAlign		: "垂直對齊",
+DlgCellVerAlignNotSet	: "<尚未設定>",
+DlgCellVerAlignTop	: "靠上對齊",
+DlgCellVerAlignMiddle	: "置中",
+DlgCellVerAlignBottom	: "靠下對齊",
+DlgCellVerAlignBaseline	: "基準線",
+DlgCellType		: "儲存格類型",
+DlgCellTypeData		: "資料",
+DlgCellTypeHeader	: "標題",
+DlgCellRowSpan		: "合併列數",
+DlgCellCollSpan		: "合併欄数",
+DlgCellBackColor	: "背景顏色",
+DlgCellBorderColor	: "邊框顏色",
+DlgCellBtnSelect	: "請選擇…",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "尋找與取代",
+
+// Find Dialog
+DlgFindTitle		: "尋找",
+DlgFindFindBtn		: "尋找",
+DlgFindNotFoundMsg	: "未找到指定的文字。",
+
+// Replace Dialog
+DlgReplaceTitle			: "取代",
+DlgReplaceFindLbl		: "尋找:",
+DlgReplaceReplaceLbl	: "取代:",
+DlgReplaceCaseChk		: "大小寫須相符",
+DlgReplaceReplaceBtn	: "取代",
+DlgReplaceReplAllBtn	: "全部取代",
+DlgReplaceWordChk		: "全字相符",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。",
+PasteErrorCopy	: "瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。",
+
+PasteAsText		: "貼為純文字格式",
+PasteFromWord	: "自 Word 貼上",
+
+DlgPasteMsg2	: "請使用快捷鍵 (<strong>Ctrl+V</strong>) 貼到下方區域中並按下 <strong>確定</strong>",
+DlgPasteSec		: "因為瀏覽器的安全性設定，本編輯器無法直接存取您的剪貼簿資料，請您自行在本視窗進行貼上動作。",
+DlgPasteIgnoreFont		: "移除字型設定",
+DlgPasteRemoveStyles	: "移除樣式設定",
+
+// Color Picker
+ColorAutomatic	: "自動",
+ColorMoreColors	: "更多顏色…",
+
+// Document Properties
+DocProps		: "文件屬性",
+
+// Anchor Dialog
+DlgAnchorTitle		: "命名錨點",
+DlgAnchorName		: "錨點名稱",
+DlgAnchorErrorName	: "請輸入錨點名稱",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "不在字典中",
+DlgSpellChangeTo		: "更改為",
+DlgSpellBtnIgnore		: "忽略",
+DlgSpellBtnIgnoreAll	: "全部忽略",
+DlgSpellBtnReplace		: "取代",
+DlgSpellBtnReplaceAll	: "全部取代",
+DlgSpellBtnUndo			: "復原",
+DlgSpellNoSuggestions	: "- 無建議值 -",
+DlgSpellProgress		: "進行拼字檢查中…",
+DlgSpellNoMispell		: "拼字檢查完成：未發現拼字錯誤",
+DlgSpellNoChanges		: "拼字檢查完成：未更改任何單字",
+DlgSpellOneChange		: "拼字檢查完成：更改了 1 個單字",
+DlgSpellManyChanges		: "拼字檢查完成：更改了 %1 個單字",
+
+IeSpellDownload			: "尚未安裝拼字檢查元件。您是否想要現在下載？",
+
+// Button Dialog
+DlgButtonText		: "顯示文字 (值)",
+DlgButtonType		: "類型",
+DlgButtonTypeBtn	: "按鈕 (Button)",
+DlgButtonTypeSbm	: "送出 (Submit)",
+DlgButtonTypeRst	: "重設 (Reset)",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名稱",
+DlgCheckboxValue	: "選取值",
+DlgCheckboxSelected	: "已選取",
+
+// Form Dialog
+DlgFormName		: "名稱",
+DlgFormAction	: "動作",
+DlgFormMethod	: "方法",
+
+// Select Field Dialog
+DlgSelectName		: "名稱",
+DlgSelectValue		: "選取值",
+DlgSelectSize		: "大小",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "可多選",
+DlgSelectOpAvail	: "可用選項",
+DlgSelectOpText		: "顯示文字",
+DlgSelectOpValue	: "值",
+DlgSelectBtnAdd		: "新增",
+DlgSelectBtnModify	: "修改",
+DlgSelectBtnUp		: "上移",
+DlgSelectBtnDown	: "下移",
+DlgSelectBtnSetValue : "設為預設值",
+DlgSelectBtnDelete	: "刪除",
+
+// Textarea Dialog
+DlgTextareaName	: "名稱",
+DlgTextareaCols	: "字元寬度",
+DlgTextareaRows	: "列數",
+
+// Text Field Dialog
+DlgTextName			: "名稱",
+DlgTextValue		: "值",
+DlgTextCharWidth	: "字元寬度",
+DlgTextMaxChars		: "最多字元數",
+DlgTextType			: "類型",
+DlgTextTypeText		: "文字",
+DlgTextTypePass		: "密碼",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名稱",
+DlgHiddenValue	: "值",
+
+// Bulleted List Dialog
+BulletedListProp	: "項目清單屬性",
+NumberedListProp	: "編號清單屬性",
+DlgLstStart			: "起始編號",
+DlgLstType			: "清單類型",
+DlgLstTypeCircle	: "圓圈",
+DlgLstTypeDisc		: "圓點",
+DlgLstTypeSquare	: "方塊",
+DlgLstTypeNumbers	: "數字 (1, 2, 3)",
+DlgLstTypeLCase		: "小寫字母 (a, b, c)",
+DlgLstTypeUCase		: "大寫字母 (A, B, C)",
+DlgLstTypeSRoman	: "小寫羅馬數字 (i, ii, iii)",
+DlgLstTypeLRoman	: "大寫羅馬數字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "一般",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "顯色與邊界",
+DlgDocMetaTab		: "Meta 資料",
+
+DlgDocPageTitle		: "頁面標題",
+DlgDocLangDir		: "語言方向",
+DlgDocLangDirLTR	: "由左而右 (LTR)",
+DlgDocLangDirRTL	: "由右而左 (RTL)",
+DlgDocLangCode		: "語言代碼",
+DlgDocCharSet		: "字元編碼",
+DlgDocCharSetCE		: "中歐語系",
+DlgDocCharSetCT		: "正體中文 (Big5)",
+DlgDocCharSetCR		: "斯拉夫文",
+DlgDocCharSetGR		: "希臘文",
+DlgDocCharSetJP		: "日文",
+DlgDocCharSetKR		: "韓文",
+DlgDocCharSetTR		: "土耳其文",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "西歐語系",
+DlgDocCharSetOther	: "其他字元編碼",
+
+DlgDocDocType		: "文件類型",
+DlgDocDocTypeOther	: "其他文件類型",
+DlgDocIncXHTML		: "包含 XHTML 定義",
+DlgDocBgColor		: "背景顏色",
+DlgDocBgImage		: "背景影像",
+DlgDocBgNoScroll	: "浮水印",
+DlgDocCText			: "文字",
+DlgDocCLink			: "超連結",
+DlgDocCVisited		: "已瀏覽過的超連結",
+DlgDocCActive		: "作用中的超連結",
+DlgDocMargins		: "頁面邊界",
+DlgDocMaTop			: "上",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下",
+DlgDocMeIndex		: "文件索引關鍵字 (用半形逗號[,]分隔)",
+DlgDocMeDescr		: "文件說明",
+DlgDocMeAuthor		: "作者",
+DlgDocMeCopy		: "版權所有",
+DlgDocPreview		: "預覽",
+
+// Templates Dialog
+Templates			: "樣版",
+DlgTemplatesTitle	: "內容樣版",
+DlgTemplatesSelMsg	: "請選擇欲開啟的樣版<br> (原有的內容將會被清除):",
+DlgTemplatesLoading	: "讀取樣版清單中，請稍候…",
+DlgTemplatesNoTpl	: "(無樣版)",
+DlgTemplatesReplace	: "取代原有內容",
+
+// About Dialog
+DlgAboutAboutTab	: "關於",
+DlgAboutBrowserInfoTab	: "瀏覽器資訊",
+DlgAboutLicenseTab	: "許可證",
+DlgAboutVersion		: "版本",
+DlgAboutInfo		: "想獲得更多資訊請至 ",
+
+// Div Dialog
+DlgDivGeneralTab	: "一般",
+DlgDivAdvancedTab	: "進階",
+DlgDivStyle		: "樣式",
+DlgDivInlineStyle	: "CSS 樣式",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ca.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ca.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ca.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Catalan language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Redueix la barra d'eines",
+ToolbarExpand		: "Amplia la barra d'eines",
+
+// Toolbar Items and Context Menu
+Save				: "Desa",
+NewPage				: "Nova Pàgina",
+Preview				: "Visualització prèvia",
+Cut					: "Retalla",
+Copy				: "Copia",
+Paste				: "Enganxa",
+PasteText			: "Enganxa com a text no formatat",
+PasteWord			: "Enganxa des del Word",
+Print				: "Imprimeix",
+SelectAll			: "Selecciona-ho tot",
+RemoveFormat		: "Elimina Format",
+InsertLinkLbl		: "Enllaç",
+InsertLink			: "Insereix/Edita enllaç",
+RemoveLink			: "Elimina l'enllaç",
+VisitLink			: "Obre l'enllaç",
+Anchor				: "Insereix/Edita àncora",
+AnchorDelete		: "Elimina àncora",
+InsertImageLbl		: "Imatge",
+InsertImage			: "Insereix/Edita imatge",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insereix/Edita Flash",
+InsertTableLbl		: "Taula",
+InsertTable			: "Insereix/Edita taula",
+InsertLineLbl		: "Línia",
+InsertLine			: "Insereix línia horitzontal",
+InsertSpecialCharLbl: "Caràcter Especial",
+InsertSpecialChar	: "Insereix caràcter especial",
+InsertSmileyLbl		: "Icona",
+InsertSmiley		: "Insereix icona",
+About				: "Quant a l'FCKeditor",
+Bold				: "Negreta",
+Italic				: "Cursiva",
+Underline			: "Subratllat",
+StrikeThrough		: "Barrat",
+Subscript			: "Subíndex",
+Superscript			: "Superíndex",
+LeftJustify			: "Alinia a l'esquerra",
+CenterJustify		: "Centrat",
+RightJustify		: "Alinia a la dreta",
+BlockJustify		: "Justificat",
+DecreaseIndent		: "Redueix el sagnat",
+IncreaseIndent		: "Augmenta el sagnat",
+Blockquote			: "Bloc de cita",
+CreateDiv			: "Crea un contenidor Div",
+EditDiv				: "Edita el contenidor Div",
+DeleteDiv			: "Elimina el contenidor Div",
+Undo				: "Desfés",
+Redo				: "Refés",
+NumberedListLbl		: "Llista numerada",
+NumberedList		: "Numeració activada/desactivada",
+BulletedListLbl		: "Llista de pics",
+BulletedList		: "Pics activats/descativats",
+ShowTableBorders	: "Mostra les vores de les taules",
+ShowDetails			: "Mostra detalls",
+Style				: "Estil",
+FontFormat			: "Format",
+Font				: "Tipus de lletra",
+FontSize			: "Mida",
+TextColor			: "Color de Text",
+BGColor				: "Color de Fons",
+Source				: "Codi font",
+Find				: "Cerca",
+Replace				: "Reemplaça",
+SpellCheck			: "Revisa l'ortografia",
+UniversalKeyboard	: "Teclat universal",
+PageBreakLbl		: "Salt de pàgina",
+PageBreak			: "Insereix salt de pàgina",
+
+Form			: "Formulari",
+Checkbox		: "Casella de verificació",
+RadioButton		: "Botó d'opció",
+TextField		: "Camp de text",
+Textarea		: "Àrea de text",
+HiddenField		: "Camp ocult",
+Button			: "Botó",
+SelectionField	: "Camp de selecció",
+ImageButton		: "Botó d'imatge",
+
+FitWindow		: "Maximiza la mida de l'editor",
+ShowBlocks		: "Mostra els blocs",
+
+// Context Menu
+EditLink			: "Edita l'enllaç",
+CellCM				: "Cel·la",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRowAfter		: "Insereix fila darrera",
+InsertRowBefore		: "Insereix fila abans de",
+DeleteRows			: "Suprimeix una fila",
+InsertColumnAfter	: "Insereix columna darrera",
+InsertColumnBefore	: "Insereix columna abans de",
+DeleteColumns		: "Suprimeix una columna",
+InsertCellAfter		: "Insereix cel·la darrera",
+InsertCellBefore	: "Insereix cel·la abans de",
+DeleteCells			: "Suprimeix les cel·les",
+MergeCells			: "Fusiona les cel·les",
+MergeRight			: "Fusiona cap a la dreta",
+MergeDown			: "Fusiona cap avall",
+HorizontalSplitCell	: "Divideix la cel·la horitzontalment",
+VerticalSplitCell	: "Divideix la cel·la verticalment",
+TableDelete			: "Suprimeix la taula",
+CellProperties		: "Propietats de la cel·la",
+TableProperties		: "Propietats de la taula",
+ImageProperties		: "Propietats de la imatge",
+FlashProperties		: "Propietats del Flash",
+
+AnchorProp			: "Propietats de l'àncora",
+ButtonProp			: "Propietats del botó",
+CheckboxProp		: "Propietats de la casella de verificació",
+HiddenFieldProp		: "Propietats del camp ocult",
+RadioButtonProp		: "Propietats del botó d'opció",
+ImageButtonProp		: "Propietats del botó d'imatge",
+TextFieldProp		: "Propietats del camp de text",
+SelectionFieldProp	: "Propietats del camp de selecció",
+TextareaProp		: "Propietats de l'àrea de text",
+FormProp			: "Propietats del formulari",
+
+FontFormats			: "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processant XHTML. Si us plau esperi...",
+Done				: "Fet",
+PasteWordConfirm	: "El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?",
+NotCompatiblePaste	: "Aquesta funció és disponible per a Internet Explorer versió 5.5 o superior. Voleu enganxar sense netejar?",
+UnknownToolbarItem	: "Element de la barra d'eines desconegut \"%1\"",
+UnknownCommand		: "Nom de comanda desconegut \"%1\"",
+NotImplemented		: "Mètode no implementat",
+UnknownToolbarSet	: "Conjunt de barra d'eines \"%1\" inexistent",
+NoActiveX			: "Les preferències del navegador poden limitar algunes funcions d'aquest editor. Cal habilitar l'opció \"Executa controls ActiveX i plug-ins\". Poden sorgir errors i poden faltar algunes funcions.",
+BrowseServerBlocked : "El visualitzador de recursos no s'ha pogut obrir. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
+DialogBlocked		: "No ha estat possible obrir una finestra de diàleg. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
+VisitLinkBlocked	: "No ha estat possible obrir una nova finestra. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
+
+// Dialogs
+DlgBtnOK			: "D'acord",
+DlgBtnCancel		: "Cancel·la",
+DlgBtnClose			: "Tanca",
+DlgBtnBrowseServer	: "Veure servidor",
+DlgAdvancedTag		: "Avançat",
+DlgOpOther			: "Altres",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Si us plau, afegiu la URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<no definit>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Direcció de l'idioma",
+DlgGenLangDirLtr	: "D'esquerra a dreta (LTR)",
+DlgGenLangDirRtl	: "De dreta a esquerra (RTL)",
+DlgGenLangCode		: "Codi d'idioma",
+DlgGenAccessKey		: "Clau d'accés",
+DlgGenName			: "Nom",
+DlgGenTabIndex		: "Index de Tab",
+DlgGenLongDescr		: "Descripció llarga de la URL",
+DlgGenClass			: "Classes del full d'estil",
+DlgGenTitle			: "Títol consultiu",
+DlgGenContType		: "Tipus de contingut consultiu",
+DlgGenLinkCharset	: "Conjunt de caràcters font enllaçat",
+DlgGenStyle			: "Estil",
+
+// Image Dialog
+DlgImgTitle			: "Propietats de la imatge",
+DlgImgInfoTab		: "Informació de la imatge",
+DlgImgBtnUpload		: "Envia-la al servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Puja",
+DlgImgAlt			: "Text alternatiu",
+DlgImgWidth			: "Amplada",
+DlgImgHeight		: "Alçada",
+DlgImgLockRatio		: "Bloqueja les proporcions",
+DlgBtnResetSize		: "Restaura la mida",
+DlgImgBorder		: "Vora",
+DlgImgHSpace		: "Espaiat horit.",
+DlgImgVSpace		: "Espaiat vert.",
+DlgImgAlign			: "Alineació",
+DlgImgAlignLeft		: "Ajusta a l'esquerra",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Ajusta a la dreta",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Vista prèvia",
+DlgImgAlertUrl		: "Si us plau, escriviu la URL de la imatge",
+DlgImgLinkTab		: "Enllaç",
+
+// Flash Dialog
+DlgFlashTitle		: "Propietats del Flash",
+DlgFlashChkPlay		: "Reprodució automàtica",
+DlgFlashChkLoop		: "Bucle",
+DlgFlashChkMenu		: "Habilita menú Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostra-ho tot",
+DlgFlashScaleNoBorder	: "Sense vores",
+DlgFlashScaleFit	: "Mida exacta",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Enllaç",
+DlgLnkInfoTab		: "Informació de l'enllaç",
+DlgLnkTargetTab		: "Destí",
+
+DlgLnkType			: "Tipus d'enllaç",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Àncora en aquesta pàgina",
+DlgLnkTypeEMail		: "Correu electrònic",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<altra>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Selecciona una àncora",
+DlgLnkAnchorByName	: "Per nom d'àncora",
+DlgLnkAnchorById	: "Per Id d'element",
+DlgLnkNoAnchors		: "(No hi ha àncores disponibles en aquest document)",
+DlgLnkEMail			: "Adreça de correu electrònic",
+DlgLnkEMailSubject	: "Assumpte del missatge",
+DlgLnkEMailBody		: "Cos del missatge",
+DlgLnkUpload		: "Puja",
+DlgLnkBtnUpload		: "Envia al servidor",
+
+DlgLnkTarget		: "Destí",
+DlgLnkTargetFrame	: "<marc>",
+DlgLnkTargetPopup	: "<finestra emergent>",
+DlgLnkTargetBlank	: "Nova finestra (_blank)",
+DlgLnkTargetParent	: "Finestra pare (_parent)",
+DlgLnkTargetSelf	: "Mateixa finestra (_self)",
+DlgLnkTargetTop		: "Finestra Major (_top)",
+DlgLnkTargetFrameName	: "Nom del marc de destí",
+DlgLnkPopWinName	: "Nom finestra popup",
+DlgLnkPopWinFeat	: "Característiques finestra popup",
+DlgLnkPopResize		: "Redimensionable",
+DlgLnkPopLocation	: "Barra d'adreça",
+DlgLnkPopMenu		: "Barra de menú",
+DlgLnkPopScroll		: "Barres d'scroll",
+DlgLnkPopStatus		: "Barra d'estat",
+DlgLnkPopToolbar	: "Barra d'eines",
+DlgLnkPopFullScrn	: "Pantalla completa (IE)",
+DlgLnkPopDependent	: "Depenent (Netscape)",
+DlgLnkPopWidth		: "Amplada",
+DlgLnkPopHeight		: "Alçada",
+DlgLnkPopLeft		: "Posició esquerra",
+DlgLnkPopTop		: "Posició dalt",
+
+DlnLnkMsgNoUrl		: "Si us plau, escrigui l'enllaç URL",
+DlnLnkMsgNoEMail	: "Si us plau, escrigui l'adreça correu electrònic",
+DlnLnkMsgNoAnchor	: "Si us plau, escrigui l'àncora",
+DlnLnkMsgInvPopName	: "El nom de la finestra emergent ha de començar amb una lletra i no pot tenir espais",
+
+// Color Dialog
+DlgColorTitle		: "Selecciona el color",
+DlgColorBtnClear	: "Neteja",
+DlgColorHighlight	: "Realça",
+DlgColorSelected	: "Selecciona",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insereix una icona",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Selecciona el caràcter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propietats de la taula",
+DlgTableRows		: "Files",
+DlgTableColumns		: "Columnes",
+DlgTableBorder		: "Mida vora",
+DlgTableAlign		: "Alineació",
+DlgTableAlignNotSet	: "<No Definit>",
+DlgTableAlignLeft	: "Esquerra",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Dreta",
+DlgTableWidth		: "Amplada",
+DlgTableWidthPx		: "píxels",
+DlgTableWidthPc		: "percentatge",
+DlgTableHeight		: "Alçada",
+DlgTableCellSpace	: "Espaiat de cel·les",
+DlgTableCellPad		: "Encoixinament de cel·les",
+DlgTableCaption		: "Títol",
+DlgTableSummary		: "Resum",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Propietats de la cel·la",
+DlgCellWidth		: "Amplada",
+DlgCellWidthPx		: "píxels",
+DlgCellWidthPc		: "percentatge",
+DlgCellHeight		: "Alçada",
+DlgCellWordWrap		: "Ajust de paraula",
+DlgCellWordWrapNotSet	: "<No Definit>",
+DlgCellWordWrapYes	: "Si",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Alineació horitzontal",
+DlgCellHorAlignNotSet	: "<No Definit>",
+DlgCellHorAlignLeft	: "Esquerra",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Dreta",
+DlgCellVerAlign		: "Alineació vertical",
+DlgCellVerAlignNotSet	: "<No definit>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Color de fons",
+DlgCellBorderColor	: "Color de la vora",
+DlgCellBtnSelect	: "Seleccioneu...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Cerca i reemplaça",
+
+// Find Dialog
+DlgFindTitle		: "Cerca",
+DlgFindFindBtn		: "Cerca",
+DlgFindNotFoundMsg	: "El text especificat no s'ha trobat.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Reemplaça",
+DlgReplaceFindLbl		: "Cerca:",
+DlgReplaceReplaceLbl	: "Remplaça amb:",
+DlgReplaceCaseChk		: "Distingeix majúscules/minúscules",
+DlgReplaceReplaceBtn	: "Reemplaça",
+DlgReplaceReplAllBtn	: "Reemplaça-ho tot",
+DlgReplaceWordChk		: "Només paraules completes",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).",
+PasteErrorCopy	: "La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
+
+PasteAsText		: "Enganxa com a text no formatat",
+PasteFromWord	: "Enganxa com a Word",
+
+DlgPasteMsg2	: "Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.",
+DlgPasteSec		: "A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.",
+DlgPasteIgnoreFont		: "Ignora definicions de font",
+DlgPasteRemoveStyles	: "Elimina definicions d'estil",
+
+// Color Picker
+ColorAutomatic	: "Automàtic",
+ColorMoreColors	: "Més colors...",
+
+// Document Properties
+DocProps		: "Propietats del document",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propietats de l'àncora",
+DlgAnchorName		: "Nom de l'àncora",
+DlgAnchorErrorName	: "Si us plau, escriviu el nom de l'ancora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "No és al diccionari",
+DlgSpellChangeTo		: "Reemplaça amb",
+DlgSpellBtnIgnore		: "Ignora",
+DlgSpellBtnIgnoreAll	: "Ignora-les totes",
+DlgSpellBtnReplace		: "Canvia",
+DlgSpellBtnReplaceAll	: "Canvia-les totes",
+DlgSpellBtnUndo			: "Desfés",
+DlgSpellNoSuggestions	: "Cap suggeriment",
+DlgSpellProgress		: "Verificació ortogràfica en curs...",
+DlgSpellNoMispell		: "Verificació ortogràfica acabada: no hi ha cap paraula mal escrita",
+DlgSpellNoChanges		: "Verificació ortogràfica: no s'ha canviat cap paraula",
+DlgSpellOneChange		: "Verificació ortogràfica: s'ha canviat una paraula",
+DlgSpellManyChanges		: "Verificació ortogràfica: s'han canviat %1 paraules",
+
+IeSpellDownload			: "Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
+
+// Button Dialog
+DlgButtonText		: "Text (Valor)",
+DlgButtonType		: "Tipus",
+DlgButtonTypeBtn	: "Botó",
+DlgButtonTypeSbm	: "Transmet formulari",
+DlgButtonTypeRst	: "Reinicia formulari",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nom",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionat",
+
+// Form Dialog
+DlgFormName		: "Nom",
+DlgFormAction	: "Acció",
+DlgFormMethod	: "Mètode",
+
+// Select Field Dialog
+DlgSelectName		: "Nom",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Mida",
+DlgSelectLines		: "Línies",
+DlgSelectChkMulti	: "Permet múltiples seleccions",
+DlgSelectOpAvail	: "Opcions disponibles",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Afegeix",
+DlgSelectBtnModify	: "Modifica",
+DlgSelectBtnUp		: "Amunt",
+DlgSelectBtnDown	: "Avall",
+DlgSelectBtnSetValue : "Selecciona per defecte",
+DlgSelectBtnDelete	: "Elimina",
+
+// Textarea Dialog
+DlgTextareaName	: "Nom",
+DlgTextareaCols	: "Columnes",
+DlgTextareaRows	: "Files",
+
+// Text Field Dialog
+DlgTextName			: "Nom",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Amplada",
+DlgTextMaxChars		: "Nombre màxim de caràcters",
+DlgTextType			: "Tipus",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Contrasenya",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nom",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propietats de la llista de pics",
+NumberedListProp	: "Propietats de llista numerada",
+DlgLstStart			: "Inici",
+DlgLstType			: "Tipus",
+DlgLstTypeCircle	: "Cercle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Quadrat",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Lletres minúscules (a, b, c)",
+DlgLstTypeUCase		: "Lletres majúscules (A, B, C)",
+DlgLstTypeSRoman	: "Números romans en minúscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Números romans en majúscules (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Fons",
+DlgDocColorsTab		: "Colors i marges",
+DlgDocMetaTab		: "Metadades",
+
+DlgDocPageTitle		: "Títol de la pàgina",
+DlgDocLangDir		: "Direcció idioma",
+DlgDocLangDirLTR	: "Esquerra a dreta (LTR)",
+DlgDocLangDirRTL	: "Dreta a esquerra (RTL)",
+DlgDocLangCode		: "Codi d'idioma",
+DlgDocCharSet		: "Codificació de conjunt de caràcters",
+DlgDocCharSetCE		: "Centreeuropeu",
+DlgDocCharSetCT		: "Xinès tradicional (Big5)",
+DlgDocCharSetCR		: "Ciríl·lic",
+DlgDocCharSetGR		: "Grec",
+DlgDocCharSetJP		: "Japonès",
+DlgDocCharSetKR		: "Coreà",
+DlgDocCharSetTR		: "Turc",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Europeu occidental",
+DlgDocCharSetOther	: "Una altra codificació de caràcters",
+
+DlgDocDocType		: "Capçalera de tipus de document",
+DlgDocDocTypeOther	: "Un altra capçalera de tipus de document",
+DlgDocIncXHTML		: "Incloure declaracions XHTML",
+DlgDocBgColor		: "Color de fons",
+DlgDocBgImage		: "URL de la imatge de fons",
+DlgDocBgNoScroll	: "Fons fixe",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Enllaç",
+DlgDocCVisited		: "Enllaç visitat",
+DlgDocCActive		: "Enllaç actiu",
+DlgDocMargins		: "Marges de pàgina",
+DlgDocMaTop			: "Cap",
+DlgDocMaLeft		: "Esquerra",
+DlgDocMaRight		: "Dreta",
+DlgDocMaBottom		: "Peu",
+DlgDocMeIndex		: "Mots clau per a indexació (separats per coma)",
+DlgDocMeDescr		: "Descripció del document",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vista prèvia",
+
+// Templates Dialog
+Templates			: "Plantilles",
+DlgTemplatesTitle	: "Contingut plantilles",
+DlgTemplatesSelMsg	: "Si us plau, seleccioneu la plantilla per obrir a l'editor<br>(el contingut actual no serà enregistrat):",
+DlgTemplatesLoading	: "Carregant la llista de plantilles. Si us plau, espereu...",
+DlgTemplatesNoTpl	: "(No hi ha plantilles definides)",
+DlgTemplatesReplace	: "Reemplaça el contingut actual",
+
+// About Dialog
+DlgAboutAboutTab	: "Quant a",
+DlgAboutBrowserInfoTab	: "Informació del navegador",
+DlgAboutLicenseTab	: "Llicència",
+DlgAboutVersion		: "versió",
+DlgAboutInfo		: "Per a més informació aneu a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Avançat",
+DlgDivStyle		: "Estil",
+DlgDivInlineStyle	: "Estil en línia",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-ca.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-ca.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/en-ca.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * English (Canadian) language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+VisitLink			: "Open Link",
+Anchor				: "Insert/Edit Anchor",
+AnchorDelete		: "Remove Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Blockquote			: "Blockquote",
+CreateDiv			: "Create Div Container",
+EditDiv				: "Edit Div Container",
+DeleteDiv			: "Remove Div Container",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+ShowBlocks		: "Show Blocks",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRowAfter		: "Insert Row After",
+InsertRowBefore		: "Insert Row Before",
+DeleteRows			: "Delete Rows",
+InsertColumnAfter	: "Insert Column After",
+InsertColumnBefore	: "Insert Column Before",
+DeleteColumns		: "Delete Columns",
+InsertCellAfter		: "Insert Cell After",
+InsertCellBefore	: "Insert Cell Before",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+MergeRight			: "Merge Right",
+MergeDown			: "Merge Down",
+HorizontalSplitCell	: "Split Cell Horizontally",
+VerticalSplitCell	: "Split Cell Vertically",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Link to anchor in the text",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "(No anchors available in the document)",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellType		: "Cell Type",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Header",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText		: "Text (Value)",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "Reset",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+DlgTemplatesReplace	: "Replace actual contents",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "For further information go to",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",
+DlgDivAdvancedTab	: "Advanced",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/pt.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Portuguese language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Fechar Barra",
+ToolbarExpand		: "Expandir Barra",
+
+// Toolbar Items and Context Menu
+Save				: "Guardar",
+NewPage				: "Nova Página",
+Preview				: "Pré-visualizar",
+Cut					: "Cortar",
+Copy				: "Copiar",
+Paste				: "Colar",
+PasteText			: "Colar como texto não formatado",
+PasteWord			: "Colar do Word",
+Print				: "Imprimir",
+SelectAll			: "Seleccionar Tudo",
+RemoveFormat		: "Eliminar Formato",
+InsertLinkLbl		: "Hiperligação",
+InsertLink			: "Inserir/Editar Hiperligação",
+RemoveLink			: "Eliminar Hiperligação",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: " Inserir/Editar Âncora",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Imagem",
+InsertImage			: "Inserir/Editar Imagem",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Inserir/Editar Flash",
+InsertTableLbl		: "Tabela",
+InsertTable			: "Inserir/Editar Tabela",
+InsertLineLbl		: "Linha",
+InsertLine			: "Inserir Linha Horizontal",
+InsertSpecialCharLbl: "Caracter Especial",
+InsertSpecialChar	: "Inserir Caracter Especial",
+InsertSmileyLbl		: "Emoticons",
+InsertSmiley		: "Inserir Emoticons",
+About				: "Acerca do FCKeditor",
+Bold				: "Negrito",
+Italic				: "Itálico",
+Underline			: "Sublinhado",
+StrikeThrough		: "Rasurado",
+Subscript			: "Superior à Linha",
+Superscript			: "Inferior à Linha",
+LeftJustify			: "Alinhar à Esquerda",
+CenterJustify		: "Alinhar ao Centro",
+RightJustify		: "Alinhar à Direita",
+BlockJustify		: "Justificado",
+DecreaseIndent		: "Diminuir Avanço",
+IncreaseIndent		: "Aumentar Avanço",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Anular",
+Redo				: "Repetir",
+NumberedListLbl		: "Numeração",
+NumberedList		: "Inserir/Eliminar Numeração",
+BulletedListLbl		: "Marcas",
+BulletedList		: "Inserir/Eliminar Marcas",
+ShowTableBorders	: "Mostrar Limites da Tabelas",
+ShowDetails			: "Mostrar Parágrafo",
+Style				: "Estilo",
+FontFormat			: "Formato",
+Font				: "Tipo de Letra",
+FontSize			: "Tamanho",
+TextColor			: "Cor do Texto",
+BGColor				: "Cor de Fundo",
+Source				: "Fonte",
+Find				: "Procurar",
+Replace				: "Substituir",
+SpellCheck			: "Verificação Ortográfica",
+UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
+
+Form			: "Formulário",
+Checkbox		: "Caixa de Verificação",
+RadioButton		: "Botão de Opção",
+TextField		: "Campo de Texto",
+Textarea		: "Área de Texto",
+HiddenField		: "Campo Escondido",
+Button			: "Botão",
+SelectionField	: "Caixa de Combinação",
+ImageButton		: "Botão de Imagem",
+
+FitWindow		: "Maximizar o tamanho do editor",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Editar Hiperligação",
+CellCM				: "Célula",
+RowCM				: "Linha",
+ColumnCM			: "Coluna",
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Eliminar Linhas",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Eliminar Coluna",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Eliminar Célula",
+MergeCells			: "Unir Células",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Eliminar Tabela",
+CellProperties		: "Propriedades da Célula",
+TableProperties		: "Propriedades da Tabela",
+ImageProperties		: "Propriedades da Imagem",
+FlashProperties		: "Propriedades do Flash",
+
+AnchorProp			: "Propriedades da Âncora",
+ButtonProp			: "Propriedades do Botão",
+CheckboxProp		: "Propriedades da Caixa de Verificação",
+HiddenFieldProp		: "Propriedades do Campo Escondido",
+RadioButtonProp		: "Propriedades do Botão de Opção",
+ImageButtonProp		: "Propriedades do Botão de imagens",
+TextFieldProp		: "Propriedades do Campo de Texto",
+SelectionFieldProp	: "Propriedades da Caixa de Combinação",
+TextareaProp		: "Propriedades da Área de Texto",
+FormProp			: "Propriedades do Formulário",
+
+FontFormats			: "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "A Processar XHTML. Por favor, espere...",
+Done				: "Concluído",
+PasteWordConfirm	: "O texto que deseja parece ter sido copiado do Word. Deseja limpar a formatação antes de colar?",
+NotCompatiblePaste	: "Este comando só está disponível para Internet Explorer versão 5.5 ou superior. Deseja colar sem limpar a formatação?",
+UnknownToolbarItem	: "Item de barra desconhecido \"%1\"",
+UnknownCommand		: "Nome de comando desconhecido \"%1\"",
+NotImplemented		: "Comando não implementado",
+UnknownToolbarSet	: "Nome de barra \"%1\" não definido",
+NoActiveX			: "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.",
+BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancelar",
+DlgBtnClose			: "Fechar",
+DlgBtnBrowseServer	: "Navegar no Servidor",
+DlgAdvancedTag		: "Avançado",
+DlgOpOther			: "<Outro>",
+DlgInfoTab			: "Informação",
+DlgAlertUrl			: "Por favor introduza o URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Não definido>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Orientação de idioma",
+DlgGenLangDirLtr	: "Esquerda à Direita (LTR)",
+DlgGenLangDirRtl	: "Direita a Esquerda (RTL)",
+DlgGenLangCode		: "Código de Idioma",
+DlgGenAccessKey		: "Chave de Acesso",
+DlgGenName			: "Nome",
+DlgGenTabIndex		: "Índice de Tubulação",
+DlgGenLongDescr		: "Descrição Completa do URL",
+DlgGenClass			: "Classes de Estilo de Folhas Classes",
+DlgGenTitle			: "Título",
+DlgGenContType		: "Tipo de Conteúdo",
+DlgGenLinkCharset	: "Fonte de caracteres vinculado",
+DlgGenStyle			: "Estilo",
+
+// Image Dialog
+DlgImgTitle			: "Propriedades da Imagem",
+DlgImgInfoTab		: "Informação da Imagem",
+DlgImgBtnUpload		: "Enviar para o Servidor",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Carregar",
+DlgImgAlt			: "Texto Alternativo",
+DlgImgWidth			: "Largura",
+DlgImgHeight		: "Altura",
+DlgImgLockRatio		: "Proporcional",
+DlgBtnResetSize		: "Tamanho Original",
+DlgImgBorder		: "Limite",
+DlgImgHSpace		: "Esp.Horiz",
+DlgImgVSpace		: "Esp.Vert",
+DlgImgAlign			: "Alinhamento",
+DlgImgAlignLeft		: "Esquerda",
+DlgImgAlignAbsBottom: "Abs inferior",
+DlgImgAlignAbsMiddle: "Abs centro",
+DlgImgAlignBaseline	: "Linha de base",
+DlgImgAlignBottom	: "Fundo",
+DlgImgAlignMiddle	: "Centro",
+DlgImgAlignRight	: "Direita",
+DlgImgAlignTextTop	: "Topo do texto",
+DlgImgAlignTop		: "Topo",
+DlgImgPreview		: "Pré-visualizar",
+DlgImgAlertUrl		: "Por favor introduza o URL da imagem",
+DlgImgLinkTab		: "Hiperligação",
+
+// Flash Dialog
+DlgFlashTitle		: "Propriedades do Flash",
+DlgFlashChkPlay		: "Reproduzir automaticamente",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Permitir Menu do Flash",
+DlgFlashScale		: "Escala",
+DlgFlashScaleAll	: "Mostrar tudo",
+DlgFlashScaleNoBorder	: "Sem Limites",
+DlgFlashScaleFit	: "Tamanho Exacto",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hiperligação",
+DlgLnkInfoTab		: "Informação de Hiperligação",
+DlgLnkTargetTab		: "Destino",
+
+DlgLnkType			: "Tipo de Hiperligação",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Referência a esta página",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocolo",
+DlgLnkProtoOther	: "<outro>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Seleccionar una referência",
+DlgLnkAnchorByName	: "Por Nome de Referência",
+DlgLnkAnchorById	: "Por ID de elemento",
+DlgLnkNoAnchors		: "(Não há referências disponíveis no documento)",
+DlgLnkEMail			: "Endereço de E-Mail",
+DlgLnkEMailSubject	: "Título de Mensagem",
+DlgLnkEMailBody		: "Corpo da Mensagem",
+DlgLnkUpload		: "Carregar",
+DlgLnkBtnUpload		: "Enviar ao Servidor",
+
+DlgLnkTarget		: "Destino",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Janela de popup>",
+DlgLnkTargetBlank	: "Nova Janela(_blank)",
+DlgLnkTargetParent	: "Janela Pai (_parent)",
+DlgLnkTargetSelf	: "Mesma janela (_self)",
+DlgLnkTargetTop		: "Janela primaria (_top)",
+DlgLnkTargetFrameName	: "Nome do Frame Destino",
+DlgLnkPopWinName	: "Nome da Janela de Popup",
+DlgLnkPopWinFeat	: "Características de Janela de Popup",
+DlgLnkPopResize		: "Ajustável",
+DlgLnkPopLocation	: "Barra de localização",
+DlgLnkPopMenu		: "Barra de Menu",
+DlgLnkPopScroll		: "Barras de deslocamento",
+DlgLnkPopStatus		: "Barra de Estado",
+DlgLnkPopToolbar	: "Barra de Ferramentas",
+DlgLnkPopFullScrn	: "Janela Completa (IE)",
+DlgLnkPopDependent	: "Dependente (Netscape)",
+DlgLnkPopWidth		: "Largura",
+DlgLnkPopHeight		: "Altura",
+DlgLnkPopLeft		: "Posição Esquerda",
+DlgLnkPopTop		: "Posição Direita",
+
+DlnLnkMsgNoUrl		: "Por favor introduza a hiperligação URL",
+DlnLnkMsgNoEMail	: "Por favor introduza o endereço de e-mail",
+DlnLnkMsgNoAnchor	: "Por favor seleccione uma referência",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Seleccionar Cor",
+DlgColorBtnClear	: "Nenhuma",
+DlgColorHighlight	: "Destacado",
+DlgColorSelected	: "Seleccionado",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Inserir um Emoticon",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Seleccione um caracter especial",
+
+// Table Dialog
+DlgTableTitle		: "Propriedades da Tabela",
+DlgTableRows		: "Linhas",
+DlgTableColumns		: "Colunas",
+DlgTableBorder		: "Tamanho do Limite",
+DlgTableAlign		: "Alinhamento",
+DlgTableAlignNotSet	: "<Não definido>",
+DlgTableAlignLeft	: "Esquerda",
+DlgTableAlignCenter	: "Centrado",
+DlgTableAlignRight	: "Direita",
+DlgTableWidth		: "Largura",
+DlgTableWidthPx		: "pixeis",
+DlgTableWidthPc		: "percentagem",
+DlgTableHeight		: "Altura",
+DlgTableCellSpace	: "Esp. e/células",
+DlgTableCellPad		: "Esp. interior",
+DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumário",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Propriedades da Célula",
+DlgCellWidth		: "Largura",
+DlgCellWidthPx		: "pixeis",
+DlgCellWidthPc		: "percentagem",
+DlgCellHeight		: "Altura",
+DlgCellWordWrap		: "Moldar Texto",
+DlgCellWordWrapNotSet	: "<Não definido>",
+DlgCellWordWrapYes	: "Sim",
+DlgCellWordWrapNo	: "Não",
+DlgCellHorAlign		: "Alinhamento Horizontal",
+DlgCellHorAlignNotSet	: "<Não definido>",
+DlgCellHorAlignLeft	: "Esquerda",
+DlgCellHorAlignCenter	: "Centrado",
+DlgCellHorAlignRight: "Direita",
+DlgCellVerAlign		: "Alinhamento Vertical",
+DlgCellVerAlignNotSet	: "<Não definido>",
+DlgCellVerAlignTop	: "Topo",
+DlgCellVerAlignMiddle	: "Médio",
+DlgCellVerAlignBottom	: "Fundi",
+DlgCellVerAlignBaseline	: "Linha de Base",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Unir Linhas",
+DlgCellCollSpan		: "Unir Colunas",
+DlgCellBackColor	: "Cor do Fundo",
+DlgCellBorderColor	: "Cor do Limite",
+DlgCellBtnSelect	: "Seleccione...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Procurar",
+DlgFindFindBtn		: "Procurar",
+DlgFindNotFoundMsg	: "O texto especificado não foi encontrado.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Substituir",
+DlgReplaceFindLbl		: "Texto a Procurar:",
+DlgReplaceReplaceLbl	: "Substituir por:",
+DlgReplaceCaseChk		: "Maiúsculas/Minúsculas",
+DlgReplaceReplaceBtn	: "Substituir",
+DlgReplaceReplAllBtn	: "Substituir Tudo",
+DlgReplaceWordChk		: "Coincidir com toda a palavra",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).",
+PasteErrorCopy	: "A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).",
+
+PasteAsText		: "Colar como Texto Simples",
+PasteFromWord	: "Colar do Word",
+
+DlgPasteMsg2	: "Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignorar da definições do Tipo de Letra ",
+DlgPasteRemoveStyles	: "Remover as definições de Estilos",
+
+// Color Picker
+ColorAutomatic	: "Automático",
+ColorMoreColors	: "Mais Cores...",
+
+// Document Properties
+DocProps		: "Propriedades do Documento",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Propriedades da Âncora",
+DlgAnchorName		: "Nome da Âncora",
+DlgAnchorErrorName	: "Por favor, introduza o nome da âncora",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Não está num directório",
+DlgSpellChangeTo		: "Mudar para",
+DlgSpellBtnIgnore		: "Ignorar",
+DlgSpellBtnIgnoreAll	: "Ignorar Tudo",
+DlgSpellBtnReplace		: "Substituir",
+DlgSpellBtnReplaceAll	: "Substituir Tudo",
+DlgSpellBtnUndo			: "Anular",
+DlgSpellNoSuggestions	: "- Sem sugestões -",
+DlgSpellProgress		: "Verificação ortográfica em progresso…",
+DlgSpellNoMispell		: "Verificação ortográfica completa: não foram encontrados erros",
+DlgSpellNoChanges		: "Verificação ortográfica completa: não houve alteração de palavras",
+DlgSpellOneChange		: "Verificação ortográfica completa: uma palavra alterada",
+DlgSpellManyChanges		: "Verificação ortográfica completa: %1 palavras alteradas",
+
+IeSpellDownload			: " Verificação ortográfica não instalada. Quer descarregar agora?",
+
+// Button Dialog
+DlgButtonText		: "Texto (Valor)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nome",
+DlgCheckboxValue	: "Valor",
+DlgCheckboxSelected	: "Seleccionado",
+
+// Form Dialog
+DlgFormName		: "Nome",
+DlgFormAction	: "Acção",
+DlgFormMethod	: "Método",
+
+// Select Field Dialog
+DlgSelectName		: "Nome",
+DlgSelectValue		: "Valor",
+DlgSelectSize		: "Tamanho",
+DlgSelectLines		: "linhas",
+DlgSelectChkMulti	: "Permitir selecções múltiplas",
+DlgSelectOpAvail	: "Opções Possíveis",
+DlgSelectOpText		: "Texto",
+DlgSelectOpValue	: "Valor",
+DlgSelectBtnAdd		: "Adicionar",
+DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnUp		: "Para cima",
+DlgSelectBtnDown	: "Para baixo",
+DlgSelectBtnSetValue : "Definir um valor por defeito",
+DlgSelectBtnDelete	: "Apagar",
+
+// Textarea Dialog
+DlgTextareaName	: "Nome",
+DlgTextareaCols	: "Colunas",
+DlgTextareaRows	: "Linhas",
+
+// Text Field Dialog
+DlgTextName			: "Nome",
+DlgTextValue		: "Valor",
+DlgTextCharWidth	: "Tamanho do caracter",
+DlgTextMaxChars		: "Nr. Máximo de Caracteres",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Texto",
+DlgTextTypePass		: "Palavra-chave",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nome",
+DlgHiddenValue	: "Valor",
+
+// Bulleted List Dialog
+BulletedListProp	: "Propriedades da Marca",
+NumberedListProp	: "Propriedades da Numeração",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Circulo",
+DlgLstTypeDisc		: "Disco",
+DlgLstTypeSquare	: "Quadrado",
+DlgLstTypeNumbers	: "Números (1, 2, 3)",
+DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
+DlgLstTypeUCase		: "Letras Maiúsculas (A, B, C)",
+DlgLstTypeSRoman	: "Numeração Romana em Minúsculas (i, ii, iii)",
+DlgLstTypeLRoman	: "Numeração Romana em Maiúsculas (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Geral",
+DlgDocBackTab		: "Fundo",
+DlgDocColorsTab		: "Cores e Margens",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Título da Página",
+DlgDocLangDir		: "Orientação de idioma",
+DlgDocLangDirLTR	: "Esquerda à Direita (LTR)",
+DlgDocLangDirRTL	: "Direita à Esquerda (RTL)",
+DlgDocLangCode		: "Código de Idioma",
+DlgDocCharSet		: "Codificação de Caracteres",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Outra Codificação de Caracteres",
+
+DlgDocDocType		: "Tipo de Cabeçalho do Documento",
+DlgDocDocTypeOther	: "Outro Tipo de Cabeçalho do Documento",
+DlgDocIncXHTML		: "Incluir Declarações XHTML",
+DlgDocBgColor		: "Cor de Fundo",
+DlgDocBgImage		: "Caminho para a Imagem de Fundo",
+DlgDocBgNoScroll	: "Fundo Fixo",
+DlgDocCText			: "Texto",
+DlgDocCLink			: "Hiperligação",
+DlgDocCVisited		: "Hiperligação Visitada",
+DlgDocCActive		: "Hiperligação Activa",
+DlgDocMargins		: "Margem das Páginas",
+DlgDocMaTop			: "Topo",
+DlgDocMaLeft		: "Esquerda",
+DlgDocMaRight		: "Direita",
+DlgDocMaBottom		: "Fundo",
+DlgDocMeIndex		: "Palavras de Indexação do Documento (separadas por virgula)",
+DlgDocMeDescr		: "Descrição do Documento",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Direitos de Autor",
+DlgDocPreview		: "Pré-visualizar",
+
+// Templates Dialog
+Templates			: "Modelos",
+DlgTemplatesTitle	: "Modelo de Conteúdo",
+DlgTemplatesSelMsg	: "Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):",
+DlgTemplatesLoading	: "A carregar a lista de modelos. Aguarde por favor...",
+DlgTemplatesNoTpl	: "(Sem modelos definidos)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Acerca",
+DlgAboutBrowserInfoTab	: "Informação do Nevegador",
+DlgAboutLicenseTab	: "Licença",
+DlgAboutVersion		: "versão",
+DlgAboutInfo		: "Para mais informações por favor dirija-se a",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/da.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/da.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/da.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Danish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Skjul værktøjslinier",
+ToolbarExpand		: "Vis værktøjslinier",
+
+// Toolbar Items and Context Menu
+Save				: "Gem",
+NewPage				: "Ny side",
+Preview				: "Vis eksempel",
+Cut					: "Klip",
+Copy				: "Kopier",
+Paste				: "Indsæt",
+PasteText			: "Indsæt som ikke-formateret tekst",
+PasteWord			: "Indsæt fra Word",
+Print				: "Udskriv",
+SelectAll			: "Vælg alt",
+RemoveFormat		: "Fjern formatering",
+InsertLinkLbl		: "Hyperlink",
+InsertLink			: "Indsæt/rediger hyperlink",
+RemoveLink			: "Fjern hyperlink",
+VisitLink			: "Åbn hyperlink",
+Anchor				: "Indsæt/rediger bogmærke",
+AnchorDelete		: "Fjern bogmærke",
+InsertImageLbl		: "Indsæt billede",
+InsertImage			: "Indsæt/rediger billede",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Indsæt/rediger Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Indsæt/rediger tabel",
+InsertLineLbl		: "Linie",
+InsertLine			: "Indsæt vandret linie",
+InsertSpecialCharLbl: "Symbol",
+InsertSpecialChar	: "Indsæt symbol",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Indsæt smiley",
+About				: "Om FCKeditor",
+Bold				: "Fed",
+Italic				: "Kursiv",
+Underline			: "Understreget",
+StrikeThrough		: "Overstreget",
+Subscript			: "Sænket skrift",
+Superscript			: "Hævet skrift",
+LeftJustify			: "Venstrestillet",
+CenterJustify		: "Centreret",
+RightJustify		: "Højrestillet",
+BlockJustify		: "Lige margener",
+DecreaseIndent		: "Formindsk indrykning",
+IncreaseIndent		: "Forøg indrykning",
+Blockquote			: "Blokcitat",
+CreateDiv			: "Opret div container",
+EditDiv				: "Rediger div container",
+DeleteDiv			: "Fjern div container",
+Undo				: "Fortryd",
+Redo				: "Annuller fortryd",
+NumberedListLbl		: "Talopstilling",
+NumberedList		: "Indsæt/fjern talopstilling",
+BulletedListLbl		: "Punktopstilling",
+BulletedList		: "Indsæt/fjern punktopstilling",
+ShowTableBorders	: "Vis tabelkanter",
+ShowDetails			: "Vis detaljer",
+Style				: "Typografi",
+FontFormat			: "Formatering",
+Font				: "Skrifttype",
+FontSize			: "Skriftstørrelse",
+TextColor			: "Tekstfarve",
+BGColor				: "Baggrundsfarve",
+Source				: "Kilde",
+Find				: "Søg",
+Replace				: "Erstat",
+SpellCheck			: "Stavekontrol",
+UniversalKeyboard	: "Universaltastatur",
+PageBreakLbl		: "Sidskift",
+PageBreak			: "Indsæt sideskift",
+
+Form			: "Indsæt formular",
+Checkbox		: "Indsæt afkrydsningsfelt",
+RadioButton		: "Indsæt alternativknap",
+TextField		: "Indsæt tekstfelt",
+Textarea		: "Indsæt tekstboks",
+HiddenField		: "Indsæt skjult felt",
+Button			: "Indsæt knap",
+SelectionField	: "Indsæt liste",
+ImageButton		: "Indsæt billedknap",
+
+FitWindow		: "Maksimer editor vinduet",
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Rediger hyperlink",
+CellCM				: "Celle",
+RowCM				: "Række",
+ColumnCM			: "Kolonne",
+InsertRowAfter		: "Indsæt række efter",
+InsertRowBefore		: "Indsæt række før",
+DeleteRows			: "Slet række",
+InsertColumnAfter	: "Indsæt kolonne efter",
+InsertColumnBefore	: "Indsæt kolonne før",
+DeleteColumns		: "Slet kolonne",
+InsertCellAfter		: "Indsæt celle efter",
+InsertCellBefore	: "Indsæt celle før",
+DeleteCells			: "Slet celle",
+MergeCells			: "Flet celler",
+MergeRight			: "Flet til højre",
+MergeDown			: "Flet nedad",
+HorizontalSplitCell	: "Del celle vandret",
+VerticalSplitCell	: "Del celle lodret",
+TableDelete			: "Slet tabel",
+CellProperties		: "Egenskaber for celle",
+TableProperties		: "Egenskaber for tabel",
+ImageProperties		: "Egenskaber for billede",
+FlashProperties		: "Egenskaber for Flash",
+
+AnchorProp			: "Egenskaber for bogmærke",
+ButtonProp			: "Egenskaber for knap",
+CheckboxProp		: "Egenskaber for afkrydsningsfelt",
+HiddenFieldProp		: "Egenskaber for skjult felt",
+RadioButtonProp		: "Egenskaber for alternativknap",
+ImageButtonProp		: "Egenskaber for billedknap",
+TextFieldProp		: "Egenskaber for tekstfelt",
+SelectionFieldProp	: "Egenskaber for liste",
+TextareaProp		: "Egenskaber for tekstboks",
+FormProp			: "Egenskaber for formular",
+
+FontFormats			: "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Behandler XHTML...",
+Done				: "Færdig",
+PasteWordConfirm	: "Den tekst du forsøger at indsætte ser ud til at komme fra Word.<br>Vil du rense teksten før den indsættes?",
+NotCompatiblePaste	: "Denne kommando er tilgændelig i Internet Explorer 5.5 eller senere.<br>Vil du indsætte teksten uden at rense den ?",
+UnknownToolbarItem	: "Ukendt værktøjslinjeobjekt \"%1\"!",
+UnknownCommand		: "Ukendt kommandonavn \"%1\"!",
+NotImplemented		: "Kommandoen er ikke implementeret!",
+UnknownToolbarSet	: "Værktøjslinjen \"%1\" eksisterer ikke!",
+NoActiveX			: "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.<br>Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.",
+BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!<br>Slå pop-up blokering fra.",
+DialogBlocked		: "Dialogvinduet kunne ikke åbnes!<br>Slå pop-up blokering fra.",
+VisitLinkBlocked	: "Det var ikke muligt at åbne et nyt vindue. Tjek, at ingen popup-blokkere er aktive.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Annuller",
+DlgBtnClose			: "Luk",
+DlgBtnBrowseServer	: "Gennemse...",
+DlgAdvancedTag		: "Avanceret",
+DlgOpOther			: "<Andet>",
+DlgInfoTab			: "Generelt",
+DlgAlertUrl			: "Indtast URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<intet valgt>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Tekstretning",
+DlgGenLangDirLtr	: "Fra venstre mod højre (LTR)",
+DlgGenLangDirRtl	: "Fra højre mod venstre (RTL)",
+DlgGenLangCode		: "Sprogkode",
+DlgGenAccessKey		: "Genvejstast",
+DlgGenName			: "Navn",
+DlgGenTabIndex		: "Tabulator indeks",
+DlgGenLongDescr		: "Udvidet beskrivelse",
+DlgGenClass			: "Typografiark",
+DlgGenTitle			: "Titel",
+DlgGenContType		: "Indholdstype",
+DlgGenLinkCharset	: "Tegnsæt",
+DlgGenStyle			: "Typografi",
+
+// Image Dialog
+DlgImgTitle			: "Egenskaber for billede",
+DlgImgInfoTab		: "Generelt",
+DlgImgBtnUpload		: "Upload",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternativ tekst",
+DlgImgWidth			: "Bredde",
+DlgImgHeight		: "Højde",
+DlgImgLockRatio		: "Lås størrelsesforhold",
+DlgBtnResetSize		: "Nulstil størrelse",
+DlgImgBorder		: "Ramme",
+DlgImgHSpace		: "HMargen",
+DlgImgVSpace		: "VMargen",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Venstre",
+DlgImgAlignAbsBottom: "Absolut nederst",
+DlgImgAlignAbsMiddle: "Absolut centreret",
+DlgImgAlignBaseline	: "Grundlinje",
+DlgImgAlignBottom	: "Nederst",
+DlgImgAlignMiddle	: "Centreret",
+DlgImgAlignRight	: "Højre",
+DlgImgAlignTextTop	: "Toppen af teksten",
+DlgImgAlignTop		: "Øverst",
+DlgImgPreview		: "Vis eksempel",
+DlgImgAlertUrl		: "Indtast stien til billedet",
+DlgImgLinkTab		: "Hyperlink",
+
+// Flash Dialog
+DlgFlashTitle		: "Egenskaber for Flash",
+DlgFlashChkPlay		: "Automatisk afspilning",
+DlgFlashChkLoop		: "Gentagelse",
+DlgFlashChkMenu		: "Vis Flash menu",
+DlgFlashScale		: "Skalér",
+DlgFlashScaleAll	: "Vis alt",
+DlgFlashScaleNoBorder	: "Ingen ramme",
+DlgFlashScaleFit	: "Tilpas størrelse",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Egenskaber for hyperlink",
+DlgLnkInfoTab		: "Generelt",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Hyperlink type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Bogmærke på denne side",
+DlgLnkTypeEMail		: "E-mail",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<anden>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Vælg et anker",
+DlgLnkAnchorByName	: "Efter anker navn",
+DlgLnkAnchorById	: "Efter element Id",
+DlgLnkNoAnchors		: "(Ingen bogmærker dokumentet)",
+DlgLnkEMail			: "E-mailadresse",
+DlgLnkEMailSubject	: "Emne",
+DlgLnkEMailBody		: "Brødtekst",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Upload",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindue>",
+DlgLnkTargetBlank	: "Nyt vindue (_blank)",
+DlgLnkTargetParent	: "Overordnet ramme (_parent)",
+DlgLnkTargetSelf	: "Samme vindue (_self)",
+DlgLnkTargetTop		: "Hele vinduet (_top)",
+DlgLnkTargetFrameName	: "Destinationsvinduets navn",
+DlgLnkPopWinName	: "Pop-up vinduets navn",
+DlgLnkPopWinFeat	: "Egenskaber for pop-up",
+DlgLnkPopResize		: "Skalering",
+DlgLnkPopLocation	: "Adresselinje",
+DlgLnkPopMenu		: "Menulinje",
+DlgLnkPopScroll		: "Scrollbars",
+DlgLnkPopStatus		: "Statuslinje",
+DlgLnkPopToolbar	: "Værktøjslinje",
+DlgLnkPopFullScrn	: "Fuld skærm (IE)",
+DlgLnkPopDependent	: "Koblet/dependent (Netscape)",
+DlgLnkPopWidth		: "Bredde",
+DlgLnkPopHeight		: "Højde",
+DlgLnkPopLeft		: "Position fra venstre",
+DlgLnkPopTop		: "Position fra toppen",
+
+DlnLnkMsgNoUrl		: "Indtast hyperlink URL!",
+DlnLnkMsgNoEMail	: "Indtast e-mailaddresse!",
+DlnLnkMsgNoAnchor	: "Vælg bogmærke!",
+DlnLnkMsgInvPopName	: "Navnet på popup'en skal starte med et bogstav og må ikke indeholde mellemrum",
+
+// Color Dialog
+DlgColorTitle		: "Vælg farve",
+DlgColorBtnClear	: "Nulstil",
+DlgColorHighlight	: "Markeret",
+DlgColorSelected	: "Valgt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Vælg smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Vælg symbol",
+
+// Table Dialog
+DlgTableTitle		: "Egenskaber for tabel",
+DlgTableRows		: "Rækker",
+DlgTableColumns		: "Kolonner",
+DlgTableBorder		: "Rammebredde",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<intet valgt>",
+DlgTableAlignLeft	: "Venstrestillet",
+DlgTableAlignCenter	: "Centreret",
+DlgTableAlignRight	: "Højrestillet",
+DlgTableWidth		: "Bredde",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Højde",
+DlgTableCellSpace	: "Celleafstand",
+DlgTableCellPad		: "Cellemargen",
+DlgTableCaption		: "Titel",
+DlgTableSummary		: "Resume",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Egenskaber for celle",
+DlgCellWidth		: "Bredde",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Højde",
+DlgCellWordWrap		: "Orddeling",
+DlgCellWordWrapNotSet	: "<intet valgt>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nej",
+DlgCellHorAlign		: "Vandret justering",
+DlgCellHorAlignNotSet	: "<intet valgt>",
+DlgCellHorAlignLeft	: "Venstrestillet",
+DlgCellHorAlignCenter	: "Centreret",
+DlgCellHorAlignRight: "Højrestillet",
+DlgCellVerAlign		: "Lodret justering",
+DlgCellVerAlignNotSet	: "<intet valgt>",
+DlgCellVerAlignTop	: "Øverst",
+DlgCellVerAlignMiddle	: "Centreret",
+DlgCellVerAlignBottom	: "Nederst",
+DlgCellVerAlignBaseline	: "Grundlinje",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Højde i antal rækker",
+DlgCellCollSpan		: "Bredde i antal kolonner",
+DlgCellBackColor	: "Baggrundsfarve",
+DlgCellBorderColor	: "Rammefarve",
+DlgCellBtnSelect	: "Vælg...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Søg og erstat",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "Søgeteksten blev ikke fundet!",
+
+// Replace Dialog
+DlgReplaceTitle			: "Erstat",
+DlgReplaceFindLbl		: "Søg efter:",
+DlgReplaceReplaceLbl	: "Erstat med:",
+DlgReplaceCaseChk		: "Forskel på store og små bogstaver",
+DlgReplaceReplaceBtn	: "Erstat",
+DlgReplaceReplAllBtn	: "Erstat alle",
+DlgReplaceWordChk		: "Kun hele ord",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!<br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).",
+PasteErrorCopy	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!<br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).",
+
+PasteAsText		: "Indsæt som ikke-formateret tekst",
+PasteFromWord	: "Indsæt fra Word",
+
+DlgPasteMsg2	: "Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.",
+DlgPasteSec		: "På grund af browserens sikkerhedsindstillinger kan editoren ikke tilgå udklipsholderen direkte. Du skal indsætte udklipsholderens indhold i dette vindue igen.",
+DlgPasteIgnoreFont		: "Ignorer font definitioner",
+DlgPasteRemoveStyles	: "Ignorer typografi",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Flere farver...",
+
+// Document Properties
+DocProps		: "Egenskaber for dokument",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Egenskaber for bogmærke",
+DlgAnchorName		: "Bogmærke navn",
+DlgAnchorErrorName	: "Indtast bogmærke navn!",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ikke i ordbogen",
+DlgSpellChangeTo		: "Forslag",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstat",
+DlgSpellBtnReplaceAll	: "Erstat alle",
+DlgSpellBtnUndo			: "Tilbage",
+DlgSpellNoSuggestions	: "- ingen forslag -",
+DlgSpellProgress		: "Stavekontrolen arbejder...",
+DlgSpellNoMispell		: "Stavekontrol færdig: Ingen fejl fundet",
+DlgSpellNoChanges		: "Stavekontrol færdig: Ingen ord ændret",
+DlgSpellOneChange		: "Stavekontrol færdig: Et ord ændret",
+DlgSpellManyChanges		: "Stavekontrol færdig: %1 ord ændret",
+
+IeSpellDownload			: "Stavekontrol ikke installeret.<br>Vil du hente den nu?",
+
+// Button Dialog
+DlgButtonText		: "Tekst",
+DlgButtonType		: "Type",
+DlgButtonTypeBtn	: "Knap",
+DlgButtonTypeSbm	: "Send",
+DlgButtonTypeRst	: "Nulstil",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Navn",
+DlgCheckboxValue	: "Værdi",
+DlgCheckboxSelected	: "Valgt",
+
+// Form Dialog
+DlgFormName		: "Navn",
+DlgFormAction	: "Handling",
+DlgFormMethod	: "Metod",
+
+// Select Field Dialog
+DlgSelectName		: "Navn",
+DlgSelectValue		: "Værdi",
+DlgSelectSize		: "Størrelse",
+DlgSelectLines		: "linier",
+DlgSelectChkMulti	: "Tillad flere valg",
+DlgSelectOpAvail	: "Valgmuligheder",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Værdi",
+DlgSelectBtnAdd		: "Tilføj",
+DlgSelectBtnModify	: "Rediger",
+DlgSelectBtnUp		: "Op",
+DlgSelectBtnDown	: "Ned",
+DlgSelectBtnSetValue : "Sæt som valgt",
+DlgSelectBtnDelete	: "Slet",
+
+// Textarea Dialog
+DlgTextareaName	: "Navn",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rækker",
+
+// Text Field Dialog
+DlgTextName			: "Navn",
+DlgTextValue		: "Værdi",
+DlgTextCharWidth	: "Bredde (tegn)",
+DlgTextMaxChars		: "Max antal tegn",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Adgangskode",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Navn",
+DlgHiddenValue	: "Værdi",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaber for punktopstilling",
+NumberedListProp	: "Egenskaber for talopstilling",
+DlgLstStart			: "Start",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Udfyldt cirkel",
+DlgLstTypeSquare	: "Firkant",
+DlgLstTypeNumbers	: "Nummereret (1, 2, 3)",
+DlgLstTypeLCase		: "Små bogstaver (a, b, c)",
+DlgLstTypeUCase		: "Store bogstaver (A, B, C)",
+DlgLstTypeSRoman	: "Små romertal (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romertal (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Generelt",
+DlgDocBackTab		: "Baggrund",
+DlgDocColorsTab		: "Farver og margen",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Sidetitel",
+DlgDocLangDir		: "Sprog",
+DlgDocLangDirLTR	: "Fra venstre mod højre (LTR)",
+DlgDocLangDirRTL	: "Fra højre mod venstre (RTL)",
+DlgDocLangCode		: "Landekode",
+DlgDocCharSet		: "Tegnsæt kode",
+DlgDocCharSetCE		: "Centraleuropæisk",
+DlgDocCharSetCT		: "Traditionel kinesisk (Big5)",
+DlgDocCharSetCR		: "Kyrillisk",
+DlgDocCharSetGR		: "Græsk",
+DlgDocCharSetJP		: "Japansk",
+DlgDocCharSetKR		: "Koreansk",
+DlgDocCharSetTR		: "Tyrkisk",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Vesteuropæisk",
+DlgDocCharSetOther	: "Anden tegnsæt kode",
+
+DlgDocDocType		: "Dokumenttype kategori",
+DlgDocDocTypeOther	: "Anden dokumenttype kategori",
+DlgDocIncXHTML		: "Inkludere XHTML deklartion",
+DlgDocBgColor		: "Baggrundsfarve",
+DlgDocBgImage		: "Baggrundsbillede URL",
+DlgDocBgNoScroll	: "Fastlåst baggrund",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Hyperlink",
+DlgDocCVisited		: "Besøgt hyperlink",
+DlgDocCActive		: "Aktivt hyperlink",
+DlgDocMargins		: "Sidemargen",
+DlgDocMaTop			: "Øverst",
+DlgDocMaLeft		: "Venstre",
+DlgDocMaRight		: "Højre",
+DlgDocMaBottom		: "Nederst",
+DlgDocMeIndex		: "Dokument index nøgleord (kommasepareret)",
+DlgDocMeDescr		: "Dokument beskrivelse",
+DlgDocMeAuthor		: "Forfatter",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vis",
+
+// Templates Dialog
+Templates			: "Skabeloner",
+DlgTemplatesTitle	: "Indholdsskabeloner",
+DlgTemplatesSelMsg	: "Vælg den skabelon, som skal åbnes i editoren.<br>(Nuværende indhold vil blive overskrevet!):",
+DlgTemplatesLoading	: "Henter liste over skabeloner...",
+DlgTemplatesNoTpl	: "(Der er ikke defineret nogen skabelon!)",
+DlgTemplatesReplace	: "Erstat det faktiske indhold",
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Generelt",
+DlgAboutLicenseTab	: "Licens",
+DlgAboutVersion		: "version",
+DlgAboutInfo		: "For yderlig information gå til",
+
+// Div Dialog
+DlgDivGeneralTab	: "Generelt",
+DlgDivAdvancedTab	: "Avanceret",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sr.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Serbian (Cyrillic) language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Смањи линију са алаткама",
+ToolbarExpand		: "Прошири линију са алаткама",
+
+// Toolbar Items and Context Menu
+Save				: "Сачувај",
+NewPage				: "Нова страница",
+Preview				: "Изглед странице",
+Cut					: "Исеци",
+Copy				: "Копирај",
+Paste				: "Залепи",
+PasteText			: "Залепи као неформатиран текст",
+PasteWord			: "Залепи из Worda",
+Print				: "Штампа",
+SelectAll			: "Означи све",
+RemoveFormat		: "Уклони форматирање",
+InsertLinkLbl		: "Линк",
+InsertLink			: "Унеси/измени линк",
+RemoveLink			: "Уклони линк",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Унеси/измени сидро",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Слика",
+InsertImage			: "Унеси/измени слику",
+InsertFlashLbl		: "Флеш елемент",
+InsertFlash			: "Унеси/измени флеш",
+InsertTableLbl		: "Табела",
+InsertTable			: "Унеси/измени табелу",
+InsertLineLbl		: "Линија",
+InsertLine			: "Унеси хоризонталну линију",
+InsertSpecialCharLbl: "Специјални карактери",
+InsertSpecialChar	: "Унеси специјални карактер",
+InsertSmileyLbl		: "Смајли",
+InsertSmiley		: "Унеси смајлија",
+About				: "О ФЦКедитору",
+Bold				: "Подебљано",
+Italic				: "Курзив",
+Underline			: "Подвучено",
+StrikeThrough		: "Прецртано",
+Subscript			: "Индекс",
+Superscript			: "Степен",
+LeftJustify			: "Лево равнање",
+CenterJustify		: "Центриран текст",
+RightJustify		: "Десно равнање",
+BlockJustify		: "Обострано равнање",
+DecreaseIndent		: "Смањи леву маргину",
+IncreaseIndent		: "Увећај леву маргину",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Поништи акцију",
+Redo				: "Понови акцију",
+NumberedListLbl		: "Набројиву листу",
+NumberedList		: "Унеси/уклони набројиву листу",
+BulletedListLbl		: "Ненабројива листа",
+BulletedList		: "Унеси/уклони ненабројиву листу",
+ShowTableBorders	: "Прикажи оквир табеле",
+ShowDetails			: "Прикажи детаље",
+Style				: "Стил",
+FontFormat			: "Формат",
+Font				: "Фонт",
+FontSize			: "Величина фонта",
+TextColor			: "Боја текста",
+BGColor				: "Боја позадине",
+Source				: "Kôд",
+Find				: "Претрага",
+Replace				: "Замена",
+SpellCheck			: "Провери спеловање",
+UniversalKeyboard	: "Универзална тастатура",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Форма",
+Checkbox		: "Поље за потврду",
+RadioButton		: "Радио-дугме",
+TextField		: "Текстуално поље",
+Textarea		: "Зона текста",
+HiddenField		: "Скривено поље",
+Button			: "Дугме",
+SelectionField	: "Изборно поље",
+ImageButton		: "Дугме са сликом",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Промени линк",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Обриши редове",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Обриши колоне",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Обриши ћелије",
+MergeCells			: "Спој ћелије",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Особине ћелије",
+TableProperties		: "Особине табеле",
+ImageProperties		: "Особине слике",
+FlashProperties		: "Особине Флеша",
+
+AnchorProp			: "Особине сидра",
+ButtonProp			: "Особине дугмета",
+CheckboxProp		: "Особине поља за потврду",
+HiddenFieldProp		: "Особине скривеног поља",
+RadioButtonProp		: "Особине радио-дугмета",
+ImageButtonProp		: "Особине дугмета са сликом",
+TextFieldProp		: "Особине текстуалног поља",
+SelectionFieldProp	: "Особине изборног поља",
+TextareaProp		: "Особине зоне текста",
+FormProp			: "Особине форме",
+
+FontFormats			: "Normal;Formatirano;Adresa;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обрађујем XHTML. Maлo стрпљења...",
+Done				: "Завршио",
+PasteWordConfirm	: "Текст који желите да налепите копиран је из Worda. Да ли желите да буде очишћен од формата пре лепљења?",
+NotCompatiblePaste	: "Ова команда је доступна само за Интернет Екплорер од верзије 5.5. Да ли желите да налепим текст без чишћења?",
+UnknownToolbarItem	: "Непозната ставка toolbara \"%1\"",
+UnknownCommand		: "Непозната наредба \"%1\"",
+NotImplemented		: "Наредба није имплементирана",
+UnknownToolbarSet	: "Toolbar \"%1\" не постоји",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Oткажи",
+DlgBtnClose			: "Затвори",
+DlgBtnBrowseServer	: "Претражи сервер",
+DlgAdvancedTag		: "Напредни тагови",
+DlgOpOther			: "<Остали>",
+DlgInfoTab			: "Инфо",
+DlgAlertUrl			: "Молимо Вас, унесите УРЛ",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<није постављено>",
+DlgGenId			: "Ид",
+DlgGenLangDir		: "Смер језика",
+DlgGenLangDirLtr	: "С лева на десно (LTR)",
+DlgGenLangDirRtl	: "С десна на лево (RTL)",
+DlgGenLangCode		: "Kôд језика",
+DlgGenAccessKey		: "Приступни тастер",
+DlgGenName			: "Назив",
+DlgGenTabIndex		: "Таб индекс",
+DlgGenLongDescr		: "Пун опис УРЛ",
+DlgGenClass			: "Stylesheet класе",
+DlgGenTitle			: "Advisory наслов",
+DlgGenContType		: "Advisory врста садржаја",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Стил",
+
+// Image Dialog
+DlgImgTitle			: "Особине слика",
+DlgImgInfoTab		: "Инфо слике",
+DlgImgBtnUpload		: "Пошаљи на сервер",
+DlgImgURL			: "УРЛ",
+DlgImgUpload		: "Пошаљи",
+DlgImgAlt			: "Алтернативни текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Висина",
+DlgImgLockRatio		: "Закључај однос",
+DlgBtnResetSize		: "Ресетуј величину",
+DlgImgBorder		: "Оквир",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Равнање",
+DlgImgAlignLeft		: "Лево",
+DlgImgAlignAbsBottom: "Abs доле",
+DlgImgAlignAbsMiddle: "Abs средина",
+DlgImgAlignBaseline	: "Базно",
+DlgImgAlignBottom	: "Доле",
+DlgImgAlignMiddle	: "Средина",
+DlgImgAlignRight	: "Десно",
+DlgImgAlignTextTop	: "Врх текста",
+DlgImgAlignTop		: "Врх",
+DlgImgPreview		: "Изглед",
+DlgImgAlertUrl		: "Унесите УРЛ слике",
+DlgImgLinkTab		: "Линк",
+
+// Flash Dialog
+DlgFlashTitle		: "Особине флеша",
+DlgFlashChkPlay		: "Аутоматски старт",
+DlgFlashChkLoop		: "Понављај",
+DlgFlashChkMenu		: "Укључи флеш мени",
+DlgFlashScale		: "Скалирај",
+DlgFlashScaleAll	: "Прикажи све",
+DlgFlashScaleNoBorder	: "Без ивице",
+DlgFlashScaleFit	: "Попуни површину",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Линк",
+DlgLnkInfoTab		: "Линк инфо",
+DlgLnkTargetTab		: "Мета",
+
+DlgLnkType			: "Врста линка",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Сидро на овој страници",
+DlgLnkTypeEMail		: "Eлектронска пошта",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<друго>",
+DlgLnkURL			: "УРЛ",
+DlgLnkAnchorSel		: "Одабери сидро",
+DlgLnkAnchorByName	: "По називу сидра",
+DlgLnkAnchorById	: "Пo Ид-jу елемента",
+DlgLnkNoAnchors		: "(Нема доступних сидра)",
+DlgLnkEMail			: "Адреса електронске поште",
+DlgLnkEMailSubject	: "Наслов",
+DlgLnkEMailBody		: "Садржај поруке",
+DlgLnkUpload		: "Пошаљи",
+DlgLnkBtnUpload		: "Пошаљи на сервер",
+
+DlgLnkTarget		: "Meтa",
+DlgLnkTargetFrame	: "<оквир>",
+DlgLnkTargetPopup	: "<искачући прозор>",
+DlgLnkTargetBlank	: "Нови прозор (_blank)",
+DlgLnkTargetParent	: "Родитељски прозор (_parent)",
+DlgLnkTargetSelf	: "Исти прозор (_self)",
+DlgLnkTargetTop		: "Прозор на врху (_top)",
+DlgLnkTargetFrameName	: "Назив одредишног фрејма",
+DlgLnkPopWinName	: "Назив искачућег прозора",
+DlgLnkPopWinFeat	: "Могућности искачућег прозора",
+DlgLnkPopResize		: "Променљива величина",
+DlgLnkPopLocation	: "Локација",
+DlgLnkPopMenu		: "Контекстни мени",
+DlgLnkPopScroll		: "Скрол бар",
+DlgLnkPopStatus		: "Статусна линија",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Приказ преко целог екрана (ИE)",
+DlgLnkPopDependent	: "Зависно (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Висина",
+DlgLnkPopLeft		: "Од леве ивице екрана (пиксела)",
+DlgLnkPopTop		: "Од врха екрана (пиксела)",
+
+DlnLnkMsgNoUrl		: "Унесите УРЛ линка",
+DlnLnkMsgNoEMail	: "Откуцајте адресу електронске поште",
+DlnLnkMsgNoAnchor	: "Одаберите сидро",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Одаберите боју",
+DlgColorBtnClear	: "Обриши",
+DlgColorHighlight	: "Посветли",
+DlgColorSelected	: "Одабери",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Унеси смајлија",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Одаберите специјални карактер",
+
+// Table Dialog
+DlgTableTitle		: "Особине табеле",
+DlgTableRows		: "Редова",
+DlgTableColumns		: "Kолона",
+DlgTableBorder		: "Величина оквира",
+DlgTableAlign		: "Равнање",
+DlgTableAlignNotSet	: "<није постављено>",
+DlgTableAlignLeft	: "Лево",
+DlgTableAlignCenter	: "Средина",
+DlgTableAlignRight	: "Десно",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пиксела",
+DlgTableWidthPc		: "процената",
+DlgTableHeight		: "Висина",
+DlgTableCellSpace	: "Ћелијски простор",
+DlgTableCellPad		: "Размак ћелија",
+DlgTableCaption		: "Наслов табеле",
+DlgTableSummary		: "Summary",	//MISSING
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Особине ћелије",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пиксела",
+DlgCellWidthPc		: "процената",
+DlgCellHeight		: "Висина",
+DlgCellWordWrap		: "Дељење речи",
+DlgCellWordWrapNotSet	: "<није постављено>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "Не",
+DlgCellHorAlign		: "Водоравно равнање",
+DlgCellHorAlignNotSet	: "<није постављено>",
+DlgCellHorAlignLeft	: "Лево",
+DlgCellHorAlignCenter	: "Средина",
+DlgCellHorAlignRight: "Десно",
+DlgCellVerAlign		: "Вертикално равнање",
+DlgCellVerAlignNotSet	: "<није постављено>",
+DlgCellVerAlignTop	: "Горње",
+DlgCellVerAlignMiddle	: "Средина",
+DlgCellVerAlignBottom	: "Доње",
+DlgCellVerAlignBaseline	: "Базно",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Спајање редова",
+DlgCellCollSpan		: "Спајање колона",
+DlgCellBackColor	: "Боја позадине",
+DlgCellBorderColor	: "Боја оквира",
+DlgCellBtnSelect	: "Oдабери...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Пронађи",
+DlgFindFindBtn		: "Пронађи",
+DlgFindNotFoundMsg	: "Тражени текст није пронађен.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замени",
+DlgReplaceFindLbl		: "Пронађи:",
+DlgReplaceReplaceLbl	: "Замени са:",
+DlgReplaceCaseChk		: "Разликуј велика и мала слова",
+DlgReplaceReplaceBtn	: "Замени",
+DlgReplaceReplAllBtn	: "Замени све",
+DlgReplaceWordChk		: "Упореди целе речи",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).",
+PasteErrorCopy	: "Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).",
+
+PasteAsText		: "Залепи као чист текст",
+PasteFromWord	: "Залепи из Worda",
+
+DlgPasteMsg2	: "Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиснете <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Игнориши Font Face дефиниције",
+DlgPasteRemoveStyles	: "Уклони дефиниције стилова",
+
+// Color Picker
+ColorAutomatic	: "Аутоматски",
+ColorMoreColors	: "Више боја...",
+
+// Document Properties
+DocProps		: "Особине документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Особине сидра",
+DlgAnchorName		: "Име сидра",
+DlgAnchorErrorName	: "Молимо Вас да унесете име сидра",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Није у речнику",
+DlgSpellChangeTo		: "Измени",
+DlgSpellBtnIgnore		: "Игнориши",
+DlgSpellBtnIgnoreAll	: "Игнориши све",
+DlgSpellBtnReplace		: "Замени",
+DlgSpellBtnReplaceAll	: "Замени све",
+DlgSpellBtnUndo			: "Врати акцију",
+DlgSpellNoSuggestions	: "- Без сугестија -",
+DlgSpellProgress		: "Провера спеловања у току...",
+DlgSpellNoMispell		: "Провера спеловања завршена: грешке нису пронађене",
+DlgSpellNoChanges		: "Провера спеловања завршена: Није измењена ниједна реч",
+DlgSpellOneChange		: "Провера спеловања завршена: Измењена је једна реч",
+DlgSpellManyChanges		: "Провера спеловања завршена:  %1 реч(и) је измењено",
+
+IeSpellDownload			: "Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?",
+
+// Button Dialog
+DlgButtonText		: "Текст (вредност)",
+DlgButtonType		: "Tип",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Назив",
+DlgCheckboxValue	: "Вредност",
+DlgCheckboxSelected	: "Означено",
+
+// Form Dialog
+DlgFormName		: "Назив",
+DlgFormAction	: "Aкција",
+DlgFormMethod	: "Mетода",
+
+// Select Field Dialog
+DlgSelectName		: "Назив",
+DlgSelectValue		: "Вредност",
+DlgSelectSize		: "Величина",
+DlgSelectLines		: "линија",
+DlgSelectChkMulti	: "Дозволи вишеструку селекцију",
+DlgSelectOpAvail	: "Доступне опције",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Вредност",
+DlgSelectBtnAdd		: "Додај",
+DlgSelectBtnModify	: "Измени",
+DlgSelectBtnUp		: "Горе",
+DlgSelectBtnDown	: "Доле",
+DlgSelectBtnSetValue : "Подеси као означену вредност",
+DlgSelectBtnDelete	: "Обриши",
+
+// Textarea Dialog
+DlgTextareaName	: "Назив",
+DlgTextareaCols	: "Број колона",
+DlgTextareaRows	: "Број редова",
+
+// Text Field Dialog
+DlgTextName			: "Назив",
+DlgTextValue		: "Вредност",
+DlgTextCharWidth	: "Ширина (карактера)",
+DlgTextMaxChars		: "Максимално карактера",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Лозинка",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Назив",
+DlgHiddenValue	: "Вредност",
+
+// Bulleted List Dialog
+BulletedListProp	: "Особине Bulleted листе",
+NumberedListProp	: "Особине набројиве листе",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Круг",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Бројеви (1, 2, 3)",
+DlgLstTypeLCase		: "мала слова (a, b, c)",
+DlgLstTypeUCase		: "ВЕЛИКА СЛОВА (A, B, C)",
+DlgLstTypeSRoman	: "Мале римске цифре (i, ii, iii)",
+DlgLstTypeLRoman	: "Велике римске цифре (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Опште особине",
+DlgDocBackTab		: "Позадина",
+DlgDocColorsTab		: "Боје и маргине",
+DlgDocMetaTab		: "Метаподаци",
+
+DlgDocPageTitle		: "Наслов странице",
+DlgDocLangDir		: "Смер језика",
+DlgDocLangDirLTR	: "Слева надесно (LTR)",
+DlgDocLangDirRTL	: "Здесна налево (RTL)",
+DlgDocLangCode		: "Шифра језика",
+DlgDocCharSet		: "Кодирање скупа карактера",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Остала кодирања скупа карактера",
+
+DlgDocDocType		: "Заглавље типа документа",
+DlgDocDocTypeOther	: "Остала заглавља типа документа",
+DlgDocIncXHTML		: "Улључи XHTML декларације",
+DlgDocBgColor		: "Боја позадине",
+DlgDocBgImage		: "УРЛ позадинске слике",
+DlgDocBgNoScroll	: "Фиксирана позадина",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Линк",
+DlgDocCVisited		: "Посећени линк",
+DlgDocCActive		: "Активни линк",
+DlgDocMargins		: "Маргине странице",
+DlgDocMaTop			: "Горња",
+DlgDocMaLeft		: "Лева",
+DlgDocMaRight		: "Десна",
+DlgDocMaBottom		: "Доња",
+DlgDocMeIndex		: "Кључне речи за индексирање документа (раздвојене зарезом)",
+DlgDocMeDescr		: "Опис документа",
+DlgDocMeAuthor		: "Аутор",
+DlgDocMeCopy		: "Ауторска права",
+DlgDocPreview		: "Изглед странице",
+
+// Templates Dialog
+Templates			: "Обрасци",
+DlgTemplatesTitle	: "Обрасци за садржај",
+DlgTemplatesSelMsg	: "Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):",
+DlgTemplatesLoading	: "Учитавам листу образаца. Мало стрпљења...",
+DlgTemplatesNoTpl	: "(Нема дефинисаних образаца)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "О едитору",
+DlgAboutBrowserInfoTab	: "Информације о претраживачу",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "верзија",
+DlgAboutInfo		: "За више информација посетите",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/tr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/tr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/tr.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Turkish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Araç Çubuğunu Kapat",
+ToolbarExpand		: "Araç Çubuğunu Aç",
+
+// Toolbar Items and Context Menu
+Save				: "Kaydet",
+NewPage				: "Yeni Sayfa",
+Preview				: "Ön İzleme",
+Cut					: "Kes",
+Copy				: "Kopyala",
+Paste				: "Yapıştır",
+PasteText			: "Düzyazı Olarak Yapıştır",
+PasteWord			: "Word'den Yapıştır",
+Print				: "Yazdır",
+SelectAll			: "Tümünü Seç",
+RemoveFormat		: "Biçimi Kaldır",
+InsertLinkLbl		: "Köprü",
+InsertLink			: "Köprü Ekle/Düzenle",
+RemoveLink			: "Köprü Kaldır",
+VisitLink			: "Köprü Aç",
+Anchor				: "Çapa Ekle/Düzenle",
+AnchorDelete		: "Çapa Sil",
+InsertImageLbl		: "Resim",
+InsertImage			: "Resim Ekle/Düzenle",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash Ekle/Düzenle",
+InsertTableLbl		: "Tablo",
+InsertTable			: "Tablo Ekle/Düzenle",
+InsertLineLbl		: "Satır",
+InsertLine			: "Yatay Satır Ekle",
+InsertSpecialCharLbl: "Özel Karakter",
+InsertSpecialChar	: "Özel Karakter Ekle",
+InsertSmileyLbl		: "İfade",
+InsertSmiley		: "İfade Ekle",
+About				: "FCKeditor Hakkında",
+Bold				: "Kalın",
+Italic				: "İtalik",
+Underline			: "Altı Çizgili",
+StrikeThrough		: "Üstü Çizgili",
+Subscript			: "Alt Simge",
+Superscript			: "Üst Simge",
+LeftJustify			: "Sola Dayalı",
+CenterJustify		: "Ortalanmış",
+RightJustify		: "Sağa Dayalı",
+BlockJustify		: "İki Kenara Yaslanmış",
+DecreaseIndent		: "Sekme Azalt",
+IncreaseIndent		: "Sekme Arttır",
+Blockquote			: "Blok Oluştur",
+CreateDiv			: "Div Ekle",
+EditDiv				: "Div Düzenle",
+DeleteDiv			: "Div Sil",
+Undo				: "Geri Al",
+Redo				: "Tekrarla",
+NumberedListLbl		: "Numaralı Liste",
+NumberedList		: "Numaralı Liste Ekle/Kaldır",
+BulletedListLbl		: "Simgeli Liste",
+BulletedList		: "Simgeli Liste Ekle/Kaldır",
+ShowTableBorders	: "Tablo Kenarlarını Göster",
+ShowDetails			: "Detayları Göster",
+Style				: "Biçem",
+FontFormat			: "Biçim",
+Font				: "Yazı Türü",
+FontSize			: "Boyut",
+TextColor			: "Yazı Rengi",
+BGColor				: "Arka Renk",
+Source				: "Kaynak",
+Find				: "Bul",
+Replace				: "Değiştir",
+SpellCheck			: "Yazım Denetimi",
+UniversalKeyboard	: "Evrensel Klavye",
+PageBreakLbl		: "Sayfa sonu",
+PageBreak			: "Sayfa Sonu Ekle",
+
+Form			: "Form",
+Checkbox		: "Onay Kutusu",
+RadioButton		: "Seçenek Düğmesi",
+TextField		: "Metin Girişi",
+Textarea		: "Çok Satırlı Metin",
+HiddenField		: "Gizli Veri",
+Button			: "Düğme",
+SelectionField	: "Seçim Menüsü",
+ImageButton		: "Resimli Düğme",
+
+FitWindow		: "Düzenleyici boyutunu büyüt",
+ShowBlocks		: "Blokları Göster",
+
+// Context Menu
+EditLink			: "Köprü Düzenle",
+CellCM				: "Hücre",
+RowCM				: "Satır",
+ColumnCM			: "Sütun",
+InsertRowAfter		: "Satır Ekle - Sonra",
+InsertRowBefore		: "Satır Ekle - Önce",
+DeleteRows			: "Satır Sil",
+InsertColumnAfter	: "Kolon Ekle - Sonra",
+InsertColumnBefore	: "Kolon Ekle - Önce",
+DeleteColumns		: "Sütun Sil",
+InsertCellAfter		: "Hücre Ekle - Sonra",
+InsertCellBefore	: "Hücre Ekle - Önce",
+DeleteCells			: "Hücre Sil",
+MergeCells			: "Hücreleri Birleştir",
+MergeRight			: "Birleştir - Sağdaki İle ",
+MergeDown			: "Birleştir - Aşağıdaki İle ",
+HorizontalSplitCell	: "Hücreyi Yatay Böl",
+VerticalSplitCell	: "Hücreyi Dikey Böl",
+TableDelete			: "Tabloyu Sil",
+CellProperties		: "Hücre Özellikleri",
+TableProperties		: "Tablo Özellikleri",
+ImageProperties		: "Resim Özellikleri",
+FlashProperties		: "Flash Özellikleri",
+
+AnchorProp			: "Çapa Özellikleri",
+ButtonProp			: "Düğme Özellikleri",
+CheckboxProp		: "Onay Kutusu Özellikleri",
+HiddenFieldProp		: "Gizli Veri Özellikleri",
+RadioButtonProp		: "Seçenek Düğmesi Özellikleri",
+ImageButtonProp		: "Resimli Düğme Özellikleri",
+TextFieldProp		: "Metin Girişi Özellikleri",
+SelectionFieldProp	: "Seçim Menüsü Özellikleri",
+TextareaProp		: "Çok Satırlı Metin Özellikleri",
+FormProp			: "Form Özellikleri",
+
+FontFormats			: "Normal;Biçimli;Adres;Başlık 1;Başlık 2;Başlık 3;Başlık 4;Başlık 5;Başlık 6;Paragraf (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML işleniyor. Lütfen bekleyin...",
+Done				: "Bitti",
+PasteWordConfirm	: "Yapıştırdığınız yazı Word'den gelmişe benziyor. Yapıştırmadan önce gereksiz eklentileri silmek ister misiniz?",
+NotCompatiblePaste	: "Bu komut Internet Explorer 5.5 ve ileriki sürümleri için mevcuttur. Temizlenmeden yapıştırılmasını ister misiniz ?",
+UnknownToolbarItem	: "Bilinmeyen araç çubugu öğesi \"%1\"",
+UnknownCommand		: "Bilinmeyen komut \"%1\"",
+NotImplemented		: "Komut uyarlanamadı",
+UnknownToolbarSet	: "\"%1\" araç çubuğu öğesi mevcut değil",
+NoActiveX			: "Kullandığınız tarayıcının güvenlik ayarları bazı özelliklerin kullanılmasını engelliyor. Bu özelliklerin çalışması için \"Run ActiveX controls and plug-ins (Activex ve eklentileri çalıştır)\" seçeneğinin aktif yapılması gerekiyor. Kullanılamayan eklentiler ve hatalar konusunda daha fazla bilgi sahibi olun.",
+BrowseServerBlocked : "Kaynak tarayıcısı açılamadı. Tüm \"popup blocker\" programlarının devre dışı olduğundan emin olun. (Yahoo toolbar, Msn toolbar, Google toolbar gibi)",
+DialogBlocked		: "Diyalog açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun.",
+VisitLinkBlocked	: "Yeni pencere açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun",
+
+// Dialogs
+DlgBtnOK			: "Tamam",
+DlgBtnCancel		: "İptal",
+DlgBtnClose			: "Kapat",
+DlgBtnBrowseServer	: "Sunucuyu Gez",
+DlgAdvancedTag		: "Gelişmiş",
+DlgOpOther			: "<Diğer>",
+DlgInfoTab			: "Bilgi",
+DlgAlertUrl			: "Lütfen URL girin",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<tanımlanmamış>",
+DlgGenId			: "Kimlik",
+DlgGenLangDir		: "Dil Yönü",
+DlgGenLangDirLtr	: "Soldan Sağa (LTR)",
+DlgGenLangDirRtl	: "Sağdan Sola (RTL)",
+DlgGenLangCode		: "Dil Kodlaması",
+DlgGenAccessKey		: "Erişim Tuşu",
+DlgGenName			: "Ad",
+DlgGenTabIndex		: "Sekme İndeksi",
+DlgGenLongDescr		: "Uzun Tanımlı URL",
+DlgGenClass			: "Biçem Sayfası Sınıfları",
+DlgGenTitle			: "Danışma Başlığı",
+DlgGenContType		: "Danışma İçerik Türü",
+DlgGenLinkCharset	: "Bağlı Kaynak Karakter Gurubu",
+DlgGenStyle			: "Biçem",
+
+// Image Dialog
+DlgImgTitle			: "Resim Özellikleri",
+DlgImgInfoTab		: "Resim Bilgisi",
+DlgImgBtnUpload		: "Sunucuya Yolla",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Karşıya Yükle",
+DlgImgAlt			: "Alternatif Yazı",
+DlgImgWidth			: "Genişlik",
+DlgImgHeight		: "Yükseklik",
+DlgImgLockRatio		: "Oranı Kilitle",
+DlgBtnResetSize		: "Boyutu Başa Döndür",
+DlgImgBorder		: "Kenar",
+DlgImgHSpace		: "Yatay Boşluk",
+DlgImgVSpace		: "Dikey Boşluk",
+DlgImgAlign			: "Hizalama",
+DlgImgAlignLeft		: "Sol",
+DlgImgAlignAbsBottom: "Tam Altı",
+DlgImgAlignAbsMiddle: "Tam Ortası",
+DlgImgAlignBaseline	: "Taban Çizgisi",
+DlgImgAlignBottom	: "Alt",
+DlgImgAlignMiddle	: "Orta",
+DlgImgAlignRight	: "Sağ",
+DlgImgAlignTextTop	: "Yazı Tepeye",
+DlgImgAlignTop		: "Tepe",
+DlgImgPreview		: "Ön İzleme",
+DlgImgAlertUrl		: "Lütfen resmin URL'sini yazınız",
+DlgImgLinkTab		: "Köprü",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Özellikleri",
+DlgFlashChkPlay		: "Otomatik Oynat",
+DlgFlashChkLoop		: "Döngü",
+DlgFlashChkMenu		: "Flash Menüsünü Kullan",
+DlgFlashScale		: "Boyutlandır",
+DlgFlashScaleAll	: "Hepsini Göster",
+DlgFlashScaleNoBorder	: "Kenar Yok",
+DlgFlashScaleFit	: "Tam Sığdır",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Köprü",
+DlgLnkInfoTab		: "Köprü Bilgisi",
+DlgLnkTargetTab		: "Hedef",
+
+DlgLnkType			: "Köprü Türü",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Bu sayfada çapa",
+DlgLnkTypeEMail		: "E-Posta",
+DlgLnkProto			: "Protokol",
+DlgLnkProtoOther	: "<diğer>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Çapa Seç",
+DlgLnkAnchorByName	: "Çapa Adı ile",
+DlgLnkAnchorById	: "Eleman Kimlik Numarası ile",
+DlgLnkNoAnchors		: "(Bu belgede hiç çapa yok)",
+DlgLnkEMail			: "E-Posta Adresi",
+DlgLnkEMailSubject	: "İleti Konusu",
+DlgLnkEMailBody		: "İleti Gövdesi",
+DlgLnkUpload		: "Karşıya Yükle",
+DlgLnkBtnUpload		: "Sunucuya Gönder",
+
+DlgLnkTarget		: "Hedef",
+DlgLnkTargetFrame	: "<çerçeve>",
+DlgLnkTargetPopup	: "<yeni açılan pencere>",
+DlgLnkTargetBlank	: "Yeni Pencere(_blank)",
+DlgLnkTargetParent	: "Anne Pencere (_parent)",
+DlgLnkTargetSelf	: "Kendi Penceresi (_self)",
+DlgLnkTargetTop		: "En Üst Pencere (_top)",
+DlgLnkTargetFrameName	: "Hedef Çerçeve Adı",
+DlgLnkPopWinName	: "Yeni Açılan Pencere Adı",
+DlgLnkPopWinFeat	: "Yeni Açılan Pencere Özellikleri",
+DlgLnkPopResize		: "Boyutlandırılabilir",
+DlgLnkPopLocation	: "Yer Çubuğu",
+DlgLnkPopMenu		: "Menü Çubuğu",
+DlgLnkPopScroll		: "Kaydırma Çubukları",
+DlgLnkPopStatus		: "Durum Çubuğu",
+DlgLnkPopToolbar	: "Araç Çubuğu",
+DlgLnkPopFullScrn	: "Tam Ekran (IE)",
+DlgLnkPopDependent	: "Bağımlı (Netscape)",
+DlgLnkPopWidth		: "Genişlik",
+DlgLnkPopHeight		: "Yükseklik",
+DlgLnkPopLeft		: "Sola Göre Konum",
+DlgLnkPopTop		: "Yukarıya Göre Konum",
+
+DlnLnkMsgNoUrl		: "Lütfen köprü URL'sini yazın",
+DlnLnkMsgNoEMail	: "Lütfen E-posta adresini yazın",
+DlnLnkMsgNoAnchor	: "Lütfen bir çapa seçin",
+DlnLnkMsgInvPopName	: "Açılır pencere adı abecesel bir karakterle başlamalı ve boşluk içermemelidir",
+
+// Color Dialog
+DlgColorTitle		: "Renk Seç",
+DlgColorBtnClear	: "Temizle",
+DlgColorHighlight	: "Vurgula",
+DlgColorSelected	: "Seçilmiş",
+
+// Smiley Dialog
+DlgSmileyTitle		: "İfade Ekle",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Özel Karakter Seç",
+
+// Table Dialog
+DlgTableTitle		: "Tablo Özellikleri",
+DlgTableRows		: "Satırlar",
+DlgTableColumns		: "Sütunlar",
+DlgTableBorder		: "Kenar Kalınlığı",
+DlgTableAlign		: "Hizalama",
+DlgTableAlignNotSet	: "<Tanımlanmamış>",
+DlgTableAlignLeft	: "Sol",
+DlgTableAlignCenter	: "Merkez",
+DlgTableAlignRight	: "Sağ",
+DlgTableWidth		: "Genişlik",
+DlgTableWidthPx		: "piksel",
+DlgTableWidthPc		: "yüzde",
+DlgTableHeight		: "Yükseklik",
+DlgTableCellSpace	: "Izgara kalınlığı",
+DlgTableCellPad		: "Izgara yazı arası",
+DlgTableCaption		: "Başlık",
+DlgTableSummary		: "Özet",
+DlgTableHeaders		: "Başlıklar",
+DlgTableHeadersNone		: "Yok",
+DlgTableHeadersColumn	: "İlk Sütun",
+DlgTableHeadersRow		: "İlk Satır",
+DlgTableHeadersBoth		: "Her İkisi",
+
+// Table Cell Dialog
+DlgCellTitle		: "Hücre Özellikleri",
+DlgCellWidth		: "Genişlik",
+DlgCellWidthPx		: "piksel",
+DlgCellWidthPc		: "yüzde",
+DlgCellHeight		: "Yükseklik",
+DlgCellWordWrap		: "Sözcük Kaydır",
+DlgCellWordWrapNotSet	: "<Tanımlanmamış>",
+DlgCellWordWrapYes	: "Evet",
+DlgCellWordWrapNo	: "Hayır",
+DlgCellHorAlign		: "Yatay Hizalama",
+DlgCellHorAlignNotSet	: "<Tanımlanmamış>",
+DlgCellHorAlignLeft	: "Sol",
+DlgCellHorAlignCenter	: "Merkez",
+DlgCellHorAlignRight: "Sağ",
+DlgCellVerAlign		: "Dikey Hizalama",
+DlgCellVerAlignNotSet	: "<Tanımlanmamış>",
+DlgCellVerAlignTop	: "Tepe",
+DlgCellVerAlignMiddle	: "Orta",
+DlgCellVerAlignBottom	: "Alt",
+DlgCellVerAlignBaseline	: "Taban Çizgisi",
+DlgCellType		: "Hücre Tipi",
+DlgCellTypeData		: "Veri",
+DlgCellTypeHeader	: "Başlık",
+DlgCellRowSpan		: "Satır Kapla",
+DlgCellCollSpan		: "Sütun Kapla",
+DlgCellBackColor	: "Arka Plan Rengi",
+DlgCellBorderColor	: "Kenar Rengi",
+DlgCellBtnSelect	: "Seç...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Bul ve Değiştir",
+
+// Find Dialog
+DlgFindTitle		: "Bul",
+DlgFindFindBtn		: "Bul",
+DlgFindNotFoundMsg	: "Belirtilen yazı bulunamadı.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Değiştir",
+DlgReplaceFindLbl		: "Aranan:",
+DlgReplaceReplaceLbl	: "Bununla değiştir:",
+DlgReplaceCaseChk		: "Büyük/küçük harf duyarlı",
+DlgReplaceReplaceBtn	: "Değiştir",
+DlgReplaceReplAllBtn	: "Tümünü Değiştir",
+DlgReplaceWordChk		: "Kelimenin tamamı uysun",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.",
+PasteErrorCopy	: "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.",
+
+PasteAsText		: "Düz Metin Olarak Yapıştır",
+PasteFromWord	: "Word'den yapıştır",
+
+DlgPasteMsg2	: "Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.",
+DlgPasteSec		: "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..",
+DlgPasteIgnoreFont		: "Yazı Tipi tanımlarını yoksay",
+DlgPasteRemoveStyles	: "Biçem Tanımlarını çıkar",
+
+// Color Picker
+ColorAutomatic	: "Otomatik",
+ColorMoreColors	: "Diğer renkler...",
+
+// Document Properties
+DocProps		: "Belge Özellikleri",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Çapa Özellikleri",
+DlgAnchorName		: "Çapa Adı",
+DlgAnchorErrorName	: "Lütfen çapa için ad giriniz",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Sözlükte Yok",
+DlgSpellChangeTo		: "Şuna değiştir:",
+DlgSpellBtnIgnore		: "Yoksay",
+DlgSpellBtnIgnoreAll	: "Tümünü Yoksay",
+DlgSpellBtnReplace		: "Değiştir",
+DlgSpellBtnReplaceAll	: "Tümünü Değiştir",
+DlgSpellBtnUndo			: "Geri Al",
+DlgSpellNoSuggestions	: "- Öneri Yok -",
+DlgSpellProgress		: "Yazım denetimi işlemde...",
+DlgSpellNoMispell		: "Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı",
+DlgSpellNoChanges		: "Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi",
+DlgSpellOneChange		: "Yazım denetimi tamamlandı: Bir kelime değiştirildi",
+DlgSpellManyChanges		: "Yazım denetimi tamamlandı: %1 kelime değiştirildi",
+
+IeSpellDownload			: "Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?",
+
+// Button Dialog
+DlgButtonText		: "Metin (Değer)",
+DlgButtonType		: "Tip",
+DlgButtonTypeBtn	: "Düğme",
+DlgButtonTypeSbm	: "Gönder",
+DlgButtonTypeRst	: "Sıfırla",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Ad",
+DlgCheckboxValue	: "Değer",
+DlgCheckboxSelected	: "Seçili",
+
+// Form Dialog
+DlgFormName		: "Ad",
+DlgFormAction	: "İşlem",
+DlgFormMethod	: "Yöntem",
+
+// Select Field Dialog
+DlgSelectName		: "Ad",
+DlgSelectValue		: "Değer",
+DlgSelectSize		: "Boyut",
+DlgSelectLines		: "satır",
+DlgSelectChkMulti	: "Çoklu seçime izin ver",
+DlgSelectOpAvail	: "Mevcut Seçenekler",
+DlgSelectOpText		: "Metin",
+DlgSelectOpValue	: "Değer",
+DlgSelectBtnAdd		: "Ekle",
+DlgSelectBtnModify	: "Düzenle",
+DlgSelectBtnUp		: "Yukarı",
+DlgSelectBtnDown	: "Aşağı",
+DlgSelectBtnSetValue : "Seçili değer olarak ata",
+DlgSelectBtnDelete	: "Sil",
+
+// Textarea Dialog
+DlgTextareaName	: "Ad",
+DlgTextareaCols	: "Sütunlar",
+DlgTextareaRows	: "Satırlar",
+
+// Text Field Dialog
+DlgTextName			: "Ad",
+DlgTextValue		: "Değer",
+DlgTextCharWidth	: "Karakter Genişliği",
+DlgTextMaxChars		: "En Fazla Karakter",
+DlgTextType			: "Tür",
+DlgTextTypeText		: "Metin",
+DlgTextTypePass		: "Parola",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Ad",
+DlgHiddenValue	: "Değer",
+
+// Bulleted List Dialog
+BulletedListProp	: "Simgeli Liste Özellikleri",
+NumberedListProp	: "Numaralı Liste Özellikleri",
+DlgLstStart			: "Başlangıç",
+DlgLstType			: "Tip",
+DlgLstTypeCircle	: "Çember",
+DlgLstTypeDisc		: "Disk",
+DlgLstTypeSquare	: "Kare",
+DlgLstTypeNumbers	: "Sayılar (1, 2, 3)",
+DlgLstTypeLCase		: "Küçük Harfler (a, b, c)",
+DlgLstTypeUCase		: "Büyük Harfler (A, B, C)",
+DlgLstTypeSRoman	: "Küçük Romen Rakamları (i, ii, iii)",
+DlgLstTypeLRoman	: "Büyük Romen Rakamları (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Genel",
+DlgDocBackTab		: "Arka Plan",
+DlgDocColorsTab		: "Renkler ve Kenar Boşlukları",
+DlgDocMetaTab		: "Tanım Bilgisi (Meta)",
+
+DlgDocPageTitle		: "Sayfa Başlığı",
+DlgDocLangDir		: "Dil Yönü",
+DlgDocLangDirLTR	: "Soldan Sağa (LTR)",
+DlgDocLangDirRTL	: "Sağdan Sola (RTL)",
+DlgDocLangCode		: "Dil Kodu",
+DlgDocCharSet		: "Karakter Kümesi Kodlaması",
+DlgDocCharSetCE		: "Orta Avrupa",
+DlgDocCharSetCT		: "Geleneksel Çince (Big5)",
+DlgDocCharSetCR		: "Kiril",
+DlgDocCharSetGR		: "Yunanca",
+DlgDocCharSetJP		: "Japonca",
+DlgDocCharSetKR		: "Korece",
+DlgDocCharSetTR		: "Türkçe",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Batı Avrupa",
+DlgDocCharSetOther	: "Diğer Karakter Kümesi Kodlaması",
+
+DlgDocDocType		: "Belge Türü Başlığı",
+DlgDocDocTypeOther	: "Diğer Belge Türü Başlığı",
+DlgDocIncXHTML		: "XHTML Bildirimlerini Dahil Et",
+DlgDocBgColor		: "Arka Plan Rengi",
+DlgDocBgImage		: "Arka Plan Resim URLsi",
+DlgDocBgNoScroll	: "Sabit Arka Plan",
+DlgDocCText			: "Metin",
+DlgDocCLink			: "Köprü",
+DlgDocCVisited		: "Ziyaret Edilmiş Köprü",
+DlgDocCActive		: "Etkin Köprü",
+DlgDocMargins		: "Kenar Boşlukları",
+DlgDocMaTop			: "Tepe",
+DlgDocMaLeft		: "Sol",
+DlgDocMaRight		: "Sağ",
+DlgDocMaBottom		: "Alt",
+DlgDocMeIndex		: "Belge Dizinleme Anahtar Kelimeleri (virgülle ayrılmış)",
+DlgDocMeDescr		: "Belge Tanımı",
+DlgDocMeAuthor		: "Yazar",
+DlgDocMeCopy		: "Telif",
+DlgDocPreview		: "Ön İzleme",
+
+// Templates Dialog
+Templates			: "Şablonlar",
+DlgTemplatesTitle	: "İçerik Şablonları",
+DlgTemplatesSelMsg	: "Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):",
+DlgTemplatesLoading	: "Şablon listesi yüklenmekte. Lütfen bekleyiniz...",
+DlgTemplatesNoTpl	: "(Belirli bir şablon seçilmedi)",
+DlgTemplatesReplace	: "Mevcut içerik ile değiştir",
+
+// About Dialog
+DlgAboutAboutTab	: "Hakkında",
+DlgAboutBrowserInfoTab	: "Gezgin Bilgisi",
+DlgAboutLicenseTab	: "Lisans",
+DlgAboutVersion		: "sürüm",
+DlgAboutInfo		: "Daha fazla bilgi için:",
+
+// Div Dialog
+DlgDivGeneralTab	: "Genel",
+DlgDivAdvancedTab	: "Gelişmiş",
+DlgDivStyle		: "Sitil",
+DlgDivInlineStyle	: "Satıriçi Sitil",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fa.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fa.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fa.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Persian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "برچیدن نوارابزار",
+ToolbarExpand		: "گستردن نوارابزار",
+
+// Toolbar Items and Context Menu
+Save				: "ذخیره",
+NewPage				: "برگهٴ تازه",
+Preview				: "پیش‌نمایش",
+Cut					: "برش",
+Copy				: "کپی",
+Paste				: "چسباندن",
+PasteText			: "چسباندن به عنوان متن ِساده",
+PasteWord			: "چسباندن از Word",
+Print				: "چاپ",
+SelectAll			: "گزینش همه",
+RemoveFormat		: "برداشتن فرمت",
+InsertLinkLbl		: "پیوند",
+InsertLink			: "گنجاندن/ویرایش ِپیوند",
+RemoveLink			: "برداشتن پیوند",
+VisitLink			: "باز کردن پیوند",
+Anchor				: "گنجاندن/ویرایش ِلنگر",
+AnchorDelete		: "برداشتن لنگر",
+InsertImageLbl		: "تصویر",
+InsertImage			: "گنجاندن/ویرایش ِتصویر",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "گنجاندن/ویرایش ِFlash",
+InsertTableLbl		: "جدول",
+InsertTable			: "گنجاندن/ویرایش ِجدول",
+InsertLineLbl		: "خط",
+InsertLine			: "گنجاندن خط ِافقی",
+InsertSpecialCharLbl: "نویسهٴ ویژه",
+InsertSpecialChar	: "گنجاندن نویسهٴ ویژه",
+InsertSmileyLbl		: "خندانک",
+InsertSmiley		: "گنجاندن خندانک",
+About				: "دربارهٴ FCKeditor",
+Bold				: "درشت",
+Italic				: "خمیده",
+Underline			: "خط‌زیردار",
+StrikeThrough		: "میان‌خط",
+Subscript			: "زیرنویس",
+Superscript			: "بالانویس",
+LeftJustify			: "چپ‌چین",
+CenterJustify		: "میان‌چین",
+RightJustify		: "راست‌چین",
+BlockJustify		: "بلوک‌چین",
+DecreaseIndent		: "کاهش تورفتگی",
+IncreaseIndent		: "افزایش تورفتگی",
+Blockquote			: "بلوک نقل قول",
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "واچیدن",
+Redo				: "بازچیدن",
+NumberedListLbl		: "فهرست شماره‌دار",
+NumberedList		: "گنجاندن/برداشتن فهرست شماره‌دار",
+BulletedListLbl		: "فهرست نقطه‌ای",
+BulletedList		: "گنجاندن/برداشتن فهرست نقطه‌ای",
+ShowTableBorders	: "نمایش لبهٴ جدول",
+ShowDetails			: "نمایش جزئیات",
+Style				: "سبک",
+FontFormat			: "فرمت",
+Font				: "قلم",
+FontSize			: "اندازه",
+TextColor			: "رنگ متن",
+BGColor				: "رنگ پس‌زمینه",
+Source				: "منبع",
+Find				: "جستجو",
+Replace				: "جایگزینی",
+SpellCheck			: "بررسی املا",
+UniversalKeyboard	: "صفحه‌کلید جهانی",
+PageBreakLbl		: "شکستگی ِپایان ِبرگه",
+PageBreak			: "گنجاندن شکستگی ِپایان ِبرگه",
+
+Form			: "فرم",
+Checkbox		: "خانهٴ گزینه‌ای",
+RadioButton		: "دکمهٴ رادیویی",
+TextField		: "فیلد متنی",
+Textarea		: "ناحیهٴ متنی",
+HiddenField		: "فیلد پنهان",
+Button			: "دکمه",
+SelectionField	: "فیلد چندگزینه‌ای",
+ImageButton		: "دکمهٴ تصویری",
+
+FitWindow		: "بیشینه‌سازی ِاندازهٴ ویرایشگر",
+ShowBlocks		: "نمایش بلوک‌ها",
+
+// Context Menu
+EditLink			: "ویرایش پیوند",
+CellCM				: "سلول",
+RowCM				: "سطر",
+ColumnCM			: "ستون",
+InsertRowAfter		: "افزودن سطر بعد از",
+InsertRowBefore		: "افزودن سطر قبل از",
+DeleteRows			: "حذف سطرها",
+InsertColumnAfter	: "افزودن ستون بعد از",
+InsertColumnBefore	: "افزودن ستون قبل از",
+DeleteColumns		: "حذف ستونها",
+InsertCellAfter		: "افزودن سلول بعد از",
+InsertCellBefore	: "افزودن سلول قبل از",
+DeleteCells			: "حذف سلولها",
+MergeCells			: "ادغام سلولها",
+MergeRight			: "ادغام به راست",
+MergeDown			: "ادغام به پایین",
+HorizontalSplitCell	: "جدا کردن افقی سلول",
+VerticalSplitCell	: "جدا کردن عمودی سلول",
+TableDelete			: "پاک‌کردن جدول",
+CellProperties		: "ویژگیهای سلول",
+TableProperties		: "ویژگیهای جدول",
+ImageProperties		: "ویژگیهای تصویر",
+FlashProperties		: "ویژگیهای Flash",
+
+AnchorProp			: "ویژگیهای لنگر",
+ButtonProp			: "ویژگیهای دکمه",
+CheckboxProp		: "ویژگیهای خانهٴ گزینه‌ای",
+HiddenFieldProp		: "ویژگیهای فیلد پنهان",
+RadioButtonProp		: "ویژگیهای دکمهٴ رادیویی",
+ImageButtonProp		: "ویژگیهای دکمهٴ تصویری",
+TextFieldProp		: "ویژگیهای فیلد متنی",
+SelectionFieldProp	: "ویژگیهای فیلد چندگزینه‌ای",
+TextareaProp		: "ویژگیهای ناحیهٴ متنی",
+FormProp			: "ویژگیهای فرم",
+
+FontFormats			: "نرمال;فرمت‌شده;آدرس;سرنویس 1;سرنویس 2;سرنویس 3;سرنویس 4;سرنویس 5;سرنویس 6;بند;(DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "پردازش XHTML. لطفا صبر کنید...",
+Done				: "انجام شد",
+PasteWordConfirm	: "متنی که می‌خواهید بچسبانید به نظر می‌رسد از Word کپی شده است. آیا می‌خواهید قبل از چسباندن آن را پاک‌سازی کنید؟",
+NotCompatiblePaste	: "این فرمان برای مرورگر Internet Explorer از نگارش 5.5 یا بالاتر در دسترس است. آیا می‌خواهید بدون پاک‌سازی، متن را بچسبانید؟",
+UnknownToolbarItem	: "فقرهٴ نوارابزار ناشناخته \"%1\"",
+UnknownCommand		: "نام دستور ناشناخته \"%1\"",
+NotImplemented		: "دستور پیاده‌سازی‌نشده",
+UnknownToolbarSet	: "مجموعهٴ نوارابزار \"%1\" وجود ندارد",
+NoActiveX			: "تنظیمات امنیتی مرورگر شما ممکن است در بعضی از ویژگیهای مرورگر محدودیت ایجاد کند. شما باید گزینهٴ \"Run ActiveX controls and plug-ins\" را فعال کنید. ممکن است شما با خطاهایی روبرو باشید و متوجه کمبود ویژگیهایی شوید.",
+BrowseServerBlocked : "توانایی بازگشایی مرورگر منابع فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+DialogBlocked		: "توانایی بازگشایی پنجرهٴ کوچک ِگفتگو فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+VisitLinkBlocked	: "امکان بازکردن یک پنجره جدید نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
+
+// Dialogs
+DlgBtnOK			: "پذیرش",
+DlgBtnCancel		: "انصراف",
+DlgBtnClose			: "بستن",
+DlgBtnBrowseServer	: "فهرست‌نمایی سرور",
+DlgAdvancedTag		: "پیشرفته",
+DlgOpOther			: "<غیره>",
+DlgInfoTab			: "اطلاعات",
+DlgAlertUrl			: "لطفاً URL را بنویسید",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<تعین‌نشده>",
+DlgGenId			: "شناسه",
+DlgGenLangDir		: "جهت‌نمای زبان",
+DlgGenLangDirLtr	: "چپ به راست (LTR)",
+DlgGenLangDirRtl	: "راست به چپ (RTL)",
+DlgGenLangCode		: "کد زبان",
+DlgGenAccessKey		: "کلید دستیابی",
+DlgGenName			: "نام",
+DlgGenTabIndex		: "نمایهٴ دسترسی با Tab",
+DlgGenLongDescr		: "URL توصیف طولانی",
+DlgGenClass			: "کلاسهای شیوه‌نامه(Stylesheet)",
+DlgGenTitle			: "عنوان کمکی",
+DlgGenContType		: "نوع محتوای کمکی",
+DlgGenLinkCharset	: "نویسه‌گان منبع ِپیوندشده",
+DlgGenStyle			: "شیوه(style)",
+
+// Image Dialog
+DlgImgTitle			: "ویژگیهای تصویر",
+DlgImgInfoTab		: "اطلاعات تصویر",
+DlgImgBtnUpload		: "به سرور بفرست",
+DlgImgURL			: "URL",
+DlgImgUpload		: "انتقال به سرور",
+DlgImgAlt			: "متن جایگزین",
+DlgImgWidth			: "پهنا",
+DlgImgHeight		: "درازا",
+DlgImgLockRatio		: "قفل‌کردن ِنسبت",
+DlgBtnResetSize		: "بازنشانی اندازه",
+DlgImgBorder		: "لبه",
+DlgImgHSpace		: "فاصلهٴ افقی",
+DlgImgVSpace		: "فاصلهٴ عمودی",
+DlgImgAlign			: "چینش",
+DlgImgAlignLeft		: "چپ",
+DlgImgAlignAbsBottom: "پائین مطلق",
+DlgImgAlignAbsMiddle: "وسط مطلق",
+DlgImgAlignBaseline	: "خط‌پایه",
+DlgImgAlignBottom	: "پائین",
+DlgImgAlignMiddle	: "وسط",
+DlgImgAlignRight	: "راست",
+DlgImgAlignTextTop	: "متن بالا",
+DlgImgAlignTop		: "بالا",
+DlgImgPreview		: "پیش‌نمایش",
+DlgImgAlertUrl		: "لطفا URL تصویر را بنویسید",
+DlgImgLinkTab		: "پیوند",
+
+// Flash Dialog
+DlgFlashTitle		: "ویژگیهای Flash",
+DlgFlashChkPlay		: "آغاز ِخودکار",
+DlgFlashChkLoop		: "اجرای پیاپی",
+DlgFlashChkMenu		: "دردسترس‌بودن منوی Flash",
+DlgFlashScale		: "مقیاس",
+DlgFlashScaleAll	: "نمایش همه",
+DlgFlashScaleNoBorder	: "بدون کران",
+DlgFlashScaleFit	: "جایگیری کامل",
+
+// Link Dialog
+DlgLnkWindowTitle	: "پیوند",
+DlgLnkInfoTab		: "اطلاعات پیوند",
+DlgLnkTargetTab		: "مقصد",
+
+DlgLnkType			: "نوع پیوند",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "لنگر در همین صفحه",
+DlgLnkTypeEMail		: "پست الکترونیکی",
+DlgLnkProto			: "پروتکل",
+DlgLnkProtoOther	: "<دیگر>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "یک لنگر برگزینید",
+DlgLnkAnchorByName	: "با نام لنگر",
+DlgLnkAnchorById	: "با شناسهٴ المان",
+DlgLnkNoAnchors		: "(در این سند لنگری دردسترس نیست)",
+DlgLnkEMail			: "نشانی پست الکترونیکی",
+DlgLnkEMailSubject	: "موضوع پیام",
+DlgLnkEMailBody		: "متن پیام",
+DlgLnkUpload		: "انتقال به سرور",
+DlgLnkBtnUpload		: "به سرور بفرست",
+
+DlgLnkTarget		: "مقصد",
+DlgLnkTargetFrame	: "<فریم>",
+DlgLnkTargetPopup	: "<پنجرهٴ پاپاپ>",
+DlgLnkTargetBlank	: "پنجرهٴ دیگر (_blank)",
+DlgLnkTargetParent	: "پنجرهٴ والد (_parent)",
+DlgLnkTargetSelf	: "همان پنجره (_self)",
+DlgLnkTargetTop		: "بالاترین پنجره (_top)",
+DlgLnkTargetFrameName	: "نام فریم مقصد",
+DlgLnkPopWinName	: "نام پنجرهٴ پاپاپ",
+DlgLnkPopWinFeat	: "ویژگیهای پنجرهٴ پاپاپ",
+DlgLnkPopResize		: "قابل تغییر اندازه",
+DlgLnkPopLocation	: "نوار موقعیت",
+DlgLnkPopMenu		: "نوار منو",
+DlgLnkPopScroll		: "میله‌های پیمایش",
+DlgLnkPopStatus		: "نوار وضعیت",
+DlgLnkPopToolbar	: "نوارابزار",
+DlgLnkPopFullScrn	: "تمام‌صفحه (IE)",
+DlgLnkPopDependent	: "وابسته (Netscape)",
+DlgLnkPopWidth		: "پهنا",
+DlgLnkPopHeight		: "درازا",
+DlgLnkPopLeft		: "موقعیت ِچپ",
+DlgLnkPopTop		: "موقعیت ِبالا",
+
+DlnLnkMsgNoUrl		: "لطفا URL پیوند را بنویسید",
+DlnLnkMsgNoEMail	: "لطفا نشانی پست الکترونیکی را بنویسید",
+DlnLnkMsgNoAnchor	: "لطفا لنگری را برگزینید",
+DlnLnkMsgInvPopName	: "نام پنجرهٴ پاپاپ باید با یک نویسهٴ الفبایی آغاز گردد و نباید فاصله‌های خالی در آن باشند",
+
+// Color Dialog
+DlgColorTitle		: "گزینش رنگ",
+DlgColorBtnClear	: "پاک‌کردن",
+DlgColorHighlight	: "نمونه",
+DlgColorSelected	: "برگزیده",
+
+// Smiley Dialog
+DlgSmileyTitle		: "گنجاندن خندانک",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "گزینش نویسهٴ‌ویژه",
+
+// Table Dialog
+DlgTableTitle		: "ویژگیهای جدول",
+DlgTableRows		: "سطرها",
+DlgTableColumns		: "ستونها",
+DlgTableBorder		: "اندازهٴ لبه",
+DlgTableAlign		: "چینش",
+DlgTableAlignNotSet	: "<تعین‌نشده>",
+DlgTableAlignLeft	: "چپ",
+DlgTableAlignCenter	: "وسط",
+DlgTableAlignRight	: "راست",
+DlgTableWidth		: "پهنا",
+DlgTableWidthPx		: "پیکسل",
+DlgTableWidthPc		: "درصد",
+DlgTableHeight		: "درازا",
+DlgTableCellSpace	: "فاصلهٴ میان سلولها",
+DlgTableCellPad		: "فاصلهٴ پرشده در سلول",
+DlgTableCaption		: "عنوان",
+DlgTableSummary		: "خلاصه",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "ویژگیهای سلول",
+DlgCellWidth		: "پهنا",
+DlgCellWidthPx		: "پیکسل",
+DlgCellWidthPc		: "درصد",
+DlgCellHeight		: "درازا",
+DlgCellWordWrap		: "شکستن واژه‌ها",
+DlgCellWordWrapNotSet	: "<تعین‌نشده>",
+DlgCellWordWrapYes	: "بله",
+DlgCellWordWrapNo	: "خیر",
+DlgCellHorAlign		: "چینش ِافقی",
+DlgCellHorAlignNotSet	: "<تعین‌نشده>",
+DlgCellHorAlignLeft	: "چپ",
+DlgCellHorAlignCenter	: "وسط",
+DlgCellHorAlignRight: "راست",
+DlgCellVerAlign		: "چینش ِعمودی",
+DlgCellVerAlignNotSet	: "<تعین‌نشده>",
+DlgCellVerAlignTop	: "بالا",
+DlgCellVerAlignMiddle	: "میان",
+DlgCellVerAlignBottom	: "پائین",
+DlgCellVerAlignBaseline	: "خط‌پایه",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "گستردگی سطرها",
+DlgCellCollSpan		: "گستردگی ستونها",
+DlgCellBackColor	: "رنگ پس‌زمینه",
+DlgCellBorderColor	: "رنگ لبه",
+DlgCellBtnSelect	: "برگزینید...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "جستجو و جایگزینی",
+
+// Find Dialog
+DlgFindTitle		: "یافتن",
+DlgFindFindBtn		: "یافتن",
+DlgFindNotFoundMsg	: "متن موردنظر یافت نشد.",
+
+// Replace Dialog
+DlgReplaceTitle			: "جایگزینی",
+DlgReplaceFindLbl		: "چه‌چیز را می‌یابید:",
+DlgReplaceReplaceLbl	: "جایگزینی با:",
+DlgReplaceCaseChk		: "همسانی در بزرگی و کوچکی نویسه‌ها",
+DlgReplaceReplaceBtn	: "جایگزینی",
+DlgReplaceReplAllBtn	: "جایگزینی همهٴ یافته‌ها",
+DlgReplaceWordChk		: "همسانی با واژهٴ کامل",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمه‌های صفحه‌کلید این کار را انجام دهید (Ctrl+X).",
+PasteErrorCopy	: "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد که ویرایشگر به طور خودکار عملکردهای کپی‌کردن را انجام دهد. لطفا با دکمه‌های صفحه‌کلید این کار را انجام دهید (Ctrl+C).",
+
+PasteAsText		: "چسباندن به عنوان متن ِساده",
+PasteFromWord	: "چسباندن از Word",
+
+DlgPasteMsg2	: "لطفا متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید و <STRONG>پذیرش</STRONG> را بزنید.",
+DlgPasteSec		: "به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمی‌تواند دسترسی مستقیم به داده‌های clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.",
+DlgPasteIgnoreFont		: "چشم‌پوشی از تعاریف نوع قلم",
+DlgPasteRemoveStyles	: "چشم‌پوشی از تعاریف سبک (style)",
+
+// Color Picker
+ColorAutomatic	: "خودکار",
+ColorMoreColors	: "رنگهای بیشتر...",
+
+// Document Properties
+DocProps		: "ویژگیهای سند",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ویژگیهای لنگر",
+DlgAnchorName		: "نام لنگر",
+DlgAnchorErrorName	: "لطفا نام لنگر را بنویسید",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "در واژه‌نامه یافت نشد",
+DlgSpellChangeTo		: "تغییر به",
+DlgSpellBtnIgnore		: "چشم‌پوشی",
+DlgSpellBtnIgnoreAll	: "چشم‌پوشی همه",
+DlgSpellBtnReplace		: "جایگزینی",
+DlgSpellBtnReplaceAll	: "جایگزینی همه",
+DlgSpellBtnUndo			: "واچینش",
+DlgSpellNoSuggestions	: "- پیشنهادی نیست -",
+DlgSpellProgress		: "بررسی املا در حال انجام...",
+DlgSpellNoMispell		: "بررسی املا انجام شد. هیچ غلط‌املائی یافت نشد",
+DlgSpellNoChanges		: "بررسی املا انجام شد. هیچ واژه‌ای تغییر نیافت",
+DlgSpellOneChange		: "بررسی املا انجام شد. یک واژه تغییر یافت",
+DlgSpellManyChanges		: "بررسی املا انجام شد. %1 واژه تغییر یافت",
+
+IeSpellDownload			: "بررسی‌کنندهٴ املا نصب نشده است. آیا می‌خواهید آن را هم‌اکنون دریافت کنید؟",
+
+// Button Dialog
+DlgButtonText		: "متن (مقدار)",
+DlgButtonType		: "نوع",
+DlgButtonTypeBtn	: "دکمه",
+DlgButtonTypeSbm	: "Submit",
+DlgButtonTypeRst	: "بازنشانی (Reset)",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "نام",
+DlgCheckboxValue	: "مقدار",
+DlgCheckboxSelected	: "برگزیده",
+
+// Form Dialog
+DlgFormName		: "نام",
+DlgFormAction	: "رویداد",
+DlgFormMethod	: "متد",
+
+// Select Field Dialog
+DlgSelectName		: "نام",
+DlgSelectValue		: "مقدار",
+DlgSelectSize		: "اندازه",
+DlgSelectLines		: "خطوط",
+DlgSelectChkMulti	: "گزینش چندگانه فراهم باشد",
+DlgSelectOpAvail	: "گزینه‌های دردسترس",
+DlgSelectOpText		: "متن",
+DlgSelectOpValue	: "مقدار",
+DlgSelectBtnAdd		: "افزودن",
+DlgSelectBtnModify	: "ویرایش",
+DlgSelectBtnUp		: "بالا",
+DlgSelectBtnDown	: "پائین",
+DlgSelectBtnSetValue : "تنظیم به عنوان مقدار ِبرگزیده",
+DlgSelectBtnDelete	: "پاک‌کردن",
+
+// Textarea Dialog
+DlgTextareaName	: "نام",
+DlgTextareaCols	: "ستونها",
+DlgTextareaRows	: "سطرها",
+
+// Text Field Dialog
+DlgTextName			: "نام",
+DlgTextValue		: "مقدار",
+DlgTextCharWidth	: "پهنای نویسه",
+DlgTextMaxChars		: "بیشینهٴ نویسه‌ها",
+DlgTextType			: "نوع",
+DlgTextTypeText		: "متن",
+DlgTextTypePass		: "گذرواژه",
+
+// Hidden Field Dialog
+DlgHiddenName	: "نام",
+DlgHiddenValue	: "مقدار",
+
+// Bulleted List Dialog
+BulletedListProp	: "ویژگیهای فهرست نقطه‌ای",
+NumberedListProp	: "ویژگیهای فهرست شماره‌دار",
+DlgLstStart			: "آغاز",
+DlgLstType			: "نوع",
+DlgLstTypeCircle	: "دایره",
+DlgLstTypeDisc		: "قرص",
+DlgLstTypeSquare	: "چهارگوش",
+DlgLstTypeNumbers	: "شماره‌ها (1، 2، 3)",
+DlgLstTypeLCase		: "نویسه‌های کوچک (a، b، c)",
+DlgLstTypeUCase		: "نویسه‌های بزرگ (A، B، C)",
+DlgLstTypeSRoman	: "شمارگان رومی کوچک (i، ii، iii)",
+DlgLstTypeLRoman	: "شمارگان رومی بزرگ (I، II، III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "عمومی",
+DlgDocBackTab		: "پس‌زمینه",
+DlgDocColorsTab		: "رنگها و حاشیه‌ها",
+DlgDocMetaTab		: "فراداده",
+
+DlgDocPageTitle		: "عنوان صفحه",
+DlgDocLangDir		: "جهت زبان",
+DlgDocLangDirLTR	: "چپ به راست (LTR(",
+DlgDocLangDirRTL	: "راست به چپ (RTL(",
+DlgDocLangCode		: "کد زبان",
+DlgDocCharSet		: "رمزگذاری نویسه‌گان",
+DlgDocCharSetCE		: "اروپای مرکزی",
+DlgDocCharSetCT		: "چینی رسمی (Big5)",
+DlgDocCharSetCR		: "سیریلیک",
+DlgDocCharSetGR		: "یونانی",
+DlgDocCharSetJP		: "ژاپنی",
+DlgDocCharSetKR		: "کره‌ای",
+DlgDocCharSetTR		: "ترکی",
+DlgDocCharSetUN		: "یونیکُد (UTF-8)",
+DlgDocCharSetWE		: "اروپای غربی",
+DlgDocCharSetOther	: "رمزگذاری نویسه‌گان دیگر",
+
+DlgDocDocType		: "عنوان نوع سند",
+DlgDocDocTypeOther	: "عنوان نوع سند دیگر",
+DlgDocIncXHTML		: "شامل تعاریف XHTML",
+DlgDocBgColor		: "رنگ پس‌زمینه",
+DlgDocBgImage		: "URL تصویر پس‌زمینه",
+DlgDocBgNoScroll	: "پس‌زمینهٴ پیمایش‌ناپذیر",
+DlgDocCText			: "متن",
+DlgDocCLink			: "پیوند",
+DlgDocCVisited		: "پیوند مشاهده‌شده",
+DlgDocCActive		: "پیوند فعال",
+DlgDocMargins		: "حاشیه‌های صفحه",
+DlgDocMaTop			: "بالا",
+DlgDocMaLeft		: "چپ",
+DlgDocMaRight		: "راست",
+DlgDocMaBottom		: "پایین",
+DlgDocMeIndex		: "کلیدواژگان نمایه‌گذاری سند (با کاما جدا شوند)",
+DlgDocMeDescr		: "توصیف سند",
+DlgDocMeAuthor		: "نویسنده",
+DlgDocMeCopy		: "کپی‌رایت",
+DlgDocPreview		: "پیش‌نمایش",
+
+// Templates Dialog
+Templates			: "الگوها",
+DlgTemplatesTitle	: "الگوهای محتویات",
+DlgTemplatesSelMsg	: "لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند رفت):",
+DlgTemplatesLoading	: "بارگذاری فهرست الگوها. لطفا صبر کنید...",
+DlgTemplatesNoTpl	: "(الگوئی تعریف نشده است)",
+DlgTemplatesReplace	: "محتویات کنونی جایگزین شوند",
+
+// About Dialog
+DlgAboutAboutTab	: "درباره",
+DlgAboutBrowserInfoTab	: "اطلاعات مرورگر",
+DlgAboutLicenseTab	: "گواهینامه",
+DlgAboutVersion		: "نگارش",
+DlgAboutInfo		: "برای آگاهی بیشتر به این نشانی بروید",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bg.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bg.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/bg.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Bulgarian language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Скрий панела с инструментите",
+ToolbarExpand		: "Покажи панела с инструментите",
+
+// Toolbar Items and Context Menu
+Save				: "Запази",
+NewPage				: "Нова страница",
+Preview				: "Предварителен изглед",
+Cut					: "Изрежи",
+Copy				: "Запамети",
+Paste				: "Вмъкни",
+PasteText			: "Вмъкни само текст",
+PasteWord			: "Вмъкни от MS Word",
+Print				: "Печат",
+SelectAll			: "Селектирай всичко",
+RemoveFormat		: "Изтрий форматирането",
+InsertLinkLbl		: "Връзка",
+InsertLink			: "Добави/Редактирай връзка",
+RemoveLink			: "Изтрий връзка",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Добави/Редактирай котва",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Изображение",
+InsertImage			: "Добави/Редактирай изображение",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Добави/Редактиай Flash обект",
+InsertTableLbl		: "Таблица",
+InsertTable			: "Добави/Редактирай таблица",
+InsertLineLbl		: "Линия",
+InsertLine			: "Вмъкни хоризонтална линия",
+InsertSpecialCharLbl: "Специален символ",
+InsertSpecialChar	: "Вмъкни специален символ",
+InsertSmileyLbl		: "Усмивка",
+InsertSmiley		: "Добави усмивка",
+About				: "За FCKeditor",
+Bold				: "Удебелен",
+Italic				: "Курсив",
+Underline			: "Подчертан",
+StrikeThrough		: "Зачертан",
+Subscript			: "Индекс за база",
+Superscript			: "Индекс за степен",
+LeftJustify			: "Подравняване в ляво",
+CenterJustify		: "Подравнявне в средата",
+RightJustify		: "Подравняване в дясно",
+BlockJustify		: "Двустранно подравняване",
+DecreaseIndent		: "Намали отстъпа",
+IncreaseIndent		: "Увеличи отстъпа",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Отмени",
+Redo				: "Повтори",
+NumberedListLbl		: "Нумериран списък",
+NumberedList		: "Добави/Изтрий нумериран списък",
+BulletedListLbl		: "Ненумериран списък",
+BulletedList		: "Добави/Изтрий ненумериран списък",
+ShowTableBorders	: "Покажи рамките на таблицата",
+ShowDetails			: "Покажи подробности",
+Style				: "Стил",
+FontFormat			: "Формат",
+Font				: "Шрифт",
+FontSize			: "Размер",
+TextColor			: "Цвят на текста",
+BGColor				: "Цвят на фона",
+Source				: "Код",
+Find				: "Търси",
+Replace				: "Замести",
+SpellCheck			: "Провери правописа",
+UniversalKeyboard	: "Универсална клавиатура",
+PageBreakLbl		: "Нов ред",
+PageBreak			: "Вмъкни нов ред",
+
+Form			: "Формуляр",
+Checkbox		: "Поле за отметка",
+RadioButton		: "Поле за опция",
+TextField		: "Текстово поле",
+Textarea		: "Текстова област",
+HiddenField		: "Скрито поле",
+Button			: "Бутон",
+SelectionField	: "Падащо меню с опции",
+ImageButton		: "Бутон-изображение",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Редактирай връзка",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Изтрий редовете",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Изтрий колоните",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Изтрий клетките",
+MergeCells			: "Обедини клетките",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Изтрий таблицата",
+CellProperties		: "Параметри на клетката",
+TableProperties		: "Параметри на таблицата",
+ImageProperties		: "Параметри на изображението",
+FlashProperties		: "Параметри на Flash обекта",
+
+AnchorProp			: "Параметри на котвата",
+ButtonProp			: "Параметри на бутона",
+CheckboxProp		: "Параметри на полето за отметка",
+HiddenFieldProp		: "Параметри на скритото поле",
+RadioButtonProp		: "Параметри на полето за опция",
+ImageButtonProp		: "Параметри на бутона-изображение",
+TextFieldProp		: "Параметри на текстовото-поле",
+SelectionFieldProp	: "Параметри на падащото меню с опции",
+TextareaProp		: "Параметри на текстовата област",
+FormProp			: "Параметри на формуляра",
+
+FontFormats			: "Нормален;Форматиран;Адрес;Заглавие 1;Заглавие 2;Заглавие 3;Заглавие 4;Заглавие 5;Заглавие 6;Параграф (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Обработка на XHTML. Моля изчакайте...",
+Done				: "Готово",
+PasteWordConfirm	: "Текстът, който искате да вмъкнете е копиран от MS Word. Желаете ли да бъде изчистен преди вмъкването?",
+NotCompatiblePaste	: "Тази операция изисква MS Internet Explorer версия 5.5 или по-висока. Желаете ли да вмъкнете запаметеното без изчистване?",
+UnknownToolbarItem	: "Непознат инструмент \"%1\"",
+UnknownCommand		: "Непозната команда \"%1\"",
+NotImplemented		: "Командата не е имплементирана",
+UnknownToolbarSet	: "Панелът \"%1\" не съществува",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "ОК",
+DlgBtnCancel		: "Отказ",
+DlgBtnClose			: "Затвори",
+DlgBtnBrowseServer	: "Разгледай сървъра",
+DlgAdvancedTag		: "Подробности...",
+DlgOpOther			: "<Друго>",
+DlgInfoTab			: "Информация",
+DlgAlertUrl			: "Моля, въведете пълния път (URL)",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<не е настроен>",
+DlgGenId			: "Идентификатор",
+DlgGenLangDir		: "посока на речта",
+DlgGenLangDirLtr	: "От ляво на дясно",
+DlgGenLangDirRtl	: "От дясно на ляво",
+DlgGenLangCode		: "Код на езика",
+DlgGenAccessKey		: "Бърз клавиш",
+DlgGenName			: "Име",
+DlgGenTabIndex		: "Ред на достъп",
+DlgGenLongDescr		: "Описание на връзката",
+DlgGenClass			: "Клас от стиловите таблици",
+DlgGenTitle			: "Препоръчително заглавие",
+DlgGenContType		: "Препоръчителен тип на съдържанието",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Тип на свързания ресурс",
+DlgGenStyle			: "Стил",
+
+// Image Dialog
+DlgImgTitle			: "Параметри на изображението",
+DlgImgInfoTab		: "Информация за изображението",
+DlgImgBtnUpload		: "Прати към сървъра",
+DlgImgURL			: "Пълен път (URL)",
+DlgImgUpload		: "Качи",
+DlgImgAlt			: "Алтернативен текст",
+DlgImgWidth			: "Ширина",
+DlgImgHeight		: "Височина",
+DlgImgLockRatio		: "Запази пропорцията",
+DlgBtnResetSize		: "Възстанови размера",
+DlgImgBorder		: "Рамка",
+DlgImgHSpace		: "Хоризонтален отстъп",
+DlgImgVSpace		: "Вертикален отстъп",
+DlgImgAlign			: "Подравняване",
+DlgImgAlignLeft		: "Ляво",
+DlgImgAlignAbsBottom: "Най-долу",
+DlgImgAlignAbsMiddle: "Точно по средата",
+DlgImgAlignBaseline	: "По базовата линия",
+DlgImgAlignBottom	: "Долу",
+DlgImgAlignMiddle	: "По средата",
+DlgImgAlignRight	: "Дясно",
+DlgImgAlignTextTop	: "Върху текста",
+DlgImgAlignTop		: "Отгоре",
+DlgImgPreview		: "Изглед",
+DlgImgAlertUrl		: "Моля, въведете пълния път до изображението",
+DlgImgLinkTab		: "Връзка",
+
+// Flash Dialog
+DlgFlashTitle		: "Параметри на Flash обекта",
+DlgFlashChkPlay		: "Автоматично стартиране",
+DlgFlashChkLoop		: "Ново стартиране след завършването",
+DlgFlashChkMenu		: "Разрешено Flash меню",
+DlgFlashScale		: "Оразмеряване",
+DlgFlashScaleAll	: "Покажи целия обект",
+DlgFlashScaleNoBorder	: "Без рамка",
+DlgFlashScaleFit	: "Според мястото",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Връзка",
+DlgLnkInfoTab		: "Информация за връзката",
+DlgLnkTargetTab		: "Цел",
+
+DlgLnkType			: "Вид на връзката",
+DlgLnkTypeURL		: "Пълен път (URL)",
+DlgLnkTypeAnchor	: "Котва в текущата страница",
+DlgLnkTypeEMail		: "Е-поща",
+DlgLnkProto			: "Протокол",
+DlgLnkProtoOther	: "<друго>",
+DlgLnkURL			: "Пълен път (URL)",
+DlgLnkAnchorSel		: "Изберете котва",
+DlgLnkAnchorByName	: "По име на котвата",
+DlgLnkAnchorById	: "По идентификатор на елемент",
+DlgLnkNoAnchors		: "(Няма котви в текущия документ)",
+DlgLnkEMail			: "Адрес за е-поща",
+DlgLnkEMailSubject	: "Тема на писмото",
+DlgLnkEMailBody		: "Текст на писмото",
+DlgLnkUpload		: "Качи",
+DlgLnkBtnUpload		: "Прати на сървъра",
+
+DlgLnkTarget		: "Цел",
+DlgLnkTargetFrame	: "<рамка>",
+DlgLnkTargetPopup	: "<дъщерен прозорец>",
+DlgLnkTargetBlank	: "Нов прозорец (_blank)",
+DlgLnkTargetParent	: "Родителски прозорец (_parent)",
+DlgLnkTargetSelf	: "Активния прозорец (_self)",
+DlgLnkTargetTop		: "Целия прозорец (_top)",
+DlgLnkTargetFrameName	: "Име на целевия прозорец",
+DlgLnkPopWinName	: "Име на дъщерния прозорец",
+DlgLnkPopWinFeat	: "Параметри на дъщерния прозорец",
+DlgLnkPopResize		: "С променливи размери",
+DlgLnkPopLocation	: "Поле за адрес",
+DlgLnkPopMenu		: "Меню",
+DlgLnkPopScroll		: "Плъзгач",
+DlgLnkPopStatus		: "Поле за статус",
+DlgLnkPopToolbar	: "Панел с бутони",
+DlgLnkPopFullScrn	: "Голям екран (MS IE)",
+DlgLnkPopDependent	: "Зависим (Netscape)",
+DlgLnkPopWidth		: "Ширина",
+DlgLnkPopHeight		: "Височина",
+DlgLnkPopLeft		: "Координати - X",
+DlgLnkPopTop		: "Координати - Y",
+
+DlnLnkMsgNoUrl		: "Моля, напишете пълния път (URL)",
+DlnLnkMsgNoEMail	: "Моля, напишете адреса за е-поща",
+DlnLnkMsgNoAnchor	: "Моля, изберете котва",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Изберете цвят",
+DlgColorBtnClear	: "Изчисти",
+DlgColorHighlight	: "Текущ",
+DlgColorSelected	: "Избран",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Добави усмивка",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Изберете специален символ",
+
+// Table Dialog
+DlgTableTitle		: "Параметри на таблицата",
+DlgTableRows		: "Редове",
+DlgTableColumns		: "Колони",
+DlgTableBorder		: "Размер на рамката",
+DlgTableAlign		: "Подравняване",
+DlgTableAlignNotSet	: "<Не е избрано>",
+DlgTableAlignLeft	: "Ляво",
+DlgTableAlignCenter	: "Център",
+DlgTableAlignRight	: "Дясно",
+DlgTableWidth		: "Ширина",
+DlgTableWidthPx		: "пиксели",
+DlgTableWidthPc		: "проценти",
+DlgTableHeight		: "Височина",
+DlgTableCellSpace	: "Разстояние между клетките",
+DlgTableCellPad		: "Отстъп на съдържанието в клетките",
+DlgTableCaption		: "Заглавие",
+DlgTableSummary		: "Резюме",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Параметри на клетката",
+DlgCellWidth		: "Ширина",
+DlgCellWidthPx		: "пиксели",
+DlgCellWidthPc		: "проценти",
+DlgCellHeight		: "Височина",
+DlgCellWordWrap		: "пренасяне на нов ред",
+DlgCellWordWrapNotSet	: "<Не е настроено>",
+DlgCellWordWrapYes	: "Да",
+DlgCellWordWrapNo	: "не",
+DlgCellHorAlign		: "Хоризонтално подравняване",
+DlgCellHorAlignNotSet	: "<Не е настроено>",
+DlgCellHorAlignLeft	: "Ляво",
+DlgCellHorAlignCenter	: "Център",
+DlgCellHorAlignRight: "Дясно",
+DlgCellVerAlign		: "Вертикално подравняване",
+DlgCellVerAlignNotSet	: "<Не е настроено>",
+DlgCellVerAlignTop	: "Горе",
+DlgCellVerAlignMiddle	: "По средата",
+DlgCellVerAlignBottom	: "Долу",
+DlgCellVerAlignBaseline	: "По базовата линия",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "повече от един ред",
+DlgCellCollSpan		: "повече от една колона",
+DlgCellBackColor	: "фонов цвят",
+DlgCellBorderColor	: "цвят на рамката",
+DlgCellBtnSelect	: "Изберете...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Търси",
+DlgFindFindBtn		: "Търси",
+DlgFindNotFoundMsg	: "Указания текст не беше намерен.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Замести",
+DlgReplaceFindLbl		: "Търси:",
+DlgReplaceReplaceLbl	: "Замести с:",
+DlgReplaceCaseChk		: "Със същия регистър",
+DlgReplaceReplaceBtn	: "Замести",
+DlgReplaceReplAllBtn	: "Замести всички",
+DlgReplaceWordChk		: "Търси същата дума",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).",
+PasteErrorCopy	: "Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).",
+
+PasteAsText		: "Вмъкни като чист текст",
+PasteFromWord	: "Вмъкни от MS Word",
+
+DlgPasteMsg2	: "Вмъкнете тук съдъжанието с клавиатуарата (<STRONG>Ctrl+V</STRONG>) и натиснете <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Игнорирай шрифтовите дефиниции",
+DlgPasteRemoveStyles	: "Изтрий стиловите дефиниции",
+
+// Color Picker
+ColorAutomatic	: "По подразбиране",
+ColorMoreColors	: "Други цветове...",
+
+// Document Properties
+DocProps		: "Параметри на документа",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Параметри на котвата",
+DlgAnchorName		: "Име на котвата",
+DlgAnchorErrorName	: "Моля, въведете име на котвата",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Липсва в речника",
+DlgSpellChangeTo		: "Промени на",
+DlgSpellBtnIgnore		: "Игнорирай",
+DlgSpellBtnIgnoreAll	: "Игнорирай всички",
+DlgSpellBtnReplace		: "Замести",
+DlgSpellBtnReplaceAll	: "Замести всички",
+DlgSpellBtnUndo			: "Отмени",
+DlgSpellNoSuggestions	: "- Няма предложения -",
+DlgSpellProgress		: "Извършване на проверката за правопис...",
+DlgSpellNoMispell		: "Проверката за правопис завършена: не са открити правописни грешки",
+DlgSpellNoChanges		: "Проверката за правопис завършена: няма променени думи",
+DlgSpellOneChange		: "Проверката за правопис завършена: една дума е променена",
+DlgSpellManyChanges		: "Проверката за правопис завършена: %1 думи са променени",
+
+IeSpellDownload			: "Инструментът за проверка на правопис не е инсталиран. Желаете ли да го инсталирате ?",
+
+// Button Dialog
+DlgButtonText		: "Текст (Стойност)",
+DlgButtonType		: "Тип",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Име",
+DlgCheckboxValue	: "Стойност",
+DlgCheckboxSelected	: "Отметнато",
+
+// Form Dialog
+DlgFormName		: "Име",
+DlgFormAction	: "Действие",
+DlgFormMethod	: "Метод",
+
+// Select Field Dialog
+DlgSelectName		: "Име",
+DlgSelectValue		: "Стойност",
+DlgSelectSize		: "Размер",
+DlgSelectLines		: "линии",
+DlgSelectChkMulti	: "Разрешено множествено селектиране",
+DlgSelectOpAvail	: "Възможни опции",
+DlgSelectOpText		: "Текст",
+DlgSelectOpValue	: "Стойност",
+DlgSelectBtnAdd		: "Добави",
+DlgSelectBtnModify	: "Промени",
+DlgSelectBtnUp		: "Нагоре",
+DlgSelectBtnDown	: "Надолу",
+DlgSelectBtnSetValue : "Настрой като избрана стойност",
+DlgSelectBtnDelete	: "Изтрий",
+
+// Textarea Dialog
+DlgTextareaName	: "Име",
+DlgTextareaCols	: "Колони",
+DlgTextareaRows	: "Редове",
+
+// Text Field Dialog
+DlgTextName			: "Име",
+DlgTextValue		: "Стойност",
+DlgTextCharWidth	: "Ширина на символите",
+DlgTextMaxChars		: "Максимум символи",
+DlgTextType			: "Тип",
+DlgTextTypeText		: "Текст",
+DlgTextTypePass		: "Парола",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Име",
+DlgHiddenValue	: "Стойност",
+
+// Bulleted List Dialog
+BulletedListProp	: "Параметри на ненумерирания списък",
+NumberedListProp	: "Параметри на нумерирания списък",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Тип",
+DlgLstTypeCircle	: "Окръжност",
+DlgLstTypeDisc		: "Кръг",
+DlgLstTypeSquare	: "Квадрат",
+DlgLstTypeNumbers	: "Числа (1, 2, 3)",
+DlgLstTypeLCase		: "Малки букви (a, b, c)",
+DlgLstTypeUCase		: "Големи букви (A, B, C)",
+DlgLstTypeSRoman	: "Малки римски числа (i, ii, iii)",
+DlgLstTypeLRoman	: "Големи римски числа (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Общи",
+DlgDocBackTab		: "Фон",
+DlgDocColorsTab		: "Цветове и отстъпи",
+DlgDocMetaTab		: "Мета данни",
+
+DlgDocPageTitle		: "Заглавие на страницата",
+DlgDocLangDir		: "Посока на речта",
+DlgDocLangDirLTR	: "От ляво на дясно",
+DlgDocLangDirRTL	: "От дясно на ляво",
+DlgDocLangCode		: "Код на езика",
+DlgDocCharSet		: "Кодиране на символите",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Друго кодиране на символите",
+
+DlgDocDocType		: "Тип на документа",
+DlgDocDocTypeOther	: "Друг тип на документа",
+DlgDocIncXHTML		: "Включи XHTML декларация",
+DlgDocBgColor		: "Цвят на фона",
+DlgDocBgImage		: "Пълен път до фоновото изображение",
+DlgDocBgNoScroll	: "Не-повтарящо се фоново изображение",
+DlgDocCText			: "Текст",
+DlgDocCLink			: "Връзка",
+DlgDocCVisited		: "Посетена връзка",
+DlgDocCActive		: "Активна връзка",
+DlgDocMargins		: "Отстъпи на страницата",
+DlgDocMaTop			: "Горе",
+DlgDocMaLeft		: "Ляво",
+DlgDocMaRight		: "Дясно",
+DlgDocMaBottom		: "Долу",
+DlgDocMeIndex		: "Ключови думи за документа (разделени със запетаи)",
+DlgDocMeDescr		: "Описание на документа",
+DlgDocMeAuthor		: "Автор",
+DlgDocMeCopy		: "Авторски права",
+DlgDocPreview		: "Изглед",
+
+// Templates Dialog
+Templates			: "Шаблони",
+DlgTemplatesTitle	: "Шаблони",
+DlgTemplatesSelMsg	: "Изберете шаблон <br>(текущото съдържание на редактора ще бъде загубено):",
+DlgTemplatesLoading	: "Зареждане на списъка с шаблоните. Моля изчакайте...",
+DlgTemplatesNoTpl	: "(Няма дефинирани шаблони)",
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "За",
+DlgAboutBrowserInfoTab	: "Информация за браузъра",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "версия",
+DlgAboutInfo		: "За повече информация посетете",
+DlgAboutModule		: "Developed for Website Baker<br />modul version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/de.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/de.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/de.js	(revision 1610)
@@ -0,0 +1,541 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * German language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Symbolleiste einklappen",
+ToolbarExpand		: "Symbolleiste ausklappen",
+
+// Toolbar Items and Context Menu
+Save				: "Speichern",
+NewPage				: "Neue Seite",
+Preview				: "Vorschau",
+Cut					: "Ausschneiden",
+Copy				: "Kopieren",
+Paste				: "Einfügen",
+PasteText			: "aus Textdatei einfügen",
+PasteWord			: "aus MS-Word einfügen",
+Print				: "Drucken",
+SelectAll			: "Alles auswählen",
+RemoveFormat		: "Formatierungen entfernen",
+InsertLinkLbl		: "Link",
+InsertLink			: "Link einfügen/editieren",
+RemoveLink			: "Link entfernen",
+VisitLink			: "Link aufrufen",
+Anchor				: "Anker einfügen/editieren",
+AnchorDelete		: "Anker entfernen",
+InsertImageLbl		: "Bild",
+InsertImage			: "Bild einfügen/editieren",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash einfügen/editieren",
+InsertTableLbl		: "Tabelle",
+InsertTable			: "Tabelle einfügen/editieren",
+InsertLineLbl		: "Linie",
+InsertLine			: "Horizontale Linie einfügen",
+InsertSpecialCharLbl: "Sonderzeichen",
+InsertSpecialChar	: "Sonderzeichen einfügen/editieren",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley einfügen",
+About				: "Über FCKeditor",
+Bold				: "Fett",
+Italic				: "Kursiv",
+Underline			: "Unterstrichen",
+StrikeThrough		: "Durchgestrichen",
+Subscript			: "Tiefgestellt",
+Superscript			: "Hochgestellt",
+LeftJustify			: "Linksbündig",
+CenterJustify		: "Zentriert",
+RightJustify		: "Rechtsbündig",
+BlockJustify		: "Blocksatz",
+DecreaseIndent		: "Einzug verringern",
+IncreaseIndent		: "Einzug erhöhen",
+Blockquote			: "Zitatblock",
+CreateDiv			: "Erzeuge Div Block",
+EditDiv				: "Bearbeite Div Block",
+DeleteDiv			: "Entferne Div Block",
+Undo				: "Rückgängig",
+Redo				: "Wiederherstellen",
+NumberedListLbl		: "Nummerierte Liste",
+NumberedList		: "Nummerierte Liste einfügen/entfernen",
+BulletedListLbl		: "Liste",
+BulletedList		: "Liste einfügen/entfernen",
+ShowTableBorders	: "Zeige Tabellenrahmen",
+ShowDetails			: "Zeige Details",
+Style				: "Stil",
+FontFormat			: "Format",
+Font				: "Schriftart",
+FontSize			: "Größe",
+TextColor			: "Textfarbe",
+BGColor				: "Hintergrundfarbe",
+Source				: "Quellcode",
+Find				: "Suchen",
+Replace				: "Ersetzen",
+SpellCheck			: "Rechtschreibprüfung",
+UniversalKeyboard	: "Universal-Tastatur",
+PageBreakLbl		: "Seitenumbruch",
+PageBreak			: "Seitenumbruch einfügen",
+
+Form			: "Formular",
+Checkbox		: "Checkbox",
+RadioButton		: "Radiobutton",
+TextField		: "Textfeld einzeilig",
+Textarea		: "Textfeld mehrzeilig",
+HiddenField		: "verstecktes Feld",
+Button			: "Klickbutton",
+SelectionField	: "Auswahlfeld",
+ImageButton		: "Bildbutton",
+
+FitWindow		: "Editor maximieren",
+ShowBlocks		: "Blöcke anzeigen",
+
+// Context Menu
+EditLink			: "Link editieren",
+CellCM				: "Zelle",
+RowCM				: "Zeile",
+ColumnCM			: "Spalte",
+InsertRowAfter		: "Zeile unterhalb einfügen",
+InsertRowBefore		: "Zeile oberhalb einfügen",
+DeleteRows			: "Zeile entfernen",
+InsertColumnAfter	: "Spalte rechts danach einfügen",
+InsertColumnBefore	: "Spalte links davor einfügen",
+DeleteColumns		: "Spalte löschen",
+InsertCellAfter		: "Zelle danach einfügen",
+InsertCellBefore	: "Zelle davor einfügen",
+DeleteCells			: "Zelle löschen",
+MergeCells			: "Zellen verbinden",
+MergeRight			: "nach rechts verbinden",
+MergeDown			: "nach unten verbinden",
+HorizontalSplitCell	: "Zelle horizontal teilen",
+VerticalSplitCell	: "Zelle vertikal teilen",
+TableDelete			: "Tabelle löschen",
+CellProperties		: "Zellen-Eigenschaften",
+TableProperties		: "Tabellen-Eigenschaften",
+ImageProperties		: "Bild-Eigenschaften",
+FlashProperties		: "Flash-Eigenschaften",
+
+AnchorProp			: "Anker-Eigenschaften",
+ButtonProp			: "Button-Eigenschaften",
+CheckboxProp		: "Checkbox-Eigenschaften",
+HiddenFieldProp		: "Verstecktes Feld-Eigenschaften",
+RadioButtonProp		: "Optionsfeld-Eigenschaften",
+ImageButtonProp		: "Bildbutton-Eigenschaften",
+TextFieldProp		: "Textfeld (einzeilig) Eigenschaften",
+SelectionFieldProp	: "Auswahlfeld-Eigenschaften",
+TextareaProp		: "Textfeld (mehrzeilig) Eigenschaften",
+FormProp			: "Formular-Eigenschaften",
+
+FontFormats			: "Normal;Formatiert;Addresse;Überschrift 1;Überschrift 2;Überschrift 3;Überschrift 4;Überschrift 5;Überschrift 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Bearbeite XHTML. Bitte warten...",
+Done				: "Fertig",
+PasteWordConfirm	: "Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?",
+NotCompatiblePaste	: "Diese Funktion steht nur im Internet Explorer ab Version 5.5 zur Verfügung. Möchten Sie den Text unbereinigt einfügen?",
+UnknownToolbarItem	: "Unbekanntes Menüleisten-Objekt \"%1\"",
+UnknownCommand		: "Unbekannter Befehl \"%1\"",
+NotImplemented		: "Befehl nicht implementiert",
+UnknownToolbarSet	: "Menüleiste \"%1\" existiert nicht",
+NoActiveX			: "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können",
+BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+DialogBlocked		: "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+VisitLinkBlocked	: "Es war leider nicht möglich ein neues Fenster zu öffnen. Bitte versichern Sie sich das der Popup-Blocker ausgeschaltet ist.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Abbrechen",
+DlgBtnClose			: "Schließen",
+DlgBtnBrowseServer	: "Server durchsuchen",
+DlgAdvancedTag		: "Erweitert",
+DlgOpOther			: "<andere>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Bitte tragen Sie die URL ein",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nichts>",
+DlgGenId			: "ID",
+DlgGenLangDir		: "Schreibrichtung",
+DlgGenLangDirLtr	: "Links nach Rechts (LTR)",
+DlgGenLangDirRtl	: "Rechts nach Links (RTL)",
+DlgGenLangCode		: "Sprachenkürzel",
+DlgGenAccessKey		: "Zugriffstaste",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab-Index",
+DlgGenLongDescr		: "Langform URL",
+DlgGenClass			: "Stylesheet Klasse",
+DlgGenTitle			: "Titel Beschreibung",
+DlgGenContType		: "Inhaltstyp",
+DlgGenContRel		: "Relationtyp",
+DlgGenLinkCharset	: "Ziel-Zeichensatz",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Bild-Eigenschaften",
+DlgImgInfoTab		: "Bild-Info",
+DlgImgBtnUpload		: "Zum Server senden",
+DlgImgURL			: "Bildauswahl",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternativer Text",
+DlgImgWidth			: "Breite",
+DlgImgHeight		: "Höhe",
+DlgImgLockRatio		: "Größenverhältniss beibehalten",
+DlgBtnResetSize		: "Größe zurücksetzen",
+DlgImgBorder		: "Rahmen",
+DlgImgHSpace		: "Horizontal-Abstand",
+DlgImgVSpace		: "Vertikal-Abstand",
+DlgImgAlign			: "Ausrichtung",
+DlgImgAlignLeft		: "Links",
+DlgImgAlignAbsBottom: "Abs Unten",
+DlgImgAlignAbsMiddle: "Abs Mitte",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Unten",
+DlgImgAlignMiddle	: "Mitte",
+DlgImgAlignRight	: "Rechts",
+DlgImgAlignTextTop	: "Text Oben",
+DlgImgAlignTop		: "Oben",
+DlgImgPreview		: "Vorschau",
+DlgImgAlertUrl		: "Bitte geben Sie die Bild-URL an",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash-Eigenschaften",
+DlgFlashChkPlay		: "autom. Abspielen",
+DlgFlashChkLoop		: "Endlosschleife",
+DlgFlashChkMenu		: "Flash-Menü aktivieren",
+DlgFlashScale		: "Skalierung",
+DlgFlashScaleAll	: "Alles anzeigen",
+DlgFlashScaleNoBorder	: "ohne Rand",
+DlgFlashScaleFit	: "Passgenau",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link-Info",
+DlgLnkTargetTab		: "Zielseite",
+
+DlgLnkType			: "Link-Typ",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Anker in dieser Seite",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<anderes>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Anker auswählen",
+DlgLnkAnchorByName	: "nach Anker Name",
+DlgLnkAnchorById	: "nach Element Id",
+DlgLnkNoAnchors		: "(keine Anker im Dokument vorhanden)",
+DlgLnkEMail			: "E-Mail Addresse",
+DlgLnkEMailSubject	: "Betreffzeile",
+DlgLnkEMailBody		: "Nachrichtentext",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Zum Server senden",
+
+DlgLnkTarget		: "Zielseite",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Pop-up Fenster>",
+DlgLnkTargetBlank	: "Neues Fenster (_blank)",
+DlgLnkTargetParent	: "Oberes Fenster (_parent)",
+DlgLnkTargetSelf	: "Gleiches Fenster (_self)",
+DlgLnkTargetTop		: "Oberstes Fenster (_top)",
+DlgLnkTargetFrameName	: "Ziel-Fenster-Name",
+DlgLnkPopWinName	: "Pop-up Fenster-Name",
+DlgLnkPopWinFeat	: "Pop-up Fenster-Eigenschaften",
+DlgLnkPopResize		: "Vergrößerbar",
+DlgLnkPopLocation	: "Adress-Leiste",
+DlgLnkPopMenu		: "Menü-Leiste",
+DlgLnkPopScroll		: "Rollbalken",
+DlgLnkPopStatus		: "Statusleiste",
+DlgLnkPopToolbar	: "Werkzeugleiste",
+DlgLnkPopFullScrn	: "Vollbild (IE)",
+DlgLnkPopDependent	: "Abhängig (Netscape)",
+DlgLnkPopWidth		: "Breite",
+DlgLnkPopHeight		: "Höhe",
+DlgLnkPopLeft		: "Linke Position",
+DlgLnkPopTop		: "Obere Position",
+
+DlnLnkMsgNoUrl		: "Bitte geben Sie die Link-URL an",
+DlnLnkMsgNoEMail	: "Bitte geben Sie e-Mail Adresse an",
+DlnLnkMsgNoAnchor	: "Bitte wählen Sie einen Anker aus",
+DlnLnkMsgInvPopName	: "Der Name des Popups muss mit einem Buchstaben beginnen und darf keine Leerzeichen enthalten",
+
+// Color Dialog
+DlgColorTitle		: "Farbauswahl",
+DlgColorBtnClear	: "Keine Farbe",
+DlgColorHighlight	: "Vorschau",
+DlgColorSelected	: "Ausgewählt",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Smiley auswählen",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Sonderzeichen auswählen",
+
+// Table Dialog
+DlgTableTitle		: "Tabellen-Eigenschaften",
+DlgTableRows		: "Zeile",
+DlgTableColumns		: "Spalte",
+DlgTableBorder		: "Rahmen",
+DlgTableAlign		: "Ausrichtung",
+DlgTableAlignNotSet	: "<keine>",
+DlgTableAlignLeft	: "Links",
+DlgTableAlignCenter	: "Zentriert",
+DlgTableAlignRight	: "Rechts",
+DlgTableWidth		: "Breite",
+DlgTableWidthPx		: "Pixel",
+DlgTableWidthPc		: "%",
+DlgTableHeight		: "Höhe",
+DlgTableCellSpace	: "Zellenabstand außen",
+DlgTableCellPad		: "Zellenabstand innen",
+DlgTableCaption		: "Überschrift",
+DlgTableSummary		: "Inhaltsübersicht",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Zellen-Eigenschaften",
+DlgCellWidth		: "Breite",
+DlgCellWidthPx		: "Pixel",
+DlgCellWidthPc		: "%",
+DlgCellHeight		: "Höhe",
+DlgCellWordWrap		: "Umbruch",
+DlgCellWordWrapNotSet	: "<keiner>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nein",
+DlgCellHorAlign		: "Horizontale Ausrichtung",
+DlgCellHorAlignNotSet	: "<keine>",
+DlgCellHorAlignLeft	: "Links",
+DlgCellHorAlignCenter	: "Zentriert",
+DlgCellHorAlignRight: "Rechts",
+DlgCellVerAlign		: "Vertikale Ausrichtung",
+DlgCellVerAlignNotSet	: "<keine>",
+DlgCellVerAlignTop	: "Oben",
+DlgCellVerAlignMiddle	: "Mitte",
+DlgCellVerAlignBottom	: "Unten",
+DlgCellVerAlignBaseline	: "Grundlinie",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Zeilen zusammenfassen",
+DlgCellCollSpan		: "Spalten zusammenfassen",
+DlgCellBackColor	: "Hintergrundfarbe",
+DlgCellBorderColor	: "Rahmenfarbe",
+DlgCellBtnSelect	: "Auswahl...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Suchen und Ersetzen",
+
+// Find Dialog
+DlgFindTitle		: "Finden",
+DlgFindFindBtn		: "Finden",
+DlgFindNotFoundMsg	: "Der gesuchte Text wurde nicht gefunden.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ersetzen",
+DlgReplaceFindLbl		: "Suche nach:",
+DlgReplaceReplaceLbl	: "Ersetze mit:",
+DlgReplaceCaseChk		: "Groß-Kleinschreibung beachten",
+DlgReplaceReplaceBtn	: "Ersetzen",
+DlgReplaceReplAllBtn	: "Alle Ersetzen",
+DlgReplaceWordChk		: "Nur ganze Worte suchen",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).",
+PasteErrorCopy	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).",
+
+PasteAsText		: "Als Text einfügen",
+PasteFromWord	: "Aus Word einfügen",
+
+DlgPasteMsg2	: "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.",
+DlgPasteIgnoreFont		: "Ignoriere Schriftart-Definitionen",
+DlgPasteRemoveStyles	: "Entferne Style-Definitionen",
+
+// Color Picker
+ColorAutomatic	: "Automatisch",
+ColorMoreColors	: "Weitere Farben...",
+
+// Document Properties
+DocProps		: "Dokument-Eigenschaften",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anker-Eigenschaften",
+DlgAnchorName		: "Anker Name",
+DlgAnchorErrorName	: "Bitte geben Sie den Namen des Ankers ein",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Nicht im Wörterbuch",
+DlgSpellChangeTo		: "Ändern in",
+DlgSpellBtnIgnore		: "Ignorieren",
+DlgSpellBtnIgnoreAll	: "Alle Ignorieren",
+DlgSpellBtnReplace		: "Ersetzen",
+DlgSpellBtnReplaceAll	: "Alle Ersetzen",
+DlgSpellBtnUndo			: "Rückgängig",
+DlgSpellNoSuggestions	: " - keine Vorschläge - ",
+DlgSpellProgress		: "Rechtschreibprüfung läuft...",
+DlgSpellNoMispell		: "Rechtschreibprüfung abgeschlossen - keine Fehler gefunden",
+DlgSpellNoChanges		: "Rechtschreibprüfung abgeschlossen - keine Worte geändert",
+DlgSpellOneChange		: "Rechtschreibprüfung abgeschlossen - ein Wort geändert",
+DlgSpellManyChanges		: "Rechtschreibprüfung abgeschlossen - %1 Wörter geändert",
+
+IeSpellDownload			: "Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?",
+
+// Button Dialog
+DlgButtonText		: "Text (Wert)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Button",
+DlgButtonTypeSbm	: "Absenden",
+DlgButtonTypeRst	: "Zurücksetzen",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Wert",
+DlgCheckboxSelected	: "ausgewählt",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Wert",
+DlgSelectSize		: "Größe",
+DlgSelectLines		: "Linien",
+DlgSelectChkMulti	: "Erlaube Mehrfachauswahl",
+DlgSelectOpAvail	: "Mögliche Optionen",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Wert",
+DlgSelectBtnAdd		: "Hinzufügen",
+DlgSelectBtnModify	: "Ändern",
+DlgSelectBtnUp		: "Hoch",
+DlgSelectBtnDown	: "Runter",
+DlgSelectBtnSetValue : "Setze als Standardwert",
+DlgSelectBtnDelete	: "Entfernen",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Spalten",
+DlgTextareaRows	: "Reihen",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Wert",
+DlgTextCharWidth	: "Zeichenbreite",
+DlgTextMaxChars		: "Max. Zeichen",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Passwort",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Wert",
+
+// Bulleted List Dialog
+BulletedListProp	: "Listen-Eigenschaften",
+NumberedListProp	: "Nummerierte Listen-Eigenschaften",
+DlgLstStart			: "Start",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Kreis",
+DlgLstTypeSquare	: "Quadrat",
+DlgLstTypeNumbers	: "Nummern (1, 2, 3)",
+DlgLstTypeLCase		: "Kleinbuchstaben (a, b, c)",
+DlgLstTypeUCase		: "Großbuchstaben (A, B, C)",
+DlgLstTypeSRoman	: "Kleine römische Zahlen (i, ii, iii)",
+DlgLstTypeLRoman	: "Große römische Zahlen (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Allgemein",
+DlgDocBackTab		: "Hintergrund",
+DlgDocColorsTab		: "Farben und Abstände",
+DlgDocMetaTab		: "Metadaten",
+
+DlgDocPageTitle		: "Seitentitel",
+DlgDocLangDir		: "Schriftrichtung",
+DlgDocLangDirLTR	: "Links nach Rechts",
+DlgDocLangDirRTL	: "Rechts nach Links",
+DlgDocLangCode		: "Sprachkürzel",
+DlgDocCharSet		: "Zeichenkodierung",
+DlgDocCharSetCE		: "Zentraleuropäisch",
+DlgDocCharSetCT		: "traditionell Chinesisch (Big5)",
+DlgDocCharSetCR		: "Kyrillisch",
+DlgDocCharSetGR		: "Griechisch",
+DlgDocCharSetJP		: "Japanisch",
+DlgDocCharSetKR		: "Koreanisch",
+DlgDocCharSetTR		: "Türkisch",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Westeuropäisch",
+DlgDocCharSetOther	: "Andere Zeichenkodierung",
+
+DlgDocDocType		: "Dokumententyp",
+DlgDocDocTypeOther	: "Anderer Dokumententyp",
+DlgDocIncXHTML		: "Beziehe XHTML Deklarationen ein",
+DlgDocBgColor		: "Hintergrundfarbe",
+DlgDocBgImage		: "Hintergrundbild URL",
+DlgDocBgNoScroll	: "feststehender Hintergrund",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Besuchter Link",
+DlgDocCActive		: "Aktiver Link",
+DlgDocMargins		: "Seitenränder",
+DlgDocMaTop			: "Oben",
+DlgDocMaLeft		: "Links",
+DlgDocMaRight		: "Rechts",
+DlgDocMaBottom		: "Unten",
+DlgDocMeIndex		: "Schlüsselwörter (durch Komma getrennt)",
+DlgDocMeDescr		: "Dokument-Beschreibung",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Vorschau",
+
+// Templates Dialog
+Templates			: "Vorlagen",
+DlgTemplatesTitle	: "Vorlagen",
+DlgTemplatesSelMsg	: "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):",
+DlgTemplatesLoading	: "Liste der Vorlagen wird geladen. Bitte warten...",
+DlgTemplatesNoTpl	: "(keine Vorlagen definiert)",
+DlgTemplatesReplace	: "Aktuellen Inhalt ersetzen",
+
+// About Dialog
+DlgAboutAboutTab	: "Über",
+DlgAboutBrowserInfoTab	: "Browser-Info",
+DlgAboutLicenseTab	: "Lizenz",
+DlgAboutVersion		: "Version",
+DlgAboutInfo		: "Für weitere Informationen siehe",
+DlgAboutModule		: "Anpassung für Website Baker<br />Modul Version 2.9.6",
+
+// Div Dialog
+DlgDivGeneralTab	: "Allgemein",
+DlgDivAdvancedTab	: "Erweitert",
+DlgDivStyle		: "Style",
+DlgDivInlineStyle	: "Inline Style",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sv.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sv.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/sv.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Swedish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Dölj verktygsfält",
+ToolbarExpand		: "Visa verktygsfält",
+
+// Toolbar Items and Context Menu
+Save				: "Spara",
+NewPage				: "Ny sida",
+Preview				: "Förhandsgranska",
+Cut					: "Klipp ut",
+Copy				: "Kopiera",
+Paste				: "Klistra in",
+PasteText			: "Klistra in som text",
+PasteWord			: "Klistra in från Word",
+Print				: "Skriv ut",
+SelectAll			: "Markera allt",
+RemoveFormat		: "Radera formatering",
+InsertLinkLbl		: "Länk",
+InsertLink			: "Infoga/Redigera länk",
+RemoveLink			: "Radera länk",
+VisitLink			: "Öppna länk",
+Anchor				: "Infoga/Redigera ankarlänk",
+AnchorDelete		: "Radera ankarlänk",
+InsertImageLbl		: "Bild",
+InsertImage			: "Infoga/Redigera bild",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Infoga/Redigera Flash",
+InsertTableLbl		: "Tabell",
+InsertTable			: "Infoga/Redigera tabell",
+InsertLineLbl		: "Linje",
+InsertLine			: "Infoga horisontal linje",
+InsertSpecialCharLbl: "Utökade tecken",
+InsertSpecialChar	: "Klistra in utökat tecken",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Infoga Smiley",
+About				: "Om FCKeditor",
+Bold				: "Fet",
+Italic				: "Kursiv",
+Underline			: "Understruken",
+StrikeThrough		: "Genomstruken",
+Subscript			: "Nedsänkta tecken",
+Superscript			: "Upphöjda tecken",
+LeftJustify			: "Vänsterjustera",
+CenterJustify		: "Centrera",
+RightJustify		: "Högerjustera",
+BlockJustify		: "Justera till marginaler",
+DecreaseIndent		: "Minska indrag",
+IncreaseIndent		: "Öka indrag",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Skapa Div behållare",
+EditDiv				: "Redigera Div behållare",
+DeleteDiv			: "Radera Div behållare",
+Undo				: "Ångra",
+Redo				: "Gör om",
+NumberedListLbl		: "Numrerad lista",
+NumberedList		: "Infoga/Radera numrerad lista",
+BulletedListLbl		: "Punktlista",
+BulletedList		: "Infoga/Radera punktlista",
+ShowTableBorders	: "Visa tabellkant",
+ShowDetails			: "Visa radbrytningar",
+Style				: "Anpassad stil",
+FontFormat			: "Teckenformat",
+Font				: "Typsnitt",
+FontSize			: "Storlek",
+TextColor			: "Textfärg",
+BGColor				: "Bakgrundsfärg",
+Source				: "Källa",
+Find				: "Sök",
+Replace				: "Ersätt",
+SpellCheck			: "Stavningskontroll",
+UniversalKeyboard	: "Universellt tangentbord",
+PageBreakLbl		: "Sidbrytning",
+PageBreak			: "Infoga sidbrytning",
+
+Form			: "Formulär",
+Checkbox		: "Kryssruta",
+RadioButton		: "Alternativknapp",
+TextField		: "Textfält",
+Textarea		: "Textruta",
+HiddenField		: "Dolt fält",
+Button			: "Knapp",
+SelectionField	: "Flervalslista",
+ImageButton		: "Bildknapp",
+
+FitWindow		: "Anpassa till fönstrets storlek",
+ShowBlocks		: "Visa block",
+
+// Context Menu
+EditLink			: "Redigera länk",
+CellCM				: "Cell",
+RowCM				: "Rad",
+ColumnCM			: "Kolumn",
+InsertRowAfter		: "Lägg till Rad Efter",
+InsertRowBefore		: "Lägg till Rad Före",
+DeleteRows			: "Radera rad",
+InsertColumnAfter	: "Lägg till Kolumn Efter",
+InsertColumnBefore	: "Lägg till Kolumn Före",
+DeleteColumns		: "Radera kolumn",
+InsertCellAfter		: "Lägg till Cell Efter",
+InsertCellBefore	: "Lägg till Cell Före",
+DeleteCells			: "Radera celler",
+MergeCells			: "Sammanfoga celler",
+MergeRight			: "Sammanfoga Höger",
+MergeDown			: "Sammanfoga Ner",
+HorizontalSplitCell	: "Dela Cell Horisontellt",
+VerticalSplitCell	: "Dela Cell Vertikalt",
+TableDelete			: "Radera tabell",
+CellProperties		: "Cellegenskaper",
+TableProperties		: "Tabellegenskaper",
+ImageProperties		: "Bildegenskaper",
+FlashProperties		: "Flashegenskaper",
+
+AnchorProp			: "Egenskaper för ankarlänk",
+ButtonProp			: "Egenskaper för knapp",
+CheckboxProp		: "Egenskaper för kryssruta",
+HiddenFieldProp		: "Egenskaper för dolt fält",
+RadioButtonProp		: "Egenskaper för alternativknapp",
+ImageButtonProp		: "Egenskaper för bildknapp",
+TextFieldProp		: "Egenskaper för textfält",
+SelectionFieldProp	: "Egenskaper för flervalslista",
+TextareaProp		: "Egenskaper för textruta",
+FormProp			: "Egenskaper för formulär",
+
+FontFormats			: "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Bearbetar XHTML. Var god vänta...",
+Done				: "Klar",
+PasteWordConfirm	: "Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa innan du klistar in?",
+NotCompatiblePaste	: "Denna åtgärd är inte tillgängligt för Internet Explorer version 5.5 eller högre. Vill du klistra in utan att rensa?",
+UnknownToolbarItem	: "Okänt verktygsfält \"%1\"",
+UnknownCommand		: "Okänt kommando \"%1\"",
+NotImplemented		: "Kommandot finns ej",
+UnknownToolbarSet	: "Verktygsfält \"%1\" finns ej",
+NoActiveX			: "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.",
+BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.",
+DialogBlocked		: "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.",
+VisitLinkBlocked	: "Kunde Ej öppna nytt fönster. Var god och avaktivera alla popup-blockerare.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Avbryt",
+DlgBtnClose			: "Stäng",
+DlgBtnBrowseServer	: "Bläddra på server",
+DlgAdvancedTag		: "Avancerad",
+DlgOpOther			: "Övrigt",
+DlgInfoTab			: "Information",
+DlgAlertUrl			: "Var god och ange en URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ej angivet>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Språkriktning",
+DlgGenLangDirLtr	: "Vänster till Höger (VTH)",
+DlgGenLangDirRtl	: "Höger till Vänster (HTV)",
+DlgGenLangCode		: "Språkkod",
+DlgGenAccessKey		: "Behörighetsnyckel",
+DlgGenName			: "Namn",
+DlgGenTabIndex		: "Tabindex",
+DlgGenLongDescr		: "URL-beskrivning",
+DlgGenClass			: "Stylesheet class",
+DlgGenTitle			: "Titel",
+DlgGenContType		: "Innehållstyp",
+DlgGenLinkCharset	: "Teckenuppställning",
+DlgGenStyle			: "Stil",
+
+// Image Dialog
+DlgImgTitle			: "Bildegenskaper",
+DlgImgInfoTab		: "Bildinformation",
+DlgImgBtnUpload		: "Skicka till server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Ladda upp",
+DlgImgAlt			: "Alternativ text",
+DlgImgWidth			: "Bredd",
+DlgImgHeight		: "Höjd",
+DlgImgLockRatio		: "Lås höjd/bredd förhållanden",
+DlgBtnResetSize		: "Återställ storlek",
+DlgImgBorder		: "Kant",
+DlgImgHSpace		: "Horis. marginal",
+DlgImgVSpace		: "Vert. marginal",
+DlgImgAlign			: "Justering",
+DlgImgAlignLeft		: "Vänster",
+DlgImgAlignAbsBottom: "Absolut nederkant",
+DlgImgAlignAbsMiddle: "Absolut centrering",
+DlgImgAlignBaseline	: "Baslinje",
+DlgImgAlignBottom	: "Nederkant",
+DlgImgAlignMiddle	: "Mitten",
+DlgImgAlignRight	: "Höger",
+DlgImgAlignTextTop	: "Text överkant",
+DlgImgAlignTop		: "Överkant",
+DlgImgPreview		: "Förhandsgranska",
+DlgImgAlertUrl		: "Var god och ange bildens URL",
+DlgImgLinkTab		: "Länk",
+
+// Flash Dialog
+DlgFlashTitle		: "Flashegenskaper",
+DlgFlashChkPlay		: "Automatisk uppspelning",
+DlgFlashChkLoop		: "Upprepa/Loopa",
+DlgFlashChkMenu		: "Aktivera Flashmeny",
+DlgFlashScale		: "Skala",
+DlgFlashScaleAll	: "Visa allt",
+DlgFlashScaleNoBorder	: "Ingen ram",
+DlgFlashScaleFit	: "Exakt passning",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Länk",
+DlgLnkInfoTab		: "Länkinformation",
+DlgLnkTargetTab		: "Mål",
+
+DlgLnkType			: "Länktyp",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankare i sidan",
+DlgLnkTypeEMail		: "E-post",
+DlgLnkProto			: "Protokoll",
+DlgLnkProtoOther	: "<övrigt>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Välj ett ankare",
+DlgLnkAnchorByName	: "efter ankarnamn",
+DlgLnkAnchorById	: "efter objektid",
+DlgLnkNoAnchors		: "(Inga ankare kunde hittas)",
+DlgLnkEMail			: "E-postadress",
+DlgLnkEMailSubject	: "Ämne",
+DlgLnkEMailBody		: "Innehåll",
+DlgLnkUpload		: "Ladda upp",
+DlgLnkBtnUpload		: "Skicka till servern",
+
+DlgLnkTarget		: "Mål",
+DlgLnkTargetFrame	: "<ram>",
+DlgLnkTargetPopup	: "<popup-fönster>",
+DlgLnkTargetBlank	: "Nytt fönster (_blank)",
+DlgLnkTargetParent	: "Föregående Window (_parent)",
+DlgLnkTargetSelf	: "Detta fönstret (_self)",
+DlgLnkTargetTop		: "Översta fönstret (_top)",
+DlgLnkTargetFrameName	: "Målets ramnamn",
+DlgLnkPopWinName	: "Popup-fönstrets namn",
+DlgLnkPopWinFeat	: "Popup-fönstrets egenskaper",
+DlgLnkPopResize		: "Kan ändra storlek",
+DlgLnkPopLocation	: "Adressfält",
+DlgLnkPopMenu		: "Menyfält",
+DlgLnkPopScroll		: "Scrolllista",
+DlgLnkPopStatus		: "Statusfält",
+DlgLnkPopToolbar	: "Verktygsfält",
+DlgLnkPopFullScrn	: "Helskärm (endast IE)",
+DlgLnkPopDependent	: "Beroende (endest Netscape)",
+DlgLnkPopWidth		: "Bredd",
+DlgLnkPopHeight		: "Höjd",
+DlgLnkPopLeft		: "Position från vänster",
+DlgLnkPopTop		: "Position från sidans topp",
+
+DlnLnkMsgNoUrl		: "Var god ange länkens URL",
+DlnLnkMsgNoEMail	: "Var god ange E-postadress",
+DlnLnkMsgNoAnchor	: "Var god ange ett ankare",
+DlnLnkMsgInvPopName	: "Popup-rutans namn måste börja med en alfabetisk bokstav och får inte innehålla mellanslag",
+
+// Color Dialog
+DlgColorTitle		: "Välj färg",
+DlgColorBtnClear	: "Rensa",
+DlgColorHighlight	: "Markera",
+DlgColorSelected	: "Vald",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Infoga smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Välj utökat tecken",
+
+// Table Dialog
+DlgTableTitle		: "Tabellegenskaper",
+DlgTableRows		: "Rader",
+DlgTableColumns		: "Kolumner",
+DlgTableBorder		: "Kantstorlek",
+DlgTableAlign		: "Justering",
+DlgTableAlignNotSet	: "<ej angivet>",
+DlgTableAlignLeft	: "Vänster",
+DlgTableAlignCenter	: "Centrerad",
+DlgTableAlignRight	: "Höger",
+DlgTableWidth		: "Bredd",
+DlgTableWidthPx		: "pixlar",
+DlgTableWidthPc		: "procent",
+DlgTableHeight		: "Höjd",
+DlgTableCellSpace	: "Cellavstånd",
+DlgTableCellPad		: "Cellutfyllnad",
+DlgTableCaption		: "Titel",
+DlgTableSummary		: "Sammanfattning",
+DlgTableHeaders		: "Rubrikrad",
+DlgTableHeadersNone		: "Ingen",
+DlgTableHeadersColumn	: "Första kolumnen",
+DlgTableHeadersRow		: "Första raden",
+DlgTableHeadersBoth		: "Båda",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cellegenskaper",
+DlgCellWidth		: "Bredd",
+DlgCellWidthPx		: "pixlar",
+DlgCellWidthPc		: "procent",
+DlgCellHeight		: "Höjd",
+DlgCellWordWrap		: "Automatisk radbrytning",
+DlgCellWordWrapNotSet	: "<Ej angivet>",
+DlgCellWordWrapYes	: "Ja",
+DlgCellWordWrapNo	: "Nej",
+DlgCellHorAlign		: "Horisontal justering",
+DlgCellHorAlignNotSet	: "<Ej angivet>",
+DlgCellHorAlignLeft	: "Vänster",
+DlgCellHorAlignCenter	: "Centrerad",
+DlgCellHorAlignRight: "Höger",
+DlgCellVerAlign		: "Vertikal justering",
+DlgCellVerAlignNotSet	: "<Ej angivet>",
+DlgCellVerAlignTop	: "Topp",
+DlgCellVerAlignMiddle	: "Mitten",
+DlgCellVerAlignBottom	: "Nederkant",
+DlgCellVerAlignBaseline	: "Underst",
+DlgCellType		: "Cell Typ",
+DlgCellTypeData		: "Data",
+DlgCellTypeHeader	: "Titel",
+DlgCellRowSpan		: "Radomfång",
+DlgCellCollSpan		: "Kolumnomfång",
+DlgCellBackColor	: "Bakgrundsfärg",
+DlgCellBorderColor	: "Kantfärg",
+DlgCellBtnSelect	: "Välj...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Sök och ersätt",
+
+// Find Dialog
+DlgFindTitle		: "Sök",
+DlgFindFindBtn		: "Sök",
+DlgFindNotFoundMsg	: "Angiven text kunde ej hittas.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Ersätt",
+DlgReplaceFindLbl		: "Sök efter:",
+DlgReplaceReplaceLbl	: "Ersätt med:",
+DlgReplaceCaseChk		: "Skiftläge",
+DlgReplaceReplaceBtn	: "Ersätt",
+DlgReplaceReplAllBtn	: "Ersätt alla",
+DlgReplaceWordChk		: "Inkludera hela ord",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.",
+PasteErrorCopy	: "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället",
+
+PasteAsText		: "Klistra in som vanlig text",
+PasteFromWord	: "Klistra in från Word",
+
+DlgPasteMsg2	: "Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.",
+DlgPasteSec		: "På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.",
+DlgPasteIgnoreFont		: "Ignorera typsnittsdefinitioner",
+DlgPasteRemoveStyles	: "Radera Stildefinitioner",
+
+// Color Picker
+ColorAutomatic	: "Automatisk",
+ColorMoreColors	: "Fler färger...",
+
+// Document Properties
+DocProps		: "Dokumentegenskaper",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankaregenskaper",
+DlgAnchorName		: "Ankarnamn",
+DlgAnchorErrorName	: "Var god ange ett ankarnamn",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Saknas i ordlistan",
+DlgSpellChangeTo		: "Ändra till",
+DlgSpellBtnIgnore		: "Ignorera",
+DlgSpellBtnIgnoreAll	: "Ignorera alla",
+DlgSpellBtnReplace		: "Ersätt",
+DlgSpellBtnReplaceAll	: "Ersätt alla",
+DlgSpellBtnUndo			: "Ångra",
+DlgSpellNoSuggestions	: "- Förslag saknas -",
+DlgSpellProgress		: "Stavningskontroll pågår...",
+DlgSpellNoMispell		: "Stavningskontroll slutförd: Inga stavfel påträffades.",
+DlgSpellNoChanges		: "Stavningskontroll slutförd: Inga ord rättades.",
+DlgSpellOneChange		: "Stavningskontroll slutförd: Ett ord rättades.",
+DlgSpellManyChanges		: "Stavningskontroll slutförd: %1 ord rättades.",
+
+IeSpellDownload			: "Stavningskontrollen är ej installerad. Vill du göra det nu?",
+
+// Button Dialog
+DlgButtonText		: "Text (Värde)",
+DlgButtonType		: "Typ",
+DlgButtonTypeBtn	: "Knapp",
+DlgButtonTypeSbm	: "Skicka",
+DlgButtonTypeRst	: "Återställ",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Namn",
+DlgCheckboxValue	: "Värde",
+DlgCheckboxSelected	: "Vald",
+
+// Form Dialog
+DlgFormName		: "Namn",
+DlgFormAction	: "Funktion",
+DlgFormMethod	: "Metod",
+
+// Select Field Dialog
+DlgSelectName		: "Namn",
+DlgSelectValue		: "Värde",
+DlgSelectSize		: "Storlek",
+DlgSelectLines		: "Linjer",
+DlgSelectChkMulti	: "Tillåt flerval",
+DlgSelectOpAvail	: "Befintliga val",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Värde",
+DlgSelectBtnAdd		: "Lägg till",
+DlgSelectBtnModify	: "Redigera",
+DlgSelectBtnUp		: "Upp",
+DlgSelectBtnDown	: "Ner",
+DlgSelectBtnSetValue : "Markera som valt värde",
+DlgSelectBtnDelete	: "Radera",
+
+// Textarea Dialog
+DlgTextareaName	: "Namn",
+DlgTextareaCols	: "Kolumner",
+DlgTextareaRows	: "Rader",
+
+// Text Field Dialog
+DlgTextName			: "Namn",
+DlgTextValue		: "Värde",
+DlgTextCharWidth	: "Teckenbredd",
+DlgTextMaxChars		: "Max antal tecken",
+DlgTextType			: "Typ",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Lösenord",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Namn",
+DlgHiddenValue	: "Värde",
+
+// Bulleted List Dialog
+BulletedListProp	: "Egenskaper för punktlista",
+NumberedListProp	: "Egenskaper för numrerad lista",
+DlgLstStart			: "Start",
+DlgLstType			: "Typ",
+DlgLstTypeCircle	: "Cirkel",
+DlgLstTypeDisc		: "Punkt",
+DlgLstTypeSquare	: "Ruta",
+DlgLstTypeNumbers	: "Nummer (1, 2, 3)",
+DlgLstTypeLCase		: "Gemener (a, b, c)",
+DlgLstTypeUCase		: "Versaler (A, B, C)",
+DlgLstTypeSRoman	: "Små romerska siffror (i, ii, iii)",
+DlgLstTypeLRoman	: "Stora romerska siffror (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Allmän",
+DlgDocBackTab		: "Bakgrund",
+DlgDocColorsTab		: "Färg och marginal",
+DlgDocMetaTab		: "Metadata",
+
+DlgDocPageTitle		: "Sidtitel",
+DlgDocLangDir		: "Språkriktning",
+DlgDocLangDirLTR	: "Vänster till Höger",
+DlgDocLangDirRTL	: "Höger till Vänster",
+DlgDocLangCode		: "Språkkod",
+DlgDocCharSet		: "Teckenuppsättningar",
+DlgDocCharSetCE		: "Central Europa",
+DlgDocCharSetCT		: "Traditionell Kinesisk (Big5)",
+DlgDocCharSetCR		: "Kyrillisk",
+DlgDocCharSetGR		: "Grekiska",
+DlgDocCharSetJP		: "Japanska",
+DlgDocCharSetKR		: "Koreanska",
+DlgDocCharSetTR		: "Turkiska",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Väst Europa",
+DlgDocCharSetOther	: "Övriga teckenuppsättningar",
+
+DlgDocDocType		: "Sidhuvud",
+DlgDocDocTypeOther	: "Övriga sidhuvuden",
+DlgDocIncXHTML		: "Inkludera XHTML deklaration",
+DlgDocBgColor		: "Bakgrundsfärg",
+DlgDocBgImage		: "Bakgrundsbildens URL",
+DlgDocBgNoScroll	: "Fast bakgrund",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Länk",
+DlgDocCVisited		: "Besökt länk",
+DlgDocCActive		: "Aktiv länk",
+DlgDocMargins		: "Sidmarginal",
+DlgDocMaTop			: "Topp",
+DlgDocMaLeft		: "Vänster",
+DlgDocMaRight		: "Höger",
+DlgDocMaBottom		: "Botten",
+DlgDocMeIndex		: "Sidans nyckelord",
+DlgDocMeDescr		: "Sidans beskrivning",
+DlgDocMeAuthor		: "Författare",
+DlgDocMeCopy		: "Upphovsrätt",
+DlgDocPreview		: "Förhandsgranska",
+
+// Templates Dialog
+Templates			: "Sidmallar",
+DlgTemplatesTitle	: "Sidmallar",
+DlgTemplatesSelMsg	: "Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):",
+DlgTemplatesLoading	: "Laddar mallar. Var god vänta...",
+DlgTemplatesNoTpl	: "(Ingen mall är vald)",
+DlgTemplatesReplace	: "Ersätt aktuellt innehåll",
+
+// About Dialog
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Webläsare",
+DlgAboutLicenseTab	: "Licens",
+DlgAboutVersion		: "Version",
+DlgAboutInfo		: "För mer information se",
+
+// Div Dialog
+DlgDivGeneralTab	: "Allmänt",
+DlgDivAdvancedTab	: "Avancerat",
+DlgDivStyle		: "Stil",
+DlgDivInlineStyle	: "Inbäddad stil",
+
+ScaytTitle			: "SCAYT",
+ScaytTitleOptions	: "Alternativ",
+ScaytTitleLangs		: "Språk",
+ScaytTitleAbout		: "Om"
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ja.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ja.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/ja.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Japanese language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "ツールバーを隠す",
+ToolbarExpand		: "ツールバーを表示",
+
+// Toolbar Items and Context Menu
+Save				: "保存",
+NewPage				: "新しいページ",
+Preview				: "プレビュー",
+Cut					: "切り取り",
+Copy				: "コピー",
+Paste				: "貼り付け",
+PasteText			: "プレーンテキスト貼り付け",
+PasteWord			: "ワード文章から貼り付け",
+Print				: "印刷",
+SelectAll			: "すべて選択",
+RemoveFormat		: "フォーマット削除",
+InsertLinkLbl		: "リンク",
+InsertLink			: "リンク挿入/編集",
+RemoveLink			: "リンク削除",
+VisitLink			: "リンクを開く",
+Anchor				: "アンカー挿入/編集",
+AnchorDelete		: "アンカー削除",
+InsertImageLbl		: "イメージ",
+InsertImage			: "イメージ挿入/編集",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Flash挿入/編集",
+InsertTableLbl		: "テーブル",
+InsertTable			: "テーブル挿入/編集",
+InsertLineLbl		: "ライン",
+InsertLine			: "横罫線",
+InsertSpecialCharLbl: "特殊文字",
+InsertSpecialChar	: "特殊文字挿入",
+InsertSmileyLbl		: "絵文字",
+InsertSmiley		: "絵文字挿入",
+About				: "FCKeditorヘルプ",
+Bold				: "太字",
+Italic				: "斜体",
+Underline			: "下線",
+StrikeThrough		: "打ち消し線",
+Subscript			: "添え字",
+Superscript			: "上付き文字",
+LeftJustify			: "左揃え",
+CenterJustify		: "中央揃え",
+RightJustify		: "右揃え",
+BlockJustify		: "両端揃え",
+DecreaseIndent		: "インデント解除",
+IncreaseIndent		: "インデント",
+Blockquote			: "ブロック引用",
+CreateDiv			: "Div 作成",
+EditDiv				: "Div 編集",
+DeleteDiv			: "Div 削除",
+Undo				: "元に戻す",
+Redo				: "やり直し",
+NumberedListLbl		: "段落番号",
+NumberedList		: "段落番号の追加/削除",
+BulletedListLbl		: "箇条書き",
+BulletedList		: "箇条書きの追加/削除",
+ShowTableBorders	: "テーブルボーダー表示",
+ShowDetails			: "詳細表示",
+Style				: "スタイル",
+FontFormat			: "フォーマット",
+Font				: "フォント",
+FontSize			: "サイズ",
+TextColor			: "テキスト色",
+BGColor				: "背景色",
+Source				: "ソース",
+Find				: "検索",
+Replace				: "置き換え",
+SpellCheck			: "スペルチェック",
+UniversalKeyboard	: "ユニバーサル・キーボード",
+PageBreakLbl		: "改ページ",
+PageBreak			: "改ページ挿入",
+
+Form			: "フォーム",
+Checkbox		: "チェックボックス",
+RadioButton		: "ラジオボタン",
+TextField		: "１行テキスト",
+Textarea		: "テキストエリア",
+HiddenField		: "不可視フィールド",
+Button			: "ボタン",
+SelectionField	: "選択フィールド",
+ImageButton		: "画像ボタン",
+
+FitWindow		: "エディタサイズを最大にします",
+ShowBlocks		: "ブロック表示",
+
+// Context Menu
+EditLink			: "リンク編集",
+CellCM				: "セル",
+RowCM				: "行",
+ColumnCM			: "カラム",
+InsertRowAfter		: "列の後に挿入",
+InsertRowBefore		: "列の前に挿入",
+DeleteRows			: "行削除",
+InsertColumnAfter	: "カラムの後に挿入",
+InsertColumnBefore	: "カラムの前に挿入",
+DeleteColumns		: "列削除",
+InsertCellAfter		: "セルの後に挿入",
+InsertCellBefore	: "セルの前に挿入",
+DeleteCells			: "セル削除",
+MergeCells			: "セル結合",
+MergeRight			: "右に結合",
+MergeDown			: "下に結合",
+HorizontalSplitCell	: "セルを水平方向分割",
+VerticalSplitCell	: "セルを垂直方向に分割",
+TableDelete			: "テーブル削除",
+CellProperties		: "セル プロパティ",
+TableProperties		: "テーブル プロパティ",
+ImageProperties		: "イメージ プロパティ",
+FlashProperties		: "Flash プロパティ",
+
+AnchorProp			: "アンカー プロパティ",
+ButtonProp			: "ボタン プロパティ",
+CheckboxProp		: "チェックボックス プロパティ",
+HiddenFieldProp		: "不可視フィールド プロパティ",
+RadioButtonProp		: "ラジオボタン プロパティ",
+ImageButtonProp		: "画像ボタン プロパティ",
+TextFieldProp		: "１行テキスト プロパティ",
+SelectionFieldProp	: "選択フィールド プロパティ",
+TextareaProp		: "テキストエリア プロパティ",
+FormProp			: "フォーム プロパティ",
+
+FontFormats			: "標準;書式付き;アドレス;見出し 1;見出し 2;見出し 3;見出し 4;見出し 5;見出し 6;標準 (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML処理中. しばらくお待ちください...",
+Done				: "完了",
+PasteWordConfirm	: "貼り付けを行うテキストは、ワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか？",
+NotCompatiblePaste	: "このコマンドはインターネット・エクスプローラーバージョン5.5以上で利用可能です。クリーニングしないで貼り付けを行いますか？",
+UnknownToolbarItem	: "未知のツールバー項目 \"%1\"",
+UnknownCommand		: "未知のコマンド名 \"%1\"",
+NotImplemented		: "コマンドはインプリメントされませんでした。",
+UnknownToolbarSet	: "ツールバー設定 \"%1\" 存在しません。",
+NoActiveX			: "エラー、警告メッセージなどが発生した場合、ブラウザーのセキュリティ設定によりエディタのいくつかの機能が制限されている可能性があります。セキュリティ設定のオプションで\"ActiveXコントロールとプラグインの実行\"を有効にするにしてください。",
+BrowseServerBlocked : "サーバーブラウザーを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+DialogBlocked		: "ダイアログウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+VisitLinkBlocked	: "新しいウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "キャンセル",
+DlgBtnClose			: "閉じる",
+DlgBtnBrowseServer	: "サーバーブラウザー",
+DlgAdvancedTag		: "高度な設定",
+DlgOpOther			: "<その他>",
+DlgInfoTab			: "情報",
+DlgAlertUrl			: "URLを挿入してください",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<なし>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "文字表記の方向",
+DlgGenLangDirLtr	: "左から右 (LTR)",
+DlgGenLangDirRtl	: "右から左 (RTL)",
+DlgGenLangCode		: "言語コード",
+DlgGenAccessKey		: "アクセスキー",
+DlgGenName			: "Name属性",
+DlgGenTabIndex		: "タブインデックス",
+DlgGenLongDescr		: "longdesc属性(長文説明)",
+DlgGenClass			: "スタイルシートクラス",
+DlgGenTitle			: "Title属性",
+DlgGenContType		: "Content Type属性",
+DlgGenLinkCharset	: "リンクcharset属性",
+DlgGenStyle			: "スタイルシート",
+
+// Image Dialog
+DlgImgTitle			: "イメージ プロパティ",
+DlgImgInfoTab		: "イメージ 情報",
+DlgImgBtnUpload		: "サーバーに送信",
+DlgImgURL			: "URL",
+DlgImgUpload		: "アップロード",
+DlgImgAlt			: "代替テキスト",
+DlgImgWidth			: "幅",
+DlgImgHeight		: "高さ",
+DlgImgLockRatio		: "ロック比率",
+DlgBtnResetSize		: "サイズリセット",
+DlgImgBorder		: "ボーダー",
+DlgImgHSpace		: "横間隔",
+DlgImgVSpace		: "縦間隔",
+DlgImgAlign			: "行揃え",
+DlgImgAlignLeft		: "左",
+DlgImgAlignAbsBottom: "下部(絶対的)",
+DlgImgAlignAbsMiddle: "中央(絶対的)",
+DlgImgAlignBaseline	: "ベースライン",
+DlgImgAlignBottom	: "下",
+DlgImgAlignMiddle	: "中央",
+DlgImgAlignRight	: "右",
+DlgImgAlignTextTop	: "テキスト上部",
+DlgImgAlignTop		: "上",
+DlgImgPreview		: "プレビュー",
+DlgImgAlertUrl		: "イメージのURLを入力してください。",
+DlgImgLinkTab		: "リンク",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash プロパティ",
+DlgFlashChkPlay		: "再生",
+DlgFlashChkLoop		: "ループ再生",
+DlgFlashChkMenu		: "Flashメニュー可能",
+DlgFlashScale		: "拡大縮小設定",
+DlgFlashScaleAll	: "すべて表示",
+DlgFlashScaleNoBorder	: "外が見えない様に拡大",
+DlgFlashScaleFit	: "上下左右にフィット",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ハイパーリンク",
+DlgLnkInfoTab		: "ハイパーリンク 情報",
+DlgLnkTargetTab		: "ターゲット",
+
+DlgLnkType			: "リンクタイプ",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "このページのアンカー",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "プロトコル",
+DlgLnkProtoOther	: "<その他>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "アンカーを選択",
+DlgLnkAnchorByName	: "アンカー名",
+DlgLnkAnchorById	: "エレメントID",
+DlgLnkNoAnchors		: "(ドキュメントにおいて利用可能なアンカーはありません。)",
+DlgLnkEMail			: "E-Mail アドレス",
+DlgLnkEMailSubject	: "件名",
+DlgLnkEMailBody		: "本文",
+DlgLnkUpload		: "アップロード",
+DlgLnkBtnUpload		: "サーバーに送信",
+
+DlgLnkTarget		: "ターゲット",
+DlgLnkTargetFrame	: "<フレーム>",
+DlgLnkTargetPopup	: "<ポップアップウィンドウ>",
+DlgLnkTargetBlank	: "新しいウィンドウ (_blank)",
+DlgLnkTargetParent	: "親ウィンドウ (_parent)",
+DlgLnkTargetSelf	: "同じウィンドウ (_self)",
+DlgLnkTargetTop		: "最上位ウィンドウ (_top)",
+DlgLnkTargetFrameName	: "目的のフレーム名",
+DlgLnkPopWinName	: "ポップアップウィンドウ名",
+DlgLnkPopWinFeat	: "ポップアップウィンドウ特徴",
+DlgLnkPopResize		: "リサイズ可能",
+DlgLnkPopLocation	: "ロケーションバー",
+DlgLnkPopMenu		: "メニューバー",
+DlgLnkPopScroll		: "スクロールバー",
+DlgLnkPopStatus		: "ステータスバー",
+DlgLnkPopToolbar	: "ツールバー",
+DlgLnkPopFullScrn	: "全画面モード(IE)",
+DlgLnkPopDependent	: "開いたウィンドウに連動して閉じる (Netscape)",
+DlgLnkPopWidth		: "幅",
+DlgLnkPopHeight		: "高さ",
+DlgLnkPopLeft		: "左端からの座標で指定",
+DlgLnkPopTop		: "上端からの座標で指定",
+
+DlnLnkMsgNoUrl		: "リンクURLを入力してください。",
+DlnLnkMsgNoEMail	: "メールアドレスを入力してください。",
+DlnLnkMsgNoAnchor	: "アンカーを選択してください。",
+DlnLnkMsgInvPopName	: "ポップ・アップ名は英字で始まる文字で指定してくだい。ポップ・アップ名にスペースは含めません",
+
+// Color Dialog
+DlgColorTitle		: "色選択",
+DlgColorBtnClear	: "クリア",
+DlgColorHighlight	: "ハイライト",
+DlgColorSelected	: "選択色",
+
+// Smiley Dialog
+DlgSmileyTitle		: "顔文字挿入",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "特殊文字選択",
+
+// Table Dialog
+DlgTableTitle		: "テーブル プロパティ",
+DlgTableRows		: "行",
+DlgTableColumns		: "列",
+DlgTableBorder		: "ボーダーサイズ",
+DlgTableAlign		: "キャプションの整列",
+DlgTableAlignNotSet	: "<なし>",
+DlgTableAlignLeft	: "左",
+DlgTableAlignCenter	: "中央",
+DlgTableAlignRight	: "右",
+DlgTableWidth		: "テーブル幅",
+DlgTableWidthPx		: "ピクセル",
+DlgTableWidthPc		: "パーセント",
+DlgTableHeight		: "テーブル高さ",
+DlgTableCellSpace	: "セル内余白",
+DlgTableCellPad		: "セル内間隔",
+DlgTableCaption		: "ｷｬﾌﾟｼｮﾝ",
+DlgTableSummary		: "テーブル目的/構造",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "セル プロパティ",
+DlgCellWidth		: "幅",
+DlgCellWidthPx		: "ピクセル",
+DlgCellWidthPc		: "パーセント",
+DlgCellHeight		: "高さ",
+DlgCellWordWrap		: "折り返し",
+DlgCellWordWrapNotSet	: "<なし>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "セル横の整列",
+DlgCellHorAlignNotSet	: "<なし>",
+DlgCellHorAlignLeft	: "左",
+DlgCellHorAlignCenter	: "中央",
+DlgCellHorAlignRight: "右",
+DlgCellVerAlign		: "セル縦の整列",
+DlgCellVerAlignNotSet	: "<なし>",
+DlgCellVerAlignTop	: "上",
+DlgCellVerAlignMiddle	: "中央",
+DlgCellVerAlignBottom	: "下",
+DlgCellVerAlignBaseline	: "ベースライン",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "縦幅(行数)",
+DlgCellCollSpan		: "横幅(列数)",
+DlgCellBackColor	: "背景色",
+DlgCellBorderColor	: "ボーダーカラー",
+DlgCellBtnSelect	: "選択...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "検索して置換",
+
+// Find Dialog
+DlgFindTitle		: "検索",
+DlgFindFindBtn		: "検索",
+DlgFindNotFoundMsg	: "指定された文字列は見つかりませんでした。",
+
+// Replace Dialog
+DlgReplaceTitle			: "置き換え",
+DlgReplaceFindLbl		: "検索する文字列:",
+DlgReplaceReplaceLbl	: "置換えする文字列:",
+DlgReplaceCaseChk		: "部分一致",
+DlgReplaceReplaceBtn	: "置換え",
+DlgReplaceReplAllBtn	: "すべて置換え",
+DlgReplaceWordChk		: "単語単位で一致",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。",
+PasteErrorCopy	: "ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。",
+
+PasteAsText		: "プレーンテキスト貼り付け",
+PasteFromWord	: "ワード文章から貼り付け",
+
+DlgPasteMsg2	: "キーボード(<STRONG>Ctrl+V</STRONG>)を使用して、次の入力エリア内で貼って、<STRONG>OK</STRONG>を押してください。",
+DlgPasteSec		: "ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。",
+DlgPasteIgnoreFont		: "FontタグのFace属性を無視します。",
+DlgPasteRemoveStyles	: "スタイル定義を削除します。",
+
+// Color Picker
+ColorAutomatic	: "自動",
+ColorMoreColors	: "その他の色...",
+
+// Document Properties
+DocProps		: "文書 プロパティ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "アンカー プロパティ",
+DlgAnchorName		: "アンカー名",
+DlgAnchorErrorName	: "アンカー名を必ず入力してください。",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "辞書にありません",
+DlgSpellChangeTo		: "変更",
+DlgSpellBtnIgnore		: "無視",
+DlgSpellBtnIgnoreAll	: "すべて無視",
+DlgSpellBtnReplace		: "置換",
+DlgSpellBtnReplaceAll	: "すべて置換",
+DlgSpellBtnUndo			: "やり直し",
+DlgSpellNoSuggestions	: "- 該当なし -",
+DlgSpellProgress		: "スペルチェック処理中...",
+DlgSpellNoMispell		: "スペルチェック完了: スペルの誤りはありませんでした",
+DlgSpellNoChanges		: "スペルチェック完了: 語句は変更されませんでした",
+DlgSpellOneChange		: "スペルチェック完了: １語句変更されました",
+DlgSpellManyChanges		: "スペルチェック完了: %1 語句変更されました",
+
+IeSpellDownload			: "スペルチェッカーがインストールされていません。今すぐダウンロードしますか?",
+
+// Button Dialog
+DlgButtonText		: "テキスト (値)",
+DlgButtonType		: "タイプ",
+DlgButtonTypeBtn	: "ボタン",
+DlgButtonTypeSbm	: "送信",
+DlgButtonTypeRst	: "リセット",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "名前",
+DlgCheckboxValue	: "値",
+DlgCheckboxSelected	: "選択済み",
+
+// Form Dialog
+DlgFormName		: "フォーム名",
+DlgFormAction	: "アクション",
+DlgFormMethod	: "メソッド",
+
+// Select Field Dialog
+DlgSelectName		: "名前",
+DlgSelectValue		: "値",
+DlgSelectSize		: "サイズ",
+DlgSelectLines		: "行",
+DlgSelectChkMulti	: "複数項目選択を許可",
+DlgSelectOpAvail	: "利用可能なオプション",
+DlgSelectOpText		: "選択項目名",
+DlgSelectOpValue	: "選択項目値",
+DlgSelectBtnAdd		: "追加",
+DlgSelectBtnModify	: "編集",
+DlgSelectBtnUp		: "上へ",
+DlgSelectBtnDown	: "下へ",
+DlgSelectBtnSetValue : "選択した値を設定",
+DlgSelectBtnDelete	: "削除",
+
+// Textarea Dialog
+DlgTextareaName	: "名前",
+DlgTextareaCols	: "列",
+DlgTextareaRows	: "行",
+
+// Text Field Dialog
+DlgTextName			: "名前",
+DlgTextValue		: "値",
+DlgTextCharWidth	: "サイズ",
+DlgTextMaxChars		: "最大長",
+DlgTextType			: "タイプ",
+DlgTextTypeText		: "テキスト",
+DlgTextTypePass		: "パスワード入力",
+
+// Hidden Field Dialog
+DlgHiddenName	: "名前",
+DlgHiddenValue	: "値",
+
+// Bulleted List Dialog
+BulletedListProp	: "箇条書き プロパティ",
+NumberedListProp	: "段落番号 プロパティ",
+DlgLstStart			: "開始文字",
+DlgLstType			: "タイプ",
+DlgLstTypeCircle	: "白丸",
+DlgLstTypeDisc		: "黒丸",
+DlgLstTypeSquare	: "四角",
+DlgLstTypeNumbers	: "アラビア数字 (1, 2, 3)",
+DlgLstTypeLCase		: "英字小文字 (a, b, c)",
+DlgLstTypeUCase		: "英字大文字 (A, B, C)",
+DlgLstTypeSRoman	: "ローマ数字小文字 (i, ii, iii)",
+DlgLstTypeLRoman	: "ローマ数字大文字 (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "全般",
+DlgDocBackTab		: "背景",
+DlgDocColorsTab		: "色とマージン",
+DlgDocMetaTab		: "メタデータ",
+
+DlgDocPageTitle		: "ページタイトル",
+DlgDocLangDir		: "言語文字表記の方向",
+DlgDocLangDirLTR	: "左から右に表記(LTR)",
+DlgDocLangDirRTL	: "右から左に表記(RTL)",
+DlgDocLangCode		: "言語コード",
+DlgDocCharSet		: "文字セット符号化",
+DlgDocCharSetCE		: "Central European",
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",
+DlgDocCharSetCR		: "Cyrillic",
+DlgDocCharSetGR		: "Greek",
+DlgDocCharSetJP		: "Japanese",
+DlgDocCharSetKR		: "Korean",
+DlgDocCharSetTR		: "Turkish",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Western European",
+DlgDocCharSetOther	: "他の文字セット符号化",
+
+DlgDocDocType		: "文書タイプヘッダー",
+DlgDocDocTypeOther	: "その他文書タイプヘッダー",
+DlgDocIncXHTML		: "XHTML宣言をインクルード",
+DlgDocBgColor		: "背景色",
+DlgDocBgImage		: "背景画像 URL",
+DlgDocBgNoScroll	: "スクロールしない背景",
+DlgDocCText			: "テキスト",
+DlgDocCLink			: "リンク",
+DlgDocCVisited		: "アクセス済みリンク",
+DlgDocCActive		: "アクセス中リンク",
+DlgDocMargins		: "ページ・マージン",
+DlgDocMaTop			: "上部",
+DlgDocMaLeft		: "左",
+DlgDocMaRight		: "右",
+DlgDocMaBottom		: "下部",
+DlgDocMeIndex		: "文書のキーワード(カンマ区切り)",
+DlgDocMeDescr		: "文書の概要",
+DlgDocMeAuthor		: "文書の作者",
+DlgDocMeCopy		: "文書の著作権",
+DlgDocPreview		: "プレビュー",
+
+// Templates Dialog
+Templates			: "テンプレート(雛形)",
+DlgTemplatesTitle	: "テンプレート内容",
+DlgTemplatesSelMsg	: "エディターで使用するテンプレートを選択してください。<br>(現在のエディタの内容は失われます):",
+DlgTemplatesLoading	: "テンプレート一覧読み込み中. しばらくお待ちください...",
+DlgTemplatesNoTpl	: "(テンプレートが定義されていません)",
+DlgTemplatesReplace	: "現在のエディタの内容と置換えをします",
+
+// About Dialog
+DlgAboutAboutTab	: "バージョン情報",
+DlgAboutBrowserInfoTab	: "ブラウザ情報",
+DlgAboutLicenseTab	: "ライセンス",
+DlgAboutVersion		: "バージョン",
+DlgAboutInfo		: "より詳しい情報はこちらで",
+
+// Div Dialog
+DlgDivGeneralTab	: "全般",
+DlgDivAdvancedTab	: "高度な設定",
+DlgDivStyle		: "スタイル",
+DlgDivInlineStyle	: "インラインスタイル",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/he.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/he.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/he.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Hebrew language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "rtl",
+
+ToolbarCollapse		: "כיווץ סרגל הכלים",
+ToolbarExpand		: "פתיחת סרגל הכלים",
+
+// Toolbar Items and Context Menu
+Save				: "שמירה",
+NewPage				: "דף חדש",
+Preview				: "תצוגה מקדימה",
+Cut					: "גזירה",
+Copy				: "העתקה",
+Paste				: "הדבקה",
+PasteText			: "הדבקה כטקסט פשוט",
+PasteWord			: "הדבקה מ-וורד",
+Print				: "הדפסה",
+SelectAll			: "בחירת הכל",
+RemoveFormat		: "הסרת העיצוב",
+InsertLinkLbl		: "קישור",
+InsertLink			: "הוספת/עריכת קישור",
+RemoveLink			: "הסרת הקישור",
+VisitLink			: "פתח קישור",
+Anchor				: "הוספת/עריכת נקודת עיגון",
+AnchorDelete		: "הסר נקודת עיגון",
+InsertImageLbl		: "תמונה",
+InsertImage			: "הוספת/עריכת תמונה",
+InsertFlashLbl		: "פלאש",
+InsertFlash			: "הוסף/ערוך פלאש",
+InsertTableLbl		: "טבלה",
+InsertTable			: "הוספת/עריכת טבלה",
+InsertLineLbl		: "קו",
+InsertLine			: "הוספת קו אופקי",
+InsertSpecialCharLbl: "תו מיוחד",
+InsertSpecialChar	: "הוספת תו מיוחד",
+InsertSmileyLbl		: "סמיילי",
+InsertSmiley		: "הוספת סמיילי",
+About				: "אודות FCKeditor",
+Bold				: "מודגש",
+Italic				: "נטוי",
+Underline			: "קו תחתון",
+StrikeThrough		: "כתיב מחוק",
+Subscript			: "כתיב תחתון",
+Superscript			: "כתיב עליון",
+LeftJustify			: "יישור לשמאל",
+CenterJustify		: "מרכוז",
+RightJustify		: "יישור לימין",
+BlockJustify		: "יישור לשוליים",
+DecreaseIndent		: "הקטנת אינדנטציה",
+IncreaseIndent		: "הגדלת אינדנטציה",
+Blockquote			: "בלוק ציטוט",
+CreateDiv			: "צור מיכל(תג)DIV",
+EditDiv				: "ערוך מיכל (תג)DIV",
+DeleteDiv			: "הסר מיכל(תג) DIV",
+Undo				: "ביטול צעד אחרון",
+Redo				: "חזרה על צעד אחרון",
+NumberedListLbl		: "רשימה ממוספרת",
+NumberedList		: "הוספת/הסרת רשימה ממוספרת",
+BulletedListLbl		: "רשימת נקודות",
+BulletedList		: "הוספת/הסרת רשימת נקודות",
+ShowTableBorders	: "הצגת מסגרת הטבלה",
+ShowDetails			: "הצגת פרטים",
+Style				: "סגנון",
+FontFormat			: "עיצוב",
+Font				: "גופן",
+FontSize			: "גודל",
+TextColor			: "צבע טקסט",
+BGColor				: "צבע רקע",
+Source				: "מקור",
+Find				: "חיפוש",
+Replace				: "החלפה",
+SpellCheck			: "בדיקת איות",
+UniversalKeyboard	: "מקלדת אוניברסלית",
+PageBreakLbl		: "שבירת דף",
+PageBreak			: "הוסף שבירת דף",
+
+Form			: "טופס",
+Checkbox		: "תיבת סימון",
+RadioButton		: "לחצן אפשרויות",
+TextField		: "שדה טקסט",
+Textarea		: "איזור טקסט",
+HiddenField		: "שדה חבוי",
+Button			: "כפתור",
+SelectionField	: "שדה בחירה",
+ImageButton		: "כפתור תמונה",
+
+FitWindow		: "הגדל את גודל העורך",
+ShowBlocks		: "הצג בלוקים",
+
+// Context Menu
+EditLink			: "עריכת קישור",
+CellCM				: "תא",
+RowCM				: "שורה",
+ColumnCM			: "עמודה",
+InsertRowAfter		: "הוסף שורה אחרי",
+InsertRowBefore		: "הוסף שורה לפני",
+DeleteRows			: "מחיקת שורות",
+InsertColumnAfter	: "הוסף עמודה אחרי",
+InsertColumnBefore	: "הוסף עמודה לפני",
+DeleteColumns		: "מחיקת עמודות",
+InsertCellAfter		: "הוסף תא אחרי",
+InsertCellBefore	: "הוסף תא אחרי",
+DeleteCells			: "מחיקת תאים",
+MergeCells			: "מיזוג תאים",
+MergeRight			: "מזג ימינה",
+MergeDown			: "מזג למטה",
+HorizontalSplitCell	: "פצל תא אופקית",
+VerticalSplitCell	: "פצל תא אנכית",
+TableDelete			: "מחק טבלה",
+CellProperties		: "תכונות התא",
+TableProperties		: "תכונות הטבלה",
+ImageProperties		: "תכונות התמונה",
+FlashProperties		: "מאפייני פלאש",
+
+AnchorProp			: "מאפייני נקודת עיגון",
+ButtonProp			: "מאפייני כפתור",
+CheckboxProp		: "מאפייני תיבת סימון",
+HiddenFieldProp		: "מאפיני שדה חבוי",
+RadioButtonProp		: "מאפייני לחצן אפשרויות",
+ImageButtonProp		: "מאפיני כפתור תמונה",
+TextFieldProp		: "מאפייני שדה טקסט",
+SelectionFieldProp	: "מאפייני שדה בחירה",
+TextareaProp		: "מאפיני איזור טקסט",
+FormProp			: "מאפיני טופס",
+
+FontFormats			: "נורמלי;קוד;כתובת;כותרת;כותרת 2;כותרת 3;כותרת 4;כותרת 5;כותרת 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "מעבד XHTML, נא להמתין...",
+Done				: "המשימה הושלמה",
+PasteWordConfirm	: "נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?",
+NotCompatiblePaste	: "פעולה זו זמינה לדפדפן אינטרנט אקספלורר מגירסא 5.5 ומעלה. האם להמשיך בהדבקה ללא הניקוי?",
+UnknownToolbarItem	: "פריט לא ידוע בסרגל הכלים \"%1\"",
+UnknownCommand		: "שם פעולה לא ידוע \"%1\"",
+NotImplemented		: "הפקודה לא מיושמת",
+UnknownToolbarSet	: "ערכת סרגל הכלים \"%1\" לא קיימת",
+NoActiveX			: "הגדרות אבטחה של הדפדפן עלולות לגביל את אפשרויות העריכה.יש לאפשר את האופציה \"הרץ פקדים פעילים ותוספות\". תוכל לחוות טעויות וחיווים של אפשרויות שחסרים.",
+BrowseServerBlocked : "לא ניתן לגשת לדפדפן משאבים.אנא וודא שחוסם חלונות הקופצים לא פעיל.",
+DialogBlocked		: "לא היה ניתן לפתוח חלון דיאלוג. אנא וודא שחוסם חלונות קופצים לא פעיל.",
+VisitLinkBlocked	: "לא ניתן לפתוח חלון חדש.נא לוודא שחוסמי החלונות הקופצים לא פעילים.",
+
+// Dialogs
+DlgBtnOK			: "אישור",
+DlgBtnCancel		: "ביטול",
+DlgBtnClose			: "סגירה",
+DlgBtnBrowseServer	: "סייר השרת",
+DlgAdvancedTag		: "אפשרויות מתקדמות",
+DlgOpOther			: "<אחר>",
+DlgInfoTab			: "מידע",
+DlgAlertUrl			: "אנא הזן URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<לא נקבע>",
+DlgGenId			: "זיהוי (Id)",
+DlgGenLangDir		: "כיוון שפה",
+DlgGenLangDirLtr	: "שמאל לימין (LTR)",
+DlgGenLangDirRtl	: "ימין לשמאל (RTL)",
+DlgGenLangCode		: "קוד שפה",
+DlgGenAccessKey		: "מקש גישה",
+DlgGenName			: "שם",
+DlgGenTabIndex		: "מספר טאב",
+DlgGenLongDescr		: "קישור לתיאור מפורט",
+DlgGenClass			: "גיליונות עיצוב קבוצות",
+DlgGenTitle			: "כותרת מוצעת",
+DlgGenContType		: "Content Type מוצע",
+DlgGenLinkCharset	: "קידוד המשאב המקושר",
+DlgGenStyle			: "סגנון",
+
+// Image Dialog
+DlgImgTitle			: "תכונות התמונה",
+DlgImgInfoTab		: "מידע על התמונה",
+DlgImgBtnUpload		: "שליחה לשרת",
+DlgImgURL			: "כתובת (URL)",
+DlgImgUpload		: "העלאה",
+DlgImgAlt			: "טקסט חלופי",
+DlgImgWidth			: "רוחב",
+DlgImgHeight		: "גובה",
+DlgImgLockRatio		: "נעילת היחס",
+DlgBtnResetSize		: "איפוס הגודל",
+DlgImgBorder		: "מסגרת",
+DlgImgHSpace		: "מרווח אופקי",
+DlgImgVSpace		: "מרווח אנכי",
+DlgImgAlign			: "יישור",
+DlgImgAlignLeft		: "לשמאל",
+DlgImgAlignAbsBottom: "לתחתית האבסולוטית",
+DlgImgAlignAbsMiddle: "מרכוז אבסולוטי",
+DlgImgAlignBaseline	: "לקו התחתית",
+DlgImgAlignBottom	: "לתחתית",
+DlgImgAlignMiddle	: "לאמצע",
+DlgImgAlignRight	: "לימין",
+DlgImgAlignTextTop	: "לראש הטקסט",
+DlgImgAlignTop		: "למעלה",
+DlgImgPreview		: "תצוגה מקדימה",
+DlgImgAlertUrl		: "נא להקליד את כתובת התמונה",
+DlgImgLinkTab		: "קישור",
+
+// Flash Dialog
+DlgFlashTitle		: "מאפיני פלאש",
+DlgFlashChkPlay		: "נגן אוטומטי",
+DlgFlashChkLoop		: "לולאה",
+DlgFlashChkMenu		: "אפשר תפריט פלאש",
+DlgFlashScale		: "גודל",
+DlgFlashScaleAll	: "הצג הכל",
+DlgFlashScaleNoBorder	: "ללא גבולות",
+DlgFlashScaleFit	: "התאמה מושלמת",
+
+// Link Dialog
+DlgLnkWindowTitle	: "קישור",
+DlgLnkInfoTab		: "מידע על הקישור",
+DlgLnkTargetTab		: "מטרה",
+
+DlgLnkType			: "סוג קישור",
+DlgLnkTypeURL		: "כתובת (URL)",
+DlgLnkTypeAnchor	: "עוגן בעמוד זה",
+DlgLnkTypeEMail		: "דוא''ל",
+DlgLnkProto			: "פרוטוקול",
+DlgLnkProtoOther	: "<אחר>",
+DlgLnkURL			: "כתובת (URL)",
+DlgLnkAnchorSel		: "בחירת עוגן",
+DlgLnkAnchorByName	: "עפ''י שם העוגן",
+DlgLnkAnchorById	: "עפ''י זיהוי (Id) הרכיב",
+DlgLnkNoAnchors		: "(אין עוגנים זמינים בדף)",
+DlgLnkEMail			: "כתובת הדוא''ל",
+DlgLnkEMailSubject	: "נושא ההודעה",
+DlgLnkEMailBody		: "גוף ההודעה",
+DlgLnkUpload		: "העלאה",
+DlgLnkBtnUpload		: "שליחה לשרת",
+
+DlgLnkTarget		: "מטרה",
+DlgLnkTargetFrame	: "<מסגרת>",
+DlgLnkTargetPopup	: "<חלון קופץ>",
+DlgLnkTargetBlank	: "חלון חדש (_blank)",
+DlgLnkTargetParent	: "חלון האב (_parent)",
+DlgLnkTargetSelf	: "באותו החלון (_self)",
+DlgLnkTargetTop		: "חלון ראשי (_top)",
+DlgLnkTargetFrameName	: "שם מסגרת היעד",
+DlgLnkPopWinName	: "שם החלון הקופץ",
+DlgLnkPopWinFeat	: "תכונות החלון הקופץ",
+DlgLnkPopResize		: "בעל גודל ניתן לשינוי",
+DlgLnkPopLocation	: "סרגל כתובת",
+DlgLnkPopMenu		: "סרגל תפריט",
+DlgLnkPopScroll		: "ניתן לגלילה",
+DlgLnkPopStatus		: "סרגל חיווי",
+DlgLnkPopToolbar	: "סרגל הכלים",
+DlgLnkPopFullScrn	: "מסך מלא (IE)",
+DlgLnkPopDependent	: "תלוי (Netscape)",
+DlgLnkPopWidth		: "רוחב",
+DlgLnkPopHeight		: "גובה",
+DlgLnkPopLeft		: "מיקום צד שמאל",
+DlgLnkPopTop		: "מיקום צד עליון",
+
+DlnLnkMsgNoUrl		: "נא להקליד את כתובת הקישור (URL)",
+DlnLnkMsgNoEMail	: "נא להקליד את כתובת הדוא''ל",
+DlnLnkMsgNoAnchor	: "נא לבחור עוגן במסמך",
+DlnLnkMsgInvPopName	: "שם החלון הקופץ חייב להתחיל באותיות ואסור לכלול רווחים",
+
+// Color Dialog
+DlgColorTitle		: "בחירת צבע",
+DlgColorBtnClear	: "איפוס",
+DlgColorHighlight	: "נוכחי",
+DlgColorSelected	: "נבחר",
+
+// Smiley Dialog
+DlgSmileyTitle		: "הוספת סמיילי",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "בחירת תו מיוחד",
+
+// Table Dialog
+DlgTableTitle		: "תכונות טבלה",
+DlgTableRows		: "שורות",
+DlgTableColumns		: "עמודות",
+DlgTableBorder		: "גודל מסגרת",
+DlgTableAlign		: "יישור",
+DlgTableAlignNotSet	: "<לא נקבע>",
+DlgTableAlignLeft	: "שמאל",
+DlgTableAlignCenter	: "מרכז",
+DlgTableAlignRight	: "ימין",
+DlgTableWidth		: "רוחב",
+DlgTableWidthPx		: "פיקסלים",
+DlgTableWidthPc		: "אחוז",
+DlgTableHeight		: "גובה",
+DlgTableCellSpace	: "מרווח תא",
+DlgTableCellPad		: "ריפוד תא",
+DlgTableCaption		: "כיתוב",
+DlgTableSummary		: "סיכום",
+DlgTableHeaders		: "כותרות",
+DlgTableHeadersNone		: "אין",
+DlgTableHeadersColumn	: "עמודה ראשונה",
+DlgTableHeadersRow		: "שורה ראשונה",
+DlgTableHeadersBoth		: "שניהם",
+
+// Table Cell Dialog
+DlgCellTitle		: "תכונות תא",
+DlgCellWidth		: "רוחב",
+DlgCellWidthPx		: "פיקסלים",
+DlgCellWidthPc		: "אחוז",
+DlgCellHeight		: "גובה",
+DlgCellWordWrap		: "גלילת שורות",
+DlgCellWordWrapNotSet	: "<לא נקבע>",
+DlgCellWordWrapYes	: "כן",
+DlgCellWordWrapNo	: "לא",
+DlgCellHorAlign		: "יישור אופקי",
+DlgCellHorAlignNotSet	: "<לא נקבע>",
+DlgCellHorAlignLeft	: "שמאל",
+DlgCellHorAlignCenter	: "מרכז",
+DlgCellHorAlignRight: "ימין",
+DlgCellVerAlign		: "יישור אנכי",
+DlgCellVerAlignNotSet	: "<לא נקבע>",
+DlgCellVerAlignTop	: "למעלה",
+DlgCellVerAlignMiddle	: "לאמצע",
+DlgCellVerAlignBottom	: "לתחתית",
+DlgCellVerAlignBaseline	: "קו תחתית",
+DlgCellType		: "סוג תא",
+DlgCellTypeData		: "סוג",
+DlgCellTypeHeader	: "כותרת",
+DlgCellRowSpan		: "טווח שורות",
+DlgCellCollSpan		: "טווח עמודות",
+DlgCellBackColor	: "צבע רקע",
+DlgCellBorderColor	: "צבע מסגרת",
+DlgCellBtnSelect	: "בחירה...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "חפש והחלף",
+
+// Find Dialog
+DlgFindTitle		: "חיפוש",
+DlgFindFindBtn		: "חיפוש",
+DlgFindNotFoundMsg	: "הטקסט המבוקש לא נמצא.",
+
+// Replace Dialog
+DlgReplaceTitle			: "החלפה",
+DlgReplaceFindLbl		: "חיפוש מחרוזת:",
+DlgReplaceReplaceLbl	: "החלפה במחרוזת:",
+DlgReplaceCaseChk		: "התאמת סוג אותיות (Case)",
+DlgReplaceReplaceBtn	: "החלפה",
+DlgReplaceReplAllBtn	: "החלפה בכל העמוד",
+DlgReplaceWordChk		: "התאמה למילה המלאה",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה  אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).",
+PasteErrorCopy	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).",
+
+PasteAsText		: "הדבקה כטקסט פשוט",
+PasteFromWord	: "הדבקה מ-וורד",
+
+DlgPasteMsg2	: "אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.",
+DlgPasteSec		: "עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (clipboard) בצורה ישירה.אנא בצע הדבק שוב בחלון זה.",
+DlgPasteIgnoreFont		: "התעלם מהגדרות סוג פונט",
+DlgPasteRemoveStyles	: "הסר הגדרות סגנון",
+
+// Color Picker
+ColorAutomatic	: "אוטומטי",
+ColorMoreColors	: "צבעים נוספים...",
+
+// Document Properties
+DocProps		: "מאפיני מסמך",
+
+// Anchor Dialog
+DlgAnchorTitle		: "מאפיני נקודת עיגון",
+DlgAnchorName		: "שם לנקודת עיגון",
+DlgAnchorErrorName	: "אנא הזן שם לנקודת עיגון",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "לא נמצא במילון",
+DlgSpellChangeTo		: "שנה ל",
+DlgSpellBtnIgnore		: "התעלם",
+DlgSpellBtnIgnoreAll	: "התעלם מהכל",
+DlgSpellBtnReplace		: "החלף",
+DlgSpellBtnReplaceAll	: "החלף הכל",
+DlgSpellBtnUndo			: "החזר",
+DlgSpellNoSuggestions	: "- אין הצעות -",
+DlgSpellProgress		: "בדיקות איות בתהליך ....",
+DlgSpellNoMispell		: "בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב",
+DlgSpellNoChanges		: "בדיקות איות הסתיימה: לא שונתה אף מילה",
+DlgSpellOneChange		: "בדיקות איות הסתיימה: שונתה מילה אחת",
+DlgSpellManyChanges		: "בדיקות איות הסתיימה: %1 מילים שונו",
+
+IeSpellDownload			: "בודק האיות לא מותקן, האם אתה מעוניין להוריד?",
+
+// Button Dialog
+DlgButtonText		: "טקסט (ערך)",
+DlgButtonType		: "סוג",
+DlgButtonTypeBtn	: "כפתור",
+DlgButtonTypeSbm	: "שלח",
+DlgButtonTypeRst	: "אפס",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "שם",
+DlgCheckboxValue	: "ערך",
+DlgCheckboxSelected	: "בחור",
+
+// Form Dialog
+DlgFormName		: "שם",
+DlgFormAction	: "שלח אל",
+DlgFormMethod	: "סוג שליחה",
+
+// Select Field Dialog
+DlgSelectName		: "שם",
+DlgSelectValue		: "ערך",
+DlgSelectSize		: "גודל",
+DlgSelectLines		: "שורות",
+DlgSelectChkMulti	: "אפשר בחירות מרובות",
+DlgSelectOpAvail	: "אפשרויות זמינות",
+DlgSelectOpText		: "טקסט",
+DlgSelectOpValue	: "ערך",
+DlgSelectBtnAdd		: "הוסף",
+DlgSelectBtnModify	: "שנה",
+DlgSelectBtnUp		: "למעלה",
+DlgSelectBtnDown	: "למטה",
+DlgSelectBtnSetValue : "קבע כברירת מחדל",
+DlgSelectBtnDelete	: "מחק",
+
+// Textarea Dialog
+DlgTextareaName	: "שם",
+DlgTextareaCols	: "עמודות",
+DlgTextareaRows	: "שורות",
+
+// Text Field Dialog
+DlgTextName			: "שם",
+DlgTextValue		: "ערך",
+DlgTextCharWidth	: "רוחב באותיות",
+DlgTextMaxChars		: "מקסימות אותיות",
+DlgTextType			: "סוג",
+DlgTextTypeText		: "טקסט",
+DlgTextTypePass		: "סיסמה",
+
+// Hidden Field Dialog
+DlgHiddenName	: "שם",
+DlgHiddenValue	: "ערך",
+
+// Bulleted List Dialog
+BulletedListProp	: "מאפייני רשימה",
+NumberedListProp	: "מאפייני רשימה ממוספרת",
+DlgLstStart			: "התחלה",
+DlgLstType			: "סוג",
+DlgLstTypeCircle	: "עיגול",
+DlgLstTypeDisc		: "דיסק",
+DlgLstTypeSquare	: "מרובע",
+DlgLstTypeNumbers	: "מספרים (1, 2, 3)",
+DlgLstTypeLCase		: "אותיות קטנות (a, b, c)",
+DlgLstTypeUCase		: "אותיות גדולות (A, B, C)",
+DlgLstTypeSRoman	: "ספרות רומאיות קטנות (i, ii, iii)",
+DlgLstTypeLRoman	: "ספרות רומאיות גדולות (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "כללי",
+DlgDocBackTab		: "רקע",
+DlgDocColorsTab		: "צבעים וגבולות",
+DlgDocMetaTab		: "נתוני META",
+
+DlgDocPageTitle		: "כותרת דף",
+DlgDocLangDir		: "כיוון שפה",
+DlgDocLangDirLTR	: "שמאל לימין (LTR)",
+DlgDocLangDirRTL	: "ימין לשמאל (RTL)",
+DlgDocLangCode		: "קוד שפה",
+DlgDocCharSet		: "קידוד אותיות",
+DlgDocCharSetCE		: "מרכז אירופה",
+DlgDocCharSetCT		: "סיני מסורתי (Big5)",
+DlgDocCharSetCR		: "קירילי",
+DlgDocCharSetGR		: "יוונית",
+DlgDocCharSetJP		: "יפנית",
+DlgDocCharSetKR		: "קוראנית",
+DlgDocCharSetTR		: "טורקית",
+DlgDocCharSetUN		: "יוני קוד (UTF-8)",
+DlgDocCharSetWE		: "מערב אירופה",
+DlgDocCharSetOther	: "קידוד אותיות אחר",
+
+DlgDocDocType		: "הגדרות סוג מסמך",
+DlgDocDocTypeOther	: "הגדרות סוג מסמך אחרות",
+DlgDocIncXHTML		: "כלול הגדרות XHTML",
+DlgDocBgColor		: "צבע רקע",
+DlgDocBgImage		: "URL לתמונת רקע",
+DlgDocBgNoScroll	: "רגע ללא גלילה",
+DlgDocCText			: "טקסט",
+DlgDocCLink			: "קישור",
+DlgDocCVisited		: "קישור שבוקר",
+DlgDocCActive		: " קישור פעיל",
+DlgDocMargins		: "גבולות דף",
+DlgDocMaTop			: "למעלה",
+DlgDocMaLeft		: "שמאלה",
+DlgDocMaRight		: "ימינה",
+DlgDocMaBottom		: "למטה",
+DlgDocMeIndex		: "מפתח עניינים של המסמך )מופרד בפסיק(",
+DlgDocMeDescr		: "תאור מסמך",
+DlgDocMeAuthor		: "מחבר",
+DlgDocMeCopy		: "זכויות יוצרים",
+DlgDocPreview		: "תצוגה מקדימה",
+
+// Templates Dialog
+Templates			: "תבניות",
+DlgTemplatesTitle	: "תביות תוכן",
+DlgTemplatesSelMsg	: "אנא בחר תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:",
+DlgTemplatesLoading	: "מעלה רשימת תבניות אנא המתן",
+DlgTemplatesNoTpl	: "(לא הוגדרו תבניות)",
+DlgTemplatesReplace	: "החלפת תוכן ממשי",
+
+// About Dialog
+DlgAboutAboutTab	: "אודות",
+DlgAboutBrowserInfoTab	: "גירסת דפדפן",
+DlgAboutLicenseTab	: "רשיון",
+DlgAboutVersion		: "גירסא",
+DlgAboutInfo		: "מידע נוסף ניתן למצוא כאן:",
+
+// Div Dialog
+DlgDivGeneralTab	: "כללי",
+DlgDivAdvancedTab	: "מתקדם",
+DlgDivStyle		: "סגנון",
+DlgDivInlineStyle	: "סגנון בתוך השורה",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fi.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fi.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/fi.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Finnish language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Piilota työkalurivi",
+ToolbarExpand		: "Näytä työkalurivi",
+
+// Toolbar Items and Context Menu
+Save				: "Tallenna",
+NewPage				: "Tyhjennä",
+Preview				: "Esikatsele",
+Cut					: "Leikkaa",
+Copy				: "Kopioi",
+Paste				: "Liitä",
+PasteText			: "Liitä tekstinä",
+PasteWord			: "Liitä Wordista",
+Print				: "Tulosta",
+SelectAll			: "Valitse kaikki",
+RemoveFormat		: "Poista muotoilu",
+InsertLinkLbl		: "Linkki",
+InsertLink			: "Lisää linkki/muokkaa linkkiä",
+RemoveLink			: "Poista linkki",
+VisitLink			: "Avaa linkki",
+Anchor				: "Lisää ankkuri/muokkaa ankkuria",
+AnchorDelete		: "Poista ankkuri",
+InsertImageLbl		: "Kuva",
+InsertImage			: "Lisää kuva/muokkaa kuvaa",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Lisää/muokkaa Flashia",
+InsertTableLbl		: "Taulu",
+InsertTable			: "Lisää taulu/muokkaa taulua",
+InsertLineLbl		: "Murtoviiva",
+InsertLine			: "Lisää murtoviiva",
+InsertSpecialCharLbl: "Erikoismerkki",
+InsertSpecialChar	: "Lisää erikoismerkki",
+InsertSmileyLbl		: "Hymiö",
+InsertSmiley		: "Lisää hymiö",
+About				: "FCKeditorista",
+Bold				: "Lihavoitu",
+Italic				: "Kursivoitu",
+Underline			: "Alleviivattu",
+StrikeThrough		: "Yliviivattu",
+Subscript			: "Alaindeksi",
+Superscript			: "Yläindeksi",
+LeftJustify			: "Tasaa vasemmat reunat",
+CenterJustify		: "Keskitä",
+RightJustify		: "Tasaa oikeat reunat",
+BlockJustify		: "Tasaa molemmat reunat",
+DecreaseIndent		: "Pienennä sisennystä",
+IncreaseIndent		: "Suurenna sisennystä",
+Blockquote			: "Lainaus",
+CreateDiv			: "Lisää Div",
+EditDiv				: "Muokkaa Div:ä",
+DeleteDiv			: "Poista Div",
+Undo				: "Kumoa",
+Redo				: "Toista",
+NumberedListLbl		: "Numerointi",
+NumberedList		: "Lisää/poista numerointi",
+BulletedListLbl		: "Luottelomerkit",
+BulletedList		: "Lisää/poista luottelomerkit",
+ShowTableBorders	: "Näytä taulun rajat",
+ShowDetails			: "Näytä muotoilu",
+Style				: "Tyyli",
+FontFormat			: "Muotoilu",
+Font				: "Fontti",
+FontSize			: "Koko",
+TextColor			: "Tekstiväri",
+BGColor				: "Taustaväri",
+Source				: "Koodi",
+Find				: "Etsi",
+Replace				: "Korvaa",
+SpellCheck			: "Tarkista oikeinkirjoitus",
+UniversalKeyboard	: "Universaali näppäimistö",
+PageBreakLbl		: "Sivun vaihto",
+PageBreak			: "Lisää sivun vaihto",
+
+Form			: "Lomake",
+Checkbox		: "Valintaruutu",
+RadioButton		: "Radiopainike",
+TextField		: "Tekstikenttä",
+Textarea		: "Tekstilaatikko",
+HiddenField		: "Piilokenttä",
+Button			: "Painike",
+SelectionField	: "Valintakenttä",
+ImageButton		: "Kuvapainike",
+
+FitWindow		: "Suurenna editori koko ikkunaan",
+ShowBlocks		: "Näytä elementit",
+
+// Context Menu
+EditLink			: "Muokkaa linkkiä",
+CellCM				: "Solu",
+RowCM				: "Rivi",
+ColumnCM			: "Sarake",
+InsertRowAfter		: "Lisää rivi alapuolelle",
+InsertRowBefore		: "Lisää rivi yläpuolelle",
+DeleteRows			: "Poista rivit",
+InsertColumnAfter	: "Lisää sarake oikealle",
+InsertColumnBefore	: "Lisää sarake vasemmalle",
+DeleteColumns		: "Poista sarakkeet",
+InsertCellAfter		: "Lisää solu perään",
+InsertCellBefore	: "Lisää solu eteen",
+DeleteCells			: "Poista solut",
+MergeCells			: "Yhdistä solut",
+MergeRight			: "Yhdistä oikealla olevan kanssa",
+MergeDown			: "Yhdistä alla olevan kanssa",
+HorizontalSplitCell	: "Jaa solu vaakasuunnassa",
+VerticalSplitCell	: "Jaa solu pystysuunnassa",
+TableDelete			: "Poista taulu",
+CellProperties		: "Solun ominaisuudet",
+TableProperties		: "Taulun ominaisuudet",
+ImageProperties		: "Kuvan ominaisuudet",
+FlashProperties		: "Flash ominaisuudet",
+
+AnchorProp			: "Ankkurin ominaisuudet",
+ButtonProp			: "Painikkeen ominaisuudet",
+CheckboxProp		: "Valintaruudun ominaisuudet",
+HiddenFieldProp		: "Piilokentän ominaisuudet",
+RadioButtonProp		: "Radiopainikkeen ominaisuudet",
+ImageButtonProp		: "Kuvapainikkeen ominaisuudet",
+TextFieldProp		: "Tekstikentän ominaisuudet",
+SelectionFieldProp	: "Valintakentän ominaisuudet",
+TextareaProp		: "Tekstilaatikon ominaisuudet",
+FormProp			: "Lomakkeen ominaisuudet",
+
+FontFormats			: "Normaali;Muotoiltu;Osoite;Otsikko 1;Otsikko 2;Otsikko 3;Otsikko 4;Otsikko 5;Otsikko 6",
+
+// Alerts and Messages
+ProcessingXHTML		: "Prosessoidaan XHTML:ää. Odota hetki...",
+Done				: "Valmis",
+PasteWordConfirm	: "Teksti, jonka haluat liittää, näyttää olevan kopioitu Wordista. Haluatko puhdistaa sen ennen liittämistä?",
+NotCompatiblePaste	: "Tämä komento toimii vain Internet Explorer 5.5:ssa tai uudemmassa. Haluatko liittää ilman puhdistusta?",
+UnknownToolbarItem	: "Tuntemanton työkalu \"%1\"",
+UnknownCommand		: "Tuntematon komento \"%1\"",
+NotImplemented		: "Komentoa ei ole liitetty sovellukseen",
+UnknownToolbarSet	: "Työkalukokonaisuus \"%1\" ei ole olemassa",
+NoActiveX			: "Selaimesi turvallisuusasetukset voivat rajoittaa joitain editorin ominaisuuksia. Sinun pitää ottaa käyttöön asetuksista \"Suorita ActiveX komponentit ja -plugin-laajennukset\". Saatat kohdata virheitä ja huomata puuttuvia ominaisuuksia.",
+BrowseServerBlocked : "Resurssiselainta ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+DialogBlocked		: "Apuikkunaa ei voitu avaata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+VisitLinkBlocked	: "IUutta ikkunaa ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Peruuta",
+DlgBtnClose			: "Sulje",
+DlgBtnBrowseServer	: "Selaa palvelinta",
+DlgAdvancedTag		: "Lisäominaisuudet",
+DlgOpOther			: "Muut",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Lisää URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<ei asetettu>",
+DlgGenId			: "Tunniste",
+DlgGenLangDir		: "Kielen suunta",
+DlgGenLangDirLtr	: "Vasemmalta oikealle (LTR)",
+DlgGenLangDirRtl	: "Oikealta vasemmalle (RTL)",
+DlgGenLangCode		: "Kielikoodi",
+DlgGenAccessKey		: "Pikanäppäin",
+DlgGenName			: "Nimi",
+DlgGenTabIndex		: "Tabulaattori indeksi",
+DlgGenLongDescr		: "Pitkän kuvauksen URL",
+DlgGenClass			: "Tyyliluokat",
+DlgGenTitle			: "Avustava otsikko",
+DlgGenContType		: "Avustava sisällön tyyppi",
+DlgGenLinkCharset	: "Linkitetty kirjaimisto",
+DlgGenStyle			: "Tyyli",
+
+// Image Dialog
+DlgImgTitle			: "Kuvan ominaisuudet",
+DlgImgInfoTab		: "Kuvan tiedot",
+DlgImgBtnUpload		: "Lähetä palvelimelle",
+DlgImgURL			: "Osoite",
+DlgImgUpload		: "Lisää kuva",
+DlgImgAlt			: "Vaihtoehtoinen teksti",
+DlgImgWidth			: "Leveys",
+DlgImgHeight		: "Korkeus",
+DlgImgLockRatio		: "Lukitse suhteet",
+DlgBtnResetSize		: "Alkuperäinen koko",
+DlgImgBorder		: "Raja",
+DlgImgHSpace		: "Vaakatila",
+DlgImgVSpace		: "Pystytila",
+DlgImgAlign			: "Kohdistus",
+DlgImgAlignLeft		: "Vasemmalle",
+DlgImgAlignAbsBottom: "Aivan alas",
+DlgImgAlignAbsMiddle: "Aivan keskelle",
+DlgImgAlignBaseline	: "Alas (teksti)",
+DlgImgAlignBottom	: "Alas",
+DlgImgAlignMiddle	: "Keskelle",
+DlgImgAlignRight	: "Oikealle",
+DlgImgAlignTextTop	: "Ylös (teksti)",
+DlgImgAlignTop		: "Ylös",
+DlgImgPreview		: "Esikatselu",
+DlgImgAlertUrl		: "Kirjoita kuvan osoite (URL)",
+DlgImgLinkTab		: "Linkki",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash ominaisuudet",
+DlgFlashChkPlay		: "Automaattinen käynnistys",
+DlgFlashChkLoop		: "Toisto",
+DlgFlashChkMenu		: "Näytä Flash-valikko",
+DlgFlashScale		: "Levitä",
+DlgFlashScaleAll	: "Näytä kaikki",
+DlgFlashScaleNoBorder	: "Ei rajaa",
+DlgFlashScaleFit	: "Tarkka koko",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Linkki",
+DlgLnkInfoTab		: "Linkin tiedot",
+DlgLnkTargetTab		: "Kohde",
+
+DlgLnkType			: "Linkkityyppi",
+DlgLnkTypeURL		: "Osoite",
+DlgLnkTypeAnchor	: "Ankkuri tässä sivussa",
+DlgLnkTypeEMail		: "Sähköposti",
+DlgLnkProto			: "Protokolla",
+DlgLnkProtoOther	: "<muu>",
+DlgLnkURL			: "Osoite",
+DlgLnkAnchorSel		: "Valitse ankkuri",
+DlgLnkAnchorByName	: "Ankkurin nimen mukaan",
+DlgLnkAnchorById	: "Ankkurin ID:n mukaan",
+DlgLnkNoAnchors		: "(Ei ankkureita tässä dokumentissa)",
+DlgLnkEMail			: "Sähköpostiosoite",
+DlgLnkEMailSubject	: "Aihe",
+DlgLnkEMailBody		: "Viesti",
+DlgLnkUpload		: "Lisää tiedosto",
+DlgLnkBtnUpload		: "Lähetä palvelimelle",
+
+DlgLnkTarget		: "Kohde",
+DlgLnkTargetFrame	: "<kehys>",
+DlgLnkTargetPopup	: "<popup ikkuna>",
+DlgLnkTargetBlank	: "Uusi ikkuna (_blank)",
+DlgLnkTargetParent	: "Emoikkuna (_parent)",
+DlgLnkTargetSelf	: "Sama ikkuna (_self)",
+DlgLnkTargetTop		: "Päällimmäisin ikkuna (_top)",
+DlgLnkTargetFrameName	: "Kohdekehyksen nimi",
+DlgLnkPopWinName	: "Popup ikkunan nimi",
+DlgLnkPopWinFeat	: "Popup ikkunan ominaisuudet",
+DlgLnkPopResize		: "Venytettävä",
+DlgLnkPopLocation	: "Osoiterivi",
+DlgLnkPopMenu		: "Valikkorivi",
+DlgLnkPopScroll		: "Vierityspalkit",
+DlgLnkPopStatus		: "Tilarivi",
+DlgLnkPopToolbar	: "Vakiopainikkeet",
+DlgLnkPopFullScrn	: "Täysi ikkuna (IE)",
+DlgLnkPopDependent	: "Riippuva (Netscape)",
+DlgLnkPopWidth		: "Leveys",
+DlgLnkPopHeight		: "Korkeus",
+DlgLnkPopLeft		: "Vasemmalta (px)",
+DlgLnkPopTop		: "Ylhäältä (px)",
+
+DlnLnkMsgNoUrl		: "Linkille on kirjoitettava URL",
+DlnLnkMsgNoEMail	: "Kirjoita sähköpostiosoite",
+DlnLnkMsgNoAnchor	: "Valitse ankkuri",
+DlnLnkMsgInvPopName	: "Popup-ikkunan nimi pitää alkaa aakkosella ja ei saa sisältää välejä",
+
+// Color Dialog
+DlgColorTitle		: "Valitse väri",
+DlgColorBtnClear	: "Tyhjennä",
+DlgColorHighlight	: "Kohdalla",
+DlgColorSelected	: "Valittu",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Lisää hymiö",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Valitse erikoismerkki",
+
+// Table Dialog
+DlgTableTitle		: "Taulun ominaisuudet",
+DlgTableRows		: "Rivit",
+DlgTableColumns		: "Sarakkeet",
+DlgTableBorder		: "Rajan paksuus",
+DlgTableAlign		: "Kohdistus",
+DlgTableAlignNotSet	: "<ei asetettu>",
+DlgTableAlignLeft	: "Vasemmalle",
+DlgTableAlignCenter	: "Keskelle",
+DlgTableAlignRight	: "Oikealle",
+DlgTableWidth		: "Leveys",
+DlgTableWidthPx		: "pikseliä",
+DlgTableWidthPc		: "prosenttia",
+DlgTableHeight		: "Korkeus",
+DlgTableCellSpace	: "Solujen väli",
+DlgTableCellPad		: "Solujen sisennys",
+DlgTableCaption		: "Otsikko",
+DlgTableSummary		: "Yhteenveto",
+DlgTableHeaders		: "Ylätunnisteet",
+DlgTableHeadersNone		: "Ei ylätunnisteita",
+DlgTableHeadersColumn	: "Ensimmäinen sarake",
+DlgTableHeadersRow		: "Ensimmäinen rivi",
+DlgTableHeadersBoth		: "Molemmat",
+
+// Table Cell Dialog
+DlgCellTitle		: "Solun ominaisuudet",
+DlgCellWidth		: "Leveys",
+DlgCellWidthPx		: "pikseliä",
+DlgCellWidthPc		: "prosenttia",
+DlgCellHeight		: "Korkeus",
+DlgCellWordWrap		: "Tekstikierrätys",
+DlgCellWordWrapNotSet	: "<Ei asetettu>",
+DlgCellWordWrapYes	: "Kyllä",
+DlgCellWordWrapNo	: "Ei",
+DlgCellHorAlign		: "Vaakakohdistus",
+DlgCellHorAlignNotSet	: "<Ei asetettu>",
+DlgCellHorAlignLeft	: "Vasemmalle",
+DlgCellHorAlignCenter	: "Keskelle",
+DlgCellHorAlignRight: "Oikealle",
+DlgCellVerAlign		: "Pystykohdistus",
+DlgCellVerAlignNotSet	: "<Ei asetettu>",
+DlgCellVerAlignTop	: "Ylös",
+DlgCellVerAlignMiddle	: "Keskelle",
+DlgCellVerAlignBottom	: "Alas",
+DlgCellVerAlignBaseline	: "Tekstin alas",
+DlgCellType		: "Solun tyyppi",
+DlgCellTypeData		: "Sisältö",
+DlgCellTypeHeader	: "Ylätunniste",
+DlgCellRowSpan		: "Rivin jatkuvuus",
+DlgCellCollSpan		: "Sarakkeen jatkuvuus",
+DlgCellBackColor	: "Taustaväri",
+DlgCellBorderColor	: "Rajan väri",
+DlgCellBtnSelect	: "Valitse...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Etsi ja korvaa",
+
+// Find Dialog
+DlgFindTitle		: "Etsi",
+DlgFindFindBtn		: "Etsi",
+DlgFindNotFoundMsg	: "Etsittyä tekstiä ei löytynyt.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Korvaa",
+DlgReplaceFindLbl		: "Etsi mitä:",
+DlgReplaceReplaceLbl	: "Korvaa tällä:",
+DlgReplaceCaseChk		: "Sama kirjainkoko",
+DlgReplaceReplaceBtn	: "Korvaa",
+DlgReplaceReplAllBtn	: "Korvaa kaikki",
+DlgReplaceWordChk		: "Koko sana",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).",
+PasteErrorCopy	: "Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).",
+
+PasteAsText		: "Liitä tekstinä",
+PasteFromWord	: "Liitä Wordista",
+
+DlgPasteMsg2	: "Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.",
+DlgPasteSec		: "Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.",
+DlgPasteIgnoreFont		: "Jätä huomioimatta fonttimääritykset",
+DlgPasteRemoveStyles	: "Poista tyylimääritykset",
+
+// Color Picker
+ColorAutomatic	: "Automaattinen",
+ColorMoreColors	: "Lisää värejä...",
+
+// Document Properties
+DocProps		: "Dokumentin ominaisuudet",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankkurin ominaisuudet",
+DlgAnchorName		: "Nimi",
+DlgAnchorErrorName	: "Ankkurille on kirjoitettava nimi",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ei sanakirjassa",
+DlgSpellChangeTo		: "Vaihda",
+DlgSpellBtnIgnore		: "Jätä huomioimatta",
+DlgSpellBtnIgnoreAll	: "Jätä kaikki huomioimatta",
+DlgSpellBtnReplace		: "Korvaa",
+DlgSpellBtnReplaceAll	: "Korvaa kaikki",
+DlgSpellBtnUndo			: "Kumoa",
+DlgSpellNoSuggestions	: "Ei ehdotuksia",
+DlgSpellProgress		: "Tarkistus käynnissä...",
+DlgSpellNoMispell		: "Tarkistus valmis: Ei virheitä",
+DlgSpellNoChanges		: "Tarkistus valmis: Yhtään sanaa ei muutettu",
+DlgSpellOneChange		: "Tarkistus valmis: Yksi sana muutettiin",
+DlgSpellManyChanges		: "Tarkistus valmis: %1 sanaa muutettiin",
+
+IeSpellDownload			: "Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?",
+
+// Button Dialog
+DlgButtonText		: "Teksti (arvo)",
+DlgButtonType		: "Tyyppi",
+DlgButtonTypeBtn	: "Painike",
+DlgButtonTypeSbm	: "Lähetä",
+DlgButtonTypeRst	: "Tyhjennä",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nimi",
+DlgCheckboxValue	: "Arvo",
+DlgCheckboxSelected	: "Valittu",
+
+// Form Dialog
+DlgFormName		: "Nimi",
+DlgFormAction	: "Toiminto",
+DlgFormMethod	: "Tapa",
+
+// Select Field Dialog
+DlgSelectName		: "Nimi",
+DlgSelectValue		: "Arvo",
+DlgSelectSize		: "Koko",
+DlgSelectLines		: "Rivit",
+DlgSelectChkMulti	: "Salli usea valinta",
+DlgSelectOpAvail	: "Ominaisuudet",
+DlgSelectOpText		: "Teksti",
+DlgSelectOpValue	: "Arvo",
+DlgSelectBtnAdd		: "Lisää",
+DlgSelectBtnModify	: "Muuta",
+DlgSelectBtnUp		: "Ylös",
+DlgSelectBtnDown	: "Alas",
+DlgSelectBtnSetValue : "Aseta valituksi",
+DlgSelectBtnDelete	: "Poista",
+
+// Textarea Dialog
+DlgTextareaName	: "Nimi",
+DlgTextareaCols	: "Sarakkeita",
+DlgTextareaRows	: "Rivejä",
+
+// Text Field Dialog
+DlgTextName			: "Nimi",
+DlgTextValue		: "Arvo",
+DlgTextCharWidth	: "Leveys",
+DlgTextMaxChars		: "Maksimi merkkimäärä",
+DlgTextType			: "Tyyppi",
+DlgTextTypeText		: "Teksti",
+DlgTextTypePass		: "Salasana",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nimi",
+DlgHiddenValue	: "Arvo",
+
+// Bulleted List Dialog
+BulletedListProp	: "Luettelon ominaisuudet",
+NumberedListProp	: "Numeroinnin ominaisuudet",
+DlgLstStart			: "Alku",
+DlgLstType			: "Tyyppi",
+DlgLstTypeCircle	: "Kehä",
+DlgLstTypeDisc		: "Ympyrä",
+DlgLstTypeSquare	: "Neliö",
+DlgLstTypeNumbers	: "Numerot (1, 2, 3)",
+DlgLstTypeLCase		: "Pienet kirjaimet (a, b, c)",
+DlgLstTypeUCase		: "Isot kirjaimet (A, B, C)",
+DlgLstTypeSRoman	: "Pienet roomalaiset numerot (i, ii, iii)",
+DlgLstTypeLRoman	: "Isot roomalaiset numerot (Ii, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Yleiset",
+DlgDocBackTab		: "Tausta",
+DlgDocColorsTab		: "Värit ja marginaalit",
+DlgDocMetaTab		: "Meta-tieto",
+
+DlgDocPageTitle		: "Sivun nimi",
+DlgDocLangDir		: "Kielen suunta",
+DlgDocLangDirLTR	: "Vasemmalta oikealle (LTR)",
+DlgDocLangDirRTL	: "Oikealta vasemmalle (RTL)",
+DlgDocLangCode		: "Kielikoodi",
+DlgDocCharSet		: "Merkistökoodaus",
+DlgDocCharSetCE		: "Keskieurooppalainen",
+DlgDocCharSetCT		: "Kiina, perinteinen (Big5)",
+DlgDocCharSetCR		: "Kyrillinen",
+DlgDocCharSetGR		: "Kreikka",
+DlgDocCharSetJP		: "Japani",
+DlgDocCharSetKR		: "Korealainen",
+DlgDocCharSetTR		: "Turkkilainen",
+DlgDocCharSetUN		: "Unicode (UTF-8)",
+DlgDocCharSetWE		: "Länsieurooppalainen",
+DlgDocCharSetOther	: "Muu merkistökoodaus",
+
+DlgDocDocType		: "Dokumentin tyyppi",
+DlgDocDocTypeOther	: "Muu dokumentin tyyppi",
+DlgDocIncXHTML		: "Lisää XHTML julistukset",
+DlgDocBgColor		: "Taustaväri",
+DlgDocBgImage		: "Taustakuva",
+DlgDocBgNoScroll	: "Paikallaanpysyvä tausta",
+DlgDocCText			: "Teksti",
+DlgDocCLink			: "Linkki",
+DlgDocCVisited		: "Vierailtu linkki",
+DlgDocCActive		: "Aktiivinen linkki",
+DlgDocMargins		: "Sivun marginaalit",
+DlgDocMaTop			: "Ylä",
+DlgDocMaLeft		: "Vasen",
+DlgDocMaRight		: "Oikea",
+DlgDocMaBottom		: "Ala",
+DlgDocMeIndex		: "Hakusanat (pilkulla erotettuna)",
+DlgDocMeDescr		: "Kuvaus",
+DlgDocMeAuthor		: "Tekijä",
+DlgDocMeCopy		: "Tekijänoikeudet",
+DlgDocPreview		: "Esikatselu",
+
+// Templates Dialog
+Templates			: "Pohjat",
+DlgTemplatesTitle	: "Sisältöpohjat",
+DlgTemplatesSelMsg	: "Valitse pohja editoriin<br>(aiempi sisältö menetetään):",
+DlgTemplatesLoading	: "Ladataan listaa pohjista. Hetkinen...",
+DlgTemplatesNoTpl	: "(Ei määriteltyjä pohjia)",
+DlgTemplatesReplace	: "Korvaa editorin koko sisältö",
+
+// About Dialog
+DlgAboutAboutTab	: "Editorista",
+DlgAboutBrowserInfoTab	: "Selaimen tiedot",
+DlgAboutLicenseTab	: "Lisenssi",
+DlgAboutVersion		: "versio",
+DlgAboutInfo		: "Lisää tietoa osoitteesta",
+
+// Div Dialog
+DlgDivGeneralTab	: "Edistynyt",
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Tyyli",
+DlgDivInlineStyle	: "Rivin sisäinen tyyli",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hi.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hi.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/hi.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Hindi language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "टूलबार सिमटायें",
+ToolbarExpand		: "टूलबार का विस्तार करें",
+
+// Toolbar Items and Context Menu
+Save				: "सेव",
+NewPage				: "नया पेज",
+Preview				: "प्रीव्यू",
+Cut					: "कट",
+Copy				: "कॉपी",
+Paste				: "पेस्ट",
+PasteText			: "पेस्ट (सादा टॅक्स्ट)",
+PasteWord			: "पेस्ट (वर्ड से)",
+Print				: "प्रिन्ट",
+SelectAll			: "सब सॅलॅक्ट करें",
+RemoveFormat		: "फ़ॉर्मैट हटायें",
+InsertLinkLbl		: "लिंक",
+InsertLink			: "लिंक इन्सर्ट/संपादन",
+RemoveLink			: "लिंक हटायें",
+VisitLink			: "लिंक खोलें",
+Anchor				: "ऐंकर इन्सर्ट/संपादन",
+AnchorDelete		: "ऐंकर हटायें",
+InsertImageLbl		: "तस्वीर",
+InsertImage			: "तस्वीर इन्सर्ट/संपादन",
+InsertFlashLbl		: "फ़्लैश",
+InsertFlash			: "फ़्लैश इन्सर्ट/संपादन",
+InsertTableLbl		: "टेबल",
+InsertTable			: "टेबल इन्सर्ट/संपादन",
+InsertLineLbl		: "रेखा",
+InsertLine			: "हॉरिज़ॉन्टल रेखा इन्सर्ट करें",
+InsertSpecialCharLbl: "विशेष करॅक्टर",
+InsertSpecialChar	: "विशेष करॅक्टर इन्सर्ट करें",
+InsertSmileyLbl		: "स्माइली",
+InsertSmiley		: "स्माइली इन्सर्ट करें",
+About				: "FCKeditor के बारे में",
+Bold				: "बोल्ड",
+Italic				: "इटैलिक",
+Underline			: "रेखांकण",
+StrikeThrough		: "स्ट्राइक थ्रू",
+Subscript			: "अधोलेख",
+Superscript			: "अभिलेख",
+LeftJustify			: "बायीं तरफ",
+CenterJustify		: "बीच में",
+RightJustify		: "दायीं तरफ",
+BlockJustify		: "ब्लॉक जस्टीफ़ाई",
+DecreaseIndent		: "इन्डॅन्ट कम करें",
+IncreaseIndent		: "इन्डॅन्ट बढ़ायें",
+Blockquote			: "ब्लॉक-कोट",
+CreateDiv			: "डिव (Div) कन्टेनर बनायें",
+EditDiv				: "डिव (Div) कन्टेनर बदलें",
+DeleteDiv			: "डिव कन्टेनर हटायें",
+Undo				: "अन्डू",
+Redo				: "रीडू",
+NumberedListLbl		: "अंकीय सूची",
+NumberedList		: "अंकीय सूची इन्सर्ट/संपादन",
+BulletedListLbl		: "बुलॅट सूची",
+BulletedList		: "बुलॅट सूची इन्सर्ट/संपादन",
+ShowTableBorders	: "टेबल बॉर्डरयें दिखायें",
+ShowDetails			: "ज्यादा   दिखायें",
+Style				: "स्टाइल",
+FontFormat			: "फ़ॉर्मैट",
+Font				: "फ़ॉन्ट",
+FontSize			: "साइज़",
+TextColor			: "टेक्स्ट रंग",
+BGColor				: "बैक्ग्राउन्ड रंग",
+Source				: "सोर्स",
+Find				: "खोजें",
+Replace				: "रीप्लेस",
+SpellCheck			: "वर्तनी (स्पेलिंग) जाँच",
+UniversalKeyboard	: "यूनीवर्सल कीबोर्ड",
+PageBreakLbl		: "पेज ब्रेक",
+PageBreak			: "पेज ब्रेक इन्सर्ट् करें",
+
+Form			: "फ़ॉर्म",
+Checkbox		: "चॅक बॉक्स",
+RadioButton		: "रेडिओ बटन",
+TextField		: "टेक्स्ट फ़ील्ड",
+Textarea		: "टेक्स्ट एरिया",
+HiddenField		: "गुप्त फ़ील्ड",
+Button			: "बटन",
+SelectionField	: "चुनाव फ़ील्ड",
+ImageButton		: "तस्वीर बटन",
+
+FitWindow		: "एडिटर साइज़ को चरम सीमा तक बढ़ायें",
+ShowBlocks		: "ब्लॉक दिखायें",
+
+// Context Menu
+EditLink			: "लिंक संपादन",
+CellCM				: "खाना",
+RowCM				: "पंक्ति",
+ColumnCM			: "कालम",
+InsertRowAfter		: "बाद में पंक्ति डालें",
+InsertRowBefore		: "पहले पंक्ति डालें",
+DeleteRows			: "पंक्तियाँ डिलीट करें",
+InsertColumnAfter	: "बाद में कालम डालें",
+InsertColumnBefore	: "पहले कालम डालें",
+DeleteColumns		: "कालम डिलीट करें",
+InsertCellAfter		: "बाद में सैल डालें",
+InsertCellBefore	: "पहले सैल डालें",
+DeleteCells			: "सैल डिलीट करें",
+MergeCells			: "सैल मिलायें",
+MergeRight			: "बाँया विलय",
+MergeDown			: "नीचे विलय करें",
+HorizontalSplitCell	: "सैल को क्षैतिज स्थिति में विभाजित करें",
+VerticalSplitCell	: "सैल को लम्बाकार में विभाजित करें",
+TableDelete			: "टेबल डिलीट करें",
+CellProperties		: "सैल प्रॉपर्टीज़",
+TableProperties		: "टेबल प्रॉपर्टीज़",
+ImageProperties		: "तस्वीर प्रॉपर्टीज़",
+FlashProperties		: "फ़्लैश प्रॉपर्टीज़",
+
+AnchorProp			: "ऐंकर प्रॉपर्टीज़",
+ButtonProp			: "बटन प्रॉपर्टीज़",
+CheckboxProp		: "चॅक बॉक्स प्रॉपर्टीज़",
+HiddenFieldProp		: "गुप्त फ़ील्ड प्रॉपर्टीज़",
+RadioButtonProp		: "रेडिओ बटन प्रॉपर्टीज़",
+ImageButtonProp		: "तस्वीर बटन प्रॉपर्टीज़",
+TextFieldProp		: "टेक्स्ट फ़ील्ड प्रॉपर्टीज़",
+SelectionFieldProp	: "चुनाव फ़ील्ड प्रॉपर्टीज़",
+TextareaProp		: "टेक्स्त एरिया प्रॉपर्टीज़",
+FormProp			: "फ़ॉर्म प्रॉपर्टीज़",
+
+FontFormats			: "साधारण;फ़ॉर्मैटॅड;पता;शीर्षक 1;शीर्षक 2;शीर्षक 3;शीर्षक 4;शीर्षक 5;शीर्षक 6;शीर्षक (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML प्रोसॅस हो रहा है। ज़रा ठहरें...",
+Done				: "पूरा हुआ",
+PasteWordConfirm	: "आप जो टेक्स्ट पेस्ट करना चाहते हैं, वह वर्ड से कॉपी किया हुआ लग रहा है। क्या पेस्ट करने से पहले आप इसे साफ़ करना चाहेंगे?",
+NotCompatiblePaste	: "यह कमांड इन्टरनॅट एक्स्प्लोरर(Internet Explorer) 5.5 या उसके बाद के वर्ज़न के लिए ही उपलब्ध है। क्या आप बिना साफ़ किए पेस्ट करना चाहेंगे?",
+UnknownToolbarItem	: "अनजान टूलबार आइटम \"%1\"",
+UnknownCommand		: "अनजान कमान्ड \"%1\"",
+NotImplemented		: "कमान्ड इम्प्लीमॅन्ट नहीं किया गया है",
+UnknownToolbarSet	: "टूलबार सॅट \"%1\" उपलब्ध नहीं है",
+NoActiveX			: "आपके ब्राउज़र् की सुरक्शा सेटिंग्स् एडिटर की कुछ् फ़ीचरों को सीमित कर् सकती हैं। क्रिपया \"Run ActiveX controls and plug-ins\" विकल्प को एनेबल करें. आपको एरर्स् और गायब फ़ीचर्स् का अनुभव हो सकता है।",
+BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
+DialogBlocked		: "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
+VisitLinkBlocked	: "नया विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।",
+
+// Dialogs
+DlgBtnOK			: "ठीक है",
+DlgBtnCancel		: "रद्द करें",
+DlgBtnClose			: "बन्द करें",
+DlgBtnBrowseServer	: "सर्वर ब्राउज़ करें",
+DlgAdvancedTag		: "ऍड्वान्स्ड",
+DlgOpOther			: "<अन्य>",
+DlgInfoTab			: "सूचना",
+DlgAlertUrl			: "URL इन्सर्ट करें",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<सॅट नहीं>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "भाषा लिखने की दिशा",
+DlgGenLangDirLtr	: "बायें से दायें (LTR)",
+DlgGenLangDirRtl	: "दायें से बायें (RTL)",
+DlgGenLangCode		: "भाषा कोड",
+DlgGenAccessKey		: "ऍक्सॅस की",
+DlgGenName			: "नाम",
+DlgGenTabIndex		: "टैब इन्डॅक्स",
+DlgGenLongDescr		: "अधिक विवरण के लिए URL",
+DlgGenClass			: "स्टाइल-शीट क्लास",
+DlgGenTitle			: "परामर्श शीर्शक",
+DlgGenContType		: "परामर्श कन्टॅन्ट प्रकार",
+DlgGenLinkCharset	: "लिंक रिसोर्स करॅक्टर सॅट",
+DlgGenStyle			: "स्टाइल",
+
+// Image Dialog
+DlgImgTitle			: "तस्वीर प्रॉपर्टीज़",
+DlgImgInfoTab		: "तस्वीर की जानकारी",
+DlgImgBtnUpload		: "इसे सर्वर को भेजें",
+DlgImgURL			: "URL",
+DlgImgUpload		: "अपलोड",
+DlgImgAlt			: "वैकल्पिक टेक्स्ट",
+DlgImgWidth			: "चौड़ाई",
+DlgImgHeight		: "ऊँचाई",
+DlgImgLockRatio		: "लॉक अनुपात",
+DlgBtnResetSize		: "रीसॅट साइज़",
+DlgImgBorder		: "बॉर्डर",
+DlgImgHSpace		: "हॉरिज़ॉन्टल स्पेस",
+DlgImgVSpace		: "वर्टिकल स्पेस",
+DlgImgAlign			: "ऍलाइन",
+DlgImgAlignLeft		: "दायें",
+DlgImgAlignAbsBottom: "Abs नीचे",
+DlgImgAlignAbsMiddle: "Abs ऊपर",
+DlgImgAlignBaseline	: "मूल रेखा",
+DlgImgAlignBottom	: "नीचे",
+DlgImgAlignMiddle	: "मध्य",
+DlgImgAlignRight	: "दायें",
+DlgImgAlignTextTop	: "टेक्स्ट ऊपर",
+DlgImgAlignTop		: "ऊपर",
+DlgImgPreview		: "प्रीव्यू",
+DlgImgAlertUrl		: "तस्वीर का URL टाइप करें ",
+DlgImgLinkTab		: "लिंक",
+
+// Flash Dialog
+DlgFlashTitle		: "फ़्लैश प्रॉपर्टीज़",
+DlgFlashChkPlay		: "ऑटो प्ले",
+DlgFlashChkLoop		: "लूप",
+DlgFlashChkMenu		: "फ़्लैश मॅन्यू का प्रयोग करें",
+DlgFlashScale		: "स्केल",
+DlgFlashScaleAll	: "सभी दिखायें",
+DlgFlashScaleNoBorder	: "कोई बॉर्डर नहीं",
+DlgFlashScaleFit	: "बिल्कुल फ़िट",
+
+// Link Dialog
+DlgLnkWindowTitle	: "लिंक",
+DlgLnkInfoTab		: "लिंक  ",
+DlgLnkTargetTab		: "टार्गेट",
+
+DlgLnkType			: "लिंक प्रकार",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "इस पेज का ऐंकर",
+DlgLnkTypeEMail		: "ई-मेल",
+DlgLnkProto			: "प्रोटोकॉल",
+DlgLnkProtoOther	: "<अन्य>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ऐंकर चुनें",
+DlgLnkAnchorByName	: "ऐंकर नाम से",
+DlgLnkAnchorById	: "ऍलीमॅन्ट Id से",
+DlgLnkNoAnchors		: "(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)",
+DlgLnkEMail			: "ई-मेल पता",
+DlgLnkEMailSubject	: "संदेश विषय",
+DlgLnkEMailBody		: "संदेश",
+DlgLnkUpload		: "अपलोड",
+DlgLnkBtnUpload		: "इसे सर्वर को भेजें",
+
+DlgLnkTarget		: "टार्गेट",
+DlgLnkTargetFrame	: "<फ़्रेम>",
+DlgLnkTargetPopup	: "<पॉप-अप विन्डो>",
+DlgLnkTargetBlank	: "नया विन्डो (_blank)",
+DlgLnkTargetParent	: "मूल विन्डो (_parent)",
+DlgLnkTargetSelf	: "इसी विन्डो (_self)",
+DlgLnkTargetTop		: "शीर्ष विन्डो (_top)",
+DlgLnkTargetFrameName	: "टार्गेट फ़्रेम का नाम",
+DlgLnkPopWinName	: "पॉप-अप विन्डो का नाम",
+DlgLnkPopWinFeat	: "पॉप-अप विन्डो फ़ीचर्स",
+DlgLnkPopResize		: "साइज़ बदला जा सकता है",
+DlgLnkPopLocation	: "लोकेशन बार",
+DlgLnkPopMenu		: "मॅन्यू बार",
+DlgLnkPopScroll		: "स्क्रॉल बार",
+DlgLnkPopStatus		: "स्टेटस बार",
+DlgLnkPopToolbar	: "टूल बार",
+DlgLnkPopFullScrn	: "फ़ुल स्क्रीन (IE)",
+DlgLnkPopDependent	: "डिपेन्डॅन्ट (Netscape)",
+DlgLnkPopWidth		: "चौड़ाई",
+DlgLnkPopHeight		: "ऊँचाई",
+DlgLnkPopLeft		: "बायीं तरफ",
+DlgLnkPopTop		: "दायीं तरफ",
+
+DlnLnkMsgNoUrl		: "लिंक URL टाइप करें",
+DlnLnkMsgNoEMail	: "ई-मेल पता टाइप करें",
+DlnLnkMsgNoAnchor	: "ऐंकर चुनें",
+DlnLnkMsgInvPopName	: "पॉप-अप का नाम अल्फाबेट से शुरू होना चाहिये और उसमें स्पेस नहीं होने चाहिए",
+
+// Color Dialog
+DlgColorTitle		: "रंग चुनें",
+DlgColorBtnClear	: "साफ़ करें",
+DlgColorHighlight	: "हाइलाइट",
+DlgColorSelected	: "सॅलॅक्टॅड",
+
+// Smiley Dialog
+DlgSmileyTitle		: "स्माइली इन्सर्ट करें",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "विशेष करॅक्टर चुनें",
+
+// Table Dialog
+DlgTableTitle		: "टेबल प्रॉपर्टीज़",
+DlgTableRows		: "पंक्तियाँ",
+DlgTableColumns		: "कालम",
+DlgTableBorder		: "बॉर्डर साइज़",
+DlgTableAlign		: "ऍलाइन्मॅन्ट",
+DlgTableAlignNotSet	: "<सॅट नहीं>",
+DlgTableAlignLeft	: "दायें",
+DlgTableAlignCenter	: "बीच में",
+DlgTableAlignRight	: "बायें",
+DlgTableWidth		: "चौड़ाई",
+DlgTableWidthPx		: "पिक्सैल",
+DlgTableWidthPc		: "प्रतिशत",
+DlgTableHeight		: "ऊँचाई",
+DlgTableCellSpace	: "सैल अंतर",
+DlgTableCellPad		: "सैल पैडिंग",
+DlgTableCaption		: "शीर्षक",
+DlgTableSummary		: "सारांश",
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "सैल प्रॉपर्टीज़",
+DlgCellWidth		: "चौड़ाई",
+DlgCellWidthPx		: "पिक्सैल",
+DlgCellWidthPc		: "प्रतिशत",
+DlgCellHeight		: "ऊँचाई",
+DlgCellWordWrap		: "वर्ड रैप",
+DlgCellWordWrapNotSet	: "<सॅट नहीं>",
+DlgCellWordWrapYes	: "हाँ",
+DlgCellWordWrapNo	: "नहीं",
+DlgCellHorAlign		: "हॉरिज़ॉन्टल ऍलाइन्मॅन्ट",
+DlgCellHorAlignNotSet	: "<सॅट नहीं>",
+DlgCellHorAlignLeft	: "दायें",
+DlgCellHorAlignCenter	: "बीच में",
+DlgCellHorAlignRight: "बायें",
+DlgCellVerAlign		: "वर्टिकल ऍलाइन्मॅन्ट",
+DlgCellVerAlignNotSet	: "<सॅट नहीं>",
+DlgCellVerAlignTop	: "ऊपर",
+DlgCellVerAlignMiddle	: "मध्य",
+DlgCellVerAlignBottom	: "नीचे",
+DlgCellVerAlignBaseline	: "मूलरेखा",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "पंक्ति स्पैन",
+DlgCellCollSpan		: "कालम स्पैन",
+DlgCellBackColor	: "बैक्ग्राउन्ड रंग",
+DlgCellBorderColor	: "बॉर्डर का रंग",
+DlgCellBtnSelect	: "चुनें...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "खोजें और बदलें",
+
+// Find Dialog
+DlgFindTitle		: "खोजें",
+DlgFindFindBtn		: "खोजें",
+DlgFindNotFoundMsg	: "आपके द्वारा दिया गया टेक्स्ट नहीं मिला",
+
+// Replace Dialog
+DlgReplaceTitle			: "रिप्लेस",
+DlgReplaceFindLbl		: "यह खोजें:",
+DlgReplaceReplaceLbl	: "इससे रिप्लेस करें:",
+DlgReplaceCaseChk		: "केस मिलायें",
+DlgReplaceReplaceBtn	: "रिप्लेस",
+DlgReplaceReplAllBtn	: "सभी रिप्लेस करें",
+DlgReplaceWordChk		: "पूरा शब्द मिलायें",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।",
+PasteErrorCopy	: "आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।",
+
+PasteAsText		: "पेस्ट (सादा टॅक्स्ट)",
+PasteFromWord	: "पेस्ट (वर्ड से)",
+
+DlgPasteMsg2	: "Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.",
+DlgPasteSec		: "आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.",
+DlgPasteIgnoreFont		: "फ़ॉन्ट परिभाषा निकालें",
+DlgPasteRemoveStyles	: "स्टाइल परिभाषा निकालें",
+
+// Color Picker
+ColorAutomatic	: "स्वचालित",
+ColorMoreColors	: "और रंग...",
+
+// Document Properties
+DocProps		: "डॉक्यूमॅन्ट प्रॉपर्टीज़",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ऐंकर प्रॉपर्टीज़",
+DlgAnchorName		: "ऐंकर का नाम",
+DlgAnchorErrorName	: "ऐंकर का नाम टाइप करें",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "शब्दकोश में नहीं",
+DlgSpellChangeTo		: "इसमें बदलें",
+DlgSpellBtnIgnore		: "इग्नोर",
+DlgSpellBtnIgnoreAll	: "सभी इग्नोर करें",
+DlgSpellBtnReplace		: "रिप्लेस",
+DlgSpellBtnReplaceAll	: "सभी रिप्लेस करें",
+DlgSpellBtnUndo			: "अन्डू",
+DlgSpellNoSuggestions	: "- कोई सुझाव नहीं -",
+DlgSpellProgress		: "वर्तनी की जाँच (स्पॅल-चॅक) जारी है...",
+DlgSpellNoMispell		: "वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई",
+DlgSpellNoChanges		: "वर्तनी की जाँच :कोई शब्द नहीं बदला गया",
+DlgSpellOneChange		: "वर्तनी की जाँच : एक शब्द बदला गया",
+DlgSpellManyChanges		: "वर्तनी की जाँच : %1 शब्द बदले गये",
+
+IeSpellDownload			: "स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डा‌उनलोड करना चाहेंगे?",
+
+// Button Dialog
+DlgButtonText		: "टेक्स्ट (वैल्यू)",
+DlgButtonType		: "प्रकार",
+DlgButtonTypeBtn	: "बटन",
+DlgButtonTypeSbm	: "सब्मिट",
+DlgButtonTypeRst	: "रिसेट",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "नाम",
+DlgCheckboxValue	: "वैल्यू",
+DlgCheckboxSelected	: "सॅलॅक्टॅड",
+
+// Form Dialog
+DlgFormName		: "नाम",
+DlgFormAction	: "क्रिया",
+DlgFormMethod	: "तरीका",
+
+// Select Field Dialog
+DlgSelectName		: "नाम",
+DlgSelectValue		: "वैल्यू",
+DlgSelectSize		: "साइज़",
+DlgSelectLines		: "पंक्तियाँ",
+DlgSelectChkMulti	: "एक से ज्यादा विकल्प चुनने दें",
+DlgSelectOpAvail	: "उपलब्ध विकल्प",
+DlgSelectOpText		: "टेक्स्ट",
+DlgSelectOpValue	: "वैल्यू",
+DlgSelectBtnAdd		: "जोड़ें",
+DlgSelectBtnModify	: "बदलें",
+DlgSelectBtnUp		: "ऊपर",
+DlgSelectBtnDown	: "नीचे",
+DlgSelectBtnSetValue : "चुनी गई वैल्यू सॅट करें",
+DlgSelectBtnDelete	: "डिलीट",
+
+// Textarea Dialog
+DlgTextareaName	: "नाम",
+DlgTextareaCols	: "कालम",
+DlgTextareaRows	: "पंक्तियां",
+
+// Text Field Dialog
+DlgTextName			: "नाम",
+DlgTextValue		: "वैल्यू",
+DlgTextCharWidth	: "करॅक्टर की चौढ़ाई",
+DlgTextMaxChars		: "अधिकतम करॅक्टर",
+DlgTextType			: "टाइप",
+DlgTextTypeText		: "टेक्स्ट",
+DlgTextTypePass		: "पास्वर्ड",
+
+// Hidden Field Dialog
+DlgHiddenName	: "नाम",
+DlgHiddenValue	: "वैल्यू",
+
+// Bulleted List Dialog
+BulletedListProp	: "बुलॅट सूची प्रॉपर्टीज़",
+NumberedListProp	: "अंकीय सूची प्रॉपर्टीज़",
+DlgLstStart			: "प्रारम्भ",
+DlgLstType			: "प्रकार",
+DlgLstTypeCircle	: "गोल",
+DlgLstTypeDisc		: "डिस्क",
+DlgLstTypeSquare	: "चौकॊण",
+DlgLstTypeNumbers	: "अंक (1, 2, 3)",
+DlgLstTypeLCase		: "छोटे अक्षर (a, b, c)",
+DlgLstTypeUCase		: "बड़े अक्षर (A, B, C)",
+DlgLstTypeSRoman	: "छोटे रोमन अंक (i, ii, iii)",
+DlgLstTypeLRoman	: "बड़े रोमन अंक (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "आम",
+DlgDocBackTab		: "बैक्ग्राउन्ड",
+DlgDocColorsTab		: "रंग और मार्जिन",
+DlgDocMetaTab		: "मॅटाडेटा",
+
+DlgDocPageTitle		: "पेज शीर्षक",
+DlgDocLangDir		: "भाषा लिखने की दिशा",
+DlgDocLangDirLTR	: "बायें से दायें (LTR)",
+DlgDocLangDirRTL	: "दायें से बायें (RTL)",
+DlgDocLangCode		: "भाषा कोड",
+DlgDocCharSet		: "करेक्टर सॅट ऍन्कोडिंग",
+DlgDocCharSetCE		: "मध्य यूरोपीय (Central European)",
+DlgDocCharSetCT		: "चीनी (Chinese Traditional Big5)",
+DlgDocCharSetCR		: "सिरीलिक (Cyrillic)",
+DlgDocCharSetGR		: "यवन (Greek)",
+DlgDocCharSetJP		: "जापानी (Japanese)",
+DlgDocCharSetKR		: "कोरीयन (Korean)",
+DlgDocCharSetTR		: "तुर्की (Turkish)",
+DlgDocCharSetUN		: "यूनीकोड (UTF-8)",
+DlgDocCharSetWE		: "पश्चिम यूरोपीय (Western European)",
+DlgDocCharSetOther	: "अन्य करेक्टर सॅट ऍन्कोडिंग",
+
+DlgDocDocType		: "डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocDocTypeOther	: "अन्य डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocIncXHTML		: "XHTML सूचना सम्मिलित करें",
+DlgDocBgColor		: "बैक्ग्राउन्ड रंग",
+DlgDocBgImage		: "बैक्ग्राउन्ड तस्वीर URL",
+DlgDocBgNoScroll	: "स्क्रॉल न करने वाला बैक्ग्राउन्ड",
+DlgDocCText			: "टेक्स्ट",
+DlgDocCLink			: "लिंक",
+DlgDocCVisited		: "विज़िट किया गया लिंक",
+DlgDocCActive		: "सक्रिय लिंक",
+DlgDocMargins		: "पेज मार्जिन",
+DlgDocMaTop			: "ऊपर",
+DlgDocMaLeft		: "बायें",
+DlgDocMaRight		: "दायें",
+DlgDocMaBottom		: "नीचे",
+DlgDocMeIndex		: "डॉक्युमॅन्ट इन्डेक्स संकेतशब्द (अल्पविराम से अलग करें)",
+DlgDocMeDescr		: "डॉक्यूमॅन्ट करॅक्टरन",
+DlgDocMeAuthor		: "लेखक",
+DlgDocMeCopy		: "कॉपीराइट",
+DlgDocPreview		: "प्रीव्यू",
+
+// Templates Dialog
+Templates			: "टॅम्प्लेट",
+DlgTemplatesTitle	: "कन्टेन्ट टॅम्प्लेट",
+DlgTemplatesSelMsg	: "ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):",
+DlgTemplatesLoading	: "टॅम्प्लेट सूची लोड की जा रही है। ज़रा ठहरें...",
+DlgTemplatesNoTpl	: "(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)",
+DlgTemplatesReplace	: "मूल शब्दों को बदलें",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor के बारे में",
+DlgAboutBrowserInfoTab	: "ब्राउज़र के बारे में",
+DlgAboutLicenseTab	: "लाइसैन्स",
+DlgAboutVersion		: "वर्ज़न",
+DlgAboutInfo		: "अधिक जानकारी के लिये यहाँ जायें:",
+
+// Div Dialog
+DlgDivGeneralTab	: "सामान्य",
+DlgDivAdvancedTab	: "एड्वान्स्ड",
+DlgDivStyle		: "स्टाइल",
+DlgDivInlineStyle	: "इनलाइन स्टाइल",
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eo.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eo.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/eo.js	(revision 1610)
@@ -0,0 +1,539 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Esperanto language file.
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Kaŝi Ilobreton",
+ToolbarExpand		: "Vidigi Ilojn",
+
+// Toolbar Items and Context Menu
+Save				: "Sekurigi",
+NewPage				: "Nova Paĝo",
+Preview				: "Vidigi Aspekton",
+Cut					: "Eltondi",
+Copy				: "Kopii",
+Paste				: "Interglui",
+PasteText			: "Interglui kiel Tekston",
+PasteWord			: "Interglui el Word",
+Print				: "Presi",
+SelectAll			: "Elekti ĉion",
+RemoveFormat		: "Forigi Formaton",
+InsertLinkLbl		: "Ligilo",
+InsertLink			: "Enmeti/Ŝanĝi Ligilon",
+RemoveLink			: "Forigi Ligilon",
+VisitLink			: "Open Link",	//MISSING
+Anchor				: "Enmeti/Ŝanĝi Ankron",
+AnchorDelete		: "Remove Anchor",	//MISSING
+InsertImageLbl		: "Bildo",
+InsertImage			: "Enmeti/Ŝanĝi Bildon",
+InsertFlashLbl		: "Flash",	//MISSING
+InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertTableLbl		: "Tabelo",
+InsertTable			: "Enmeti/Ŝanĝi Tabelon",
+InsertLineLbl		: "Horizonta Linio",
+InsertLine			: "Enmeti Horizonta Linio",
+InsertSpecialCharLbl: "Speciala Signo",
+InsertSpecialChar	: "Enmeti Specialan Signon",
+InsertSmileyLbl		: "Mienvinjeto",
+InsertSmiley		: "Enmeti Mienvinjeton",
+About				: "Pri FCKeditor",
+Bold				: "Grasa",
+Italic				: "Kursiva",
+Underline			: "Substreko",
+StrikeThrough		: "Trastreko",
+Subscript			: "Subskribo",
+Superscript			: "Superskribo",
+LeftJustify			: "Maldekstrigi",
+CenterJustify		: "Centrigi",
+RightJustify		: "Dekstrigi",
+BlockJustify		: "Ĝisrandigi Ambaŭflanke",
+DecreaseIndent		: "Malpligrandigi Krommarĝenon",
+IncreaseIndent		: "Pligrandigi Krommarĝenon",
+Blockquote			: "Blockquote",	//MISSING
+CreateDiv			: "Create Div Container",	//MISSING
+EditDiv				: "Edit Div Container",	//MISSING
+DeleteDiv			: "Remove Div Container",	//MISSING
+Undo				: "Malfari",
+Redo				: "Refari",
+NumberedListLbl		: "Numera Listo",
+NumberedList		: "Enmeti/Forigi Numeran Liston",
+BulletedListLbl		: "Bula Listo",
+BulletedList		: "Enmeti/Forigi Bulan Liston",
+ShowTableBorders	: "Vidigi Borderojn de Tabelo",
+ShowDetails			: "Vidigi Detalojn",
+Style				: "Stilo",
+FontFormat			: "Formato",
+Font				: "Tiparo",
+FontSize			: "Grando",
+TextColor			: "Teksta Koloro",
+BGColor				: "Fona Koloro",
+Source				: "Fonto",
+Find				: "Serĉi",
+Replace				: "Anstataŭigi",
+SpellCheck			: "Literumada Kontrolilo",
+UniversalKeyboard	: "Universala Klavaro",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
+
+Form			: "Formularo",
+Checkbox		: "Markobutono",
+RadioButton		: "Radiobutono",
+TextField		: "Teksta kampo",
+Textarea		: "Teksta Areo",
+HiddenField		: "Kaŝita Kampo",
+Button			: "Butono",
+SelectionField	: "Elekta Kampo",
+ImageButton		: "Bildbutono",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+ShowBlocks		: "Show Blocks",	//MISSING
+
+// Context Menu
+EditLink			: "Modifier Ligilon",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRowAfter		: "Insert Row After",	//MISSING
+InsertRowBefore		: "Insert Row Before",	//MISSING
+DeleteRows			: "Forigi Liniojn",
+InsertColumnAfter	: "Insert Column After",	//MISSING
+InsertColumnBefore	: "Insert Column Before",	//MISSING
+DeleteColumns		: "Forigi Kolumnojn",
+InsertCellAfter		: "Insert Cell After",	//MISSING
+InsertCellBefore	: "Insert Cell Before",	//MISSING
+DeleteCells			: "Forigi Ĉelojn",
+MergeCells			: "Kunfandi Ĉelojn",
+MergeRight			: "Merge Right",	//MISSING
+MergeDown			: "Merge Down",	//MISSING
+HorizontalSplitCell	: "Split Cell Horizontally",	//MISSING
+VerticalSplitCell	: "Split Cell Vertically",	//MISSING
+TableDelete			: "Delete Table",	//MISSING
+CellProperties		: "Atributoj de Ĉelo",
+TableProperties		: "Atributoj de Tabelo",
+ImageProperties		: "Atributoj de Bildo",
+FlashProperties		: "Flash Properties",	//MISSING
+
+AnchorProp			: "Ankraj Atributoj",
+ButtonProp			: "Butonaj Atributoj",
+CheckboxProp		: "Markobutonaj Atributoj",
+HiddenFieldProp		: "Atributoj de Kaŝita Kampo",
+RadioButtonProp		: "Radiobutonaj Atributoj",
+ImageButtonProp		: "Bildbutonaj Atributoj",
+TextFieldProp		: "Atributoj de Teksta Kampo",
+SelectionFieldProp	: "Atributoj de Elekta Kampo",
+TextareaProp		: "Atributoj de Teksta Areo",
+FormProp			: "Formularaj Atributoj",
+
+FontFormats			: "Normala;Formatita;Adreso;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Traktado de XHTML. Bonvolu pacienci...",
+Done				: "Finita",
+PasteWordConfirm	: "La algluota teksto ŝajnas esti Word-devena. Ĉu vi volas purigi ĝin antaŭ ol interglui?",
+NotCompatiblePaste	: "Tiu ĉi komando bezonas almenaŭ Internet Explorer 5.5. Ĉu vi volas daŭrigi sen purigado?",
+UnknownToolbarItem	: "Ilobretero nekonata \"%1\"",
+UnknownCommand		: "Komandonomo nekonata \"%1\"",
+NotImplemented		: "Komando ne ankoraŭ realigita",
+UnknownToolbarSet	: "La ilobreto \"%1\" ne ekzistas",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
+VisitLinkBlocked	: "It was not possible to open a new window. Make sure all popup blockers are disabled.",	//MISSING
+
+// Dialogs
+DlgBtnOK			: "Akcepti",
+DlgBtnCancel		: "Rezigni",
+DlgBtnClose			: "Fermi",
+DlgBtnBrowseServer	: "Foliumi en la Servilo",
+DlgAdvancedTag		: "Speciala",
+DlgOpOther			: "<Alia>",
+DlgInfoTab			: "Info",	//MISSING
+DlgAlertUrl			: "Please insert the URL",	//MISSING
+
+// General Dialogs Labels
+DlgGenNotSet		: "<Defaŭlta>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Skribdirekto",
+DlgGenLangDirLtr	: "De maldekstro dekstren (LTR)",
+DlgGenLangDirRtl	: "De dekstro maldekstren (RTL)",
+DlgGenLangCode		: "Lingva Kodo",
+DlgGenAccessKey		: "Fulmoklavo",
+DlgGenName			: "Nomo",
+DlgGenTabIndex		: "Taba Ordo",
+DlgGenLongDescr		: "URL de Longa Priskribo",
+DlgGenClass			: "Klasoj de Stilfolioj",
+DlgGenTitle			: "Indika Titolo",
+DlgGenContType		: "Indika Enhavotipo",
+DlgGenLinkCharset	: "Signaro de la Ligita Rimedo",
+DlgGenStyle			: "Stilo",
+
+// Image Dialog
+DlgImgTitle			: "Atributoj de Bildo",
+DlgImgInfoTab		: "Informoj pri Bildo",
+DlgImgBtnUpload		: "Sendu al Servilo",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Alŝuti",
+DlgImgAlt			: "Anstataŭiga Teksto",
+DlgImgWidth			: "Larĝo",
+DlgImgHeight		: "Alto",
+DlgImgLockRatio		: "Konservi Proporcion",
+DlgBtnResetSize		: "Origina Grando",
+DlgImgBorder		: "Bordero",
+DlgImgHSpace		: "HSpaco",
+DlgImgVSpace		: "VSpaco",
+DlgImgAlign			: "Ĝisrandigo",
+DlgImgAlignLeft		: "Maldekstre",
+DlgImgAlignAbsBottom: "Abs Malsupre",
+DlgImgAlignAbsMiddle: "Abs Centre",
+DlgImgAlignBaseline	: "Je Malsupro de Teksto",
+DlgImgAlignBottom	: "Malsupre",
+DlgImgAlignMiddle	: "Centre",
+DlgImgAlignRight	: "Dekstre",
+DlgImgAlignTextTop	: "Je Supro de Teksto",
+DlgImgAlignTop		: "Supre",
+DlgImgPreview		: "Vidigi Aspekton",
+DlgImgAlertUrl		: "Bonvolu tajpi la URL de la bildo",
+DlgImgLinkTab		: "Link",	//MISSING
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",	//MISSING
+DlgFlashChkPlay		: "Auto Play",	//MISSING
+DlgFlashChkLoop		: "Loop",	//MISSING
+DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
+DlgFlashScale		: "Scale",	//MISSING
+DlgFlashScaleAll	: "Show all",	//MISSING
+DlgFlashScaleNoBorder	: "No Border",	//MISSING
+DlgFlashScaleFit	: "Exact Fit",	//MISSING
+
+// Link Dialog
+DlgLnkWindowTitle	: "Ligilo",
+DlgLnkInfoTab		: "Informoj pri la Ligilo",
+DlgLnkTargetTab		: "Celo",
+
+DlgLnkType			: "Tipo de Ligilo",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Ankri en tiu ĉi paĝo",
+DlgLnkTypeEMail		: "Retpoŝto",
+DlgLnkProto			: "Protokolo",
+DlgLnkProtoOther	: "<alia>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Elekti Ankron",
+DlgLnkAnchorByName	: "Per Ankronomo",
+DlgLnkAnchorById	: "Per Elementidentigilo",
+DlgLnkNoAnchors		: "<Ne disponeblas ankroj en la dokumento>",
+DlgLnkEMail			: "Retadreso",
+DlgLnkEMailSubject	: "Temlinio",
+DlgLnkEMailBody		: "Mesaĝa korpo",
+DlgLnkUpload		: "Alŝuti",
+DlgLnkBtnUpload		: "Sendi al Servilo",
+
+DlgLnkTarget		: "Celo",
+DlgLnkTargetFrame	: "<kadro>",
+DlgLnkTargetPopup	: "<ŝprucfenestro>",
+DlgLnkTargetBlank	: "Nova Fenestro (_blank)",
+DlgLnkTargetParent	: "Gepatra Fenestro (_parent)",
+DlgLnkTargetSelf	: "Sama Fenestro (_self)",
+DlgLnkTargetTop		: "Plej Supra Fenestro (_top)",
+DlgLnkTargetFrameName	: "Nomo de Kadro",
+DlgLnkPopWinName	: "Nomo de Ŝprucfenestro",
+DlgLnkPopWinFeat	: "Atributoj de la Ŝprucfenestro",
+DlgLnkPopResize		: "Grando Ŝanĝebla",
+DlgLnkPopLocation	: "Adresobreto",
+DlgLnkPopMenu		: "Menubreto",
+DlgLnkPopScroll		: "Rulumlisteloj",
+DlgLnkPopStatus		: "Statobreto",
+DlgLnkPopToolbar	: "Ilobreto",
+DlgLnkPopFullScrn	: "Tutekrane (IE)",
+DlgLnkPopDependent	: "Dependa (Netscape)",
+DlgLnkPopWidth		: "Larĝo",
+DlgLnkPopHeight		: "Alto",
+DlgLnkPopLeft		: "Pozicio de Maldekstro",
+DlgLnkPopTop		: "Pozicio de Supro",
+
+DlnLnkMsgNoUrl		: "Bonvolu entajpi la URL-on",
+DlnLnkMsgNoEMail	: "Bonvolu entajpi la retadreson",
+DlnLnkMsgNoAnchor	: "Bonvolu elekti ankron",
+DlnLnkMsgInvPopName	: "The popup name must begin with an alphabetic character and must not contain spaces",	//MISSING
+
+// Color Dialog
+DlgColorTitle		: "Elekti",
+DlgColorBtnClear	: "Forigi",
+DlgColorHighlight	: "Emfazi",
+DlgColorSelected	: "Elektita",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Enmeti Mienvinjeton",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Enmeti Specialan Signon",
+
+// Table Dialog
+DlgTableTitle		: "Atributoj de Tabelo",
+DlgTableRows		: "Linioj",
+DlgTableColumns		: "Kolumnoj",
+DlgTableBorder		: "Bordero",
+DlgTableAlign		: "Ĝisrandigo",
+DlgTableAlignNotSet	: "<Defaŭlte>",
+DlgTableAlignLeft	: "Maldekstre",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Dekstre",
+DlgTableWidth		: "Larĝo",
+DlgTableWidthPx		: "Bitbilderoj",
+DlgTableWidthPc		: "elcentoj",
+DlgTableHeight		: "Alto",
+DlgTableCellSpace	: "Interspacigo de Ĉeloj",
+DlgTableCellPad		: "Ĉirkaŭenhava Plenigado",
+DlgTableCaption		: "Titolo",
+DlgTableSummary		: "Summary",	//MISSING
+DlgTableHeaders		: "Headers",	//MISSING
+DlgTableHeadersNone		: "None",	//MISSING
+DlgTableHeadersColumn	: "First column",	//MISSING
+DlgTableHeadersRow		: "First Row",	//MISSING
+DlgTableHeadersBoth		: "Both",	//MISSING
+
+// Table Cell Dialog
+DlgCellTitle		: "Atributoj de Celo",
+DlgCellWidth		: "Larĝo",
+DlgCellWidthPx		: "bitbilderoj",
+DlgCellWidthPc		: "elcentoj",
+DlgCellHeight		: "Alto",
+DlgCellWordWrap		: "Linifaldo",
+DlgCellWordWrapNotSet	: "<Defaŭlte>",
+DlgCellWordWrapYes	: "Jes",
+DlgCellWordWrapNo	: "Ne",
+DlgCellHorAlign		: "Horizonta Ĝisrandigo",
+DlgCellHorAlignNotSet	: "<Defaŭlte>",
+DlgCellHorAlignLeft	: "Maldekstre",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Dekstre",
+DlgCellVerAlign		: "Vertikala Ĝisrandigo",
+DlgCellVerAlignNotSet	: "<Defaŭlte>",
+DlgCellVerAlignTop	: "Supre",
+DlgCellVerAlignMiddle	: "Centre",
+DlgCellVerAlignBottom	: "Malsupre",
+DlgCellVerAlignBaseline	: "Je Malsupro de Teksto",
+DlgCellType		: "Cell Type",	//MISSING
+DlgCellTypeData		: "Data",	//MISSING
+DlgCellTypeHeader	: "Header",	//MISSING
+DlgCellRowSpan		: "Linioj Kunfanditaj",
+DlgCellCollSpan		: "Kolumnoj Kunfanditaj",
+DlgCellBackColor	: "Fono",
+DlgCellBorderColor	: "Bordero",
+DlgCellBtnSelect	: "Elekti...",
+
+// Find and Replace Dialog
+DlgFindAndReplaceTitle	: "Find and Replace",	//MISSING
+
+// Find Dialog
+DlgFindTitle		: "Serĉi",
+DlgFindFindBtn		: "Serĉi",
+DlgFindNotFoundMsg	: "La celteksto ne estas trovita.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Anstataŭigi",
+DlgReplaceFindLbl		: "Serĉi:",
+DlgReplaceReplaceLbl	: "Anstataŭigi per:",
+DlgReplaceCaseChk		: "Kongruigi Usklecon",
+DlgReplaceReplaceBtn	: "Anstataŭigi",
+DlgReplaceReplAllBtn	: "Anstataŭigi Ĉiun",
+DlgReplaceWordChk		: "Tuta Vorto",
+
+// Paste Operations / Dialog
+PasteErrorCut	: "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).",
+PasteErrorCopy	: "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).",
+
+PasteAsText		: "Interglui kiel Tekston",
+PasteFromWord	: "Interglui el Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",	//MISSING
+DlgPasteSec		: "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",	//MISSING
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
+DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
+
+// Color Picker
+ColorAutomatic	: "Aŭtomata",
+ColorMoreColors	: "Pli da Koloroj...",
+
+// Document Properties
+DocProps		: "Dokumentaj Atributoj",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Ankraj Atributoj",
+DlgAnchorName		: "Ankra Nomo",
+DlgAnchorErrorName	: "Bv tajpi la ankran nomon",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Ne trovita en la vortaro",
+DlgSpellChangeTo		: "Ŝanĝi al",
+DlgSpellBtnIgnore		: "Malatenti",
+DlgSpellBtnIgnoreAll	: "Malatenti Ĉiun",
+DlgSpellBtnReplace		: "Anstataŭigi",
+DlgSpellBtnReplaceAll	: "Anstataŭigi Ĉiun",
+DlgSpellBtnUndo			: "Malfari",
+DlgSpellNoSuggestions	: "- Neniu propono -",
+DlgSpellProgress		: "Literumkontrolado daŭras...",
+DlgSpellNoMispell		: "Literumkontrolado finita: neniu fuŝo trovita",
+DlgSpellNoChanges		: "Literumkontrolado finita: neniu vorto ŝanĝita",
+DlgSpellOneChange		: "Literumkontrolado finita: unu vorto ŝanĝita",
+DlgSpellManyChanges		: "Literumkontrolado finita: %1 vortoj ŝanĝitaj",
+
+IeSpellDownload			: "Literumada Kontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?",
+
+// Button Dialog
+DlgButtonText		: "Teksto (Valoro)",
+DlgButtonType		: "Tipo",
+DlgButtonTypeBtn	: "Button",	//MISSING
+DlgButtonTypeSbm	: "Submit",	//MISSING
+DlgButtonTypeRst	: "Reset",	//MISSING
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nomo",
+DlgCheckboxValue	: "Valoro",
+DlgCheckboxSelected	: "Elektita",
+
+// Form Dialog
+DlgFormName		: "Nomo",
+DlgFormAction	: "Ago",
+DlgFormMethod	: "Metodo",
+
+// Select Field Dialog
+DlgSelectName		: "Nomo",
+DlgSelectValue		: "Valoro",
+DlgSelectSize		: "Grando",
+DlgSelectLines		: "Linioj",
+DlgSelectChkMulti	: "Permesi Plurajn Elektojn",
+DlgSelectOpAvail	: "Elektoj Disponeblaj",
+DlgSelectOpText		: "Teksto",
+DlgSelectOpValue	: "Valoro",
+DlgSelectBtnAdd		: "Aldoni",
+DlgSelectBtnModify	: "Modifi",
+DlgSelectBtnUp		: "Supren",
+DlgSelectBtnDown	: "Malsupren",
+DlgSelectBtnSetValue : "Agordi kiel Elektitan Valoron",
+DlgSelectBtnDelete	: "Forigi",
+
+// Textarea Dialog
+DlgTextareaName	: "Nomo",
+DlgTextareaCols	: "Kolumnoj",
+DlgTextareaRows	: "Vicoj",
+
+// Text Field Dialog
+DlgTextName			: "Nomo",
+DlgTextValue		: "Valoro",
+DlgTextCharWidth	: "Signolarĝo",
+DlgTextMaxChars		: "Maksimuma Nombro da Signoj",
+DlgTextType			: "Tipo",
+DlgTextTypeText		: "Teksto",
+DlgTextTypePass		: "Pasvorto",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nomo",
+DlgHiddenValue	: "Valoro",
+
+// Bulleted List Dialog
+BulletedListProp	: "Atributoj de Bula Listo",
+NumberedListProp	: "Atributoj de Numera Listo",
+DlgLstStart			: "Start",	//MISSING
+DlgLstType			: "Tipo",
+DlgLstTypeCircle	: "Cirklo",
+DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeSquare	: "Kvadrato",
+DlgLstTypeNumbers	: "Ciferoj (1, 2, 3)",
+DlgLstTypeLCase		: "Minusklaj Literoj (a, b, c)",
+DlgLstTypeUCase		: "Majusklaj Literoj (A, B, C)",
+DlgLstTypeSRoman	: "Malgrandaj Romanaj Ciferoj (i, ii, iii)",
+DlgLstTypeLRoman	: "Grandaj Romanaj Ciferoj (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Ĝeneralaĵoj",
+DlgDocBackTab		: "Fono",
+DlgDocColorsTab		: "Koloroj kaj Marĝenoj",
+DlgDocMetaTab		: "Metadatumoj",
+
+DlgDocPageTitle		: "Paĝotitolo",
+DlgDocLangDir		: "Skribdirekto de la Lingvo",
+DlgDocLangDirLTR	: "De maldekstro dekstren (LTR)",
+DlgDocLangDirRTL	: "De dekstro maldekstren (LTR)",
+DlgDocLangCode		: "Lingvokodo",
+DlgDocCharSet		: "Signara Kodo",
+DlgDocCharSetCE		: "Central European",	//MISSING
+DlgDocCharSetCT		: "Chinese Traditional (Big5)",	//MISSING
+DlgDocCharSetCR		: "Cyrillic",	//MISSING
+DlgDocCharSetGR		: "Greek",	//MISSING
+DlgDocCharSetJP		: "Japanese",	//MISSING
+DlgDocCharSetKR		: "Korean",	//MISSING
+DlgDocCharSetTR		: "Turkish",	//MISSING
+DlgDocCharSetUN		: "Unicode (UTF-8)",	//MISSING
+DlgDocCharSetWE		: "Western European",	//MISSING
+DlgDocCharSetOther	: "Alia Signara Kodo",
+
+DlgDocDocType		: "Dokumenta Tipo",
+DlgDocDocTypeOther	: "Alia Dokumenta Tipo",
+DlgDocIncXHTML		: "Inkluzivi XHTML Deklaroj",
+DlgDocBgColor		: "Fona Koloro",
+DlgDocBgImage		: "URL de Fona Bildo",
+DlgDocBgNoScroll	: "Neruluma Fono",
+DlgDocCText			: "Teksto",
+DlgDocCLink			: "Ligilo",
+DlgDocCVisited		: "Vizitita Ligilo",
+DlgDocCActive		: "Aktiva Ligilo",
+DlgDocMargins		: "Paĝaj Marĝenoj",
+DlgDocMaTop			: "Supra",
+DlgDocMaLeft		: "Maldekstra",
+DlgDocMaRight		: "Dekstra",
+DlgDocMaBottom		: "Malsupra",
+DlgDocMeIndex		: "Ŝlosilvortoj de la Dokumento (apartigita de komoj)",
+DlgDocMeDescr		: "Dokumenta Priskribo",
+DlgDocMeAuthor		: "Verkinto",
+DlgDocMeCopy		: "Kopirajto",
+DlgDocPreview		: "Aspekto",
+
+// Templates Dialog
+Templates			: "Templates",	//MISSING
+DlgTemplatesTitle	: "Content Templates",	//MISSING
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br />(the actual contents will be lost):",	//MISSING
+DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
+DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+DlgTemplatesReplace	: "Replace actual contents",	//MISSING
+
+// About Dialog
+DlgAboutAboutTab	: "Pri",
+DlgAboutBrowserInfoTab	: "Informoj pri TTT-legilo",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "versio",
+DlgAboutInfo		: "Por pli da informoj, vizitu",
+
+// Div Dialog
+DlgDivGeneralTab	: "General",	//MISSING
+DlgDivAdvancedTab	: "Advanced",	//MISSING
+DlgDivStyle		: "Style",	//MISSING
+DlgDivInlineStyle	: "Inline Style",	//MISSING
+
+ScaytTitle			: "SCAYT",	//MISSING
+ScaytTitleOptions	: "Options",	//MISSING
+ScaytTitleLangs		: "Languages",	//MISSING
+ScaytTitleAbout		: "About"	//MISSING
+};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fck_wbmodules.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fck_wbmodules.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fck_wbmodules.php	(revision 1610)
@@ -0,0 +1,94 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include the config file
+require('../../../../../../config.php');
+// Create new admin object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Setup the template
+$template = new Template(WB_PATH.'/modules/fckeditor/fckeditor/editor/plugins/WBModules');
+$template->set_file('page', 'wbmodules.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Function to generate page list
+function gen_page_list($parent) {
+	global $template, $database, $admin;
+	$get_pages = $database->query("SELECT * FROM ".TABLE_PREFIX."pages WHERE parent = '$parent' order by position");
+	while($page = $get_pages->fetchRow()) {
+		// method page_is_visible was introduced with WB 2.7
+		if(method_exists($admin, 'page_is_visible') && !$admin->page_is_visible($page))
+			continue;
+		$title = stripslashes($page['menu_title']);
+		// Add leading -'s so we can tell what level a page is at
+		$leading_dashes = '';
+		for($i = 0; $i < $page['level']; $i++) {
+			$leading_dashes .= '- ';
+		}
+		$template->set_var('TITLE', $leading_dashes.' '.$title);
+		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
+		/**
+			Note: FCK uses the header defined in /fckeditor/fckeditor/editor/fckdialog.html
+			Therefore the WB charset defined in the template: wbmodules.html will be overwritten
+			Routine kept for now, maybe it is possible to define custom plugin charsets in a future FCK releases (doc)
+		*/
+		// work out the specified WB charset 
+		if(defined('DEFAULT_CHARSET')) { 
+			$template->set_var('CHARSET', DEFAULT_CHARSET);
+		} else { 
+			$template->set_var('CHARSET', 'utf-8');
+		}
+		$template->parse('page_list', 'page_list_block', true);
+		gen_page_list($page['page_id']);
+	}
+}
+
+// Get pages and put them into the pages list
+$template->set_block('main_block', 'page_list_block', 'page_list');
+$get_pages = $database->query("SELECT * FROM ".TABLE_PREFIX."pages WHERE parent = '0' order by position");
+if($get_pages->numRows() > 0) {
+	// Loop through pages
+	while($page = $get_pages->fetchRow()) {
+		// method page_is_visible was introduced with WB 2.7
+		if(method_exists($admin, 'page_is_visible') && !$admin->page_is_visible($page))
+			continue;
+		$title = stripslashes($page['menu_title']);
+		$template->set_var('TITLE', $title);
+		$template->set_var('LINK', '[wblink'.$page['page_id'].']');
+		$template->parse('page_list', 'page_list_block', true);
+		gen_page_list($page['page_id']);
+	}
+} else {
+	$template->set_var('TITLE', 'None found');
+	$template->set_var('LINK', 'None found');
+	$template->parse('page_list', 'page_list_block', false);
+}
+
+// Parse the template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fck_wbmodules.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2008, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/ru.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/ru.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/ru.js	(revision 1610)
@@ -0,0 +1,7 @@
+FCKLang.WBModulesBtn			= 'Вставить/Редактировать внутреннюю ссылку' ;
+FCKLang.WBModulesDlgTitle		= ' Вставить внутреннюю ссылку' ;
+FCKLang.WBModulesDlgName		= 'Вставка внутренней ссылки' ;
+FCKLang.WBModulesErrSelection		= 'Пожалуйста выделите ссылающийся текст' ;
+FCKLang.WBModulesErrPageSelect		= 'Выберите страницу чтобы сделать ссылку' ;
+FCKLang.WBModuleslblPageSelection	= 'Выберите страницу для ссылки:';
+FCKLang.WBModuleslblTitle		= 'Заголовок';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/ru.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/de.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/de.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/de.js	(revision 1610)
@@ -0,0 +1,7 @@
+FCKLang.WBModulesBtn			= 'WB Seitenlink einf\u00fcgen/\u00e4ndern' ;
+FCKLang.WBModulesDlgTitle		= 'WB Link - Internen Link einf\u00fcgen' ;
+FCKLang.WBModulesDlgName		= 'Website Baker Link einf\u00fcgen' ;
+FCKLang.WBModulesErrSelection		= 'Bitte zuerst einen Text markieren, der verlinkt werden soll!' ;
+FCKLang.WBModulesErrPageSelect		= 'Bitte eine WB-Seite markieren, auf die verlinkt werden soll!' ;
+FCKLang.WBModuleslblPageSelection	= 'Auswahlfenster der m\u00f6glichen WB-Seiten:';
+FCKLang.WBModuleslblTitle		= 'Linktitel:';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/de.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/nl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/nl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/nl.js	(revision 1610)
@@ -0,0 +1,7 @@
+FCKLang.WBModulesBtn			= 'Interne WB link toevoegen' ;
+FCKLang.WBModulesDlgTitle		= 'WB Link - voeg interne link toe' ;
+FCKLang.WBModulesDlgName		= 'Website Baker link toevoegen' ;
+FCKLang.WBModulesErrSelection		= 'Eerst een selectie maken voordat u een link wilt toevoegen' ;
+FCKLang.WBModulesErrPageSelect		= 'Eerst een pagina selecteren als u een link wilt creeren' ;
+FCKLang.WBModuleslblPageSelection	= 'Selecteer een WB Pagina om te linken:';
+FCKLang.WBModuleslblTitle		= 'Titel';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/nl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/en.js	(revision 1610)
@@ -0,0 +1,7 @@
+FCKLang.WBModulesBtn			= 'Insert/Edit Website Baker link' ;
+FCKLang.WBModulesDlgTitle		= 'WB Link - Insert internal link' ;
+FCKLang.WBModulesDlgName		= 'Website Baker Link insert' ;
+FCKLang.WBModulesErrSelection		= 'Please select a text in order to create a (internal) link' ;
+FCKLang.WBModulesErrPageSelect		= 'Please select a page in order to create a link' ;
+FCKLang.WBModuleslblPageSelection	= 'Select a WB Page to link to:';
+FCKLang.WBModuleslblTitle		= 'Title';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/lang/en.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.htt
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.htt	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.htt	(revision 1610)
@@ -0,0 +1,102 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	<head>
+		<title>WB Link - Insert Website Baker Link</title>
+		<meta http-equiv="Content-Type" content="text/html; charset={CHARSET}">
+		<meta content="noindex, nofollow" name="robots">
+		<script type="text/javascript" src="fckwbmodules.js"></script>
+		<script type="text/javascript">
+		<!--
+			var oEditor			= window.parent.InnerDialogLoaded(); 
+			var FCK				= oEditor.FCK; 
+			var FCKLang			= oEditor.FCKLang ;
+			var FCKConfig		= oEditor.FCKConfig ;
+			//var FCKCMSCCMSModules	= oEditor.FCKCMSModules; 
+			 
+			// oLink: The actual selected link in the editor.
+			var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+			if ( oLink )
+				FCK.Selection.SelectNode( oLink ) ;
+	
+			window.onload = function ()	{ 
+				// First of all, translates the dialog box texts.
+				oEditor.FCKLanguageManager.TranslatePage(document);
+				
+				LoadSelected();							//See function below 
+				window.parent.SetOkButton( true );		//Show the "Ok" button. 
+				
+			} 
+			 
+			//If an anchor (A) object is currently selected, load the properties into the dialog 
+			function LoadSelected()	{
+				var sSelected;
+
+				if ( oEditor.FCKBrowserInfo.IsGecko || oEditor.FCKBrowserInfo.IsSafari || oEditor.FCKBrowserInfo.IsChrome ) {
+					sSelected = FCK.EditorWindow.getSelection();
+				} else {
+					sSelected = FCK.EditorDocument.selection.createRange().text;
+				}
+
+				if ( sSelected == "" ) {
+					alert( FCKLang.WBModulesErrSelection );
+					window.parent.Cancel();
+				}
+
+			}
+
+			//Code that runs after the OK button is clicked 
+			function Ok() {
+				//Validate is option is selected
+				var oPageList = document.getElementById( 'cmbPages' ) ;
+				if(oPageList.selectedIndex == -1) {
+					alert( FCKLang.WBModulesErrPageSelect );
+					return false;
+				}
+				
+				var oTagLink = document.getElementById( 'chkTaglink' );
+				
+				var sPageId = oPageList[oPageList.selectedIndex].value;
+				oLink = oEditor.FCK.CreateLink( sPageId ) ;
+				// the following line was commented out as it creates an error message in some browser (e.g. IE)
+				// even Firefox seems not to make use of the title so we remove this option for know (doc)
+				// SetAttribute( oLink, 'title', document.getElementById( 'txtTitle' ).value ) ;
+			return true;
+
+			} 
+			
+		//-->
+		</script>
+	</head>
+			
+	<body scroll="no" style="overflow:hidden;">
+		 <table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0"> 
+		 	<tr> 
+				<td>
+					<table width="100%">
+						<tr>
+							<td colspan="2"><span fckLang="WBModuleslblPageSelection">Select a WB Page to link to:</span>&nbsp;</td>
+						</tr>
+						<tr>
+							<td colspan="2">
+								<select id="cmbPages" style="WIDTH: 100%" size="14" name="cmbPages">
+									<!-- BEGIN page_list_block -->
+									<option value="{LINK}"{SELECTED}>{TITLE}</option>
+									<!-- END page_list_block -->
+								</select>
+							</td>
+						</tr>
+						<!-- commented out as this option will not work in all browsers (doc)
+						<tr>
+							<td nowrap><span fckLang="WBModuleslblTitle">Title</span>&nbsp;</td>
+							<td width="100%" style="align:right;"><input id="txtTitle" style="WIDTH: 98%" type="text" name="txtTitle"></td>
+						</tr>
+						-->
+					</table>
+				</td>
+			</tr>
+		</table>
+		
+	</body>
+</html> 
+<!-- END main_block -->
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.htt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/wbmodules.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.js	(revision 1610)
@@ -0,0 +1,8 @@
+// Function to set special attributes. Copied from FCK Core function
+function SetAttribute( element, attName, attValue )
+{
+	if ( attValue == null || attValue.length == 0 )
+		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
+	else
+		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.css	(revision 1610)
@@ -0,0 +1,35 @@
+#fckComment a, #fckComment a:visited {
+	position: relative;
+	text-decoration: none;
+	border: 0;
+}
+
+#fckComment a span {
+	display:none;
+}
+
+#fckComment a:hover {
+	color: #d00;
+	border: 0px solid #fff;
+}
+
+#fckComment a img {	
+	border: 0;
+	height: 20px;
+	width: 20px;
+}
+
+#fckComment a:hover span {
+	text-align:left;	
+	display:block;
+	border:1px solid #CCCCCC;
+	position: absolute;
+	top: 0px;
+	left: 20px;
+	width: 300px;
+	padding:5px;	
+	color:#000000;
+	background-color:#FFFFCC;
+	opacity: 0.8;
+	filter:alpha(opacity=80);
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckwbmodules.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckplugin.js	(revision 1610)
@@ -0,0 +1,30 @@
+/* 
+ *  FCKPlugin.js
+ *  ------------
+ *  This is a generic file which is needed for plugins that are developed
+ *  for FCKEditor. With the below statements that toolbar is created and
+ *  several options are being activated.
+ *
+ *  See the online documentation for more information:
+ *  http://wiki.fckeditor.net/
+ */
+
+// Register the related commands.
+FCKCommands.RegisterCommand(
+	'WBModules',
+	new FCKDialogCommand(
+		'WBModules',
+		FCKLang["WBModulesDlgTitle"],
+		FCKPlugins.Items['WBModules'].Path + 'fck_wbmodules.php',
+		370,
+		370
+	)
+);
+ 
+// Create the "WBModules" toolbar button.
+// FCKToolbarButton( commandName, label, tooltip, style, sourceView, contextSensitive )
+var oWBModulesItem = new FCKToolbarButton( 'WBModules', FCKLang["WBModulesBtn"], null, null, false, true ); 
+oWBModulesItem.IconPath = FCKConfig.PluginsPath + 'WBModules/wbmodules.gif'; 
+
+// 'CMSContent' is the name that is used in the toolbar config.
+FCKToolbarItems.RegisterItem( 'WBModules', oWBModulesItem );

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBModules/fckplugin.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/es.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/es.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/es.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder Spanish language file.
+ */
+FCKLang.PlaceholderBtn			= 'Insertar/Editar contenedor' ;
+FCKLang.PlaceholderDlgTitle		= 'Propiedades del contenedor ' ;
+FCKLang.PlaceholderDlgName		= 'Nombre de contenedor' ;
+FCKLang.PlaceholderErrNoName	= 'Por favor escriba el nombre de contenedor' ;
+FCKLang.PlaceholderErrNameInUse	= 'El nombre especificado ya esta en uso' ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/fr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/fr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/fr.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placeholder French language file.
+ */
+FCKLang.PlaceholderBtn			= "Insérer/Modifier l'Espace réservé" ;
+FCKLang.PlaceholderDlgTitle		= "Propriétés de l'Espace réservé" ;
+FCKLang.PlaceholderDlgName		= "Nom de l'Espace réservé" ;
+FCKLang.PlaceholderErrNoName	= "Veuillez saisir le nom de l'Espace réservé" ;
+FCKLang.PlaceholderErrNameInUse	= "Ce nom est déjà utilisé" ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/de.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/de.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/de.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder German language file.
+ */
+FCKLang.PlaceholderBtn			= 'Einfügen/editieren Platzhalter' ;
+FCKLang.PlaceholderDlgTitle		= 'Platzhalter Eigenschaften' ;
+FCKLang.PlaceholderDlgName		= 'Platzhalter Name' ;
+FCKLang.PlaceholderErrNoName	= 'Bitte den Namen des Platzhalters schreiben' ;
+FCKLang.PlaceholderErrNameInUse	= 'Der angegebene Namen ist schon in Gebrauch' ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/pl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/pl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/pl.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder Polish language file.
+ */
+FCKLang.PlaceholderBtn			= 'Wstaw/Edytuj nagłówek' ;
+FCKLang.PlaceholderDlgTitle		= 'Właśności nagłówka' ;
+FCKLang.PlaceholderDlgName		= 'Nazwa nagłówka' ;
+FCKLang.PlaceholderErrNoName	= 'Proszę wprowadzić nazwę nagłówka' ;
+FCKLang.PlaceholderErrNameInUse	= 'Podana nazwa jest już w użyciu' ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/it.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/it.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/it.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder Italian language file.
+ */
+FCKLang.PlaceholderBtn			= 'Aggiungi/Modifica Placeholder' ;
+FCKLang.PlaceholderDlgTitle		= 'Proprietà del Placeholder' ;
+FCKLang.PlaceholderDlgName		= 'Nome del Placeholder' ;
+FCKLang.PlaceholderErrNoName	= 'Digitare il nome del placeholder' ;
+FCKLang.PlaceholderErrNameInUse	= 'Il nome inserito è già in uso' ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/en.js	(revision 1610)
@@ -0,0 +1,27 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder English language file.
+ */
+FCKLang.PlaceholderBtn			= 'Insert/Edit Placeholder' ;
+FCKLang.PlaceholderDlgTitle		= 'Placeholder Properties' ;
+FCKLang.PlaceholderDlgName		= 'Placeholder Name' ;
+FCKLang.PlaceholderErrNoName	= 'Please type the placeholder name' ;
+FCKLang.PlaceholderErrNameInUse	= 'The specified name is already in use' ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fck_placeholder.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fck_placeholder.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fck_placeholder.html	(revision 1610)
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placeholder Plugin.
+-->
+<html>
+	<head>
+		<title>Placeholder Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="../../dialog/common/fck_dialog_common.js" type="text/javascript"></script>
+		<script language="javascript">
+
+var dialog = window.parent ;
+var oEditor = dialog.InnerDialogLoaded() ;
+var FCKLang = oEditor.FCKLang ;
+var FCKPlaceholders = oEditor.FCKPlaceholders ;
+
+window.onload = function ()
+{
+	// First of all, translate the dialog box texts
+	oEditor.FCKLanguageManager.TranslatePage( document ) ;
+
+	LoadSelected() ;
+
+	// Show the "Ok" button.
+	dialog.SetOkButton( true ) ;
+
+	// Select text field on load.
+	SelectField( 'txtName' ) ;
+}
+
+var eSelected = dialog.Selection.GetSelectedElement() ;
+
+function LoadSelected()
+{
+	if ( !eSelected )
+		return ;
+
+	if ( eSelected.tagName == 'SPAN' && eSelected._fckplaceholder )
+		document.getElementById('txtName').value = eSelected._fckplaceholder ;
+	else
+		eSelected == null ;
+}
+
+function Ok()
+{
+	var sValue = document.getElementById('txtName').value ;
+
+	if ( eSelected && eSelected._fckplaceholder == sValue )
+		return true ;
+
+	if ( sValue.length == 0 )
+	{
+		alert( FCKLang.PlaceholderErrNoName ) ;
+		return false ;
+	}
+
+	if ( FCKPlaceholders.Exist( sValue ) )
+	{
+		alert( FCKLang.PlaceholderErrNameInUse ) ;
+		return false ;
+	}
+
+	FCKPlaceholders.Add( sValue ) ;
+	return true ;
+}
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<table cellSpacing="0" cellPadding="0" align="center" border="0">
+						<tr>
+							<td>
+								<span fckLang="PlaceholderDlgName">Placeholder Name</span><br>
+								<input id="txtName" type="text">
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/fckplugin.js	(revision 1610)
@@ -0,0 +1,187 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Plugin to insert "Placeholders" in the editor.
+ */
+
+// Register the related command.
+FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 160 ) ) ;
+
+// Create the "Plaholder" toolbar button.
+var oPlaceholderItem = new FCKToolbarButton( 'Placeholder', FCKLang.PlaceholderBtn ) ;
+oPlaceholderItem.IconPath = FCKPlugins.Items['placeholder'].Path + 'placeholder.gif' ;
+
+FCKToolbarItems.RegisterItem( 'Placeholder', oPlaceholderItem ) ;
+
+
+// The object used for all Placeholder operations.
+var FCKPlaceholders = new Object() ;
+
+// Add a new placeholder at the actual selection.
+FCKPlaceholders.Add = function( name )
+{
+	var oSpan = FCK.InsertElement( 'span' ) ;
+	this.SetupSpan( oSpan, name ) ;
+}
+
+FCKPlaceholders.SetupSpan = function( span, name )
+{
+	span.innerHTML = '[[ ' + name + ' ]]' ;
+
+	span.style.backgroundColor = '#ffff00' ;
+	span.style.color = '#000000' ;
+
+	if ( FCKBrowserInfo.IsGecko )
+		span.style.cursor = 'default' ;
+
+	span._fckplaceholder = name ;
+	span.contentEditable = false ;
+
+	// To avoid it to be resized.
+	span.onresizestart = function()
+	{
+		FCK.EditorWindow.event.returnValue = false ;
+		return false ;
+	}
+}
+
+// On Gecko we must do this trick so the user select all the SPAN when clicking on it.
+FCKPlaceholders._SetupClickListener = function()
+{
+	FCKPlaceholders._ClickListener = function( e )
+	{
+		if ( e.target.tagName == 'SPAN' && e.target._fckplaceholder )
+			FCKSelection.SelectNode( e.target ) ;
+	}
+
+	FCK.EditorDocument.addEventListener( 'click', FCKPlaceholders._ClickListener, true ) ;
+}
+
+// Open the Placeholder dialog on double click.
+FCKPlaceholders.OnDoubleClick = function( span )
+{
+	if ( span.tagName == 'SPAN' && span._fckplaceholder )
+		FCKCommands.GetCommand( 'Placeholder' ).Execute() ;
+}
+
+FCK.RegisterDoubleClickHandler( FCKPlaceholders.OnDoubleClick, 'SPAN' ) ;
+
+// Check if a Placholder name is already in use.
+FCKPlaceholders.Exist = function( name )
+{
+	var aSpans = FCK.EditorDocument.getElementsByTagName( 'SPAN' ) ;
+
+	for ( var i = 0 ; i < aSpans.length ; i++ )
+	{
+		if ( aSpans[i]._fckplaceholder == name )
+			return true ;
+	}
+
+	return false ;
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+	FCKPlaceholders.Redraw = function()
+	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return ;
+
+		var aPlaholders = FCK.EditorDocument.body.innerText.match( /\[\[[^\[\]]+\]\]/g ) ;
+		if ( !aPlaholders )
+			return ;
+
+		var oRange = FCK.EditorDocument.body.createTextRange() ;
+
+		for ( var i = 0 ; i < aPlaholders.length ; i++ )
+		{
+			if ( oRange.findText( aPlaholders[i] ) )
+			{
+				var sName = aPlaholders[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
+				oRange.pasteHTML( '<span style="color: #000000; background-color: #ffff00" contenteditable="false" _fckplaceholder="' + sName + '">' + aPlaholders[i] + '</span>' ) ;
+			}
+		}
+	}
+}
+else
+{
+	FCKPlaceholders.Redraw = function()
+	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return ;
+
+		var oInteractor = FCK.EditorDocument.createTreeWalker( FCK.EditorDocument.body, NodeFilter.SHOW_TEXT, FCKPlaceholders._AcceptNode, true ) ;
+
+		var	aNodes = new Array() ;
+
+		while ( ( oNode = oInteractor.nextNode() ) )
+		{
+			aNodes[ aNodes.length ] = oNode ;
+		}
+
+		for ( var n = 0 ; n < aNodes.length ; n++ )
+		{
+			var aPieces = aNodes[n].nodeValue.split( /(\[\[[^\[\]]+\]\])/g ) ;
+
+			for ( var i = 0 ; i < aPieces.length ; i++ )
+			{
+				if ( aPieces[i].length > 0 )
+				{
+					if ( aPieces[i].indexOf( '[[' ) == 0 )
+					{
+						var sName = aPieces[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
+
+						var oSpan = FCK.EditorDocument.createElement( 'span' ) ;
+						FCKPlaceholders.SetupSpan( oSpan, sName ) ;
+
+						aNodes[n].parentNode.insertBefore( oSpan, aNodes[n] ) ;
+					}
+					else
+						aNodes[n].parentNode.insertBefore( FCK.EditorDocument.createTextNode( aPieces[i] ) , aNodes[n] ) ;
+				}
+			}
+
+			aNodes[n].parentNode.removeChild( aNodes[n] ) ;
+		}
+
+		FCKPlaceholders._SetupClickListener() ;
+	}
+
+	FCKPlaceholders._AcceptNode = function( node )
+	{
+		if ( /\[\[[^\[\]]+\]\]/.test( node.nodeValue ) )
+			return NodeFilter.FILTER_ACCEPT ;
+		else
+			return NodeFilter.FILTER_SKIP ;
+	}
+}
+
+FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKPlaceholders.Redraw ) ;
+
+// We must process the SPAN tags to replace then with the real resulting value of the placeholder.
+FCKXHtml.TagProcessors['span'] = function( node, htmlNode )
+{
+	if ( htmlNode._fckplaceholder )
+		node = FCKXHtml.XML.createTextNode( '[[' + htmlNode._fckplaceholder + ']]' ) ;
+	else
+		FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/placeholder.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/placeholder/placeholder.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/swfobject.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/swfobject.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/swfobject.js	(revision 1610)
@@ -0,0 +1,8 @@
+/**
+ * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
+ *
+ * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ */
+if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ru.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ru.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ru.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fr.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fr.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/de.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/de.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/de.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/sv.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/sv.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/sv.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ee.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ee.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/ee.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/nl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/nl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/nl.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fi.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fi.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/fi.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Mediasoitin";
+FCKLang["DlgFLVPlayerURL"]            = "Video/Media tiedosto" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Selaa..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Esikatselu kuva" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Soittimen leveys (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Soittimen korkeus (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Soittimen kohdistus" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Vasen" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Oikea" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Keskitetty" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "Vaakatila" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "Pystytila" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Taustaväri"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Tekstin väri"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Valitse..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Automaattinen toisto" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Jatkuva" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Ladattavissa" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Salli koko näyttötila" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Anna osoite (URL)"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Anna soittolistan osoite (URL)"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Anna leveys"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Anna korkeus"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Soittimen asetukset"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media asetukset"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Näytä navigaatio"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Näytä aika"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Vesileiman kuva"
+FCKLang["DlgFLVPlayerFileType"]	      = "Tiedostotyyppi"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Yksittäinen media tiedosto"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media soittolista"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Soittolistan osoite (URL)"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Näytä soittolista"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Älä näytä"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Näytä oikella"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Näytä alla"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Suosituslista"
+FCKLang["DlgFLVPlaylistWidth"]        = "Soittolistan leveys (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Soittolistan korkeus (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Soittolistan koko"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Näytä esikatselukuva soittolistassa"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/en.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/br.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/br.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/lang/br.js	(revision 1610)
@@ -0,0 +1,45 @@
+﻿// FLV Player Dialog
+FCKLang["DlgFLVPlayerTitle"]          = "FLV Media Player";
+FCKLang["DlgFLVPlayerURL"]            = "Movie/Media File" ;
+FCKLang["DlgFLVPlayerBtnBrowse"]      = "Browse..." ;
+FCKLang["DlgFLVPlayerImgURL"]         = "Preview Image" ;
+FCKLang["DlgFLVPlayerWidth"]          = "Player Width (px)" ;
+FCKLang["DlgFLVPlayerHeight"]         = "Player Height (px)" ;
+FCKLang["DlgFLVPlayerAlign"]          = "Player Alignment" ;
+FCKLang["DlgFLVPlayerAlignLeft"]      = "Left" ;
+FCKLang["DlgFLVPlayerAlignRight"]     = "Right" ;
+FCKLang["DlgFLVPlayerAlignCenter"]    = "Center" ;
+FCKLang["DlgFLVPlayerHSpace"]         = "HSpace" ;
+FCKLang["DlgFLVPlayerVSpace"]         = "VSpace" ;
+FCKLang["DlgFLVPlayerBgColor"]        = "Background Color"
+FCKLang["DlgFLVPlayerTBColor"]        = "Toolbar Color"
+FCKLang["DlgFLVPlayerTBTColor"]       = "Text Color"
+FCKLang["DlgFLVPlayerTBTRColor"]      = "Rollover Text Color"
+FCKLang["DlgFLVPlayerBtnSelect"]      = "Select..."
+FCKLang["DlgFLVPlayerAutoplay"]       = "Autoplay" ;
+FCKLang["DlgFLVPlayerLoop"]           = "Loop" ;
+FCKLang["DlgFLVPlayerDownload"]       = "Downloadable" ;
+FCKLang["DlgFLVPlayerFullscreen"]     = "Allow Fullscreen" ;
+FCKLang["DlgFLVPlayerAlertUrl"]       = "Please input the URL"
+FCKLang["DlgFLVPlayerAlertPlaylist"]  = "Please input the Playlist URL"
+FCKLang["DlgFLVPlayerAlertWidth"]     = "Please input the Width"
+FCKLang["DlgFLVPlayerAlertHeight"]    = "Please input the Height"
+FCKLang["DlgFLVPlayerPlayerAttrs"]    = "Player Attributes"
+FCKLang["DlgFLVPlayerMovieAttrs"]     = "Media Attributes"
+FCKLang["DlgFLVPlayerShowNavigation"] = "Display Navigation"
+FCKLang["DlgFLVPlayerShowDigits"]     = "Display Time"
+FCKLang["DlgFLVPlayerWatermarkURL"]   = "Watermark Image"
+FCKLang["DlgFLVPlayerFileType"]		  = "File Type"
+FCKLang["DlgFLVPlayerSingleFile"]     = "Single Media File"
+FCKLang["DlgFLVPlayerPlaylistFile"]   = "Media Playlist"
+FCKLang["DlgFLVPlayerPlaylistURL"]    = "Playlist URL"
+FCKLang["DlgFLVPlayerDispPlaylist"]   = "Display Playlist"
+FCKLang["DlgFLVPlayerDispPLNone"]     = "Do Not Display"
+FCKLang["DlgFLVPlayerDispPLRight"]    = "Display On Right"
+FCKLang["DlgFLVPlayerDispPLBelow"]    = "Display Below"
+FCKLang["DlgFLVPlayerRecommendURL"]   = "Recommendations List"
+FCKLang["DlgFLVPlaylistWidth"]        = "Playlist Width (px)"
+FCKLang["DlgFLVPlaylistHeight"]       = "Playlist Height (px)"
+FCKLang["DlgFLVPlaylistDimText"]      = "Playlist Dimension"
+FCKLang["DlgFLVPlayerPLThumbs"]       = "Display Thumbnails in Playlist"
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.js	(revision 1610)
@@ -0,0 +1,575 @@
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCK		= oEditor.FCK ;
+
+// Set the language direction.
+window.document.dir = oEditor.FCKLang.Dir ;
+
+// Set the Skin CSS.
+document.write( '<link href="' + oEditor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+var sAgent = navigator.userAgent.toLowerCase() ;
+
+var is_ie = (sAgent.indexOf("msie") != -1); // FCKBrowserInfo.IsIE
+var is_gecko = !is_ie; // FCKBrowserInfo.IsGecko
+
+var oMedia = null;
+var is_new_flvplayer = true;
+
+function window_onload()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = oEditor.FCKConfig.FlashBrowser ? '' : 'none' ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+}
+
+
+function getSelectedMovie(){
+	var oSel = null;
+	oMedia = new Media();
+	oSel = FCK.Selection.GetParentElement();
+	// If in "Get the Flash Player" a href, do it again
+	if (oSel.id != null && !oSel.id.match(/^player[0-9]*$/)) {
+		oSel = oSel.parentNode;
+	}
+	if (oSel.id != null && oSel.id.match(/^player[0-9]*$/)) {
+		for (var i = 0; i < oSel.childNodes.length; i++) {
+			if (oSel.childNodes.item(i).nodeName=="DIV") {
+				var oC=oSel.childNodes.item(i).innerHTML.split(' ');
+				for (var o = 0; o < oC.length ; o++) {
+					var tmp=oC[o].split('=');
+					oMedia.setAttribute(tmp[0],tmp[1]);
+				}
+				is_new_flvplayer = false;
+			}
+		}
+	}
+	return oMedia;
+}
+
+function updatePlaylistOption () {
+	if (GetE('selDispPlaylist').value == "right" || GetE('selDispPlaylist').value == "below") {
+		GetE('chkPLThumbs').disabled=false;
+		GetE('chkPLThumbs').checked=true;
+		GetE('txtPLDim').disabled=false;
+		GetE('txtPLDim').style.background='#ffffff';
+		GetE('spanDimText').style.display='none';
+		if (GetE('selDispPlaylist').value == "right") {
+			GetE('spanDimWText').style.display='';
+			GetE('spanDimHText').style.display='none';
+		} else if (GetE('selDispPlaylist').value == "below") {
+			GetE('spanDimWText').style.display='none';
+			GetE('spanDimHText').style.display='';
+		}
+	} else {
+		GetE('chkPLThumbs').disabled=true;
+		GetE('chkPLThumbs').checked=false;
+		GetE('txtPLDim').value = "";
+		GetE('txtPLDim').disabled=true;
+		GetE('txtPLDim').style.background='transparent';
+		GetE('spanDimText').style.display='';
+		GetE('spanDimWText').style.display='none';
+		GetE('spanDimHText').style.display='none';
+	}
+}
+
+
+function LoadSelection()
+{
+	oMedia = new Media();
+	oMedia = getSelectedMovie();
+	//alert('test');
+/*	
+	alert (
+		"id: " + oMedia.id +
+		"\nUrl: " + oMedia.url + 
+		"\nWidth: " + oMedia.width +
+		"\nHeight: " + oMedia.height +
+		"\nQuality: " + oMedia.quality +
+		"\nScale: " + oMedia.scale +
+		"\nVSpace: " + oMedia.vspace +
+		"\nHSpace: " + oMedia.hspace +
+		"\nAlign: " + oMedia.align +
+		"\nBgcolor: " + oMedia.bgcolor +
+		"\nLoop: " + oMedia.loop +
+		"\nPlay: " + oMedia.play
+	);
+*/
+	GetE('rbFileType').value	= oMedia.fileType;
+	GetE('txtURL').value    	= oMedia.url;
+	GetE('txtPlaylist').value   = oMedia.purl;
+	GetE('txtImgURL').value    	= oMedia.iurl;
+	GetE('txtWMURL').value    	= oMedia.wmurl;
+	GetE('txtWidth').value		= oMedia.width;
+	GetE('txtHeight').value		= oMedia.height;
+	GetE('chkLoop').checked		= oMedia.loop;
+	GetE('chkAutoplay').checked	= oMedia.play;
+	GetE('chkDownload').checked 	= oMedia.downloadable;
+	GetE('chkFullscreen').checked	= oMedia.fullscreen;
+	GetE('txtBgColor').value	= oMedia.bgcolor;
+	GetE('txtToolbarColor').value	= oMedia.toolcolor;
+	GetE('txtToolbarTxtColor').value	= oMedia.tooltcolor;
+	GetE('txtToolbarTxtRColor').value	= oMedia.tooltrcolor;
+	GetE('chkShowNavigation').checked	= oMedia.displayNavigation;
+	GetE('chkShowDigits').checked	= oMedia.displayDigits;
+	GetE('selAlign').value		= oMedia.align;
+	GetE('selDispPlaylist').value = oMedia.dispPlaylist;
+	GetE('txtRURL').value = oMedia.rurl;
+	GetE('txtPLDim').value = oMedia.playlistDim;
+	GetE('chkPLThumbs').checked = oMedia.playlistThumbs;
+
+	//updatePreview();
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	var rbFileTypeVal = "single";
+	if (GetE('rbFileType').checked == false) {
+		rbFileTypeVal = "list";
+	}
+
+	if ( rbFileTypeVal == "single") {
+		if ( GetE('txtURL').value.length == 0 )
+		{
+			GetE('txtURL').focus() ;	
+
+			alert( oEditor.FCKLang.DlgFLVPlayerAlertUrl ) ;
+			return false ;
+		}
+	}
+
+	if (rbFileTypeVal == "list") {
+		if ( GetE('txtPlaylist').value.length == 0 )
+		{
+			GetE('txtPlaylist').focus() ;	
+
+			alert( oEditor.FCKLang.DlgFLVPlayerAlertPlaylist ) ;
+			return false ;
+		}
+	}
+
+
+	if ( GetE('txtWidth').value.length == 0 )
+	{
+		GetE('txtWidth').focus() ;	
+
+		alert( oEditor.FCKLang.DlgFLVPlayerAlertWidth ) ;
+		return false ;
+	}
+
+	if ( GetE('txtHeight').value.length == 0 )
+	{
+		GetE('txtHeight').focus() ;	
+
+		alert( oEditor.FCKLang.DlgFLVPlayerAlertHeight ) ;
+		return false ;
+	}
+
+
+	var e = (oMedia || new Media()) ;
+
+	updateMovie(e) ;
+
+	// Replace or insert?
+	if (!is_new_flvplayer) {
+		// Find parent..
+	        oSel = FCK.Selection.GetParentElement();
+		while (oSel != null && !oSel.id.match(/^player[0-9]*-parent$/)) {
+			oSel=oSel.parentNode;
+		}
+		// Found - So replace
+		if (oSel != null) {
+			oSel.parentNode.removeChild(oSel);
+			FCK.InsertHtml(e.getInnerHTML());
+		}
+	} else {
+		FCK.InsertHtml(e.getInnerHTML());
+	}
+
+	return true ;
+}
+
+
+function updateMovie(e){
+	e.fileType = GetE('rbFileType').value;
+	e.url = GetE('txtURL').value;
+	e.purl = GetE('txtPlaylist').value;
+	e.iurl = GetE('txtImgURL').value;
+	e.wmurl = GetE('txtWMURL').value;
+	e.bgcolor = GetE('txtBgColor').value;
+	e.toolcolor = GetE('txtToolbarColor').value;
+	e.tooltcolor = GetE('txtToolbarTxtColor').value;
+	e.tooltrcolor = GetE('txtToolbarTxtRColor').value;
+	e.width = (isNaN(GetE('txtWidth').value)) ? 0 : parseInt(GetE('txtWidth').value);
+	e.height = (isNaN(GetE('txtHeight').value)) ? 0 : parseInt(GetE('txtHeight').value);
+	e.loop = (GetE('chkLoop').checked) ? 'true' : 'false';
+	e.play = (GetE('chkAutoplay').checked) ? 'true' : 'false';
+	e.downloadable = (GetE('chkDownload').checked) ? 'true' : 'false';
+	e.fullscreen = (GetE('chkFullscreen').checked) ? 'true' : 'false';
+	e.displayNavigation = (GetE('chkShowNavigation').checked) ? 'true' : 'false';
+	e.displayDigits = (GetE('chkShowDigits').checked) ? 'true' : 'false';
+	e.align =	GetE('selAlign').value;
+	e.dispPlaylist =	GetE('selDispPlaylist').value;
+	e.rurl = GetE('txtRURL').value;
+	e.playlistDim = GetE('txtPLDim').value;
+	e.playlistThumbs = (GetE('chkPLThumbs').checked) ? 'true' : 'false';
+}
+
+
+function BrowseServer()
+{
+	OpenServerBrowser(
+		'flv',
+		oEditor.FCKConfig.MediaBrowserURL,
+		oEditor.FCKConfig.MediaBrowserWindowWidth,
+		oEditor.FCKConfig.MediaBrowserWindowHeight ) ;
+}
+
+
+function LnkBrowseServer()
+{
+	OpenServerBrowser(
+		'link',
+		oEditor.FCKConfig.LinkBrowserURL,
+		oEditor.FCKConfig.LinkBrowserWindowWidth,
+		oEditor.FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function Lnk2BrowseServer()
+{
+	OpenServerBrowser(
+		'link2',
+		oEditor.FCKConfig.LinkBrowserURL,
+		oEditor.FCKConfig.LinkBrowserWindowWidth,
+		oEditor.FCKConfig.LinkBrowserWindowHeight ) ;
+}
+
+function img1BrowseServer()
+{
+	OpenServerBrowser(
+		'img1',
+		oEditor.FCKConfig.ImageBrowserURL,
+		oEditor.FCKConfig.ImageBrowserWindowWidth,
+		oEditor.FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+function img2BrowseServer()
+{
+	OpenServerBrowser(
+		'img2',
+		oEditor.FCKConfig.ImageBrowserURL,
+		oEditor.FCKConfig.ImageBrowserWindowWidth,
+		oEditor.FCKConfig.ImageBrowserWindowHeight ) ;
+}
+
+
+function OpenServerBrowser( type, url, width, height )
+{
+	sActualBrowser = type ;
+	OpenFileBrowser( url, width, height ) ;
+}
+
+var sActualBrowser ;
+
+
+function SetUrl( url ) {
+	if ( sActualBrowser == 'flv' ) {
+		document.getElementById('txtURL').value = url ;
+		GetE('txtHeight').value = GetE('txtWidth').value = '' ;
+	} else if ( sActualBrowser == 'link' ) {
+		document.getElementById('txtPlaylist').value = url ;
+	} else if ( sActualBrowser == 'link2' ) {
+		document.getElementById('txtRURL').value = url ;
+	} else if ( sActualBrowser == 'img1' ) {
+		document.getElementById('txtImgURL').value = url ;
+	} else if ( sActualBrowser == 'img2' ) {
+		document.getElementById('txtWMURL').value = url ;
+	}
+}
+
+
+
+
+var Media = function (o){
+	this.fileType = '';
+	this.url = '';
+	this.purl = '';
+	this.iurl = '';
+	this.wmurl = '';
+	this.width = '';
+	this.height = '';
+	this.loop = '';
+	this.play = '';
+	this.downloadable = '';
+	this.fullscreen = true;
+	this.bgcolor = '';
+	this.toolcolor = '';
+	this.tooltcolor = '';
+	this.tooltrcolor = '';
+	this.displayNavigation = true;
+	this.displayDigits = true;
+	this.align = '';
+	this.dispPlaylist = '';
+	this.rurl = '';
+	this.playlistDim = '';
+	this.playlistThumbs = '';
+
+	if (o) 
+		this.setObjectElement(o);
+};
+
+Media.prototype.setObjectElement = function (e){
+	if (!e) return ;
+	this.width = GetAttribute( e, 'width', this.width );
+	this.height = GetAttribute( e, 'height', this.height );
+};
+
+Media.prototype.setAttribute = function(attr, val) {
+	if (val=="true") {
+		this[attr]=true;
+	} else if (val=="false") {
+		this[attr]=false;
+	} else {
+		this[attr]=val;
+	}
+};
+
+Media.prototype.getInnerHTML = function (objectId){
+	var randomnumber = Math.floor(Math.random()*1000001);
+	var thisWidth = this.width;
+	var thisHeight = this.height;
+
+	var thisMediaType = "single";
+	if (GetE('rbFileType').checked == false) {
+		thisMediaType = "mpl";
+	}
+
+	// Align
+	var cssalign='';
+	var cssfloat='';
+	if (this.align=="center") {
+		cssalign='margin-left: auto;margin-right: auto;';
+	} else if (this.align=="right") {
+		cssfloat='float: right;';
+	} else if (this.align=="left") {
+		cssfloat='float: left;';
+	}
+
+	var s = "";
+	//s+= '<p>\n';
+	s+= '<div id="player' + randomnumber + '-parent" style="text-align: center;' + cssfloat + '">\n';
+	s+= '<div style="border-style: none; height: ' + thisHeight + 'px; width: ' + thisWidth + 'px; overflow: hidden; background-color: rgb(220, 220, 220); background-image: url(' + oEditor.FCKConfig.PluginsPath + 'flvPlayer/flvPlayer.gif); background-repeat:no-repeat; background-position:center;' + cssalign + '">';
+	s+= '<script src="' + oEditor.FCKConfig.PluginsPath + 'flvPlayer/swfobject.js" type="text/javascript"></script>\n';
+	s+= '<div id="player' + randomnumber + '">';
+	s+= '<a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.';
+	// Moved after info - Added width,height,overflow for MSIE7
+	s+= '<div id="player' + randomnumber + '-config" style="display: none;visibility: hidden;width: 0px;height:0px;overflow: hidden;">';
+	// Save settings
+	for (var i in this) {
+		if (!i || !this[i]) continue;
+	        if (!i.match(/(set|get)/)) {
+        	        s+=i+"="+this[i]+" ";
+        	}
+	}
+	s+= '</div>';
+	s+= '</div>';
+	s+= '<script type="text/javascript">\n';
+	//s+= '	//NOTE: FOR LIST OF POSSIBLE SETTINGS GOTO http://www.jeroenwijering.com/extras/readme.html\n';
+	s+= '	var s1 = new SWFObject("' + oEditor.FCKConfig.PluginsPath + 'flvPlayer/mediaplayer.swf","' + thisMediaType + '","' + thisWidth + '","' + thisHeight + '","7");\n';
+	s+= '	s1.addVariable("width","' + thisWidth + '");\n';
+	s+= '	s1.addVariable("height","' + thisHeight + '");\n';
+	s+= '	s1.addVariable("autostart","' + this.play + '");\n';
+
+	if (thisMediaType == 'mpl') {
+		s+= '	s1.addVariable("file","' + this.purl + '");\n';
+		s+= '	s1.addVariable("autoscroll","true");\n';
+		s+= '	s1.addParam("allowscriptaccess","always");\n';
+
+		var dispWidth = thisWidth
+		var dispHeight = thisHeight
+		var dispThumbs = false
+
+		if (this.dispPlaylist != "none") {
+			if (this.dispPlaylist == "right") {
+
+				if (this.playlistDim.length > 0) {
+					dispWidth = thisWidth - this.playlistDim
+					if (this.playlistDim < 100) {
+						dispThumbs = false
+					} else {
+						dispThumbs = true
+					}
+				} else {
+					if (thisWidth >= 550) {
+						dispWidth = thisWidth - 200
+						dispThumbs = true
+					} else if (thisWidth >= 450) {
+						dispWidth = thisWidth - 100
+						dispThumbs = false
+					} else if (thisWidth >= 350) {
+						dispWidth = thisWidth - 50
+						dispThumbs = false
+					}
+				}
+
+				s+= '	s1.addVariable("displaywidth","' + dispWidth + '");\n';
+			} else if (this.dispPlaylist == "below") {
+				dispThumbs = true
+				
+				if (this.playlistDim.length > 0) {
+					dispHeight = thisWidth - this.playlistDim
+				} else {
+					if (thisHeight >= 550) {
+						dispHeight = thisWidth - 200
+					} else if (thisHeight >= 450) {
+						dispHeight = thisHeight - 150
+					} else if (thisHeight >= 350) {
+						dispHeight = thisHeight - 100
+					}
+				}
+
+				s+= '	s1.addVariable("displayheight","' + dispHeight + '");\n';
+			}
+
+			if (this.playlistThumbs == "false") {
+				dispThumbs = false;
+			}
+				
+			s+= '	s1.addVariable("thumbsinplaylist","' + dispThumbs + '");\n';
+		}
+
+		s+= '	s1.addVariable("shuffle","false");\n';
+		if (this.loop == true) {
+			s+= '	s1.addVariable("repeat","list");\n';
+		} else {
+			s+= '	s1.addVariable("repeat","' + this.loop + '");\n';
+		}
+		s+= '	//s1.addVariable("transition","bgfade");\n';
+	} else {
+		s+= '	s1.addVariable("file","' + this.url + '");\n';
+		s+= '	s1.addVariable("repeat","' + this.loop + '");\n';
+		s+= '	s1.addVariable("image","' + this.iurl + '");\n';
+	}
+
+	s+= '	s1.addVariable("showdownload","' + this.downloadable + '");\n';
+	s+= '	s1.addVariable("link","' + this.url + '");\n';
+	s+= '	s1.addParam("allowfullscreen","' + this.fullscreen + '");\n';
+	s+= '	s1.addVariable("showdigits","' + this.displayDigits + '");\n';
+	s+= '	s1.addVariable("shownavigation","' + this.displayNavigation + '");\n';
+
+	// SET THE COLOR OF THE TOOLBAR
+	var colorChoice1 = this.toolcolor
+	if (colorChoice1.length > 0) {
+		colorChoice1 = colorChoice1.replace("#","0x")
+		s+= '	s1.addVariable("backcolor","' + colorChoice1 + '");\n';
+	}
+	// SET THE COLOR OF THE TOOLBARS TEXT AND BUTTONS
+	var colorChoice2 = this.tooltcolor
+	if (colorChoice2.length > 0) {
+		colorChoice2 = colorChoice2.replace("#","0x")
+		s+= '	s1.addVariable("frontcolor","' + colorChoice2 + '");\n';
+	}
+	//SET COLOR OF ROLLOVER TEXT AND BUTTONS
+	var colorChoice3 = this.tooltrcolor
+	if (colorChoice3.length > 0) {
+		colorChoice3 = colorChoice3.replace("#","0x")
+		s+= '	s1.addVariable("lightcolor","' + colorChoice3 + '");\n';
+	}
+	//SET COLOR OF BACKGROUND
+	var colorChoice4 = this.bgcolor
+	if (colorChoice4.length > 0) {
+		colorChoice4 = colorChoice4.replace("#","0x")
+		s+= '	s1.addVariable("screencolor","' + colorChoice4 + '");\n';
+	}
+
+	s+= '	s1.addVariable("logo","' + this.wmurl + '");\n';
+	if (this.rurl.length > 0) {
+		s+= '	s1.addVariable("recommendations","' + this.rurl + '");\n';
+	}
+
+	//s+= '	//s1.addVariable("largecontrols","true");\n';
+	//s+= '	//s1.addVariable("bufferlength","3");\n';
+	//s+= '	//s1.addVariable("audio","http://www.jeroenwijering.com/extras/readme.html");\n';
+
+	s+= '	s1.write("player' + randomnumber + '");\n';
+	s+= '</script>\n';
+	s+= '</div>\n';
+	s+= '</div>\n';
+	//s+= '</p>\n';
+
+	return s;
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function SelectColor1()
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectBackColor, window ) ;
+}
+
+function SelectColor2()
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectToolColor, window ) ;
+}
+
+function SelectColor3()
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectToolTextColor, window ) ;
+}
+
+function SelectColor4()
+{
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, SelectToolTextRColor, window ) ;
+}
+
+function SelectBackColor( color )
+{
+	if ( color && color.length > 0 ) {
+		GetE('txtBgColor').value = color ;
+		//updatePreview()
+	}
+}
+
+function SelectToolColor( color )
+{
+	if ( color && color.length > 0 ) {
+		GetE('txtToolbarColor').value = color ;
+		//updatePreview()
+	}
+}
+
+function SelectToolTextColor( color )
+{
+	if ( color && color.length > 0 ) {
+		GetE('txtToolbarTxtColor').value = color ;
+		//updatePreview()
+	}
+}
+
+function SelectToolTextRColor( color )
+{
+	if ( color && color.length > 0 ) {
+		GetE('txtToolbarTxtRColor').value = color ;
+		//updatePreview()
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/mediaplayer.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/mediaplayer.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/mediaplayer.html	(revision 1610)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<style type="text/css">
+	body { background-color: #fff; padding: 0 50px; color:#000; font: 13px/18px Arial, sans-serif; }
+	a { color: #069; }
+	h3 { padding-top: 50px; }
+	ol { margin:5px 0 15px 16px; padding:0; list-style-type:square; }
+</style>
+</head>
+<body>
+
+
+<h3>Example</h3>
+<p>Here's a simple example of the mediaplayer embedded in a page. Copy-paste the code to get started.</p>
+
+
+
+<div id="container"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>
+<script type="text/javascript" src="swfobject.js"></script>
+<script type="text/javascript">
+	var s1 = new SWFObject("mediaplayer.swf","mediaplayer","300","170","7");
+	s1.addParam("allowfullscreen","true");
+	s1.addVariable("width","300");
+	s1.addVariable("height","170");
+	s1.addVariable("file","video.flv");
+	s1.addVariable("image","video.jpg");
+	s1.write("container");
+</script>
+
+
+
+<h3 id="documentation">Documentation</h3>
+<p>The easiest way to get going with the mediaplayer is <a href="http://www.jeroenwijering.com/?page=wizard" title="the flv mp3 media player wizard">by using the setup wizard</a>. Select an example, set the file or playlist you want to play and copy-paste the embed code to your site! If you want to learn more, here's the complete documentation:</p>
+<ol>
+<li>All <a href="http://www.jeroenwijering.com/?item=Supported_Flashvars" title="All Flashvars supported by the FLV Media Player">supported flashvars</a> (variables) you can set to customize the mediaplayer.</li>
+<li>All <a href="http://www.jeroenwijering.com/?item=Supported_Playlists" title="All playlist formats by the FLV Media Player">supported playlist formats</a> you can use, plus some implementation info.</li>
+<li>A large list <a href="http://www.jeroenwijering.com/?item=Third_Party_Plugins" title="WordPress, Joomla, Drupal, CMS Plugins">of all third-party plugins</a> for the mediaplayer.<br/>&nbsp;</li>
+<li>A tutorial on <a href="http://www.jeroenwijering.com/?item=Embedding_Flash" title="embedding Flash"> embedding the mediaplayer</a> in your site.</li>
+<li>A tutorial with <a href="http://www.jeroenwijering.com/?item=Javascript_interaction" title="Javascript interaction">all functions of the javascript API</a>.</li>
+<li>A tutorial on <a href="http://www.jeroenwijering.com/?item=Making_Video_Accessible" title="W3C video Accessibility and the player">adding captions and an audiodescription</a> (accessibility).</li>
+</ol>
+
+
+
+</body>
+</html>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/readme.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/readme.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/readme.html	(revision 1610)
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<title>Untitled Document</title>
+<style type="text/css">
+<!--
+.style1 {color: #FF6600}
+.style3 {color: #333399}
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+}
+-->
+</style>
+</head>
+
+<body>
+<h1>flvPlayer - A plugin for FCKeditor</h1>
+<h3>Overview</h3>
+<blockquote>
+  <p>The flvPlayer plugin allows you to add and configure a small media player that playes flv and mp3's.</p>
+</blockquote>
+<h3>Installation and Configuration </h3>
+<ol>
+  <li>Unzip the files into the plugins folder.</li>
+  <li>Configure the editor to see the plugin. In your editor configuration file, add the line below:<br />
+    <br />
+    <span class="style1">FCKConfig.Plugins.Add( 'flvPlayer','en') ;</span><br />
+  <br />
+  </li>
+  <li>Add the toolbar button to your preferred menu.<br />
+    <br />
+    <span class="style1">FCKConfig.ToolbarSets[    &quot;Default&quot;] = [<br />
+    ['Source','DocProps','-','Save','NewPage','Preview','-','Templates',<span class="style3">'flvPlayer'</span>],</span><br />
+    <br />
+  </li>
+  <li>Save and upload your configuration file. If all goes well, you should see the flvPlayer icon <img src="flvPlayer.gif" alt="flvPlayer" width="16" height="16" />on your toolbar. </li>
+</ol>
+<p>&nbsp; </p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/JW_FLV_MEDIA_PLAYER_README.HTML
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/JW_FLV_MEDIA_PLAYER_README.HTML	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/JW_FLV_MEDIA_PLAYER_README.HTML	(revision 1610)
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+
+	<title>JW FLV Media Player</title>
+
+	<style type="text/css">
+		body { background-color: #fff; padding: 0 25px; color:#000; font: 13px/18px Arial, sans-serif; }
+		a { color: #360; }
+		h3 { padding-top: 50px; }
+		ol { margin:5px 0 15px 16px; padding:0; list-style-type:square; }
+	</style>
+
+</head>
+<body>
+
+	<h3>Example</h3>
+	<p>Here's a simple example of the <a href="http://www.jeroenwijering.com/?item=JW_FLV_Media_Player">JW FLV Media Player</a> embedded in a page. Copy-paste the source code and put the files on your site to get started.</p>
+
+
+
+
+	<div id="container"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>
+	<script type="text/javascript" src="swfobject.js"></script>
+	<script type="text/javascript">
+		var s1 = new SWFObject("mediaplayer.swf","mediaplayer","300","185","8");
+		s1.addParam("allowfullscreen","true");
+		s1.addVariable("width","300");
+		s1.addVariable("height","185");
+		s1.addVariable("file","video.flv");
+		s1.write("container");
+	</script>
+
+
+
+	<h3>Quickstart</h3>
+	<p>The easiest way to get going with the mediaplayer is <a href="http://www.jeroenwijering.com/?page=wizard">by using the setup wizard</a>. Select an example, set the file or playlist you want to play and copy-paste the embed code to your site!</p>
+
+	<h3>Licensing</h3>
+	<p>The FLV Media Player is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">Creative Commons License</a>. It allows you to use, modify and redistribute the script for free for noncommercial purposes. For corporate use, <a href="http://www.jeroenwijering.com/?page=order" title="Order commercial licenses">please apply for a 20 euros commercial license</a>!</p>
+
+	<h3>Documentation</h3>
+	<ol>
+	<li>All <a href="http://www.jeroenwijering.com/?item=Supported_Flashvars">supported flashvars</a> (variables) you can set to customize the mediaplayer.</li>
+	<li>All <a href="http://www.jeroenwijering.com/?item=Supported_Playlists">supported playlist formats</a> you can use, plus some implementation info.</li>
+	<li>A large list <a href="http://www.jeroenwijering.com/?item=Third_Party_Plugins">of all third-party plugins</a> for the mediaplayer.</li>
+	<li>A tutorial on <a href="http://www.jeroenwijering.com/?item=Embedding_Flash"> embedding the mediaplayer</a> in your site.</li>
+	<li>A tutorial with <a href="http://www.jeroenwijering.com/?item=Javascript_interaction">all functions of the javascript API</a>.</li>
+	<li>A tutorial on <a href="http://www.jeroenwijering.com/?item=Making_Video_Accessible">adding captions and an audiodescription</a> (accessibility).</li>
+	</ol>
+
+</body>
+</html>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_xspf_sample.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_xspf_sample.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_xspf_sample.xml	(revision 1610)
@@ -0,0 +1,57 @@
+<playlist version="1" xmlns="http://xspf.org/ns/0/">
+	<title>XSPF Example Playlist</title>
+	<info>http:/xspf.org/xspf-v1.html</info>
+	<trackList>
+
+		<track>
+			<title>Afraid of the Dark</title>
+			<location>http://www.jeroenwijering.com/upload/afraid.flv</location>
+		</track>
+
+		<track>
+			<title>Sunshine up Ahead</title>
+			<creator>Peter Jones</creator>
+			<location>http://www.jeroenwijering.com/upload/peterjones_sunshine_lofi.mp3</location>
+			<info>http://www.peterjonesmusic.net/</info>
+			<image>http://www.jeroenwijering.com/upload/peterjones.jpg</image>
+		</track>
+
+		<track>
+			<title>Aggressive Wallpaper</title>
+			<creator>Jeroen Wijering</creator>
+			<annotation>
+				This is an aggressive wallpaper for public spaces where you don't want 
+				people to linger around (eg. subway tunnels or parking lots). People 
+				feel offended by the aggressive wallpaper and make sure they get out 
+				of these places as soon as their business is done there.
+			</annotation>
+			<location>http://www.jeroenwijering.com/upload/behang.jpg</location>
+			<info>http://www.jeroenwijering.com/?item=Aggressive_Wallpaper</info>
+			<meta rel="duration">12.5</meta>
+		</track>
+
+
+		<track>
+			<title>ITV's Coronation Street</title>
+			<annotation>
+				This example features accessibility content 
+				(closed captions and a descriptive audiotrack).
+			</annotation>
+			<info>http://www.jeroenwijering.com/?item=Making_Video_Accessible</info>
+			<location>http://www.jeroenwijering.com/upload/corrie.flv</location>
+			<image>http://www.jeroenwijering.com/upload/corrie.jpg</image>
+			<meta rel="captions">http://www.jeroenwijering.com/upload/corrie.xml</meta>
+			<meta rel="audio">http://www.jeroenwijering.com/upload/corrie.mp3</meta>
+			<meta rel="duration">00:00:45</meta>
+		</track>
+
+		<track>
+			<title>Bleed It Out</title>
+			<creator>Linkin Park</creator>
+			<location>upload/media/04 Bleed It Out.mp3</location>
+			<info>http://www.linkinpark.com/</info>
+			<image>upload/image/Sample_Preview.jpg</image>
+		</track>
+
+	</trackList>
+</playlist>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.html	(revision 1610)
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FLV Movie Player</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="../../dialog/common/fck_dialog_common.js" type="text/javascript"></script>
+		<script src="flvPlayer.js" type="text/javascript"></script>
+		<link href="../../dialog/common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<style>
+			body, td, input, textarea, select, label {font-family: Verdana, Geneva, Arial, helvetica, sans-serif; font-size: 10px; }
+		</style>
+		<script type="text/javascript">
+		<!--
+		document.writeln(FCK.TempBaseTag);
+		-->
+		</script>
+	</head>
+	<body scroll="no">
+		<div id="divInfo">
+			<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
+				<tr>
+					<td valign="top" colspan=3>
+						<fieldset>
+							<legend><span fcklang="DlgFLVPlayerFileType">File Type</span></legend>
+							<input type="radio" id="rbFileType" name="rbFileType" value="single" onclick="btnBrowse.disabled=false; btnImgBrowse.disabled=false; btnLnkBrowse.disabled=true; txtURL.disabled=false; txtImgURL.disabled=false; txtPlaylist.disabled=true; txtPlaylist.value=''; txtURL.style.background='#ffffff'; txtImgURL.style.background='#ffffff'; txtPlaylist.style.background='transparent'; selDispPlaylist.disabled=true;" checked="checked" />&nbsp;<span fckLang="DlgFLVPlayerSingleFile">Single File</span><br>
+							<input type="radio" id="rbFileType" name="rbFileType" value="list" onclick="btnBrowse.disabled=true; btnImgBrowse.disabled=true; btnLnkBrowse.disabled=false; txtURL.disabled=true; txtImgURL.disabled=true; txtPlaylist.disabled=false; txtURL.value=''; txtImgURL.value=''; txtURL.style.background='transparent'; txtImgURL.style.background='transparent'; txtPlaylist.style.background='#ffffff'; selDispPlaylist.disabled=false;" />&nbsp;<span fckLang="DlgFLVPlayerPlaylistFile">Playlist</span>
+						</fieldset>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" colspan=3>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">								
+									<span fckLang="DlgFLVPlayerURL">.FLV Movie</span><br>
+									<input style="WIDTH: 100%" type="text" id="txtURL">
+								</td>
+								<td id="tdBrowse" valign="bottom" nowrap>
+									<input type="button" fckLang="DlgFLVPlayerBtnBrowse" value="Browse Server" onclick="BrowseServer();" id="btnBrowse">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" colspan=3>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">								
+									<span fckLang="DlgFLVPlayerImgURL">Preview Image</span><br>
+									<input style="WIDTH: 100%" type="text" id="txtImgURL">
+								</td>
+								<td id="tdBrowse" valign="bottom" nowrap>
+									<input type="button" fckLang="DlgFLVPlayerBtnBrowse" value="Browse Server" onclick="img1BrowseServer();" id="btnImgBrowse">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top" colspan=3>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">								
+									<span fckLang="DlgFLVPlayerPlaylistURL">Playlist URL</span><br>
+									<input style="WIDTH: 100%" type="text" id="txtPlaylist" style="background:transparent;" disabled>
+								</td>
+								<td id="tdBrowse" valign="bottom" nowrap>
+									<input type="button" fckLang="DlgFLVPlayerBtnBrowse" value="Browse Server" onclick="LnkBrowseServer();" id="btnLnkBrowse" disabled>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+
+				<tr>
+					<td valign="top" colspan=3>&nbsp;</td>
+				</tr>
+				<tr>
+					<td valign="top" width="50%">
+						<fieldset>
+							<legend><span fcklang="DlgFLVPlayerMovieAttrs">Movie Attributes</span></legend>
+								<table cellspacing="0" cellpadding="0" width="100%" border="0">
+									<tr>
+										<td valign="top" colspan=2>
+											<table cellspacing="0" cellpadding="0" width="100%" border="0">
+												<tr>
+													<td valign="top" width="100%">								
+														<span fckLang="DlgFLVPlayerWatermarkURL">Watermark Image</span><br>
+														<input style="WIDTH: 100%" type="text" id="txtWMURL">
+													</td>
+													<td id="tdBrowse" valign="bottom" nowrap>
+														<input type="button" fckLang="DlgFLVPlayerBtnBrowse" value="Browse Server" onclick="img2BrowseServer();" id="btnImg2Browse">
+													</td>
+												</tr>
+											</table>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<table cellspacing="0" cellpadding="0" width="100%" border="0">
+												<tr>
+													<td valign="top" width="100%">								
+														<span fckLang="DlgFLVPlayerRecommendURL">Recommendations List</span><br>
+														<input style="WIDTH: 100%" type="text" id="txtRURL">
+													</td>
+													<td id="tdBrowse" valign="bottom" nowrap>
+														<input type="button" fckLang="DlgFLVPlayerBtnBrowse" value="Browse Server" onclick="Lnk2BrowseServer();" id="btnLnk2Browse">
+													</td>
+												</tr>
+											</table>
+										</td>
+									</tr>
+
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" id="chkAutoplay">
+											<span fckLang="DlgFLVPlayerAutoplay">Autoplay</span>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" id="chkLoop">
+											<span fckLang="DlgFLVPlayerLoop">Loop</span>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" checked id="chkDownload">
+											<span fckLang="DlgFLVPlayerDownload">Downloadable</span>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" checked id="chkFullscreen">
+											<span fckLang="DlgFLVPlayerFullscreen">Allow Fullscreen</span>
+										</td>
+									</tr>
+									<tr>
+										<td><span fckLang="DlgFLVPlayerDispPlaylist">Display Playlist</span>&nbsp;</td>
+										<td>
+											<select name="selDispPlaylist" id="selDispPlaylist" style="width:120px;" disabled onchange="updatePlaylistOption();">
+												<option fckLang="DlgFLVPlayerDispPLNone" value="none" selected>None</option>
+												<option fckLang="DlgFLVPlayerDispPLRight" value="right">Right</option>
+												<option fckLang="DlgFLVPlayerDispPLBelow" value="below">Below</option>
+											</select>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top"><span id="spanDimText" fckLang="DlgFLVPlaylistDimText">Playlist Dimension</span><span id="spanDimWText" fckLang="DlgFLVPlaylistWidth" style="display: none;">Playlist Width (px)</span><span id="spanDimHText" fckLang="DlgFLVPlaylistHeight" style="display: none;">Playlist Height (px)</span>&nbsp;</td>
+										<td valign="top"><input type="text" size="5" id="txtPLDim" style="background:transparent;" disabled></td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" id="chkPLThumbs" disabled>
+											<span fckLang="DlgFLVPlayerPLThumbs">Display Thumbnails in Playlist</span>
+										</td>
+									</tr>
+
+								</table>
+						</fieldset>
+					</td>
+					<td valign="top">&nbsp;</td>
+					<td valign="top" width="50%">
+						<fieldset>
+							<legend><span fcklang="DlgFLVPlayerPlayerAttrs">Player Attributes</span></legend>
+								<table cellspacing="0" cellpadding="0" width="100%" border="0">
+									<tr>
+										<td valign="top"><span fckLang="DlgFLVPlayerWidth">Movie Width (px)</span>&nbsp;</td>
+										<td valign="top"><input type="text" size="5" id="txtWidth"></td>
+									</tr>
+									<tr>
+										<td valign="top"><span fckLang="DlgFLVPlayerHeight">Movie Height (px)</span>&nbsp;</td>
+										<td valign="top"><input type="text" size="5" id="txtHeight"></td>
+									</tr>
+									<tr> 
+										<td><span fckLang="DlgFLVPlayerBgColor">Bg Color</span>&nbsp;</td>
+										<td><input id="txtBgColor" type="text" size="8">
+										<input type="button" fckLang="DlgFLVPlayerBtnSelect" value="Select..." onclick="SelectColor1()">
+										</td>
+									</tr>
+									<tr> 
+										<td><span fckLang="DlgFLVPlayerTBColor">Toolbar Color</span>&nbsp;</td>
+										<td><input id="txtToolbarColor" type="text" size="8">
+										<input type="button" fckLang="DlgFLVPlayerBtnSelect" value="Select..." onclick="SelectColor2()">
+										</td>
+									</tr>
+									<tr> 
+										<td><span fckLang="DlgFLVPlayerTBTColor">Toolbar Text Color</span>&nbsp;</td>
+										<td><input id="txtToolbarTxtColor" type="text" size="8">
+										<input type="button" fckLang="DlgFLVPlayerBtnSelect" value="Select..." onclick="SelectColor3()">
+										</td>
+									</tr>
+									<tr> 
+										<td><span fckLang="DlgFLVPlayerTBTRColor">Toolbar Text Rollover Color</span>&nbsp;</td>
+										<td><input id="txtToolbarTxtRColor" type="text" size="8">
+										<input type="button" fckLang="DlgFLVPlayerBtnSelect" value="Select..." onclick="SelectColor4()">
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" checked id="chkShowNavigation">
+											<span fckLang="DlgFLVPlayerShowNavigation">Display Navigation</span>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>
+											<input type="checkbox" class="CheckBox" checked id="chkShowDigits">
+											<span fckLang="DlgFLVPlayerShowDigits">Display Time</span>
+										</td>
+									</tr>
+									<tr>
+										<td><span fckLang="DlgFLVPlayerAlign">Align</span>&nbsp;</td>
+										<td>
+											<select name="selAlign" id="selAlign" style="width:120px;">
+												<option fckLang="DlgFLVPlayerAlignLeft" value="left" selected>Left</option>
+												<option fckLang="DlgFLVPlayerAlignCenter" value="center">Center</option>
+												<option fckLang="DlgFLVPlayerAlignRight" value="right">Right</option>
+											</select>
+										</td>
+									</tr>
+									<tr>
+										<td valign="top" colspan=2>&nbsp;</td>
+									</tr>
+								</table>
+						</fieldset>
+					</td>
+				</tr>
+		  </table>
+		</div>
+		<script type="text/javascript">window_onload();</script>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/mediaplayer.swf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/mediaplayer.swf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_recommendations_sample.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_recommendations_sample.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_recommendations_sample.xml	(revision 1610)
@@ -0,0 +1,33 @@
+<recommendations>
+
+	<recommendation>
+		<title>Reporting screenshot from Mint</title>
+		<image>http://www.jeroenwijering.com/upload/thumb1.jpg</image>
+		<link>http://www.haveamint.com</link>
+	</recommendation>
+
+	<recommendation>
+		<title>Joost introduction video</title>
+		<image>http://www.jeroenwijering.com/upload/thumb2.jpg</image>
+		<link>http://www.joost.com</link>
+	</recommendation>
+
+	<recommendation>
+		<title>The one and only VideoEgg egg</title>
+		<image>http://www.jeroenwijering.com/upload/thumb3.jpg</image>
+		<link>http://www.videoegg.com</link>
+	</recommendation>
+
+	<recommendation>
+		<title>Cool long-exposure video from Flickr</title>
+		<image>http://www.jeroenwijering.com/upload/thumb4.jpg</image>
+		<link>http://www.flickr.com</link>
+	</recommendation>
+
+	<recommendation>
+		<title>Extreme closeup of the MT logo</title>
+		<image>http://www.jeroenwijering.com/upload/thumb5.jpg</image>
+		<link>http://www.movabletype.com</link>
+	</recommendation>
+
+</recommendations>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_rss_sample.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_rss_sample.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/flvPlayer_rss_sample.xml	(revision 1610)
@@ -0,0 +1,52 @@
+<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss">
+	<channel>
+		<title>RSS  Example Playlist</title>
+		<link>http://cyber.law.harvard.edu/rss/rss.html</link>
+
+		<item>
+			<title>Afraid of the dark</title>
+			<enclosure url="http://www.jeroenwijering.com/upload/afraid.flv" type="video/x-flv" />
+		</item>
+
+		<item>
+			<title>Sunshine up Ahead</title>
+			<author>Peter Jones</author>
+			<link>http://www.peterjonesmusic.net/</link>
+			<media:content url="http://www.jeroenwijering.com/upload/peterjones_sunshine_lofi.mp3" type="audio/mpeg"/>
+			<media:thumbnail href="http://www.jeroenwijering.com/upload/peterjones.jpg" />
+		</item>
+
+		<item>
+			<title>Aggressive Wallpaper</title>
+			<author>Jeroen Wijering</author>
+			<link>http://www.jeroenwijering.com/?item=Aggressive_Wallpaper</link>
+			<description>
+				This is an aggressive wallpaper for public spaces where you don't want 
+				people to linger around (eg. subway tunnels or parking lots). People 
+				feel offended by the aggressive wallpaper and make sure they get out 
+				of these places as soon as their business is done there.
+			</description>
+			<media:content url="http://www.jeroenwijering.com/upload/behang.jpg" type="image/jpeg" duration="12.5"/>
+		</item>
+
+		<item>
+			<title>ITV's Coronation Street</title>
+			<link>http://www.jeroenwijering.com/?item=Making_Video_Accessible</link>
+			<description>
+				Unfortunately, accessibility content cannot be included with the RSS file format. 
+				The SMIL format is more suitable for this type of playlists.
+			</description>
+			<media:content url="http://www.jeroenwijering.com/upload/corrie.flv" type="video/x-flv" duration="00:00:45"/>
+			<media:thumbnail url="http://www.jeroenwijering.com/upload/corrie.jpg"/>
+		</item>
+
+		<item>
+			<title>Bleed It Out</title>
+			<author>Linkin Park</author>
+			<link>http://www.linkinpark.com/</link>
+			<media:content url="upload/media/04 Bleed It Out.mp3" type="audio/mpeg"/>
+			<media:thumbnail href="upload/image/Sample_Preview.jpg" />
+		</item>
+
+	</channel>
+</rss>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/flvPlayer/fckplugin.js	(revision 1610)
@@ -0,0 +1,12 @@
+﻿// Register the related commands.
+var dialogPath = FCKConfig.PluginsPath + 'flvPlayer/flvPlayer.html';
+var flvPlayerDialogCmd = new FCKDialogCommand( FCKLang["DlgFLVPlayerTitle"], FCKLang["DlgFLVPlayerTitle"], dialogPath, 600, 520 );
+FCKCommands.RegisterCommand( 'flvPlayer', flvPlayerDialogCmd ) ;
+
+// Create the Flash toolbar button.
+var oFlvPlayerItem		= new FCKToolbarButton( 'flvPlayer', FCKLang["DlgFLVPlayerTitle"]) ;
+oFlvPlayerItem.IconPath	= FCKPlugins.Items['flvPlayer'].Path + 'flvPlayer.gif' ;
+
+FCKToolbarItems.RegisterItem( 'flvPlayer', oFlvPlayerItem ) ;			
+// 'Flash' is the name used in the Toolbar config.
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.css	(revision 1610)
@@ -0,0 +1,35 @@
+#fckComment a, #fckComment a:visited {
+	position: relative;
+	text-decoration: none;
+	border: 0;
+}
+
+#fckComment a span {
+	display:none;
+}
+
+#fckComment a:hover {
+	color: #d00;
+	border: 0px solid #fff;
+}
+
+#fckComment a img {	
+	border: 0;
+	height: 20px;
+	width: 20px;
+}
+
+#fckComment a:hover span {
+	text-align:left;	
+	display:block;
+	border:1px solid #CCCCCC;
+	position: absolute;
+	top: 0px;
+	left: 20px;
+	width: 300px;
+	padding:5px;	
+	color:#000000;
+	background-color:#FFFFCC;
+	opacity: 0.8;
+	filter:alpha(opacity=80);
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/nl.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/nl.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/nl.js	(revision 1610)
@@ -0,0 +1,6 @@
+FCKLang.WBDropletsBtn			= 'WB droplets toevoegen' ;
+FCKLang.WBDropletsDlgTitle		= 'WB droplets' ;
+FCKLang.WBDropletsDlgName		= 'Website Baker droplet toevoegen' ;
+FCKLang.WBDropletsErrPageSelect		= 'Eerst een droplet selecteren' ;
+FCKLang.WBDropletslblPageSelection	= 'Selecteer een droplet:';
+FCKLang.WBDropletslblTitle		= 'Titel';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/nl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/en.js	(revision 1610)
@@ -0,0 +1,6 @@
+FCKLang.WBDropletsBtn			= 'Insert WB Droplets into page' ;
+FCKLang.WBDropletsDlgTitle		= 'WB Droplets' ;
+FCKLang.WBDropletsDlgName		= 'Website Baker droplet insert' ;
+FCKLang.WBDropletsErrPageSelect		= 'Please select a Droplet to insert on page' ;
+FCKLang.WBDropletslblPageSelection	= 'Select a Droplet to insert on page:';
+FCKLang.WBDropletslblTitle		= 'Title';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/en.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/de.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/de.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/de.js	(revision 1610)
@@ -0,0 +1,6 @@
+FCKLang.WBDropletsBtn			= 'WB Droplets einf\u00fcgen' ;
+FCKLang.WBDropletsDlgTitle		= 'WB Droplets' ;
+FCKLang.WBDropletsDlgName		= 'Website Baker Droplet einf\u00fcgen' ;
+FCKLang.WBDropletsErrPageSelect		= 'Bitte eine Droplet markieren, das eingef\u00fcgt werden soll!' ;
+FCKLang.WBDropletslblPageSelection	= 'Auswahlfenster der m\u00f6glichen Droplets:';
+FCKLang.WBDropletslblTitle		= 'Titel:';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/lang/de.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.js	(revision 1610)
@@ -0,0 +1,8 @@
+// Function to set special attributes. Copied from FCK Core function
+function SetAttribute( element, attName, attValue )
+{
+	if ( attValue == null || attValue.length == 0 )
+		element.removeAttribute( attName, 0 ) ;			// 0 : Case Insensitive
+	else
+		element.setAttribute( attName, attValue, 0 ) ;	// 0 : Case Insensitive
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckwbdroplets.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckplugin.js	(revision 1610)
@@ -0,0 +1,30 @@
+/* 
+ *  FCKPlugin.js
+ *  ------------
+ *  This is a generic file which is needed for plugins that are developed
+ *  for FCKEditor. With the below statements that toolbar is created and
+ *  several options are being activated.
+ *
+ *  See the online documentation for more information:
+ *  http://wiki.fckeditor.net/
+*/
+
+// Register the related commands.
+FCKCommands.RegisterCommand(
+	'WBDroplets',
+	new FCKDialogCommand(
+		'WBDroplets',
+		FCKLang["WBDropletsDlgTitle"],
+		FCKPlugins.Items['WBDroplets'].Path + 'fck_wbdroplets.php',
+		370,
+		370
+	)
+);
+ 
+// Create the "WBModules" toolbar button.
+// FCKToolbarButton( commandName, label, tooltip, style, sourceView, contextSensitive )
+var oWBModulesItem = new FCKToolbarButton( 'WBDroplets', FCKLang["WBDropletsBtn"], null, null, false, true ); 
+oWBModulesItem.IconPath = FCKConfig.PluginsPath + 'WBDroplets/wbdroplets.gif'; 
+
+// 'CMSContent' is the name that is used in the toolbar config.
+FCKToolbarItems.RegisterItem( 'WBDroplets', oWBModulesItem );
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fckplugin.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fck_wbdroplets.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fck_wbdroplets.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fck_wbdroplets.php	(revision 1610)
@@ -0,0 +1,65 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Include the config file
+require('../../../../../../config.php');
+
+// Create new admin object
+require(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify', false);
+
+// Setup the template
+$template = new Template(WB_PATH.'/modules/fckeditor/fckeditor/editor/plugins/WBDroplets');
+$template->set_file('page', 'wbdroplets.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Get pages and put them into the pages list
+$template->set_block('main_block', 'droplets_list_block', 'page_list');
+$get_droplet = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_droplets where active=1 ORDER BY name");
+if($get_droplet->numRows() > 0) {
+	// Loop through pages
+	$list = "";
+	while($droplet = $get_droplet->fetchRow()) {
+		// method page_is_visible was introduced with WB 2.7
+		$title = stripslashes($droplet['name']);
+		$desc = stripslashes($droplet['description']);
+		$comm = stripslashes($droplet['comments']);
+		$template->set_var('TITLE', $title);
+		$template->set_var('DESC', $desc);
+		$list .= "<div id='".$title."' class='hidden'><b>".$title.": </b> ".$desc."<br>".$comm."</div>";
+		$template->parse('page_list', 'droplets_list_block', true);
+	}
+} else {
+	$template->set_var('TITLE', 'None found');
+	$template->parse('page_list', 'droplets_list_block', false);
+}
+$template->set_var('LIST', $list);
+$template->set_var("CHARSET", defined('DEFAULT_CHARSET') ? DEFAULT_CHARSET : 'utf-8' );
+
+// Parse the template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/fck_wbdroplets.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.htt
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.htt	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.htt	(revision 1610)
@@ -0,0 +1,101 @@
+<!-- BEGIN main_block -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	<head>
+		<title>WB Link - Insert Website Baker Droplet</title>
+		<meta http-equiv="Content-Type" content="text/html; charset={CHARSET}" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script type="text/javascript" src="fckwbdroplets.js"></script>
+		<script type="text/javascript">
+		<!--
+			var oEditor			= window.parent.InnerDialogLoaded(); 
+			var FCK				= oEditor.FCK; 
+			var FCKLang			= oEditor.FCKLang ;
+			var FCKConfig		= oEditor.FCKConfig ;
+			//var FCKCMSCCMSModules	= oEditor.FCKCMSModules; 
+			 
+			// oLink: The actual selected link in the editor.
+			var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+			if ( oLink )
+				FCK.Selection.SelectNode( oLink ) ;
+	
+			window.onload = function ()	{ 
+				// First of all, translates the dialog box texts.
+				oEditor.FCKLanguageManager.TranslatePage(document);
+				
+				window.parent.SetOkButton( true );		//Show the "Ok" button. 
+				
+			} 
+			 
+			//If an anchor (A) object is currently selected, load the properties into the dialog 
+			function LoadSelected()	{
+				var sSelected;
+				
+				if ( oEditor.FCKBrowserInfo.IsGecko ) {
+					sSelected = FCK.EditorWindow.getSelection();
+				} else {
+					sSelected = FCK.EditorDocument.selection.createRange().text;
+				}
+			}
+
+			//Code that runs after the OK button is clicked 
+			function Ok() {
+				//Validate is option is selected
+				var oDropletList = document.getElementById( 'cmbDroplets' ) ;
+				if(oDropletList.selectedIndex == -1) {
+					alert( FCKLang.WBDropletsErrPageSelect );
+					return false;
+				}
+				
+				var oTagLink = document.getElementById( 'chkTaglink' );
+				
+				var sDropletStr = oDropletList[oDropletList.selectedIndex].value;
+				FCK.InsertHtml("[[" + sDropletStr + "]]");
+				// the following line was commented out as it creates an error message in some browser (e.g. IE)
+				// even Firefox seems not to make use of the title so we remove this option for know (doc)
+				// SetAttribute( oLink, 'title', document.getElementById( 'txtTitle' ).value ) ;
+			return true;
+
+			}
+			
+			var oldid = 'LoginBox';
+			
+			function showdetail(obj) {
+				var olditem = document.getElementById(oldid);
+				var newitem = document.getElementById(obj.value);
+				olditem.className='hidden';
+				newitem.className='unhidden';
+				oldid = obj.value;
+			}
+		//-->
+		</script>
+		<style>
+			.hidden { display: none; }
+			.unhidden { display: block; }
+		</style>
+	</head>
+	<body scroll="yes" >
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0"> 
+			<tr> 
+				<td>
+					<table width="100%">
+						<tr> 
+							<td colspan="2"><span fckLang="WBDropletslblPageSelection">Select a Droplet to insert on page:</span>&nbsp;</td>
+						</tr>
+						<tr>
+							<td colspan="2">
+								<select id="cmbDroplets" style="WIDTH: 100%" size="10" name="cmbDroplets"  onchange="javascript:showdetail(this);" >
+									<!-- BEGIN droplets_list_block -->
+									<option value="{TITLE}"{SELECTED}>{TITLE}</option>
+									<!-- END droplets_list_block -->
+								</select>
+							</td>
+						</tr>
+					</table>
+					{LIST}
+				</td>
+			</tr>
+		</table>		
+	</body>
+</html> 
+<!-- END main_block -->
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.htt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/WBDroplets/wbdroplets.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/fckplugin.js	(revision 1610)
@@ -0,0 +1,111 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Plugin: automatically resizes the editor until a configurable maximun
+ * height (FCKConfig.AutoGrowMax), based on its contents.
+ */
+
+var FCKAutoGrow = {
+	MIN_HEIGHT : window.frameElement.offsetHeight,
+
+	Check : function()
+	{
+		var delta = FCKAutoGrow.GetHeightDelta() ;
+		if ( delta != 0 )
+		{
+			var newHeight = window.frameElement.offsetHeight + delta ;
+
+			newHeight = FCKAutoGrow.GetEffectiveHeight( newHeight ) ;
+
+			if ( newHeight != window.frameElement.height )
+			{
+				window.frameElement.style.height = newHeight + "px" ;
+
+				// Gecko browsers use an onresize handler to update the innermost
+				// IFRAME's height. If the document is modified before the onresize
+				// is triggered, the plugin will miscalculate the new height. Thus,
+				// forcibly trigger onresize. #1336
+				if ( typeof window.onresize == 'function' )
+				{
+					window.onresize() ;
+				}
+			}
+		}
+	},
+
+	CheckEditorStatus : function( sender, status )
+	{
+		if ( status == FCK_STATUS_COMPLETE )
+			FCKAutoGrow.Check() ;
+	},
+
+	GetEffectiveHeight : function( height )
+	{
+		if ( height < FCKAutoGrow.MIN_HEIGHT )
+			height = FCKAutoGrow.MIN_HEIGHT;
+		else
+		{
+			var max = FCKConfig.AutoGrowMax;
+			if ( max && max > 0 && height > max )
+				height = max;
+		}
+
+		return height;
+	},
+
+	GetHeightDelta : function()
+	{
+		var oInnerDoc = FCK.EditorDocument ;
+
+		var iFrameHeight ;
+		var iInnerHeight ;
+
+		if ( FCKBrowserInfo.IsIE )
+		{
+			iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ;
+			iInnerHeight = oInnerDoc.body.scrollHeight ;
+		}
+		else
+		{
+			iFrameHeight = FCK.EditorWindow.innerHeight ;
+			iInnerHeight = oInnerDoc.body.offsetHeight +
+				( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-top' ), 10 ) || 0 ) +
+				( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-bottom' ), 10 ) || 0 ) ;
+		}
+
+		return iInnerHeight - iFrameHeight ;
+	},
+
+	SetListeners : function()
+	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return ;
+
+		FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow.Check ) ;
+		FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow.Check ) ;
+	}
+};
+
+FCK.AttachToOnSelectionChange( FCKAutoGrow.Check ) ;
+
+if ( FCKBrowserInfo.IsIE )
+	FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow.SetListeners ) ;
+
+FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow.CheckEditorStatus ) ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/autogrow/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/fckplugin.js	(revision 1610)
@@ -0,0 +1,33 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This plugin register the required Toolbar items to be able to insert the
+ * table commands in the toolbar.
+ */
+
+FCKToolbarItems.RegisterItem( 'TableInsertRowAfter'		, new FCKToolbarButton( 'TableInsertRowAfter'	, FCKLang.InsertRowAfter, null, null, null, true, 62 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteRows'		, new FCKToolbarButton( 'TableDeleteRows'	, FCKLang.DeleteRows, null, null, null, true, 63 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertColumnAfter'	, new FCKToolbarButton( 'TableInsertColumnAfter'	, FCKLang.InsertColumnAfter, null, null, null, true, 64 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteColumns'	, new FCKToolbarButton( 'TableDeleteColumns', FCKLang.DeleteColumns, null, null, null, true, 65 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertCellAfter'		, new FCKToolbarButton( 'TableInsertCellAfter'	, FCKLang.InsertCellAfter, null, null, null, true, 58 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteCells'	, new FCKToolbarButton( 'TableDeleteCells'	, FCKLang.DeleteCells, null, null, null, true, 59 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableMergeCells'		, new FCKToolbarButton( 'TableMergeCells'	, FCKLang.MergeCells, null, null, null, true, 60 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableHorizontalSplitCell'		, new FCKToolbarButton( 'TableHorizontalSplitCell'	, FCKLang.SplitCell, null, null, null, true, 61 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableCellProp'		, new FCKToolbarButton( 'TableCellProp'	, FCKLang.CellProperties, null, null, null, true, 57 ) ) ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/tablecommands/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/fckplugin.js	(revision 1610)
@@ -0,0 +1,29 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This plugin register Toolbar items for the combos modifying the style to
+ * not show the box.
+ */
+
+FCKToolbarItems.RegisterItem( 'SourceSimple'	, new FCKToolbarButton( 'Source', FCKLang.Source, null, FCK_TOOLBARITEM_ONLYICON, true, true, 1 ) ) ;
+FCKToolbarItems.RegisterItem( 'StyleSimple'		, new FCKToolbarStyleCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontNameSimple'	, new FCKToolbarFontsCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontSizeSimple'	, new FCKToolbarFontSizeCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontFormatSimple', new FCKToolbarFontFormatCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/simplecommands/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/fckplugin.js	(revision 1610)
@@ -0,0 +1,123 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is a sample implementation for a custom Data Processor for basic BBCode.
+ */
+
+FCK.DataProcessor =
+{
+	/*
+	 * Returns a string representing the HTML format of "data". The returned
+	 * value will be loaded in the editor.
+	 * The HTML must be from <html> to </html>, eventually including
+	 * the DOCTYPE.
+	 *     @param {String} data The data to be converted in the
+	 *            DataProcessor specific format.
+	 */
+	ConvertToHtml : function( data )
+	{
+		// Convert < and > to their HTML entities.
+        data = data.replace( /</g, '&lt;' ) ;
+        data = data.replace( />/g, '&gt;' ) ;
+
+        // Convert line breaks to <br>.
+        data = data.replace( /(?:\r\n|\n|\r)/g, '<br>' ) ;
+
+        // [url]
+        data = data.replace( /\[url\](.+?)\[\/url]/gi, '<a href="$1">$1</a>' ) ;
+        data = data.replace( /\[url\=([^\]]+)](.+?)\[\/url]/gi, '<a href="$1">$2</a>' ) ;
+
+        // [b]
+        data = data.replace( /\[b\](.+?)\[\/b]/gi, '<b>$1</b>' ) ;
+
+        // [i]
+        data = data.replace( /\[i\](.+?)\[\/i]/gi, '<i>$1</i>' ) ;
+
+        // [u]
+        data = data.replace( /\[u\](.+?)\[\/u]/gi, '<u>$1</u>' ) ;
+
+		return '<html><head><title></title></head><body>' + data + '</body></html>' ;
+	},
+
+	/*
+	 * Converts a DOM (sub-)tree to a string in the data format.
+	 *     @param {Object} rootNode The node that contains the DOM tree to be
+	 *            converted to the data format.
+	 *     @param {Boolean} excludeRoot Indicates that the root node must not
+	 *            be included in the conversion, only its children.
+	 *     @param {Boolean} format Indicates that the data must be formatted
+	 *            for human reading. Not all Data Processors may provide it.
+	 */
+	ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format )
+	{
+		var data = rootNode.innerHTML ;
+
+		// Convert <br> to line breaks.
+		data = data.replace( /<br(?=[ \/>]).*?>/gi, '\r\n') ;
+
+		// [url]
+		data = data.replace( /<a .*?href=(["'])(.+?)\1.*?>(.+?)<\/a>/gi, '[url=$2]$3[/url]') ;
+
+		// [b]
+		data = data.replace( /<(?:b|strong)>/gi, '[b]') ;
+		data = data.replace( /<\/(?:b|strong)>/gi, '[/b]') ;
+
+		// [i]
+		data = data.replace( /<(?:i|em)>/gi, '[i]') ;
+		data = data.replace( /<\/(?:i|em)>/gi, '[/i]') ;
+
+		// [u]
+		data = data.replace( /<u>/gi, '[u]') ;
+		data = data.replace( /<\/u>/gi, '[/u]') ;
+
+		// Remove remaining tags.
+		data = data.replace( /<[^>]+>/g, '') ;
+
+		return data ;
+	},
+
+	/*
+	 * Makes any necessary changes to a piece of HTML for insertion in the
+	 * editor selection position.
+	 *     @param {String} html The HTML to be fixed.
+	 */
+	FixHtml : function( html )
+	{
+		return html ;
+	}
+} ;
+
+// This Data Processor doesn't support <p>, so let's use <br>.
+FCKConfig.EnterMode = 'br' ;
+
+// To avoid pasting invalid markup (which is discarded in any case), let's
+// force pasting to plain text.
+FCKConfig.ForcePasteAsPlainText	= true ;
+
+// Rename the "Source" buttom to "BBCode".
+FCKToolbarItems.RegisterItem( 'Source', new FCKToolbarButton( 'Source', 'BBCode', null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ) ;
+
+// Let's enforce the toolbar to the limits of this Data Processor. A custom
+// toolbar set may be defined in the configuration file with more or less entries.
+FCKConfig.ToolbarSets["Default"] = [
+	['Source'],
+	['Bold','Italic','Underline','-','Link'],
+	['About']
+] ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/bbcode/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/fck_syntaxhighlight.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/fck_syntaxhighlight.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/fck_syntaxhighlight.html	(revision 1610)
@@ -0,0 +1,201 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Syntax highlighter plugin
+-->
+<html>
+<head>
+    <title>Syntax Highlighter 2</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta content="noindex, nofollow" name="robots">
+   
+   <script type="text/javascript">
+       var oEditor = window.parent.InnerDialogLoaded();
+       var FCKConfig = oEditor.FCKConfig;
+       document.write('<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>');
+</script>
+
+    <script src="syntaxhighlight.js" type="text/javascript"></script>
+
+</head>
+<body scroll="no" style="overflow: hidden">
+    <div id="divSourceCode" class="box">
+        <table height="100%" cellspacing="0" cellpadding="5" width="100%" align="center"
+            border="0">
+            <tr>
+                <td width="108">
+                    <span fcklang="SyntaxHightlightLang">Select language</span>
+                </td>
+                <td width="372">
+                    <select id="ddLang">
+                        <option value="c++">C++</option>
+                        <option value="csharp">C# </option>
+                        <option value="css">CSS </option>
+                        <option value="delphi">Delphi</option>
+                        <option value="java">Java </option>
+                        <option value="jscript">Java Script</option>
+                        <option value="php">PHP</option>
+                        <option value="python">Python</option>
+                        <option value="ruby">Ruby</option>
+                        <option value="sql">SQL</option>
+                        <option value="vb">VB.NET</option>
+                        <option value="xhtml">XML/HTML</option>
+                    </select>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="2" valign="top">
+                    <span fcklang="SyntaxHightlightEnterCode">Enter source code</span><br>
+                    <textarea rows="22" style="width: 100%; font-weight: normal; font-family: 'Courier New',Courier,mono,serif;"
+                        id="txtCode"></textarea>
+                </td>
+            </tr>
+        </table>
+    </div>
+    <div id="divAdvanced" class="box" style="display:none;">
+        <table cellspacing="0" cellpadding="3" width="100%" align="center" border="0">
+            <tr>
+                <td colspan="3">
+                    <strong><span fcklang="SyntaxHightlightGutter">Gutter</span></strong>
+                </td>
+            </tr>
+            <tr>
+                <td width="20">
+                    <input name="chkGutter" type="checkbox" value="1" id="chkGutter">
+                </td>
+                <td colspan="2">
+                    <span fcklang="SyntaxHightlightGutterDetail">Hide gutter &amp; line numbers</span>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="3">
+                    <strong><span fcklang="SyntaxHightlightNoControls">Controls</span></strong>
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <input name="chkNoControls" type="checkbox" value="1" id="chkNoControls">
+                </td>
+                <td colspan="2">
+                    <span fcklang="SyntaxHightlightNoControlsDetail">
+                    Hide code controls at the top of the code block.
+                    </span>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="3">
+                    <strong><span fcklang="SyntaxHightlightCollapse">Collapse</span></strong>
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <input name="chkCollapse" type="checkbox" id="chkCollapse" value="1">
+                </td>
+                <td colspan="2">
+                <span fcklang="SyntaxHightlightCollapseDetail">
+                    Collapse the code block by default. (controls need to be turned on)
+                </span>
+                </td>
+            </tr>
+            <tr>
+                <td colspan="3">
+                    <strong><span fcklang="SyntaxHightlightShowcolumns">Show columns</span></strong>
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <input name="chkShowColumns" type="checkbox" value="1" id="chkShowColumns">
+                </td>
+                <td colspan="2">
+                    <span fcklang="SyntaxHightlightShowcolumnsDetail">
+                    Show row columns in the first line.
+                    </span>
+                </td>
+            </tr>
+        </table>
+        
+        <!-- enable line count start -->
+        <table cellspacing="0" cellpadding="3" width="100%" align="center" border="0">
+            <tr>
+                <td colspan="3">
+                    <strong>
+                    <span fcklang="SyntaxHightlightLineCount">Default line count</span>
+                    </strong></td>
+            </tr>
+            <tr>
+                <td width="20">
+                    <input name="chkLineCount" onClick="changechk(this, 'txtLineCount');" type="checkbox"
+                        value="1" id="chkLineCount"></td>
+                <td width="20">
+                    <input name="txtLineCount" disabled="disabled" style="width: 50px;" type="text" id="txtLineCount"
+                        maxlength="4"></td>
+                <td>
+                <span fcklang="SyntaxHightlightLineCountDetail">
+                Will begin line count at value. Default value is 1.
+                </span></td>
+            </tr>
+            </table>
+            
+            
+            <!-- enable highlighted lines -->
+             <table cellspacing="0" cellpadding="3" width="100%" align="center" border="0">
+            <tr>
+                <td colspan="3">
+                    <strong>
+                    <span fcklang="SyntaxHightlightLines">Highlight lines</span>
+                    </strong></td>
+            </tr>
+            <tr>
+                <td width="20">
+                    <input name="chkHighlightLine" onClick="changechk(this, 'txtHighlightLines');" type="checkbox"
+                        value="1" id="chkHighlightLine"></td>
+                <td>
+                    <input name="txtHighlightLines" disabled="disabled" style="width: 150px;" type="text" id="txtHighlightLines"
+                        maxlength="25"></td>
+                <td>
+                </td>
+            </tr>
+            <tr>
+            <td></td>
+            <td colspan="2">
+            <span fcklang="SyntaxHightlightLinesDetail">
+                Enter a comma seperated lines of lines you want to highlight, eg <em>3,10,15</em>.
+                </span>
+            </td>
+            </tr>
+            </table>
+            
+            
+            
+            <table cellspacing="0" cellpadding="3" width="100%" align="center" border="0">
+            <tr>
+              <td colspan="3" class="DarkBackground">
+              <p><span fcklang="SyntaxHightlightInformation"><strong>NOTE:</strong><br>This plugin makes use of the <strong>Java Script SyntaxHighlighter v2.0.x</strong> available from <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter">alexgorbatchev.com</a>. Without configuring your website to use the SyntaxHighlighter this plugin will not have much effect!</span></p>
+              
+              <p><strong>Plugin Version: </strong><span id="syntaxhighlight-version"></span></p>
+              </td>
+            </tr>
+        </table>
+</div>
+
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/syntaxhighlight.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/syntaxhighlight.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/dialog/syntaxhighlight.js	(revision 1610)
@@ -0,0 +1,297 @@
+/*
+*   Syntax Highlighter 2.0 plugin for FCKEditor
+*   ========================
+*   Copyright (C) 2008  Darren James
+*   Email : darren.james@gmail.com
+*   URL : http://www.psykoptic.com/blog/
+*
+*   NOTE:
+*   ========================
+*   This plugin will add or edit a formatted <pre> tag for FCKEditor
+*   To see results on the front end of your website
+*   You will need to install SyntaxHighlighter 2.0.x from
+*   http://alexgorbatchev.com/wiki/SyntaxHighlighter
+*
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU General Public License for more details.
+
+*   You should have received a copy of the GNU General Public License
+*   along with this program.  If not, see <http:*www.gnu.org/licenses/>.
+
+*   This program comes with ABSOLUTELY NO WARRANTY.
+*/
+
+var version = "2.1.0";
+var dialog = window.parent; // IE7 needs this
+var oEditor = window.parent.InnerDialogLoaded();
+var FCK = oEditor.FCK;
+var FCKLang = oEditor.FCKLang;
+var FCKConfig = oEditor.FCKConfig;
+var FCKTools = oEditor.FCKTools;
+var FCKBrowserInfo = oEditor.FCKBrowserInfo;
+
+
+// default syntax object
+function CodeSyntax() {
+    var oCodeSyntax = new Object();
+    oCodeSyntax.Code = oContainerPre.innerHTML;
+    oCodeSyntax.Advanced = false;
+    oCodeSyntax.Gutter = false;
+    oCodeSyntax.NoControls = false;
+    oCodeSyntax.Collapse = false;
+    oCodeSyntax.Firstline = 0;
+    oCodeSyntax.Showcolumns = false;
+    oCodeSyntax.Highlight = null;
+
+    return oCodeSyntax;
+}
+
+var oContainerPre = FCK.Selection.MoveToAncestorNode('PRE');
+var oCodeSyntax = null;
+
+// ----------------------
+// populate our oCodeSyntax object
+if (oContainerPre) {
+    if (oContainerPre.tagName == 'PRE' && GetAttribute(oContainerPre, 'title') == 'code') {
+
+        var CodeSettings = GetAttribute(oContainerPre, 'class', '');
+        if (CodeSettings.length > 0) {
+
+            // found valid code snippet, populate our CodeSyntax object
+            oCodeSyntax = new CodeSyntax();
+
+            if (CodeSettings.indexOf(";") > -1) {
+                // advanced options set
+
+                oCodeSyntax.Advanced = true;
+                oCodeSyntax.Lang = CodeSettings.substring(CodeSettings.indexOf(":") + 1, CodeSettings.indexOf(";")).replace(/^\s+|\s+$/g, "");
+                
+                if (CodeSettings.indexOf("gutter") > -1)
+                    oCodeSyntax.Gutter = true;
+
+                if (CodeSettings.indexOf("toolbar") > -1)
+                    oCodeSyntax.NoControls = true;
+
+                if (CodeSettings.indexOf("collapse") > -1)
+                    oCodeSyntax.Collapse = true;
+
+                if (CodeSettings.indexOf("first-line") > -1) {
+
+                    var match = /first-line: ([0-9]{1,4})/.exec(CodeSettings);
+                    if (match != null && match.length > 0) {
+                        oCodeSyntax.Firstline = match[1];
+                    }
+                    else {
+                        oCodeSyntax.Firstline = 0;
+                    }
+                }
+                
+                // highlighted numbers
+                if (CodeSettings.indexOf("highlight") > -1) {
+
+                    // make sure we have a comma-seperated list
+                    if (CodeSettings.match(/highlight: \[[0-9]+(,[0-9]+)*\]/)) {
+                        // now grab the list
+                        var match_hl = /highlight: \[(.*)\]/.exec(CodeSettings);
+                        if (match_hl != null && match_hl.length > 0) {
+                            oCodeSyntax.Highlight = match_hl[1];
+                        }
+                    }
+                }
+
+
+                if (CodeSettings.indexOf("ruler") > -1)
+                    oCodeSyntax.Showcolumns = true;
+            }
+            else {
+                oCodeSyntax.Lang = CodeSettings;
+            }
+
+        }
+
+    } else {
+        oContainerPre = null;
+    }
+}
+
+// ----------------------
+// config tabs
+window.parent.AddTab('TabSourceCode', FCKLang.SyntaxHightlightTab1);
+window.parent.AddTab('TabAdvanced', FCKLang.SyntaxHightlightTab2);
+
+function OnDialogTabChange(tabCode) {
+    ShowE('divSourceCode', (tabCode == 'TabSourceCode'));
+    ShowE('divAdvanced', (tabCode == 'TabAdvanced'));
+}
+// ----------------------
+
+window.onload = function() {
+
+    // translate the dialog box texts
+    oEditor.FCKLanguageManager.TranslatePage(document);
+    // load current PRE block
+    LoadSelected();
+    // Show the "Ok" button.
+    dialog.SetOkButton(true);
+    // Select text field on load.
+    SelectField('txtCode');
+
+    // set version
+    GetE('syntaxhighlight-version').innerHTML = version;
+
+}
+
+// ----------------------
+// setup dialogue
+function LoadSelected() {
+
+    var ddLang = GetE('ddLang');
+
+    if (!oCodeSyntax) {
+        // creating new element
+        if (FCKConfig.SyntaxHighlight2LangDefault != null) {
+
+            for (count = 0; count < ddLang.length; count++) {
+
+                if (ddLang.options[count].value == FCKConfig.SyntaxHighlight2LangDefault) {
+                    ddLang.selectedIndex = count;
+                    break;
+                }
+            }
+        }
+
+    }
+    else {
+
+        // editing existing element
+        document.getElementById('txtCode').value = HTMLDecode(oCodeSyntax.Code);
+        ddLang.value = oCodeSyntax.Lang;
+
+        // set any advanced options
+        if (oCodeSyntax.Advanced) {
+            if (oCodeSyntax.Gutter)
+                GetE('chkGutter').checked = true;
+
+            if (oCodeSyntax.NoControls)
+                GetE('chkNoControls').checked = true;
+
+            if (oCodeSyntax.Collapse)
+                GetE('chkCollapse').checked = true;
+
+            if (oCodeSyntax.Firstline > 0) {
+                GetE('chkLineCount').checked = true;
+                GetE('txtLineCount').disabled = false;
+                GetE('txtLineCount').value = oCodeSyntax.Firstline
+
+            }
+
+            if (oCodeSyntax.Highlight != null) {
+                GetE('chkHighlightLine').checked = true;
+                GetE('txtHighlightLines').disabled = false;
+                GetE('txtHighlightLines').value = oCodeSyntax.Highlight
+
+            }
+            
+            if (oCodeSyntax.Showcolumns)
+                GetE('chkShowColumns').checked = true;
+
+        }
+
+    }
+}
+
+// ----------------------
+// action on dialogue submit
+function Ok() {
+    var sCode = GetE('txtCode').value;
+    var ddLang = GetE('ddLang').value + ";";
+    var advanced = '';
+
+    oEditor.FCKUndo.SaveUndoStep();
+
+    if (!oContainerPre) {
+        oContainerPre = FCK.CreateElement('PRE');
+    }
+
+
+    if (GetE('chkGutter').checked)
+        advanced += "gutter: false; ";
+
+    if (GetE('chkNoControls').checked)
+        advanced += "toolbar: false; ";
+
+    if (GetE('chkCollapse').checked)
+        advanced += "collapse: true; ";
+
+    // start line count from custom
+    if (GetE('chkLineCount').checked)
+        advanced += "first-line: " + GetE('txtLineCount').value + "; ";
+
+    // highlight lines (strip all spaces)
+    if (GetE('chkHighlightLine').checked)
+        advanced += "highlight: [" + GetE('txtHighlightLines').value.replace(/\s/gi, "") + "]; ";
+
+    // show ruler/column tool
+    if (GetE('chkShowColumns').checked)
+        advanced += "ruler: true; ";
+   
+
+    if (FCKBrowserInfo.IsIE) {
+        // a bug in IE removes linebreaks in innerHTML, so lets use outerHTML instead
+        oContainerPre.outerHTML = '<pre title="code" class="brush: ' + ddLang + advanced + '">' + HTMLEncode(sCode) + '</pre>';
+    }
+    else {
+        oContainerPre.setAttribute("title", "code");
+        oContainerPre.setAttribute("class", "brush: " + ddLang + advanced);
+        oContainerPre.innerHTML = HTMLEncode(sCode);       
+    }
+
+    return true;
+}
+
+// ----------------------
+// Helper functions
+// ----------------------
+function HTMLEncode(text) {
+    if (!text)
+        return '';
+
+    text = text.replace(/&/g, '&amp;');
+    text = text.replace(/</g, '&lt;');
+    text = text.replace(/>/g, '&gt;');
+
+    return text;
+}
+
+function HTMLDecode(text) {
+    if (!text)
+        return '';
+
+    text = text.replace(/&gt;/g, '>');
+    text = text.replace(/&lt;/g, '<');
+    text = text.replace(/&amp;/g, '&');
+    text = text.replace(/<br>/g, '\n');
+    text = text.replace(/&quot;/g, '"');
+
+    return text;
+}
+
+function changechk(checkbox, textfield) {
+
+    if (checkbox.checked == true) {
+        GetE(textfield).disabled = false;
+    }
+    else {
+        GetE(textfield).disabled = true;
+    }
+
+}
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/lang/en.js	(revision 1610)
@@ -0,0 +1,50 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Placholder English language file.
+ */
+
+FCKLang.SyntaxhighlightBtn      = 'Insert/Edit Syntax highlighted code';
+FCKLang.DlgSyntaxhighlightTitle = 'Syntax Highlighter 2';
+FCKLang.SyntaxHightlightTab1 = 'Source code';
+FCKLang.SyntaxHightlightTab2 = 'Advanced';
+
+// source code tab
+FCKLang.SyntaxHightlightLang = 'Select language';
+FCKLang.SyntaxHightlightEnterCode = 'Enter source code';
+
+// advanced tab
+FCKLang.SyntaxHightlightGutter = 'Hide gutter';
+FCKLang.SyntaxHightlightGutterDetail = 'Hide gutter &amp; line numbers';
+FCKLang.SyntaxHightlightNoControls = 'Hide Controls';
+FCKLang.SyntaxHightlightNoControlsDetail = 'Hide code controls at the top of the code block.';
+FCKLang.SyntaxHightlightCollapse = 'Collapse';
+FCKLang.SyntaxHightlightCollapseDetail = 'Collapse the code block by default. (controls need to be turned on)';
+FCKLang.SyntaxHightlightLineCount = 'Default line count';
+FCKLang.SyntaxHightlightLineCountDetail = 'Will begin line count at specified value. Default value is 1.';
+
+FCKLang.SyntaxHightlightShowcolumns = 'Show columns';
+FCKLang.SyntaxHightlightShowcolumnsDetail = 'Show row columns in the first line.';
+
+FCKLang.SyntaxHightlightLines = 'Highlight lines';
+FCKLang.SyntaxHightlightLinesDetail = 'Enter a comma seperated lines of lines you want to highlight, eg <em>3,10,15</em>.';
+
+
+FCKLang.SyntaxHightlightInformation = '<strong>NOTE:</strong><br>This plugin makes use of the <strong>Java Script SyntaxHighlighter v2.0.x</strong> available from <a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter" target="_blank">alexgorbatchev.com</a>. Without configuring your website to use the SyntaxHighlighter this plugin will not have much effect!';
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/syntaxhighlight.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/images/syntaxhighlight.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/folder-setup.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/docs/folder-setup.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/README.txt
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/README.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/README.txt	(revision 1610)
@@ -0,0 +1,47 @@
+﻿/*
+*   Syntax Highlighter 2.0 plugin for FCKEditor
+*   ========================
+*   Copyright (C) 2008  Darren James
+*   Email : darren.james@gmail.com
+*   URL : http://www.psykoptic.com/blog/
+*
+*   NOTE:
+*   ========================
+*   This plugin will add or edit a formatted <pre> tag for FCKEditor
+*   To see results on the front end of your website
+*   You will need to install SyntaxHighlighter 2.0.x from
+*   http://alexgorbatchev.com/wiki/SyntaxHighlighter
+*
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU General Public License for more details.
+
+*   You should have received a copy of the GNU General Public License
+*   along with this program.  If not, see <http:*www.gnu.org/licenses/>.
+
+*   This program comes with ABSOLUTELY NO WARRANTY.
+*/
+
+/*
+*   History
+*   ========================
+*   2.1.0	May 2009
+*			- Plugin version information now being displayed
+*			- Line highlighting feature added
+*
+*   2.0.1	March 2009
+*			- Minor bug fix where semi-colons were sometimes positioned in the wrong place when no advanced options were selected
+			
+*   2.0		March 2009
+*			- First Release with support for SyntaxHighlighter 2.0.x available. Many thanks to 
+			Sergey Gurevich for providing bug fixes and patches used in this release.
+
+			
+*/
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/syntaxhighlight2/fckplugin.js	(revision 1610)
@@ -0,0 +1,49 @@
+﻿/*
+*   Syntax Highlighter 2.0 plugin for FCKEditor
+*   ========================
+*   Copyright (C) 2008  Darren James
+*   Email : darren.james@gmail.com
+*   URL : http://www.psykoptic.com/blog/
+*
+*   NOTE:
+*   ========================
+*   This plugin will add or edit a formatted <pre> tag for FCKEditor
+*   To see results on the front end of your website
+*   You will need to install SyntaxHighlighter 2.0.x from
+*   http://alexgorbatchev.com/wiki/SyntaxHighlighter
+*
+*
+*   This program is free software: you can redistribute it and/or modify
+*   it under the terms of the GNU General Public License as published by
+*   the Free Software Foundation, either version 3 of the License, or
+*   (at your option) any later version.
+
+*   This program is distributed in the hope that it will be useful,
+*   but WITHOUT ANY WARRANTY; without even the implied warranty of
+*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*   GNU General Public License for more details.
+
+*   You should have received a copy of the GNU General Public License
+*   along with this program.  If not, see <http:*www.gnu.org/licenses/>.
+
+*   This program comes with ABSOLUTELY NO WARRANTY.
+*/
+
+
+// Register the related command.
+
+/*
+NOTE - Values are case sensitive
+- syntaxhighlight2: name of the plugin and directory name (must be the same!)
+- SyntaxHighLight2: Name of command used to identify the new toolbar button
+*/
+
+FCKCommands.RegisterCommand('SyntaxHighLight2', new FCKDialogCommand('SyntaxHighLight2', FCKLang.DlgSyntaxhighlightTitle, FCKPlugins.Items['syntaxhighlight2'].Path + 'dialog/fck_syntaxhighlight.html', 500, 500));
+
+// Create the "SyntaxHighLight" toolbar button.
+var oSyntaxhighlightItem = new FCKToolbarButton('SyntaxHighLight2', FCKLang.SyntaxhighlightBtn);
+oSyntaxhighlightItem.IconPath = FCKPlugins.Items['syntaxhighlight2'].Path + 'images/syntaxhighlight.gif';
+
+FCKToolbarItems.RegisterItem('SyntaxHighLight2', oSyntaxhighlightItem);
+
+
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html	(revision 1610)
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Flash Properties dialog window.
+-->
+<html>
+	<head>
+		<title>Flash Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="fck_flash.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+// Set the Skin CSS.
+if (FCKTools.GetStyleHtml)
+	document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( FCKConfig.FullBasePath + 'dialog/' ) ) ) ;
+else
+	document.write( '<link href="' + oEditor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo">
+			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
+				<tr>
+					<td>
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><label for="txtUrl" fckLang="DlgImgURL">URL</label>
+								</td>
+								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
+								</td>
+							</tr>
+							<tr>
+								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<TR>
+					<TD>
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<TR>
+								<TD nowrap>
+									<label for="txtWidth" fckLang="DlgImgWidth">Width</label><br>
+									<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+								<TD>&nbsp;</TD>
+								<TD>
+									<label for="txtHeight" fckLang="DlgImgHeight">Height</label><br>
+									<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+							</TR>
+						</table>
+					</TD>
+				</TR>
+				<tr>
+					<td vAlign="top">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">
+									<table cellSpacing="0" cellPadding="0" width="100%">
+										<tr>
+											<td><span fckLang="DlgImgPreview">Preview</span></td>
+										</tr>
+										<tr>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					var voidUrl = 'javascript:void(0)' ;
+					if (typeof FCKTools.GetVoidUrl == 'function')
+						voidUrl = FCKTools.GetVoidUrl();
+
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + voidUrl + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divAdvanced" style="DISPLAY: none">
+			<TABLE cellSpacing="0" cellPadding="0" border="0">
+				<TR>
+					<TD nowrap>
+						<label fckLang="DlgFlashScale" for="cmbScale">Scale</label><BR>
+						<select id="cmbScale">
+							<option value="" selected></option>
+							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
+							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
+							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
+						</select></TD>
+					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
+					</TD>
+					<td valign="bottom">
+						<table>
+							<tr>
+								<td><input id="chkAutoPlay" type="checkbox" checked></td>
+								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
+								<td><input id="chkLoop" type="checkbox" checked></td>
+								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
+								<td><input id="chkMenu" type="checkbox" checked></td>
+								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
+							</tr>
+						</table>
+					</td>
+				</TR>
+				<tr>
+					<td>
+						<label for="allowscriptaccess" fckLang="DlgFlashScriptaccess">Script access</label><br>
+						<select id="allowscriptaccess">
+							<option value=""></option>
+							<option value="always" fckLang="DlgFlashAlways">Always</option>
+							<option value="sameDomain" fckLang="DlgFlashSameDomain">Same Domain</option>
+							<option value="never" fckLang="DlgFlashNever">Never</option>
+						</select>
+					</td>
+					<td></td>
+					<td>
+						<label for="wmode" fckLang="DlgFlashWindowMode">Window mode</label><br>
+						<select id="wmode">
+							<option value=""></option>
+							<option value="window" fckLang="DlgFlashWindow">Window</option>
+							<option value="opaque" fckLang="DlgFlashOpaque">Opaque</option>
+							<option value="transparent" fckLang="DlgFlashTransparent">Transparent</option>
+						</select>
+						&nbsp;&nbsp;&nbsp;
+						<input id="allowfullscreen" type="checkbox">
+						<label for="allowfullscreen" nowrap fckLang="DlgFlashAllowfullscreen">Allow Full Screen</label>
+
+					</td>
+				</tr>
+			</TABLE>
+
+			<br>
+			&nbsp;
+			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td vAlign="top" width="50%"><label fckLang="DlgGenId" for="txtAttId">Id</label><br>
+						<input id="txtAttId" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap><label fckLang="DlgGenClass" for="txtAttClasses">Stylesheet Classes</label><br>
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap width="50%" for="txtAttTitle">&nbsp;<label fckLang="DlgGenTitle">Advisory Title</label><br>
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
+					</td>
+				</tr>
+			</table>
+			<label fckLang="DlgGenStyle" for="txtAttStyle">Style</label><br>
+			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
+		</div>
+
+		<div id="divFlashvars" style="DISPLAY: none">
+					<table width="100%">
+						<tr>
+							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
+								<input id="txtText" style="WIDTH: 100%" type="text">
+							</td>
+							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
+								<input id="txtValue" style="WIDTH: 100%" type="text">
+							</td>
+							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
+							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
+						</tr>
+						<tr>
+							<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td vAlign="top" colSpan="2">
+							</td>
+						</tr>
+						<TR>
+							<TD vAlign="bottom" colSpan="4">
+								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
+						</TR>
+					</table>
+		</div>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html	(revision 1610)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Preview page for the Flash dialog window.
+-->
+<html>
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script type="text/javascript">
+
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
+function Import(aSrc) {
+   document.write('<scr'+'ipt type="text/javascript" src="' + aSrc + '"></sc' + 'ript>');
+}
+
+Import(FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js');
+
+		</script>
+		<script type="text/javascript">
+// Set the Skin CSS.
+if (FCKTools.GetStyleHtml)
+{
+	document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( FCKConfig.FullBasePath + 'dialog/' ) ) ) ;
+	document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+}
+else
+{
+	document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+	document.write( '<link href="' + window.parent.FCKConfig.BasePath + 'dialog/common/fck_dialog_common.css" type="text/css" rel="stylesheet">' ) ;
+}
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElement( document.body ) ;
+}
+
+		</script>
+	</head>
+	<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js	(revision 1610)
@@ -0,0 +1,558 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Flash dialog window (see fck_flash.html).
+ */
+function Import(aSrc) {
+   document.write('<scr'+'ipt type="text/javascript" src="' + aSrc + '"></sc' + 'ript>');
+}
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+Import(FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js');
+
+var oListText ;
+var oListValue ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+
+if ( FCKConfig.FlashUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.FlashDlgHideAdvanced )
+{
+	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+	dialog.AddTab( 'Flashvars', oEditor.FCKLang.DlgFlashvars ) ;
+}
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+	ShowE('divFlashvars'	, ( tabCode == 'Flashvars' ) ) ;
+}
+
+// Get the selected flash embed (if available).
+var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oParsedFlash ;
+var oEmbed;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.getAttribute( 'SwfObjectNumber' ) )
+	{
+		oParsedFlash = FCK.SwfobjectHandler.getItem( oFakeImage.getAttribute( 'SwfObjectNumber' ) );
+		oParsedFlash.updateDimensions( oFakeImage );
+	}
+	else
+	{
+		if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
+			oEmbed = FCK.GetRealElement( oFakeImage ) ;
+
+		oFakeImage = null ;
+	}
+}
+if ( !oParsedFlash )
+		oParsedFlash = FCK.SwfobjectHandler.createNew() ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	oListText	= document.getElementById( 'cmbText' ) ;
+	oListValue	= document.getElementById( 'cmbValue' ) ;
+
+	// Fix the lists widths. (Bug #970)
+	oListText.style.width = "120px"; //oListText.offsetWidth ;
+	oListValue.style.width = "120px"; //oListValue.offsetWidth ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.FlashUpload )
+		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	if (typeof SelectField == 'function') SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	// parse old embeds
+	if (oEmbed)
+	{
+		oParsedFlash.file    = GetAttribute( oEmbed, 'src', '' ) ;
+		oParsedFlash.width  = GetAttribute( oEmbed, 'width', '' ) ;
+		oParsedFlash.height = GetAttribute( oEmbed, 'height', '' ) ;
+
+		// Get Advances Attributes
+		oParsedFlash.attributes.id		= oEmbed.id ;
+		oParsedFlash.attributes.title		= oEmbed.title ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			oParsedFlash.attributes['class'] = oEmbed.getAttribute('className') || '' ;
+			oParsedFlash.attributes.style = oEmbed.style.cssText ;
+		}
+		else
+		{
+			oParsedFlash.attributes['class'] = oEmbed.getAttribute('class',2) || '' ;
+			oParsedFlash.attributes.style = oEmbed.getAttribute('style',2) || '' ;
+		}
+
+		oParsedFlash.params.play	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
+		oParsedFlash.params.loop	= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
+		oParsedFlash.params.menu	= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
+		oParsedFlash.params.scale	= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
+	}
+
+	GetE('txtUrl').value    = oParsedFlash.file ;
+	GetE('txtWidth').value  = oParsedFlash.width ;
+	GetE('txtHeight').value = oParsedFlash.height ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value		= oParsedFlash.attributes.id || '' ;
+	GetE('txtAttTitle').value		= oParsedFlash.attributes.title || '' ;
+	GetE('txtAttClasses').value = oParsedFlash.attributes['class'] || '' ;
+	GetE('txtAttStyle').value = oParsedFlash.attributes.style ;
+
+	GetE('chkAutoPlay').checked	= oParsedFlash.params.play ;
+	GetE('chkLoop').checked		= oParsedFlash.params.loop ;
+	GetE('chkMenu').checked		= oParsedFlash.params.menu ;
+	GetE('cmbScale').value		= oParsedFlash.params.scale || '' ;
+
+	GetE('allowscriptaccess').value		= oParsedFlash.params.allowscriptaccess || '' ;
+	GetE('wmode').value		= oParsedFlash.params.wmode || '' ;
+	GetE('allowfullscreen').checked		= oParsedFlash.params.allowfullscreen ;
+
+	// flashvars
+	var opts = oParsedFlash.flashvars ;
+	for ( var v in opts )
+	{
+		var sText	= v ;
+		var sValue	= opts[v] ;
+
+		AddComboOption( oListText, sText, sText ) ;
+		AddComboOption( oListValue, sValue, sValue ) ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( oEditor.FCKLang.DlgAlertUrl ) ;
+
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	updateObject(oParsedFlash) ;
+
+	if ( !oFakeImage )
+		oFakeImage = oParsedFlash.createHtmlElement() ;
+
+	oParsedFlash.updateHTMLElement(oFakeImage);
+
+	return true ;
+}
+
+function updateObject( e )
+{
+	e.file = GetE('txtUrl').value;
+	e.width = GetE('txtWidth').value;
+	e.height = GetE('txtHeight').value;
+	if (e.width=='') e.width = '100';
+	if (e.height=='') e.height = '100';
+
+	// Advances Attributes
+	e.attributes.id = GetE('txtAttId').value;
+	e.attributes['class'] = GetE('txtAttClasses').value;
+	e.attributes.style = GetE('txtAttStyle').value;
+	e.attributes.title = GetE('txtAttTitle').value;
+
+	e.params.scale = GetE('cmbScale').value;
+	e.params.play = GetE('chkAutoPlay').checked;
+	e.params.loop = GetE('chkLoop').checked;
+	e.params.menu = GetE('chkMenu').checked;
+
+	e.params.allowscriptaccess = GetE('allowscriptaccess').value;
+	e.params.wmode = GetE('wmode').value;
+	e.params.allowfullscreen = GetE('allowfullscreen').checked;
+
+	// Add all available options.
+	var vars = {};
+	for ( var i = 0 ; i < oListText.options.length ; i++ )
+	{
+		var sText	= oListText.options[i].value ;
+		var sValue	= oListValue.options[i].value ;
+		if ( sValue.length == 0 ) sValue = sText ;
+		vars[sText] = sValue ;
+	}
+	e.flashvars = vars;
+}
+
+var ePreview ;
+
+function SetPreviewElement( previewEl )
+{
+	ePreview = previewEl ;
+
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		ePreview.innerHTML = '&nbsp;' ;
+	else
+	{
+		// Skip reloading the swf if it's the current preview
+		var url = GetE('txtUrl').value ;
+		if (ePreview.dataUrl == url)
+			return ;
+
+		// check if it isn't a swf file or some mix of html or an embedding page:
+		var oData = oWebVideo.ParseHtml(url, GetE('txtWidth').value, GetE('txtHeight').value );
+		GetE('txtUrl').value = oData.url ;
+		GetE('txtWidth').value = oData.width ;
+		GetE('txtHeight').value = oData.height ;
+		ePreview.dataUrl = oData.url ;
+
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
+
+		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
+		SetAttribute( e, 'width', '100%' ) ;
+		SetAttribute( e, 'height', '100%' ) ;
+
+		ePreview.appendChild( e ) ;
+	}
+}
+
+// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
+}
+
+function SetUrl( url, width, height )
+{
+	GetE('txtUrl').value = url ;
+
+	if ( width )
+		GetE('txtWidth').value = width ;
+
+	if ( height )
+		GetE('txtHeight').value = height ;
+
+	UpdatePreview() ;
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
+
+
+/* flashvars selects*/
+
+function Select( combo )
+{
+	var iIndex = combo.selectedIndex ;
+
+	oListText.selectedIndex		= iIndex ;
+	oListValue.selectedIndex	= iIndex ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oTxtText.value	= oListText.value ;
+	oTxtValue.value	= oListValue.value ;
+}
+
+function Add()
+{
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
+	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
+
+	oListText.selectedIndex = oListText.options.length - 1 ;
+	oListValue.selectedIndex = oListValue.options.length - 1 ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Modify()
+{
+	var iIndex = oListText.selectedIndex ;
+
+	if ( iIndex < 0 ) return ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
+	oListText.options[ iIndex ].value		= oTxtText.value ;
+
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
+	oListValue.options[ iIndex ].value		= oTxtValue.value ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Delete()
+{
+	RemoveSelectedOptions( oListText ) ;
+	RemoveSelectedOptions( oListValue ) ;
+}
+
+// Remove all selected options from a SELECT object
+function RemoveSelectedOptions(combo)
+{
+	// Save the selected index
+	var iSelectedIndex = combo.selectedIndex ;
+
+	var oOptions = combo.options ;
+
+	// Remove all selected options
+	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
+	{
+		if (oOptions[i].selected) combo.remove(i) ;
+	}
+
+	// Reset the selection based on the original selected index
+	if ( combo.options.length > 0 )
+	{
+		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
+		combo.selectedIndex = iSelectedIndex ;
+	}
+}
+
+// Add a new option to a SELECT object (combo or list)
+function AddComboOption( combo, optionText, optionValue, documentObject, index )
+{
+	var oOption ;
+
+	if ( documentObject )
+		oOption = documentObject.createElement("OPTION") ;
+	else
+		oOption = document.createElement("OPTION") ;
+
+	if ( index != null )
+		combo.options.add( oOption, index ) ;
+	else
+		combo.options.add( oOption ) ;
+
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
+	oOption.value     = optionValue ;
+
+	return oOption ;
+}
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}
+
+
+
+
+// The object used for all Web Video operations.
+var oWebVideo = {
+	Objects : [ "<object width=\"(?<width>\\d+)\" height=\"(?<height>\\d+)\".* name=\"movie\"\\s+value=\"(?<url>[^\"]*)\".*<\\/object>" ,
+			// youtube style only embed
+					"<embed src=\"(?<url>[^\"]*)\".* width=\"(?<width>\\d+)\" height=\"(?<height>\\d+)\".*<\\/embed>" ,
+			// google video
+					"<embed .*width:(?<width>\\d+)px.*height:(?<height>\\d+)px.* src=\"(?<url>[^\"]*)\".*<\\/embed>" ,
+			// invalid syntax but anyway...
+					"<embed src=\"(?<url>[^\"]*)\".* width=\"(?<width>\\d+)px\" height=\"(?<height>\\d+)px\".*<\\/embed>"
+	] ,
+
+	webPages : [{re:/http:\/\/www\.youtube\.com\/watch\?v=([^&]*)(&.*|$)/, url:'http://www.youtube.com/v/$1', width:425, height:344} ,
+							{re:/http:\/\/video\.google\.(.*)\/videoplay\?docid=([^&]*)(&.*|$)/, url:'http://video.google.$1/googleplayer.swf?docid=$2', width:400, height:326}, 
+							{re:/http:\/\/www\.mtvmusic\.com\/video\/\?id=([^&]*)(&.*|$)/, url:'http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:$1', width:320, height:271} ,
+							{re:/http:\/\/www\.metacafe\.com\/watch\/(.*?)\/(.*?)(\/.*|$)/, url:'http://www.metacafe.com/fplayer/$1/$2.swf', width:400, height:345} 
+	],
+
+	// Parses the suplied HTML and returns an object with the url of the video, its width and height
+	ParseHtml : function( html, width, height )
+	{
+		// Check if it's a valid swf and skip the tests
+		var swfFile = new RegExp(".*\.swf$", i) ;
+		if ( swfFile.test(html) )
+				return {url: html, width: width, height: height } ;
+
+		// Generic system to work with any proposed embed by the site (as long as it matches the previous regexps
+		for(var i=0; i< this.Objects.length; i++)
+		{
+			// Using XRegExp to work with named captures: http://stevenlevithan.com/regex/xregexp/
+			var re = new XRegExp( this.Objects[i] ) ;
+			var parts = re.exec( html ) ;
+			if (parts)
+				return {url: parts.url, width: parts.width, height: parts.height };
+		}
+
+		// Ability to paste the url of the web site and extract the correct info. It needs to be adjusted for every site.
+		for(var i=0; i< this.webPages.length; i++)
+		{
+			var page = this.webPages[i] ;
+			var oMatch = html.match( page.re ) ;
+			if (oMatch)
+			{
+				return {url: html.replace(page.re, page.url), width: page.width, height: page.height};
+			}
+		}
+		
+		return {url: html, width: width, height: height } ;
+	}
+};
+
+
+
+
+
+// XRegExp 0.5.1, <stevenlevithan.com>, MIT License
+if(!window.XRegExp){(function(){var D={exec:RegExp.prototype.exec,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},C={part:/(?:[^\\([#\s.]+|\\(?!k<[\w$]+>)[\S\s]?|\((?=\?(?!#|<[\w$]+>)))+|(\()(?:\?(?:(#)[^)]*\)|<([$\w]+)>))?|\\k<([\w$]+)>|(\[\^?)|([\S\s])/g,replaceVar:/(?:[^$]+|\$(?![1-9$&`']|{[$\w]+}))+|\$(?:([1-9]\d*|[$&`'])|{([$\w]+)})/g,extended:/^(?:\s+|#.*)+/,quantifier:/^(?:[?*+]|{\d+(?:,\d*)?})/,classLeft:/&&\[\^?/g,classRight:/]/g},A=function(H,F,G){for(var E=G||0;E<H.length;E++){if(H[E]===F){return E}}return -1},B=/()??/.exec("")[1]!==undefined;XRegExp=function(N,H){if(N instanceof RegExp){if(H!==undefined){throw TypeError("can't supply flags when constructing one RegExp from another")}return N.addFlags()}var H=H||"",E=H.indexOf("s")>-1,J=H.indexOf("x")>-1,O=false,Q=[],G=[],F=C.part,K,I,M,L,P;F.lastIndex=0;while(K=D.exec.call(F,N)){if(K[2]){if(!C.quantifier.test(N.slice(F.lastIndex))){G.push("(?:)")}}else{if(K[1]){Q.push(K[3]||null);if(K[3]){O=true}G.push("(")}else{if(K[4]){L=A(Q,K[4]);G.push(L>-1?"\\"+(L+1)+(isNaN(N.charAt(F.lastIndex))?"":"(?:)"):K[0])}else{if(K[5]){if(N.charAt(F.lastIndex)==="]"){G.push(K[5]==="["?"(?!)":"[\\S\\s]");F.lastIndex++}else{I=XRegExp.matchRecursive("&&"+N.slice(K.index),C.classLeft,C.classRight,"",{escapeChar:"\\"})[0];G.push(K[5]+I+"]");F.lastIndex+=I.length+1}}else{if(K[6]){if(E&&K[6]==="."){G.push("[\\S\\s]")}else{if(J&&C.extended.test(K[6])){M=D.exec.call(C.extended,N.slice(F.lastIndex-1))[0].length;if(!C.quantifier.test(N.slice(F.lastIndex-1+M))){G.push("(?:)")}F.lastIndex+=M-1}else{G.push(K[6])}}}else{G.push(K[0])}}}}}}P=RegExp(G.join(""),D.replace.call(H,/[sx]+/g,""));P._x={source:N,captureNames:O?Q:null};return P};RegExp.prototype.exec=function(I){var G=D.exec.call(this,I),F,H,E;if(G){if(B&&G.length>1){E=new RegExp("^"+this.source+"$(?!\\s)",this.getNativeFlags());D.replace.call(G[0],E,function(){for(H=1;H<arguments.length-2;H++){if(arguments[H]===undefined){G[H]=undefined}}})}if(this._x&&this._x.captureNames){for(H=1;H<G.length;H++){F=this._x.captureNames[H-1];if(F){G[F]=G[H]}}}if(this.global&&this.lastIndex>(G.index+G[0].length)){this.lastIndex--}}return G};String.prototype.match=function(E){if(!(E instanceof RegExp)){E=new XRegExp(E)}if(E.global){return D.match.call(this,E)}return E.exec(this)};String.prototype.replace=function(F,G){var E=(F._x||{}).captureNames;if(!(F instanceof RegExp&&E)){return D.replace.apply(this,arguments)}if(typeof G==="function"){return D.replace.call(this,F,function(){arguments[0]=new String(arguments[0]);for(var H=0;H<E.length;H++){if(E[H]){arguments[0][E[H]]=arguments[H+1]}}return G.apply(window,arguments)})}else{return D.replace.call(this,F,function(){var H=arguments;return D.replace.call(G,C.replaceVar,function(J,I,M){if(I){switch(I){case"$":return"$";case"&":return H[0];case"`":return H[H.length-1].slice(0,H[H.length-2]);case"'":return H[H.length-1].slice(H[H.length-2]+H[0].length);default:var K="";I=+I;while(I>E.length){K=D.split.call(I,"").pop()+K;I=Math.floor(I/10)}return(I?H[I]:"$")+K}}else{if(M){var L=A(E,M);return L>-1?H[L+1]:J}else{return J}}})})}};String.prototype.split=function(J,F){if(!(J instanceof RegExp)){return D.split.apply(this,arguments)}var G=[],E=J.lastIndex,K=0,I=0,H;if(F===undefined||+F<0){F=false}else{F=Math.floor(+F);if(!F){return[]}}if(!J.global){J=J.addFlags("g")}else{J.lastIndex=0}while((!F||I++<=F)&&(H=J.exec(this))){if(J.lastIndex>K){G=G.concat(this.slice(K,H.index),(H.index===this.length?[]:H.slice(1)));K=J.lastIndex}if(!H[0].length){J.lastIndex++}}G=K===this.length?(J.test("")?G:G.concat("")):(F?G:G.concat(this.slice(K)));J.lastIndex=E;return G}})()}RegExp.prototype.getNativeFlags=function(){return(this.global?"g":"")+(this.ignoreCase?"i":"")+(this.multiline?"m":"")+(this.extended?"x":"")+(this.sticky?"y":"")};RegExp.prototype.addFlags=function(A){var B=new XRegExp(this.source,(A||"")+this.getNativeFlags());if(this._x){B._x={source:this._x.source,captureNames:this._x.captureNames?this._x.captureNames.slice(0):null}}return B};RegExp.prototype.call=function(A,B){return this.exec(B)};RegExp.prototype.apply=function(B,A){return this.exec(A[0])};XRegExp.cache=function(C,A){var B="/"+C+"/"+(A||"");return XRegExp.cache[B]||(XRegExp.cache[B]=new XRegExp(C,A))};XRegExp.escape=function(A){return A.replace(/[-[\]{}()*+?.\\^$|,#\s]/g,"\\$&")};XRegExp.matchRecursive=function(P,D,S,F,B){var B=B||{},V=B.escapeChar,K=B.valueNames,F=F||"",Q=F.indexOf("g")>-1,C=F.indexOf("i")>-1,H=F.indexOf("m")>-1,U=F.indexOf("y")>-1,F=F.replace(/y/g,""),D=D instanceof RegExp?(D.global?D:D.addFlags("g")):new XRegExp(D,"g"+F),S=S instanceof RegExp?(S.global?S:S.addFlags("g")):new XRegExp(S,"g"+F),I=[],A=0,J=0,N=0,L=0,M,E,O,R,G,T;if(V){if(V.length>1){throw SyntaxError("can't supply more than one escape character")}if(H){throw TypeError("can't supply escape character when using the multiline flag")}G=XRegExp.escape(V);T=new RegExp("^(?:"+G+"[\\S\\s]|(?:(?!"+D.source+"|"+S.source+")[^"+G+"])+)+",C?"i":"")}while(true){D.lastIndex=S.lastIndex=N+(V?(T.exec(P.slice(N))||[""])[0].length:0);O=D.exec(P);R=S.exec(P);if(O&&R){if(O.index<=R.index){R=null}else{O=null}}if(O||R){J=(O||R).index;N=(O?D:S).lastIndex}else{if(!A){break}}if(U&&!A&&J>L){break}if(O){if(!A++){M=J;E=N}}else{if(R&&A){if(!--A){if(K){if(K[0]&&M>L){I.push([K[0],P.slice(L,M),L,M])}if(K[1]){I.push([K[1],P.slice(M,E),M,E])}if(K[2]){I.push([K[2],P.slice(E,J),E,J])}if(K[3]){I.push([K[3],P.slice(J,N),J,N])}L=N}else{I.push(P.slice(E,J))}if(!Q){break}}}else{D.lastIndex=S.lastIndex=0;throw Error("subject data contains unbalanced delimiters")}}if(J===N){N++}}if(Q&&!U&&K&&K[0]&&P.length>L){I.push([K[0],P.slice(L),L,P.length])}D.lastIndex=S.lastIndex=0;return I};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js	(revision 1610)
@@ -0,0 +1,14 @@
+FCKLang.DlgFlashvars			= 'Flashvars';
+
+FCKLang.DlgFlashScriptaccess = 'Acceso de Scripts';
+FCKLang.DlgFlashAlways = 'Siempre';
+FCKLang.DlgFlashSameDomain = 'El mismo dominio';
+FCKLang.DlgFlashNever = 'Nunca';
+FCKLang.DlgFlashWindowMode = 'Wmode';
+FCKLang.DlgFlashWindow = 'Ventana';
+FCKLang.DlgFlashOpaque = 'Opaco';
+FCKLang.DlgFlashTransparent = 'Transparente';
+FCKLang.DlgFlashAllowfullscreen = 'Permitir ventana completa';
+
+// para que quede en una linea
+FCKLang.DlgFlashChkMenu = 'Menú Flash';
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js	(revision 1610)
@@ -0,0 +1,11 @@
+FCKLang.DlgFlashvars			= 'Flashvars';
+
+FCKLang.DlgFlashScriptaccess = 'Script Access';
+FCKLang.DlgFlashAlways = 'Always';
+FCKLang.DlgFlashSameDomain = 'Same Domain';
+FCKLang.DlgFlashNever = 'Never';
+FCKLang.DlgFlashWindowMode = 'Window Mode';
+FCKLang.DlgFlashWindow = 'Window';
+FCKLang.DlgFlashOpaque = 'Opaque';
+FCKLang.DlgFlashTransparent = 'Transparent';
+FCKLang.DlgFlashAllowfullscreen = 'Allow Fullscreen';
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/preview.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/preview.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/installation.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/installation.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html	(revision 1610)
@@ -0,0 +1,113 @@
+﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>SWFObject plugin</title>
+<link href="styles.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>SWFObject Plugin for FCKeditor</h1>
+<!--
+<div id="languages"> Change your language 
+  <ul>
+    <li><a href="install_es.html" lang="es"><img src="es.png" alt="Español" width="23" height="15" border="0"></a></li>
+  </ul>
+</div>
+-->
+<h2>Introduction</h2>
+<p>This is a dialog-based plugin to replace the default flash insertion in <a href="http://www.fckeditor.net">FCKeditor</a> (using &lt;embed&gt;) with <a href="http://code.google.com/p/swfobject/">SWFObject 2</a> (with the dynamic publishing method, &lt;script&gt;)</p>
+<p>Besides generating the code with SWFObject, the insertion dialog allows to set the allowscriptaccess, wmode and allowfullscreen Flash parameters, and the posibility to add any flashvars that you need.</p>
+<h3 id="contact">Author:</h3>
+<p><a href="mailto:amla70@gmail.com">Alfonso Mart&iacute;nez de Lizarrondo</a></p>
+<h3>Sponsored by:</h3>
+<p><a href="http://www.incontrolsolutions.com">InControl Solutions</a></p>
+<p><a href="http://www.uritec.net">Uritec</a></p>
+<h3>Version history: </h3>
+<ol>
+  <li>1.0: 14/09/2008. Based on standard flash dialog.</li>
+  <li>1.1: 15/09/2008. Fixes, add flashvars editor, fullscreen, allowscriptaccess, wmode</li>
+  <li>1.2: 21/09/2008. Fixes for IE, added the swfobject_WrapperClass option. Included the FCKCommentsProcessor code. Change behavior according to the swfObjectPath value.</li>
+  <li>1.3: 26/09/2008. More fixes for IE. It should work also in FCKeditor 2.5.</li>
+  <li>1.4: 26/10/2008. Automatic parsing of embedding code pasted in the url field. Added the swfObject_FlashVersion and swfObject_ExpressInstall configuration options.</li>
+	<li>1.5: 26/11/2008. Use by default a library hosted by Google, so no extra steps required to install. Added CDATA coments for the generated script.</li>
+	<li>1.6: 06/08/2009. Updated the default linked library to <a href="http://code.google.com/p/swfobject/wiki/whats_new">SWFObject 2.2</a>.</li>
+</ol>
+<p><a href="http://martinezdelizarrondo.com/swfobject/">Get the latest version and/or updated info</a> </p>
+
+<h2>Installation</h2>
+<h3>1. Copying the files</h3>
+<p>Extract the contents of the zip in you plugins directory, so it ends up like
+    this<br>
+    <img src="installation.png" alt="Screenshot of installation" width="311" height="346" longdesc="#install"></p>
+<pre id="install">
+editor\
+	...
+	js\
+	lang\
+	plugins\
+		...
+		swfobject
+			fckplugin.js
+			readme.html
+			dialog\
+			docs\
+			images\
+			lang\
+		...
+	skins\
+</pre>
+<h3>2. Adding it to FCKeditor</h3>
+<p>Now add in your <em>fckconfig.js</em> or custom js configuration
+file the following line:
+<code>FCKConfig.Plugins.Add( 'swfobject', 'en,es') ;</code>
+</p>
+<h3>3. Adding it to the toolbarset</h3>
+<p>This plugin replaces the default flash dialog, just use the normal 'Flash' button.
+</p>
+<h3 id="configure">4. Configure the plugin</h3>
+<p>These are the possible config values:</p>
+<ul>
+	<li id="swfObjectPath">FCKConfig.<strong>swfObjectPath</strong>: It's the path to the version of the SwfObject script<br>
+	Since 1.5, if this entry is missing then it will default to use a <a href="http://code.google.com/p/swfobject/wiki/hosted_library">version hosted by Google</a>. If you want to use a script hosted in your server, then go to the <a href="http://code.google.com/p/swfobject/">SWFObject page</a> and download it, extract it in some place in your server, and then put the path to the swfobject.js file in this entry.<br>
+	Note: if you leave an empty string (FCKConfig.swfObjectPath = "") then the plugin won't generate the code to include the SWFObject plugin, it's assumed that you have already included it in your page.
+	</li>
+	<li id="WrapperClass">FCKConfig.<strong>swfobject_WrapperClass</strong>: If this entry contains a non-empty value then a div
+	will be generated with this class wrapping the flash object<br>
+	Important: in the preview inside the editor, the class will be applied to an image, not a div!</li>
+	<li id="FlashVersion">FCKConfig.<strong>swfobject_FlashVersion</strong>: It represents the version of the flash player that your movie
+	was published for. If this entry doesn't exist it defaults to "7.0.0". </li>
+	<li id="ExpressInstall">FCKConfig.<strong>swfObject_ExpressInstall</strong>: It can contain the path to a swf movie to activate the Express install feature. It's the parameter explained in the third point of <a href="http://code.google.com/p/swfobject/wiki/documentation#STEP_3:_Register_your_Flash_content_with_the_SWFObject_library_a">the SWFObject documentation</a></li>
+</ul>
+
+<p>All these values can be set in the <em>fckconfig.js</em> file, a custom js configuration
+  file, or at the moment of the <a href="http://alfonsoml.blogspot.com/2008/02/adding-configuration-entries-when.html">creation of the FCKeditor instance using any
+  language</a>.</p>
+<h3>5. Use it</h3>
+<p align="right">Now empty the cache of your browser and reload the editor, the new Flash dialog will be shown.</p>
+<p>Besides generating the code with SWFObject, the insertion dialog allows to set the allowscriptaccess, wmode and allowfullscreen Flash parameters, and the posibility to add any flashvars that you need.</p>
+<p>Since version 1.4, pasting embedding code generated by external sites as YouTube 
+<code>&lt;object width="425" height="344"&gt;
+&lt;param name="movie" value="http://www.youtube.com/v/nj2hewPBQh0&hl=es&fs=1"&gt;&lt;/param&gt;
+&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;
+&lt;embed src="http://www.youtube.com/v/nj2hewPBQh0&hl=es&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
+&lt;/object&gt;
+</code> does generate the proper code in FCKeditor</p>
+<h2>Final notes</h2>
+<p>If you find this plugin useful, consider making a donation so it can be further
+improved, any amount can help to keep the development running.</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick">
+<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIH2QYJKoZIhvcNAQcEoIIHyjCCB8YCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAbYIYvNE50oNSFj8nHIeZ0/T5OzQfY8n+5fliwYQtSYuvHnix6+DAVVKVuRmpV4EnbzXNssyi+sdCZb+Sn7nBH7+KWP5+4L4NMIcA7OkXsoPz6qV/nBwUBnovch1hU7sqREOZJAUc42/SzvEQ5Hn+aMuGUVeLlp8BLlif2wmPkhDELMAkGBSsOAwIaBQAwggFVBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECI9Erh51StqNgIIBMBptZf5Yd10wgcMUGRODhBxYbwKlGL8FUm5S+AftDhUnXUK6IzYorscKgaxI0ks1k+KnIO9QH7L9WwlQjSiDWXtcMjEkY7qMc99MpForo2gobt7U3OK3u00vNUm9krXwLN7S56hpvn9iyXuMi5V+4FbYe8pjn1OA/+tA7wOTgyGDhthQbLiQRQq9zWXiclYUjuhdMdeNfDHbpjeCiIoWb8AasDokSjgM8Xl0ls3nPEH4haiVTJ+uo2D28GfbDnjohaUq1A/ykweP3cBRMqYuXe6aqbciDA6NqRzrHQ7IjaXAMnLaGkV+1PjNWJi/TEAWeHD3p/JP1lAOX3vXW0tDQc0ylcJuy4khtoLjxg9/ZHFzSPfTh0ajUL1IzDremTfetBUelmiVsgZvycuWpIyUzLGgggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS+Ndl72T7oKJ4u4uw+6awntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe/hJl66/RGqrj5rFb08sAABNTzDTiqqNpJeBsYs/c2aiGozptX2RlnBktH+SUNpAajW724Nv2Wvhif6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7BgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71+jq6OKidbWFSE+Q4FqROvdgIONth+8kSK//Y/4ihuE4Ymvzn5ceE3S/iBSQQMjyvb+s2TWbQYDwcp129OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa+u4qectsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNzA4MzEyMDU2NDhaMCMGCSqGSIb3DQEJBDEWBBQjaqRi8z31g3jdLrk+d0klj24zkjANBgkqhkiG9w0BAQEFAASBgFDK8nFr91urBOkipQBqjhhXY/tTNSVhFV0GsJSMQ3zdsgyMcZP5b4WohD5NLoPCibKL7nihgPd9AFCVyw6fLOg82F1MojGS2Gu6c6bGD2L827VCyg1WRm14svHTEwSnprvxBEbi91cBrQcNP5MZFDOuoucZg9uPGr/S8xzp0+Af-----END PKCS7-----
+">
+</form>
+<p>If you need some special feature for this plugin, or if you need any other kind of plugin 
+for FCKeditor then <a href="#contact">contact me</a> and we can discuss it</p>
+<h2>Disclaimers</h2>
+<p>FCKeditor is &copy; FredCK.com</p>
+<p>The SWFObject is Copyright &copy; 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis</p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html	(revision 1610)
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>googlemaps plugin index</title>
+ <META http-equiv="refresh" content="0;URL=install.html">
+</head> 
+<body>
+	<p>You should have been redirected <a href="install.html">to the documentation</a></p>
+</body>
+</html> 
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css	(revision 1610)
@@ -0,0 +1,59 @@
+body {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 90%;
+}
+h1 {
+	text-align:center;
+	font-size:180%;
+}
+h2 {
+	border-bottom:2px solid #CCC;
+	margin:1em 0 0.4em 0;
+}
+h3 {
+	margin-bottom:0.4em;
+}
+p {
+	margin:0 0 1em 1em;
+	text-align:justify;
+}
+ol {
+	margin:0 0 1.2em 1em;
+	padding:0;
+	list-style-type:none;
+}
+ol li {
+	margin:0.2em 0;
+}
+pre, code {
+	font-size:100%;
+	font-family:"Courier New", Courier, mono;
+	background-color: #CCCCCC;
+	border:1px solid #999;
+	padding:0.2em 1em;
+	margin: 0.4em 0;
+	display:block;
+	white-space: pre;
+	overflow: auto;
+}
+form {
+	margin:0 0 0 1em;
+}
+span.key {
+	color: #006600;
+}
+#install {
+	display:none
+}
+#languages ul {
+	display:inline;
+	list-style-type:none;
+	margin:0;
+	padding:0;
+}
+#languages li {
+	display:inline;
+	margin:0;
+	padding:0;
+	vertical-align:bottom;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+ID
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html	(revision 1610)
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>googlemaps plugin index</title>
+ <META http-equiv="refresh" content="0;URL=docs/install.html">
+</head> 
+<body>
+	<p>You should have been redirected <a href="docs/install.html">to the documentation</a></p>
+</body>
+</html> 
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js	(revision 1610)
@@ -0,0 +1,548 @@
+﻿/*
+ *
+ * File Name: fckplugin.js
+ * 	Plugin to add flash files using SwfObject 2
+ *
+ * File Authors:
+ * 		Alfonso Martínez de Lizarrondo
+ *
+ * Developed for InControlSolutions
+ *
+ * Version: 1.5
+ */
+
+
+/**
+	FCKCommentsProcessor
+	---------------------------
+	It's run after a document has been loaded, it detects all the protected source elements
+
+	In order to use it, you add your comment parser with
+	FCKCommentsProcessor.AddParser( function )
+*/
+if (typeof FCKCommentsProcessor === 'undefined')
+{
+	var FCKCommentsProcessor = FCKDocumentProcessor.AppendNew() ;
+	FCKCommentsProcessor.ProcessDocument = function( oDoc )
+	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return ;
+
+		if ( !oDoc )
+			return ;
+
+	//Find all the comments: <!--{PS..0}-->
+	//try to choose the best approach according to the browser:
+		if ( oDoc.evaluate )
+			this.findCommentsXPath( oDoc );
+		else
+		{
+			if (oDoc.all)
+				this.findCommentsIE( oDoc.body ) ;
+			else
+				this.findComments( oDoc.body ) ;
+		}
+
+	}
+
+	FCKCommentsProcessor.findCommentsXPath = function(oDoc) {
+		var nodesSnapshot = oDoc.evaluate('//body//comment()', oDoc.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
+
+		for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ )
+		{
+			this.parseComment( nodesSnapshot.snapshotItem(i) ) ;
+		}
+	}
+
+	FCKCommentsProcessor.findCommentsIE = function(oNode) {
+		var aComments = oNode.getElementsByTagName( '!' );
+		for(var i=aComments.length-1; i >=0 ; i--)
+		{
+			var comment = aComments[i] ;
+			if (comment.nodeType == 8 ) // oNode.COMMENT_NODE)
+				this.parseComment( comment ) ;
+		}
+	}
+
+	// Fallback function, iterate all the nodes and its children searching for comments.
+	FCKCommentsProcessor.findComments = function( oNode )
+	{
+		if (oNode.nodeType == 8 ) // oNode.COMMENT_NODE)
+		{
+			this.parseComment( oNode ) ;
+		}
+		else
+		{
+			if (oNode.hasChildNodes())
+			{
+				var children = oNode.childNodes ;
+				for (var i = children.length-1; i >=0 ; i--)
+					this.findComments( children[ i ] );
+			}
+		}
+	}
+
+	// We get a comment node
+	// Check that it's one that we are interested on:
+	FCKCommentsProcessor.parseComment = function( oNode )
+	{
+		var value = oNode.nodeValue ;
+
+		// Difference between 2.4.3 and 2.5
+		var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS\\.\\.' ) ;
+
+		var regex = new RegExp( "\\{" + prefix + "(\\d+)\\}", "g" ) ;
+
+		if ( regex.test( value ) )
+		{
+			var index = RegExp.$1 ;
+			var content = FCKTempBin.Elements[ index ] ;
+
+			// Now call the registered parser handlers.
+			var oCalls = this.ParserHandlers ;
+			if ( oCalls )
+			{
+				for ( var i = 0 ; i < oCalls.length ; i++ )
+					oCalls[ i ]( oNode, content, index ) ;
+
+			}
+
+		}
+	}
+
+	/**
+		The users of the object will add a parser here, the callback function gets two parameters:
+			oNode: it's the node in the editorDocument that holds the position of our content
+			oContent: it's the node (removed from the document) that holds the original contents
+			index: the reference in the FCKTempBin of our content
+	*/
+	FCKCommentsProcessor.AddParser = function( handlerFunction )
+	{
+		if ( !this.ParserHandlers )
+			this.ParserHandlers = [ handlerFunction ] ;
+		else
+		{
+			// Check that the event handler isn't already registered with the same listener
+			// It doesn't detect function pointers belonging to an object (at least in Gecko)
+			if ( this.ParserHandlers.IndexOf( handlerFunction ) == -1 )
+				this.ParserHandlers.push( handlerFunction ) ;
+		}
+	}
+}
+/**
+	END of FCKCommentsProcessor
+	---------------------------
+*/
+
+/**
+  @desc  inject the function
+  @author  Aimingoo&Riceball
+*/
+function Inject( aOrgFunc, aBeforeExec, aAtferExec ) {
+  return function() {
+    if (typeof(aBeforeExec) == 'function') arguments = aBeforeExec.apply(this, arguments) || arguments;
+    //convert arguments object to array
+    var Result, args = [].slice.call(arguments);
+    args.push(aOrgFunc.apply(this, args));
+    if (typeof(aAtferExec) == 'function') Result = aAtferExec.apply(this, args);
+    return (typeof(Result) != 'undefined')?Result:args.pop();
+  } ;
+}
+
+// If it hasn't been set, then use a version hosted by Google.
+if (typeof FCKConfig.swfObjectPath === 'undefined')
+	FCKConfig.swfObjectPath = "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" ;
+
+
+// Replace the default flash dialog:
+FCKCommands.LoadedCommands[ 'Flash' ] = new FCKDialogCommand( 'Flash', FCKLang.DlgFlashTitle, FCKPlugins.Items['swfobject'].Path + 'dialog/fck_flash.html', 450, 390 ) ;
+
+// Check if the comment it's one of our scripts:
+FCKCommentsProcessor.AddParser(  function( oNode, oContent, index)
+{
+		if ( FCK.SwfobjectHandler.detectScript( oContent ) )
+		{
+			var oSWF = FCK.SwfobjectHandler.createNew() ;
+			oSWF.parse( oContent ) ;
+			oSWF.createHtmlElement( oNode, index ) ;
+		}
+		else
+		{
+			if ( FCK.SwfobjectHandler.detectSwfObjectScript( oContent ) )
+				oNode.parentNode.removeChild( oNode );
+		}
+} );
+
+// Context menu
+FCK.ContextMenu.RegisterListener( {
+	AddItems : function( menu, tag, tagName )
+	{
+		// under what circumstances do we display this option
+		if ( tagName == 'IMG' && tag.getAttribute( 'swfobjectnumber' ) )
+		{
+//			menu.AddSeparator() ;
+			// No other options:
+			menu.RemoveAllItems() ;
+			// the command needs the registered command name, the title for the context menu, and the icon path
+			menu.AddItem( 'Flash', FCKLang.FlashProperties, 38 ) ;
+		}
+	}}
+);
+
+// Double click
+FCK.RegisterDoubleClickHandler( function( oNode )
+{
+	if ( !oNode.getAttribute( 'swfobjectnumber' ))
+		return ;
+
+	FCK.Commands.GetCommand( 'Flash' ).Execute() ;
+}, 'IMG' ) ;
+
+
+// Object that handles the common functions about all the players
+FCK.SwfobjectHandler = {
+	// Object to store a reference to each player
+	Items: {},
+
+	getItem: function(id){
+		return this.Items[id];
+	},
+
+	// Verify that the node is a script generated by this plugin.
+	detectScript: function( script )
+	{
+		// We only know about version 1:
+		if ( !(/FCK swfobject v1\.(\d+)/.test(script)) )
+			return false;
+
+		return true ;
+	},
+
+	// Detects both the google script as well as our ending block
+	// both must be removed and then added later only if neccesary
+	detectSwfObjectScript: function( script )
+	{
+		return (/<script.*>\/\/swfobject plugin<\/script>/.test(script) ) ;
+	},
+
+	SwfObjectScript : function()
+	{
+		return (FCKConfig.swfObjectPath === '' ? '' : '\r\n<script src="' + FCKConfig.swfObjectPath + '" type="text/javascript">//swfobject plugin<\/script>'	) ;
+	}() ,
+
+	// This can be called from the dialog
+	createNew: function()
+	{
+		var item = new swfobject() ;
+		this.Items[ item.number ] = item;
+		return item;
+	},
+
+	// We will use this to track the number of maps that are generated
+	// This way we know if we must add the Google Script or not.
+	// We store their names so they are called properly from BuildEndingScript
+	CreatedItemsNames : [],
+
+	// Function that will be injected into the normal core
+	GetXHTMLAfter: function( node, includeNode, format, Result )
+	{
+/*
+		if (FCK.SwfobjectHandler.CreatedItemsNames.length > 0)
+		{
+			Result += FCK.SwfobjectHandler.BuildEndingScript() ;
+		}
+*/
+		// Reset the counter each time the GetXHTML function is called
+		FCK.SwfobjectHandler.CreatedItemsNames = [];
+
+		return Result ;
+	},
+
+	// Store any previous processor so nothing breaks
+	previousProcessor: FCKXHtml.TagProcessors[ 'img' ]
+}
+
+
+
+
+
+// Our object that will handle parsing of the script and creating the new one.
+var swfobject = function()
+{
+	var now = new Date() ;
+	this.number = '' + now.getFullYear() + now.getMonth() + now.getDate() + now.getHours() + now.getMinutes() + now.getSeconds() ;
+
+	this.file = '';
+	this.width = FCKConfig.swfobject_Width || '';
+	this.height = FCKConfig.swfobject_Height || '';
+	this.version = FCKConfig.swfObject_FlashVersion || '7.0.0' ;
+	this.expressInstall = FCKConfig.swfObject_ExpressInstall || false ;
+	if (this.expressInstall) this.expressInstall = '"' + this.expressInstall + '"' ;
+
+	this.flashvars = {};
+	this.params = {scale:'',play:true,menu:true,loop:true,allowfullscreen:false,wmode:'',allowscriptaccess:''};
+	this.attributes = {id:'',"class":'',style:'',title:''};
+
+	this.WrapperClass = FCKConfig.swfobject_WrapperClass || '' ;
+}
+
+
+swfobject.prototype.createHtmlElement = function( oReplacedNode, index)
+{
+	var oFakeNode = FCK.EditorDocument.createElement( 'IMG' ) ;
+
+	// Are we creating a new map?
+	if ( !oReplacedNode )
+	{
+    index = FCKTempBin.AddElement( this.BuildScript() ) ;
+		var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS..' ) ;
+		oReplacedNode = FCK.EditorDocument.createComment( '{' + prefix + index + '}' ) ;
+		FCK.InsertElement(oReplacedNode);
+	}
+//	oFakeNode.contentEditable = false ;
+//	oFakeNode.setAttribute( '_fckfakelement', 'true', 0 ) ;
+
+	oFakeNode.setAttribute( '_fckrealelement', FCKTempBin.AddElement( oReplacedNode ), 0 ) ;
+	oFakeNode.setAttribute( '_fckBinNode', index, 0 ) ;
+
+	oFakeNode.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
+	oFakeNode.style.display = 'block' ;
+	oFakeNode.style.border = '1px solid black' ;
+	oFakeNode.style.background = 'white center center url("' + FCKPlugins.Items['swfobject'].Path + 'images/preview.png' + '") no-repeat' ;
+
+	oFakeNode.setAttribute("SwfObjectNumber", this.number, 0) ;
+
+	oReplacedNode.parentNode.insertBefore( oFakeNode, oReplacedNode ) ;
+	oReplacedNode.parentNode.removeChild( oReplacedNode ) ;
+
+	// dimensions
+	this.updateHTMLElement( oFakeNode );
+
+	return oFakeNode ;
+}
+
+swfobject.prototype.updateScript = function( oFakeNode )
+{
+	this.updateDimensions( oFakeNode ) ;
+
+	var index = oFakeNode.getAttribute( '_fckBinNode' );
+	FCKTempBin.Elements[ index ] =  this.BuildScript() ;
+}
+
+swfobject.prototype.updateHTMLElement = function( oFakeNode )
+{
+	oFakeNode.width = this.width ;
+	oFakeNode.height = this.height ;
+
+	// The wrapper class is applied to the IMG not to a wrapping DIV !!!
+	if ( this.WrapperClass !== '')
+		oFakeNode.className = this.WrapperClass ;
+}
+
+// Read the dimensions back from the fake node (the user might have manually resized it)
+swfobject.prototype.updateDimensions = function( oFakeNode )
+{
+	var iWidth, iHeight ;
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+
+	if ( oFakeNode.style.width )
+	{
+		var aMatchW  = oFakeNode.style.width.match( regexSize ) ;
+		if ( aMatchW )
+		{
+			iWidth = aMatchW[1] ;
+			oFakeNode.style.width = '' ;
+			oFakeNode.width = iWidth ;
+		}
+	}
+
+	if ( oFakeNode.style.height )
+	{
+		var aMatchH  = oFakeNode.style.height.match( regexSize ) ;
+		if ( aMatchH )
+		{
+			iHeight = aMatchH[1] ;
+			oFakeNode.style.height = '' ;
+			oFakeNode.height = iHeight ;
+		}
+	}
+
+	this.width	= iWidth ? iWidth : oFakeNode.width ;
+	this.height	= iHeight ? iHeight : oFakeNode.height ;
+}
+
+swfobject.prototype.parse = function( script )
+{
+	function parseValue(value)
+	{
+		if (value==="true")
+			return true;
+		if (value==="false")
+			return false;
+		return value ;
+	}
+
+	// We only know about version 1:
+	if ( !(/FCK swfobject v1\.(\d+)/.test(script)) )
+		return false;
+
+	var version = parseInt(RegExp.$1, 10) ;
+
+	// dimensions:
+	var regexpDimensions = /<div id="flash(\d+)" style="width\:\s*(\d+)px; height\:\s*(\d+)px;">/ ;
+	if (regexpDimensions.test( script ) )
+	{
+		delete FCK.SwfobjectHandler.Items[this.number] ;
+		this.number = RegExp.$1 ;
+		FCK.SwfobjectHandler.Items[this.number] = this ;
+
+		this.width = RegExp.$2 ;
+		this.height = RegExp.$3 ;
+	}
+
+	var regexpWrapper = /<div class=("|')(.*)\1.*\/\/wrapper/ ;
+	if (regexpWrapper.test( script ) )
+		this.WrapperClass = RegExp.$2 ;
+	else
+		this.WrapperClass = '' ;
+
+// swfobject.embedSWF("/userfiles/flash/gridlock.swf", "flash200881416419", 300, 100, "7.0.0", "", flashvars, params, attributes);
+	var regexpFile = /swfobject\.embedSWF\("(.*?)",/ ;
+	if (regexpFile.test( script ) )
+		this.file = RegExp.$1 ;
+
+	// parse automatically all the variables.
+	var regexpParams = /params\["(.*)"\]="(.*)"/g ;
+	var regexpAttributes = /attributes\["(.*)"\]="(.*)"/g ;
+	var regexpFlashvars = /flashvars\["(.*)"\]="(.*)"/g ;
+	if (version<3)
+	{
+		regexpParams = /params.(.*)="(.*)"/g ;
+		regexpAttributes = /attributes.(.*)="(.*)"/g ;
+		regexpFlashvars = /flashvars.(.*)="(.*)"/g ;
+	}
+
+	while( (result = regexpParams.exec(script)) )
+	{
+		this.params[result[1]] = parseValue(result[2]) ;
+	}
+
+	while( (result = regexpAttributes.exec(script)) )
+	{
+		this.attributes[result[1]] = parseValue(result[2]) ;
+	}
+
+	while( (result = regexpFlashvars.exec(script)) )
+	{
+		this.flashvars[result[1]] = parseValue(result[2]) ;
+	}
+
+	return true;
+}
+
+swfobject.prototype.BuildScript = function()
+{
+	var versionMarker = '/* FCK swfobject v1.5 */' ;
+
+	var v, aScript = [] ;
+	aScript.push('\r\n<script type="text/javascript">') ;
+	aScript.push('/*<![CDATA[*/');
+	aScript.push( versionMarker ) ;
+
+	if ( this.WrapperClass !== '')
+		aScript.push('document.write(\'<div class="' + this.WrapperClass + '">\'); //wrapper');
+
+	aScript.push('document.write(\'<div id="flash' + this.number + '" style="width:' + this.width + 'px; height:' + this.height + 'px;"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player<\\\/a> to see this player.<\\\/div>\');');
+
+	if ( this.WrapperClass !== '')
+		aScript.push('document.write(\'<\\\/div>\'); ');
+
+
+	aScript.push('var params={};');
+	aScript.push('var attributes={};');
+	aScript.push('var flashvars = {};');
+
+	for(v in this.params)
+	{
+		if (this.params[v]!=='')
+			aScript.push('	params["' + v + '"]="' + this.params[v] + '";');
+	}
+
+	for(v in this.attributes)
+	{
+		if (this.attributes[v]!=='')
+			aScript.push('	attributes["' + v + '"]="' + this.attributes[v] + '";');
+	}
+
+	for(v in this.flashvars)
+	{
+		if (this.flashvars[v]!=='')
+			aScript.push('	flashvars["' + v + '"]="' + this.flashvars[v] + '";');
+	}
+
+	aScript.push('swfobject.embedSWF("' + this.file + '", "flash' + this.number + '", ' + this.width + ', ' + this.height + ', "' + this.version + '", ' + this.expressInstall + ', flashvars, params, attributes);') ;
+
+	aScript.push('/*]]>*/');
+	aScript.push('</script>');
+
+	return aScript.join('\r\n');
+}
+
+
+
+
+// Modifications of the core routines of FCKeditor:
+
+FCKXHtml.GetXHTML = Inject(FCKXHtml.GetXHTML, null, FCK.SwfobjectHandler.GetXHTMLAfter ) ;
+
+FCKXHtml.TagProcessors.img = function( node, htmlNode, xmlNode )
+{
+	if ( htmlNode.getAttribute( 'SwfObjectNumber' ) )
+	{
+		var oMap = FCK.SwfobjectHandler.getItem( htmlNode.getAttribute( 'SwfObjectNumber' ) ) ;
+		FCK.SwfobjectHandler.CreatedItemsNames.push( oMap.number ) ;
+
+		oMap.updateScript( htmlNode );
+		node = FCK.GetRealElement( htmlNode ) ;
+		if ( FCK.SwfobjectHandler.CreatedItemsNames.length == 1 )
+		{
+			// If it is the first map, insert the google maps script
+			var index = FCKTempBin.AddElement( FCK.SwfobjectHandler.SwfObjectScript ) ;
+			var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS..' ) ;
+			oScriptCommentNode = xmlNode.ownerDocument.createComment( '{' + prefix + index + '}' ) ;
+			xmlNode.appendChild( oScriptCommentNode ) ;
+		}
+
+		return xmlNode.ownerDocument.createComment( node.nodeValue ) ;
+	}
+
+	if (typeof FCK.SwfobjectHandler.previousProcessor == 'function')
+		node = FCK.SwfobjectHandler.previousProcessor( node, htmlNode, xmlNode ) ;
+	else
+		node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+};
+
+
+// Returns an array with the available classes defined in the Styles
+function GetAvailableClasses( nodeName )
+{
+	var styles = FCK.Styles.GetStyles() ;
+	var aClasses = [{name:'', classname:''}];
+
+	for ( var styleName in styles )
+	{
+		var style = styles[styleName] ;
+		if (style.IsCore)
+			continue;
+
+		if (style.Element == nodeName)
+		{
+			if (style._StyleDesc.Attributes && style._StyleDesc.Attributes['class'] )
+				aClasses.push( {name:styleName, classname:style._StyleDesc.Attributes['class']} ) ;
+		}
+	}
+
+	return aClasses ;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/fckplugin.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/fckplugin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/dragresizetable/fckplugin.js	(revision 1610)
@@ -0,0 +1,529 @@
+﻿var FCKDragTableHandler =
+{
+	"_DragState" : 0,
+	"_LeftCell" : null,
+	"_RightCell" : null,
+	"_MouseMoveMode" : 0,	// 0 - find candidate cells for resizing, 1 - drag to resize
+	"_ResizeBar" : null,
+	"_OriginalX" : null,
+	"_MinimumX" : null,
+	"_MaximumX" : null,
+	"_LastX" : null,
+	"_TableMap" : null,
+	"_doc" : document,
+	"_IsInsideNode" : function( w, domNode, pos )
+	{
+		var myCoords = FCKTools.GetWindowPosition( w, domNode ) ;
+		var xMin = myCoords.x ;
+		var yMin = myCoords.y ;
+		var xMax = parseInt( xMin, 10 ) + parseInt( domNode.offsetWidth, 10 ) ;
+		var yMax = parseInt( yMin, 10 ) + parseInt( domNode.offsetHeight, 10 ) ;
+		if ( pos.x >= xMin && pos.x <= xMax && pos.y >= yMin && pos.y <= yMax )
+			return true;
+		return false;
+	},
+	"_GetBorderCells" : function( w, tableNode, tableMap, mouse )
+	{
+		// Enumerate all the cells in the table.
+		var cells = [] ;
+		for ( var i = 0 ; i < tableNode.rows.length ; i++ )
+		{
+			var r = tableNode.rows[i] ;
+			for ( var j = 0 ; j < r.cells.length ; j++ )
+				cells.push( r.cells[j] ) ;
+		}
+
+		if ( cells.length < 1 )
+			return null ;
+
+		// Get the cells whose right or left border is nearest to the mouse cursor's x coordinate.
+		var minRxDist = null ;
+		var lxDist = null ;
+		var minYDist = null ;
+		var rbCell = null ;
+		var lbCell = null ;
+		for ( var i = 0 ; i < cells.length ; i++ )
+		{
+			var pos = FCKTools.GetWindowPosition( w, cells[i] ) ;
+			var rightX = pos.x + parseInt( cells[i].clientWidth, 10 ) ;
+			var rxDist = mouse.x - rightX ;
+			var yDist = mouse.y - ( pos.y + ( cells[i].clientHeight / 2 ) ) ;
+			if ( minRxDist == null ||
+					( Math.abs( rxDist ) <= Math.abs( minRxDist ) &&
+					  ( minYDist == null || Math.abs( yDist ) <= Math.abs( minYDist ) ) ) )
+			{
+				minRxDist = rxDist ;
+				minYDist = yDist ;
+				rbCell = cells[i] ;
+			}
+		}
+		/*
+		var rowNode = FCKTools.GetElementAscensor( rbCell, "tr" ) ;
+		var cellIndex = rbCell.cellIndex + 1 ;
+		if ( cellIndex >= rowNode.cells.length )
+			return null ;
+		lbCell = rowNode.cells.item( cellIndex ) ;
+		*/
+		var rowIdx = rbCell.parentNode.rowIndex ;
+		var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, rbCell ) ;
+		var colSpan = isNaN( rbCell.colSpan ) ? 1 : rbCell.colSpan ;
+		lbCell = tableMap[rowIdx][colIdx + colSpan] ;
+
+		if ( ! lbCell )
+			return null ;
+
+		// Abort if too far from the border.
+		lxDist = mouse.x - FCKTools.GetWindowPosition( w, lbCell ).x ;
+		if ( lxDist < 0 && minRxDist < 0 && minRxDist < -2 )
+			return null ;
+		if ( lxDist > 0 && minRxDist > 0 && lxDist > 3 )
+			return null ;
+
+		return { "leftCell" : rbCell, "rightCell" : lbCell } ;
+	},
+	"_GetResizeBarPosition" : function()
+	{
+		var row = FCKTools.GetElementAscensor( this._RightCell, "tr" ) ;
+		return FCKTableHandler._GetCellIndexSpan( this._TableMap, row.rowIndex, this._RightCell ) ;
+	},
+	"_ResizeBarMouseDownListener" : function( evt )
+	{
+		if ( FCKDragTableHandler._LeftCell )
+			FCKDragTableHandler._MouseMoveMode = 1 ;
+		if ( FCKBrowserInfo.IsIE )
+			FCKDragTableHandler._ResizeBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 50 ;
+		else
+			FCKDragTableHandler._ResizeBar.style.opacity = 0.5 ;
+		FCKDragTableHandler._OriginalX = evt.clientX ;
+
+		// Calculate maximum and minimum x-coordinate delta.
+		var borderIndex = FCKDragTableHandler._GetResizeBarPosition() ;
+		var offset = FCKDragTableHandler._GetIframeOffset();
+		var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" );
+		var minX = null ;
+		var maxX = null ;
+		for ( var r = 0 ; r < FCKDragTableHandler._TableMap.length ; r++ )
+		{
+			var leftCell = FCKDragTableHandler._TableMap[r][borderIndex - 1] ;
+			var rightCell = FCKDragTableHandler._TableMap[r][borderIndex] ;
+			var leftPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, leftCell ) ;
+			var rightPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, rightCell ) ;
+			var leftPadding = FCKDragTableHandler._GetCellPadding( table, leftCell ) ;
+			var rightPadding = FCKDragTableHandler._GetCellPadding( table, rightCell ) ;
+			if ( minX == null || leftPosition.x + leftPadding > minX )
+				minX = leftPosition.x + leftPadding ;
+			if ( maxX == null || rightPosition.x + rightCell.clientWidth - rightPadding < maxX )
+				maxX = rightPosition.x + rightCell.clientWidth - rightPadding ;
+		}
+
+		FCKDragTableHandler._MinimumX = minX + offset.x ;
+		FCKDragTableHandler._MaximumX = maxX + offset.x ;
+		FCKDragTableHandler._LastX = null ;
+
+		if (evt.preventDefault)
+			evt.preventDefault();
+		else
+			evt.returnValue = false;
+	},
+	"_ResizeBarMouseUpListener" : function( evt )
+	{
+		FCKDragTableHandler._MouseMoveMode = 0 ;
+		FCKDragTableHandler._HideResizeBar() ;
+
+		if ( FCKDragTableHandler._LastX == null )
+			return ;
+
+		// Calculate the delta value.
+		var deltaX = FCKDragTableHandler._LastX - FCKDragTableHandler._OriginalX ;
+
+		// Then, build an array of current column width values.
+		// This algorithm can be very slow if the cells have insane colSpan values. (e.g. colSpan=1000).
+		var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ) ;
+		var colArray = [] ;
+		var tableMap = FCKDragTableHandler._TableMap ;
+		for ( var i = 0 ; i < tableMap.length ; i++ )
+		{
+			for ( var j = 0 ; j < tableMap[i].length ; j++ )
+			{
+				var cell = tableMap[i][j] ;
+				var width = FCKDragTableHandler._GetCellWidth( table, cell ) ;
+				var colSpan = isNaN( cell.colSpan) ? 1 : cell.colSpan ;
+				if ( colArray.length <= j )
+					colArray.push( { width : width / colSpan, colSpan : colSpan } ) ;
+				else
+				{
+					var guessItem = colArray[j] ;
+					if ( guessItem.colSpan > colSpan )
+					{
+						guessItem.width = width / colSpan ;
+						guessItem.colSpan = colSpan ;
+					}
+				}
+			}
+		}
+
+		// Find out the equivalent column index of the two cells selected for resizing.
+		colIndex = FCKDragTableHandler._GetResizeBarPosition() ;
+
+		// Note that colIndex must be at least 1 here, so it's safe to subtract 1 from it.
+		colIndex-- ;
+
+		// Modify the widths in the colArray according to the mouse coordinate delta value.
+		colArray[colIndex].width += deltaX ;
+		colArray[colIndex + 1].width -= deltaX ;
+
+		// Clear all cell widths, delete all <col> elements from the table.
+		for ( var r = 0 ; r < table.rows.length ; r++ )
+		{
+			var row = table.rows.item( r ) ;
+			for ( var c = 0 ; c < row.cells.length ; c++ )
+			{
+				var cell = row.cells.item( c ) ;
+				cell.width = "" ;
+				cell.style.width = "" ;
+			}
+		}
+		var colElements = table.getElementsByTagName( "col" ) ;
+		for ( var i = colElements.length - 1 ; i >= 0 ; i-- )
+			colElements[i].parentNode.removeChild( colElements[i] ) ;
+
+		// Set new cell widths.
+		var processedCells = [] ;
+		for ( var i = 0 ; i < tableMap.length ; i++ )
+		{
+			for ( var j = 0 ; j < tableMap[i].length ; j++ )
+			{
+				var cell = tableMap[i][j] ;
+				if ( cell._Processed )
+					continue ;
+				if ( tableMap[i][j-1] != cell )
+					cell.width = colArray[j].width ;
+				else
+					cell.width = parseInt( cell.width, 10 ) + parseInt( colArray[j].width, 10 ) ;
+				if ( tableMap[i][j+1] != cell )
+				{
+					processedCells.push( cell ) ;
+					cell._Processed = true ;
+				}
+			}
+		}
+		for ( var i = 0 ; i < processedCells.length ; i++ )
+		{
+			if ( FCKBrowserInfo.IsIE )
+				processedCells[i].removeAttribute( '_Processed' ) ;
+			else
+				delete processedCells[i]._Processed ;
+		}
+
+		FCKDragTableHandler._LastX = null ;
+	},
+	"_ResizeBarMouseMoveListener" : function( evt )
+	{
+		if ( FCKDragTableHandler._MouseMoveMode == 0 )
+			return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
+		else
+			return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ;
+	},
+	// Calculate the padding of a table cell.
+	// It returns the value of paddingLeft + paddingRight of a table cell.
+	// This function is used, in part, to calculate the width parameter that should be used for setting cell widths.
+	// The equation in question is clientWidth = paddingLeft + paddingRight + width.
+	// So that width = clientWidth - paddingLeft - paddingRight.
+	// The return value of this function must be pixel accurate acorss all supported browsers, so be careful if you need to modify it.
+	"_GetCellPadding" : function( table, cell )
+	{
+		var attrGuess = parseInt( table.cellPadding, 10 ) * 2 ;
+		var cssGuess = null ;
+		if ( typeof( window.getComputedStyle ) == "function" )
+		{
+			var styleObj = window.getComputedStyle( cell, null ) ;
+			cssGuess = parseInt( styleObj.getPropertyValue( "padding-left" ), 10 ) +
+				parseInt( styleObj.getPropertyValue( "padding-right" ), 10 ) ;
+		}
+		else
+			cssGuess = parseInt( cell.currentStyle.paddingLeft, 10 ) + parseInt (cell.currentStyle.paddingRight, 10 ) ;
+
+		var cssRuntime = cell.style.padding ;
+		if ( isFinite( cssRuntime ) )
+			cssGuess = parseInt( cssRuntime, 10 ) * 2 ;
+		else
+		{
+			cssRuntime = cell.style.paddingLeft ;
+			if ( isFinite( cssRuntime ) )
+				cssGuess = parseInt( cssRuntime, 10 ) ;
+			cssRuntime = cell.style.paddingRight ;
+			if ( isFinite( cssRuntime ) )
+				cssGuess += parseInt( cssRuntime, 10 ) ;
+		}
+
+		attrGuess = parseInt( attrGuess, 10 ) ;
+		cssGuess = parseInt( cssGuess, 10 ) ;
+		if ( isNaN( attrGuess ) )
+			attrGuess = 0 ;
+		if ( isNaN( cssGuess ) )
+			cssGuess = 0 ;
+		return Math.max( attrGuess, cssGuess ) ;
+	},
+	// Calculate the real width of the table cell.
+	// The real width of the table cell is the pixel width that you can set to the width attribute of the table cell and after
+	// that, the table cell should be of exactly the same width as before.
+	// The real width of a table cell can be calculated as:
+	// width = clientWidth - paddingLeft - paddingRight.
+	"_GetCellWidth" : function( table, cell )
+	{
+		var clientWidth = cell.clientWidth ;
+		if ( isNaN( clientWidth ) )
+			clientWidth = 0 ;
+		return clientWidth - this._GetCellPadding( table, cell ) ;
+	},
+	"MouseMoveListener" : function( FCK, evt )
+	{
+		if ( FCKDragTableHandler._MouseMoveMode == 0 )
+			return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
+		else
+			return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ;
+	},
+	"_MouseFindHandler" : function( FCK, evt )
+	{
+		if ( FCK.MouseDownFlag )
+			return ;
+		var node = evt.srcElement || evt.target ;
+		try
+		{
+			if ( ! node || node.nodeType != 1 )
+			{
+				this._HideResizeBar() ;
+				return ;
+			}
+		}
+		catch ( e )
+		{
+			this._HideResizeBar() ;
+			return ;
+		}
+
+		// Since this function might be called from the editing area iframe or the outer fckeditor iframe,
+		// the mouse point coordinates from evt.clientX/Y can have different reference points.
+		// We need to resolve the mouse pointer position relative to the editing area iframe.
+		var mouseX = evt.clientX ;
+		var mouseY = evt.clientY ;
+		if ( FCKTools.GetElementDocument( node ) == document )
+		{
+			var offset = this._GetIframeOffset() ;
+			mouseX -= offset.x ;
+			mouseY -= offset.y ;
+		}
+
+
+		if ( this._ResizeBar && this._LeftCell )
+		{
+			var leftPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._LeftCell ) ;
+			var rightPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._RightCell ) ;
+			var rxDist = mouseX - ( leftPos.x + this._LeftCell.clientWidth ) ;
+			var lxDist = mouseX - rightPos.x ;
+			var inRangeFlag = false ;
+			if ( lxDist >= 0 && rxDist <= 0 )
+				inRangeFlag = true ;
+			else if ( rxDist > 0 && lxDist <= 3 )
+				inRangeFlag = true ;
+			else if ( lxDist < 0 && rxDist >= -2 )
+				inRangeFlag = true ;
+			if ( inRangeFlag )
+			{
+				this._ShowResizeBar( FCK.EditorWindow,
+					FCKTools.GetElementAscensor( this._LeftCell, "table" ),
+					{ "x" : mouseX, "y" : mouseY } ) ;
+				return ;
+			}
+		}
+
+		var tagName = node.tagName.toLowerCase() ;
+		if ( tagName != "table" && tagName != "td" && tagName != "th" )
+		{
+			if ( this._LeftCell )
+				this._LeftCell = this._RightCell = this._TableMap = null ;
+			this._HideResizeBar() ;
+			return ;
+		}
+		node = FCKTools.GetElementAscensor( node, "table" ) ;
+		var tableMap = FCKTableHandler._CreateTableMap( node ) ;
+		var cellTuple = this._GetBorderCells( FCK.EditorWindow, node, tableMap, { "x" : mouseX, "y" : mouseY } ) ;
+
+		if ( cellTuple == null )
+		{
+			if ( this._LeftCell )
+				this._LeftCell = this._RightCell = this._TableMap = null ;
+			this._HideResizeBar() ;
+		}
+		else
+		{
+			this._LeftCell = cellTuple["leftCell"] ;
+			this._RightCell = cellTuple["rightCell"] ;
+			this._TableMap = tableMap ;
+			this._ShowResizeBar( FCK.EditorWindow,
+					FCKTools.GetElementAscensor( this._LeftCell, "table" ),
+					{ "x" : mouseX, "y" : mouseY } ) ;
+		}
+	},
+	"_MouseDragHandler" : function( FCK, evt )
+	{
+		var mouse = { "x" : evt.clientX, "y" : evt.clientY } ;
+
+		// Convert mouse coordinates in reference to the outer iframe.
+		var node = evt.srcElement || evt.target ;
+		if ( FCKTools.GetElementDocument( node ) == FCK.EditorDocument )
+		{
+			var offset = this._GetIframeOffset() ;
+			mouse.x += offset.x ;
+			mouse.y += offset.y ;
+		}
+
+		// Calculate the mouse position delta and see if we've gone out of range.
+		if ( mouse.x >= this._MaximumX - 5 )
+			mouse.x = this._MaximumX - 5 ;
+		if ( mouse.x <= this._MinimumX + 5 )
+			mouse.x = this._MinimumX + 5 ;
+
+		var docX = mouse.x + FCKTools.GetScrollPosition( window ).X ;
+		this._ResizeBar.style.left = ( docX - this._ResizeBar.offsetWidth / 2 ) + "px" ;
+		this._LastX = mouse.x ;
+	},
+	"_ShowResizeBar" : function( w, table, mouse )
+	{
+		if ( this._ResizeBar == null )
+		{
+			this._ResizeBar = this._doc.createElement( "div" ) ;
+			var paddingBar = this._ResizeBar ;
+			var paddingStyles = { 'position' : 'absolute', 'cursor' : 'e-resize' } ;
+			if ( FCKBrowserInfo.IsIE )
+				paddingStyles.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10,enabled=true)" ;
+			else
+				paddingStyles.opacity = 0.10 ;
+			FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ;
+			this._avoidStyles( paddingBar );
+			paddingBar.setAttribute('_fcktemp', true);
+			this._doc.body.appendChild( paddingBar ) ;
+			FCKTools.AddEventListener( paddingBar, "mousemove", this._ResizeBarMouseMoveListener ) ;
+			FCKTools.AddEventListener( paddingBar, "mousedown", this._ResizeBarMouseDownListener ) ;
+			FCKTools.AddEventListener( document, "mouseup", this._ResizeBarMouseUpListener ) ;
+			FCKTools.AddEventListener( FCK.EditorDocument, "mouseup", this._ResizeBarMouseUpListener ) ;
+
+			// IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside.
+			// So we need to create a spacer image to fill the block up.
+			var filler = this._doc.createElement( "img" ) ;
+			filler.setAttribute('_fcktemp', true);
+			filler.border = 0 ;
+			filler.src = FCKConfig.BasePath + "images/spacer.gif" ;
+			filler.style.position = "absolute" ;
+			paddingBar.appendChild( filler ) ;
+
+			// Disable drag and drop, and selection for the filler image.
+			var disabledListener = function( evt )
+			{
+				if ( evt.preventDefault )
+					evt.preventDefault() ;
+				else
+					evt.returnValue = false ;
+			}
+			FCKTools.AddEventListener( filler, "dragstart", disabledListener ) ;
+			FCKTools.AddEventListener( filler, "selectstart", disabledListener ) ;
+		}
+
+		var paddingBar = this._ResizeBar ;
+		var offset = this._GetIframeOffset() ;
+		var tablePos = this._GetTablePosition( w, table ) ;
+		var barHeight = table.offsetHeight ;
+		var barTop = offset.y + tablePos.y ;
+		// Do not let the resize bar intrude into the toolbar area.
+		if ( tablePos.y < 0 )
+		{
+			barHeight += tablePos.y ;
+			barTop -= tablePos.y ;
+		}
+		var bw = parseInt( table.border, 10 ) ;
+		if ( isNaN( bw ) )
+			bw = 0 ;
+		var cs = parseInt( table.cellSpacing, 10 ) ;
+		if ( isNaN( cs ) )
+			cs = 0 ;
+		var barWidth = Math.max( bw+100, cs+100 ) ;
+		var paddingStyles =
+		{
+			'top'		: barTop + 'px',
+			'height'	: barHeight + 'px',
+			'width'		: barWidth + 'px',
+			'left'		: ( offset.x + mouse.x + FCKTools.GetScrollPosition( w ).X - barWidth / 2 ) + 'px'
+		} ;
+		if ( FCKBrowserInfo.IsIE )
+			paddingBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ;
+		else
+			paddingStyles.opacity = 0.1 ;
+
+		FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ;
+		var filler = paddingBar.getElementsByTagName( "img" )[0] ;
+
+		FCKDomTools.SetElementStyles( filler,
+			{
+				width	: paddingBar.offsetWidth + 'px',
+				height	: barHeight + 'px'
+			} ) ;
+
+		barWidth = Math.max( bw, cs, 3 ) ;
+		var visibleBar = null ;
+		if ( paddingBar.getElementsByTagName( "div" ).length < 1 )
+		{
+			visibleBar = this._doc.createElement( "div" ) ;
+			this._avoidStyles( visibleBar );
+			visibleBar.setAttribute('_fcktemp', true);
+			paddingBar.appendChild( visibleBar ) ;
+		}
+		else
+			visibleBar = paddingBar.getElementsByTagName( "div" )[0] ;
+
+		FCKDomTools.SetElementStyles( visibleBar,
+			{
+				position		: 'absolute',
+				backgroundColor	: 'blue',
+				width			: barWidth + 'px',
+				height			: barHeight + 'px',
+				left			: '50px',
+				top				: '0px'
+			} ) ;
+	},
+	"_HideResizeBar" : function()
+	{
+		if ( this._ResizeBar )
+			// IE bug: display : none does not hide the resize bar for some reason.
+			// so set the position to somewhere invisible.
+			FCKDomTools.SetElementStyles( this._ResizeBar,
+				{
+					top		: '-100000px',
+					left	: '-100000px'
+				} ) ;
+	},
+	"_GetIframeOffset" : function ()
+	{
+		return FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
+	},
+	"_GetTablePosition" : function ( w, table )
+	{
+		return FCKTools.GetWindowPosition( w, table ) ;
+	},
+	"_avoidStyles" : function( element )
+	{
+		FCKDomTools.SetElementStyles( element,
+			{
+				padding		: '0',
+				backgroundImage	: 'none',
+				border		: '0'
+			} ) ;
+	},
+	"Reset" : function()
+	{
+		FCKDragTableHandler._LeftCell = FCKDragTableHandler._RightCell = FCKDragTableHandler._TableMap = null ;
+	}
+
+};
+
+FCK.Events.AttachEvent( "OnMouseMove", FCKDragTableHandler.MouseMoveListener ) ;
+FCK.Events.AttachEvent( "OnAfterSetHTML", FCKDragTableHandler.Reset ) ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/plugins/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdialog.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdialog.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdialog.html	(revision 1610)
@@ -0,0 +1,819 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This page is used by all dialog box as the container.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta name="robots" content="noindex, nofollow" />
+		<script type="text/javascript">
+// <![CDATA[
+
+// Domain relaxation logic.
+(function()
+{
+	var d = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var parentDomain = ( Args().TopWindow || E ).document.domain ;
+
+			if ( document.domain != parentDomain )
+				document.domain = parentDomain ;
+
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		document.domain = d ;
+	}
+})() ;
+
+var E = frameElement._DialogArguments.Editor ;
+
+// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
+// So let's use functions to access its members instead.
+function Args()
+{
+	return frameElement._DialogArguments ;
+}
+
+function ParentDialog( dialog )
+{
+	return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
+}
+
+var FCK				= E.FCK ;
+var FCKTools		= E.FCKTools ;
+var FCKDomTools		= E.FCKDomTools ;
+var FCKDialog		= E.FCKDialog ;
+var FCKBrowserInfo	= E.FCKBrowserInfo ;
+var FCKConfig		= E.FCKConfig ;
+
+// Steal the focus so that the caret would no longer stay in the editor iframe.
+window.focus() ;
+
+// Sets the Skin CSS
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+
+// Sets the language direction.
+var langDir = E.FCKLang.Dir ;
+
+// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
+if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+	document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
+
+FCKTools.RegisterDollarFunction( window ) ;
+
+// Resize related functions.
+var Sizer = function()
+{
+	var bAutoSize = false ;
+
+	var retval = {
+		// Sets whether the dialog should auto-resize according to its content's height.
+		SetAutoSize : function( autoSize )
+		{
+			bAutoSize = autoSize ;
+			this.RefreshSize() ;
+		},
+
+		// Fit the dialog container's layout to the inner iframe's external size.
+		RefreshContainerSize : function()
+		{
+			var frmMain = $( 'frmMain' ) ;
+
+			if ( frmMain )
+			{
+				// Get the container size.
+				var height = $( 'contents' ).offsetHeight ;
+
+				// Subtract the size of other elements.
+				height -= $( 'TitleArea' ).offsetHeight ;
+				height -= $( 'TabsRow' ).offsetHeight ;
+				height -= $( 'PopupButtons' ).offsetHeight ;
+
+				frmMain.style.height = Math.max( height, 0 ) + 'px' ;
+			}
+		},
+
+		// Resize and re-layout the dialog.
+		// Triggers the onresize event for the layout logic.
+		ResizeDialog : function( width, height )
+		{
+			FCKDomTools.SetElementStyles( window.frameElement,
+					{
+						'width' : width + 'px',
+						'height' : height + 'px'
+					} ) ;
+
+			// If the skin have defined a function for resize fixes, call it now.
+			if ( typeof window.DoResizeFixes == 'function' )
+				window.DoResizeFixes() ;
+		},
+
+		// if bAutoSize is true, automatically fit the dialog size and layout to
+		// accomodate the inner iframe's internal height.
+		// if bAutoSize is false, then only the layout logic for the dialog decorations
+		// is run to accomodate the inner iframe's external height.
+		RefreshSize : function()
+		{
+			if ( bAutoSize )
+			{
+				var frmMain		= $( 'frmMain' ) ;
+				var innerDoc	= frmMain.contentWindow.document ;
+				var isStrict	= FCKTools.IsStrictMode( innerDoc ) ;
+
+				// Get the size of the frame contents.
+				var innerWidth	= isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
+				var innerHeight	= isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
+
+				// Get the current frame size.
+				var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
+
+				var deltaWidth	= innerWidth - frameSize.Width ;
+				var deltaHeight	= innerHeight - frameSize.Height ;
+
+				// If the contents fits the current size.
+				if ( deltaWidth <= 0 && deltaHeight <= 0 )
+					return ;
+
+				var dialogWidth		= frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
+				var dialogHeight	= frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
+
+				this.ResizeDialog( dialogWidth, dialogHeight ) ;
+			}
+			this.RefreshContainerSize() ;
+		}
+	}
+
+	/**
+	 * Safari seems to have a bug with the time when RefreshSize() is executed - it
+	 * thinks frmMain's innerHeight is 0 if we query the value too soon after the
+	 * page is loaded in some circumstances. (#1316)
+	 * TODO : Maybe this is not needed anymore after #35.
+	 */
+	if ( FCKBrowserInfo.IsSafari )
+	{
+		var originalRefreshSize = retval.RefreshSize ;
+
+		retval.RefreshSize = function()
+		{
+			FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
+		}
+	}
+
+	/**
+	 * IE6 has a similar bug where it sometimes thinks $('contents') has an
+	 * offsetHeight of 0 (#2114).
+	 */
+	if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+	{
+		var originalRefreshContainerSize = retval.RefreshContainerSize ;
+		retval.RefreshContainerSize = function()
+		{
+			FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
+		}
+	}
+
+	window.onresize = function()
+	{
+		retval.RefreshContainerSize() ;
+	}
+
+	window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
+
+	return retval ;
+}() ;
+
+// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
+var Throbber = function()
+{
+	var timer ;
+
+	var updateThrobber = function()
+	{
+		var throbberParent = $( 'throbberBlock' ) ;
+		var throbberBlocks = throbberParent.childNodes ;
+		var lastClass = throbberParent.lastChild.className ;
+
+		// From the last to the second one, copy the class from the previous one.
+		for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
+			throbberBlocks[i].className = throbberBlocks[i-1].className ;
+
+		// For the first one, copy the last class (rotation).
+		throbberBlocks[0].className = lastClass ;
+	}
+
+	return {
+		Show : function( waitMilliseconds )
+		{
+			// Auto-setup the Show function to be called again after the
+			// requested amount of time.
+			if ( waitMilliseconds && waitMilliseconds > 0 )
+			{
+				timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
+				return ;
+			}
+
+			var throbberParent = $( 'throbberBlock' ) ;
+
+			if (throbberParent.childNodes.length == 0)
+			{
+				// Create the throbber blocks.
+				var classIds = [ 1,2,3,4,5,4,3,2 ] ;
+				while ( classIds.length > 0 )
+					throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
+			}
+
+			// Center the throbber.
+			var frm = $( 'contents' ) ;
+			var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
+			var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
+			var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
+			throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
+			throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
+
+			// Show it.
+			throbberParent.style.visibility = ''  ;
+
+			// Hide tabs and buttons:
+			$( 'Tabs' ).style.visibility = 'hidden' ;
+			$( 'PopupButtons' ).style.visibility = 'hidden' ;
+
+			// Setup the animation interval.
+			timer = setInterval( updateThrobber, 100 ) ;
+		},
+
+		Hide : function()
+		{
+			if ( timer )
+			{
+				clearInterval( timer ) ;
+				timer = null ;
+			}
+
+			$( 'throbberBlock' ).style.visibility = 'hidden' ;
+
+			// Show tabs and buttons:
+			$( 'Tabs' ).style.visibility = '' ;
+			$( 'PopupButtons' ).style.visibility = '' ;
+		}
+	} ;
+}() ;
+
+// Drag and drop handlers.
+var DragAndDrop = function()
+{
+	var registeredWindows = [] ;
+	var lastCoords ;
+	var currentPos ;
+
+	var cleanUpHandlers = function()
+	{
+		for ( var i = 0 ; i < registeredWindows.length ; i++ )
+		{
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+			FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+		}
+	}
+
+	var dragMouseMoveHandler = function( evt )
+	{
+		if ( !lastCoords )
+			return ;
+
+		if ( !evt )
+			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
+
+		// Updated the last coordinates.
+		var currentCoords =
+		{
+			x : evt.screenX,
+			y : evt.screenY
+		} ;
+
+		currentPos =
+		{
+			x : currentPos.x + ( currentCoords.x - lastCoords.x ),
+			y : currentPos.y + ( currentCoords.y - lastCoords.y )
+		} ;
+
+		lastCoords = currentCoords ;
+
+		frameElement.style.left	= currentPos.x + 'px' ;
+		frameElement.style.top	= currentPos.y + 'px' ;
+
+		if ( evt.preventDefault )
+			evt.preventDefault() ;
+		else
+			evt.returnValue = false ;
+	}
+
+	var dragMouseUpHandler = function( evt )
+	{
+		if ( !lastCoords )
+			return ;
+		if ( !evt )
+			evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
+		cleanUpHandlers() ;
+		lastCoords = null ;
+	}
+
+	return {
+
+		MouseDownHandler : function( evt )
+		{
+			var view = null ;
+			if ( !evt )
+			{
+				view = FCKTools.GetElementDocument( this ).parentWindow ;
+				evt = view.event ;
+			}
+			else
+				view = evt.view ;
+
+			var target = evt.srcElement || evt.target ;
+			if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
+				return ;
+
+			lastCoords =
+			{
+				x : evt.screenX,
+				y : evt.screenY
+			} ;
+
+			// Save the current IFRAME position.
+			currentPos =
+			{
+				x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
+				y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
+			} ;
+
+			for ( var i = 0 ; i < registeredWindows.length ; i++ )
+			{
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
+				FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
+			}
+
+			if ( evt.preventDefault )
+				evt.preventDefault() ;
+			else
+				evt.returnValue = false ;
+		},
+
+		RegisterHandlers : function( w )
+		{
+			registeredWindows.push( w ) ;
+		}
+	}
+}() ;
+
+// Selection related functions.
+//(Became simple shortcuts after the fix for #1990)
+var Selection =
+{
+	/**
+	 * Ensures that the editing area contains an active selection. This is a
+	 * requirement for IE, as it looses the selection when the focus moves to other
+	 * frames.
+	 */
+	EnsureSelection : function()
+	{
+		// Move the focus to the Cancel button so even if the dialog contains a
+		// contentEditable element the selection is properly restored in the editor #2496
+		window.focus() ;
+		$( 'btnCancel' ).focus() ;
+
+		FCK.Selection.Restore() ;
+	},
+
+	/**
+	 * Get the FCKSelection object for the editor instance.
+	 */
+	GetSelection : function()
+	{
+		return FCK.Selection ;
+	},
+
+	/**
+	 * Get the selected element in the editing area (for object selections).
+	 */
+	GetSelectedElement : function()
+	{
+		return FCK.Selection.GetSelectedElement() ;
+	}
+}
+
+// Tab related functions.
+var Tabs = function()
+{
+	// Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
+	// would build circular references with the element references inside and cause memory leaks in IE6.
+	var oTabs = new Object() ;
+
+	var setSelectedTab = function( tabCode )
+	{
+		for ( var sCode in oTabs )
+		{
+			if ( sCode == tabCode )
+				$( oTabs[sCode] ).className = 'PopupTabSelected' ;
+			else
+				$( oTabs[sCode] ).className = 'PopupTab' ;
+		}
+
+		if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
+			window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
+	}
+
+	function TabDiv_OnClick()
+	{
+		setSelectedTab( this.TabCode ) ;
+	}
+
+	window.AddTab = function( tabCode, tabText, startHidden )
+	{
+		if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
+			return ;
+
+		var eTabsRow = $( 'Tabs' ) ;
+
+		var oCell = eTabsRow.insertCell(  eTabsRow.cells.length - 1 ) ;
+		oCell.noWrap = true ;
+
+		var oDiv = document.createElement( 'DIV' ) ;
+		oDiv.className = 'PopupTab' ;
+		oDiv.innerHTML = tabText ;
+		oDiv.TabCode = tabCode ;
+		oDiv.onclick = TabDiv_OnClick ;
+		oDiv.id = Math.random() ;
+
+		if ( startHidden )
+			oDiv.style.display = 'none' ;
+
+		eTabsRow = $( 'TabsRow' ) ;
+
+		oCell.appendChild( oDiv ) ;
+
+		if ( eTabsRow.style.display == 'none' )
+		{
+			var eTitleArea = $( 'TitleArea' ) ;
+			eTitleArea.className = 'PopupTitle' ;
+
+			oDiv.className = 'PopupTabSelected' ;
+			eTabsRow.style.display = '' ;
+
+			if ( window.onresize )
+				window.onresize() ;
+		}
+
+		oTabs[ tabCode ] = oDiv.id ;
+
+		FCKTools.DisableSelection( oDiv ) ;
+	} ;
+
+	window.SetSelectedTab = setSelectedTab ;
+
+	window.SetTabVisibility = function( tabCode, isVisible )
+	{
+		var oTab = $( oTabs[ tabCode ] ) ;
+		oTab.style.display = isVisible ? '' : 'none' ;
+
+		if ( ! isVisible && oTab.className == 'PopupTabSelected' )
+		{
+			for ( var sCode in oTabs )
+			{
+				if ( $( oTabs[sCode] ).style.display != 'none' )
+				{
+					setSelectedTab( sCode ) ;
+					break ;
+				}
+			}
+		}
+	} ;
+}() ;
+
+// readystatechange handler for registering drag and drop handlers in cover
+// iframes, defined out here to avoid memory leak.
+// Do NOT put this function as a private function as it will induce memory leak
+// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
+// really nasty (sigh).
+var onReadyRegister = function()
+{
+	if ( this.readyState != 'complete' )
+		return ;
+	DragAndDrop.RegisterHandlers( this.contentWindow ) ;
+} ;
+
+// The business logic of the dialog, dealing with operational things like
+// dialog open/dialog close/enable/disable/etc.
+(function()
+{
+	var setOnKeyDown = function( targetDocument )
+	{
+		targetDocument.onkeydown = function ( e )
+		{
+			e = e || event || this.parentWindow.event ;
+			switch ( e.keyCode )
+			{
+				case 13 :		// ENTER
+					var oTarget = e.srcElement || e.target ;
+					if ( oTarget.tagName == 'TEXTAREA' )
+						return true ;
+					Ok() ;
+					return false ;
+
+				case 27 :		// ESC
+					Cancel() ;
+					return false ;
+			}
+			return true ;
+		}
+	} ;
+
+	var contextMenuBlocker = function( e )
+	{
+		var sTagName = e.target.tagName ;
+		if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
+			e.preventDefault() ;
+	} ;
+
+	var disableContextMenu = function( targetDocument )
+	{
+		if ( FCKBrowserInfo.IsIE )
+			return ;
+
+		targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
+	} ;
+
+	// Program entry point.
+	window.Init = function()
+	{
+		$( 'contents' ).dir = langDir;
+
+		// Start the throbber timer.
+		Throbber.Show( 1000 ) ;
+
+		Sizer.RefreshContainerSize() ;
+		LoadInnerDialog() ;
+
+		FCKTools.DisableSelection( document.body ) ;
+
+		// Make the title area draggable.
+		var titleElement = $( 'header' ) ;
+		titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
+
+		// Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
+		DragAndDrop.RegisterHandlers( window ) ;
+		DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
+
+		// Disable the previous dialog if it exists.
+		if ( ParentDialog() )
+		{
+			ParentDialog().contentWindow.SetEnabled( false ) ;
+			if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+			{
+				var currentParent = ParentDialog() ;
+				while ( currentParent )
+				{
+					var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
+					if ( blockerFrame.readyState == 'complete' )
+						DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
+					else
+						blockerFrame.onreadystatechange = onReadyRegister ;
+					currentParent = ParentDialog( currentParent ) ;
+				}
+			}
+			else
+			{
+				var currentParent = ParentDialog() ;
+				while ( currentParent )
+				{
+					DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
+					currentParent = ParentDialog( currentParent ) ;
+				}
+			}
+		}
+
+		// If this is the only dialog on screen, enable the background cover.
+		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+		{
+			var blockerFrame = FCKDialog.GetCover().firstChild ;
+			if ( blockerFrame.readyState == 'complete' )
+				DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
+			else
+				blockerFrame.onreadystatechange = onReadyRegister;
+		}
+
+		// Add Enter/Esc hotkeys and disable context menu for the dialog.
+		setOnKeyDown( document ) ;
+		disableContextMenu( document ) ;
+	} ;
+
+	window.LoadInnerDialog = function()
+	{
+		if ( window.onresize )
+			window.onresize() ;
+
+		// First of all, translate the dialog box contents.
+		E.FCKLanguageManager.TranslatePage( document ) ;
+
+		// Create the IFRAME that holds the dialog contents.
+		$( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
+	} ;
+
+	window.InnerDialogLoaded = function()
+	{
+		// If the dialog has been closed before the iframe is loaded, do nothing.
+		if ( !frameElement.parentNode )
+			return null ;
+
+		Throbber.Hide() ;
+
+		var frmMain = $('frmMain') ;
+		var innerWindow = frmMain.contentWindow ;
+		var innerDoc = innerWindow.document ;
+
+		// Show the loaded iframe.
+		frmMain.style.visibility = '' ;
+
+		// Set the language direction.
+		innerDoc.documentElement.dir = langDir ;
+
+		// Sets the Skin CSS.
+		innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+
+		setOnKeyDown( innerDoc ) ;
+		disableContextMenu( innerDoc ) ;
+
+		Sizer.RefreshContainerSize();
+
+		DragAndDrop.RegisterHandlers( innerWindow ) ;
+
+		innerWindow.focus() ;
+
+		return E ;
+	} ;
+
+	window.SetOkButton = function( showIt )
+	{
+		$('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
+	} ;
+
+	window.Ok = function()
+	{
+		Selection.EnsureSelection() ;
+
+		var frmMain = window.frames["frmMain"] ;
+
+		if ( frmMain.Ok && frmMain.Ok() )
+			CloseDialog() ;
+		else
+			frmMain.focus() ;
+	} ;
+
+	window.Cancel = function( dontFireChange )
+	{
+		Selection.EnsureSelection() ;
+		return CloseDialog( dontFireChange ) ;
+	} ;
+
+	window.CloseDialog = function( dontFireChange )
+	{
+		Throbber.Hide() ;
+
+		// Points the src to a non-existent location to avoid loading errors later, in case the dialog
+		// haven't been completed loaded at this point.
+		if ( $( 'frmMain' ) )
+			$( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
+
+		if ( !dontFireChange && !FCK.EditMode )
+		{
+			// All dialog windows, by default, will fire the "OnSelectionChange"
+			// event, no matter the Ok or Cancel button has been pressed.
+			// It seems that OnSelectionChange may enter on a concurrency state
+			// on some situations (#1965), so we should put the event firing in
+			// the execution queue instead of executing it immediately.
+			setTimeout( function()
+				{
+					FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+				}, 0 ) ;
+		}
+
+		FCKDialog.OnDialogClose( window ) ;
+	} ;
+
+	window.SetEnabled = function( isEnabled )
+	{
+		var cover = $( 'cover' ) ;
+		cover.style.display = isEnabled ? 'none' : '' ;
+
+		if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
+		{
+			if ( !isEnabled )
+			{
+				// Inser the blocker IFRAME before the cover.
+				var blocker = document.createElement( 'iframe' ) ;
+				blocker.src = FCKTools.GetVoidUrl() ;
+				blocker.hideFocus = true ;
+				blocker.frameBorder = 0 ;
+				blocker.id = blocker.className = 'blocker' ;
+				cover.appendChild( blocker ) ;
+			}
+			else
+			{
+				var blocker = $( 'blocker' ) ;
+				if ( blocker && blocker.parentNode )
+					blocker.parentNode.removeChild( blocker ) ;
+			}
+		}
+	} ;
+})() ;
+// ]]>
+		</script>
+	</head>
+	<body onload="Init();" class="PopupBody">
+		<div class="contents" id="contents">
+			<div id="header">
+				<div id="TitleArea" class="PopupTitle PopupTitleBorder">
+					<script type="text/javascript">
+// <![CDATA[
+document.write( Args().Title ) ;
+// ]]>
+					</script>
+					<div id="closeButton" onclick="Cancel();"></div>
+				</div>
+				<div id="TabsRow" class="PopupTabArea" style="display: none">
+					<table border="0" cellpadding="0" cellspacing="0" width="100%">
+						<tr id="Tabs">
+							<td class="PopupTabEmptyArea">&nbsp;</td>
+							<td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
+						</tr>
+					</table>
+				</div>
+			</div>
+			<div id="innerContents"></div>
+			<div id="PopupButtons" class="PopupButtons">
+				<table border="0" cellpadding="0" cellspacing="0">
+					<tr>
+						<td width="100%">&nbsp;</td>
+						<td nowrap="nowrap">
+							<input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
+							&nbsp;
+							<input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
+						</td>
+					</tr>
+				</table>
+			</div>
+		</div>
+		<div class="tl"></div>
+		<div class="tc"></div>
+		<div class="tr"></div>
+		<div class="ml"></div>
+		<div class="mr"></div>
+		<div class="bl"></div>
+		<div class="bc"></div>
+		<div class="br"></div>
+		<div class="cover" id="cover" style="display:none"></div>
+		<div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
+		<script type="text/javascript">
+// <![CDATA[
+			// Set the class name for language direction.
+			document.body.className += ' ' + langDir ;
+
+			var cover = $( 'cover' ) ;
+			cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
+			FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
+// ]]>
+		</script>
+	</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog_ie6.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog_ie6.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog_ie6.js	(revision 1610)
@@ -0,0 +1,110 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_editor.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_editor.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_editor.css	(revision 1610)
@@ -0,0 +1,476 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the editor IFRAME and Toolbar.
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+	padding: 1px;
+	margin: 0;
+	background-color: #ffffff;
+}
+
+#xEditingArea
+{
+    border: #696969 1px solid;
+}
+
+.SourceField
+{
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+    background-color: #f7f8fd;
+}
+
+.TB_ToolbarSet
+{
+    border-top: #f7f8fd 1px outset;
+    border-bottom: #f7f8fd 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+   	background-color: #d6dff7;
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+    display: inline-table;
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #B2CBFF;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    background-repeat: no-repeat;
+    background-position: center center;
+    margin: 0px;
+    width: 7px;
+    height: 24px;
+}
+
+.TB_End
+{
+    background-image: url(images/toolbar.end.gif);
+    background-repeat: no-repeat;
+    background-position: center left;
+    height: 24px;
+    width: 4px;
+}
+
+.TB_ExpandImg
+{
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+    background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+    padding: 2px 2px 2px 2px;
+    border: #f7f8fd 1px outset;
+}
+
+.TB_Collapse
+{
+    width: 5px;
+}
+
+.TB_Break
+{
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+    margin: 1px;
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
+}
+
+.TB_Button_On
+{
+    margin: 0px;
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    margin: 0px ;
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Disabled
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #f7f8fd;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+.TB_Button_Off .TB_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f8fd;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #d6dff7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #7096FA;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #466ca6;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #f7f8fd;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #f7f8fd;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #f7f8fd;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top: 2px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+/*    background-color:  inherit;     Maybe this is needed wait to check */
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_dialog.css	(revision 1610)
@@ -0,0 +1,402 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the dialog boxes.
+ */
+
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f7f8fd;
+}
+
+.PopupBody
+{
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
+	padding: 0px;
+}
+
+#header
+{
+	cursor: move;
+}
+
+.PopupTitle
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #0e3460;
+	background-color: #8cb2fd;
+	padding: 3px 10px 3px 10px;
+}
+
+.PopupButtons
+{
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	border-top: #466ca6 1px solid;
+	background-color: #8cb2fd;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border: #1c3460 1px solid;
+	color: #000a28;
+	background-color: #7096d3;
+}
+
+#btnOk
+{
+	width: 100px;
+}
+
+.DarkBackground
+{
+	background-color: #eaf2f8;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #0e3460;
+	background-color: #8cb2fd;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px ;
+	border-bottom: #466ca6 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #466ca6 1px solid;
+	border-top: #466ca6 1px solid;
+	border-left: #466ca6 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #0e3460;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #466ca6 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight: bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f7f8fd 1px solid;
+	background-color: #f7f8fd;
+}
+
+.PopupSelectionBox
+{
+	border: #1e90ff 1px solid !important;
+	background-color: #add8e6 !important;
+	cursor: pointer;
+	cursor: hand;
+}
+
+#tdBrowse
+{
+	vertical-align: bottom;
+}
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f7f8fD;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=0E3460&cend=8cb2fd&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #0E3460;
+}
+
+.throbber_2
+{
+	background-color: #2D5387;
+}
+
+.throbber_3
+{
+	background-color: #4D73AE;
+}
+
+.throbber_4
+{
+	background-color: #6C92D5;
+}
+
+.throbber_5
+{
+	background-color: #8CB2FD;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.start.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.start.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.expand.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.expand.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.separator.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.separator.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/dialog.sides.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.end.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.end.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/sprites.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/sprites.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/sprites.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/sprites.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.bg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/images/toolbar.bg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_strip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/office2003/fck_strip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog_ie6.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog_ie6.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog_ie6.js	(revision 1610)
@@ -0,0 +1,110 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_editor.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_editor.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_editor.css	(revision 1610)
@@ -0,0 +1,464 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the editor IFRAME and Toolbar.
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+	padding: 1px;
+	margin: 0;
+	background-color: #ffffff;
+}
+
+#xEditingArea
+{
+    border: #696969 1px solid;
+}
+
+.SourceField
+{
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+    background-color: #efefde;
+}
+
+.TB_ToolbarSet
+{
+    border-top: #efefde 1px outset;
+    border-bottom: #efefde 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+	height: 24px;
+    display: inline-table;	/* inline = Opera jumping buttons bug */
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #999966;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 16px;
+}
+
+.TB_End
+{
+    display: none;
+}
+
+.TB_ExpandImg
+{
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+    background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+    padding: 2px 2px 2px 2px;
+    border: #efefde 1px outset;
+}
+
+.TB_Collapse
+{
+    width: 5px;
+}
+
+.TB_Break
+{
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+    border: #efefde 1px solid; /* This is the default border */
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
+}
+
+.TB_Button_On
+{
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Disabled
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
+{
+   	background-color: #efefde;  /* Needed because of a bug on Clear Type */
+}
+
+.TB_ConnectionLine
+{
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+.TB_Text
+{
+	height: 22px;
+}
+
+.TB_Button_Off .TB_Text
+{
+   	background-color: #efefde ;  /* Needed because of a bug on ClearType */
+}
+
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #ffffff;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #e3e3c7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8f8f73;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #737357;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #efefde;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_dialog.css	(revision 1610)
@@ -0,0 +1,402 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the dialog boxes.
+ */
+
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f1f1e3;
+}
+
+.PopupBody
+{
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
+	padding: 0px;
+}
+
+#header
+{
+	cursor: move;
+}
+
+.PopupTitle
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #737357;
+	background-color: #e3e3c7;
+	padding: 3px 10px 3px 10px;
+}
+
+.PopupButtons
+{
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	border-top: #d5d59d 1px solid;
+	background-color: #e3e3c7;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border: #737357 1px solid;
+	color: #3b3b1f;
+	background-color: #c7c78f;
+}
+
+#btnOk
+{
+	width: 100px;
+}
+
+.DarkBackground
+{
+	background-color: #eaead1;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #737357;
+	background-color: #e3e3c7;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px;
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #d5d59d 1px solid;
+	border-top: #d5d59d 1px solid;
+	border-left: #d5d59d 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #737357;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #d5d59d 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight: bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f1f1e3;
+}
+
+.PopupSelectionBox
+{
+	border: #ff9933 1px solid !important;
+	background-color: #fffacd !important;
+	cursor: pointer;
+	cursor: hand;
+}
+
+#tdBrowse
+{
+	vertical-align: bottom;
+}
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f1f1e3;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=737357&cend=E3E3C7&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #737357;
+}
+
+.throbber_2
+{
+	background-color: #8f8f73;
+}
+
+.throbber_3
+{
+	background-color: #abab8f;
+}
+
+.throbber_4
+{
+	background-color: #c7c7ab;
+}
+
+.throbber_5
+{
+	background-color: #e3e3c7;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.start.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.start.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.expand.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.expand.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.separator.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.separator.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.collapse.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.collapse.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.rtl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.rtl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/dialog.sides.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.end.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.end.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/sprites.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/sprites.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/sprites.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/sprites.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.arrowright.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/images/toolbar.arrowright.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_strip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/default/fck_strip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog_ie6.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog_ie6.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog_ie6.js	(revision 1610)
@@ -0,0 +1,110 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+(function()
+{
+	// IE6 doens't handle absolute positioning properly (it is always in quirks
+	// mode). This function fixes the sizes and positions of many elements that
+	// compose the skin (this is skin specific).
+	var fixSizes = window.DoResizeFixes = function()
+	{
+		var fckDlg = window.document.body ;
+
+		for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
+		{
+			var child = fckDlg.childNodes[i] ;
+			switch ( child.className )
+			{
+				case 'contents' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ;	// -left -right
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ;	// -bottom -top
+					break ;
+
+				case 'blocker' :
+				case 'cover' :
+					child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ;	// -left -right + 4
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ;	// -bottom -top + 4
+					break ;
+
+				case 'tr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					break ;
+
+				case 'tc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
+					break ;
+
+				case 'ml' :
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'mr' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
+					child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
+					break ;
+
+				case 'bl' :
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'br' :
+					child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+
+				case 'bc' :
+					child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
+					child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
+					break ;
+			}
+		}
+	}
+
+	var closeButtonOver = function()
+	{
+		this.style.backgroundPosition = '-16px -687px' ;
+	} ;
+
+	var closeButtonOut = function()
+	{
+		this.style.backgroundPosition = '-16px -651px' ;
+	} ;
+
+	var fixCloseButton = function()
+	{
+		var closeButton = document.getElementById ( 'closeButton' ) ;
+
+		closeButton.onmouseover	= closeButtonOver ;
+		closeButton.onmouseout	= closeButtonOut ;
+	}
+
+	var onLoad = function()
+	{
+		fixSizes() ;
+		fixCloseButton() ;
+
+		window.attachEvent( 'onresize', fixSizes ) ;
+		window.detachEvent( 'onload', onLoad ) ;
+	}
+
+	window.attachEvent( 'onload', onLoad ) ;
+
+})() ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_editor.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_editor.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_editor.css	(revision 1610)
@@ -0,0 +1,473 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the editor IFRAME and Toolbar.
+ */
+
+/*
+	### Basic Editor IFRAME Styles.
+*/
+
+body
+{
+	padding: 1px;
+	margin: 0;
+	background-color: #ffffff;
+}
+
+#xEditingArea
+{
+	border: #696969 1px solid;
+}
+
+.SourceField
+{
+	padding: 5px;
+	margin: 0px;
+	font-family: Monospace;
+}
+
+/*
+	Toolbar
+*/
+
+.TB_ToolbarSet, .TB_Expand, .TB_Collapse
+{
+    cursor: default;
+	background-color: #f7f7f7;
+}
+
+.TB_ToolbarSet
+{
+	padding: 1px;
+	border-top: #efefde 1px outset;
+	border-bottom: #efefde 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+    display: inline-table;
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 21px;
+    margin: 2px;
+    background-color: #C6C3BD;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin-left: 2px;
+    margin-right: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 27px;
+    background-position: center center;
+}
+
+.TB_End
+{
+	display: none;
+}
+
+.TB_ExpandImg
+{
+	background-image: url(images/toolbar.expand.gif);
+	background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
+{
+	background-image: url(images/toolbar.collapse.gif);
+	background-repeat: no-repeat;
+}
+
+.TB_SideBorder
+{
+	background-color: #696969;
+}
+
+.TB_Expand, .TB_Collapse
+{
+	padding: 2px 2px 2px 2px;
+	border: #efefde 1px outset;
+}
+
+.TB_Collapse
+{
+	border: #efefde 1px outset;
+	width: 5px;
+}
+
+.TB_Break
+{
+	height: 27px;
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+	padding: 1px ;
+	margin:1px;
+	height: 21px;
+}
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+	border: #cec6b5 1px solid;
+}
+
+.TB_Button_On
+{
+	border-color: #316ac5;
+	background-color: #c1d2ee;
+}
+
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
+.TB_Button_Off
+{
+	background: #efefef url(images/toolbar.buttonbg.gif) repeat-x;
+}
+
+.TB_Button_Off, .TB_Combo_Off
+{
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	filter: alpha(opacity=70); /* IE */
+	/* -moz-opacity: 0.70; Mozilla (Old) */
+}
+
+.TB_Button_Disabled
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 21px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    margin-top: 4px;
+    margin-bottom: 2px;
+    background-repeat: no-repeat;
+}
+
+/* For composed button ( icon + text, icon + arrow ), we must compensate the table */
+.TB_Button_On TABLE .TB_Button_Image,
+.TB_Button_Off TABLE .TB_Button_Image,
+.TB_Button_On_Over TABLE .TB_Button_Image,
+.TB_Button_Off_Over TABLE .TB_Button_Image,
+.TB_Button_Disabled TABLE .TB_Button_Image
+{
+    margin-top: 3px;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f7f7;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #dedede;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8a857d;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #6c6761;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top:1px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    padding-top: 1px ;
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #f7f7f7;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #316ac5 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c1d2ee;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_dialog.css	(revision 1610)
@@ -0,0 +1,402 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Styles used by the dialog boxes.
+ */
+
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+body, .BackColor
+{
+	background-color: #f7f7f7;
+}
+
+.PopupBody
+{
+	height: 100%;
+	width: 100%;
+	overflow: hidden;
+	background-color: transparent;
+	padding: 0px;
+}
+
+#header
+{
+	cursor: move;
+}
+
+.PopupTitle
+{
+	font-weight: bold;
+	font-size: 14pt;
+	color: #504845;
+	background-color: #dedede;
+	padding: 3px 10px 3px 10px;
+}
+
+.PopupButtons
+{
+	position: absolute;
+	right: 0px;
+	left: 0px;
+	bottom: 0px;
+	border-top: #cec6b5 1px solid;
+	background-color: #DEDEDE;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button
+{
+	border: #7a7261 1px solid;
+	color: #504845;
+	background-color: #cec6b5;
+}
+
+#btnOk
+{
+	width: 100px;
+}
+
+.DarkBackground
+{
+	background-color: #f2f2f2;
+}
+
+.LightBackground
+{
+	background-color: #ffffbe;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #cec6b5 1px solid;
+}
+
+.PopupTabArea
+{
+	color: #504845;
+	background-color: #DEDEDE;
+}
+
+.PopupTabEmptyArea
+{
+	padding-left: 10px ;
+	border-bottom: #cec6b5 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #cec6b5 1px solid;
+	border-top: #cec6b5 1px solid;
+	border-left: #cec6b5 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #504845;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #cec6b5 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight:bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f7f7f7;
+}
+
+.PopupSelectionBox
+{
+	border: #a9a9a9 1px solid !important;
+	background-color: #dcdcdc !important;
+	cursor: pointer;
+	cursor: hand;
+}
+
+#tdBrowse
+{
+	vertical-align: bottom;
+}
+
+/**
+ * Dialog frame related styles.
+ */
+
+.contents
+{
+	position: absolute;
+	top: 2px;
+	left: 16px;
+	right: 16px;
+	bottom: 20px;
+	background-color: #f7f7f7;
+	overflow: hidden;
+	z-index: 1;
+}
+
+.tl, .tr, .tc, .bl, .br, .bc
+{
+	position: absolute;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+}
+
+* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
+{
+	background-image: url(images/sprites.gif);
+}
+
+.ml, .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.png);
+	background-repeat: repeat-y;
+}
+
+* html .ml, * html .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.rtl .ml, .rtl .mr
+{
+	position: absolute;
+	background-image: url(images/dialog.sides.rtl.png);
+	background-repeat: repeat-y;
+}
+
+* html .rtl .ml, * html .rtl .mr
+{
+	background-image: url(images/dialog.sides.gif);
+}
+
+.tl
+{
+	top: 0px;
+	left: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -16px;
+}
+
+.rtl .tl
+{
+	background-position: -16px -397px;
+}
+
+.tr
+{
+	top: 0px;
+	right: 0px;
+	width: 16px;
+	height: 16px;
+	background-position: -16px -76px;
+}
+
+.rtl .tr
+{
+	background-position: -16px -457px;
+}
+
+.tc
+{
+	top: 0px;
+	right: 16px;
+	left: 16px;
+	height: 16px;
+	background-position: 0px -136px;
+	background-repeat: repeat-x;
+}
+
+.ml
+{
+	top: 16px;
+	left: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: 0px 0px;
+}
+
+.mr
+{
+	top: 16px;
+	right: 0px;
+	width: 16px;
+	bottom: 51px;
+	background-position: -16px 0px;
+}
+
+.bl
+{
+	bottom: 0px;
+	left: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -196px;
+}
+
+.rtl .bl
+{
+	background-position: -16px -517px;
+}
+
+.br
+{
+	bottom: 0px;
+	right: 0px;
+	width: 30px;
+	height: 51px;
+	background-position: -16px -263px;
+}
+
+.rtl .br
+{
+	background-position: -16px -584px;
+}
+
+.bc
+{
+	bottom: 0px;
+	right: 30px;
+	left: 30px;
+	height: 51px;
+	background-position: 0px -330px;
+	background-repeat: repeat-x;
+}
+
+/* For IE6. Do not change it. */
+* html .blocker
+{
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	z-index: 12;
+	filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+/* The layer used to cover the dialog when opening a child dialog. */
+.cover
+{
+	position: absolute;
+	top: 0px;
+	left: 14px;
+	right: 14px;
+	bottom: 18px;
+	z-index: 11;
+}
+
+#closeButton
+{
+	position: absolute;
+	right: 0px;
+	top: 0px;
+	margin-top: 5px;
+	margin-right: 10px;
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+	background-image: url(images/sprites.png);
+	background-repeat: no-repeat;
+	background-position: -16px -651px;
+}
+
+* html #closeButton
+{
+	cursor: hand;
+	background-image: url(images/sprites.gif);
+}
+
+.rtl #closeButton
+{
+	right: auto;
+	left: 10px;
+	margin-right: 0px;
+}
+
+#closeButton:hover
+{
+	background-position: -16px -687px;
+}
+
+#throbberBlock
+{
+	z-index: 10;
+}
+
+#throbberBlock div
+{
+	float: left;
+	width: 8px;
+	height: 9px;
+	margin-left: 2px;
+	margin-right: 2px;
+	font-size: 1px;	/* IE6 */
+}
+
+/*
+	Color Gradient Generator:
+	http://www.herethere.net/~samson/php/color_gradient/?cbegin=504845&cend=DEDEDE&steps=4
+*/
+
+.throbber_1
+{
+	background-color: #504845;
+}
+
+.throbber_2
+{
+	background-color: #736D6B;
+}
+
+.throbber_3
+{
+	background-color: #979391;
+}
+
+.throbber_4
+{
+	background-color: #BAB8B7;
+}
+
+.throbber_5
+{
+	background-color: #DEDEDE;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.start.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.start.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.expand.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.expand.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.separator.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.separator.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.collapse.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.collapse.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/dialog.sides.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.end.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.end.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/sprites.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/sprites.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/sprites.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/sprites.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_strip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/silver/fck_strip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/_fckviewstrips.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/_fckviewstrips.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/_fckviewstrips.html	(revision 1610)
@@ -0,0 +1,121 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Useful page that enumerates all icons in the skins strips.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - View Icons Strips</title>
+	<style type="text/css">
+		.TB_Button_Image
+		{
+			overflow: hidden;
+			width: 16px;
+			height: 16px;
+			margin: 3px;
+			background-repeat: no-repeat;
+		}
+
+		.TB_Button_Image img
+		{
+			position: relative;
+		}
+	</style>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	var eImg1 = document.createElement( 'img' ) ;
+	eImg1.onload = Img_OnLoad ;
+	eImg1.src = 'default/fck_strip.gif' ;
+
+	var eImg2 = document.createElement( 'img' ) ;
+	eImg2.onload = Img_OnLoad ;
+	eImg2.src = 'office2003/fck_strip.gif' ;
+
+	var eImg3 = document.createElement( 'img' ) ;
+	eImg3.onload = Img_OnLoad ;
+	eImg3.src = 'silver/fck_strip.gif' ;
+}
+
+var iTotalStrips = 3 ;
+var iMaxHeight = 0 ;
+
+function Img_OnLoad()
+{
+	if ( iMaxHeight < this.height )
+		iMaxHeight = this.height ;
+
+	iTotalStrips-- ;
+
+	if ( iTotalStrips == 0 )
+		LoadIcons( iMaxHeight / 16 ) ;
+}
+
+function LoadIcons( total )
+{
+	var xIconsTable = document.getElementById( 'xIconsTable' ) ;
+
+	for ( var i = 0 ; i < total ; i++ )
+	{
+		var eRow = xIconsTable.insertRow(-1) ;
+
+		var eCell = eRow.insertCell(-1) ;
+		eCell.innerHTML = i + 1 ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="default/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="office2003/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="silver/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table id="xIconsTable">
+		<tr>
+			<td rowspan="2">
+				Index</td>
+			<td align="center" colspan="3">
+				Skins</td>
+		</tr>
+		<tr>
+			<td width="80" align="center">
+				default</td>
+			<td width="80" align="center">
+				office2003</td>
+			<td width="80" align="center">
+				silver</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/skins/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_internal.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_internal.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_internal.css	(revision 1610)
@@ -0,0 +1,199 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This CSS Style Sheet defines rules used by the editor for its internal use.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fckeditor.html file (see FCK_InternalCSS).
+ */
+
+/* Fix to allow putting the caret at the end of the content in Firefox if
+   clicking below the content. */
+html
+{
+	min-height: 100%;
+}
+
+table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
+{
+	border: #d3d3d3 1px solid;
+}
+
+form
+{
+	border: 1px dotted #FF0000;
+	padding: 2px;
+}
+
+.FCK__Flash
+{
+	border: #a9a9a9 1px solid;
+	background-position: center center;
+	background-image: url(images/fck_flashlogo.gif);
+	background-repeat: no-repeat;
+	width: 80px;
+	height: 80px;
+}
+
+.FCK__UnknownObject
+{
+	border: #a9a9a9 1px solid;
+	background-position: center center;
+	background-image: url(images/fck_plugin.gif);
+	background-repeat: no-repeat;
+	width: 80px;
+	height: 80px;
+}
+
+/* Empty anchors images */
+.FCK__Anchor
+{
+	border: 1px dotted #00F;
+	background-position: center center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	width: 16px;
+	height: 15px;
+	vertical-align: middle;
+}
+
+/* Anchors with content */
+.FCK__AnchorC
+{
+	border: 1px dotted #00F;
+	background-position: 1px center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	padding-left: 18px;
+}
+
+/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */
+a[name]
+{
+	border: 1px dotted #00F;
+	background-position: 0 center;
+	background-image: url(images/fck_anchor.gif);
+	background-repeat: no-repeat;
+	padding-left: 18px;
+}
+
+.FCK__PageBreak
+{
+	background-position: center center;
+	background-image: url(images/fck_pagebreak.gif);
+	background-repeat: no-repeat;
+	clear: both;
+	display: block;
+	float: none;
+	width: 100%;
+	border-top: #999999 1px dotted;
+	border-bottom: #999999 1px dotted;
+	border-right: 0px;
+	border-left: 0px;
+	height: 5px;
+}
+
+/* Hidden fields */
+.FCK__InputHidden
+{
+	width: 19px;
+	height: 18px;
+	background-image: url(images/fck_hiddenfield.gif);
+	background-repeat: no-repeat;
+	vertical-align: text-bottom;
+	background-position: center center;
+}
+
+.FCK__ShowBlocks p,
+.FCK__ShowBlocks div,
+.FCK__ShowBlocks pre,
+.FCK__ShowBlocks address,
+.FCK__ShowBlocks blockquote,
+.FCK__ShowBlocks h1,
+.FCK__ShowBlocks h2,
+.FCK__ShowBlocks h3,
+.FCK__ShowBlocks h4,
+.FCK__ShowBlocks h5,
+.FCK__ShowBlocks h6
+{
+	background-repeat: no-repeat;
+	border: 1px dotted gray;
+	padding-top: 8px;
+	padding-left: 8px;
+}
+
+.FCK__ShowBlocks p
+{
+	background-image: url(images/block_p.png);
+}
+
+.FCK__ShowBlocks div
+{
+	background-image: url(images/block_div.png);
+}
+
+.FCK__ShowBlocks pre
+{
+	background-image: url(images/block_pre.png);
+}
+
+.FCK__ShowBlocks address
+{
+	background-image: url(images/block_address.png);
+}
+
+.FCK__ShowBlocks blockquote
+{
+	background-image: url(images/block_blockquote.png);
+}
+
+.FCK__ShowBlocks h1
+{
+	background-image: url(images/block_h1.png);
+}
+
+.FCK__ShowBlocks h2
+{
+	background-image: url(images/block_h2.png);
+}
+
+.FCK__ShowBlocks h3
+{
+	background-image: url(images/block_h3.png);
+}
+
+.FCK__ShowBlocks h4
+{
+	background-image: url(images/block_h4.png);
+}
+
+.FCK__ShowBlocks h5
+{
+	background-image: url(images/block_h5.png);
+}
+
+.FCK__ShowBlocks h6
+{
+	background-image: url(images/block_h6.png);
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_editorarea.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_editorarea.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_editorarea.css	(revision 1610)
@@ -0,0 +1,110 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the default CSS file used by the editor area. It defines the
+ * initial font of the editor and background color.
+ *
+ * A user can configure the editor to use another CSS file. Just change
+ * the value of the FCKConfig.EditorAreaCSS key in the configuration
+ * file.
+ */
+
+/**
+ * The "body" styles should match your editor web site, mainly regarding
+ * background color and font family and size.
+ */
+
+body
+{
+	background-color: #ffffff;
+	padding: 5px 5px 5px 5px;
+	margin: 0px;
+}
+
+body, td
+{
+	font-family: Arial, Verdana, sans-serif;
+	font-size: 12px;
+}
+
+a[href]
+{
+	color: -moz-hyperlinktext !important;		/* For Firefox... mark as important, otherwise it becomes black */
+	text-decoration: -moz-anchor-decoration;	/* For Firefox 3, otherwise no underline will be used */
+}
+
+/**
+ * Just uncomment the following block if you want to avoid spaces between
+ * paragraphs. Remember to apply the same style in your output front end page.
+ */
+
+/*
+p, ul, li
+{
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+*/
+
+/**
+ * Uncomment the following block, or only selected lines if appropriate,
+ * if you have some style items that would break the styles combo box.
+ * You can also write other CSS overrides inside the style block below
+ * as needed and they will be applied to inside the style combo only.
+ */
+
+/*
+.SC_Item *, .SC_ItemSelected *
+{
+	margin: 0px !important;
+	padding: 0px !important;
+	text-indent: 0px !important;
+	clip: auto !important;
+	position: static !important;
+}
+*/
+
+/**
+ * The following are some sample styles used in the "Styles" toolbar command.
+ * You should instead remove them, and include the styles used by the site
+ * you are using the editor in.
+ */
+
+.Bold
+{
+	font-weight: bold;
+}
+
+.Title
+{
+	font-weight: bold;
+	font-size: 18px;
+	color: #cc3300;
+}
+
+.Code
+{
+	border: #8b4513 1px solid;
+	padding-right: 5px;
+	padding-left: 5px;
+	color: #000066;
+	font-family: 'Courier New' , Monospace;
+	background-color: #ff9933;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_showtableborders_gecko.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_showtableborders_gecko.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/fck_showtableborders_gecko.css	(revision 1610)
@@ -0,0 +1,49 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This CSS Style Sheet defines the rules to show table borders on Gecko.
+ */
+
+/* #########
+ *  WARNING
+ * #########
+ * When changing this file, the minified version of it must be updated in the
+ * fckeditor.html file (see FCK_ShowTableBordersCSS).
+ */
+
+/* For tables with the "border" attribute set to "0" */
+table[border="0"],
+table[border="0"] > tr > td, table[border="0"] > tr > th,
+table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th,
+table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th,
+table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}
+
+/* For tables with no "border" attribute set */
+table:not([border]),
+table:not([border]) > tr > td, table:not([border]) > tr > th,
+table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
+table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
+table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/disablehandles.htc
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/disablehandles.htc	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/disablehandles.htc	(revision 1610)
@@ -0,0 +1,15 @@
+<public:component lightweight="true">
+
+<script language="javascript">
+
+function CancelEvent()
+{
+	return false ;
+}
+
+this.onresizestart = CancelEvent ;
+this.onbeforeeditfocus = CancelEvent ;
+
+</script>
+
+</public:component>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/showtableborders.htc
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/showtableborders.htc	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/behaviors/showtableborders.htc	(revision 1610)
@@ -0,0 +1,36 @@
+<public:component lightweight="true">
+
+<public:attach event="oncontentready" onevent="ShowBorders()" />
+<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
+
+<script language="javascript">
+
+var oClassRegex = /\s*FCK__ShowTableBorders/ ;
+
+function ShowBorders()
+{
+	if ( this.border == 0 )
+	{
+		if ( !oClassRegex.test( this.className ) )
+			this.className += ' FCK__ShowTableBorders' ;
+	}
+	else
+	{
+		if ( oClassRegex.test( this.className ) )
+		{
+			this.className = this.className.replace( oClassRegex, '' ) ;
+			if ( this.className.length == 0 )
+				this.removeAttribute( 'className', 0 ) ;
+		}
+	}
+}
+
+function OnPropertyChange()
+{
+	if ( event.propertyName == 'border' || event.propertyName == 'className' )
+		ShowBorders.call(this) ;
+}
+
+</script>
+
+</public:component>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_div.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_div.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_address.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_address.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_pre.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_pre.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_plugin.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_plugin.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_hiddenfield.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_hiddenfield.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_p.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_p.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_anchor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_anchor.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_blockquote.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_blockquote.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_flashlogo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_flashlogo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h4.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h4.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_pagebreak.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/fck_pagebreak.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h6.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/images/block_h6.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/css/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10transitional.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10transitional.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10transitional.js	(revision 1610)
@@ -0,0 +1,140 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Contains the DTD mapping for XHTML 1.0 Transitional.
+ * This file was automatically generated from the file: xhtml10-transitional.dtd
+ */
+FCK.DTD = (function()
+{
+    var X = FCKTools.Merge ;
+
+    var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I ;
+    A = {isindex:1, fieldset:1} ;
+    B = {input:1, button:1, select:1, textarea:1, label:1} ;
+    C = X({a:1}, B) ;
+    D = X({iframe:1}, C) ;
+    E = {hr:1, ul:1, menu:1, div:1, blockquote:1, noscript:1, table:1, center:1, address:1, dir:1, pre:1, h5:1, dl:1, h4:1, noframes:1, h6:1, ol:1, h1:1, h3:1, h2:1} ;
+    F = {ins:1, del:1, script:1} ;
+    G = X({b:1, acronym:1, bdo:1, 'var':1, '#':1, abbr:1, code:1, br:1, i:1, cite:1, kbd:1, u:1, strike:1, s:1, tt:1, strong:1, q:1, samp:1, em:1, dfn:1, span:1}, F) ;
+    H = X({sub:1, img:1, object:1, sup:1, basefont:1, map:1, applet:1, font:1, big:1, small:1}, G) ;
+    I = X({p:1}, H) ;
+    J = X({iframe:1}, H, B) ;
+    K = {img:1, noscript:1, br:1, kbd:1, center:1, button:1, basefont:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, font:1, '#':1, select:1, menu:1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, iframe:1, strong:1, textarea:1, noframes:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, strike:1, dir:1, map:1, dl:1, applet:1, del:1, isindex:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, u:1, s:1, tt:1, address:1, q:1, pre:1, p:1, em:1, dfn:1} ;
+
+    L = X({a:1}, J) ;
+    M = {tr:1} ;
+    N = {'#':1} ;
+    O = X({param:1}, K) ;
+    P = X({form:1}, A, D, E, I) ;
+    Q = {li:1} ;
+
+    return {
+        col: {},
+        tr: {td:1, th:1},
+        img: {},
+        colgroup: {col:1},
+        noscript: P,
+        td: P,
+        br: {},
+        th: P,
+        center: P,
+        kbd: L,
+        button: X(I, E),
+        basefont: {},
+        h5: L,
+        h4: L,
+        samp: L,
+        h6: L,
+        ol: Q,
+        h1: L,
+        h3: L,
+        option: N,
+        h2: L,
+        form: X(A, D, E, I),
+        select: {optgroup:1, option:1},
+        font: J,		// Changed from L to J (see (1))
+        ins: P,
+        menu: Q,
+        abbr: L,
+        label: L,
+        table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
+        code: L,
+        script: N,
+        tfoot: M,
+        cite: L,
+        li: P,
+        input: {},
+        iframe: P,
+        strong: J,		// Changed from L to J (see (1))
+        textarea: N,
+        noframes: P,
+        big: J,			// Changed from L to J (see (1))
+        small: J,		// Changed from L to J (see (1))
+        span: J,		// Changed from L to J (see (1))
+        hr: {},
+        dt: L,
+        sub: J,			// Changed from L to J (see (1))
+        optgroup: {option:1},
+        param: {},
+        bdo: L,
+        'var': J,		// Changed from L to J (see (1))
+        div: P,
+        object: O,
+        sup: J,			// Changed from L to J (see (1))
+        dd: P,
+        strike: J,		// Changed from L to J (see (1))
+        area: {},
+        dir: Q,
+        map: X({area:1, form:1, p:1}, A, F, E),
+        applet: O,
+        dl: {dt:1, dd:1},
+        del: P,
+        isindex: {},
+        fieldset: X({legend:1}, K),
+        thead: M,
+        ul: Q,
+        acronym: L,
+        b: J,			// Changed from L to J (see (1))
+        a: J,
+        blockquote: P,
+        caption: L,
+        i: J,			// Changed from L to J (see (1))
+        u: J,			// Changed from L to J (see (1))
+        tbody: M,
+        s: L,
+        address: X(D, I),
+        tt: J,			// Changed from L to J (see (1))
+        legend: L,
+        q: L,
+        pre: X(G, C),
+        p: L,
+        em: J,			// Changed from L to J (see (1))
+        dfn: L
+    } ;
+})() ;
+
+/*
+	Notes:
+	(1) According to the DTD, many elements, like <b> accept <a> elements
+	    inside of them. But, to produce better output results, we have manually
+	    changed the map to avoid breaking the links on pieces, having
+	    "<b>this is a </b><a><b>link</b> test</a>", instead of
+	    "<b>this is a <a>link</a></b><a> test</a>".
+*/
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10strict.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10strict.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_xhtml10strict.js	(revision 1610)
@@ -0,0 +1,116 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Contains the DTD mapping for XHTML 1.0 Strict.
+ * This file was automatically generated from the file: xhtml10-strict.dtd
+ */
+FCK.DTD = (function()
+{
+    var X = FCKTools.Merge ;
+
+    var H,I,J,K,C,L,M,A,B,D,E,G,N,F ;
+    A = {ins:1, del:1, script:1} ;
+    B = {hr:1, ul:1, div:1, blockquote:1, noscript:1, table:1, address:1, pre:1, p:1, h5:1, dl:1, h4:1, ol:1, h6:1, h1:1, h3:1, h2:1} ;
+    C = X({fieldset:1}, B) ;
+    D = X({sub:1, bdo:1, 'var':1, sup:1, br:1, kbd:1, map:1, samp:1, b:1, acronym:1, '#':1, abbr:1, code:1, i:1, cite:1, tt:1, strong:1, q:1, em:1, big:1, small:1, span:1, dfn:1}, A) ;
+    E = X({img:1, object:1}, D) ;
+    F = {input:1, button:1, textarea:1, select:1, label:1} ;
+    G = X({a:1}, F) ;
+    H = {img:1, noscript:1, br:1, kbd:1, button:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, select:1, '#':1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, strong:1, textarea:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, map:1, dl:1, del:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, address:1, tt:1, q:1, pre:1, p:1, em:1, dfn:1} ;
+
+    I = X({form:1, fieldset:1}, B, E, G) ;
+    J = {tr:1} ;
+    K = {'#':1} ;
+    L = X(E, G) ;
+    M = {li:1} ;
+    N = X({form:1}, A, C) ;
+
+    return {
+        col: {},
+        tr: {td:1, th:1},
+        img: {},
+        colgroup: {col:1},
+        noscript: N,
+        td: I,
+        br: {},
+        th: I,
+        kbd: L,
+        button: X(B, E),
+        h5: L,
+        h4: L,
+        samp: L,
+        h6: L,
+        ol: M,
+        h1: L,
+        h3: L,
+        option: K,
+        h2: L,
+        form: X(A, C),
+        select: {optgroup:1, option:1},
+        ins: I,
+        abbr: L,
+        label: L,
+        code: L,
+        table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
+        script: K,
+        tfoot: J,
+        cite: L,
+        li: I,
+        input: {},
+        strong: L,
+        textarea: K,
+        big: L,
+        small: L,
+        span: L,
+        dt: L,
+        hr: {},
+        sub: L,
+        optgroup: {option:1},
+        bdo: L,
+        param: {},
+        'var': L,
+        div: I,
+        object: X({param:1}, H),
+        sup: L,
+        dd: I,
+        area: {},
+        map: X({form:1, area:1}, A, C),
+        dl: {dt:1, dd:1},
+        del: I,
+        fieldset: X({legend:1}, H),
+        thead: J,
+        ul: M,
+        acronym: L,
+        b: L,
+        a: X({img:1, object:1}, D, F),
+        blockquote: N,
+        caption: L,
+        i: L,
+        tbody: J,
+        address: L,
+        tt: L,
+        legend: L,
+        q: L,
+        pre: X({a:1}, D, F),
+        p: L,
+        em: L,
+        dfn: L
+    } ;
+})() ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_dtd_test.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_dtd_test.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/dtd/fck_dtd_test.html	(revision 1610)
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>DTD Test Page</title>
+	<script type="text/javascript">
+
+	// Define an object for this test page, so the assignment to FCK.DTD works
+	var FCK = {} ;
+	</script>
+	<script type="text/javascript" src="../_source/internals/fcktools.js"></script>
+	<script type="text/javascript" src="fck_xhtml10transitional.js"></script>
+</head>
+<body>
+	<h1>
+		DTD Contents
+	</h1>
+	<table border="1">
+		<script type="text/javascript">
+
+for ( var p in FCK.DTD )
+{
+	document.write( '<tr><td><b>' + p + '</b></td><td>' ) ;
+
+	var isFirst = true ;
+
+	for ( var c in FCK.DTD[p] )
+	{
+		if ( !isFirst )
+			document.write( ', ' ) ;
+		isFirst = false ;
+
+		document.write( c ) ;
+	}
+
+
+	document.write( '</td></tr>' ) ;
+}
+		</script>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckadobeair.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckadobeair.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckadobeair.js	(revision 1610)
@@ -0,0 +1,176 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Compatibility code for Adobe AIR.
+ */
+
+if ( FCKBrowserInfo.IsAIR )
+{
+	var FCKAdobeAIR = (function()
+	{
+		/*
+		 * ### Private functions.
+		 */
+
+		var getDocumentHead = function( doc )
+		{
+			var head ;
+			var heads = doc.getElementsByTagName( 'head' ) ;
+
+			if( heads && heads[0] )
+				head = heads[0] ;
+			else
+			{
+				head = doc.createElement( 'head' ) ;
+				doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ;
+			}
+
+			return head ;
+		} ;
+
+		/*
+		 * ### Public interface.
+		 */
+		return {
+			FCKeditorAPI_Evaluate : function( parentWindow, script )
+			{
+				// TODO : This one doesn't work always. The parent window will
+				// point to an anonymous function in this window. If this
+				// window is destroyied the parent window will be pointing to
+				// an invalid reference.
+
+				// Evaluate the script in this window.
+				eval( script ) ;
+
+				// Point the FCKeditorAPI property of the parent window to the
+				// local reference.
+				parentWindow.FCKeditorAPI = window.FCKeditorAPI ;
+			},
+
+			EditingArea_Start : function( doc, html )
+			{
+				// Get the HTML for the <head>.
+				var headInnerHtml = html.match( /<head>([\s\S]*)<\/head>/i )[1] ;
+
+				if ( headInnerHtml && headInnerHtml.length > 0 )
+				{
+					// Inject the <head> HTML inside a <div>.
+					// Do that before getDocumentHead because WebKit moves
+					// <link css> elements to the <head> at this point.
+					var div = doc.createElement( 'div' ) ;
+					div.innerHTML = headInnerHtml ;
+
+					// Move the <div> nodes to <head>.
+					FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ;
+				}
+
+				doc.body.innerHTML = html.match( /<body>([\s\S]*)<\/body>/i )[1] ;
+
+				//prevent clicking on hyperlinks and navigating away
+				doc.addEventListener('click', function( ev )
+					{
+						ev.preventDefault() ;
+						ev.stopPropagation() ;
+					}, true ) ;
+			},
+
+			Panel_Contructor : function( doc, baseLocation )
+			{
+				var head = getDocumentHead( doc ) ;
+
+				// Set the <base> href.
+				head.appendChild( doc.createElement('base') ).href = baseLocation ;
+
+				doc.body.style.margin	= '0px' ;
+				doc.body.style.padding	= '0px' ;
+			},
+
+			ToolbarSet_GetOutElement : function( win, outMatch )
+			{
+				var toolbarTarget = win.parent ;
+
+				var targetWindowParts = outMatch[1].split( '.' ) ;
+				while ( targetWindowParts.length > 0 )
+				{
+					var part = targetWindowParts.shift() ;
+					if ( part.length > 0 )
+						toolbarTarget = toolbarTarget[ part ] ;
+				}
+
+				toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ;
+			},
+
+			ToolbarSet_InitOutFrame : function( doc )
+			{
+				var head = getDocumentHead( doc ) ;
+
+				head.appendChild( doc.createElement('base') ).href = window.document.location ;
+
+				var targetWindow = doc.defaultView;
+
+				targetWindow.adjust = function()
+				{
+					targetWindow.frameElement.height = doc.body.scrollHeight;
+				} ;
+
+				targetWindow.onresize = targetWindow.adjust ;
+				targetWindow.setTimeout( targetWindow.adjust, 0 ) ;
+
+				doc.body.style.overflow = 'hidden';
+				doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ;
+			}
+		} ;
+	})();
+
+	/*
+	 * ### Overrides
+	 */
+	( function()
+	{
+		// Save references for override reuse.
+		var _Original_FCKPanel_Window_OnFocus	= FCKPanel_Window_OnFocus ;
+		var _Original_FCKPanel_Window_OnBlur	= FCKPanel_Window_OnBlur ;
+		var _Original_FCK_StartEditor			= FCK.StartEditor ;
+
+		FCKPanel_Window_OnFocus = function( e, panel )
+		{
+			// Call the original implementation.
+			_Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ;
+
+			if ( panel._focusTimer )
+				clearTimeout( panel._focusTimer ) ;
+		}
+
+		FCKPanel_Window_OnBlur = function( e, panel )
+		{
+			// Delay the execution of the original function.
+			panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ;
+		}
+
+		FCK.StartEditor = function()
+		{
+			// Force pointing to the CSS files instead of using the inline CSS cached styles.
+			window.FCK_InternalCSS			= FCKConfig.BasePath + 'css/fck_internal.css' ;
+			window.FCK_ShowTableBordersCSS	= FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;
+
+			_Original_FCK_StartEditor.apply( this, arguments ) ;
+		}
+	})();
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_gecko.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_gecko.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_gecko.js	(revision 1610)
@@ -0,0 +1,109 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This file has been compressed for better performance. The original source
+ * can be found at "editor/_source".
+ */
+
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}};if (A.IsSafari) A.IsSafari3=(parseFloat(s.match(/ applewebkit\/(\d+)/)[1])<526);})(FCKBrowserInfo);
+var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
+var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
+var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){FCK.Events.FireEvent("OnBeforeGetData");if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};D=FCKConfig.ProtectedSource.Revert(D);setTimeout(function() { FCK.Events.FireEvent("OnAfterGetData");},0);return D;},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (window.onresize) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){FCKTools.AddEventListener(FCK.EditorDocument,'paste',function(evt){var A=new FCKDomRange(FCK.EditorWindow);var B=FCK.EditorDocument.createTextNode('\ufeff');var C=FCK.EditorDocument.createElement('a');C.id='fck_paste_padding';C.innerHTML='&#65279;';A.MoveToSelection();A.DeleteContents();A.InsertNode(B);A.Collapse();A.InsertNode(C);A.MoveToPosition(C,3);A.Select();setTimeout(function(){B.parentNode.removeChild(B);C=FCK.EditorDocument.getElementById('fck_paste_padding');C.parentNode.removeChild(C);},0);});};if (FCKBrowserInfo.IsSafari){var D=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',D);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
+FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (window.onresize) window.onresize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();evt.preventDefault();evt.stopPropagation();}};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||(!FCKBrowserInfo.IsOpera&&String(H.parentNode.contentEditable)=='false')||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){this.EditorDocument.addEventListener('dragover',function (evt){ if (!FCK.MouseDownFlag&&FCK.Config.ForcePasteAsPlainText) evt.returnValue=false;},true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var N=ev.srcElement;if (N.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(N);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{if (FCKConfig.ForcePasteAsPlainText) FCK.PasteAsPlainText();else FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){var B=FCK.EditorDocument,range;A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGecko){A=A.replace(/&nbsp;$/,'$&<span _fcktemp="1"/>');var C=new FCKDocumentFragment(this.EditorDocument);C.AppendHtml(A);var D=C.RootNode.lastChild;range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();var E=C.RootNode.firstChild;while (E&&E.nodeType!=1) E=E.nextSibling;if (E&&FCKListsLib.BlockElements[E.nodeName.toLowerCase()]) range.SplitBlock();range.DeleteContents();range.InsertNode(C.RootNode);range.MoveToPosition(D,4);}else B.execCommand('inserthtml',false,A);this.Focus();if (!range){range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();};var F=range.CreateBookmark();FCKDocumentProcessor.Process(B);try{range.MoveToBookmark(F);range.Select();}catch (e) {};this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];if (FCKSelection.GetSelection().isCollapsed) return C;FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCKSelection.GetSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseFloat(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {  }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={Output:function(){},OutputObject:function(){}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE){var C=B[i].nodeName;if (C.StartsWith('_fck')){continue;};if (C=='class'){if (A.className.length>0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
+FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.6",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','>':'gt','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveXHtmlJobProperties(A);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+(FCKXHtml.SpecialBlocks.push(A)-1);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}};if (FCKBrowserInfo.IsGecko){FCKXHtml.TagProcessors['link']=function(A,B){if (B.href.substr(0,9).toLowerCase()=='chrome://') return false;return A;}};
+var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
+var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document){this.Document.selection.empty();this.Document.body.innerHTML="";};this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
+FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
+var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
+var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},AppendHtml:function(A){var B=this.RootNode.ownerDocument.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}};
+var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike){if (F){var M=this.Window.document.createElement('span');M.innerHTML='&nbsp;';C.InsertNode(M);FCKDomTools.ScrollIntoView(M,false);C.DeleteContents();}else{FCKDomTools.ScrollIntoView(F||I,false);}};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.push(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
+var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
+FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode){var B=A.getRangeAt(0);if (B.collapsed||B.startContainer.nodeType==3) return A.anchorNode.parentNode;else return A.anchorNode;};var C=new FCKElementPath(A.anchorNode);var D=new FCKElementPath(A.focusNode);var E=null;var F=null;if (C.Elements.length>D.Elements.length){E=C.Elements;F=D.Elements;}else{E=D.Elements;F=C.Elements;};var G=E.length-F.length;for(var i=0;i<F.length;i++){if (E[G+i]==F[i]) return F[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=this.GetSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}}while (B){if (B.nodeType==1&&B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName.IEquals(A)) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};FCKSelection.GetSelection=function(){return FCK.EditorWindow.getSelection();};FCKSelection.Save=function(){};FCKSelection.Restore=function(){};FCKSelection.Release=function(){};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=B[i].parentNode;C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];F.insertBefore(B,(A?G:G.nextSibling));}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){FCKDomTools.ClearElementJSProperty(A[i],B);}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;for (var i=0;i<A.length;i++){if (A[i].parentNode.parentNode!=A[0].parentNode.parentNode) return false;};this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0]);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCK.EditorDocument.createElement(B.nodeName));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;var G=B.rowSpan;if (isNaN(G)) G=1;if (G>1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i<I.length;i++){if (I[i].parentNode.rowIndex==H){J=I[i];break;}};var K=FCK.EditorDocument.createElement(B.nodeName);K.rowSpan=Math.floor(G/2);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i<C[D].length;){var O=C[D][i].colSpan;if (isNaN(O)||O<1) O=1;if (i==E){i+=O;continue;};var P=C[D][i].rowSpan;if (isNaN(P)) P=1;C[D][i].rowSpan=P+1;i+=O;};var K=FCK.EditorDocument.createElement(B.nodeName);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._CreateTableMap=function(A){var B=(A.nodeName=='TABLE'?A:A.parentNode.parentNode.parentNode);var C=B.rows;var r=-1;var D=[];for (var i=0;i<C.length;i++){r++;if (!D[r]) D[r]=[];var c=-1;for (var j=0;j<C[i].cells.length;j++){var E=C[i].cells[j];c++;while (D[r][c]) c++;var F=isNaN(E.colSpan)?1:E.colSpan;var G=isNaN(E.rowSpan)?1:E.rowSpan;for (var H=0;H<G;H++){if (!D[r+H]) D[r+H]=[];for (var I=0;I<F;I++){D[r+H][c+I]=C[i].cells[j];}};c+=F-1;}};return D;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D[C]=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D[C]++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];FCKDomTools.ClearElementJSProperty(D,'_colScanned');FCKDomTools.ClearElementJSProperty(D,'_rowScanned');}};for (var i=0;i<A.length;i++){var I=FCK.EditorDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);if (C!='rowSpan'){D.rowSpan=D[C];D.removeAttribute(C);};j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};if (FCKBrowserInfo.IsIE){B.rows[i].replaceNode(I);}else{B.rows[i].innerHTML='';FCKDomTools.MoveChildren(I,B.rows[i]);}}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;if (B.parentNode.parentNode!=G.parentNode.parentNode) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKTableHandler.GetSelectedCells=function(){var A=[];var B=FCKSelection.GetSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C) A[0]=C;return A;};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.nodeName.Equals('TD','TH')) A[A.length]=E;};return A;};
+var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
+FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B;var C=FCKTools.CreateXmlObject('XmlHttp');C.open('GET',A,false);C.send(null);if (C.status==200||C.status==304||(C.status==0&&C.readyState==4)){B=C.responseXML;if (!B) B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}else B=null;if (B){try{var D=B.firstChild;}catch (e){B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}};if (!B||!B.firstChild){this.Error=true;if (window.confirm('Error loading "'+A+'" (HTTP Status: '+C.status+').\r\nDo you want to see the server response dump?')) alert(C.responseText);};this.DOMDocument=B;},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
+var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
+var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C){if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);}};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker!='ieSpell');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;case 'WSC':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','wsc/w.html',530,480);}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';}};
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
+var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
+var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
+var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();}while (J.nodeName.IEquals('table','tbody','tr','ol','ul')) J=J.parentNode;var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i<N.childNodes.length;i++){if (FCKListsLib.BlockElements[N.childNodes[i].nodeName.toLowerCase()]) return false;};return true;};while (O.length>0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
+var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;case 'Scayt':B=FCKScayt.CreateCommand();break;case 'ScaytContext':B=FCKScayt.CreateContextCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._PopupArgs=[x,y,D,E.offsetHeight,A];this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;};
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
+var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
+var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKScayt;(function(){var A=[];var B=(FCK&&FCK.EditorWindow&&FCK.EditorWindow.parent.parent.scayt)?true:false;var C=false;var D=false;function ScaytEngineLoad(callback){if (B) return;B=true;var E=FCK.EditorWindow.parent.parent;var F=function (){window.scayt=E.scayt;InitScayt();var G=FCKToolbarItems.LoadedItems['ScaytCombobox'];G&&G.SetEnabled(scyt_control&&scyt_control.disabled);InitSetup();};if (E.scayt){F();return;};if (FCK.Config.ScaytCustomUrl) FCK.Config.ScaytCustomUrl=new String(FCK.Config.ScaytCustomUrl).replace(new RegExp("^http[s]*:\/\/"),"");var H=document.location.protocol;var I=FCK.Config.ScaytCustomUrl||'svc.spellchecker.net/spellcheck3/lf/scayt/scayt4.js';var J=H+'//'+I;var K=ParseUrl(J).path+'/';var L=E.window.CKEDITOR||(E.window.CKEDITOR={});L._djScaytConfig={I:K,addOnLoad:function(){F();},isDebug:false};if (callback) A.push(callback);DoLoadScript(J);};function DoLoadScript(url){if (!url) return false;var E=FCK.EditorWindow.parent.parent;var s=E.document.createElement('script');s.type='text/javascript';s.src=url;E.document.getElementsByTagName('head')[0].appendChild(s);return true;};function ParseUrl(data){var m=data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/);return m?{ path:m[1],file:m[2] }:data;};function createScaytControl (){var N={};var E=FCK.EditorWindow.parent.parent;N.srcNodeRef=FCK.EditingArea.IFrame;N.customerid=FCK.Config.ScaytCustomerid;N.customDictionaryName=FCK.Config.ScaytCustomDictionaryName;N.userDictionaryName=FCK.Config.ScaytUserDictionaryName;N.defLang=FCK.Config.ScaytDefLang;var P=E.scayt;var Q=window.scayt_control=new P(N);};function InitScayt(){createScaytControl();var Q=window.scayt_control;if (Q){Q.setDisabled(false);D=true;C=!Q.disabled;var G=FCKToolbarItems.LoadedItems['ScaytCombobox'];G&&G.Enable();ShowScaytState();};for (var i=0;i<A.length;i++){try{A[i].call(this);}catch(err){}}};var T=function(){name='Scayt';};T.prototype.Execute=function(c){switch (c){case 'Options':case 'Langs':case 'About':if (B&&D&&!C){ScaytMessage('SCAYT is not enabled');break;};if (B&&D) FCKDialog.OpenDialog('Scayt','SCAYT Settings','dialog/fck_scayt.html?'+c.toLowerCase(),343,343);break;default:if (!B){var U=this;ScaytEngineLoad(function (){U.SetEnabled(!window.scayt_control.disabled);});return true;}else if (D){if (C) this.Disable();else this.Enable();ShowScaytState();}};if (!B) return ScaytMessage('SCAYT is not loaded')||false;if (!D) return ScaytMessage('SCAYT is not ready')||false;return true;};T.prototype.Enable=function(){window.scayt_control.setDisabled(false);C=true;};T.prototype.Disable=function(){window.scayt_control.setDisabled(true);C=false;};T.prototype.SetEnabled=function(state){if (state) this.Enable();else this.Disable();ShowScaytState();return true;};T.prototype.GetState=function(){return 0;};function ShowScaytState(){var W=FCKToolbarItems.GetItem('SpellCheck');if (!W||!W._Combo||!W._Combo._OuterTable) return;var X=W._Combo._OuterTable.getElementsByTagName('img')[1];var Y=W._Combo.Items['trigger'];if (C){X.style.opacity='1';Y.innerHTML=GetStatusLabel();}else{X.style.opacity='0.5';Y.innerHTML=GetStatusLabel();}};function GetStatusLabel(){if (!D) return  '<b>Enable SCAYT</b>';return C?'<b>Disable SCAYT</b>':'<b>Enable SCAYT</b>';};var Z=function(tooltip,style){this.Command=FCKCommands.GetCommand('Scayt');this.CommandName='Scayt';this.Label=this.GetLabel();this.Tooltip=FCKLang.ScaytTitle;this.Style=1;};Z.prototype=new FCKToolbarSpecialCombo;Z.prototype.CreateItems=function(){this._Combo.AddItem('Trigger','<b>Enable SCAYT</b>');this._Combo.AddItem('Options',FCKLang.ScaytTitleOptions||"Options");this._Combo.AddItem('Langs',FCKLang.ScaytTitleLangs||"Languages");this._Combo.AddItem('About',FCKLang.ScaytTitleAbout||"About");};Z.prototype.GetLabel=function(){var a=FCKConfig.SkinPath+'fck_strip.gif';return FCKBrowserInfo.IsIE?'<div class="TB_Button_Image"><img src="'+a+'" style="top:-192px"></div>':'<img class="TB_Button_Image" src="'+FCK_SPACER_PATH+'" style="background-position: 0px -192px;background-image: url('+a+');">';};function ScaytMessage(m){m&&alert(m);};var b=function(){name='ScaytContext';};b.prototype.Execute=function(contextInfo){var c=contextInfo&&contextInfo.action,g=c&&contextInfo.node,Q=window.scayt_control;if (g){switch (c){case 'Suggestion':Q.replace(g,contextInfo.suggestion);break;case 'Ignore':Q.ignore(g);break;case 'Ignore All':Q.ignoreAll(g);break;case 'Add Word':var E=FCK.EditorWindow.parent.parent;E.scayt.addWordToUserDictionary(g);break;}}};function InitSetup(){FCK.ContextMenu.RegisterListener({AddItems:function(menu){var E=FCK.EditorWindow.parent.parent;var Q=window.scayt_control,P=E.scayt;if (!Q) return;var g=Q.getScaytNode();if (!g) return;var h=P.getSuggestion(Q.getWord(g),Q.getLang());if (!h||!h.length) return;menu.AddSeparator();var j=FCK.Config.ScaytMaxSuggestions||5;var k=(j==-1)?h.length:j;for (var i=0;i<k;i+=1){if (h[i]){menu.AddItem('ScaytContext',h[i],null,false,{'action':'Suggestion','node':g,'suggestion':h[i] });}};menu.AddSeparator();menu.AddItem('ScaytContext','Ignore',null,false,{ 'action':'Ignore','node':g });menu.AddItem('ScaytContext','Ignore All',null,false,{ 'action':'Ignore All','node':g });menu.AddItem('ScaytContext','Add Word',null,false,{ 'action':'Add Word','node':g });try{if (D&&C) Q.fireOnContextMenu(null,FCK.ContextMenu._InnerContextMenu);}catch(err) {}}});FCK.Events.AttachEvent('OnPaste',function(){window.scayt_control.refresh();return true;});};FCK.Events.AttachEvent('OnAfterSetHTML',function(){if (FCKConfig.SpellChecker=='SCAYT'){if (!B&&FCK.Config.ScaytAutoStartup) ScaytEngineLoad();if (FCK.EditMode==0&&B&&D) createScaytControl();ShowScaytState();}});FCK.Events.AttachEvent('OnBeforeGetData',function(){D&&window.scayt_control.reset();});FCK.Events.AttachEvent('OnAfterGetData',function(){D&&window.scayt_control.refresh();});FCKScayt={CreateCommand:function(){return new T();},CreateContextCommand:function(){return new b();},CreateToolbarItem:function(){return new Z();}};})();
+var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;case 'SpellCheck':if (FCKConfig.SpellChecker=='SCAYT') B=FCKScayt.CreateToolbarItem();else B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
+var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);};
+function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (window.onresize){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
+var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
+var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){if (!FCKBrowserInfo.IsIE) FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
+var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_ie.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_ie.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/fckeditorcode_ie.js	(revision 1610)
@@ -0,0 +1,110 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This file has been compressed for better performance. The original source
+ * can be found at "editor/_source".
+ */
+
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
+var	FCKIECleanup=function(A){if (A._FCKCleanupObj) this.Items=A._FCKCleanupObj.Items;else{this.Items=[];A._FCKCleanupObj=this;FCKTools.AddEventListenerEx(A,'unload',FCKIECleanup_Cleanup);}};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){if (!this._FCKCleanupObj||(FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag)) return;var A=this._FCKCleanupObj.Items;while (A.length>0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();};
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}};if (A.IsSafari) A.IsSafari3=(parseFloat(s.match(/ applewebkit\/(\d+)/)[1])<526);})(FCKBrowserInfo);
+var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
+var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
+var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
+var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){FCK.Events.FireEvent("OnBeforeGetData");if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};D=FCKConfig.ProtectedSource.Revert(D);setTimeout(function() { FCK.Events.FireEvent("OnAfterGetData");},0);return D;},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (window.onresize) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){FCKTools.AddEventListener(FCK.EditorDocument,'paste',function(evt){var A=new FCKDomRange(FCK.EditorWindow);var B=FCK.EditorDocument.createTextNode('\ufeff');var C=FCK.EditorDocument.createElement('a');C.id='fck_paste_padding';C.innerHTML='&#65279;';A.MoveToSelection();A.DeleteContents();A.InsertNode(B);A.Collapse();A.InsertNode(C);A.MoveToPosition(C,3);A.Select();setTimeout(function(){B.parentNode.removeChild(B);C=FCK.EditorDocument.getElementById('fck_paste_padding');C.parentNode.removeChild(C);},0);});};if (FCKBrowserInfo.IsSafari){var D=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',D);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
+FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.BasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onbeforedeactivate",function(){ FCKSelection.Save();});this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKSelection.Restore();FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>'+A;B.createRange().pasteHTML(A);var C=FCK.EditorDocument.getElementById('__fakeFCKRemove__');if (C.parentNode.childNodes.length==1) C=C.parentNode;C.removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];var D=FCKSelection.GetType()=='Control';var E=D&&FCKSelection.GetSelectedElement();if (!(D&&!FCKTools.GetElementAscensor(E,'a'))) FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (D){var F=this.EditorDocument.createElement('A');F.href=A;var G=E;G.parentNode.insertBefore(F,G);G.parentNode.removeChild(G);F.appendChild(G);return [F];};var H='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',H,false,!!B);var I=this.EditorDocument.links;for (i=0;i<I.length;i++){var F=I[i];if (F.getAttribute('href',2)==H){var K=F.innerHTML;F.href=A;F.innerHTML=K;var L=F.lastChild;if (L&&L.nodeName=='BR'){FCKDomTools.InsertAfterNode(F,F.removeChild(L));};C.push(F);}}};return C;};function _FCK_RemoveDisabledAtt(){this.removeAttribute('disabled');};function Doc_OnMouseDown(A){var e=A.srcElement;if (e.nodeName&&e.nodeName.IEquals('input')&&e.type.IEquals(['radio','checkbox'])&&!e.disabled){e.disabled=true;FCKTools.SetTimeout(_FCK_RemoveDisabledAtt,1,e);}};
+var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseFloat(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {  }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
+var FCKDebug={Output:function(){},OutputObject:function(){}};
+var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE){var C=B[i].nodeName;if (C.StartsWith('_fck')){continue;};if (C=='class'){if (A.className.length>0) return true;continue;}};if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
+var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
+FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':if (document.location.protocol!='file:') try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
+var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.6",VersionBuild : "25427",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue	: window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
+var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
+var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
+var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
+var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
+var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','>':'gt','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
+var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveXHtmlJobProperties(A);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+(FCKXHtml.SpecialBlocks.push(A)-1);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)}	while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
+FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes,bHasStyle;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){bHasStyle=true;continue;}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}};if (bHasStyle||B.style.cssText.length>0){var I=FCKTools.ProtectFormStyles(B);var J=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);this._AppendAttribute(C,'style',J);}};FCKXHtml._RemoveXHtmlJobProperties=function (A){if (!A||!A.nodeType||A.nodeType!=1) return;if (typeof A._fckxhtmljob=='undefined'&&A.tagName!=='BODY') return;A.removeAttribute('_fckxhtmljob');if (A.hasChildNodes()){var B=A.childNodes;for (var i=B.length-1;i>=0;i--){var C=B[i];if (C.parentNode==A) FCKXHtml._RemoveXHtmlJobProperties(C);}}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};
+var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
+var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document){this.Document.selection.empty();this.Document.body.innerHTML="";};this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
+var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
+FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
+var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
+var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
+var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
+var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
+var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
+FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){var B=this._GetSelectionMarkerTag(true);var C=this._GetSelectionMarkerTag(false);if (!B&&!C){this._Range.setStart(this.Window.document.body,0);this._UpdateElementInfo();return;};this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._Range.setEnd(C.parentNode,FCKDomTools.GetIndexOf(C));C.parentNode.removeChild(C);this._UpdateElementInfo();}else{var D=A.createRange().item(0);if (D){this._Range.setStartBefore(D);this._Range.setEndAfter(D);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(A){if (this._Range) this.SelectBookmark(this.CreateBookmark(true),A);};FCKDomRange.prototype.SelectBookmark=function(A,B){var C=this.CheckIsCollapsed();var D;var E;var F=this.GetBookmarkNode(A,true);if (!F) return;var G;if (!C) G=this.GetBookmarkNode(A,false);var H=this.Window.document.body.createTextRange();H.moveToElementText(F);H.moveStart('character',1);if (G){var I=this.Window.document.body.createTextRange();I.moveToElementText(G);H.setEndPoint('EndToEnd',I);H.moveEnd('character',-1);}else{D=B||!F.previousSibling||F.previousSibling.nodeName.toLowerCase()=='br';E=this.Window.document.createElement('span');E.innerHTML='&#65279;';F.parentNode.insertBefore(E,F);if (D){F.parentNode.insertBefore(this.Window.document.createTextNode('\ufeff'),F);}};if (!this._Range) this._Range=this.CreateRange();this._Range.setStartBefore(F);F.parentNode.removeChild(F);if (C){if (D){H.moveStart('character',-1);H.select();this.Window.document.selection.clear();}else H.select();FCKDomTools.RemoveNode(E);}else{this._Range.setEndBefore(G);G.parentNode.removeChild(G);H.select();}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document;var C=B.selection;var D;try{D=C.createRange();}catch (e){return null;};if (D.parentElement().document!=B) return null;D.collapse(A===true);var E='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);D.pasteHTML('<span id="'+E+'"></span>');return B.getElementById(E);};
+var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
+var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}};
+var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
+var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike){if (F){var M=this.Window.document.createElement('span');M.innerHTML='&nbsp;';C.InsertNode(M);FCKDomTools.ScrollIntoView(M,false);C.DeleteContents();}else{FCKDomTools.ScrollIntoView(F||I,false);}};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
+var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.push(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
+var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
+FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);B.select();}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);B.select();}};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();}while (B){if (B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=this.GetSelection().createRange();B=oRange.parentElement();}while (B&&!B.nodeName.Equals(A)) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=this.GetSelection();if (A.type.toLowerCase()!="none"){A.clear();};return A;};FCKSelection.GetSelection=function(){this.Restore();return FCK.EditorDocument.selection;};FCKSelection.Save=function(A){var B=FCK.EditorDocument;if (!B) return;if (this.locked) return;this.locked=!!A;var C=B.selection;var D;if (C){try {D=C.createRange();}catch(e) {};if (D){if (D.parentElement&&FCKTools.GetElementDocument(D.parentElement())!=B) D=null;else if (D.item&&FCKTools.GetElementDocument(D.item(0))!=B) D=null;}};this.SelectionData=D;};FCKSelection._GetSelectionDocument=function(A){var B=A.createRange();if (!B) return null;else if (B.item) return FCKTools.GetElementDocument(B.item(0));else return FCKTools.GetElementDocument(B.parentElement());};FCKSelection.Restore=function(){if (this.SelectionData){FCK.IsSelectionChangeLocked=true;try{if (String(this._GetSelectionDocument(FCK.EditorDocument.selection).body.contentEditable)=='true'){FCK.IsSelectionChangeLocked=false;return;};this.SelectionData.select();}catch (e) {};FCK.IsSelectionChangeLocked=false;}};FCKSelection.Release=function(){this.locked=false;delete this.SelectionData;};
+var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=B[i].parentNode;C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];F.insertBefore(B,(A?G:G.nextSibling));}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){FCKDomTools.ClearElementJSProperty(A[i],B);}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;for (var i=0;i<A.length;i++){if (A[i].parentNode.parentNode!=A[0].parentNode.parentNode) return false;};this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0]);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCK.EditorDocument.createElement(B.nodeName));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;var G=B.rowSpan;if (isNaN(G)) G=1;if (G>1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i<I.length;i++){if (I[i].parentNode.rowIndex==H){J=I[i];break;}};var K=FCK.EditorDocument.createElement(B.nodeName);K.rowSpan=Math.floor(G/2);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i<C[D].length;){var O=C[D][i].colSpan;if (isNaN(O)||O<1) O=1;if (i==E){i+=O;continue;};var P=C[D][i].rowSpan;if (isNaN(P)) P=1;C[D][i].rowSpan=P+1;i+=O;};var K=FCK.EditorDocument.createElement(B.nodeName);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._CreateTableMap=function(A){var B=(A.nodeName=='TABLE'?A:A.parentNode.parentNode.parentNode);var C=B.rows;var r=-1;var D=[];for (var i=0;i<C.length;i++){r++;if (!D[r]) D[r]=[];var c=-1;for (var j=0;j<C[i].cells.length;j++){var E=C[i].cells[j];c++;while (D[r][c]) c++;var F=isNaN(E.colSpan)?1:E.colSpan;var G=isNaN(E.rowSpan)?1:E.rowSpan;for (var H=0;H<G;H++){if (!D[r+H]) D[r+H]=[];for (var I=0;I<F;I++){D[r+H][c+I]=C[i].cells[j];}};c+=F-1;}};return D;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D[C]=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D[C]++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];FCKDomTools.ClearElementJSProperty(D,'_colScanned');FCKDomTools.ClearElementJSProperty(D,'_rowScanned');}};for (var i=0;i<A.length;i++){var I=FCK.EditorDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);if (C!='rowSpan'){D.rowSpan=D[C];D.removeAttribute(C);};j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};if (FCKBrowserInfo.IsIE){B.rows[i].replaceNode(I);}else{B.rows[i].innerHTML='';FCKDomTools.MoveChildren(I,B.rows[i]);}}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;if (B.parentNode.parentNode!=G.parentNode.parentNode) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
+FCKTableHandler.GetSelectedCells=function(){if (FCKSelection.GetType()=='Control'){var A=FCKSelection.MoveToAncestorNode(['TD','TH']);return A?[A]:[];};var B=[];var C=FCKSelection.GetSelection().createRange();var D=FCKSelection.GetParentElement();if (D&&D.tagName.Equals('TD','TH')) B[0]=D;else{D=FCKSelection.MoveToAncestorNode('TABLE');if (D){for (var i=0;i<D.cells.length;i++){var E=FCK.EditorDocument.body.createTextRange();E.moveToElementText(D.cells[i]);if (C.inRange(E)||(C.compareEndPoints('StartToStart',E)>=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;};
+var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
+FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304||(B.status==0&&B.readyState==4)){this.DOMDocument=B.responseXML;if (!this.DOMDocument||this.DOMDocument.firstChild==null){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);},SelectSingleNode:function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}};
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
+var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
+var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
+var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C){if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);}};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=true;};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;case 'WSC':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','wsc/w.html',530,480);}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n			<tr>\n				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n				<td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n			</tr>\n		</table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';}};
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
+var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
+var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
+var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
+var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();}while (J.nodeName.IEquals('table','tbody','tr','ol','ul')) J=J.parentNode;var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i<N.childNodes.length;i++){if (FCKListsLib.BlockElements[N.childNodes[i].nodeName.toLowerCase()]) return false;};return true;};while (O.length>0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
+var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
+var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
+var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;case 'Scayt':B=FCKScayt.CreateCommand();break;case 'ScaytContext':B=FCKScayt.CreateContextCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._PopupArgs=[x,y,D,E.offsetHeight,A];this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;};
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
+var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
+var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKScayt;(function(){var A=[];var B=(FCK&&FCK.EditorWindow&&FCK.EditorWindow.parent.parent.scayt)?true:false;var C=false;var D=false;function ScaytEngineLoad(callback){if (B) return;B=true;var E=FCK.EditorWindow.parent.parent;var F=function (){window.scayt=E.scayt;InitScayt();var G=FCKToolbarItems.LoadedItems['ScaytCombobox'];G&&G.SetEnabled(scyt_control&&scyt_control.disabled);InitSetup();};if (E.scayt){F();return;};if (FCK.Config.ScaytCustomUrl) FCK.Config.ScaytCustomUrl=new String(FCK.Config.ScaytCustomUrl).replace(new RegExp("^http[s]*:\/\/"),"");var H=document.location.protocol;var I=FCK.Config.ScaytCustomUrl||'svc.spellchecker.net/spellcheck3/lf/scayt/scayt4.js';var J=H+'//'+I;var K=ParseUrl(J).path+'/';var L=E.window.CKEDITOR||(E.window.CKEDITOR={});L._djScaytConfig={I:K,addOnLoad:function(){F();},isDebug:false};if (callback) A.push(callback);DoLoadScript(J);};function DoLoadScript(url){if (!url) return false;var E=FCK.EditorWindow.parent.parent;var s=E.document.createElement('script');s.type='text/javascript';s.src=url;E.document.getElementsByTagName('head')[0].appendChild(s);return true;};function ParseUrl(data){var m=data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/);return m?{ path:m[1],file:m[2] }:data;};function createScaytControl (){var N={};var E=FCK.EditorWindow.parent.parent;N.srcNodeRef=FCK.EditingArea.IFrame;N.customerid=FCK.Config.ScaytCustomerid;N.customDictionaryName=FCK.Config.ScaytCustomDictionaryName;N.userDictionaryName=FCK.Config.ScaytUserDictionaryName;N.defLang=FCK.Config.ScaytDefLang;var P=E.scayt;var Q=window.scayt_control=new P(N);};function InitScayt(){createScaytControl();var Q=window.scayt_control;if (Q){Q.setDisabled(false);D=true;C=!Q.disabled;var G=FCKToolbarItems.LoadedItems['ScaytCombobox'];G&&G.Enable();ShowScaytState();};for (var i=0;i<A.length;i++){try{A[i].call(this);}catch(err){}}};var T=function(){name='Scayt';};T.prototype.Execute=function(c){switch (c){case 'Options':case 'Langs':case 'About':if (B&&D&&!C){ScaytMessage('SCAYT is not enabled');break;};if (B&&D) FCKDialog.OpenDialog('Scayt','SCAYT Settings','dialog/fck_scayt.html?'+c.toLowerCase(),343,343);break;default:if (!B){var U=this;ScaytEngineLoad(function (){U.SetEnabled(!window.scayt_control.disabled);});return true;}else if (D){if (C) this.Disable();else this.Enable();ShowScaytState();}};if (!B) return ScaytMessage('SCAYT is not loaded')||false;if (!D) return ScaytMessage('SCAYT is not ready')||false;return true;};T.prototype.Enable=function(){window.scayt_control.setDisabled(false);C=true;};T.prototype.Disable=function(){window.scayt_control.setDisabled(true);C=false;};T.prototype.SetEnabled=function(state){if (state) this.Enable();else this.Disable();ShowScaytState();return true;};T.prototype.GetState=function(){return 0;};function ShowScaytState(){var W=FCKToolbarItems.GetItem('SpellCheck');if (!W||!W._Combo||!W._Combo._OuterTable) return;var X=W._Combo._OuterTable.getElementsByTagName('img')[1];var Y=W._Combo.Items['trigger'];if (C){X.style.opacity='1';Y.innerHTML=GetStatusLabel();}else{X.style.opacity='0.5';Y.innerHTML=GetStatusLabel();}};function GetStatusLabel(){if (!D) return  '<b>Enable SCAYT</b>';return C?'<b>Disable SCAYT</b>':'<b>Enable SCAYT</b>';};var Z=function(tooltip,style){this.Command=FCKCommands.GetCommand('Scayt');this.CommandName='Scayt';this.Label=this.GetLabel();this.Tooltip=FCKLang.ScaytTitle;this.Style=1;};Z.prototype=new FCKToolbarSpecialCombo;Z.prototype.CreateItems=function(){this._Combo.AddItem('Trigger','<b>Enable SCAYT</b>');this._Combo.AddItem('Options',FCKLang.ScaytTitleOptions||"Options");this._Combo.AddItem('Langs',FCKLang.ScaytTitleLangs||"Languages");this._Combo.AddItem('About',FCKLang.ScaytTitleAbout||"About");};Z.prototype.GetLabel=function(){var a=FCKConfig.SkinPath+'fck_strip.gif';return FCKBrowserInfo.IsIE?'<div class="TB_Button_Image"><img src="'+a+'" style="top:-192px"></div>':'<img class="TB_Button_Image" src="'+FCK_SPACER_PATH+'" style="background-position: 0px -192px;background-image: url('+a+');">';};function ScaytMessage(m){m&&alert(m);};var b=function(){name='ScaytContext';};b.prototype.Execute=function(contextInfo){var c=contextInfo&&contextInfo.action,g=c&&contextInfo.node,Q=window.scayt_control;if (g){switch (c){case 'Suggestion':Q.replace(g,contextInfo.suggestion);break;case 'Ignore':Q.ignore(g);break;case 'Ignore All':Q.ignoreAll(g);break;case 'Add Word':var E=FCK.EditorWindow.parent.parent;E.scayt.addWordToUserDictionary(g);break;}}};function InitSetup(){FCK.ContextMenu.RegisterListener({AddItems:function(menu){var E=FCK.EditorWindow.parent.parent;var Q=window.scayt_control,P=E.scayt;if (!Q) return;var g=Q.getScaytNode();if (!g) return;var h=P.getSuggestion(Q.getWord(g),Q.getLang());if (!h||!h.length) return;menu.AddSeparator();var j=FCK.Config.ScaytMaxSuggestions||5;var k=(j==-1)?h.length:j;for (var i=0;i<k;i+=1){if (h[i]){menu.AddItem('ScaytContext',h[i],null,false,{'action':'Suggestion','node':g,'suggestion':h[i] });}};menu.AddSeparator();menu.AddItem('ScaytContext','Ignore',null,false,{ 'action':'Ignore','node':g });menu.AddItem('ScaytContext','Ignore All',null,false,{ 'action':'Ignore All','node':g });menu.AddItem('ScaytContext','Add Word',null,false,{ 'action':'Add Word','node':g });try{if (D&&C) Q.fireOnContextMenu(null,FCK.ContextMenu._InnerContextMenu);}catch(err) {}}});FCK.Events.AttachEvent('OnPaste',function(){window.scayt_control.refresh();return true;});};FCK.Events.AttachEvent('OnAfterSetHTML',function(){if (FCKConfig.SpellChecker=='SCAYT'){if (!B&&FCK.Config.ScaytAutoStartup) ScaytEngineLoad();if (FCK.EditMode==0&&B&&D) createScaytControl();ShowScaytState();}});FCK.Events.AttachEvent('OnBeforeGetData',function(){D&&window.scayt_control.reset();});FCK.Events.AttachEvent('OnAfterGetData',function(){D&&window.scayt_control.refresh();});FCKScayt={CreateCommand:function(){return new T();},CreateContextCommand:function(){return new b();},CreateToolbarItem:function(){return new Z();}};})();
+var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;case 'SpellCheck':if (FCKConfig.SpellChecker=='SCAYT') B=FCKScayt.CreateToolbarItem();else B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
+var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);};
+function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (window.onresize){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
+var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
+var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
+var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
+FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){if (!FCKBrowserInfo.IsIE) FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
+var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
+var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/js/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/ciframe.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/ciframe.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/ciframe.html	(revision 1610)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function gup( name )
+{
+	name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+	var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+	var regex = new RegExp( regexS ) ;
+	var results = regex.exec( window.location.href ) ;
+
+	if( results == null )
+		return '' ;
+	else
+		return results[ 1 ] ;
+}
+
+function sendData2Master()
+{
+	var destination = parent.parent ;
+	try
+	{
+		if ( destination.XDTMaster )
+		{
+			var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
+			window.clearInterval( interval ) ;
+		}
+	}
+	catch (e) {}
+}
+
+function onLoad()
+{
+	interval = window.setInterval( sendData2Master, 100 );
+}
+
+        </script>
+</head>
+<body onload="onLoad()">
+	<p></p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/w.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/w.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/w.html	(revision 1610)
@@ -0,0 +1,227 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html>
+<head>
+	<title></title>
+	<style>
+		#wsc_frames , #errorMessage{
+			position:absolute;
+			top:0px;
+			left:0px;
+			width:500px;
+			height:395px;
+			margin:0px;
+			padding:0px;
+			border:0px;
+			display:block;
+			overflow: hidden;
+		}
+		#wsc_frames   { z-index:10;}
+		#errorMessage {
+			color:red;
+			display:none;
+			font-size:16px;
+			font-weight:bold;
+			padding-top:160px;
+			text-align:center;
+			z-index:11;
+		}
+		#errorMessage p {
+			color:#000;
+			font-size:11px;
+			text-align:left;
+			font-weight: normal;
+			padding-left:80px;
+		}
+
+	</style>
+	<script type="text/javascript">
+
+var oEditor = window.parent.InnerDialogLoaded() ;
+var FCKConfig = oEditor.FCKConfig;
+
+function doLoadScript(url)
+{
+	if (!url)
+		return false ;
+
+	var s = document.createElement('script') ;
+	s.type = 'text/javascript' ;
+	s.src = url ;
+
+	document.getElementsByTagName('head')[0].appendChild(s) ;
+
+	return true ;
+}
+
+function Ok()
+{
+	return window.parent.Cancel() ;
+}
+
+function _callOnCancel( dT )
+{
+	window.parent.Cancel() ;
+}
+
+function _callOnFinish( dT )
+{
+	oEditor.FCK.SetData( dT.value ) ;
+	window.parent.CloseDialog( true ) ;
+}
+
+function _cancelOnError(m)
+{
+	var _conId = 'errorMessage' ;
+	var message = m || 'Sorry, but service is unavailable now.' ;
+
+	if ( typeof( WSC_Error ) == 'undefined' )
+	{
+		var _con = document.createElement( 'div' ) ;
+		_con.setAttribute( 'id', _conId ) ;
+		document.body.appendChild( _con ) ;
+		dom_con = document.getElementById( _conId ) ;
+		dom_con.innerHTML = message ;
+		dom_con.style.display = 'block' ;
+	}
+	//return Ok() ;
+}
+
+function URL_abs2full( uri )
+{
+	return uri.match( 'http' )
+		? uri
+		: document.location.protocol + '//' + document.location.host + uri ;
+}
+
+function clearErrorUsermessage()
+{
+	// empty error container
+	var _con = document.getElementById( 'errorMessage' ) ;
+
+	if ( !_con )
+		return ;
+
+	_con.innerHTML = '' ;
+	_con.style.display = 'none' ;
+}
+
+var gInterval ;
+
+function onLoad()
+{
+	clearErrorUsermessage() ;
+	var _errorMessage = 'The SpellChecker Service is currently unavailable.' ;
+	if ( 'undefined' != typeof( oEditor.FCK.Config.WSChLoaderScript ) )
+	    _errorMessage = '<div>The SpellChecker Service is currently unavailable.</div><p>Error loading application<br>service host: ' + oEditor.FCK.Config.WSChLoaderScript + '</p>';
+
+	var burnSpelling = function( oName, _eMessage )
+	{
+		var i = 0 ;
+
+		return function ()
+		{
+			if ( typeof( window[oName] ) == 'function' )
+				initAndSpell() ;
+			else if ( i++ == 180 )
+				_cancelOnError( _eMessage ) ;
+		}
+	}
+
+	gInterval = window.setInterval( burnSpelling( 'doSpell', _errorMessage ), 250 ) ;
+
+	// WSC CORE init section
+	var protocol = document.location.protocol || 'http:' ;
+	var baseUrl = protocol + '//loader.spellchecker.net/sproxy_fck/sproxy.php' ;
+	var plugin = "fck2" ;
+	var customerid = oEditor.FCK.Config.WSCnCustomerId
+		|| "1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk" ;
+	var wscCoreUrl = oEditor.FCK.Config.WSChLoaderScript
+		|| ( baseUrl + '?'
+			+ 'plugin='    + plugin + '&'
+			+ 'customerid='+ customerid + '&'
+			+ 'cmd=script&doc=wsc&schema=22' ) ;
+
+	// load WSC core
+	doLoadScript( wscCoreUrl ) ;
+}
+
+function initAndSpell()
+{
+	//xall from window.setInteval expected at once
+	if ( typeof( gInterval ) == 'undefined' )
+		return null ;
+	window.clearInterval( gInterval ) ;
+
+	// global var is used in FCK specific core
+	// change on equal var used in fckplugin.js
+	gFCKPluginName = 'wsc' ;
+
+	// get the data to be checked
+	var sData = oEditor.FCK.GetData() ;
+
+	// prepare content
+	var ctrlId =  'myEditor' ;
+	var dCurT = document.getElementById( ctrlId ) ;
+	dCurT.value = sData ;
+
+	// service paths corecting/preparing
+	var sPath2Scin = URL_abs2full( oEditor.FCK.Config.SkinDialogCSS ) ;
+	var sPathCiframe = FCKConfig.BasePath + 'wsc/ciframe.html' ;
+	var sPathFrameset = FCKConfig.BasePath + 'wsc/tmpFrameset.html' ;
+
+	// language abbr standarts comparer
+	var LangComparer = new _SP_FCK_LangCompare() ;
+	LangComparer.setDefaulLangCode( oEditor.FCK.Language.DefaultLanguage ) ;
+
+	// clear user message console (if application was loaded more then after 2 seconds)
+	clearErrorUsermessage() ;
+
+	doSpell( {
+		ctrl : ctrlId,
+		lang : LangComparer.getSPLangCode( oEditor.FCK.Language.GetActiveLanguage() ),
+		winType : 'wsc_frames',// if not defined app will run on winpopup
+
+		// callback binding section
+		onCancel :window._callOnCancel,
+		onFinish :window._callOnFinish,
+
+		// @TODO: basePath assingning
+
+		// some manipulations with client static pages
+		framesetPath : sPathFrameset,
+		iframePath : sPathCiframe,
+
+		// styles defining
+		schemaURI : sPath2Scin
+	} ) ;
+
+	return true ;
+}
+
+	</script>
+</head>
+<body onload="onLoad()" style="padding: 0px; overflow: hidden;">
+	<textarea style="display: none;" id="myEditor" rows="10" cols="40"></textarea>
+	<iframe src="" name="wsc_frames" id="wsc_frames"></iframe>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/tmpFrameset.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/tmpFrameset.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/tmpFrameset.html	(revision 1610)
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html>
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<script type="text/javascript">
+
+function doLoadScript( url )
+{
+	if ( !url )
+		return false ;
+
+	var s = document.createElement( "script" ) ;
+	s.type = "text/javascript" ;
+	s.src = url ;
+	document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
+
+	return true ;
+}
+
+function tryLoad ()
+{
+    if ( typeof( opener ) == 'undefined' || !opener )
+        opener = parent ;
+
+    // get access to global parameters
+    oParams = opener.oldFramesetPageParams ;
+
+    // make frameset rows string prepare
+    sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
+    document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
+
+    // dynamic including init frames and crossdomain transport code
+    // from config sproxy_js_frameset url
+    var addScriptUrl = oParams.sproxy_js_frameset ;
+    doLoadScript( addScriptUrl ) ;
+}
+
+	</script>
+</head>
+<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
+    <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
+    <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
+</frameset>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/wsc/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 4 2010-11-22 23:55:43Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdebug.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdebug.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckdebug.html	(revision 1610)
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the Debug window.
+ * It automatically popups if the Debug = true in the configuration file.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor Debug Window</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+
+var oWindow ;
+var oDiv ;
+
+if ( !window.FCKMessages )
+	window.FCKMessages = new Array() ;
+
+window.onload = function()
+{
+	oWindow = document.getElementById('xOutput').contentWindow ;
+	oWindow.document.open() ;
+	oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
+	oWindow.document.close() ;
+	oDiv	= oWindow.document.getElementById('divMsg') ;
+}
+
+function Output( message, color, noParse )
+{
+	if ( !noParse && message != null && isNaN( message ) )
+		message = message.replace(/</g, "&lt;") ;
+
+	if ( color )
+		message = '<font color="' + color + '">' + message + '<\/font>' ;
+
+	window.FCKMessages[ window.FCKMessages.length ] = message ;
+	StartTimer() ;
+}
+
+function OutputObject( anyObject, color )
+{
+	var message ;
+
+	if ( anyObject != null )
+	{
+		message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
+
+		for (var prop in anyObject)
+		{
+			try
+			{
+				var sVal = anyObject[ prop ] != null ? anyObject[ prop ] + '' : '[null]' ;
+				message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
+			}
+			catch (e)
+			{
+				try
+				{
+					message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
+				}
+				catch (e)
+				{
+					message += '<b>' + prop + '</b> : [-error-]<br>' ;
+				}
+			}
+		}
+
+		message += '</blockquote><b>' ;
+	} else
+		message = 'OutputObject : Object is "null".' ;
+
+	Output( message, color, true ) ;
+}
+
+function StartTimer()
+{
+	window.setTimeout( 'CheckMessages()', 100 ) ;
+}
+
+function CheckMessages()
+{
+	if ( window.FCKMessages.length > 0 )
+	{
+		// Get the first item in the queue
+		var sMessage = window.FCKMessages[0] ;
+
+		// Removes the first item from the queue
+		var oTempArray = new Array() ;
+		for ( i = 1 ; i < window.FCKMessages.length ; i++ )
+			oTempArray[ i - 1 ] = window.FCKMessages[ i ] ;
+		window.FCKMessages = oTempArray ;
+
+		var d = new Date() ;
+		var sTime =
+			( d.getHours() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getMinutes() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getSeconds() + 100 + '' ).substr( 1,2 ) + ':' +
+			( d.getMilliseconds() + 1000 + '' ).substr( 1,3 ) ;
+
+		var oMsgDiv = oWindow.document.createElement( 'div' ) ;
+		oMsgDiv.innerHTML = sTime + ': <b>' + sMessage + '<\/b>' ;
+		oDiv.appendChild( oMsgDiv ) ;
+		oMsgDiv.scrollIntoView() ;
+	}
+}
+
+function Clear()
+{
+	oDiv.innerHTML = '' ;
+}
+	</script>
+</head>
+<body style="margin: 10px">
+	<table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
+		<tr>
+			<td>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td style="font-weight: bold; font-size: 1.2em;">
+							FCKeditor Debug Window</td>
+						<td align="right">
+							<input type="button" value="Clear" onclick="Clear();" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td style="border: #696969 1px solid">
+				<iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="javascript:void(0)"
+					frameborder="0"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/fckeditor.html	(revision 1610)
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Main page that holds the editor.
+-->
+<html>
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow">
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+	<meta http-equiv="Cache-Control" content="public">
+	<script type="text/javascript">
+
+// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
+// without security.fileuri.strict_origin_policy disabled.
+if ( document.location.protocol == 'file:' )
+{
+	try
+	{
+		window.parent.document.domain ;
+	}
+	catch ( e )
+	{
+		window.addEventListener( 'load', function()
+			{
+				document.body.innerHTML = '\
+					<div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
+						<p>\
+							<b>Your browser security settings don\'t allow FCKeditor to be opened from\
+							the local filesystem.<\/b>\
+						<\/p>\
+						<p>\
+							Please open the <b>about:config<\/b> page and disable the\
+							&quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
+						<\/p>\
+						<p>\
+							Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
+							for more information.\
+						<\/p>\
+					<\/div>' ;
+			}, false ) ;
+	}
+}
+
+// Save a reference to the default domain.
+var FCK_ORIGINAL_DOMAIN ;
+
+// Automatically detect the correct document.domain (#123).
+(function()
+{
+	var d = FCK_ORIGINAL_DOMAIN = document.domain ;
+
+	while ( true )
+	{
+		// Test if we can access a parent property.
+		try
+		{
+			var test = window.parent.document.domain ;
+			break ;
+		}
+		catch( e ) {}
+
+		// Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
+		d = d.replace( /.*?(?:\.|$)/, '' ) ;
+
+		if ( d.length == 0 )
+			break ;		// It was not able to detect the domain.
+
+		try
+		{
+			document.domain = d ;
+		}
+		catch (e)
+		{
+			break ;
+		}
+	}
+})() ;
+
+// Save a reference to the detected runtime domain.
+var FCK_RUNTIME_DOMAIN = document.domain ;
+
+var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
+
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Adobe AIR compatibility file.
+if ( FCKBrowserInfo.IsAIR )
+	LoadScript( 'js/fckadobeair.js' ) ;
+
+if ( FCKBrowserInfo.IsIE )
+{
+	// Remove IE mouse flickering.
+	try
+	{
+		document.execCommand( 'BackgroundImageCache', false, true ) ;
+	}
+	catch (e)
+	{
+		// We have been reported about loading problems caused by the above
+		// line. For safety, let's just ignore errors.
+	}
+
+	// Create the default cleanup object used by the editor.
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The first function to be called on selection change must the the styles
+// change checker, because the result of its processing may be used by another
+// functions listening to the same event.
+FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the full debug script.
+if ( FCKConfig.Debug )
+	LoadScript( '_source/internals/fckdebug.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
+var FCK_InternalCSS			= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
+var FCK_ShowTableBordersCSS	= FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
+
+// Popup the debug window if debug mode is set to true. It guarantees that the
+// first debug message will not be lost.
+if ( FCKConfig.Debug )
+	FCKDebug._GetWindow() ;
+
+// Load the active skin CSS.
+document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		if ( !FCKConfig.PreventSubmitHandler )
+			_AttachFormSubmitToAPI() ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;
+	}
+}
+
+// Gecko and Webkit browsers don't calculate well the IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko || ( FCKBrowserInfo.IsSafari && !FCKBrowserInfo.IsSafari3 ) )
+{
+	window.onresize = function( e )
+	{
+		// Running in Firefox's chrome makes the window receive the event including subframes.
+		// we care only about this window. Ticket #1642.
+		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
+		if ( e && e.originalTarget && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement = oCell.firstChild ;
+		if ( eInnerElement )
+		{
+			eInnerElement.style.height = '0px' ;
+			eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
+		}
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table summary="" width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table summary="" width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr>
+			<td id="xEditingArea" valign="top" style="height: 100%"></td>
+		</tr>
+	</table>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/omg_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/omg_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/lightbulb.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/lightbulb.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/envelope.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/envelope.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/angel_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/angel_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/cry_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/cry_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/thumbs_down.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/thumbs_down.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/tounge_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/tounge_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/regular_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/regular_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/devil_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/devil_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/confused_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/confused_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/shades_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/shades_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/sad_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/sad_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/wink_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/wink_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/teeth_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/teeth_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/heart.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/heart.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/embaressed_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/embaressed_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/cake.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/cake.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/broken_heart.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/broken_heart.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/thumbs_up.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/thumbs_up.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/kiss.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/kiss.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/angry_smile.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/smiley/msn/angry_smile.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/arrow_ltr.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/arrow_ltr.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/arrow_rtl.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/arrow_rtl.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/spacer.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/spacer.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/anchor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/images/anchor.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/editor/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the integration file for PHP (All versions).
+ *
+ * It loads the correct integration file based on the PHP version (avoiding
+ * strict error messages with PHP 5).
+ */
+
+if ( !function_exists('version_compare') || version_compare( phpversion(), '5', '<' ) )
+	include_once( 'fckeditor_php4.php' ) ;
+else
+	include_once( 'fckeditor_php5.php' ) ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckpackager.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckpackager.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckpackager.xml	(revision 1610)
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the configuration file to be used with FCKpackager to generate the
+ * compressed code files in the "js" folder.
+ *
+ * Please check http://www.fckeditor.net for more info.
+-->
+<Package>
+	<Header><![CDATA[/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This file has been compressed for better performance. The original source
+ * can be found at "editor/_source".
+ */
+]]></Header>
+	<Constants removeDeclaration="false">
+		<Constant name="FCK_STATUS_NOTLOADED" value="0" />
+		<Constant name="FCK_STATUS_ACTIVE" value="1" />
+		<Constant name="FCK_STATUS_COMPLETE" value="2" />
+		<Constant name="FCK_TRISTATE_OFF" value="0" />
+		<Constant name="FCK_TRISTATE_ON" value="1" />
+		<Constant name="FCK_TRISTATE_DISABLED" value="-1" />
+		<Constant name="FCK_UNKNOWN" value="-9" />
+		<Constant name="FCK_TOOLBARITEM_ONLYICON" value="0" />
+		<Constant name="FCK_TOOLBARITEM_ONLYTEXT" value="1" />
+		<Constant name="FCK_TOOLBARITEM_ICONTEXT" value="2" />
+		<Constant name="FCK_EDITMODE_WYSIWYG" value="0" />
+		<Constant name="FCK_EDITMODE_SOURCE" value="1" />
+		<Constant name="FCK_STYLE_BLOCK" value="0" />
+		<Constant name="FCK_STYLE_INLINE" value="1" />
+		<Constant name="FCK_STYLE_OBJECT" value="2" />
+	</Constants>
+	<PackageFile path="editor/js/fckeditorcode_ie.js">
+		<File path="editor/_source/fckconstants.js" />
+		<File path="editor/_source/fckjscoreextensions.js" />
+		<File path="editor/_source/classes/fckiecleanup.js" />
+		<File path="editor/_source/internals/fckbrowserinfo.js" />
+		<File path="editor/_source/internals/fckurlparams.js" />
+		<File path="editor/_source/classes/fckevents.js" />
+		<File path="editor/_source/classes/fckdataprocessor.js" />
+		<File path="editor/_source/internals/fck.js" />
+		<File path="editor/_source/internals/fck_ie.js" />
+		<File path="editor/_source/internals/fckconfig.js" />
+		<File path="editor/_source/internals/fckdebug_empty.js" />
+		<File path="editor/_source/internals/fckdomtools.js" />
+		<File path="editor/_source/internals/fcktools.js" />
+		<File path="editor/_source/internals/fcktools_ie.js" />
+		<File path="editor/_source/fckeditorapi.js" />
+		<File path="editor/_source/classes/fckimagepreloader.js" />
+
+		<File path="editor/_source/internals/fckregexlib.js" />
+		<File path="editor/_source/internals/fcklistslib.js" />
+		<File path="editor/_source/internals/fcklanguagemanager.js" />
+		<File path="editor/_source/internals/fckxhtmlentities.js" />
+		<File path="editor/_source/internals/fckxhtml.js" />
+		<File path="editor/_source/internals/fckxhtml_ie.js" />
+		<File path="editor/_source/internals/fckcodeformatter.js" />
+		<File path="editor/_source/internals/fckundo.js" />
+		<File path="editor/_source/classes/fckeditingarea.js" />
+		<File path="editor/_source/classes/fckkeystrokehandler.js" />
+
+		<File path="editor/dtd/fck_xhtml10transitional.js" />
+		<File path="editor/_source/classes/fckstyle.js" />
+		<File path="editor/_source/internals/fckstyles.js" />
+
+		<File path="editor/_source/internals/fcklisthandler.js" />
+		<File path="editor/_source/classes/fckelementpath.js" />
+		<File path="editor/_source/classes/fckdomrange.js" />
+		<File path="editor/_source/classes/fckdomrange_ie.js" />
+		<File path="editor/_source/classes/fckdomrangeiterator.js" />
+		<File path="editor/_source/classes/fckdocumentfragment_ie.js" />
+		<File path="editor/_source/classes/fckw3crange.js" />
+		<File path="editor/_source/classes/fckenterkey.js" />
+
+		<File path="editor/_source/internals/fckdocumentprocessor.js" />
+		<File path="editor/_source/internals/fckselection.js" />
+		<File path="editor/_source/internals/fckselection_ie.js" />
+
+		<File path="editor/_source/internals/fcktablehandler.js" />
+		<File path="editor/_source/internals/fcktablehandler_ie.js" />
+		<File path="editor/_source/classes/fckxml.js" />
+		<File path="editor/_source/classes/fckxml_ie.js" />
+
+		<File path="editor/_source/commandclasses/fcknamedcommand.js" />
+		<File path="editor/_source/commandclasses/fckstylecommand.js" />
+		<File path="editor/_source/commandclasses/fck_othercommands.js" />
+		<File path="editor/_source/commandclasses/fckshowblocks.js" />
+		<File path="editor/_source/commandclasses/fckspellcheckcommand_ie.js" />
+		<File path="editor/_source/commandclasses/fcktextcolorcommand.js" />
+		<File path="editor/_source/commandclasses/fckpasteplaintextcommand.js" />
+		<File path="editor/_source/commandclasses/fckpastewordcommand.js" />
+		<File path="editor/_source/commandclasses/fcktablecommand.js" />
+		<File path="editor/_source/commandclasses/fckfitwindow.js" />
+		<File path="editor/_source/commandclasses/fcklistcommands.js" />
+		<File path="editor/_source/commandclasses/fckjustifycommands.js" />
+		<File path="editor/_source/commandclasses/fckindentcommands.js" />
+		<File path="editor/_source/commandclasses/fckblockquotecommand.js" />
+		<File path="editor/_source/commandclasses/fckcorestylecommand.js" />
+		<File path="editor/_source/commandclasses/fckremoveformatcommand.js" />
+		<File path="editor/_source/internals/fckcommands.js" />
+
+		<File path="editor/_source/classes/fckpanel.js" />
+		<File path="editor/_source/classes/fckicon.js" />
+		<File path="editor/_source/classes/fcktoolbarbuttonui.js" />
+		<File path="editor/_source/classes/fcktoolbarbutton.js" />
+		<File path="editor/_source/classes/fckspecialcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarspecialcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarstylecombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontformatcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontscombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontsizecombo.js" />
+		<File path="editor/_source/classes/fcktoolbarpanelbutton.js" />
+		<File path="editor/_source/internals/fckscayt.js" />
+		<File path="editor/_source/internals/fcktoolbaritems.js" />
+		<File path="editor/_source/classes/fcktoolbar.js" />
+		<File path="editor/_source/classes/fcktoolbarbreak_ie.js" />
+		<File path="editor/_source/internals/fcktoolbarset.js" />
+		<File path="editor/_source/internals/fckdialog.js" />
+
+		<File path="editor/_source/classes/fckmenuitem.js" />
+		<File path="editor/_source/classes/fckmenublock.js" />
+		<File path="editor/_source/classes/fckmenublockpanel.js" />
+		<File path="editor/_source/classes/fckcontextmenu.js" />
+		<File path="editor/_source/internals/fck_contextmenu.js" />
+		<File path="editor/_source/classes/fckhtmliterator.js" />
+
+		<File path="editor/_source/classes/fckplugin.js" />
+		<File path="editor/_source/internals/fckplugins.js" />
+	</PackageFile>
+
+	<PackageFile path="editor/js/fckeditorcode_gecko.js">
+		<File path="editor/_source/fckconstants.js" />
+		<File path="editor/_source/fckjscoreextensions.js" />
+		<File path="editor/_source/internals/fckbrowserinfo.js" />
+		<File path="editor/_source/internals/fckurlparams.js" />
+		<File path="editor/_source/classes/fckevents.js" />
+		<File path="editor/_source/classes/fckdataprocessor.js" />
+		<File path="editor/_source/internals/fck.js" />
+		<File path="editor/_source/internals/fck_gecko.js" />
+		<File path="editor/_source/internals/fckconfig.js" />
+		<File path="editor/_source/internals/fckdebug_empty.js" />
+		<File path="editor/_source/internals/fckdomtools.js" />
+		<File path="editor/_source/internals/fcktools.js" />
+		<File path="editor/_source/internals/fcktools_gecko.js" />
+		<File path="editor/_source/fckeditorapi.js" />
+		<File path="editor/_source/classes/fckimagepreloader.js" />
+
+		<File path="editor/_source/internals/fckregexlib.js" />
+		<File path="editor/_source/internals/fcklistslib.js" />
+		<File path="editor/_source/internals/fcklanguagemanager.js" />
+		<File path="editor/_source/internals/fckxhtmlentities.js" />
+		<File path="editor/_source/internals/fckxhtml.js" />
+		<File path="editor/_source/internals/fckxhtml_gecko.js" />
+		<File path="editor/_source/internals/fckcodeformatter.js" />
+		<File path="editor/_source/internals/fckundo.js" />
+		<File path="editor/_source/classes/fckeditingarea.js" />
+		<File path="editor/_source/classes/fckkeystrokehandler.js" />
+
+		<File path="editor/dtd/fck_xhtml10transitional.js" />
+		<File path="editor/_source/classes/fckstyle.js" />
+		<File path="editor/_source/internals/fckstyles.js" />
+
+		<File path="editor/_source/internals/fcklisthandler.js" />
+		<File path="editor/_source/classes/fckelementpath.js" />
+		<File path="editor/_source/classes/fckdomrange.js" />
+		<File path="editor/_source/classes/fckdomrange_gecko.js" />
+		<File path="editor/_source/classes/fckdomrangeiterator.js" />
+		<File path="editor/_source/classes/fckdocumentfragment_gecko.js" />
+		<File path="editor/_source/classes/fckw3crange.js" />
+		<File path="editor/_source/classes/fckenterkey.js" />
+
+		<File path="editor/_source/internals/fckdocumentprocessor.js" />
+		<File path="editor/_source/internals/fckselection.js" />
+		<File path="editor/_source/internals/fckselection_gecko.js" />
+
+		<File path="editor/_source/internals/fcktablehandler.js" />
+		<File path="editor/_source/internals/fcktablehandler_gecko.js" />
+		<File path="editor/_source/classes/fckxml.js" />
+		<File path="editor/_source/classes/fckxml_gecko.js" />
+
+		<File path="editor/_source/commandclasses/fcknamedcommand.js" />
+		<File path="editor/_source/commandclasses/fckstylecommand.js" />
+		<File path="editor/_source/commandclasses/fck_othercommands.js" />
+		<File path="editor/_source/commandclasses/fckshowblocks.js" />
+		<File path="editor/_source/commandclasses/fckspellcheckcommand_gecko.js" />
+		<File path="editor/_source/commandclasses/fcktextcolorcommand.js" />
+		<File path="editor/_source/commandclasses/fckpasteplaintextcommand.js" />
+		<File path="editor/_source/commandclasses/fckpastewordcommand.js" />
+		<File path="editor/_source/commandclasses/fcktablecommand.js" />
+		<File path="editor/_source/commandclasses/fckfitwindow.js" />
+		<File path="editor/_source/commandclasses/fcklistcommands.js" />
+		<File path="editor/_source/commandclasses/fckjustifycommands.js" />
+		<File path="editor/_source/commandclasses/fckindentcommands.js" />
+		<File path="editor/_source/commandclasses/fckblockquotecommand.js" />
+		<File path="editor/_source/commandclasses/fckcorestylecommand.js" />
+		<File path="editor/_source/commandclasses/fckremoveformatcommand.js" />
+		<File path="editor/_source/internals/fckcommands.js" />
+
+		<File path="editor/_source/classes/fckpanel.js" />
+		<File path="editor/_source/classes/fckicon.js" />
+		<File path="editor/_source/classes/fcktoolbarbuttonui.js" />
+		<File path="editor/_source/classes/fcktoolbarbutton.js" />
+		<File path="editor/_source/classes/fckspecialcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarspecialcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarstylecombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontformatcombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontscombo.js" />
+		<File path="editor/_source/classes/fcktoolbarfontsizecombo.js" />
+		<File path="editor/_source/classes/fcktoolbarpanelbutton.js" />
+		<File path="editor/_source/internals/fckscayt.js" />
+		<File path="editor/_source/internals/fcktoolbaritems.js" />
+		<File path="editor/_source/classes/fcktoolbar.js" />
+		<File path="editor/_source/classes/fcktoolbarbreak_gecko.js" />
+		<File path="editor/_source/internals/fcktoolbarset.js" />
+		<File path="editor/_source/internals/fckdialog.js" />
+
+		<File path="editor/_source/classes/fckmenuitem.js" />
+		<File path="editor/_source/classes/fckmenublock.js" />
+		<File path="editor/_source/classes/fckmenublockpanel.js" />
+		<File path="editor/_source/classes/fckcontextmenu.js" />
+		<File path="editor/_source/internals/fck_contextmenu.js" />
+		<File path="editor/_source/classes/fckhtmliterator.js" />
+
+		<File path="editor/_source/classes/fckplugin.js" />
+		<File path="editor/_source/internals/fckplugins.js" />
+	</PackageFile>
+
+</Package>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/license.txt
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/license.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/license.txt	(revision 1610)
@@ -0,0 +1,1246 @@
+FCKeditor - The text editor for Internet - http://www.fckeditor.net
+Copyright (C) 2003-2010 Frederico Caldeira Knabben
+
+Licensed under the terms of any of the following licenses at your
+choice:
+
+ - GNU General Public License Version 2 or later (the "GPL")
+   http://www.gnu.org/licenses/gpl.html
+   (See Appendix A)
+
+ - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+   http://www.gnu.org/licenses/lgpl.html
+   (See Appendix B)
+
+ - Mozilla Public License Version 1.1 or later (the "MPL")
+   http://www.mozilla.org/MPL/MPL-1.1.html
+   (See Appendix C)
+
+You are not required to, but if you want to explicitly declare the
+license you have chosen to be bound to when using, reproducing,
+modifying and distributing this software, just include a text file
+titled "legal.txt" in your version of this software, indicating your
+license choice. In any case, your choice will not restrict any
+recipient of your version of this software to use, reproduce, modify
+and distribute this software under any of the above licenses.
+
+Appendix A: The GPL License
+===========================
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix B: The LGPL License
+============================
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+Appendix C: The MPL License
+===========================
+
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fcktemplates.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fcktemplates.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fcktemplates.xml	(revision 1610)
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the sample templates definitions file. It makes the "templates"
+ * command completely customizable.
+ *
+ * See FCKConfig.TemplatesXmlPath in the configuration file.
+-->
+<Templates imagesBasePath="fck_template/images/">
+	<Template title="Image and Title" image="template1.gif">
+		<Description>One main image with a title and text that surround the image.</Description>
+		<Html>
+			<![CDATA[
+				<img style="MARGIN-RIGHT: 10px" height="100" alt="" width="100" align="left"/>
+				<h3>Type the title here</h3>
+				Type the text here
+			]]>
+		</Html>
+	</Template>
+	<Template title="Strange Template" image="template2.gif">
+		<Description>A template that defines two colums, each one with a title, and some text.</Description>
+		<Html>
+			<![CDATA[
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tbody>
+						<tr>
+							<td width="50%">
+							<h3>Title 1</h3>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
+							<td width="50%">
+							<h3>Title 2</h3>
+							</td>
+						</tr>
+						<tr>
+							<td>Text 1</td>
+							<td>&nbsp;</td>
+							<td>Text 2</td>
+						</tr>
+					</tbody>
+				</table>
+				More text goes here.
+			]]>
+		</Html>
+	</Template>
+	<Template title="Text and Table" image="template3.gif">
+		<Description>A title with some text and a table.</Description>
+		<Html>
+			<![CDATA[
+				<table align="left" width="80%" border="0" cellspacing="0" cellpadding="0"><tr><td>
+					<h3>Title goes here</h3>
+					<p>
+					<table style="FLOAT: right" cellspacing="0" cellpadding="0" width="150" border="1">
+						<tbody>
+							<tr>
+								<td align="center" colspan="3"><strong>Table title</strong></td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+						</tbody>
+					</table>
+					Type the text here</p>
+				</td></tr></table>
+			]]>
+		</Html>
+	</Template>
+</Templates>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckconfig.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckconfig.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckconfig.js	(revision 1610)
@@ -0,0 +1,330 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Editor configuration settings.
+ *
+ * Follow this link for more information:
+ * http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options
+ */
+
+FCKConfig.CustomConfigurationsPath = '' ;
+
+FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
+FCKConfig.EditorAreaStyles = '' ;
+FCKConfig.ToolbarComboPreviewCSS = '' ;
+
+FCKConfig.DocType = '' ;
+
+FCKConfig.BaseHref = '' ;
+
+FCKConfig.FullPage = false ;
+
+// The following option determines whether the "Show Blocks" feature is enabled or not at startup.
+FCKConfig.StartupShowBlocks = false ;
+
+FCKConfig.Debug = false ;
+FCKConfig.AllowQueryStringDebug = true ;
+
+FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;
+FCKConfig.SkinEditorCSS = '' ;	// FCKConfig.SkinPath + "|<minified css>" ;
+FCKConfig.SkinDialogCSS = '' ;	// FCKConfig.SkinPath + "|<minified css>" ;
+
+FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ;
+
+FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
+
+// FCKConfig.Plugins.Add( 'autogrow' ) ;
+FCKConfig.Plugins.Add( 'dragresizetable' );
+FCKConfig.AutoGrowMax = 400 ;
+
+// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;	// ASP style server side code <%...%>
+// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;	// PHP style server side code
+// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
+
+FCKConfig.AutoDetectLanguage	= true ;
+FCKConfig.DefaultLanguage		= 'en' ;
+FCKConfig.ContentLangDirection	= 'ltr' ;
+
+FCKConfig.ProcessHTMLEntities	= true ;
+FCKConfig.IncludeLatinEntities	= true ;
+FCKConfig.IncludeGreekEntities	= true ;
+
+FCKConfig.ProcessNumericEntities = false ;
+
+FCKConfig.AdditionalNumericEntities = ''  ;		// Single Quote: "'"
+
+FCKConfig.FillEmptyBlocks	= true ;
+
+FCKConfig.FormatSource		= true ;
+FCKConfig.FormatOutput		= true ;
+FCKConfig.FormatIndentator	= '    ' ;
+
+FCKConfig.EMailProtection = 'none' ; // none | encode | function
+FCKConfig.EMailProtectionFunction = 'mt(NAME,DOMAIN,SUBJECT,BODY)' ;
+
+FCKConfig.StartupFocus	= false ;
+FCKConfig.ForcePasteAsPlainText	= false ;
+FCKConfig.AutoDetectPasteFromWord = true ;	// IE only.
+FCKConfig.ShowDropDialog = true ;
+FCKConfig.ForceSimpleAmpersand	= false ;
+FCKConfig.TabSpaces		= 0 ;
+FCKConfig.ShowBorders	= true ;
+FCKConfig.SourcePopup	= false ;
+FCKConfig.ToolbarStartExpanded	= true ;
+FCKConfig.ToolbarCanCollapse	= true ;
+FCKConfig.IgnoreEmptyParagraphValue = true ;
+FCKConfig.FloatingPanelsZIndex = 10000 ;
+FCKConfig.HtmlEncodeOutput = false ;
+
+FCKConfig.TemplateReplaceAll = true ;
+FCKConfig.TemplateReplaceCheckbox = true ;
+
+FCKConfig.ToolbarLocation = 'In' ;
+
+FCKConfig.ToolbarSets["Default"] = [
+	['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+	'/',
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
+	'/',
+	['Style','FontFormat','FontName','FontSize'],
+	['TextColor','BGColor'],
+	['FitWindow','ShowBlocks','-','About']		// No comma for the last row.
+] ;
+
+FCKConfig.ToolbarSets["Basic"] = [
+	['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
+] ;
+
+FCKConfig.EnterMode = 'p' ;			// p | div | br
+FCKConfig.ShiftEnterMode = 'br' ;	// p | div | br
+
+FCKConfig.Keystrokes = [
+	[ CTRL + 65 /*A*/, true ],
+	[ CTRL + 67 /*C*/, true ],
+	[ CTRL + 70 /*F*/, true ],
+	[ CTRL + 83 /*S*/, true ],
+	[ CTRL + 84 /*T*/, true ],
+	[ CTRL + 88 /*X*/, true ],
+	[ CTRL + 86 /*V*/, 'Paste' ],
+	[ CTRL + 45 /*INS*/, true ],
+	[ SHIFT + 45 /*INS*/, 'Paste' ],
+	[ CTRL + 88 /*X*/, 'Cut' ],
+	[ SHIFT + 46 /*DEL*/, 'Cut' ],
+	[ CTRL + 90 /*Z*/, 'Undo' ],
+	[ CTRL + 89 /*Y*/, 'Redo' ],
+	[ CTRL + SHIFT + 90 /*Z*/, 'Redo' ],
+	[ CTRL + 76 /*L*/, 'Link' ],
+	[ CTRL + 66 /*B*/, 'Bold' ],
+	[ CTRL + 73 /*I*/, 'Italic' ],
+	[ CTRL + 85 /*U*/, 'Underline' ],
+	[ CTRL + SHIFT + 83 /*S*/, 'Save' ],
+	[ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ],
+	[ SHIFT + 32 /*SPACE*/, 'Nbsp' ]
+] ;
+
+FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form','DivContainer'] ;
+FCKConfig.BrowserContextMenuOnCtrl = false ;
+FCKConfig.BrowserContextMenu = false ;
+
+FCKConfig.EnableMoreFontColors = true ;
+FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF' ;
+
+FCKConfig.FontFormats	= 'p;h1;h2;h3;h4;h5;h6;pre;address;div' ;
+FCKConfig.FontNames		= 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
+FCKConfig.FontSizes		= 'smaller;larger;xx-small;x-small;small;medium;large;x-large;xx-large' ;
+
+FCKConfig.StylesXmlPath		= FCKConfig.EditorPath + 'fckstyles.xml' ;
+FCKConfig.TemplatesXmlPath	= FCKConfig.EditorPath + 'fcktemplates.xml' ;
+
+FCKConfig.SpellChecker			= 'WSC' ;	// 'WSC' | 'SCAYT' | 'SpellerPages' | 'ieSpell'
+FCKConfig.IeSpellDownloadUrl	= 'http://www.iespell.com/download.php' ;
+FCKConfig.SpellerPagesServerScript = 'server-scripts/spellchecker.php' ;	// Available extension: .php .cfm .pl
+FCKConfig.FirefoxSpellChecker	= false ;
+
+FCKConfig.MaxUndoLevels = 15 ;
+
+FCKConfig.DisableObjectResizing = false ;
+FCKConfig.DisableFFTableHandles = true ;
+
+FCKConfig.LinkDlgHideTarget		= false ;
+FCKConfig.LinkDlgHideAdvanced	= false ;
+
+FCKConfig.ImageDlgHideLink		= false ;
+FCKConfig.ImageDlgHideAdvanced	= false ;
+
+FCKConfig.FlashDlgHideAdvanced	= false ;
+
+FCKConfig.ProtectedTags = '' ;
+
+// This will be applied to the body element of the editor
+FCKConfig.BodyId = '' ;
+FCKConfig.BodyClass = '' ;
+
+FCKConfig.DefaultStyleLabel = '' ;
+FCKConfig.DefaultFontFormatLabel = '' ;
+FCKConfig.DefaultFontLabel = '' ;
+FCKConfig.DefaultFontSizeLabel = '' ;
+
+FCKConfig.DefaultLinkTarget = '' ;
+
+// The option switches between trying to keep the html structure or do the changes so the content looks like it was in Word
+FCKConfig.CleanWordKeepsStructure = false ;
+
+// Only inline elements are valid.
+FCKConfig.RemoveFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' ;
+
+// Attributes that will be removed
+FCKConfig.RemoveAttributes = 'class,style,lang,width,height,align,hspace,valign' ;
+
+//FCKConfig.CustomStyles =
+//{
+//	'Red Title'	: { Element : 'h3', Styles : { 'color' : 'Red' } }
+//};
+
+// Do not add, rename or remove styles here. Only apply definition changes.
+FCKConfig.CoreStyles =
+{
+	// Basic Inline Styles.
+	'Bold'			: { Element : 'strong', Overrides : 'b' },
+	'Italic'		: { Element : 'em', Overrides : 'i' },
+	'Underline'		: { Element : 'u' },
+	'StrikeThrough'	: { Element : 'strike' },
+	'Subscript'		: { Element : 'sub' },
+	'Superscript'	: { Element : 'sup' },
+
+	// Basic Block Styles (Font Format Combo).
+	'p'				: { Element : 'p' },
+	'div'			: { Element : 'div' },
+	'pre'			: { Element : 'pre' },
+	'address'		: { Element : 'address' },
+	'h1'			: { Element : 'h1' },
+	'h2'			: { Element : 'h2' },
+	'h3'			: { Element : 'h3' },
+	'h4'			: { Element : 'h4' },
+	'h5'			: { Element : 'h5' },
+	'h6'			: { Element : 'h6' },
+
+	// Other formatting features.
+	'FontFace' :
+	{
+		Element		: 'span',
+		Styles		: { 'font-family' : '#("Font")' },
+		Overrides	: [ { Element : 'font', Attributes : { 'face' : null } } ]
+	},
+
+	'Size' :
+	{
+		Element		: 'span',
+		Styles		: { 'font-size' : '#("Size","fontSize")' },
+		Overrides	: [ { Element : 'font', Attributes : { 'size' : null } } ]
+	},
+
+	'Color' :
+	{
+		Element		: 'span',
+		Styles		: { 'color' : '#("Color","color")' },
+		Overrides	: [ { Element : 'font', Attributes : { 'color' : null } } ]
+	},
+
+	'BackColor'		: { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } },
+
+	'SelectionHighlight' : { Element : 'span', Styles : { 'background-color' : 'navy', 'color' : 'white' } }
+};
+
+// The distance of an indentation step.
+FCKConfig.IndentLength = 40 ;
+FCKConfig.IndentUnit = 'px' ;
+
+// Alternatively, FCKeditor allows the use of CSS classes for block indentation.
+// This overrides the IndentLength/IndentUnit settings.
+FCKConfig.IndentClasses = [] ;
+
+// [ Left, Center, Right, Justified ]
+FCKConfig.JustifyClasses = [] ;
+
+// The following value defines which File Browser connector and Quick Upload
+// "uploader" to use. It is valid for the default implementaion and it is here
+// just to make this configuration file cleaner.
+// It is not possible to change this value using an external file or even
+// inline when creating the editor instance. In that cases you must set the
+// values of LinkBrowserURL, ImageBrowserURL and so on.
+// Custom implementations should just ignore it.
+var _FileBrowserLanguage	= 'php' ;	// asp | aspx | cfm | lasso | perl | php | py
+var _QuickUploadLanguage	= 'php' ;	// asp | aspx | cfm | lasso | perl | php | py
+
+// Don't care about the following two lines. It just calculates the correct connector
+// extension to use for the default File Browser (Perl uses "cgi").
+var _FileBrowserExtension = _FileBrowserLanguage == 'perl' ? 'cgi' : _FileBrowserLanguage ;
+var _QuickUploadExtension = _QuickUploadLanguage == 'perl' ? 'cgi' : _QuickUploadLanguage ;
+
+FCKConfig.LinkBrowser = true ;
+FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
+FCKConfig.LinkBrowserWindowWidth	= FCKConfig.ScreenWidth * 0.7 ;		// 70%
+FCKConfig.LinkBrowserWindowHeight	= FCKConfig.ScreenHeight * 0.7 ;	// 70%
+
+FCKConfig.ImageBrowser = true ;
+FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
+FCKConfig.ImageBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	// 70% ;
+FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	// 70% ;
+
+FCKConfig.FlashBrowser = true ;
+FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
+FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	//70% ;
+FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	//70% ;
+// Added for flv support.
+FCKConfig.MediaBrowser = true ;
+FCKConfig.MediaBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Media&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
+FCKConfig.MediaBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; //70% ;
+FCKConfig.MediaBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; //70% ;
+
+FCKConfig.LinkUpload = true ;
+FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;
+FCKConfig.LinkUploadAllowedExtensions	= ".(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ;			// empty for all
+FCKConfig.LinkUploadDeniedExtensions	= "" ;	// empty for no one
+
+FCKConfig.ImageUpload = true ;
+FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Image' ;
+FCKConfig.ImageUploadAllowedExtensions	= ".(jpg|gif|jpeg|png|bmp)$" ;		// empty for all
+FCKConfig.ImageUploadDeniedExtensions	= "" ;							// empty for no one
+
+FCKConfig.FlashUpload = true ;
+FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Flash' ;
+FCKConfig.FlashUploadAllowedExtensions	= ".(swf|flv)$" ;		// empty for all
+FCKConfig.FlashUploadDeniedExtensions	= "" ;					// empty for no one
+
+FCKConfig.SmileyPath	= FCKConfig.BasePath + 'images/smiley/msn/' ;
+FCKConfig.SmileyImages	= ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;
+FCKConfig.SmileyColumns = 8 ;
+FCKConfig.SmileyWindowWidth		= 320 ;
+FCKConfig.SmileyWindowHeight	= 210 ;
+
+FCKConfig.BackgroundBlockerColor = '#ffffff' ;
+FCKConfig.BackgroundBlockerOpacity = 0.50 ;
+
+FCKConfig.MsWebBrowserControlCompat = false ;
+
+FCKConfig.PreventSubmitHandler = false ;
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor.js	(revision 1610)
@@ -0,0 +1,330 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the integration file for JavaScript.
+ *
+ * It defines the FCKeditor class that can be used to create editor
+ * instances in a HTML page in the client side. For server side
+ * operations, use the specific integration system.
+ */
+
+// FCKeditor Class
+var FCKeditor = function( instanceName, width, height, toolbarSet, value )
+{
+	// Properties
+	this.InstanceName	= instanceName ;
+	this.Width			= width			|| '100%' ;
+	this.Height			= height		|| '200' ;
+	this.ToolbarSet		= toolbarSet	|| 'Default' ;
+	this.Value			= value			|| '' ;
+	this.BasePath		= FCKeditor.BasePath ;
+	this.CheckBrowser	= true ;
+	this.DisplayErrors	= true ;
+
+	this.Config			= new Object() ;
+
+	// Events
+	this.OnError		= null ;	// function( source, errorNumber, errorDescription )
+}
+
+/**
+ * This is the default BasePath used by all editor instances.
+ */
+FCKeditor.BasePath = '/fckeditor/' ;
+
+/**
+ * The minimum height used when replacing textareas.
+ */
+FCKeditor.MinHeight = 200 ;
+
+/**
+ * The minimum width used when replacing textareas.
+ */
+FCKeditor.MinWidth = 750 ;
+
+FCKeditor.prototype.Version			= '2.6.6' ;
+FCKeditor.prototype.VersionBuild	= '25427' ;
+
+FCKeditor.prototype.Create = function()
+{
+	document.write( this.CreateHtml() ) ;
+}
+
+FCKeditor.prototype.CreateHtml = function()
+{
+	// Check for errors
+	if ( !this.InstanceName || this.InstanceName.length == 0 )
+	{
+		this._ThrowError( 701, 'You must specify an instance name.' ) ;
+		return '' ;
+	}
+
+	var sHtml = '' ;
+
+	if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
+	{
+		sHtml += '<input type="hidden" id="' + this.InstanceName + '" name="' + this.InstanceName + '" value="' + this._HTMLEncode( this.Value ) + '" style="display:none" />' ;
+		sHtml += this._GetConfigHtml() ;
+		sHtml += this._GetIFrameHtml() ;
+	}
+	else
+	{
+		var sWidth  = this.Width.toString().indexOf('%')  > 0 ? this.Width  : this.Width  + 'px' ;
+		var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
+
+		sHtml += '<textarea name="' + this.InstanceName +
+			'" rows="4" cols="40" style="width:' + sWidth +
+			';height:' + sHeight ;
+
+		if ( this.TabIndex )
+			sHtml += '" tabindex="' + this.TabIndex ;
+
+		sHtml += '">' +
+			this._HTMLEncode( this.Value ) +
+			'<\/textarea>' ;
+	}
+
+	return sHtml ;
+}
+
+FCKeditor.prototype.ReplaceTextarea = function()
+{
+	if ( document.getElementById( this.InstanceName + '___Frame' ) )
+		return ;
+	if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
+	{
+		// We must check the elements firstly using the Id and then the name.
+		var oTextarea = document.getElementById( this.InstanceName ) ;
+		var colElementsByName = document.getElementsByName( this.InstanceName ) ;
+		var i = 0;
+		while ( oTextarea || i == 0 )
+		{
+			if ( oTextarea && oTextarea.tagName.toLowerCase() == 'textarea' )
+				break ;
+			oTextarea = colElementsByName[i++] ;
+		}
+
+		if ( !oTextarea )
+		{
+			alert( 'Error: The TEXTAREA with id or name set to "' + this.InstanceName + '" was not found' ) ;
+			return ;
+		}
+
+		oTextarea.style.display = 'none' ;
+
+		if ( oTextarea.tabIndex )
+			this.TabIndex = oTextarea.tabIndex ;
+
+		this._InsertHtmlBefore( this._GetConfigHtml(), oTextarea ) ;
+		this._InsertHtmlBefore( this._GetIFrameHtml(), oTextarea ) ;
+	}
+}
+
+FCKeditor.prototype._InsertHtmlBefore = function( html, element )
+{
+	if ( element.insertAdjacentHTML )	// IE
+		element.insertAdjacentHTML( 'beforeBegin', html ) ;
+	else								// Gecko
+	{
+		var oRange = document.createRange() ;
+		oRange.setStartBefore( element ) ;
+		var oFragment = oRange.createContextualFragment( html );
+		element.parentNode.insertBefore( oFragment, element ) ;
+	}
+}
+
+FCKeditor.prototype._GetConfigHtml = function()
+{
+	var sConfig = '' ;
+	for ( var o in this.Config )
+	{
+		if ( sConfig.length > 0 ) sConfig += '&amp;' ;
+		sConfig += encodeURIComponent( o ) + '=' + encodeURIComponent( this.Config[o] ) ;
+	}
+
+	return '<input type="hidden" id="' + this.InstanceName + '___Config" value="' + sConfig + '" style="display:none" />' ;
+}
+
+FCKeditor.prototype._GetIFrameHtml = function()
+{
+	var sFile = 'fckeditor.html' ;
+
+	try
+	{
+		if ( (/fcksource=true/i).test( window.top.location.search ) )
+			sFile = 'fckeditor.original.html' ;
+	}
+	catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
+
+	var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + encodeURIComponent( this.InstanceName ) ;
+	if (this.ToolbarSet)
+		sLink += '&amp;Toolbar=' + this.ToolbarSet ;
+
+	var html = '<iframe id="' + this.InstanceName +
+		'___Frame" src="' + sLink +
+		'" width="' + this.Width +
+		'" height="' + this.Height ;
+
+	if ( this.TabIndex )
+		html += '" tabindex="' + this.TabIndex ;
+
+	html += '" frameborder="0" scrolling="no"></iframe>' ;
+
+	return html ;
+}
+
+FCKeditor.prototype._IsCompatibleBrowser = function()
+{
+	return FCKeditor_IsCompatibleBrowser() ;
+}
+
+FCKeditor.prototype._ThrowError = function( errorNumber, errorDescription )
+{
+	this.ErrorNumber		= errorNumber ;
+	this.ErrorDescription	= errorDescription ;
+
+	if ( this.DisplayErrors )
+	{
+		document.write( '<div style="COLOR: #ff0000">' ) ;
+		document.write( '[ FCKeditor Error ' + this.ErrorNumber + ': ' + this.ErrorDescription + ' ]' ) ;
+		document.write( '</div>' ) ;
+	}
+
+	if ( typeof( this.OnError ) == 'function' )
+		this.OnError( this, errorNumber, errorDescription ) ;
+}
+
+FCKeditor.prototype._HTMLEncode = function( text )
+{
+	if ( typeof( text ) != "string" )
+		text = text.toString() ;
+
+	text = text.replace(
+		/&/g, "&amp;").replace(
+		/"/g, "&quot;").replace(
+		/</g, "&lt;").replace(
+		/>/g, "&gt;") ;
+
+	return text ;
+}
+
+;(function()
+{
+	var textareaToEditor = function( textarea )
+	{
+		var editor = new FCKeditor( textarea.name ) ;
+
+		editor.Width = Math.max( textarea.offsetWidth, FCKeditor.MinWidth ) ;
+		editor.Height = Math.max( textarea.offsetHeight, FCKeditor.MinHeight ) ;
+
+		return editor ;
+	}
+
+	/**
+	 * Replace all <textarea> elements available in the document with FCKeditor
+	 * instances.
+	 *
+	 *	// Replace all <textarea> elements in the page.
+	 *	FCKeditor.ReplaceAllTextareas() ;
+	 *
+	 *	// Replace all <textarea class="myClassName"> elements in the page.
+	 *	FCKeditor.ReplaceAllTextareas( 'myClassName' ) ;
+	 *
+	 *	// Selectively replace <textarea> elements, based on custom assertions.
+	 *	FCKeditor.ReplaceAllTextareas( function( textarea, editor )
+	 *		{
+	 *			// Custom code to evaluate the replace, returning false if it
+	 *			// must not be done.
+	 *			// It also passes the "editor" parameter, so the developer can
+	 *			// customize the instance.
+	 *		} ) ;
+	 */
+	FCKeditor.ReplaceAllTextareas = function()
+	{
+		var textareas = document.getElementsByTagName( 'textarea' ) ;
+
+		for ( var i = 0 ; i < textareas.length ; i++ )
+		{
+			var editor = null ;
+			var textarea = textareas[i] ;
+			var name = textarea.name ;
+
+			// The "name" attribute must exist.
+			if ( !name || name.length == 0 )
+				continue ;
+
+			if ( typeof arguments[0] == 'string' )
+			{
+				// The textarea class name could be passed as the function
+				// parameter.
+
+				var classRegex = new RegExp( '(?:^| )' + arguments[0] + '(?:$| )' ) ;
+
+				if ( !classRegex.test( textarea.className ) )
+					continue ;
+			}
+			else if ( typeof arguments[0] == 'function' )
+			{
+				// An assertion function could be passed as the function parameter.
+				// It must explicitly return "false" to ignore a specific <textarea>.
+				editor = textareaToEditor( textarea ) ;
+				if ( arguments[0]( textarea, editor ) === false )
+					continue ;
+			}
+
+			if ( !editor )
+				editor = textareaToEditor( textarea ) ;
+
+			editor.ReplaceTextarea() ;
+		}
+	}
+})() ;
+
+function FCKeditor_IsCompatibleBrowser()
+{
+	var sAgent = navigator.userAgent.toLowerCase() ;
+
+	// Internet Explorer 5.5+
+	if ( /*@cc_on!@*/false && sAgent.indexOf("mac") == -1 )
+	{
+		var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
+		return ( sBrowserVersion >= 5.5 ) ;
+	}
+
+	// Gecko (Opera 9 tries to behave like Gecko at this point).
+	if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
+		return true ;
+
+	// Opera 9.50+
+	if ( window.opera && window.opera.version && parseFloat( window.opera.version() ) >= 9.5 )
+		return true ;
+
+	// Adobe AIR
+	// Checked before Safari because AIR have the WebKit rich text editor
+	// features from Safari 3.0.4, but the version reported is 420.
+	if ( sAgent.indexOf( ' adobeair/' ) != -1 )
+		return ( sAgent.match( / adobeair\/(\d+)/ )[1] >= 1 ) ;	// Build must be at least v1
+
+	// Safari 3+
+	if ( sAgent.indexOf( ' applewebkit/' ) != -1 )
+		return ( sAgent.match( / applewebkit\/(\d+)/ )[1] >= 522 ) ;	// Build must be at least 522 (v3)
+
+	return false ;
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckstyles.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckstyles.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckstyles.xml	(revision 1610)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the sample style definitions file. It makes the styles combo
+ * completely customizable.
+ *
+ * See FCKConfig.StylesXmlPath in the configuration file.
+-->
+<Styles>
+
+	<!-- Block Styles -->
+
+	<!--
+	# These styles are already available in the "Format" combo, so they are not
+	# needed here by default.
+
+	<Style name="Heading 1" element="h1" />
+	<Style name="Heading 2" element="h2" />
+	<Style name="Heading 3" element="h3" />
+	<Style name="Heading 4" element="h4" />
+	<Style name="Heading 5" element="h5" />
+	<Style name="Heading 6" element="h6" />
+	<Style name="Paragraph" element="p" />
+	<Style name="Document Block" element="div" />
+	<Style name="Preformatted Text" element="pre" />
+	<Style name="Address" element="address" />
+	-->
+
+	<!-- Inline Styles -->
+
+	<!--
+	# These are core styles available as toolbar buttons.
+
+	<Style name="Bold" element="b">
+		<Override element="strong" />
+	</Style>
+	<Style name="Italic" element="i">
+		<Override element="em" />
+	</Style>
+	<Style name="Underline" element="u" />
+	<Style name="Strikethrough" element="strike" />
+	<Style name="Subscript" element="sub" />
+	<Style name="Superscript" element="sup" />
+	-->
+
+	<Style name="Marker: Yellow" element="span">
+		<Style name="background-color" value="Yellow" />
+	</Style>
+	<Style name="Marker: Green" element="span">
+		<Style name="background-color" value="Lime" />
+	</Style>
+
+	<Style name="Big" element="big" />
+	<Style name="Small" element="small" />
+	<Style name="Typewriter" element="tt" />
+
+	<Style name="Computer Code" element="code" />
+	<Style name="Keyboard Phrase" element="kbd" />
+	<Style name="Sample Text" element="samp" />
+	<Style name="Variable" element="var" />
+
+	<Style name="Deleted Text" element="del" />
+	<Style name="Inserted Text" element="ins" />
+
+	<Style name="Cited Work" element="cite" />
+	<Style name="Inline Quotation" element="q" />
+
+	<Style name="Language: RTL" element="span">
+		<Attribute name="dir" value="rtl" />
+	</Style>
+	<Style name="Language: LTR" element="span">
+		<Attribute name="dir" value="ltr" />
+	</Style>
+	<Style name="Language: RTL Strong" element="bdo">
+		<Attribute name="dir" value="rtl" />
+	</Style>
+	<Style name="Language: LTR Strong" element="bdo">
+		<Attribute name="dir" value="ltr" />
+	</Style>
+
+	<!-- Object Styles -->
+
+	<Style name="Image on Left" element="img">
+		<Attribute name="style" value="padding: 5px; margin-right: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="left" />
+	</Style>
+	<Style name="Image on Right" element="img">
+		<Attribute name="style" value="padding: 5px; margin-left: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="right" />
+	</Style>
+</Styles>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php4.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php4.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php4.php	(revision 1610)
@@ -0,0 +1,262 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the integration file for PHP 4.
+ *
+ * It defines the FCKeditor class that can be used to create editor
+ * instances in PHP pages on server side.
+ */
+
+/**
+ * Check if browser is compatible with FCKeditor.
+ * Return true if is compatible.
+ *
+ * @return boolean
+ */
+function FCKeditor_IsCompatibleBrowser()
+{
+	if ( isset( $_SERVER ) ) {
+		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+	}
+	else {
+		global $HTTP_SERVER_VARS ;
+		if ( isset( $HTTP_SERVER_VARS ) ) {
+			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
+		}
+		else {
+			global $HTTP_USER_AGENT ;
+			$sAgent = $HTTP_USER_AGENT ;
+		}
+	}
+
+	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
+	{
+		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
+		return ($iVersion >= 5.5) ;
+	}
+	else if ( strpos($sAgent, 'Gecko/') !== false )
+	{
+		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
+		return ($iVersion >= 20030210) ;
+	}
+	else if ( strpos($sAgent, 'Opera/') !== false )
+	{
+		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
+		return ($fVersion >= 9.5) ;
+	}
+	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
+	{
+		$iVersion = $matches[1] ;
+		return ( $matches[1] >= 522 ) ;
+	}
+	else
+		return false ;
+}
+
+class FCKeditor
+{
+	/**
+	 * Name of the FCKeditor instance.
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	var $InstanceName ;
+	/**
+	 * Path to FCKeditor relative to the document root.
+	 *
+	 * @var string
+	 */
+	var $BasePath ;
+	/**
+	 * Width of the FCKeditor.
+	 * Examples: 100%, 600
+	 *
+	 * @var mixed
+	 */
+	var $Width ;
+	/**
+	 * Height of the FCKeditor.
+	 * Examples: 400, 50%
+	 *
+	 * @var mixed
+	 */
+	var $Height ;
+	/**
+	 * Name of the toolbar to load.
+	 *
+	 * @var string
+	 */
+	var $ToolbarSet ;
+	/**
+	 * Initial value.
+	 *
+	 * @var string
+	 */
+	var $Value ;
+	/**
+	 * This is where additional configuration can be passed.
+	 * Example:
+	 * $oFCKeditor->Config['EnterMode'] = 'br';
+	 *
+	 * @var array
+	 */
+	var $Config ;
+
+	/**
+	 * Main Constructor.
+	 * Refer to the _samples/php directory for examples.
+	 *
+	 * @param string $instanceName
+	 */
+	function FCKeditor( $instanceName )
+	{
+		$this->InstanceName	= $instanceName ;
+		$this->BasePath		= '/fckeditor/' ;
+		$this->Width		= '100%' ;
+		$this->Height		= '200' ;
+		$this->ToolbarSet	= 'Default' ;
+		$this->Value		= '' ;
+
+		$this->Config		= array() ;
+	}
+
+	/**
+	 * Display FCKeditor.
+	 *
+	 */
+	function Create()
+	{
+		echo $this->CreateHtml() ;
+	}
+
+	/**
+	 * Return the HTML code required to run FCKeditor.
+	 *
+	 * @return string
+	 */
+	function CreateHtml()
+	{
+		$HtmlValue = htmlspecialchars( $this->Value ) ;
+
+		$Html = '' ;
+
+		if ( !isset( $_GET ) ) {
+			global $HTTP_GET_VARS ;
+			$_GET = $HTTP_GET_VARS ;
+		}
+
+		if ( $this->IsCompatible() )
+		{
+			if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
+				$File = 'fckeditor.original.html' ;
+			else
+				$File = 'fckeditor.html' ;
+
+			$Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
+
+			if ( $this->ToolbarSet != '' )
+				$Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
+
+			// Render the linked hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;
+
+			// Render the configurations hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;
+
+			// Render the editor IFRAME.
+			$Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"0\" scrolling=\"no\"></iframe>" ;
+		}
+		else
+		{
+			if ( strpos( $this->Width, '%' ) === false )
+				$WidthCSS = $this->Width . 'px' ;
+			else
+				$WidthCSS = $this->Width ;
+
+			if ( strpos( $this->Height, '%' ) === false )
+				$HeightCSS = $this->Height . 'px' ;
+			else
+				$HeightCSS = $this->Height ;
+
+			$Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
+		}
+
+		return $Html ;
+	}
+
+	/**
+	 * Returns true if browser is compatible with FCKeditor.
+	 *
+	 * @return boolean
+	 */
+	function IsCompatible()
+	{
+		return FCKeditor_IsCompatibleBrowser() ;
+	}
+
+	/**
+	 * Get settings from Config array as a single string.
+	 *
+	 * @access protected
+	 * @return string
+	 */
+	function GetConfigFieldString()
+	{
+		$sParams = '' ;
+		$bFirst = true ;
+
+		foreach ( $this->Config as $sKey => $sValue )
+		{
+			if ( $bFirst == false )
+				$sParams .= '&amp;' ;
+			else
+				$bFirst = false ;
+
+			if ( $sValue === true )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
+			else if ( $sValue === false )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
+			else
+				$sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
+		}
+
+		return $sParams ;
+	}
+
+	/**
+	 * Encode characters that may break the configuration string
+	 * generated by GetConfigFieldString().
+	 *
+	 * @access protected
+	 * @param string $valueToEncode
+	 * @return string
+	 */
+	function EncodeConfig( $valueToEncode )
+	{
+		$chars = array(
+			'&' => '%26',
+			'=' => '%3D',
+			'"' => '%22' ) ;
+
+		return strtr( $valueToEncode,  $chars ) ;
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php5.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php5.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/fckeditor_php5.php	(revision 1610)
@@ -0,0 +1,257 @@
+<?php
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the integration file for PHP 5.
+ *
+ * It defines the FCKeditor class that can be used to create editor
+ * instances in PHP pages on server side.
+ */
+
+/**
+ * Check if browser is compatible with FCKeditor.
+ * Return true if is compatible.
+ *
+ * @return boolean
+ */
+function FCKeditor_IsCompatibleBrowser()
+{
+	if ( isset( $_SERVER ) ) {
+		$sAgent = $_SERVER['HTTP_USER_AGENT'] ;
+	}
+	else {
+		global $HTTP_SERVER_VARS ;
+		if ( isset( $HTTP_SERVER_VARS ) ) {
+			$sAgent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'] ;
+		}
+		else {
+			global $HTTP_USER_AGENT ;
+			$sAgent = $HTTP_USER_AGENT ;
+		}
+	}
+
+	if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false )
+	{
+		$iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ;
+		return ($iVersion >= 5.5) ;
+	}
+	else if ( strpos($sAgent, 'Gecko/') !== false )
+	{
+		$iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
+		return ($iVersion >= 20030210) ;
+	}
+	else if ( strpos($sAgent, 'Opera/') !== false )
+	{
+		$fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ;
+		return ($fVersion >= 9.5) ;
+	}
+	else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) )
+	{
+		$iVersion = $matches[1] ;
+		return ( $matches[1] >= 522 ) ;
+	}
+	else
+		return false ;
+}
+
+class FCKeditor
+{
+	/**
+	 * Name of the FCKeditor instance.
+	 *
+	 * @access protected
+	 * @var string
+	 */
+	public $InstanceName ;
+	/**
+	 * Path to FCKeditor relative to the document root.
+	 *
+	 * @var string
+	 */
+	public $BasePath ;
+	/**
+	 * Width of the FCKeditor.
+	 * Examples: 100%, 600
+	 *
+	 * @var mixed
+	 */
+	public $Width ;
+	/**
+	 * Height of the FCKeditor.
+	 * Examples: 400, 50%
+	 *
+	 * @var mixed
+	 */
+	public $Height ;
+	/**
+	 * Name of the toolbar to load.
+	 *
+	 * @var string
+	 */
+	public $ToolbarSet ;
+	/**
+	 * Initial value.
+	 *
+	 * @var string
+	 */
+	public $Value ;
+	/**
+	 * This is where additional configuration can be passed.
+	 * Example:
+	 * $oFCKeditor->Config['EnterMode'] = 'br';
+	 *
+	 * @var array
+	 */
+	public $Config ;
+
+	/**
+	 * Main Constructor.
+	 * Refer to the _samples/php directory for examples.
+	 *
+	 * @param string $instanceName
+	 */
+	public function __construct( $instanceName )
+ 	{
+		$this->InstanceName	= $instanceName ;
+		$this->BasePath		= '/fckeditor/' ;
+		$this->Width		= '100%' ;
+		$this->Height		= '200' ;
+		$this->ToolbarSet	= 'Default' ;
+		$this->Value		= '' ;
+
+		$this->Config		= array() ;
+	}
+
+	/**
+	 * Display FCKeditor.
+	 *
+	 */
+	public function Create()
+	{
+		echo $this->CreateHtml() ;
+	}
+
+	/**
+	 * Return the HTML code required to run FCKeditor.
+	 *
+	 * @return string
+	 */
+	public function CreateHtml()
+	{
+		$HtmlValue = htmlspecialchars( $this->Value ) ;
+
+		$Html = '' ;
+
+		if ( $this->IsCompatible() )
+		{
+			if ( isset( $_GET['fcksource'] ) && $_GET['fcksource'] == "true" )
+				$File = 'fckeditor.original.html' ;
+			else
+				$File = 'fckeditor.html' ;
+
+			$Link = "{$this->BasePath}editor/{$File}?InstanceName={$this->InstanceName}" ;
+
+			if ( $this->ToolbarSet != '' )
+				$Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
+
+			// Render the linked hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;
+
+			// Render the configurations hidden field.
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;
+
+			// Render the editor IFRAME.
+			$Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"0\" scrolling=\"no\"></iframe>" ;
+		}
+		else
+		{
+			if ( strpos( $this->Width, '%' ) === false )
+				$WidthCSS = $this->Width . 'px' ;
+			else
+				$WidthCSS = $this->Width ;
+
+			if ( strpos( $this->Height, '%' ) === false )
+				$HeightCSS = $this->Height . 'px' ;
+			else
+				$HeightCSS = $this->Height ;
+
+			$Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
+		}
+
+		return $Html ;
+	}
+
+	/**
+	 * Returns true if browser is compatible with FCKeditor.
+	 *
+	 * @return boolean
+	 */
+	public function IsCompatible()
+	{
+		return FCKeditor_IsCompatibleBrowser() ;
+	}
+
+	/**
+	 * Get settings from Config array as a single string.
+	 *
+	 * @access protected
+	 * @return string
+	 */
+	public function GetConfigFieldString()
+	{
+		$sParams = '' ;
+		$bFirst = true ;
+
+		foreach ( $this->Config as $sKey => $sValue )
+		{
+			if ( $bFirst == false )
+				$sParams .= '&amp;' ;
+			else
+				$bFirst = false ;
+
+			if ( $sValue === true )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=true' ;
+			else if ( $sValue === false )
+				$sParams .= $this->EncodeConfig( $sKey ) . '=false' ;
+			else
+				$sParams .= $this->EncodeConfig( $sKey ) . '=' . $this->EncodeConfig( $sValue ) ;
+		}
+
+		return $sParams ;
+	}
+
+	/**
+	 * Encode characters that may break the configuration string
+	 * generated by GetConfigFieldString().
+	 *
+	 * @access protected
+	 * @param string $valueToEncode
+	 * @return string
+	 */
+	public function EncodeConfig( $valueToEncode )
+	{
+		$chars = array(
+			'&' => '%26',
+			'=' => '%3D',
+			'"' => '%22' ) ;
+
+		return strtr( $valueToEncode,  $chars ) ;
+	}
+}
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew.html	(revision 1610)
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor ChangeLog - What's New?</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor ChangeLog - What's New?</h1>
+	<h3>
+		Version 2.6.5</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>Introduced the Spell Check As You Type (SCAYT) spell checking option.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended</strong> (fixed security issues in ASP and ColdFusion scripts).
+			</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2856">#2856</a>] Fixed
+			problem with inches in paste dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3120">#3120</a>]
+			# (pound sign) is not correctly escaped in file urls.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2915">#2915</a>]
+			About plugin shows misleading user language.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2821">#2821</a>] Configuration
+			items that used floating point numbers were parsed as integers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2604">#2064</a>] The asp
+			connector didn't work correctly in windows 2000 servers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3429">#3429</a>] Fixed
+			problem in IE8 with XHTML doctype. Thanks to duncansimey.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3446">#3446</a>] Fixed self-closed
+ 			&lt;option&gt; in the table cell dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3181">#3181</a>] Node selection
+			could raise an error in IE8.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2156">#2156</a>]
+			After calling GetData() the style removal operations didn't work in IE. Thanks to
+			Compendium Blogware.</li>
+	  <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3427">#3427</a>] Improved
+ 			compatibility of Document properties dialog with Eclipse.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2908">#2908</a>] Czech </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2849">#2849</a>] Lithuanian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3636">#3636</a>] Polish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3741">#3741</a>] Korean</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2861">#2861</a>] Slovenian</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3439">#3439</a>] IgnoreEmptyParagraphValue
+			had no effect if ProcessHTMLEntities is false.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3880">#3880</a>] Fixed some minor
+			logical and typing mistakes in fckdomrange_ie.js.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2689">#2689</a>] If a
+			custom connector tried to use the "url" attribute for files it was always reencoded.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1537">#1537</a>] Fixed extra
+			&lt;p&gt; tag added before pasted contents from Paste From Word dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2874">#2874</a>] Fixed wrong position
+			of caption tag in tables with table headers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3818">#3818</a>] Fixed layout error
+			in text and background color popups when more colors button is disabled.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3481">#3481</a>] Fixed an issue in
+ 			WebKit where paste actions inside table cells may leak outside of the table cell.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3677">#3677</a>] Fixed JavaScript
+ 			error when trying to create link for images inside floating div containers.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3925">#3925</a>] Removed obsolete
+ 			parentWindow reference from FCKDialog.OpenDialog().</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2936">#2936</a>] Added protection
+			in the PHP upload if the destination folder is placed at the root and doesn't exit.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4357">#4357</a>] Avoid problem in
+			the paste dialog if IIS is set to process HTML files as Asp.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2201">#2201</a>] Fixed a crash in IE
+ 			in an object is selected (with handles) on unload of the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3053">#3053</a>] Fixed problems with
+			the height of the content area in Safari and Chrome.</li>
+	</ul>
+	<p>
+		<a href="_whatsnew_history.html">See previous versions history</a></p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew_history.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew_history.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/_whatsnew_history.html	(revision 1610)
@@ -0,0 +1,4055 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor ChangeLog - What's New?</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+		h1 { border-bottom: solid 1px gray; padding-bottom: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor ChangeLog - What's New?</h1>
+	<h3>
+		Version 2.6.4.1</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended.</strong></li>
+	</ul>
+	<h3>
+		Version 2.6.4</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2777">#2777</a>] Merging
+			cells between table header and body is no longer possible.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2815">#2815</a>] Fixed
+			WSC issues at slow connection speed. Added SSL support.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>Chinese (Traditional)</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2846">#2846</a>] French</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2801">#2801</a>] Hebrew</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2824">#2824</a>] Russian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2811">#2811</a>] Turkish</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2757">#2757</a>] Fixed
+			a minor bug which causes selection positions to be improperly restored during undos
+			and redos.</li>
+	</ul>
+	<h3>
+		Version 2.6.4 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2685">#2685</a>] Integration
+			with "WebSpellChecker", a <strong>zero installation and free spell checker</strong>
+			provided by SpellChecker.net. This is now the default spell checker in the editor
+			(requires internet connection). All previous spell checking solutions are still
+			available.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2430">#2430</a>] In the
+			table dialog it's possible to create header cells in the first row (included in
+			a thead element) or the first column of the table. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/822">#822</a>] The table
+			cell dialog allows switching between normal data cells or header cells (TD vs. TH).
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2515">#2515</a>] New language
+			file for Icelandic.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2381">#2381</a>] Protected
+			the editor from duplicate iframes</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1752">#1752</a>] Fixed
+			the issue with tablecommands plugin and undefined tagName.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2333">#2333</a>] The &amp;gt;
+			character inside text wasn't encoded in Opera and Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2467">#2467</a>] Fixed
+			JavaScript error with the fit window command in source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2472">#2472</a>] Splitting
+			a TH will create a two TH, not a TH and a TD.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1891">#1891</a>] Removed
+			unnecessary name attributes in dialogs. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/798">#798</a>, <a target="_blank"
+			href="http://dev.fckeditor.net/ticket/2495">#2495</a>] If an image was placed inside
+			a container with dimensions or floating it wasn't possible to edit its properties
+			from the toolbar or context menu.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1982">#1982</a>] Submenus
+			in IE7 now are shown properly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2496">#2496</a>] Using
+			the Paste dialogs in IE might insert the content at the start of the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2349">#2496</a>] Fixed
+			RTL dialog layout in Internet Explorer.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2488">#2488</a>] Fixed
+			the issue where email links in IE would take the browser to a new page in addition
+			to calling up the email client.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2519">#2519</a>] Fixed
+			race condition at registering the FCKeditorAPI object in multiple editor scenarios.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2525">#2525</a>] Fixed
+			JavaScript error in Google Chrome when StartupShowBlocks is set to true.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2440">#2440</a>] Dutch</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2451</a>] Basque</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2650</a>] Danish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2535</a>] German
+				</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2531">#2531</a>] The ENTER
+			key will properly scroll to the cursor position when breaking long paragraphs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2573">#2573</a>] The type
+			name in configurations for the ASP connector are now case sensitive.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2503">#2503</a>] DL, DT
+			and DD where missing the formatting in the generated HTML.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2516">#2516</a>] Replaced
+			the extension AddItem of Array with the standard "push" method.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2486">#2486</a>] Vertically
+			splitting cell with colspan &gt; 1 breaks table layout.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2597">#2597</a>] Fixed
+			the issue where dropping contents from outside of the editor doesn't work in Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] Fixed
+			the issue where FCK.InsertHtml() is no longer removing selected contents after content
+			insertion in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2407">#2407</a>] Fixed
+			the issue where the Div container command and the blockquote command would break
+			lists.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2469">#2469</a>] Fixed
+			a minor issue where FCK.SetData() may cause the editor to become unresponsive to
+			the first click after being defocused.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2611">#2611</a>] Fixed
+			an extra slash on quickupload of the asp connector.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2616">#2616</a>] Fixed
+			another situation where new elements were inserted at the beginning of the content
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2634">#2634</a>] Fixed
+			two obsolete references to Array::AddItem() instances still in the code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2679">#2679</a>] Fixed
+			infinite loop problems with FCKDomRangeIterator class which causes some commands
+			to hang when applied to certain document structures.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2649">#2649</a>] Fixed
+			a JavaScript error in IE when user tries to search with the "Match whole word" option
+			enabled and the matched word is at exactly the end of document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2603">#2603</a>] Changed
+			the <a href="http://docs.fckeditor.net/EMailProtection">EMailProtection</a> to "none"
+			for better compatibility.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2612">#2612</a>] The 'ForcePasteAsPlainText'
+			configuration option didn't work correctly in Safari and Chrome.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2696">#2696</a>] Fixed
+			non-working autogrow plugin.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2753">#2753</a>] Fixed
+			occasional exceptions in the dragersizetable plugin with IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2653">#2653</a>] and [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/2733">#2733</a>] Enable undo
+			of changes to tables and table cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1865">#1865</a>] The context
+			menu is now working properly over the last row in a table with thead. Thanks to
+			Koen Willems.</li>
+	</ul>
+	<h3>
+		Version 2.6.3</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] FCK.InsertHtml()
+			is now properly removing selected contents after content insertion in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2420">#2420</a>] Spelling
+			mistake corrections made by the spell checking dialog are now undoable. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2411">#2411</a>] Insert
+			anchor was not working for non-empty selections.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2426">#2426</a>] It was
+			impossible to switch between editor areas with a single click.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>Canadian French</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2402">#2402</a>] Catalan
+				</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2400">#2400</a>] Chinese
+					(Simplified and Traditional)</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2401">#2401</a>] Croatian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2422">#2422</a>] Czech</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2417">#2417</a>] Dutch</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2428">#2428</a>] French</li>
+				<li>German</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2427">#2427</a>] Hebrew</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2410">#2410</a>] Hindi</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2405">#2405</a>] Japanese</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2409">#2409</a>] Norwegian
+					and Norwegian Bokmål</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2429">#2429</a>] Spanish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2406">#2406</a>] Vietnamese</li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		This version has been sponsored by <a href="http://www.dataillusion.com/fs/">Data Illusion
+			survey software solutions</a>.</p>
+	<h3>
+		Version 2.6.3 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/439">#439</a>] Added a
+			new <strong>context menu option for opening links</strong> in the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2220">#2220</a>] <strong>
+			Email links</strong> from the Link dialog <strong>are now encoded</strong> by default
+			to prevent being harvested by spammers. (Kudos to asuter for proposing the patch)
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2234">#2234</a>] Added
+			the ability to create, modify and remove <strong>DIV containers</strong>. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2247">#2247</a>] The <strong>
+			SHIFT+SPACE</strong> keystroke will now <strong>produce a &amp;nbsp;</strong> character.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2252">#2252</a>] It's
+			now possible to enable the browsers default menu using the configuration file (FCKConfig.BrowserContextMenu
+			option). </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2032">#2032</a>] Added
+			HTML samples for legacy HTML and Flash HTML. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/234">#234</a>] Introduced
+			the "PreventSubmitHandler" setting, which makes it possible to instruct the editor
+			to not handle the hidden field update on form submit events.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2319">#2319</a>] On Opera
+			and Firefox 3, the entire page was scrolling on SHIFT+ENTER, or when EnterMode='br'.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2321">#2321</a>] On Firefox
+			3, the entire page was scrolling when inserting block elements with the FCK.InsertElement
+			function, used by the Table and Horizontal Rule buttons.. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/692">#692</a>] Added some
+			hints in editor/css/fck_editorarea.css on how to handle style items that would break
+			the style combo. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2263">#2263</a>] Fixed
+			a JavaScript error in IE which occurs when there are placeholder elements in the
+			document and the user has pressed the Source button.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2314">#2314</a>] Corrected
+			mixed up Chinese translations for the blockquote command.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2323">#2323</a>] Fixed
+			the issue where the show blocks command loses the current selection from the view
+			area when editing a long document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2322">#2322</a>] Fixed
+			the issue where the fit window command loses the current selection and scroll position
+			in the editing area.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1917">#1917</a>] Fixed
+			the issue where the merge down command for tables cells does not work in IE for
+			more than two cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2320">#2320</a>] Fixed
+			the issue where the Find/Replace dialog scrolls the entire page.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1645">#1645</a>] Added
+			warning message about Firefox 3's strict origin policy.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2272">#2272</a>] Improved
+			the garbage filter in Paste from Word dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2327">#2327</a>] Fixed
+			invalid HTML in the Paste dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1907">#1907</a>] Fixed
+			sporadic "FCKeditorAPI is not defined" errors in Firefox 3.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2356">#2356</a>] Fixed
+			access denied error in IE7 when FCKeditor is launched from local filesystem.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1150">#1150</a>] Fixed
+			the type="_moz" attribute that sometimes appear in &lt;br&gt; tags in non-IE browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
+			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
+			block.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2363">#2363</a>] There
+			were some sporadic "Permission Denied" errors with IE on some situations.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2135">#2135</a>] Fixed
+			a data loss bug in IE when there are @import statements in the editor's CSS files,
+			and IE's cache is set to "Check for newer versions on every visit".</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2376">#2376</a>] FCK.InsertHtml()
+			will now insert to the last selected position after the user has selected things
+			outside of FCKeditor, in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2368">#2368</a>] Fixed
+			broken protect source logic for comments in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2387">#2387</a>] Fixed
+			JavaScript error with list commands when the editable document is selected with
+			Ctrl-A.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2390">#2390</a>] Fixed
+			the issue where indent styles in JavaScript-generated &lt;p&gt; blocks are erased
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2394">#2394</a>] Fixed
+			JavaScript error with the "split vertically" command in IE when attempting to split
+			cells in the last row of a table.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2316">#2316</a>] The sample
+			posted data page has now the table fixed at 100% width. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2396">#2396</a>] SpellerPages
+			was causing a "Permission Denied" error in some situations. </li>
+	</ul>
+	<h3>
+		Version 2.6.2</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2043">#2043</a>] The debug
+			script is not any more part of the compressed files. If FCKeditor native debugging
+			features (FCKDebug) are required, the _source folder must be present in your installation.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2248">#2248</a>] Calling
+			FCK.InsertHtml( 'nbsp;') was inserting a plain space instead of a non breaking space
+			character.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2273">#2273</a>] The dragresizetable
+			plugin now works in Firefox 3 as well.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2254">#2254</a>] Minor
+			fix in FCKSelection for nodeTagName object.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1614">#1614</a>] Unified
+			FCKConfig.FullBasePath with FCKConfig.BasePath.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2127">#2127</a>] Changed
+			floating dialogs to use fixed positioning so that they are no longer affected by
+			scrolling.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2018">#2018</a>] Reversed
+			the fix for <a target="_blank" href="http://dev.fckeditor.net/ticket/183">#183</a>
+			which broke FCKeditorAPI's cleanup logic. A new configuration directive <strong>MsWebBrowserControlCompat</strong>
+			has been added for those who wish to force the #183 fix to be enabled.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2276">#2276</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/2279">#2279</a>] On Opera
+			and Firefox 3, the entire page was scrolling on ENTER.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2149">#2149</a>] CSS urls
+			with querystring parameters were not being accepted for CSS values in the configuration
+			file (like EditorAreaCSS).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2287">#2287</a>] On some
+			specific cases, with Firefox 2, some extra spacing was appearing in the final HTML
+			on posting, if inserting two successive tables.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2287">#2287</a>] Block
+			elements (like tables or horizontal rules) will be inserted correctly now when the
+			cursor is at the start or the end of blocks. No extra paragraphs will be included
+			in this operation.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2149">#2197</a>] The TAB
+			key will now have the default browser behavior if TabSpaces=0. It will move the
+			focus out of the editor (expect on Safari).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2296">#2296</a>] Fixed
+			permission denied error on clicking on files in the file browser.</li>
+	</ul>
+	<h3>
+		Version 2.6.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2150">#2150</a>] The searching
+			speed of the Find/Replace dialog has been vastly improved.</li>
+		<li>New language file for <strong>Gujarati</strong> (by Nilam Doctor).</li>
+		<li>A new TabIndex property has been added to the JavaScript integration files.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2215">#2215</a>] Following
+			the above new feature, the ReplaceTextarea method will now copy the textarea.tabIndex
+			value if available.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2163">#2163</a>] If the
+			FCKConfig.DocType setting points to a HTML DocType then the output won't generate
+			self-closing tags (it will output &lt;img &gt; instead of &lt;img /&gt;).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2173">#2173</a>] A throbber
+			will be shown in the Quick Uploads.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2142">#2142</a>] HTML
+			samples will now use sampleposteddata.php in action parameter inside a form.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/768">#768</a>] It is no
+			longer possible for an image to have its width and height defined with both HTML
+			attributes and inline CSS styles in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1426">#1426</a>] Fixed
+			the error loading fckstyles.xml in servers which cannot return the correct content
+			type header for .xml files.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2102">#2102</a>] Fixed
+			FCKConfig.DocType which stopped working in FCKeditor 2.6.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2039">#2039</a>] Fixed
+			the locking up issue in the Find/Replace dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2124">#2124</a>] PHP File
+			Browser: fixed issue with resolving paths on Windows servers with PHP 5.2.4/5.2.5.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2059">#2059</a>] Fixed
+			the error in the toolbar name in fckeditor.py.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2065">#2065</a>] Floating
+			dialogs will now block the user from re-selecting the editing area by pressing Tab.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2114">#2114</a>] Added
+			a workaround for an IE6 bug which causes floating dialogs to appear blank after
+			opening it for the first time.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2136">#2136</a>] Fixed
+			JavaScript error in IE when opening the bullet list properties dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1633">#1633</a>] External
+			styles should no longer interfere with the appearance of the editor and floating
+			panels now.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2113">#2113</a>] Fixed
+			unneeded &lt;span class=&quot;Apple-style-span&quot;&gt; created after inserting
+			special characters.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2170">#2170</a>] Fixed
+			Ctrl-Insert hotkey for copying.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2125">#2125</a>] Fixed
+			the issue that FCK.InsertHtml() doesn't insert contents at the caret position when
+			dialogs are opened in IE. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1764">#1764</a>] FCKeditor
+			will no longer catch focus in IE on load when StartupFocus is false and the initial
+			content is empty.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2126">#2126</a>] Opening
+			and closing floating dialogs will no longer cause toolbar button states to become
+			frozen.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2159">#2159</a>] Selection
+			are now correctly restored when undoing changes made by the Replace dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2160">#2160</a>] "Match
+			whole word" in the Find and Replace dialog will now find words next to punctuation
+			marks as well.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2162">#2162</a>] If the
+			configuration is set to work including the &lt;head&gt; (FullPage), references to
+			stylesheets added by Firefox extensions won't be added to the output.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2168">#2168</a>] Comments
+			won't generate new paragraphs in the output.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2184">#2184</a>] Fixed
+			several validation errors in the File Browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1383">#1383</a>] Fixed
+			an IE issue where pressing backspace may merge a hyperlink on the previous line
+			with the text on the current line.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1691">#1691</a>] Creation
+			of links in Safari failed if there was no selection.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2188">#2188</a>] PreserveSessionOnFileBrowser
+			is now removed as it was made obsolete with 2.6.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/898">#898</a>] The styles
+			for the editing area are applied in the image preview dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2056">#2056</a>] Fixed
+			several validation errors in the dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2063">#2063</a>] Fixed
+			some problems in asp related to the use of network paths for the location of the
+			uploaded files.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1593">#1593</a>] The "Sample
+			Posted Data" page will now properly wrap the text.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2239">#2239</a>] The PHP
+			code in sampleposteddata.php has been changed from "&lt;?=" to "&lt;? echo".</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2241">#2241</a>] Fixed
+			404 error in floating panels when FCKeditor is installed to a different domain.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2066">#2066</a>] Added
+			a workaround for a Mac Safari 3.1 browser bug which caused the Fit Window button
+			to give a blank screen.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2218">#2218</a>] Improved
+			Gecko based browser detection to accept Epiphany/Gecko as well.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2193">#2193</a>] Fixed
+			the issue where the caret cannot reach the last character of a paragraph in Opera
+			9.50.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2264">#2264</a>] Fixed
+			empty spaces that appear at the top of the editor in Opera 9.50.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2238">#2238</a>] The &lt;object&gt;
+			placeholder was not being properly displayed in the compressed distribution version
+			and nightly builds.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2115">#2115</a>] Fixed
+			JavaScript (permission denied) error in Firefox when file has been uploaded.</li>
+	</ul>
+	<h3>
+		Version 2.6</h3>
+	<p>
+		No changes. The stabilization of the 2.6 RC was completed successfully, as expected.</p>
+	<h3>
+		Version 2.6 RC</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2017">#2017</a>] The FCKeditorAPI.Instances
+			object can now be used to access all FCKeditor instances available in the page.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1980">#1980</a>] <span
+			style="color: #ff0000">Attention:</span> By default, the editor now produces &lt;strong&gt;
+			and &lt;em&gt; instead of &lt;b&gt; and &lt;i&gt;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1924">#1924</a>] The dialog
+			close button is now correctly positioned in IE in RTL languages.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1933">#1933</a>] Placeholder
+			dialog will now display the placeholder value correctly in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/957">#957</a>] Pressing
+			Enter or typing after a placeholder with the placeholder plugin will no longer generate
+			colored text.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1952">#1952</a>] Fixed
+			an issue in FCKTools.FixCssUrls that, other than wrong, was breaking Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1695">#1695</a>] Removed
+			Ctrl-Tab hotkey for Source mode and allowed Ctrl-T to work in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1666">#1666</a>] Fixed
+			permission denied errors during opening popup menus in IE6 under domain relaxation
+			mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1934">#1934</a>] Fixed
+			JavaScript errors when calling Selection.EnsureSelection() in dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1920">#1920</a>] Fixed
+			SSL warning message when opening image and flash dialogs under HTTPS in IE6.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1955">#1955</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/1981">#1981</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/1985">#1985</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1989">#1989</a>]
+			Fixed XHTML source formatting errors in non-IE browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2000">#2000</a>] The #
+			character is now properly encoded in file names returned by the File Browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1945">#1945</a>] New folders
+			and file names are now properly sanitized against control characters. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1944">#1944</a>] Backslash
+			character is now disallowed in current folder path.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1055">#1055</a>] Added
+			logic to override JavaScript errors occurring inside the editing frame due to user
+			added JavaScript code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1647">#1647</a>] Hitting
+			ENTER on list items containing block elements will now create new list item elements,
+			instead of adding further blocks to the same list item.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1411">#1411</a>] Label
+			only combos now get properly grayed out when moving to source view.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2009">#2009</a>] Fixed
+			an important bug regarding styles removal on styled text boundaries, introduced
+			with the 2.6 Beta 1. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2011">#2011</a>] Internal
+			CSS &lt;style&gt; tags where being outputted when FullPage=true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2016">#2016</a>] The Link
+			dialog now properly selects the first field when opening it to modify mailto or
+			anchor links. This problem was also throwing an error in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2021">#2021</a>] The caret
+			will no longer remain behind in the editing area when the placeholder dialog is
+			opened.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2024">#2024</a>] Fixed
+			JavaScript error in IE when the user tries to open dialogs in Source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1853">#1853</a>] Setting
+			ShiftEnterMode to p or div now works correctly when EnterMode is br.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1838">#1838</a>] Fixed
+			the issue where context menus sometimes don't disappear after selecting an option.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2028">#2028</a>] Fixed
+			JavaScript error when EnterMode=br and user tries to insert a page break.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2002">#2002</a>] Fixed
+			the issue where the maximize editor button does not vertically expand the editing
+			area in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1842">#1842</a>] PHP integration:
+			fixed filename encoding problems in file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1832">#1832</a>] Calling
+			FCK.InsertHtml() in non-IE browsers would now activate the document processor as
+			expected.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1998">#1998</a>] The native
+			XMLHttpRequest class is now used in IE, whenever it is available.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1792">#1792</a>] In IE,
+			the browser was able to enter in an infinite loop when working with multiple editors
+			in the same page. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1948">#1948</a>] Some
+			CSS rules are reset to dialog elements to avoid conflict with the page CSS.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1965">#1965</a>] IE was
+			having problems with SpellerPages, causing some errors to be thrown when completing
+			the spell checking in some situations.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2042">#2042</a>] The FitWindow
+			command was throwing an error if executed in an editor where its relative button
+			is not present in the toolbar.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/922">#922</a>] Implemented
+			a generic document processor for &lt;OBJECT&gt; and &lt;EMBED&gt; tags.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1831">#1831</a>] Fixed
+			the issue where the placeholder icon for &lt;EMBED&gt; tags does not always show
+			up in IE7.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2049">#2049</a>] Fixed
+			a deleted cursor CSS attribute in the minified CSS inside fck_dialog_common.js.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1806">#1806</a>] In IE,
+			the caret will not any more move to the previous line when selecting a Format style
+			inside an empty paragraph.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1990">#1990</a>] In IE,
+			dialogs using API calls which deals with the selection, like InsertHtml now can
+			be sure the selection will be placed in the correct position.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1997">#1997</a>] With
+			IE, the first character of table captions where being lost on table creation.</li>
+		<li>The selection and cursor position was not being properly handled when creating some
+			elements like forms and tables.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/662">#662</a>] In the
+			Perl sample files, the GetServerPath function will now calculate the path properly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2208</a>] Added
+			missing translations in Italian language file.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2096">#2096</a>] Added
+			the codepage to basexml file. Filenames with special chars should now display properly.</li>
+	</ul>
+	<h3>
+		Version 2.6 Beta 1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/35">#35</a>] <strong>New
+			(and cool!) floating dialog system</strong>, avoiding problems with popup blockers
+			and enhancing the editor usability.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1886">#1886</a>] <strong>
+			Adobe AIR</strong> compatibility.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/123">#123</a>] Full support
+			for <strong>document.domain</strong> with automatic domain detection.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1622">#1622</a>] New <strong>
+			inline CSS cache</strong> feature, making it possible to avoid downloading the CSS
+			files for the editing area and skins. For that, it is enough to set the EditorAreaCSS,
+			SkinEditorCSS and SkinDialogCSS to string values in the format "/absolute/path/for/urls/|&lt;minified
+			CSS styles". All internal CSS links are already using this feature. </li>
+		<li>New language file for <strong>Canadian French</strong>.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1643">#1643</a>] Resolved
+			several "strict warning" messages in Firefox when running FCKeditor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1522">#1522</a>] The ENTER
+			key will now work properly in IE with the cursor at the start of a formatted block.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1503">#1503</a>] It's
+			possible to define in the Styles that a Style (with an empty class) must be shown
+			selected only when no class is present in the current element, and selecting that
+			item will clear the current class (it does apply to any attribute, not only classes).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/191">#191</a>] The scrollbars
+			are now being properly shown in Firefox Mac when placing FCKeditor inside a hidden
+			div.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/503">#503</a>] Orphaned
+			&lt;li&gt; elements now get properly enclosed in a &lt;ul&gt; on output.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/309">#309</a>] The ENTER
+			key will not any more break &lt;button&gt; elements at the beginning of paragraphs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1654">#1654</a>] The editor
+			was not loading on a specific unknown situation. The breaking point has been removed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1707">#1707</a>] The editor
+			no longer hangs when operating on documents imported from Microsoft Word.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1514">#1514</a>] Floating
+			panels attached to a shared toolbar among multiple FCKeditor instances are no longer
+			misplaced when the editing areas are absolutely or relatively positioned.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1715">#1715</a>] The ShowDropDialog
+			is now enforced only when ForcePasteAsPlainText = true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1336">#1336</a>] Sometimes
+			the autogrow plugin didn't work properly in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1728">#1728</a>] External
+			toolbars are now properly sized in Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1782">#1782</a>] Clicking
+			on radio buttons or checkboxes in the editor in IE will no longer cause lockups
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/805">#805</a>] The FCKConfig.Keystrokes
+			commands where executed even if the command itself was disabled.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/982">#982</a>] The button
+			to empty the box in the "Paste from Word" has been removed as it leads to confusion
+			for some users.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1682">#1682</a>] Editing
+			control elements in Firefox, Opera and Safari now works properly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1613">#1613</a>] The editor
+			was surrounded by a &lt;div&gt; element that wasn't really needed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/676">#676</a>] If a form
+			control was moved in IE after creating it, then it did lose its name.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/738">#738</a>] It wasn't
+			possible to change the type of an existing button.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1854">#1854</a>] Indentation
+			now works inside table cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1717">#1717</a>] The editor
+			was entering on looping on some specific cases when dealing with invalid source
+			markup.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1530">#1530</a>] Pasting
+			text into the "Find what" fields in the Find and Replace dialog would now activate
+			the find and replace buttons.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1828">#1828</a>] The Find/Replace
+			dialog will no longer display wrong starting positions for the match when there
+			are multiple and identical characters preceding the character at the real starting
+			point of the match.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1878">#1878</a>] Fixed
+			a JavaScript error which occurs in the Find/Replace dialog when the user presses
+			"Find" or "Replace" after the "No match found" message has appeared.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1355">#1355</a>] Line
+			breaks and spaces are now conserved when converting to and from the "Formatted"
+			format.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1670">#1670</a>] Improved
+			the background color behind smiley icons and special characters in their corresponding
+			dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1693">#1693</a>] Custom
+			error messages are now properly displayed in the file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/970">#970</a>] The text
+			and value fields in the selection box dialog will no longer extend beyond the dialog
+			limits when the user inputs a very long text or value for one of the selection options.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/479">#479</a>] Fixed the
+			issue where pressing Enter in an &lt;o:p&gt; tag in IE does not generate line breaks.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/481">#481</a>] Fixed the
+			issue where the image preview in image dialog sometimes doesn't display after selecting
+			the image from server browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1488">#1488</a>] PHP integration:
+			the FCKeditor class is now more PHP5/6 friendly ("public" keyword is used instead
+			of depreciated "var").</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1815">#1815</a>] PHP integration:
+			removed closing tag: "?&gt;", so no additional whitespace added when files are included.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1906">#1906</a>] PHP file
+			browser: fixed problems with DetectHtml() function when open_basedir was set.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1871">#1871</a>] PHP file
+			browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1872">#1872</a>] Perl
+			file browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1873">#1873</a>] Python
+			file browser: permissions applied with the chmod command are now configurable.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1572">#1572</a>] ColdFusion
+			integration: fixed issues with setting the editor height.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1692">#1692</a>] ColdFusion
+			file browser: it is possible now to define TempDirectory to avoid issues with GetTempdirectory()
+			returning an empty string.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1379">#1379</a>] ColdFusion
+			file browser: resolved issues with OnRequestEnd.cfm breaking the file browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1509">#1509</a>] InsertHtml()
+			in IE will no longer turn the preceding normal whitespace into &amp;nbsp;.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/958">#958</a>] The AddItem
+			method now has an additional fifth parameter "customData" that will be sent to the
+			Execute method of the command for that menu item, allowing a single command to be
+			used for different menu items..</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1502">#1502</a>] The RemoveFormat
+			command now also removes the attributes from the cleaned text. The list of attributes
+			is configurable with FCKConfig.RemoveAttributes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1596">#1596</a>] On Safari,
+			dialogs have now right-to-left layout when it runs a RTL language, like Arabic.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1344">#1344</a>] Added
+			warning message on Copy and Cut operation failure on IE due to paste permission
+			settings.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1868">#1868</a>] Links
+			to file browser has been changed to avoid requests containing double dots.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1229">#1229</a>] Converting
+			multiple contiguous paragraphs to Formatted will now be merged into a single &lt;PRE&gt;
+			block.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1627">#1627</a>] Samples
+			failed to load from local filesystem in IE7.</li>
+	</ul>
+	<h3>
+		Version 2.5.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li><strong>FCKeditor.Net 2.5</strong> compatibility.</li>
+		<li>JavaScript integration file:
+			<ul>
+				<li>The new "<strong>FCKeditor.ReplaceAllTextareas</strong>" function is being introduced,
+					making it possible to replace many (or unknown) &lt;textarea&gt; elements in a single
+					call. The replacement can be also filtered by CSS class name, or by a custom function
+					evaluator. </li>
+				<li>It is now possible to set the default BasePath for all editor instances by setting
+					<strong>FCKeditor.BasePath</strong>. This is extremely useful when working with
+					the ReplaceAllTextareas function. </li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a href="http://dev.fckeditor.net/ticket/339" target="_blank">#339</a>] [<a
+			href="http://dev.fckeditor.net/ticket/681" target="_blank">#681</a>] The SpellerPages
+			spell checker will now completely ignore the presence of HTML tags in the text.
+		</li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1643" target="_blank">#1643</a>] Resolved
+			several "strict warning" messages in Firefox when running FCKeditor. </li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1603" target="_blank">#1603</a>] Certain
+			specific markup was making FCKeditor entering in a loop, blocking its execution.
+		</li>
+		<li>[<a href="http://dev.fckeditor.net/ticket/1664" target="_blank">#1664</a>] The ENTER
+			key will not any more swap the order of the tags when hit at the end of paragraphs.
+		</li>
+	</ul>
+	<h3>
+		Version 2.5</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The heading options have been moved to the top, in the default settings for the
+			Format combo.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>The focus is now correctly set when working on Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1436">#1436</a>] Nested
+			context menu panels are now correctly closed on Safari.</li>
+		<li>Empty anchors are now properly created on Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1359">#1359</a>] FCKeditor
+			will no longer produce the strange visual effect of creating a selected space and
+			then deleting it in Internet Explorer.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1399">#1399</a>] Removed
+			the empty entry in the language selection box of sample03.html.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1400">#1400</a>] Fixed
+			the issue where the style selection box in sample14.html is not context sensitive.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1401">#1401</a>] Completed
+			Hebrew translation of the user interface.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1409">#1409</a>] Completed
+			Finnish translation of the user interface.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1414">#1414</a>] Fixed
+			the issue where entity code words written inside a &lt;pre&gt; block in Source mode
+			are not converted to the corresponding characters after switching back to editor
+			mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1418">#1418</a>] Fixed
+			the issue where a detached toolbar would flicker when FCKeditor is being loaded.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1419">#1419</a>] Fixed
+			the issue where pressing Delete in the middle of two lists would incorrectly move
+			contents after the lists to the character position.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1420">#1420</a>] Fixed
+			the issue where empty list items can become collapsed and uneditable when it has
+			one of more indented list items directly under it. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1431">#1431</a>] Fixed
+			the issue where pressing Enter in a &lt;pre&gt; block in Internet Explorer would
+			move the caret one space forward instead of sending it to the next line.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1472">#1472</a>] Completed
+			Arabic translation of the user interface.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1474">#1474</a>] Fixed
+			the issue where reloading a page containing FCKeditor may provoke JavaScript errors
+			in Internet Explorer.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1478">#1478</a>] Fixed
+			the issue where parsing fckstyles.xml fails if the file contains no &lt;style&gt;
+			nodes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1491">#1491</a>] Fixed
+			the issue where FCKeditor causes the selection to include an "end of line" character
+			in list items even though the list item is empty.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1496">#1496</a>] Fixed
+			the issue where attributes under &lt;area&gt; and &lt;map&gt; nodes are destroyed
+			or left unprotected when switching to and from Source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1500">#1500</a>] Fixed
+			the issue where the function _FCK_PaddingNodeListener() is called excessively which
+			negatively affects performance.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1514">#1514</a>] Fixed
+			the issue where floating menus are incorrectly positioned when the toolbar or the
+			editor frame are not static positioned.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1518">#1518</a>] Fixed
+			the issue where excessive &lt;BR&gt; nodes are not removed after a paragraph is
+			split when creating lists.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1521">#1521</a>] Fixed
+			JavaScript error and erratic behavior of the Replace dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1524">#1524</a>] Fixed
+			the issue where the caret jumps to the beginning or end of a list block and when
+			user is trying to select the end of a list item.</li>
+		<li>Completed Simplified Chinese translation of the user interface.</li>
+		<li>Completed Estonian translation of the user interface.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1406">#1406</a>] Editor
+			was always "dirty" if flash is available in the contents.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1561">#1561</a>] Non standard
+			elements are now properly applied if defined in the styles XML file.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1412">#1412</a>] The _QuickUploadLanguage
+			value is now work properly for Perl.</li>
+		<li>Several compatibility fixes for Firefox 3 (Beta 1):
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1558">#1558</a>] Nested
+					context menu close properly when one of their options is selected.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1556">#1556</a>] Dialogs
+					contents are now showing completely, without scrollbar.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1559">#1559</a>] It is
+					not possible to have more than one panel opened at the same time.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1554">#1554</a>] Links
+					now get underlined.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1557">#1557</a>] The "Automatic"
+					and "More colors..." buttons were improperly styled in the color selector panels
+					(Opera too).</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1462">#1462</a>] The enter
+					key will not any more scroll the main window.</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1562">#1562</a>] Fixed
+			the issue where empty paragraphs are added around page breaks each time the user
+			switches to Source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1578">#1578</a>] The editor
+			will now scroll correctly when hitting enter in front of a paragraph.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1579">#1579</a>] Fixed
+			the issue where the create table and table properties dialogs are too narrow for
+			certain translations.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1580">#1580</a>] Completed
+			Polish translation of the user interface.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1591">#1591</a>] Fixed
+			JavaScript error when using the blockquote command in an empty document in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1592">#1592</a>] Fixed
+			the issue where attempting to remove a blockquote with an empty paragraph would
+			leave behind an empty blockquote IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1594">#1594</a>] Undo/Redo
+			will now work properly for the color selectors.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1597">#1597</a>] The color
+			boxes are now properly rendered in the color selector panels on sample14.html.</li>
+	</ul>
+	<h3>
+		Version 2.5 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/624">#624</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/634">#634</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/1300">#1300</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1301">#1301</a>]
+			Official compatibility support with <strong>Opera 9.50</strong> and <strong>Safari 3</strong>
+			(WebKit based browsers actually). These browsers are still in Beta, but we are confident
+			that we'll have amazing results as soon as they get stable. We are continuously
+			collaborating with Opera Software and Apple to bring a wonderful FCKeditor experience
+			over their browser platforms.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/494">#494</a>] Introduced
+			the <strong>new Style System</strong>. We are not anymore relaying on browser features
+			to apply and remove styles, which guarantees that the editor will <strong>behave in
+				the same way in all browsers</strong>. It is an incredibly flexible system,
+			which aims to fit all developer's needs, from Flash content or HTML4 to XHTML 1.0
+			Strict or XHTML 1.1:
+			<ul>
+				<li>All basic formatting features, like Bold and Italic, can be precisely controlled
+					by using the configuration file (<b>CoreStyles</b> setting). It means that now,
+					the Bold button, for example, can produce &lt;b&gt;, &lt;strong&gt;, &lt;span class...&gt;,
+					&lt;span style...&gt; or anything the developer prefers.</li>
+				<li>Again with the <b>CoreStyles</b> setting, each block format, font, size, and even
+					the color pickers can precisely reflect end developer's needs.</li>
+				<li>Because of the above changes, font sizes are much more flexible. <b>Any kind of
+					font unit</b> can be used, including a mix of units.</li>
+				<li>All styles, including toolbar bottom styles, are precisely controlled when being
+					applied to the document. FCKeditor uses an element table derived from the <b>W3C XHTML
+						DTDs</b> to precisely create the elements, guarantee standards compliant code.</li>
+				<li><b>No more &lt;font&gt; tags</b>... well... actually, the system is so flexible
+					that it is up to you to use them or not.</li>
+				<li>It is possible to configure FCKeditor to produce a truly <b>semantic aware </b>and<b>
+					XHTML 1.1 compliant </b>code. Check out sample14.html.</li>
+				<li>It's also possible to precisely control which inline elements must be removed with
+					the &quot;Remove All&quot; button, by using the &quot;<b>RemoveFormatTags</b>&quot;
+					setting.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1231">#1231</a>] [<a
+					target="_blank" href="http://dev.fckeditor.net/ticket/160">#160</a>] Paragraph <b>indentation</b>
+					and <b>justification</b> now uses style attributes and don't create unnecessary
+					elements, and &lt;blockquote&gt; is not anymore used for it. Now, even CSS classes
+					can be used to indent or align text.</li>
+				<li>All paragraph formatting features work well when EnterMode=br.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/172">#172</a>] All paragraph
+					formatting features work well when list items too.</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1197">#1197</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/132">#132</a>] The toolbar
+			now presents a <strong>new button for Blockquote</strong>. The indentation button
+			will not anymore be used for that.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/125">#125</a>] Table's
+			<strong>columns size can now be changed by dragging on cell borders</strong>, with
+			the "dragresizetable" plugin. </li>
+		<li>The EditorAreaCSS config option can now also be set to a string of paths separated
+			by commas.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/212">#212</a>] New "<strong>Show
+			Blocks</strong>" command button in toolbar to show block details in the editing
+			area. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/915">#915</a>] The <strong>
+			undo/redo system has been revamped</strong> to work the same across Internet Explorer
+			and Gecko-based browsers (e.g. Firefox). A number of critical bugs in the undo/redo
+			system are also fixed. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/194">#194</a>] The editor
+			now uses the <strong>Data Processor</strong> technology, which makes it possible
+			to handle different input formats. A sample of it may be found at "editor/plugins/bbcode/_sample",
+			that shows some simple BBCode support. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/145">#145</a>] The "htaccess.txt"
+			file has been renamed to ".htaccess" as it doesn't bring security concerns, being
+			active out of the box.</li>
+		<li>File Browser and Quick Upload changes:
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/163">#163</a>] <span
+					style="color: #ff0000"><strong>Attention:</strong></span> The default connector
+					in fckconfig.js has been changed from ASP to PHP. If you are using ASP remember
+					to change the _FileBrowserLanguage and _QuickUploadLanguage settings in your fckconfig.js.
+					[<a target="_blank" href="http://dev.fckeditor.net/ticket/454">#454</a>] The file
+					browser and upload connectors have been unified so they can reuse the same configuration
+					settings.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/865">#865</a>] The ASP
+					and PHP connectors have been improved so it's easy to select the location of the
+					destination folder for each file type, and it's no longer necessary to use the "file",
+					"image", "flash" subfolders<br />
+					<span style="color: #ff0000"><strong>Attention:</strong></span> The location of
+					all the connectors have been changed in the fckconfig.js file. Please check your
+					settings to match the current ones. Also review carefully the config file for your
+					server language. </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/688">#688</a>] Now the
+					Perl quick upload is available. </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/575">#575</a>] The Python
+					connector has been rewritten as a WSGI app to be fully compatible with the latest
+					python frameworks and servers. The QuickUpload feature has been added as well as
+					all the features available in the PHP connector. Thanks to Mariano Reingart.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/561">#561</a>] The ASP
+					connector provides an AbsolutePath setting so it's possible to set the url to a
+					full domain or a relative path and specify that way the physical folder where the
+					files are stored..</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/333">#333</a>] The Quick
+					Upload now can use the same ServerPath parameter as the full connector.</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/199">#199</a>] The AllowedCommands
+					configuration setting is available in the asp and php connectors so it's possible
+					to disallow the upload of files (although the "select file" button will still be
+					available in the file browser).</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/100">#100</a>] A new configuration
+			directive "FCKConfig.EditorAreaStyles" has been implemented to allow setting editing
+			area styles from JavaScript. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/102">#102</a>] HTML code
+			generated by the "Paste As Plain Text" feature now obeys the EnterMode setting.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1266">#1266</a>] Introducing
+			the HtmlEncodeOutput setting to instruct the editor to HTML-encode some characters
+			(&amp;, &lt; and &gt;) in the posted data.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/357">#357</a>] Added a
+			"Remove Anchor" option in the context menu for anchors. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1060">#1060</a>] Compatibility
+			checks with Firefox 3.0 Alpha. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/817">#817</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/1077">#1077</a>] New "Merge
+			Down/Right" commands for merging tables cells in non-Gecko browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1288">#1288</a>] The "More
+			Colors..." button in color selector popup has been made optional and configurable
+			by the <strong>EnableMoreFontColors</strong> option. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/356">#356</a>] The <strong>
+			Find and Replace</strong> dialogs are now unified into a single dialog with tabs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/549">#549</a>] Added a
+			'None' option to the FCKConfig.ToolbarLocation option to allow for hidden toolbars.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1313">#1313</a>] An XHTML
+			1.1 target editor sample has been created as sample14.html. </li>
+		<li>The ASP, ColdFusion and PHP integration have been aligned to our standards.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/71">#71</a>] [<a target="_blank"
+			href="http://dev.fckeditor.net/ticket/243">#243</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/267">#267</a>]
+			The editor now takes care to not create invalid nested block elements, like creating
+			&lt;form&gt; or &lt;hr&gt; inside &lt;p&gt;. &nbsp;</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1511298&group_id=75348&atid=543655">SF
+			Patch 1511298</a>] The CF Component failed on CFMX 6.0</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/639">#639</a>] If the
+			FCKConfig.DefaultLinkTarget setting was missing in fckconfig.js the links has target="undefined".</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/497">#497</a>] Fixed EMBED
+			attributes handling in IE.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1315722&group_id=75348&atid=543655">SF
+			Patch 1315722</a>] Avoid getting a cached version of the folder contents after uploading
+			a file</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1386086&group_id=75348&atid=543655">SF
+			Patch 1386086</a>] The php connector has been protected so mkdir doesn't fail if
+			there are double slashes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/943">#943</a>] The PHP
+			connector now specifies that the included files are relative to the current path.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/560">#560</a>] The PHP
+			connector will work better if the connector or the userfiles folder is a symlink.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/784">#784</a>] Fixed a
+			non initialized $php_errormsg in the PHP connector.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/802">#802</a>] The replace
+			dialog will now advance its searching position correctly and is able to search for
+			strings spanning across multiple inline tags.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/944">#944</a>] The _samples
+			didn't work directly from the Mac filesystem.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/946">#946</a>] Toolbar
+			images didn't show in non-IE browsers if the path contained a space.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/291">#291</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/395">#395</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/932">#932</a>] Clicking outside the editor
+			it was possible to paste or apply formatting to the rest of the page in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/137">#137</a>] Fixed FCKConfig.TabSpaces
+			being ignored, and weird behaviors when pressing tab in edit source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/268">#268</a>] Fixed special
+			XHTML characters present in event attribute values being converted inappropriately
+			when switching to source view.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/272">#272</a>] The toolbar
+			was cut sometimes in IE to just one row if there are multiple instances of the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/515">#515</a>] Tables
+			in Firefox didn't inherit font styles properly in Standards mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/321">#321</a>] If FCKeditor
+			is initially hidden in Firefox it will no longer be necessary to call the oEditor.MakeEditable()
+			function.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/299">#299</a>] The 'Browse
+			Server' button in the Image and Flash dialogs was a little too high.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/931">#931</a>] The BodyId
+			and BodyClass configuration settings weren't applied in the preview window.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/583">#583</a>] The "noWrap"
+			attribute for table cells was getting an empty value in Firefox. Thanks to geirhelge.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/141">#141</a>] Fixed incorrect
+			startup focus in Internet Explorer after page reloads. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/143">#143</a>] Fixed browser
+			lockup when the user writes &lt;!--{PS..x}&gt; into the editor in source mode. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/174">#174</a>] Fixed incorrect
+			positioning of FCKeditor in full screen mode. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/978">#978</a>] Fixed a
+			SpellerPages error with ColdFusion when no suggestions where available for a word.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/977">#977</a>] The "shape"
+			attribute of &lt;area&gt; had its value changed to uppercase in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/996">#996</a>] "OnPaste"
+			event listeners will now get executed only once.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/289">#289</a>] Removed
+			debugging popups from page load regarding JavaScript and CSS loading errors.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/328">#328</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/346">#346</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/404">#404</a>] Fixed a number of problems
+			regarding &lt;pre&gt; blocks:
+			<ol>
+				<li>Leading whitespaces and line breaks in &lt;pre&gt; blocks are trimmed when the user
+					switches between editor mode and source mode;</li>
+				<li>Pressing Enter inside a &lt;pre&gt; block would split the block into two, but the
+					expected behavior is simply inserting a line break;</li>
+				<li>Simple line breaks inside &lt;pre&gt; blocks entered in source mode are being turned
+					into &lt;br&gt; tags when the user switches to editor mode and back.</li>
+			</ol>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/581">#581</a>] Fixed the
+			issue where the "Maximize the editor size" toolbar button stops working if any of
+			the following occurs:
+			<ol>
+				<li>There exists a form input whose name or id is "style" in FCKeditor's host form;</li>
+				<li>There exists a form input whose name or id is "className" in FCKeditor's host form;</li>
+				<li>There exists a form and a form input whose name of id is "style" in the editing
+					frame.</li>
+			</ol>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/183">#183</a>] Fixed the
+			issue when FCKeditor is being executed in a custom application with the WebBrowser
+			ActiveX control, hiding the WebBrowser control would incorrectly invoke FCKeditor's
+			cleanup routines, causing FCKeditor to stop working.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/539">#539</a>] Fixed the
+			issue where right clicking on a table inside the editing frame in Firefox would
+			cause the editor the scroll to the top of the document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/523">#523</a>] Fixed the
+			issue where, under certain circumstances, FCKeditor would obtain focus at startup
+			even though FCKConfig.StartupFocus is set to false. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/393">#393</a>] Fixed the
+			issue where if an inline tag is at the end of the document, the user would have
+			no way of escaping from the inline tag if he continues typing at the end of the
+			document. FCKeditor's behaviors regarding inline tags has been made to be more like
+			MS Word's:
+			<ol>
+				<li>If the caret is moved to the end of a hyperlink by the keyboard, then hyperlink
+					mode is disabled. </li>
+				<li>If the caret is moved to the end of other styled inline tags by any key other than
+					the End key (like bold text or italic text), the original bold/italic/... modes
+					would continue to be effective. </li>
+				<li>If the caret is moved to the end of other styled inline tags by the End key, all
+					style tag modes (e.g. bold, italic, underline, etc.) would be canceled. This is
+					not consistent with MS Word, but provides a convenient way for the user to escape
+					the inline tag at the end of a line.</li>
+			</ol>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/338">#338</a>] Fixed the
+			issue where the configuration directive FCKConfig.ForcePasteAsPlainText is ignored
+			when new contents are pasted into the editor via drag-and drop from outside of the
+			editor. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1026">#1026</a>] Fixed
+			the issue where the cursor or selection positions are not restored with undo/redo
+			commands correctly in IE, under some circumstances. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1160">#1160</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/1184">#1184</a>] Home, End
+			and Tab keys are working properly for numeric fields in dialogs. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/68">#68</a>] The style
+			system now properly handles Format styles when EnterMode=br.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/525">#525</a>] The union
+			of successive DIVs will work properly now if EnterMode!=div.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1227">#1227</a>] The color
+			commands used an unnecessary temporary variable. Thanks to Matthias Miller</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/67">#67</a>] [<a target="_blank"
+			href="http://dev.fckeditor.net/ticket/277">#277</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/427">#427</a>]
+			[<a target="_blank" href="http://dev.fckeditor.net/ticket/428">#428</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/965">#965</a>] [<a target="_blank" href="http://dev.fckeditor.net/ticket/1178">#1178</a>]
+			[<a target="_blank" href="http://dev.fckeditor.net/ticket/1267">#1267</a>] The list
+			insertion/removal/indent/outdent logic in FCKeditor has been rewritten, such that:
+			<ol>
+				<li>Text separated by &lt;br&gt; will always be treated as separate items during list
+					insertion regardless of browser;</li>
+				<li>List removal will now always obey the FCKConfig.EnterMode setting;</li>
+				<li>List indentation will be XHTML 1.1 compliant - all child elements under an &lt;ol&gt;
+					or &lt;ul&gt; must be &lt;li&gt; nodes;</li>
+				<li>IE editor hacks like &lt;ul type=&quot;1&quot;&gt; will no longer appear;</li>
+				<li>Excessive &lt;div&gt; nodes are no longer inserted into list items due to alignment
+					changes.</li>
+			</ol>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/205">#205</a>] Fixed the
+			issue where visible &lt;br&gt; tags at the end of paragraphs are incorrectly removed
+			after switching to and from source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1050">#1050</a>] Fixed
+			a minor PHP/XML incompatibility bug in editor/dialog/fck_docprops.html.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/462">#462</a>] Fixed an
+			algorithm bug in switching from source mode to WYSIWYG mode which causes the browser
+			to spin up and freeze for broken HTML code inputs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1019">#1019</a>] Table
+			command buttons are now disabled when the current selection is not inside a table.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/135">#135</a>] Fixed the
+			issue where context menus are misplaced in FCKeditor when FCKeditor is created inside
+			a &lt;div&gt; node with scrolling. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1067">#1067</a>] Fixed
+			the issue where context menus are misplaced in Safari when FCKeditor is scrolled
+			down.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1081">#1081</a>] Fixed
+			the issue where undoing table deletion in IE7 would cause JavaScript errors.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1061">#1061</a>] Fixed
+			the issue where backspace and delete cannot delete special characters in Firefox
+			under some circumstances.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/403">#403</a>] Fixed the
+			issue where switching to and from source mode in full page mode under IE would add
+			excessive line breaks to &lt;style&gt; blocks.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/121">#121</a>] Fixed the
+			issue where maximizing FCKeditor inside a frameset would resize FCKeditor to the
+			whole window's size instead of just the container frame's size.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1093">#1093</a>] Fixed
+			the issue where pressing Enter inside an inline tag would not create a new paragraph
+			correctly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1089">#1089</a>] Fixed
+			the issue where pressing Enter inside a &lt;pre&gt; block do not generate visible
+			line breaks in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/332">#332</a>] Hitting
+			Enter when the caret is at the end of a hyperlink will no longer continue the link
+			at the new paragraph.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1121">#1121</a>] Hitting
+			Enter with FCKConfig.EnterMode=br will now scroll the document correctly when the
+			new lines have exceeded the lower boundary of the editor frame.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1063">#1063</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/1084">#1084</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/1092">#1092</a>] Fixed a few Norwegian
+			language translation errors.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1148">#1148</a>] Fixed
+			the issue where the &quot;Automatic&quot; and &quot;More Colors...&quot; buttons
+			in the color selection panel are not centered in Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1187">#1187</a>] Fixed
+			the issue where the &quot;Paste as plain text&quot; command cannot be undone in
+			non-IE browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1222">#1222</a>] Ctrl-Backspace
+			operations will now save undo snapshots in all browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1223">#1223</a>] Fixed
+			the issue where the insert link dialog would save multiple undo snapshots for a
+			single operation.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/247">#247</a>] Fixed the
+			issue where deleting everything in the document in IE would create an empty &lt;p&gt;
+			block in the document regardless of EnterMode setting. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1280">#1280</a>] Fixed
+			the issue where opening a combo box will cause the editor frames to lose focus when
+			there are multiple editors in the same document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/363">#363</a>] Fixed the
+			issue where the Find dialog does not work under Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/50">#50</a>] Fixed the
+			issue where the Paste button is always disabled in Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/389">#389</a>] Pasting
+			text with comments from Word won't generate errors in IE, thanks to the idea from
+			Swift.</li>
+		<li>The pasting area in the Paste from Word dialog is focused on initial load</li>
+		<li>Some fixes related to html comment handling in the Word clean up routine</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1303">#1303</a>] &lt;col&gt;
+			is correctly treated as an empty element.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/969">#969</a>] Removed
+			unused files (fcknumericfield.htc and moz-bindings.xml).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1166">#1166</a>] Fixed
+			the issue where &lt;meta&gt; tags are incorrectly outputted with closing tags in
+			full page mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1200">#1200</a>] Fixed
+			the issue where context menus sometimes disappear prematurely before the user can
+			click on any items in Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1315">#1315</a>] Fixed
+			the issue where the source view text area in Safari is displayed with an excessive
+			blue border.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1201">#1201</a>] Fixed
+			the issue where hitting Backspace or Delete inside a table cell deletes the table
+			cell instead of its contents in Opera.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1311">#1311</a>] Fixed
+			the issue where undoing and redoing a special character insertion would send the
+			caret to incorrect positions. (e.g. the beginning of document)</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/923">#923</a>] Font colors
+			are now properly applied on links.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1316">#1316</a>] Fixed
+			the issue where the image dialog expands to a size too big in Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1306">#1306</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/894">#894</a>] The undo system
+			can now undo text formatting steps like setting fonts to bold and italic.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/95">#95</a>] Fixed the
+			issue where FCKeditor breaks &lt;meta&gt; tags in full page mode in some circumstances.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/175">#175</a>] Fixed the
+			issue where entering an email address with a '%' sign in the insert link dialog
+			would cause JavaScript error.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/180">#180</a>] Improved
+			backward compatibility with older PHP versions. FCKeditor can now work with PHP
+			versions down to 4.0.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/192">#192</a>] Document
+			modifying actions from the FCKeditor JavaScript API will now save undo steps.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/246">#246</a>] Using text
+			formatting commands in EnterMode=div will no longer cause tags to randomly disappear.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/327">#327</a>] It is no
+			longer possible for the browser's back action to misfire when a user presses backspace
+			while an image is being selected in FCKeditor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/362">#362</a>] Ctrl-Backspace
+			now works in FCKeditor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/390">#390</a>] Text alignment
+			and justification commands now respects EnterMode=br paragraph rules.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/534">#534</a>] Pressing
+			Ctrl-End while the document contains a list towards the end will no longer make
+			the cursor disappear.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/906">#906</a>] It is now
+			possible to have XHTML 1.0 Strict compliant output from a document pasted from Word.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/929">#929</a>] Pressing
+			the Enter key will now produce an undo step.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/934">#934</a>] Fixed the
+			"Cannot execute code from a freed script" error in IE from editor dialogs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/942">#942</a>] Server
+			based spell checking with ColdFusion integration no longer breaks fir non en_US
+			languages.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/942">#1056</a>] Deleting
+			everything in the editor document and moving the cursor around will no longer leave
+			the cursor hanging beyond the top of the editor document.</li>
+	</ul>
+	<p>
+		# This version has been <a href="http://dev.fckeditor.net/wiki/SD/COE">partially sponsored</a>
+		by the <a href="http://www.coe.int/">Council of Europe</a>.
+	</p>
+	<h3>
+		Version 2.4.3</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>It is now possible to set the default target when creating links, with the new "<strong>DefaultLinkTarget</strong>"
+			setting. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/436">#436</a>] The new
+			"<strong>FirefoxSpellChecker</strong>" setting is available, to enable/disable the
+			Firefox built-in spellchecker while typing. Even if word suggestions will not appear
+			in the FCKeditor context menu, this feature is useful to quickly identify misspelled
+			words.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/311">#311</a>] The new
+			"<strong>BrowserContextMenuOnCtrl</strong>" setting is being introduced, to enable/disable
+			the ability of displaying the default browser's context menu when right-clicking
+			with the CTRL key pressed.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/300">#300</a>] The fck_internal.css
+			file was not validating with the W3C CSS Validation Service.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/336">#336</a>] Ordered
+			list didn't keep the Type attribute properly (it was converted to lowercase when
+			the properties dialog was opened again).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/318">#318</a>] Multiple
+			linked images are merged in a single link in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/350">#350</a>] The &lt;marquee&gt;
+			element will no longer append unwanted &lt;p&gt;&amp;nbsp;&lt;/p&gt; to the code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/351">#351</a>] The content
+			was being lost for images or comments only HTML inserted directly in the editor
+			source or loaded in the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/388">#388</a>] Creating
+			links in lines separated by &lt;br&gt; in IE can lead to a merge of the links.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/325">#325</a>] Calling
+			the GetXHTML can distort visually the rendering in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/391">#391</a>] When ToolbarLocation=Out,
+			a "Security Warning" alert was being shown in IE if under https. Thanks to reister.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/360">#360</a>] Form "name"
+			was being set to "[object]" if it contained an element with id="name".</li>
+		<li>Fixed a type that was breaking the ColdFusion SpellerPages integration file when
+			no spelling errors were found.</li>
+		<li>The ColdFusion SpellerPages integration was not working it Aspell was installed
+			in a directory with spaces in the name.</li>
+		<li>Added option to SpellerPages to ignore "alt" attributes.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/451">#451</a>] Classes
+			for images in IE didn't take effect immediately.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/430">#430</a>] Links with
+			a class did generate a span in Firefox when removing them.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/274">#274</a>] The PHP
+			quick upload still tried to use the uppercased types instead of the lowercased ones.
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/416">#416</a>] The PHP
+			quick upload didn't check for the existence of the folder before saving.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/467">#467</a>] If InsertHtml
+			was called in IE with a comment (or any protected source at the beginning) it was
+			lost.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1518766&group_id=75348&atid=543653">SF
+			BUG-1518766</a>] Mozilla 1.7.13 wasn't recognized properly as an old Gecko engine.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/324">#324</a>] Improperly
+			nested tags could lead to a crash in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/455">#455</a>] Files and
+			folders with non-ANSI names were returned with a double UTF-8 encoding in the PHP
+			File Manager.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/273">#273</a>] The extensions
+			"sh", "shtml", "shtm" and "phtm" have been added to the list of denied extensions
+			on upload.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/453">#453</a>] No more
+			errors when hitting del inside an empty table cell.</li>
+		<li>The perl connector cgi file has been changed to Unix line endings.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/202">#202</a>] Regression:
+			The HR tag will not anymore break the contents loaded in the editor. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/508">#508</a>] The HR
+			command had a typo.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/505">#505</a>] Regression:
+			IE crashed if a table caption was deleted.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/82">#82</a>] [<a target="_blank"
+			href="http://dev.fckeditor.net/ticket/359">#359</a>] &lt;object&gt; and &lt;embed&gt;
+			tags are not anymore lost in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/493">#493</a>] If the
+			containing form had a button named "submit" the "Save" command didn't work in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/414">#414</a>] If tracing
+			was globally enabled in Asp.Net 2.0 then the Asp.Net connector did fail.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/520">#520</a>] The "Select
+			Field" properties dialog was not correctly handling select options with &amp;, &lt;
+			and &gt;.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/258">#258</a>] The Asp
+			integration didn't pass boolean values in English, using instead the locale of the
+			server and failing.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/487">#487</a>] If an image
+			with dimensions set as styles was opened with the image manager and then the dialog
+			was canceled the dimensions in the style were lost.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#220</a>] The creation
+			of links or anchors in a selection that results on more than a single link created
+			will not anymore leave temporary links in the source. All links will be defined
+			as expected.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/220">#182</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/220">#261</a>] [<a target="_blank"
+				href="http://dev.fckeditor.net/ticket/220">#511</a>] Special characters, like
+			percent signs or accented chars, and spaces are now correctly returned by the File
+			Browser.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/281">#281</a>] Custom
+			toolbar buttons now render correctly in all skins.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/527">#527</a>] If the
+			configuration for a toolbar isn't fully valid, try to keep on parsing it.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/187">#187</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/435">#435</a>] [<a target="_blank"
+				href="https://sourceforge.net/tracker/?func=detail&aid=1612978&group_id=75348&atid=543653">SF
+				BUG-1612978</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1163511&group_id=75348&atid=543653">SF
+					BUG-1163511</a>] Updated the configuration options in the ColdFusion integration
+			files.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1726781&group_id=75348&atid=543655">SF
+			Patch-1726781</a>] Updated the upload class for asp to handle large files and other
+			data in the forms. Thanks to NetRube.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/225">#225</a>] With ColdFusion,
+			the target directory is now being automatically created if needed when "quick uploading".
+			Thanks to sirmeili.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/295">#295</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/510">#510</a>] Corrected some
+			path resolution issues with the File Browser connector for ColdFusion.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/239">#239</a>] The &lt;xml&gt;
+			tag will not anymore cause troubles.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1721787&group_id=75348&atid=543653">SF
+			BUG-1721787</a>] If the editor is run from a virtual dir, the PHP connector will
+			detect that and avoid generating a wrong folder.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/431">#431</a>] PHP: The
+			File Browser now displays an error message when it is not able to create the configured
+			target directory for files (instead of sending broken XML responses).</li>
+	</ul>
+	<h3>
+		Version 2.4.2</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/279">#279</a>] The UTF-8
+			BOM was being included in the wrong files, affecting mainly PHP installations.</li>
+	</ul>
+	<h3>
+		Version 2.4.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/118">#118</a>] The SelectAll
+			command now is available in Source Mode.</li>
+		<li>The new open source FCKpackager sub-project is now available. It replaces the FCKeditor.Packager
+			software to compact the editor source.</li>
+		<li>With Firefox, if a paste execution is blocked by the browser security settings,
+			the new "Paste" popup is shown to the user to complete the pasting operation. </li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>Various fixes to the ColdFusion File Browser connector.</li>
+		<li>We are now pointing the download of ieSpell to their pages, instead to a direct
+			file download from one of their mirrors. This disables the ability of "click and
+			go" (which can still be achieved by pointing the download to a file in your server),
+			but removes any troubles with mirrors link changes (and they change it frequently).</li>
+		<li>The Word cleanup has been changed to remove "display:none" tags that may come from
+			Word.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1659613&group_id=75348">SF
+			BUG-1659613</a>] The 2.4 version introduced a bug in the flash handling code that
+			generated out of memory errors in IE7.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1660456&group_id=75348">SF
+			BUG-1660456</a>] The icons in context menus were draggable.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1653009&group_id=75348">SF
+			BUG-1653009</a>] If the server is configured to process html files as asp then it
+			generated ASP error 0138.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1288609&group_id=75348">SF
+			BUG-1288609</a>] The content of iframes is now preserved.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1245504&group_id=75348">SF
+			BUG-1245504</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1652240&group_id=75348">SF
+				BUG-1652240</a>] Flash files without the .swf extension weren't recognized upon
+			reload.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1649753&group_id=75348&atid=543655">SF
+			PATCH-1649753</a>] Node selection for text didn't work in IE. Thanks to yurik dot
+			m.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1573191&group_id=75348&atid=543653">SF
+			BUG-1573191</a>] The Html code inserted with FCK.InsertHtml didn't have the same
+			protection for special tags.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/110">#110</a>] The OK
+			button in dialogs had its width set as an inline style.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/113">#113</a>] [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/94">#94</a>] [<a target="_blank"
+				href="https://sourceforge.net/tracker/?func=detail&aid=1659270&group_id=75348&atid=543653">SF
+				BUG-1659270</a>] ForcePasteAsPlainText didn't work in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/114">#114</a>] The correct
+			entity is now used to fill empty blocks when ProcessHTMLEntities is disabled.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/90">#90</a>] The editor
+			was wrongly removing some &lt;br&gt; tags from the code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/139">#139</a>] The CTRL+F
+			and CTRL+S keystroke default behaviors are now preserved.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/138">#138</a>] We are
+			not providing a CTRL + ALT combination in the default configuration file because
+			it may be incompatible with some keyboard layouts. So, the CTRL + ALT + S combination
+			has been changed to CTRL + SHIFT + S.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/129">#129</a>] In IE,
+			it was not possible to paste if "Allow paste operation via script" was disabled
+			in the browser security settings.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/112">#112</a>] The enter
+			key now behaves correctly on lists with Firefox, when the EnterMode is set to 'br'.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/152">#152</a>] Invalid
+			self-closing tags are now being fixed before loading. </li>
+		<li>A few tags were being ignored to the check for required contents (not getting stripped
+			out, as expected). Fixed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/202">#202</a>] The HR
+			tag will not anymore break the contents loaded in the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/211">#211</a>] Some invalid
+			inputs, like "&lt;p&gt;" where making the caret disappear in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/99">#99</a>] The &lt;div&gt;
+			element is now considered a block container if EnterMode=p|br. It acts like a simple
+			block only if EnterMode=div.</li>
+		<li>Hidden fields will now show up as an icon in IE, instead of a normal text field.
+			They are also selectable and draggable, in all browsers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/213">#213</a>] Styles
+			are now preserved when hitting enter at the end of a paragraph.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/77">#77</a>] If ShiftEnterMode
+			is set to a block tag (p or div), the desired block creation in now enforced, instead
+			of copying the current block (which is still the behavior of the simple enter).</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/209">#209</a>] Links and
+			images URLs will now be correctly preserved with Netscape 7.1.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/165">#165</a>] The enter
+			key now honors the EnterMode settings when outdenting a list item.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/190">#190</a>] Toolbars
+			may be wrongly positioned. Fixed.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/254">#254</a>] The IgnoreEmptyParagraphValue
+			setting is now correctly handled in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/254">#248</a>] The behavior
+			of the backspace key has been fixed on some very specific cases.</li>
+	</ul>
+	<h3>
+		Version 2.4</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1329273&group_id=75348&atid=543656">SF
+			Feature-1329273</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1456005&group_id=75348&atid=543656">SF
+				Feature-1456005</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1315002&group_id=75348&atid=543653">SF
+					BUG-1315002</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1350180&group_id=75348&atid=543653">SF
+						BUG-1350180</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1450689&group_id=75348&atid=543653">SF
+							BUG-1450689</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1461033&group_id=75348&atid=543653">SF
+								BUG-1461033</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1510111&group_id=75348&atid=543653">SF
+									BUG-1510111</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1203560&group_id=75348&atid=543653">SF
+										BUG-1203560</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1564838&group_id=75348&atid=543653">SF
+											BUG-1564838</a>] The advance <strong>Enter Key Handler</strong>
+			is now being introduced. It gives you complete freedom to configure the editor to
+			generate <strong>&lt;p&gt;, &lt;div&gt; or &lt;br&gt;</strong> when the user uses
+			both the [Enter] and [Shift]+[Enter] keys. The new "EnterMode" and "ShiftEnterMode"
+			settings can be use to control its behavior. It also guarantees that all browsers
+			will generate the same output. </li>
+		<li>The new and powerful <strong>Keyboard Accelerator System</strong> is being introduced.
+			You can now precisely control the commands to execute when some key combinations
+			are activated by the user. It guarantees that all browsers will have the same behavior
+			regarding the shortcuts.<br />
+			It also makes it possible to remove buttons from the toolbar and still invoke their
+			features by using the keyboard instead.
+			<br />
+			It also blocks all default "CTRL based shortcuts" imposed by the browsers, so if
+			you don't want users to underline text, just remove the CTRL+U combination from
+			the keystrokes table. Take a look at the FCKConfig.Keystrokes setting in the fckconfig.js
+			file. </li>
+		<li>The new "<strong>ProtectedTags</strong>" configuration option is being introduced.
+			It will accept a list of tags (separated by a pipe "|"), which will have no effect
+			during editing, but will still be part of the document DOM. This can be used mainly
+			for non HTML standard, custom tags.</li>
+		<li>Dialog box commands can now open resizable dialogs (by setting oCommand.Resizable
+			= true).</li>
+		<li>Updated support for AFP. Thanks to Soenke Freitag.</li>
+		<li>New language file:<ul>
+			<li><strong>Afrikaans</strong> (by Willem Petrus Botha). </li>
+		</ul>
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1456343&group_id=75348&atid=543655">SF
+			Patch-1456343</a>] New sample file showing how to dynamically exchange a textarea
+			and an instance of FCKeditor. Thanks to Finn Hakansson</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1496115&group_id=75348&atid=543655">SF
+			Patch-1496115</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1588578&group_id=75348&atid=543653">SF
+				BUG-1588578</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1376534&group_id=75348&atid=543653">SF
+					BUG-1376534</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1343506&group_id=75348&atid=543653">SF
+						BUG-1343506</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1211065&group_id=75348&atid=543656">SF
+							Feature-1211065</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=949144&group_id=75348&atid=543656">SF
+								Feature-949144</a>] The content of anchors are shown and preserved
+			on creation. * </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1587175&group_id=75348&atid=543656">SF
+			Feature-1587175</a>] Local links to an anchor are readjusted if the anchor changes.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1500040&group_id=75348&atid=543655">SF
+			Patch-1500040</a>] New configuration values to specify the Id and Class for the
+			body element.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1577202&group_id=75348&atid=543655">SF
+			Patch-1577202</a>] The links created with the popup option now are accessible even
+			if the user has JavaScript disabled.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1443472&group_id=75348&atid=543655">SF
+			Patch-1443472</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1576488&group_id=75348&atid=543653">SF
+				BUG-1576488</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1334305&group_id=75348&atid=543653">SF
+					BUG-1334305</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1578312&group_id=75348&atid=543653">SF
+						BUG-1578312</a>] The Paste from Word clean up function can be configured
+			with FCKConfig.CleanWordKeepsStructure to preserve the markup as much as possible.
+			Thanks Jean-Charles ROGEZ. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1472654&group_id=75348&atid=543655">SF
+			Patch-1472654</a>] The server side script location for SpellerPages can now be set
+			in the configuration file, by using the SpellerPagesServerScript setting.</li>
+		<li><span style="color: #ff0000">Attention:</span> All connectors are now pointing by
+			default to the "/userfiles/" folder instead of "/UserFiles/" (case change). Also,
+			the inner folders for each type (file, image, flash and media) are all lower-cased
+			too.</li>
+		<li><span style="color: #ff0000">Attention:</span> The UseBROnCarriageReturn configuration
+			is not anymore valid. The EnterMode setting can now be used to precisely set the
+			enter key behavior.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1444937&group_id=75348">SF
+			BUG-1444937</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1274364&group_id=75348">SF
+				BUG-1274364</a>] Shortcut keys are now undoable correctly.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1015230&group_id=75348">SF
+			BUG-1015230</a>] Toolbar buttons now update their state on shortcut keys activation.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1485621&group_id=75348">SF
+			BUG-1485621</a>] It is now possible to precisely control which shortcut keys can
+			be used.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1573714&group_id=75348">SF
+			BUG-1573714</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1593323&group_id=75348">SF
+				BUG-1593323</a>] Paste was not working in IE if both AutoDetectPasteFromWord
+			and ForcePasteAsPlainText settings were set to "false". </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1578306&group_id=75348">SF
+			BUG-1578306</a>] The context menu was wrongly positioned if the editing document
+			was set to render in strict mode. Thanks to Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1567060&group_id=75348">SF
+			BUG-1567060</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1565902&group_id=75348">SF
+				BUG-1565902</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1440631&group_id=75348">SF
+					BUG-1440631</a>] IE was getting locked on some specific cases. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1582859&group_id=75348">SF
+			BUG-1582859</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1579507&group_id=75348&atid=543655">SF
+				Patch-1579507</a>] Firefox' spellchecker is now disabled during editing mode.
+			Thanks to Alfonso Martinez.</li>
+		<li>Fixed Safari and Opera detection system (for development purposes only).</li>
+		<li>Paste from Notepad was including font information in IE. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1584092&group_id=75348">SF
+			BUG-1584092</a>] When replacing text area, names with spaces are now accepted.</li>
+		<li>Depending on the implementation of toolbar combos (mainly for custom plugins) the
+			editor area was loosing the focus when clicking in the combo label. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1596937&group_id=75348&atid=543653">SF
+			BUG-1596937</a>] InsertHtml() was inserting the HTML outside the editor area on
+			some very specific cases.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1585548&group_id=75348">SF
+			BUG-1585548</a>] On very specific, rare and strange cases, the XHTML processor was
+			not working properly in IE. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1584951&group_id=75348">SF
+			BUG-1584951</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1380598&group_id=75348">SF
+				BUG-1380598</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1198139&group_id=75348">SF
+					BUG-1198139</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1437318&group_id=75348">SF
+						BUG-1437318</a>] In Firefox, the style selector will not anymore delete
+			the contents when removing styles on specific cases.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1515441&group_id=75348">SF
+			BUG-1515441</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1451071&group_id=75348">SF
+				BUG-1451071</a>] The "Insert/Edit Link" and "Select All" buttons are now working
+			properly when the editor is running on a IE Modal dialog.</li>
+		<li>On some very rare cases, IE was throwing a memory error when hiding the context
+			menus. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1526154&group_id=75348">SF
+			BUG-1526154</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1509208&group_id=75348&atid=543653">SF
+				BUG-1509208</a>] With Firefox, &lt;style&gt; tags defined in the source are
+			now preserved.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1535946&group_id=75348">SF
+			BUG-1535946</a>] The IE dialog system has been changed to better work with custom
+			dialogs.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1599520&group_id=75348">SF
+			BUG-1599520</a>] The table dialog was producing empty tags when leaving some of
+			its fields empty.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1599545&group_id=75348">SF
+			BUG-1599545</a>] HTML entities are now processed on attribute values too.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1598517&group_id=75348">SF
+			BUG-1598517</a>] Meta tags are now protected from execution during editing (avoiding
+			the "redirect" meta to be activated).</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1415601&group_id=75348">SF
+			BUG-1415601</a>] Firefox internals: styleWithCSS is used instead of the deprecated
+			useCSS whenever possible.</li>
+		<li>All JavaScript Core extension function have been renamed to "PascalCase" (some were
+			in "camelCase"). This may have impact on plugins that use any of those functions.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1592311&group_id=75348">SF
+			BUG-1592311</a>] Operations in the caption of tables are now working correctly in
+			both browsers.</li>
+		<li>Small interface fixes to the about box.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1604576&group_id=75348&atid=543655">SF
+			PATCH-1604576</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1604301&group_id=75348">SF
+				BUG-1604301</a>] Link creation failed in Firefox 3 alpha. Thanks to Arpad Borsos</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1577247&group_id=75348&atid=543653">SF
+			BUG-1577247</a>] Unneeded call to captureEvents and releaseEvents.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1610790&group_id=75348">SF
+			BUG-1610790</a>] On some specific situations, the call to form.submit(), in form
+			were FCKeditor has been unloaded by code, was throwing the "Can't execute code from
+			a freed script" error.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1613167&group_id=75348&atid=543653">SF
+			BUG-1613167</a>] If the configuration was missing the FCKConfig.AdditionalNumericEntities
+			entry an error appeared.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1590848&group_id=75348&atid=543653">SF
+			BUG-1590848</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1626360&group_id=75348&atid=543653">SF
+				BUG-1626360</a>] Cleaning of JavaScript strict warnings in the source code.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1559466&group_id=75348&atid=543653">SF
+			BUG-1559466</a>] The ol/ul list property window always searched first for a UL element.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1516008&group_id=75348&atid=543653">SF
+			BUG-1516008</a>] Class attribute in IE wasn't loaded in the image dialog.</li>
+		<li>The "OnAfterSetHTML" event is now fired when being/switching to Source View.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1631807&group_id=75348&atid=543653">SF
+			BUG-1631807</a>] Elements' style properties are now forced to lowercase in IE.</li>
+		<li>The extensions "html", "htm" and "asis" have been added to the list of denied extensions
+			on upload.</li>
+		<li>Empty inline elements (like span and strong) will not be generated any more.</li>
+		<li>Some elements attributes (like hspace) where not being retrieved when set to "0".</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&aid=1508341&group_id=75348&atid=543653">SF
+			BUG-1508341</a>] Fix for the ColdFusion script file of SpellerPages.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.imedi.org/">Medical
+			Media Lab</a>.</p>
+	<h3>
+		Version 2.3.3</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The project has been <strong>relicensed</strong> under the terms of the <strong>
+			GPL / LGPL / MPL</strong> licenses. This change will remove many licensing compatibility
+			issues with other open source licenses, making the editor even more "open" than
+			before. </li>
+		<li><font color="#ff0000">Attention:</font> The default directory in the distribution
+			package is now named "fckeditor" (in lowercase) instead of "FCKeditor".&nbsp; This
+			change may impact installations on case sensitive OSs, like Linux. </li>
+		<li><font color="#ff0000">Attention:</font> The "Universal Keyboard" has been removed
+			from the package. The license of those files was unclear so they can't be included
+			alongside the rest of FCKeditor.</li>
+	</ul>
+	<h3>
+		Version 2.3.2</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>Users can now decide if the template dialog will replace the entire contents of
+			the editor or simply place the template in the cursor position. This feature can
+			be controlled by the "TemplateReplaceAll" and "TemplateReplaceCheckbox" configuration
+			options.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1237693&group_id=75348&atid=543655">SF
+			Patch-1237693</a>] A new configuration option (<strong>ProcessNumericEntities</strong>)
+			is now available to tell the editor to convert non ASCII chars to their relative
+			numeric entity references. It is disabled by default.</li>
+		<li>The new "<strong>AdditionalNumericEntities</strong>" setting makes it possible to
+			define a set of characters to be transformed to their relative numeric entities.
+			This is useful when you don't want the code to have simple quotes ('), for example.</li>
+		<li>The Norwegian language file (no.js) has been duplicated to include the Norwegian
+			Bokmal (nb.js) in the supported interface languages. Thanks to Martin Kronstad.
+		</li>
+		<li>Two new patterns have been added to the Universal Keyboard:
+			<ul>
+				<li>Persian. Thanks to Pooyan Mahdavi</li>
+				<li>Portuguese. Thanks to Bo Brandt.</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1517322&group_id=75348&atid=543655">SF
+			Patch-1517322</a>] It is now possible to define the start number on numbered lists.
+			Thanks to Marcel Bennett.</li>
+		<li>The Font Format combo will now reflect the EditorAreaCSS styles.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1461539&group_id=75348&atid=543655">SF
+			Patch-1461539</a>] The File Browser connector can now optionally return a "url"
+			attribute for the files. Thanks to Pent.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1090851&group_id=75348">SF
+			BUG-1090851</a>] The new "ToolbarComboPreviewCSS" configuration option has been
+			created, so it is possible to point the Style and Format toolbar combos to a different
+			CSS, avoiding conflicts with the editor area CSS.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1421309&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1421309</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1489402&group_id=75348">SF
+				BUG-1489402</a>] It is now possible to configure the Quick Uploder target path
+			to consider the file type (ex: Image or File) in the target path for uploads.</li>
+		<li>The JavaScript integration file has two new things:
+			<ul>
+				<li>The "CreateHtml()" function in the FCKeditor object, used to retrieve the HTML of
+					an editor instance, instead of writing it directly to the page (as done by "Create()").</li>
+				<li>The global "FCKeditor_IsCompatibleBrowser()" function, which tells if the executing
+					browser is compatible with FCKeditor. This makes it possible to do any necessary
+					processing depending on the compatibility, without having to create and editor instance.</li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1525242&group_id=75348">SF
+			BUG-1525242</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1500050&group_id=75348">SF
+				BUG-1500050</a>] All event attributes (like onclick or onmouseover) are now
+			being protected before loading the editor. In this way, we avoid firing those events
+			during editing (IE issue) and they don't interfere in other specific processors
+			in the editor.</li>
+		<li>Small security fixes to the File Browser connectors. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1546226&group_id=75348">SF
+			BUG-1546226</a>] Small fix to the ColdFusion CFC integration file.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&atid=543655&aid=1547768&group_id=75348">SF
+			Patch-1407500</a>] The Word Cleanup function was breaking the HTML on pasting, on
+			very specific cases. Fixed, thanks to Frode E. Moe.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1551979&group_id=75348&atid=543655">SF
+			Patch-1551979</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1418066&group_id=75348">SF
+				BUG-1418066</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1439621&group_id=75348">SF
+					BUG-1439621</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1501698&group_id=75348&atid=543653">SF
+						BUG-1501698</a>] Make FCKeditor work with application/xhtml+xml. Thanks
+			to Arpad Borsos.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1547738&group_id=75348&atid=543655">SF
+			Patch-1547738</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1550595&group_id=75348&atid=543653">SF
+				BUG-1550595</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1540807&group_id=75348&atid=543653">SF
+					BUG-1540807</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1510685&group_id=75348&atid=543653">SF
+						BUG-1510685</a>] Fixed problem with panels wrongly positioned when the
+			editor is placed on absolute or relative positioned elements. Thanks to Filipe Martins.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1511294&group_id=75348&atid=543655">SF
+			Patch-1511294</a>] Small fix for the File Browser compatibility with IE 5.5.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1503178&group_id=75348&atid=543655">SF
+			Patch-1503178</a>] Small improvement to stop IE from loading smiley images when
+			one smiley is quickly selected from a huge list of smileys. Thanks to stuckhere.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1549112&group_id=75348&atid=543653">SF
+			BUG-1549112</a>] The Replace dialog window now escapes regular expression specific
+			characters in the find and replace fields.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1548788&group_id=75348&atid=543653">SF
+			BUG-1548788</a>] Updated the ieSpell download URL.</li>
+		<li>In FF, the editor was throwing an error when closing the window. Fixed.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1538509&group_id=75348&atid=543653">SF
+			BUG-1538509</a>] The "type" attribute for text fields will always be set now.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1551734&group_id=75348&atid=543653">SF
+			BUG-1551734</a>] The SetHTML function will now update the editing area height no
+			matter which editing mode is active.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1554141&group_id=75348&atid=543653">SF
+			BUG-1554141</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1565562&group_id=75348&atid=543653">SF
+				BUG-1565562</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1451056&group_id=75348&atid=543653">SF
+					BUG-1451056</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1478408&group_id=75348&atid=543653">SF
+						BUG-1478408</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1489322&group_id=75348&atid=543653">SF
+							BUG-1489322</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1513667&group_id=75348&atid=543653">SF
+								BUG-1513667</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1562134&group_id=75348&atid=543653">SF
+									BUG-1562134</a>] The protection of URLs has been enhanced
+			and now it will not break URLs on very specific cases.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1545732&group_id=75348&atid=543653">SF
+			BUG-1545732</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1490919&group_id=75348&atid=543653">SF
+				BUG-1490919</a>] No security errors will be thrown when loading FCKeditor in
+			page inside a FRAME defined in a different domain.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1512817&group_id=75348&atid=543653">SF
+			BUG-1512817</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1571345&group_id=75348&atid=543653">SF
+				BUG-1571345</a>] Fixed the "undefined" addition to the content when ShowBorders
+			= false and FullPage = true in Firefox. Thanks to Brett.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1512798&group_id=75348&atid=543653">SF
+			BUG-1512798</a>] BaseHref will now work well on FullPage, even if no &lt;head&gt;
+			is available.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1509923&group_id=75348&atid=543653">SF
+			BUG-1509923</a>] The DocumentProcessor is now called when using InserHtml().</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1505964&group_id=75348&atid=543653">SF
+			BUG-1505964</a>] The DOCTYPE declaration is now preserved when working in FullPage.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1553727&group_id=75348&atid=543653">SF
+			BUG-1553727</a>] The editor was throwing an error when inserting complex templates.
+			Fixed.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1564930&group_id=75348&atid=543655">SF
+			Patch-1564930</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1562828&group_id=75348">SF
+				BUG-1562828</a>] In IE, anchors where incorrectly copied when using the Paste
+			from Word button. Fixed, thanks to geirhelge.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1557709&group_id=75348&atid=543653">SF
+			BUG-1557709</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1421810&group_id=75348&atid=543653">SF
+				BUG-1421810</a>] The link dialog now validates Popup Window names.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1556878&group_id=75348&atid=543653">SF
+			BUG-1556878</a>] Firefox was creating empty tags when deleting the selection in
+			some special cases.</li>
+		<li>The context menu for links is now correctly shown when right-clicking on floating
+			divs.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1084404&group_id=75348&atid=543653">SF
+			BUG-1084404</a>] The XHTML processor now ignores empty span tags.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1221728&group_id=75348&atid=543653">SF
+			BUG-1221728</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1174503&group_id=75348&atid=543653">SF
+				BUG-1174503</a>] The &lt;abbr&gt; tag is not anymore getting broken by IE.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1182906&group_id=75348&atid=543653">SF
+			BUG-1182906</a>] IE is not anymore messing up mailto links.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1386094&group_id=75348&atid=543653">SF
+			BUG-1386094</a>] Fixed an issue when setting configuration options to empty ('')
+			by code.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1389435&group_id=75348&atid=543653">SF
+			BUG-1389435</a>] Fixed an issue in some dialog boxes when handling numeric inputs.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1398829&group_id=75348&atid=543653">SF
+			BUG-1398829</a>] Some links may got broken on very specific cases. Fixed.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1409969&group_id=75348&atid=543653">SF
+			BUG-1409969</a>] &lt;noscript&gt; tags now remain untouched by the editor.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1433457&group_id=75348&atid=543653">SF
+			BUG-1433457</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1513631&group_id=75348&atid=543653">SF
+				BUG-1513631</a>] Empty "href" attributes in &lt;a&gt; or empty "src" in &lt;img&gt;
+			will now be correctly preserved.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1435195&group_id=75348&atid=543653">SF
+			BUG-1435195</a>] Scrollbars are now visible in the File Browser (for custom implementations).</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1438296&group_id=75348&atid=543653">SF
+			BUG-1438296</a>] The "ForceSimpleAmpersand" setting is now being honored in all
+			tags.</li>
+		<li>If a popup blocker blocks context menu operations, the correct alert message is
+			displayed now, instead of a ugly JavaScript error.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1454116&group_id=75348&atid=543653">SF
+			BUG-1454116</a>] The GetXHTML() function will not change the IsDirty() value of
+			the editor.</li>
+		<li>The spell check may not work correctly when using SpellerPages with ColdFusion.
+			Fixed.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1481861&group_id=75348&atid=543653">SF
+			BUG-1481861</a>] HTML comments are now removed by the Word Cleanup System.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1489390&group_id=75348&atid=543653">SF
+			BUG-1489390</a>] A few missing hard coded combo options used in some dialogs are
+			now localizable.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1505448&group_id=75348&atid=543653">SF
+			BUG-1505448</a>] The Form dialog now retrieves the value of the "action" attribute
+			exactly as defined in the source.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1517322&group_id=75348&atid=543655">SF
+			Patch-1517322</a>] Solved an issue when the toolbar has buttons with simple icons
+			(usually used by plugins) mixed with icons coming from a strip (the default toolbar
+			buttons).</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1575261&group_id=75348&atid=543655">SF
+			Patch-1575261</a>] Some fields in the Table and Cell Properties dialogs were being
+			cut. Fixed.</li>
+		<li>Fixed a startup compatibility issue with Firefox 1.0.4.</li>
+	</ul>
+	<h3>
+		Version 2.3.1</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/support/tracker.php?aid=1506126">SF
+			BUG-1506126</a>] Fixed the Catalan language file, which had been published with
+			problems in accented letters. </li>
+		<li>More performance improvements in the default File Browser.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1506701&group_id=75348&atid=543653">SF
+			BUG-1506701</a>] Fixed compatibility issues with IE 5.5.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509073&group_id=75348&atid=543653">SF
+			BUG-1509073</a>] Fixed the "Image Properties" dialog window, which was making invalid
+			calls to the "editor/dialog/" directory, generating error 400 entries in the web
+			server log.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507294&group_id=75348&atid=543653">SF
+			BUG-1507294</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507953&group_id=75348&atid=543653">SF
+				BUG-1507953</a>] The editing area was getting a fixed size when using the "SetHTML"
+			API command or even when switching back from the source view. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1507755&group_id=75348">SF
+			BUG-1507755</a>] Fixed a conflict between the "DisableObjectResizing" and "ShowBorders"
+			configuration options over IE.</li>
+		<li>Opera 9 tries to "mimic" Gecko in the browser detection system of FCKeditor. As
+			this browser is not "yet" supported, the editor was broken on it. It has been fixed,
+			and now a textarea is displayed, as in any other unsupported browser. Support for
+			Opera is still experimental and can be activated by setting the property "EnableOpera"
+			to true when creating an instance of the editor with the JavaScript integration
+			files.</li>
+		<li>With Opera 9, the toolbar was jumping on buttons rollover. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509479&group_id=75348&atid=543656">SF
+			BUG-1509479</a>] The iframes used in Firefox for all editor panels (dropdown combos,
+			context menu, etc...) are now being placed right before the main iframe that holds
+			the editor. In this way, if the editor container element is removed from the DOM
+			(by DHTML) they are removed together with it.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1271070&group_id=75348&atid=543653">SF
+			BUG-1271070</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1411430&group_id=75348&atid=543653">SF
+				BUG-1411430</a>] The editor API now works well on DHTML pages that create and
+			remove instances of FCKeditor dynamically. </li>
+		<li>A second call to a page with the editor was not working correctly with Firefox 1.0.x.
+			Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511460&group_id=75348&atid=543653">SF
+			BUG-1511460</a>] Small correction to the &lt;script&gt; protected source regex.
+			Thanks to Randall Severy.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1521754&group_id=75348">SF
+			BUG-1521754</a>] Small fix to the paths of the internal CSS files used by FCKeditor.
+			Thanks to johnw_ceb.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511442&group_id=75348&atid=543653">SF
+			BUG-1511442</a>] The &lt;base&gt; tag is now correctly handled in IE, no matter
+			its position in the source code.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507773&group_id=75348&atid=543653">SF
+			BUG-1507773</a>] The "Lock" and "Reset" buttons in the Image Properties dialog window
+			are not anymore jumping with Firefox 1.5.</li>
+	</ul>
+	<h3>
+		Version 2.3</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The <strong>Toolbar Sharing</strong> system has been completed. See sample10.html
+			and sample11.html.*</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1407500&group_id=75348&atid=543655">SF
+			Patch-1407500</a>] Small enhancement to the Find and Replace dialog windows.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>Small security fixes.</li>
+		<li>The context menu system has been optimized. Nested menus now open "onmouseover".
+		</li>
+		<li>An error in the image preloader system was making the toolbar strip being downloaded
+			once for each button on slow connections. Some enhancements have also been made
+			so now the smaple05.html is loading fast for all skins.</li>
+		<li>Fixed many memory leak issues with IE.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1489768&group_id=75348&atid=543653">SF
+			BUG-1489768</a>] The panels (context menus, toolbar combos and color selectors),
+			where being displayed in the wrong position if the contents of the editor, or its
+			containing window were scrolled down. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1493176&group_id=75348">SF
+			BUG-1493176</a>] Using ASP, the connector was not working on servers with buffer
+			disable by default.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1491784&group_id=75348&atid=543653">SF
+			BUG-1491784</a>] Language files have been updated to not include html entities.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490259&group_id=75348&atid=543653">SF
+			BUG-1490259</a>] No more security warning on IE over HTTPS.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493173&group_id=75348&atid=543653">SF
+			BUG-1493173</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499708&group_id=75348">SF
+				BUG-1499708</a>] We now assume that, if a user is in source editing, he/she
+			wants to control the HTML, so the editor doesn't make changes to it when posting
+			the form being in source view or when calling the GetXHTML function in the API.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490610&group_id=75348&atid=543653">SF
+			BUG-1490610</a>] The FitWindow is now working on elements set with relative position.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493438&group_id=75348&atid=543653">SF
+			BUG-1493438</a>] The "Word Wrap" combo in the cell properties dialog now accepts
+			only Yes/No (no more &lt;Not Set&gt; value).</li>
+		<li>The context menu is now being hidden when a nested menu option is selected.</li>
+		<li>Table cell context menu operations are now working correctly.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1494549&group_id=75348&atid=543653">SF
+			BUG-1494549</a>] The code formatter was having problems with dollar signs inside
+			&lt;pre&gt; tags.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1459740&group_id=75348&atid=543655">SF
+			Patch-1459740</a>] The "src" element of images can now be set by styles definitions.
+			Thanks to joelwreed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1437052&group_id=75348&atid=543655">SF
+			Patch-1437052</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1436166&group_id=75348&atid=543655">SF
+				Patch-1436166</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1352385&group_id=75348&atid=543655">SF
+					Patch-1352385</a>] Small fix to the FCK.InsertHtml, FCKTools.AppendStyleSheet
+			and FCKSelection.SelectNode functions over IE. Thanks to Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1349765&group_id=75348&atid=543655">SF
+			Patch-1349765</a>] Small fix to the FCKSelection.GetType over Firefox. Thanks to
+			Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1495422&group_id=75348">SF
+			Patch-1495422</a>] The editor now creates link based on the URL when no selection
+			is available. Thanks to Dominik Pesch.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1478859&group_id=75348">SF
+			Patch-1478859</a>] On some circumstances, the Yahoo popup blocker was blocking the
+			File Browser window, giving no feedback to the user. Now an alert message is displayed.</li>
+		<li>When using the editor in a RTL localized interface, like Arabic, the toolbar combos
+			were not showing completely in the first click. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1500212&group_id=75348">SF
+			BUG-1500212</a>] All "_samples/html" samples are now working when loading directly
+			from the Windows Explorer. Thanks to Alfonso Martinez.</li>
+		<li>The "FitWindow" feature was breaking the editor under Firefox 1.0.x.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1500032&group_id=75348&atid=543655">SF
+			Patch-1500032</a>] In Firefox, the caret position now follows the user clicks when
+			clicking in the white area bellow the editor contents. Thanks to Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499522&group_id=75348">SF
+			BUG-1499522</a>] In Firefox, the link dialog window was loosing the focus (and quickly
+			reacquiring it) when opening. This behavior was blocking the dialog in some Linux
+			installations. </li>
+		<li>Drastically improved the loading performance of the file list in the default File
+			Browser.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1503059&group_id=75348">SF
+			BUG-1503059</a>] The default "BasePath" for FCKeditor in all integration files has
+			been now unified to "/fckeditor/" (lower-case). This is the usual casing system
+			in case sensitive OSs like Linux.</li>
+		<li>The "DisableFFTableHandles" setting is now honored when switching the full screen
+			mode with FitWindow.</li>
+		<li>Some fixes has been applied to the cell merging in Firefox.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
+		and <a href="http://www.kentico.com/">Kentico</a>.</p>
+	<h3>
+		Version 2.3 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li><span><strong>Extremely Fast Loading!</strong> The editor now loads more than 3
+			times faster than before, with no impact on its advanced features.</span> </li>
+		<li><span><strong>New toolbar system</strong>:</span>
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1454850&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1454850</a>] The toolbar will now <strong>load much faster</strong>. All
+					images have being merged in a single image file using a unique system available
+					only with FCKeditor. </li>
+				<li>The &quot;Text Color&quot; and &quot;Background Color&quot; commands buttons have
+					enhancements on the interface.</li>
+				<li><strong><span style="color: #ff0000">Attention</span></strong>: As a completely
+					new system has being developed. Skins created for versions prior this one will not
+					work. Skin styles definitions have being merged, added and removed. All skins have
+					been a little bit reviewed. </li>
+				<li>It is possible to <strong>detach the toolbar</strong> from an editor instance and
+					share it with other instances. In this way you may have only one toolbar (in the
+					top of the window, for example, that can be used by many editors (see <a href="_samples/html/sample10.html">
+						sample10.html</a>). This feature is still under development (issues with IE
+					focus still to be solved).* </li>
+			</ul>
+		</li>
+		<li><strong><span>New context menu system</span></strong>:
+			<ul>
+				<li>It uses the same (fast) loading system as the toolbar. </li>
+				<li>Sub-Menus are now available to group features (try the context menu over a table
+					cell). </li>
+				<li>It is now possible to create your own context menu entries by creating plugins.
+				</li>
+			</ul>
+		</li>
+		<li><strong>New "FitWindow" toolbar button</strong>, based on the <a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1431638&group_id=75348&atid=737639">
+			plugin</a> published by Paul Moers. Thanks Paul!</li>
+		<li><strong>&quot;Auto Grow&quot; Plugin</strong>: automatically resizes the editor
+			until a maximum height, based on its contents size.** </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1444943&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1444943</a>] <strong>Multiple CSS files</strong> can now be used in the
+			editing area. Just define FCKConfig.EditorAreaCSS as an array of strings (each one
+			is a path to a different css file). It works also as a simple string, as on prior
+			versions. </li>
+		<li>New language files:<ul>
+			<li><strong>Bengali / Bangla</strong> (by Richard Walledge).</li>
+			<li><strong>English (Canadian)</strong> (by Kevin Bennett). </li>
+			<li><strong>Khmer</strong> (by Sengtha Chay).</li>
+		</ul>
+		</li>
+		<li>The source view is now available in the editing area on Gecko browsers. Previously
+			a popup was used for it (due to a Firefox bug). </li>
+		<li><span>As some people may prefer the popup way for source editing, a new configuration
+			option (SourcePopup) has being introduced.</span> </li>
+		<li>The IEForceVScroll configuration option has been removed. The editor now automatically
+			shows the vertical scrollbar when needed (for XHTML doctypes). </li>
+		<li>The configuration file doesn't define a default DOCTYPE to be used now. </li>
+		<li>It is now possible to easily change the toolbar using the JavaScript API by just
+			calling &lt;EditorInstance&gt;.ToolbarSet.Load( '&lt;ToolbarName&gt;' ). See _testcases/010.html
+			for a sample. </li>
+		<li>The &quot;OnBlur&quot; and &quot;OnFocus&quot; JavaScript API events are now compatible
+			with all supported browsers. </li>
+		<li>Some few updates in the Lasso connector and uploader. </li>
+		<li>The GeckoUseSPAN setting is now set to "false" by default. In this way, the code
+			produced by the bold, italic and underline commands are the same on all browsers.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Important security fixes have been applied to the File Manager, Uploader
+			and Connectors. Upgrade is highly recommended.</strong> Thanks to Alberto Moro,
+			Baudouin Lamourere and James Bercegay.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1399966&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1399966</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1249853&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1249853</a>] The &quot;BaseHref&quot; configuration is now working with
+			Firefox in both normal and full page modes.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1405263&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1405263</a>] A typo in the configuration file was impacting the Quick Upload
+			feature. </li>
+		<li>Nested &lt;ul&gt; and &lt;ol&gt; tags are now generating valid html.</li>
+		<li>The &quot;wmode&quot; and &quot;quality&quot; attributes are now preserved for Flash
+			embed tags, in case they are entered manually in the source view. Also, empty attributes
+			are removed from that tag. </li>
+		<li>Tables where not being created correctly on Opera. </li>
+		<li>The XHTML processor will ignore invalid tags with names ending with &quot;:&quot;,
+			like http:. </li>
+		<li><span>On Firefox, the scrollbar is not anymore displayed on toolbar dropdown commands
+			when not needed.</span> </li>
+		<li><span>Some small fixes have being done to the dropdown commands rendering for FF</span>.
+		</li>
+		<li>The table dialog window has been a little bit enlarged to avoid contents being cropped
+			on some languages, like Russian. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1465203&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1465203</a>] The ieSpell download URL has been updated. The problem is that
+			they don't have a fixed URL for it, so let's hope the mirror will be up for it.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1456332&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1456332</a>] Small fix in the Spanish language file. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1457078&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1457078</a>] The File Manager was generating 404 calls in the server. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1459846&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1459846</a>] Fixed a problem with the config file if PHP is set to parse .js
+			files. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1432120</a>] The &quot;UserFilesAbsolutePath&quot; setting is not correctly
+			used in the PHP uploader. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1408869</a>] The collapse handler is now rendering correctly in Firefox 1.5.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1410082&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1410082</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1424240&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1424240</a>] The &quot;moz-bindings.xml&quot; file is now well formed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1413980&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1413980</a>] All frameborder &quot;yes/no&quot; values have been changes to
+			&quot;1/0&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414101&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1414101</a>] The fake table borders are now showing correctly when running under
+			the &quot;file://&quot; protocol. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414155&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1414155</a>] Small typo in the cell properties dialog window.</li>
+		<li>Fixed a problem in the File Manager. It was not working well with folder or file
+			names with apostrophes ('). Thanks to René de Jong.</li>
+		<li>Small "lenght" type corrected in the select dialog window. Thanks to Bernd Nussbaumer.</li>
+		<li>The about box is now showing correctly in Firefox 1.5.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1464020&group_id=75348&atid=543655">SF
+			Patch-1464020</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1155793&group_id=75348&atid=543653">SF
+				BUG-1155793</a>] The "Unlink" command is now working correctly under Firefox
+			if you don't have a complete link selection. Thanks to Johnny Egeland.</li>
+		<li>In the File Manager, it was not possible to upload files to folders with ampersands
+			in the name. Thanks to Mike Pone.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1178359&group_id=75348&atid=543653">SF
+			BUG-1178359</a>] Elements from the toolbar are not anymore draggable in the editing
+			area.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1487544&group_id=75348&atid=543653">SF
+			BUG-1487544</a>] Fixed a small issue in the code formatter for &lt;br /&gt; and
+			&lt;hr /&gt; tags.</li>
+		<li>The "Background Color" command now works correctly when the GeckoUseSPAN setting
+			is disabled (default).</li>
+		<li>Links are now rendered in blue with Firefox (they were black before). Actually,
+			an entry for it has been added to the editing area CSS, so you can customize with
+			the color you prefer. </li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
+		and <a href="http://www.kentico.com/">Kentico</a>.
+		<br />
+		** This version has been partially sponsored by <a href="http://www.nextide.ca/">Nextide</a>.</p>
+	<h3>
+		Version 2.2</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>Let's welcome Wim Lemmens (didgiman). He's our new responsible for the ColdFusion
+			integration. In this version we are introducing his new files with the following
+			changes:
+			<ul>
+				<li>The &quot;<strong>Uploader</strong>&quot;, used for quick uploads,&nbsp;is now available
+					<strong>natively for ColdFusion</strong>. </li>
+				<li>Small bugs have been corrected in the <strong>File Browser connector</strong>. </li>
+				<li>The samples now work as is, even if you don't install the editor in the &quot;/FCKeditor&quot;
+					directory.</li>
+			</ul>
+		</li>
+		<li>And a big welcome also to &quot;Andrew Liu&quot;, our responsible for the <strong>
+			Python</strong> integration. This version is bringing <strong>native support for Python</strong>
+			, including the File Browser connector and Quick Upload. </li>
+		<li>The &quot;<strong>IsDirty()</strong>&quot; and &quot;<strong>ResetIsDirty()</strong>&quot;
+			functions have been&nbsp;added to the&nbsp;JavaScript API&nbsp;to check if the editor
+			content has been changed.* </li>
+		<li>New language files:
+			<ul>
+				<li><strong>Hindi</strong> (by Utkarshraj Atmaram) </li>
+				<li><strong>Latvian </strong>(by Janis Klavin&scaron;)</li>
+			</ul>
+		</li>
+		<li>For&nbsp;the interface, now we have complete <strong>RTL support</strong> also for
+			the drop-down toolbar commands, color selectors and context menu. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1325113&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1325113</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1277661&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1277661</a>] The new &quot;Delete Table&quot; command is available in the
+			Context Menu when right-clicking inside a table. </li>
+		<li>The &quot;FCKConfig.DisableTableHandles&quot; configuration option is now working
+			on Firefox 1.5. </li>
+		<li>The new &quot;<strong>OnBlur</strong>&quot; and &quot;<strong>OnFocus</strong>&quot;
+			events have been added to the JavaScript API (IE only). See&nbsp;&quot;_samples/html/sample09.html&quot;&nbsp;*
+		</li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>GetHTML</strong>&quot;
+			function has been deprecated. It now returns the same value as &quot;<strong>GetXHTML</strong>&quot;.
+			The same is valid for the &quot;EnableXHTML&quot; and &quot;EnableSourceXHTML&quot;
+			that have no effects now. The editor now works with XHTML output only. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: A new &quot;<strong>PreserveSessionOnFileBrowser</strong>&quot;
+			configuration option has been introduced. It makes it possible to set whenever is
+			needed to maintain the user session in the File Browser. It is disabled by default,
+			as it has very specific usage and may cause the File Browser to be blocked by popup
+			blockers. If you have custom File Browsers that depends on session information,
+			remember to activate it. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>fun</strong>&quot;
+			smileys set has been removed from the package. If you are using it, you must manually
+			copy it to newer installations and upgrades. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>mcpuk</strong>&quot;
+			file browser has been removed from the package. We have no ways to support it. There
+			were also some licensing issues with it. Its web site can still be found at <a href="http://mcpuk.net/fbxp/">
+				http://mcpuk.net/fbxp/</a>. </li>
+		<li>It is now possible to set different CSS styles for the chars in the Special Chars
+			dialog window by adding the &quot;SpecialCharsOut&quot; and &quot;SpecialCharsOver&quot;
+			in the &quot;fck_dialog.css&quot; skin file.* </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1268726&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1268726</a>] Added table &quot;summary&quot; support in the table dialog.
+			Thanks to Sebastien-Mahe. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1284380&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1284380</a>] It is now possible to define the icon of a FCKToolbarPanelButton
+			object without being tied to the skin path (just like FCKToolbarButton). Thanks
+			to Ian Sullivan. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1338610&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1338610</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263009&amp;group_id=75348&amp;atid=543656">SF
+				Patch-1263009</a>] New characters have been added to the &quot;Special Characters&quot;
+			dialog window. Thanks to Deian. </li>
+		<li>You can set the QueryString value &quot;fckdebug=true&quot; to activate &quot;debug
+			mode&quot; in the editor (showing the debug window), overriding the configurations.
+			The &quot;AllowQueryStringDebug&quot; configuration option is also available so
+			you can disable this feature.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1363548&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1363548</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1364425&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1364425</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1335045&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1335045</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289661&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1289661</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225370&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1225370</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156291&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1156291</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165914&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1165914</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1111877&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1111877</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092373&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1092373</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101596&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1101596</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246952&amp;group_id=75348&amp;atid=543653">SF
+													BUG-1246952</a>] The URLs for links and
+			images are now correctly preserved as entered, no matter if you are using relative
+			or absolute paths. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162809&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162809</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205638&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1205638</a>] The &quot;Image&quot; and &quot;Flash&quot;&nbsp;dialog windows
+			now loads the preview correctly if the &quot;BaseHref&quot; configuration option
+			is set. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329807&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1329807</a>] The alert boxes are now showing correctly when doing cut/copy/paste
+			operations on Firefox installations when it is not possible to execute that operations
+			due to security settings. </li>
+		<li>A new &quot;Panel&quot; system (used in the drop-dowm toolbar commands, color selectors
+			and context menu) has been developed. The following bugs have been fixed with it:
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186927&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1186927</a>] On IE, sometimes the context menu was being partially hidden.*
+				</li>
+				<li>On Firefox, the context menu was flashing in the wrong position before showing.
+				</li>
+				<li>On Firefox 1.5, the Color Selector was not working. </li>
+				<li>On Firefox 1.5, the fonts in the panels were too big. </li>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076435&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1076435</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200631&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1200631</a>] On Firefox, sometimes the context menu was being shown in the
+					wrong position.</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
+			BUG-1364094</a>] Font families were <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=317572">
+				not being rendered correctly on Firefox</a> . </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1315954&amp;group_id=75348">SF
+			BUG-1315954</a>] No error is thrown when pasting some case specific code from editor
+			to editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1341553&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1341553</a>] A small fix for a security alert in the File&nbsp;Browser has been
+			applied. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370953&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1370953</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339898&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1339898</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323319&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1323319</a>] A message will be shown to the user (instead of a JS error)&nbsp;if
+			a &quot;popup blocker&quot; blocks the &quot;Browser Server&quot; button. Thanks
+			to Erwin Verdonk. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370355&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1370355</a>] Anchor links that points to a single character anchor, like &quot;#A&quot;,
+			are now correctly detected in the Link dialog window. Thanks to Ricky Casey. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368998&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1368998</a>] Custom error processing has been added to the file upload on the
+			File Browser. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1367802&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1367802</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207740&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1207740</a>] A message is shown to the user if a dialog box is blocked by
+			a popup blocker in Firefox. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1358891&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1358891</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1340960&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1340960</a>] The editor not works locally (without a web server) on directories
+			where the path contains spaces. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357247&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1357247</a>] The editor now intercepts SHIFT + INS keystrokes when needed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1328488&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1328488</a>] <strong><font color="#ff0000">Attention</font></strong>: The Page
+			Break command now produces different tags&nbsp;to avoid&nbsp;XHTML compatibility
+			issues. Any Page Break previously applied to content produced with previous versions
+			of FCKeditor will not me rendered now, even if&nbsp;they will still be working correctly.
+		</li>
+		<li>It is now possible to allow cut/copy/past operations on Firefox using the <a
+			href="http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard"
+			target="_blank">user.js</a> file. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1336792&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1336792</a>] A fix has been applied to the XHTML processor to allow tag names
+			with the &quot;minus&quot; char (-). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339560&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1339560</a>] The editor now correctly removes the &quot;selected&quot; option
+			for checkboxes and radio buttons. </li>
+		<li>The Table dialog box now selects the table correctly when right-clicking on objects
+			(like images) placed inside the table. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: A few changes have been
+			made in the skins. If you have a custom skin, it is recommended you to make a diff
+			of the fck_contextmenu.css file of the default skin with your implementation. </li>
+		<li>Mouse select (marking&nbsp;things in blue, like selecting text) has been disabled
+			on panels (drop-down menu commands, color selector and context menu) and toolbar,
+			for both IE and Firefox. </li>
+		<li>On Gecko, fake borders will not be applied to tables with the border attribute set
+			to more than 0, but placed inside tables with border set to 0. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360717&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1360717</a>] A wrapping issue in the &quot;Silver&quot; skin has been corrected.
+			Thanks to Ricky Casey. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251145&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1251145</a>] In IE, the focus is now maintained in the text when clicking in
+			the empty area&nbsp;following it. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181386&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181386</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237791&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1237791</a>] The &quot;Stylesheet Classes&quot; field in the Link dialog
+			window in now applied correctly on IE. Thanks to Andrew Crowe. </li>
+		<li>The &quot;Past from Word&quot; dialog windows is now showing correctly on Firefox
+			on some languages. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315008&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1315008</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241992&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1241992</a>] IE, when selecting objects (like images) and hitting the &quot;Backspace&quot;
+			button, the browser's &quot;back&quot; will not get executed anymore and the object
+			will be correctly deleted. </li>
+		<li>The &quot;AutoDetectPasteFromWord&quot; is now working correctly in IE. Thanks to
+			Juan Ant. G&oacute;mez. </li>
+		<li>A small enhancement has been made in the Word pasting detection. Thanks to Juan
+			Ant. G&oacute;mez. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090686&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1090686</a>] No more conflict with Firefox &quot;Type-Ahead Find&quot; feature.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942653&amp;group_id=75348&amp;atid=543653">SF
+			BUG-942653</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155856&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1155856</a>] The &quot;width&quot; and &quot;height&quot; of images sized
+			using the inline handlers are now correctly loaded in the image dialog box. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209093&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1209093</a>] When &quot;Full Page Editing&quot; is active, in the &quot;Document
+			Properties&quot; dialog, the &quot;Browse Server&quot; button for the page background
+			is now correctly hidden if &quot;ImageBrowser&quot; is set to &quot;false&quot;
+			in the configurations file. Thanks to Richard. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1120266&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1120266</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186196&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1186196</a>] The editor now retains the focus when selecting commands in
+			the toolbar. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1244480&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1244480</a>] The editor now will look first to linked fields &quot;ids&quot;
+			and&nbsp;second to &quot;names&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1252905&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1252905</a>] The &quot;InsertHtml&quot; function now preserves URLs as entered.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1266317&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1266317</a>] Toolbar commands are not anymore executed outside the editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1365664&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1365664</a>] The &quot;wrap=virtual&quot; attribute has been removed from the
+			integration files for validation purposes. No big impact. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=972193&amp;group_id=75348&amp;atid=543653">SF
+			BUG-972193</a>] Now just one click is needed to active the cursor inside the editor.
+		</li>
+		<li>The hidden fields used by the editor are now protected from changes using the &quot;Web
+			Developer Add-On &gt; Forms &gt; Display Forms Details&quot; extension. Thanks to
+			Jean-Marie Griess. </li>
+		<li>On IE, the &quot;Format&quot; toolbar dropdown now reflects the current paragraph
+			type on IE. Because of a bug in the browser, it is quite dependent on the browser
+			language and the editor interface language (both must be the same). Also, as the
+			&quot;Normal (DIV)&quot; type is seen by IE as &quot;Normal&quot;, to avoid confusion,
+			both types are ignored by this fix. </li>
+		<li>On some very rare cases, IE was loosing the &quot;align&quot; attribute for DIV
+			tags. Fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1388799&amp;group_id=75348">SF
+			BUG-1388799</a>] The code formatter was removing spaces on the beginning of lines
+			inside PRE tags. Fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1387135&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1387135</a>] No more &quot;NaN&quot; values in the image dialog, when changing
+			the sizes in some situations. </li>
+		<li>Corrected a small type in the table handler. </li>
+		<li>You can now set the &quot;z-index&quot; for floating panels (toolbar dropdowns,
+			color selectors, context menu) in Firefox, avoiding having them hidden under another
+			objects. By default it is set to 10,000. Use the FloatingPanelsZIndex configuration
+			option to change this value.</li>
+	</ul>
+	<p>
+		<strong>Special thanks</strong> to <a target="_blank" href="https://sourceforge.net/users/alfonsoml/">
+			Alfonso Martinez</a>, who have provided many patches and suggestions for the
+		following features / fixes present in this version. I encourage all you to <a href="https://sourceforge.net/donate/index.php?user_id=1356422">
+			donate</a> to Alfonso, as a way to say thanks for his nice open source approach.
+		Thanks Alfonso!. Check out his contributions:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
+			BUG-1352539</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208348&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1208348</a>] With Firefox, no more &quot;fake&quot; selections are appearing
+			when inserting images, tables, special chars or when using the &quot;insertHtml&quot;
+			function. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543655&amp;aid=1382588&amp;group_id=75348">SF
+			Patch-1382588</a>] The &quot;FCKConfig.DisableImageHandles&quot; configuration option
+			is not working on Firefox 1.5. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368586&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1368586</a>] Some fixes have been applied to the Flash dialog box and the
+			Flash pre-processor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360253&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1360253</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1378782&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1378782</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305899&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1305899</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1344738&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1344738</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1347808&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1347808</a>] On dialogs, some fields&nbsp;became impossible
+			to select or change when using Firefox. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357445&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1357445</a>] Add support for DIV in the Format drop-down combo for Firefox.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350465&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1350465</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1376175&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1376175</a>] The &quot;Cell Properties&quot; dialog now works correctly
+			when right-clicking in an object (image, for example) placed inside the cell itself.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1349166&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1349166</a>] On IE, there is now support for namespaces on tags names. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350552&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1350552</a>] Fix the display issue when applying styles on tables. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1352320&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1352320</a> ] Fixed&nbsp;a wrong&nbsp;usage of the &quot;parentElement&quot;
+			property on Gecko. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1355007&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1355007</a>] The new &quot;FCKDebug.OutputObject&quot; function is available
+			to dump all object information in the debug window. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329500&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1329500</a>] It is now possible to delete table columns when clicking on a
+			TH cell of the column. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315351&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1315351</a>] It is now possible to pass the image width and height to the
+			&quot;SetUrl&quot; function of the Flash dialog box. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327384&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1327384</a>] TH tags are now correctly handled by the source code formatter
+			and the &quot;FillEmptyBlocks&quot; configuration option. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327406&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1327406</a>] Fake borders are now displayed for TH elements on tables with
+			border set to 0. Also, on Firefox, it will now work even if the border attribute
+			is not defined and the borders are not dotted. </li>
+		<li>Hidden fields now get rendered on Firefox. </li>
+		<li>The BasePath is now included in the debugger URL to avoid problems when calling
+			it from plugins.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.alkacon.com">
+			Alkacon Software</a>.</p>
+	<h3>
+		Version 2.1.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The new &quot;<strong>Insert Page Break</strong>&quot;&nbsp;command (for printing)&nbsp;has
+			been introduced.* </li>
+		<li>The editor package now has a root directory called &quot;FCKeditor&quot;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326285&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1326285</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1316430&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1316430</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323662&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1323662</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326223&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1326223</a>] We are doing a little step back with this version.
+			The ENTER and BACKSPACE behavior changes for Firefox have been remove. It is a nice
+			feature, but we need much more testing&nbsp;on it. It introduced some bugs and so
+			its preferable to not have that feature, avoiding problems (even if that feature
+			was intended to solve some issues). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1275714</a>] Comments in the beginning of the source are now preserved when
+			using the &quot;undo&quot; and &quot;redo&quot; commands. </li>
+		<li>The &quot;undo&quot; and &quot;redo&quot; commands now work for the Style command.
+		</li>
+		<li>An error in the execution of the pasting commands on Firefox has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1326184&amp;group_id=75348">SF
+			BUG-1326184</a>] No strange (invalid) entities are created when using Firefox. Also,
+			the &amp;nbsp; used by the FillEmptyBlocks setting is maintained even if you disable
+			the ProcessHTMLEntities setting.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.acttive.com.br/">
+			Acctive Software&nbsp;S.A.</a>.</p>
+	<h3>
+		Version 2.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200328&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1200328</a>] The editor now offers a way to &quot;protect&quot; part of the
+			source to remain untouched while editing or changing views.&nbsp;Just use the &quot;FCKConfig.ProtectedSource&quot;
+			object to configure it and customize to your needs. It is based on regular expressions.
+			See fckconfig.js for some samples. </li>
+		<li>The editor now offers native support for <strong>Lasso</strong>. Thanks and welcome&nbsp;to
+			our new developer Jason Huck. </li>
+		<li>New language files are available:
+			<ul>
+				<li><strong>Faraose</strong> (by S&iacute;min Lassaberg and&nbsp;Helgi Arnthorsson)
+				</li>
+				<li><strong>Malay</strong> (by Fairul Izham Mohd Mokhlas) </li>
+				<li><strong>Mongolian</strong> (by Lkamtseren Odonbaatar) </li>
+				<li><strong>Vietnamese</strong> (by Phan Binh Giang)</li>
+			</ul>
+		</li>
+		<li>A new configurable&nbsp;ColdFusion connector is available. Thanks to Mark Woods.
+			Many enhancements has been introduced with it. </li>
+		<li>The PHP connector for the default File Browser now sorts the folders and files names.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1289372</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1282758&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1282758</a>] In the PHP connector it is now possible to set the absolute
+			(server) path to the User Files directory, avoiding problems with Virtual Directories,
+			Symbolic Links or Aliases. Take a look at the config.php file. </li>
+		<li>The ASP.Net uploader (for Quick Uploads) has been added to the package. </li>
+		<li>A new way to define <strong>simple &quot;combo&quot; toolbar items</strong> , like
+			Style and Font, has been introduced.&nbsp;Thanks&nbsp;to Steve Lineberry.&nbsp;See
+			sample06.html and the &quot;simplecommands&quot; plugin&nbsp;to fully understand
+			it. </li>
+		<li>A new test case has been added that shows how to set the editor background dynamically
+			without using a CSS. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155906&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1155906</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1110116&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1110116</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216332&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1216332</a>] The &quot;AutoDetectPasteFromWord&quot; configuration option
+			is back (IE only feature). </li>
+		<li>The&nbsp;new &quot;OnAfterLinkedFieldUpdate&quot; event has been introduced. If
+			is fired when the editor updates its hidden associated field. </li>
+		<li>Attention: The color of the right border of the toolbar (left on RTL interfaces)
+			has been moved from code to the CSS (TB_SideBorder class). Update your custom skins.
+		</li>
+		<li>A&nbsp;sample &quot;htaccess.txt&quot; file has been added to the editor's package
+			to show how to configure some Linux sites that could present problems on Firefox
+			with &quot;Illegal characters&quot; errors. Respectively the &quot;&iuml;&raquo;&iquest;&quot;
+			chars. </li>
+		<li>With the JavaScript, ASP and PHP integration files, you can set the QueryString
+			value &quot;fcksource=true&quot; to load the editor using the source files (located
+			in the _source directory) instead of the compressed ones. Thanks to Kae Verens for
+			the suggestion. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246623&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1246623</a>] The new configuration option &quot;ForceStrongEm&quot; has
+			been introduced so you can force the editor to convert all &lt;B&gt; and &lt;I&gt;
+			tags to &lt;STRONG&gt; and &lt;EM&gt; respectively. </li>
+		<li>A nice contribution has been done by Goss Interactive Ltd:
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246949&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1246949</a>] Implemented ENTER key and BACKSPACE key handlers for Gecko so that
+					P tags (or an appropriate block element) get inserted instead of BR tags when not
+					in the UseBROnCarriageReturn config mode.
+					<br />
+					The ENTER key handling has been written to function much the same as the ENTER key
+					handling on IE : as soon as the ENTER key is pressed, existing content will be wrapped
+					with a suitable block element (P tag) as appropriate and a new block element (P
+					tag) will be started.
+					<br />
+					The ENTER key handler also caters for pressing ENTER within empty list items - ENTER
+					in an empty item at the top of a list will remove that list item and start a new
+					P tag above the list; ENTER in an empty item at the bottom of a list will remove
+					that list item and start a new P tag below the list; ENTER in an empty item in the
+					middle of a list will remove that list item, split the list into two, and start
+					a new P tag between the two lists. </li>
+				<li>Any tables that are found to be incorrectly nested within a block element (P tag)
+					will be moved out of the block element when loaded into the editor. This is required
+					for the new ENTER/BACKSPACE key handlers and it also avoids non-compliant HTML.&nbsp;
+				</li>
+				<li>The InsertOrderedList and InsertUnorderedList commands have been overridden on Gecko
+					to ensure that block elements (P tags) are placed around a list item's content when
+					it is moved out of the list due to clicking on the editor's list toolbar buttons
+					(when not in the UseBROnCarriageReturn config mode). </li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1253255</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1265520</a>] Due to changes on version 2.0, the anchor list was not anymore
+			visible in the link dialog window. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1242979&amp;group_id=75348">SF
+			BUG-1242979</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251354&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1251354</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1256178&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1256178</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274841&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1274841</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1303949&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1303949</a>] Due to a bug on Firefox, some keys stopped working
+			on startup over Firefox. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251373&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1251373</a> ] The above fix also has&nbsp;corrected some strange behaviors on
+			Firefox. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1144258">SF
+			BUG-1144258</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1092081">SF
+				BUG-1092081</a>] The File Browsers now run on the&nbsp;same server session used
+			in the page where the editor is placed in (IE issue). Thanks to Simone Chiaretta.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305619&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1305619</a> ] No more repeated login dialogs when running the editor with Windows
+			Integrated Security with IIS. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1245304&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1245304</a>] The Test Case 004 is now working correctly. It has been changed
+			to set the editor hidden at startup. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1290610&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1290610</a> ] Over HTTPS, there were some warnings when loading the Images,
+			Flash and Link dialogs. Fixed. </li>
+		<li>Due to Gecko bugs, two errors were thrown when loading the editor in a hidden div.
+			Workarounds have been introduced. In any case, the testcase 004 hack is needed when
+			showing the editor (as in a tabbed interface). </li>
+		<li>An invalid path in the dialogs CSS file has been corrected. </li>
+		<li>On IE, the Undo/Redo can now be controlled using the Ctrl+Z and Ctrl+Y shortcut
+			keys. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295538&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1295538</a> ] A few Undo/Redo fixes for IE have been done. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1247070&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1247070</a>] On Gecko, it is now possible to use the shortcut keys for Bold
+			(CTRL+B), Italic (CTRL+I) and Underline (CTRL+U), like in IE. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274303&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1274303</a>] The &quot;Insert Column&quot; command is now working correctly
+			on TH cells. It also copies any attribute applied to the source cells. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1287070&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1287070</a> ] In the Universal Keyboard, the Arabic keystrokes translator
+			is now working with Firefox. Thanks again to Abdul-Aziz Al-Oraij. </li>
+		<li>The editor now handles AJAX requests with HTTP status 304. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157780&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1157780</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229077&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1229077</a>] Weird comments are now handled correctly (ignored on some cases).
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155774&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1155774</a>] A spelling error in the Bulleted List Properties dialog has been
+			corrected. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1272018&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1272018</a>] The ampersand character can now be added from the Special Chars
+			dialog. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263161&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1263161</a>] A small fix has been applied to the sampleposteddata.php file.
+			Thanks to Mike Wallace. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241504&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1241504</a>] The editor now looks also for the ID of the hidden linked field.
+		</li>
+		<li>The caption property on tables is now working on Gecko. Thanks to Helen Somers (Goss
+			Interactive Ltd). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1297431&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1297431</a>] With IE, the editor now works locally when its files are placed
+			in a directory path that contains spaces. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1279551&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1279551</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1242105&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1242105</a>] On IE, some features are dependant of ActiveX components (secure...
+			distributed&nbsp;with IE itself). Some security setting could avoid the usage of
+			those components and the editor would stop working. Now a message is shown, indicating
+			the use the minimum necessary settings need&nbsp;by the editor to run. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1298880&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1298880</a>] Firefox can't handle the STRONG and EM tags. Those tags are now
+			converted to B and I so it works accordingly. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1271723&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1271723</a>] On IE, it is now possible to select the text and work correctly
+			in the contents of absolute positioned/dimensioned divs. </li>
+		<li>On IE, there is no need to click twice in the editor to&nbsp;activate the cursor
+			in the editing area. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1221621&amp;group_id=75348">SF
+			BUG-1221621</a>] Many &quot;warnings&quot; in the Firefox console are not thrown
+			anymore. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295526&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1295526</a>] While&nbsp;editing on &quot;FullPage&quot; mode the basehref is
+			now active for CSS &quot;link&quot; tags. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1222584&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1222584</a>] A small fix to the PHP connector has been applied. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1281313&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1281313</a>] A few small changes to avoid problems with Plone. Thanks to Jean-mat.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1275911&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1275911</a>] A check for double dots sequences on directory names on creation
+			has been introduced to the PHP and ASP connectors.</li>
+	</ul>
+	<h3>
+		Version 2.0</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The&nbsp;new &quot;<strong>Flash</strong>&quot; command is available. Now you can
+			easily handle Flash content, over IE and Gecko, including server browser integration
+			and context menu support. Due to limitations of the browsers, it is not possible
+			to see the preview of the movie while editing, so a nice &quot;placeholder&quot;
+			is used instead. * </li>
+		<li>A&nbsp;&quot;<strong>Quick Upload</strong> &quot; option is now available in the
+			link, image and flash dialog windows, so the user don't need to go (or have) the
+			File Browser for this operations. The ASP and PHP uploader&nbsp;are included.&nbsp;Take
+			a look at the configuration file.*** </li>
+		<li>Added support for <strong>Active FoxPro Pages</strong> . Thanks to our new developer,
+			S&ouml;nke Freitag. </li>
+		<li>It is now possible to <strong>disable the size handles</strong> for images and tables
+			(IE only feature). Take a look at the DisableImageHandles and DisableTableHandles
+			configuration options. </li>
+		<li>The handles on form fields&nbsp;(small squares around them) and the inline editing
+			of&nbsp;its contents&nbsp;have been disabled. This makes it easier to users to use
+			the controls. </li>
+		<li>A much better support for Word pasting operations has been introduced. Now it uses
+			a dialog box, in this way we have better results and more control.** </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225372&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1225372</a>] A small change has been done to the PHP integration file. The
+			generic __construct constructor has been added for better PHP 5 sub-classing&nbsp;compatibility
+			(backward compatible). Thanks to Marcus Bointon.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>ATTENTION: Some security changes have been made to the connectors. Now you must
+			explicitly enable the connector you want to use. Please test your application before
+			deploying this update. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1211591">SF
+			BUG-1211591</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1204273&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1204273</a>] The connectors have been changed so it is not possible to use
+			&quot;..&quot; on directory names. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219734&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1219734</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219728&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1219728</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208654&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1208654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205442&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1205442</a>] There was an error in the page unload on some cases
+			that has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1209708">SF
+			BUG-1209708</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1214125">SF
+				BUG-1214125</a>] The undo on IE is now working correctly when the user starts
+			typing. </li>
+		<li>The preview now loads &quot;Full Page&quot; editing correctly. It also uses the
+			same XHTML code produced by the final output. </li>
+		<li>The &quot;Templates&quot; dialog was not working on some very specific (and strange)
+			occasions over IE. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1199631&amp;group_id=75348">SF
+			BUG-1199631</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171944&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1171944</a>] A new option is available to avoid a bad IE behavior that shows
+			the horizontal scrollbar even when not needed. You can now force the vertical scrollbar
+			to be always visible. Just set the &quot;IEForceVScroll&quot; configuration option
+			to &quot;true&quot;. Thanks to Grant Bartlett. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212026&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1212026</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228860&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1228860</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1211775&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1211775</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1199824">SF
+						BUG-1199824</a>] An error in the Packager has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1163669">SF
+			BUG-1163669</a>] The XHTML processor now adds a space before the closing slash of
+			tags that don't have a closing tag, like &lt;br /&gt;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1213733&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1213733</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216866&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1216866</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209673&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1209673</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155454&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1155454</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187936&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1187936</a> ]&nbsp;Now, on Gecko, the source is opened in a
+			dialog window to avoid fatal errors (Gecko bugs). </li>
+		<li>Some pages have been changed to avoid importing errors on Plone. Thanks to Arthur
+			Kalmenson. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171606&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1171606</a>] There&nbsp;is a bug on IE that makes the editor to not work if
+			the instance name matches a meta tag name. Fixed. </li>
+		<li>On Firefox, the source code is now opened in a dialog box, to avoid error on pages
+			with more than one editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225703&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1225703</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1214941&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1214941</a>] The &quot;ForcePasteAsPlainText&quot; configuration option
+			is now working correctly on Gecko browsers. Thanks to Manuel Polo. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228836&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1228836</a>] The &quot;Show Table Borders&quot; feature is now working on Gecko
+			browsers. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212529&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1212529</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212517&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1212517</a>] The default File Browser now accepts connectors with querystring
+			parameters (with &quot;?&quot;). Thanks to Tomas Jucius. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1233318&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1233318</a>] A JavaScript error thrown when using the Print command has been
+			fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229696&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1229696</a>] A regular expression has been escaped to avoid problems when opening
+			the code in some editors. It has been moved to a&nbsp;dialog window. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1231978&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1231978</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228939&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1228939</a>] The Preview window is now using the Content Type and Base href.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1232056</a>] The&nbsp;anchor icon is now working correctly on IE. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1202468</a>] The anchor icon is now available on Gecko too. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236279&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1236279</a>] A security warning has been corrected when using the File Browser
+			over HTTPS. </li>
+		<li>The ASP implementation now avoid errors when setting the editor value to null values.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237359&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1237359</a>] The trailing &lt;BR&gt; added by Gecko at the end of the source
+			is now removed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1170828">SF
+			BUG-1170828</a>] No more &amp;nbsp; is added to the source when using the &quot;New
+			Page&quot; button. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165264&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1165264</a>] A&nbsp;new configuration option has been included to force the
+			editor to ignore empty paragraph values&nbsp;(&lt;p&gt;&amp;nbsp;&lt;/p&gt;), returning
+			empty (&quot;&quot;). </li>
+		<li>No more &amp;nbsp; is added when creating a table or adding columns, rows or cells.
+		</li>
+		<li>The &lt;TD&gt; tags are now included in the FillEmptyBlocks configuration handling.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1224829&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1224829</a>] A small bug in the &quot;Find&quot; dialog has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1221307&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1221307</a>] A small bug in the &quot;Image&quot; dialog has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219981&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1219981</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155726&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1155726</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1178473&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1178473</a>] It is handling the &lt;FORM&gt;, &lt;TEXTAREA&gt; and &lt;SELECT&gt;
+			tags &quot;name&quot; attribute correctly. Thanks to thc33. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205403&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1205403</a>] The checkbox and radio button values are now handled correctly
+			in their dialog windows. Thanks to thc33. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236626&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1236626</a>] The toolbar now doesn't need to collapse when unloading the page
+			(IE only). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212559&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1212559</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1017231&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1017231</a>] The &quot;Save&quot; button now calls the &quot;onsubmit&quot;
+			event before posting the form. The submit can be cancelled if the onsubmit returns
+			&quot;false&quot;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1215823&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1215823</a>] The editor now works correctly on Firefox if it values is set to
+			&quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1217546&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1217546</a>] No error is thrown when &quot;pasting as plain text&quot; and no
+			text is available for pasting (as an image for example). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207031&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1207031</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1223978">SF
+				BUG-1223978</a>] The context menu is now available in the source view. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1213871">SF
+			BUG-1213871</a>] Undo has been added to table creation and table operation commands.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205211&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1205211</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229941&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1229941</a>] Small bug in the mcpuk file browser&nbsp;have been corrected.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
+			Infineon Technologies AG</a>.<br />
+		** This version has been partially sponsored by <a href="http://www.visualsoft.co.uk">
+			Visualsoft</a> <a href="http://www.visualsoft.co.uk/websolutions.html">Web Solutions</a>.<br />
+		*** This version has been partially sponsored by <a target="_blank" href="http://www.webcrossing.com">
+			Web Crossing, Inc</a>.</p>
+	<h3>
+		Version 2.0&nbsp;FC (Final Candidate)</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>A new tab called &quot;<strong>Link</strong>&quot; is available in the<strong> Image
+			Dialog</strong> window. In this way you can insert or modify the image link directly
+			from that dialog.* </li>
+		<li>The new &quot;<strong>Templates</strong>&quot; command is now available. Now the
+			user can select from a list of pre-build HTML and fill the editor with it. Take
+			a look at the &quot;_docs&quot; for more info.** </li>
+		<li>The <a target="_blank" href="http://mcpuk.net/fbxp/">mcpuk's</a> File Browser for
+			PHP has been included in the package. He became the official developer of the File
+			Manager for FCKeditor, so we can expect good news in the future. </li>
+		<li>New configuration options are available to <strong>hide tabs</strong> from the <strong>
+			Image</strong> Dialog&nbsp;and <strong>Link</strong> Dialog windows: LinkDlgHideTarget,
+			LinkDlgHideAdvanced, ImageDlgHideLink and ImageDlgHideAdvanced. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1189442&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1189442</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187164&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1187164</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185905&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1185905</a>] It is now possible to configure the editor to <strong>not convert Greek</strong>
+			or special&nbsp;<strong>Latin </strong>letters to ther specific HTML entities. You
+			can also configure it to not convert any character at all. Take a look at the &quot;ProcessHTMLEntities&quot;,
+			&quot;IncludeLatinEntities&quot; and &quot;IncludeGreekEntities&quot; configuration
+			options. </li>
+		<li>New language files are available:
+			<ul>
+				<li><strong>Basque</strong> (by Ibon Igartua) </li>
+				<li><strong>English (Australia / United Kingdom)</strong> (by Christopher Dawes) </li>
+				<li><strong>Ukrainian</strong> (by Alexander Pervak)</li>
+			</ul>
+		</li>
+		<li>The version and date information have been removed from the files headers to avoid
+			unecessary diffs in source control systems when new versions are released (from
+			now on). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1159854&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1159854</a>] Ther HTML output rendered by the server side integration files
+			are now XHTML compatible. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181823&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181823</a>] It is now possible to set the desired DOCTYPE to use when edit
+			HTML fragments (not in Full Page mode). </li>
+		<li>There is now an optional way to implement different &quot;mouse over&quot; effects
+			to the buttons when they are &quot;on&quot; of &quot;off&quot;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162200&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162200</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161633&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1161633</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050293&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1050293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1058948&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1058948</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1109120&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1109120</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155408&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1155408</a>] The IE memory leak bug has been solved. The
+			code has been completely reviewed and many memory usage improvements have been done.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1179645&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1179645</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1183252&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1183252</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1181647</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155627&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1155627</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155782&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1155782</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155750&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1155750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157166&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1157166</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157857&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1157857</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158121&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1158121</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1177153&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1177153</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1175847&amp;group_id=75348&amp;atid=543653">SF
+													BUG-1175847</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155747&amp;group_id=75348&amp;atid=543653">SF
+														BUG-1155747</a>] There was a loading
+			problem in Gecko browsers in some cases. It has been solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161147&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1161147</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157635&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1157635</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149805&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1149805</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124600&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1124600</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117535&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1117535</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118145&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1118145</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098113&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1098113</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092272&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1092272</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086416&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1086416</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027952&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1027952</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=978441&amp;group_id=75348&amp;atid=543653">SF
+													BUG-978441</a> ] A custom Undo/Redo system
+			has been implemented for IE. </li>
+		<li>The editor startup execution is now made in the right order (so configurations override
+			works correctly). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1166779</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166651&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1166651</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066198&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1066198</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090388&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1090388</a> ]&nbsp;No more &quot;illegible&quot; characters in the
+			toolbar when &quot;ClearType&quot; is active. </li>
+		<li>It is now possible to set the &quot;width&quot; style of the BODY tag in the EditorAreaCSS
+			to limit the editing area size. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1113620&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1113620</a>] In IE, the editor doesn't generate new entries in the browser history
+			anymore. </li>
+		<li>The editor now uses the same method used on version RC2 to load its contents on
+			Gecko. It is now possible to have more than one editor in the page. This change
+			has a negative impact: the BaseHref property is not working. </li>
+		<li>Changes have been made to make the editor work with PHP versions&nbsp;older than&nbsp;2.1.0.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1190835&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1190835</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1196547&amp;group_id=75348">SF
+				BUG-1196547</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156863&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1156863</a>] The &quot;Insert Horizontal Line&quot; command is now working
+			correctly. Thanks to Hector Raul Colonia Coral. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101861&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1101861</a>] The editor now shows a normal textarea correctly (as expected)
+			on Safari browsers (and all &quot;like Gecko&quot; browsers). Thanks to Bob Paul.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1182224&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1182224</a>] The PHP connector can now handle file extensions in upper case,&nbsp;like
+			JPG or Gif, correctly. Thanks to Georg Ivancsic. </li>
+		<li>The &quot;sample06.html&quot; is now working correctly with Gecko browsers. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156660&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1156660</a>] Some fixes have been applied to the Universal Keyboard. Thanks
+			to Abdul-Aziz Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1192881&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1192881</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185006&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1185006</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156068&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1156068</a>] The &quot;Browse Server&quot; button is now working correctly
+			for the Background Image in the &quot;Document Properties&quot; dialog window (full
+			page editing). The active &quot;BaseHref&quot; is also set to the preview window.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1191704&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1191704</a>] Invalid HTML tags (according to the W3C naming standards for XHTML)
+			are ignored with no errors. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185911&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1185911</a>] The Greek language file name has been corrected to &quot;el.js&quot;.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181572</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158421&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1158421</a>] The &quot;Print&quot; button is now active on startup. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1165219</a>] No error occours when the user defines just one color to the FontColors
+			on &quot;in page&quot; configurations. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162957&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162957</a>] The small problem with Zope (ZPT)&nbsp;has been solved. </li>
+		<li>Some small RTL / LTR corrections has been done in the interface and the Farsi language
+			has been added to the Universal Keyboard. Thanks to Silver Baghdasarian.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by the <a href="http://www.hamilton.edu">
+			Hamilton College</a>.<br />
+		** This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
+			Infineon Technologies AG</a>.</p>
+	<h3>
+		Version 2.0 RC3 (Release Candidate 3)</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The editor now offers native <strong>Perl integration</strong>! Thanks and welcome
+			to Takashi Yamaguchi, our official Perl developer. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026584&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1026584</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1112692&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1112692</a>] <strong>Formatting </strong>has been introduced to the
+			<strong>Source View</strong>. The output HTML can also be formatted. You can choose
+			to use spaces or tab for indentation. See the configuration file. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1031492&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1031492</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004293&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1004293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=784281&amp;group_id=75348&amp;atid=543656">SF
+					Feature-784281</a>] It is now possible to edit <strong>full HTML pages</strong>
+			with the editor. Use the &quot;FullPage&quot; configuration setting to activate
+			it. </li>
+		<li>The&nbsp;new toolbar command, &quot;<strong>Document Properties</strong>&quot;&nbsp;is
+			available to edit document header info, title, colors, background, etc... Full page
+			editing must be enabled. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151448&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1151448</a>] <strong>Spell Check</strong> is now available. You can use
+			<strong>ieSpell</strong> or <strong>Speller Pages</strong> right from FCKeditor.
+			More info about configuration can be found in the _docs folder. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041686&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1041686</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086386&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1086386</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124602&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1124602</a>] New &quot;<strong>Insert Anchor</strong>&quot; command
+			has been introduced. (The anchor icon is visible only over&nbsp;IE for now). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1123816&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1123816</a>] It is now possible to configure the editor to <strong>show &quot;fake&quot;
+				table borders</strong> when the border size is set to zero. (It is working only
+			on IE for now). </li>
+		<li><strong>Numbered</strong> and <strong>Bulleted</strong> lists can now be <strong>
+			configured</strong> . Just right click on then. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088608&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1088608</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144047&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1144047</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149808&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1149808</a>] A new configuration setting is available, &quot;<strong>BaseHref</strong>
+			&quot;, to set the URL used to resolve relative links. </li>
+		<li>It is now possible to set&nbsp;the <strong>content language direction</strong> .
+			See the &quot;FCKConfig.ContentLangDirection&quot; configurations setting. </li>
+		<li>All <strong>Field Commands</strong> available on version 1.6 have been upgraded
+			and&nbsp;included in this version: <strong>form</strong>, <strong>checkbox</strong>,
+			<strong>radio button</strong>, <strong>text field</strong>, text <strong>area</strong>,
+			<strong>select field</strong>, <strong>button</strong>, <strong>image button</strong>
+			and <strong>hidden field</strong> . </li>
+		<li><strong>Context menu</strong> options (right-click) has been added for: <strong>
+			anchors</strong>, <strong>select field</strong>, <strong>textarea</strong>, <strong>
+				checkbox</strong>, <strong>radio button</strong>, <strong>text field</strong>,
+			<strong>hidden field</strong>, <strong>textarea</strong>, <strong>button</strong>,
+			<strong>image button</strong>, <strong>form</strong>, <strong>bulleted list</strong>
+			and <strong>numbered list</strong> . </li>
+		<li>The &quot;<strong>Universal Keyboard</strong>&quot; has been converted from version
+			1.6 to this one and it's now available. </li>
+		<li>It is now possible to <strong>configure</strong> the items to be shown in the <strong>
+			context menu</strong> . Just use the FCKConfig.ContextMenu option&nbsp;at fckconfig.js.
+		</li>
+		<li>A new configuration (FillEmptyBlocks)&nbsp;is available to force the editor to <strong>
+			automatically insert a &amp;nbsp;</strong> on empty block elements (p, div, pre,
+			h1, etc...) to avoid differences from the editing and the final result. (Actually,
+			the editor automatically &quot;grows&quot; empty elements to make the user able
+			to enter text on it). Attention: the extra &amp;nbsp; will be added when switching
+			from WYSIWYG to Source View, so the user may see an additional space on empty blocks.
+			(XHTML support must be enabled). </li>
+		<li>It is now possible to configure the <strong>toolbar</strong> to &quot;<strong>break</strong>
+			&quot; between two toolbar strips. Just insert a &quot;/&quot; between then. Take
+			a look at fckconfig.js for a sample. </li>
+		<li>New Language files are available:
+			<ul>
+				<li><strong>Brazilian Portuguese</strong> (by Carlos Alberto Tomatis Loth) </li>
+				<li><strong>Bulgarian</strong> (by Miroslav Ivanov) </li>
+				<li><strong>Esperanto</strong> (by Tim Morley) </li>
+				<li><strong>Galician</strong> (by Fernando Riveiro Lopez) </li>
+				<li><strong>Japanese</strong> ( by Takashi Yamaguchi) </li>
+				<li><strong>Persian</strong> (by Hamed Taj-Abadi) </li>
+				<li><strong>Romanian</strong> (by Adrian Nicoara) </li>
+				<li><strong>Slovak</strong> (by Gabriel Kiss) </li>
+				<li><strong>Thai </strong>(by Audy Charin Arsakit) </li>
+				<li><strong>Turkish</strong> (by Reha Bi&ccedil;er) </li>
+				<li>The Chinese Traditional has been set as the default (zn) instead of zn-tw.</li>
+			</ul>
+		</li>
+		<li>Warning: All toolbar image images have been changed. The &quot;button.&quot; prefix
+			has been removed. If you have your custom skin, please rename your files. </li>
+		<li>A new plugin is available in the package: &quot;<strong>Placeholders</strong>&quot;.
+			In this way you can insert non editable tags in your document to be processed on
+			server side (very specific usage). </li>
+		<li>The ASPX files are no longer available in this package. They have been moved to
+			the FCKeditor.Net package. In this way the ASP.Net integration is much better organized.
+		</li>
+		<li>The FCKeditor.Packager program is now part of the main package. It is not anymore&nbsp;distributed
+			separately. </li>
+		<li>The PHP connector now sets the uploaded file permissions (chmod)&nbsp;to 0777. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090215&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1090215</a>] It's now possible to give back more info from your custom image
+			browser calling the SetUrl( url [, width] [, height] [, alt] ). Thanks to Ben Noblet.
+		</li>
+		<li>The package files now maintain their original &quot;Last Modified&quot; date, so
+			incremental FTP uploads can be used to update to&nbsp;new versions of the editor
+			(from now on). </li>
+		<li>The &quot;Source&quot; view now forces its contents to be written in &quot;Left
+			to Right&quot; direction even when the editor interface language is running a RTL
+			language (like Arabic, Hebrew or Persian). </li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124220&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1124220</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119894&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1119894</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090986&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1090986</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100408&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1100408</a>] The editor now works correctly when starting with an
+			empty value and switching to the Source mode. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119380&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1119380</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1115750&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1115750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101808&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1101808</a>] The problem with the scrollbar and the toolbar combos (Style,
+			Font, etc...) over Mac has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098460&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1098460</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076544&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1076544</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077845&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1077845</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092395&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1092395</a>] A new upload class has been included for the ASP File
+			Manager Connector. It uses the &quot;ADODB.Stream&quot; object. Many thanks to &quot;NetRube&quot;.
+		</li>
+		<li>I small correction has been made to the ColdFusion integration files. Thanks to
+			Hendrik Kramer. </li>
+		<li>There was a very specific problem when the editor was running over a FRAME executed
+			on another domain. </li>
+		<li>The performance problem on Gecko while typing&nbsp;quickly has been solved. </li>
+		<li>The &lt;br type= &quot;_moz&quot;&gt;is not anymore shown on XHTML source. </li>
+		<li>It has been introduced a mechanism to avoid automatic contents duplication on very
+			specific occasions (bad formatted HTML). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146407&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1146407</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1145800&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1145800</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118803&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1118803</a> ] Other&nbsp;issues in the XHTML processor have been solved.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1143969&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1143969</a>] The editor now accepts the &quot;accept-charset&quot; attribute
+			in the FORM tag (IE specific bug). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1122742&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1122742</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089548&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1089548</a> ] Now, the contents of the SCRIPT and STYLE tags remain untouched.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114748&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114748</a>] The PHP File Manager Connector now sets the new folders permissions
+			(chmod)&nbsp;to 0777 correctly. </li>
+		<li>The PHP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/php/config.php)
+			to set some security preferences. </li>
+		<li>The&nbsp;ASP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/asp/config.asp)
+			to set some security preferences. </li>
+		<li>A small bug in the toolbar rendering (strips auto position) has been corrected.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093732&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1093732</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1091377&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1091377</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083044&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1083044</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1096307&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1096307</a>] The configurations are now encoded so a user can use
+			values that has special chars (&amp;=/). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1103688&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1103688</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092331&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1092331</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088220&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1088220</a>] PHP samples now use PHP_SELF to automatically discover
+			the editor's base path. </li>
+		<li>Some small wrapping problems with some labels in the Image and Table dialog windows
+			have been fixed. </li>
+		<li>All .js files are now encoded in UTF-8 format with the BOM (byte order mask) to
+			avoid some errors on specific Linux installations. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114449&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114449</a>] The editor packager program has been modified so now it is possible
+			to use the source files to run the editor as described in the documentation. The
+			new packager must be downloaded. </li>
+		<li>A small problem with the editor focus while in&nbsp;source&nbsp;mode has been corrected.
+			Thanks to Eric (ric1607). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1108167&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1108167</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085149&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1085149</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151296&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1151296</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082433&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1082433</a>] No more IFRAMEs without src attribute. Now it points
+			to a blank page located in the editor's package. In this way we avoid security warnings
+			when using the editor over HTTPS. Thanks to Guillermo Bozovich. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1117779</a>] The editor now works well if you have more than one element named
+			&quot;submit&quot;&nbsp;on its form (even if it is not correct to have this situation).
+		</li>
+		<li>The XHTML processor was duplicating the text on some specific situation. It has
+			been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090213&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1090213</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098929&amp;group_id=75348&amp;atid=543653">SF
+				Patch-1098929</a>] With ASP, the editor now works correctly on pages using &quot;Option
+			Explicit&quot;. Thanks to Ben Noblet. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100759&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1100759</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029125&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1029125</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=966130&amp;group_id=75348&amp;atid=543653">SF
+					BUG-966130</a>] The editor was not working with old IE 5.5 browsers. There
+			was a problem with the XML parser. It has been fixed. </li>
+		<li>The localization engine is now working correctly over IE 5.5 browsers. </li>
+		<li>Some commands where not working well over IE 5.5 (emoticons, image,...). It has
+			been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146441&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1146441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149777&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1149777</a>] The editor now uses the TEXTAREA id&nbsp;in the ReplaceTextarea
+			function. If the id is now found, it uses the &quot;name&quot;. The docs have been
+			updated. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144297&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1144297</a>] Some corrections have been made to the Dutch language file. Thanks
+			to Erwin Dondorp. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1121365&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1121365</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090102&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1090102</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152171&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1152171</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102907&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1102907</a>] There is no problem now to start the editor with values
+			like &quot;&lt;div&gt;&lt;/div&gt;&quot; or &quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114059&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114059</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041861&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1041861</a>] The click on the disabled options in the Context Menu has no
+			effects now. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152617&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1152617</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102441&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1102441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1095312&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1095312</a>] Some problems when setting the editor source to very specific
+			values has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093514&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1093514</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089204&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1089204</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077609&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1077609</a>] The editor now runs correctly if called directly (locally)&nbsp;without
+			a server installation (just opening the HTML sample files). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088248&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1088248</a>] The editor now uses a different method to load its contents. In
+			this way the URLs remain untouched. </li>
+		<li>The PHP integration file now detects Internet Explorer 5.5 correctly.</li>
+	</ul>
+	<h3>
+		Version 2.0 RC2 (Release Candidate 2)</h3>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075961&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1075961</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083200&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1083200</a>] A new dialog window for the <strong>table cell properties</strong>
+			is now available (right-click). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] The new &quot;<strong>Split Cell</strong> &quot;, to split
+			a table cell in two columns, has been introduced (right-click). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] The new &quot;<strong>Merge Cells</strong>&quot;, to merge
+			table cells (in the same row), has been introduced (right-click). </li>
+		<li>The &quot;fake&quot; <strong>TAB key support</strong> (available by default over
+			Gecko browsers is now available over IE too. You can set the number of spaces to
+			add setting the FCKConfig.TabSpaces configuration setting. Set it to 0 (zero) to
+			disable this feature (IE). </li>
+		<li>It now possible to tell IE to send a <strong>&lt;BR&gt;</strong> when the user presses
+			the <strong>Enter key</strong>. Take a look at the FCKConfig.UseBROnCarriageReturn
+			configuration setting. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085422&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1085422</a>] <strong>ColdFusion</strong>: The <strong>File Manager connector</strong>
+			is now available! (Thanks to Hendrik Kramer). </li>
+		<li>The editor is now available in <strong>29 languages!</strong> The new language files
+			available are:&nbsp;
+			<ul>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1067775&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1067775</a>] <strong>Chinese Simplified and Traditional</strong> (Taiwan
+					and Hong Kong) (by NetRube). </li>
+				<li><strong>Czech</strong> (by David Hor&aacute;k). </li>
+				<li><strong>Danish</strong> (by Jesper Michelsen). </li>
+				<li><strong>Dutch</strong> (by Bram Crins). </li>
+				<li><strong>German</strong> (by Maik Unruh). </li>
+				<li><strong>Portuguese</strong> (Portugal) (by Francisco Pereira). </li>
+				<li><strong>Russian</strong> (by Andrey Grebnev). </li>
+				<li><strong>Slovenian</strong> (by Boris Volaric).</li>
+			</ul>
+		</li>
+		<li>Updates to the <strong>French</strong> language files (by Hubert Garrido). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085816&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1085816</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083743&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1083743</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078783&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1078783</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1077861</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1037404</a>] Many&nbsp;small bugs&nbsp;in the XHTML processor
+			has been corrected (workarounds to browser specific bugs). These are some things
+			to consider regarding the changes:
+			<ul>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083744&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1083744</a>] On Gecko browsers, any element attribute that the name starts with
+					&quot;_moz&quot; will be ignored. </li>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1060073&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1060073</a>] The &lt;STYLE&gt; and &lt;SCRIPT&gt; elements contents will be
+					handled as is, without CDATA tag surrounding. This may break XHTML validation. In
+					any case the use of external files for scripts and styles is recommended (W3C recommendation).</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088310&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1088310</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078837&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1078837</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
+					BUG-999792</a>] URLs now remain untouched when initializing the editor or
+			switching from WYSYWYG to Source and vice versa. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082323&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1082323</a>] The&nbsp;problem in the ASP and PHP connectors when handling non
+			&quot;strange&quot; chars in file names has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085034&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1085034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076796&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1076796</a>] Some bugs in the PHP connector have been corrected. </li>
+		<li>A&nbsp;problem with the &quot;Format&quot; command on IE browsers on languages different
+			of English has been solved. The negative side of this correction is that due to
+			a IE bad design it is not possible to update the &quot;Format&quot; combo while
+			moving throw the text (context sensitive). </li>
+		<li>On Gecko browsers, when selecting an image and executing the &quot;New Page&quot;
+			command, the image handles still appear, even if the image is not available anymore
+			(this is a Gecko bug). When clicking in&nbsp;a &quot;phanton&quot; randle, the browser
+			crashes. It doesn't&nbsp;happen (the crash)&nbsp;anymore. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082197&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1082197</a>] On ASP, the bug in the browser detection system for Gecko browsers
+			has been corrected. Thanks to Alex Varga. </li>
+		<li>Again on ASP, the browser detection for IE had some problems on servers that use
+			comma for decimal separators on numbers. It has been corrected. Thanks to Agrotic.
+		</li>
+		<li>No error is thrown now when&nbsp;non existing&nbsp;language is configured in the
+			editor. The English language file is loaded in that case. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077747&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1077747</a>] The missing images on the Office2003 and Silver skins are now included
+			in the package. </li>
+		<li>On some Gecko browsers, the dialog window was not loading correctly. I couldn't
+			reproduce the problem, but a fix has been applied based on users tests. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004078&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1004078</a>] ColdFusion: The &quot;config&quot; structure/hash table with keys
+			and values is in ColdFusion not(!) case sensitive. All keys returned by ColdFusion
+			are in upper case format. Because the FCKeditor configuration keys must be case
+			sensitive, we had to match all structure/hash keys with a list of the correct configuration
+			names in mixed case. This has been added to the fckeditor.cfc and fckeditor.cfm.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075166&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1075166</a>] ColdFusion: The &quot;fallback&quot; variant of the texteditor
+			(&lt;textarea&gt;) has a bug in the fckeditor.cfm. This has been fixed. </li>
+		<li>A typo in the Polish language file has been corrected. Thanks to Pawel Tomicki.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086370&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1086370</a>] A small coding type in the Link dialog window has been corrected.
+		</li>
+	</ul>
+	<h3>
+		Version 2.0 RC1 (Release Candidate 1)</h3>
+	<ul>
+		<li><strong>ASP</strong> support is now available (including the&nbsp;File Manager connector).
+		</li>
+		<li><strong>PHP</strong> support is now available (including the File Manager connector).
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1063217&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1063217</a>] The new advanced&nbsp;<strong>Style</strong> command is available
+			in the toolbar: full preview, context sensitive, style definitions are loaded from
+			a XML file (see documentation for more instructions). </li>
+		<li>The <strong>Font Format</strong>, <strong>Font Name</strong> and <strong>Font Size</strong>
+			toolbar command now show a <strong>preview</strong> of the available options. </li>
+		<li>The new <strong>Find</strong> and <strong>Replace</strong> features has been introduced.
+		</li>
+		<li>A new <strong>Plug-in</strong> system has been developed. Now it is quite easy to
+			customize the editor to your needs. (Take a look at the html/sample06.html file).
+		</li>
+		<li>The editor now handles <strong>HTML entities</strong> in the right way (XHTML support
+			must be set to &quot;true&quot;). It handles all entities defined in the W3C&nbsp;XHTML
+			DTD file. </li>
+		<li>A new &quot;_docs&quot; folder has been introduced for the <strong>documentation</strong>.
+			It is not yet complete, but I hope the community will help us to fill it better.
+		</li>
+		<li>It is now possible (even if it is not recommended by the W3C) to force the use of
+			simple ampersands (&amp;) on attributes (like the links href) instead of its entity
+			&amp;amp;. Just set FCKConfig.ForceSimpleAmpersand = true in the&nbsp;configuration
+			file. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026866&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1026866</a>] The &quot;<strong>EditorAreaCSS</strong>&quot; configuration
+			option has been introduced. In this way you can set the CSS to use in the editor
+			(editable area). </li>
+		<li>The editing area is not anymore clipped if the toolbar is too large and exceeds
+			the window width. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064902&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1064902</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033933&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1033933</a>] The editor <strong>interface</strong> is now completely <strong>localizable</strong>.
+			The version ships with 19 languages including: <b>Arabic</b>, <b>Bosnian</b>, <b>Catalan</b>,
+			<b>English</b>, <b>Spanish</b>, <b>Estonian</b>, <b>Finnish</b>, <b>French</b>,
+			<b>Greek</b>, <b>Hebrew</b>, <b>Croatian</b>, <b>Italian</b>, <b>Korean</b>, <b>Lithuanian</b>,
+			<b>Norwegian</b>, <strong>Polish</strong>, <strong>Serbian (Cyrillic)</strong>,
+			<strong>Serbian (Latin)</strong> and <strong>Swedish</strong>.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027858&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1027858</a>] Firefox 1.0 PR&nbsp;introduced&nbsp;a bug that made the editor
+			stop working on it. A workaround has been developed to fix the problem. </li>
+		<li>There was a positioning problem over IE&nbsp;with the color panel. It has been corrected.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049842&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1049842</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033832&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1033832</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028623&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1028623</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026610&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1026610</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064498&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1064498</a>] The combo commands in the toolbar were not opening
+			in the right way. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1053399&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1053399</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965318&amp;group_id=75348&amp;atid=543653">SF
+				BUG-965318</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018296&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1018296</a>] The toolbar buttons icons were not showing on some IE and
+			Firefox/Mac installations. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054621&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1054621</a>] Color pickers are now working with the &quot;office2003&quot; and
+			&quot;silver&quot; skins. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054108&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1054108</a>] IE doesn&rsquo;t recognize the &quot;&amp;apos;&quot; entity for
+			apostrophes, so a workaround has been developed to replace it with &quot;&amp;#39;&quot;
+			(its numeric entity representation). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983434&amp;group_id=75348&amp;atid=543653">SF
+			BUG-983434</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983398&amp;group_id=75348&amp;atid=543653">SF
+				BUG-983398</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028103&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1028103</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1072496&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1072496</a>] The problem with elements with name &quot;submit&quot;
+			inside the editor's form has been solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018743&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1018743</a>] The problem with Gecko when collapsing the toolbar while in source
+			mode has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1065268&amp;group_id=75348">SF
+			BUG-1065268</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034354&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1034354</a>] The XHTML processor now doesn&rsquo;t use the minimized tag
+			syntax (like &lt;br/&gt;) for empty elements that are not marked as EMPTY in the
+			W3C XHTML DTD specifications. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029654&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1029654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046500&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1046500</a>] Due to a bug on Gecko there was a problem when creating links.
+			It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1065973&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1065973</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
+				BUG-999792</a>] The editor now handles relative URLs in IE. In effect IE transform
+			all relative URLs to absolute links, pointing to the site the editor is running.
+			So now the editor removes the protocol and host part of the link if it matches the
+			running server. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1071824&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1071824</a>] The color dialog box bug has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052856&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1052856</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046493&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1046493</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1023530&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1023530</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1025978&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1025978</a>] The editor now doesn&rsquo;t throw an error if no selection
+			was made and the create link command is used. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036756&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1036756</a>] The XHTML processor has been reviewed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029101&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1029101</a>] The Paste from Word feature is working correctly. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034623&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1034623</a>] There is an IE bug when setting the editor value to &quot;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&quot;.
+			A workaround has been developed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052695&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1052695</a>] There are some rendering differences between Netscape and Mozilla.
+			(Actually that is a bug on both browsers). A workaround has been developed to solve
+			it. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1073053&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1073053</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050394&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1050394</a>] The editor doesn&rsquo;t throw errors when hidden. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066321&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1066321</a>] Scrollbars should not appear on dialog boxes (at least for the
+			Image and Link ones). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046490&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1046490</a>] Dialogs now are forced to show on foreground over Mac. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1073955&amp;group_id=75348">SF
+			BUG-1073955</a>] A small bug in the image dialog window has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049534&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1049534</a>] The Resources Browser window is now working well over Gecko browsers.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036675&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1036675</a>] The Resources Browser window now displays the server error on bad
+			installations.</li>
+	</ul>
+	<h3>
+		Version 2.0 Beta 2</h3>
+	<ul>
+		<li>There is a new configuration - &quot;<strong>GeckoUseSPAN</strong>&quot; - that
+			can be used to tell Gecko browsers to use &lt;SPAN style...&gt; or &lt;B&gt;, &lt;I&gt;
+			and &lt;U&gt; for the bold, italic and underline commands. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1002622&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1002622</a>] New <strong>Text Color</strong> and&nbsp;<strong>Background Color</strong>
+			&nbsp;commands have been added to the editor. </li>
+		<li>On Gecko browsers, a message is shown when,&nbsp;because of&nbsp;security settings,&nbsp;the
+			user&nbsp;is not able to&nbsp;cut, copy or paste data from the clipboard using the
+			toolbar buttons or the context menu. </li>
+		<li>The new &quot;<strong>Paste as Plain Text</strong> &quot; command has been introduced.
+		</li>
+		<li>The new &quot;<strong>Paste from Word</strong> &quot; command has been introduced.
+		</li>
+		<li>A new configuration named&nbsp;&quot;StartupFocus&quot; can be used to tell the
+			editor to get the focus when the page is loaded. </li>
+		<li>All <strong>Java </strong>integration files has been moved to a new separated package.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1016781&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1016781</a>] <strong>Table operations</strong> are now working when right click
+			inside a table. The following commands has been introduced: <strong>Insert Row</strong>,
+			<strong>Delete Row</strong>, <strong>Insert Column</strong>, <strong>Delete Column</strong>,
+			<strong>Insert Cell</strong> and <strong>Delete Cells</strong> . </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965067&amp;group_id=75348&amp;atid=543653">SF
+			BUG-965067</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1010379&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1010379</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=977713&amp;group_id=75348&amp;atid=543653">SF
+					BUG-977713</a>] XHTML support was not working with FireFox, blocking the
+			editor when submitting data. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1007547&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1007547</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=974595&amp;group_id=75348&amp;atid=543653">SF
+				BUG-974595</a> ]&nbsp;The &quot;FCKLang not defined&quot; error when loading
+			has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1021028&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1021028</a>] If the editor doesn't have the focus, some commands were been executed
+			outside the editor in the place where the focus is. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=981191&amp;group_id=75348&amp;atid=543653">SF
+			BUG-981191</a>] We are now using &lt;!--- ---&gt; for ColdFusion comments.</li>
+	</ul>
+	<h3>
+		Version 2.0 Beta 1</h3>
+	<p>
+		This is the first beta of the 2.x series. It brings a lot of new and important things.
+		Beta versions will be released until all features available on version 1.x will
+		be introduced in the 2.0.<br />
+		<br />
+		<strong>Note:</strong> As it is a beta, it is not yet completely developed. Future
+		versions can bring new features that can break backward compatibility with this
+		version.
+	</p>
+	<ul>
+		<li>Gecko browsers (<strong>Mozilla</strong> and <strong>Netscape</strong>) support.
+		</li>
+		<li><strong>Quick startup</strong> response times. </li>
+		<li>Complete <strong>XHTML</strong> 1.0 support. </li>
+		<li><strong>Advanced link</strong> dialog box:
+			<ul>
+				<li>Target selection. </li>
+				<li>Popup configurator. </li>
+				<li>E-Mail link. </li>
+				<li>Anchor selector. </li>
+			</ul>
+		</li>
+		<li>New <strong>File Manager</strong>. </li>
+		<li>New dialog box system, with <strong>tabbed dialogs</strong> support. </li>
+		<li>New <strong>context menus</strong> with icons. </li>
+		<li>New toolbar with &quot;expand/collapse&quot; feature. </li>
+		<li><strong>Skins</strong> support. </li>
+		<li><strong>Right to left languages</strong> support. </li>
+	</ul>
+	<h3>
+		Version 1.6.1</h3>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=862364&amp;group_id=75348&amp;atid=543653">SF
+			BUG-862364</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=812733&amp;group_id=75348&amp;atid=543653">SF
+				BUG-812733</a>] There was a problem when the user tried to delete the last row,
+			collumn or cell in a table. It has been corrected.* </li>
+		<li>New Estonian language file. Thanks to Kristjan Kivikangur </li>
+		<li>New Croatian language file. Thanks to Alex Varga. </li>
+		<li>Updated language file for Czech. Thanks to Plachow. </li>
+		<li>Updated language file for Chineze (zh-cn). Thanks to Yanglin. </li>
+		<li>Updated language file for Catalan. Thanks to Jordi Cerdan.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
+			LLC</a>.</p>
+	<h3>
+		Version 1.6</h3>
+	<ul>
+		<li><strong>Context Menu</strong> support for <strong>form</strong> elements.* </li>
+		<li>New <strong>&quot;Selection Field&quot; command</strong> with advanced dialog box
+			for options definitions.* </li>
+		<li>New <strong>&quot;Image Button&quot; command</strong> is available.* </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936196&amp;group_id=75348&amp;atid=543656">SF
+			Feature-936196</a>] Many form elements <strong>bugs has been fixed</strong> and
+			<strong>many improvements</strong> has been done.* </li>
+		<li>New <strong>Java Integration Module</strong>. There is a complete Java API and Tag
+			Library implementations. Take a look at the _jsp directory. Thanks to Simone Chiaretta
+			and Hao Jiang. </li>
+		<li>The <strong>Word Spell Checker</strong> can be used. To be able to run it, your
+			browser security configuration &quot;Initialize and script ActiveX controls not
+			marked as safe&quot; must be set to &quot;Enable&quot; or &quot;Prompt&quot;. And
+			easier and more secure way to do that is to add your site in the list of trusted
+			sites. IeSpell can still be used. Take a look at the fck_config.js file for some
+			configuration options. Thanks to EdwardRF. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=748807&amp;group_id=75348&amp;atid=543656">SF
+			Feature-748807</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=801030&amp;group_id=75348&amp;atid=543656">SF
+				Feature-801030</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=880684&amp;group_id=75348&amp;atid=543656">SF
+					Feature-880684</a>] New &quot;<strong>Anchor&quot; command</strong>, including
+			context menu support. Thanks to G.Meijer. </li>
+		<li>Special characters are replaced with their decimal HTML entities when the XHMTL
+			support is enabled (only over IE5.5+). </li>
+		<li>New <strong>Office 2003 Style</strong> toolbar icons are available. Just uncomment
+			the config.ToolbarImagesPath key in the fck_config.js file. Thanks to Abdul-Aziz
+			A. Al-Oraij. <strong>Attention</strong>: the default toolbar items have been moved
+			to the &quot;images/toolbar/default&quot; directory. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=934566&amp;group_id=75348&amp;atid=543655">SF
+			Patch-934566</a>] <strong>Double click support</strong> for Images, Tables, Links,
+			Anchors and all Form elements. Thanks to Top Man. </li>
+		<li>New <strong>&quot;New Page&quot; command</strong> to start a typing from scratch.
+			Thanks to Abdul-Aziz A. Al-Oraij. </li>
+		<li>New <strong>&quot;Replace&quot; command</strong>. Thanks to Abdul-Aziz A. Al-Oraij.
+		</li>
+		<li>New <strong>&quot;Advanced Font Style&quot; command</strong>. Thanks to Abdul-Aziz
+			A. Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=738193&amp;group_id=75348&amp;atid=543656">SF
+			Feature-738193</a>] New <strong>&quot;Save&quot; command</strong>. It can be used
+			to simulate a save action, but in fact it just submits the form where the editor
+			is placed in. Thanks to Abdul-Aziz A. Al-Oraij. </li>
+		<li>New <strong>&quot;Universal Keyboard&quot; command</strong>. This 22 charsets are
+			available: Arabic, Belarusian, Bulgarian, Croatian, Czech, Danish, Finnish, French,
+			Greek, Hebrew, Hungarian, Diacritical, Macedonian, Norwegian, Polish, Russian, Serbian
+			(Cyrillic), Serbian (Latin), Slovak, Spanish, Ukrainian and Vietnamese. Includes
+			a keystroke listener to type Arabic on none Arabic OS or machine. Thanks to Abdul-Aziz
+			A. Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935358&amp;group_id=75348&amp;atid=543655">SF
+			Patch-935358</a>] New <strong>&quot;Preview&quot; command</strong>. Context menu
+			option is included and can be deactivated throw the config.ShowPreviewContextMenu
+			configuration. Thanks to Ben Ramsey. </li>
+		<li>New &quot;<strong>Table Auto Format</strong>&quot; context menu command. Hack a
+			little the fck_config.js and the fck_editorarea.css files. Thanks to Alexandros
+			Lezos. </li>
+		<li>New &quot;<strong>Bulleted List Properties</strong> &quot; context menu to define
+			its type and class. Thanks to Alexandros Lezos. </li>
+		<li>The <strong>image dialog</strong> box has been a <strong>redesigned</strong> . Thanks
+			to Mark Fierling. </li>
+		<li>Images now always have the <strong>&quot;alt&quot; attribute</strong> set, even
+			when it's value is empty. Thanks to Andreas Barnet. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942250&amp;group_id=75348&amp;atid=543655">SF
+			Patch-942250</a>] You can set on fck_config.js to <strong>automatically clean Word</strong>
+			pasting operations without a user confirmation. </li>
+		<li>Forms element dialogs and other localization pending labels has been updated. </li>
+		<li>A new <strong>Lithuanian</strong> language file is available. Thanks to Tauras Paliulis.
+		</li>
+		<li>A new <strong>Hebrew</strong> language file is available. Thanks to Ophir Radnitz.
+		</li>
+		<li>A new <strong>Serbian</strong> language file is available. Thanks to Zoran Subic.
+		</li>
+		<li><strong>Danish</strong> language file updates. Thanks to Flemming Jensen. </li>
+		<li><strong>Catalan</strong> language file updates. Thanks to Jordi Cerdan. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936514&amp;group_id=75348&amp;atid=543655">SF
+			Patch-936514</a>] [<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=918716&amp;group_id=75348">SF
+				BUG-918716</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=931037&amp;group_id=75348&amp;atid=543653">SF
+					BUG-931037</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=865864&amp;group_id=75348&amp;atid=543653">SF
+						BUG-865864</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=915410&amp;group_id=75348&amp;atid=543653">SF
+							BUG-915410</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918716&amp;group_id=75348&amp;atid=543653">SF
+								BUG-918716</a>] Some <strong>languages files</strong> were not
+			saved on <strong>UTF-8</strong> format causing some javascript errors on loading
+			the editor or making &quot;undefined&quot; to show on editor labels. This problem
+			was solved. </li>
+		<li>Updates on the testsubmit.php file. Thanks to Geat and Gabriel Schillaci </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=924620&amp;group_id=75348">SF
+			BUG-924620</a>] There was a problem when setting a name to an editor instance when
+			the name is used by another tag. For example when using &quot;description&quot;
+			as the name in a page with the &lt;META name=&quot;description&quot;&gt; tag. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935018&amp;group_id=75348&amp;atid=543653">SF
+			BUG-935018</a>] The &quot;buletted&quot; typo has been corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=902122&amp;group_id=75348&amp;atid=543653">SF
+			BUG-902122</a>] Wrong css and js file references have been corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918942&amp;group_id=75348&amp;atid=543653">SF
+			BUG-918942</a>] All dialog boxes now accept Enter and Escape keys as Ok and Cancel
+			buttons.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
+			LLC</a>.</p>
+	<h3>
+		Version 1.5</h3>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
+			Feature-913777</a>] <strong>New Form Commands</strong> are now available! Special
+			thanks to G.Meijer. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=861149&amp;group_id=75348&amp;atid=543656">SF
+			Feature-861149</a>] <strong>Print Command</strong> is now available! </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=743546&amp;group_id=75348">SF
+			BUG-743546</a>] The <strong>XHTML content duplication problem </strong>has been
+			<strong>solved</strong> . Thanks to Paul Hutchison. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=875853&amp;group_id=75348">SF
+			BUG-875853</a>] The <strong>image dialog box</strong> now gives precedence for width
+			and height values set as styles. In this way a user can change the size of the image
+			directly inside the editor and the changes will be reflected in the dialog box.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
+			Feature-788368</a>] The sample <strong>file upload </strong>manager for ASPX now
+			uses <strong>guids</strong> for the file name generation. In this way a support
+			XML file is not needed anymore. </li>
+		<li>It's possible now to <strong>programmatically change the Base Path</strong> of the
+			editor if it's installed in a directory different of &quot;/FCKeditor/&quot;. Something
+			like this:<br />
+			oFCKeditor.BasePath = '/FCKeditor/' ;<br />
+			Take a look at the _test directory for samples. </li>
+		<li>There was a little bug in the TAB feature that moved the insertion point if there
+			were any object (images, tables) in the content. It has been fixed. </li>
+		<li>The problem with <strong>accented and international characters</strong> on the PHP
+			test page was solved. </li>
+		<li>A new <strong>Chinese (Taiwan)</strong> language file is available. Thanks to Nil.
+		</li>
+		<li>A new <strong>Slovenian</strong> language file is available. Thanks to Pavel Rotar.
+		</li>
+		<li>A new <strong>Catalan</strong> language file is available. Thanks to Jordi Cerdan.
+		</li>
+		<li>A new <strong>Arabic</strong> language file is available. Thanks to Abdul-Aziz A.
+			Al-Oraij. </li>
+		<li>Small corrections on the <strong>Norwegian</strong> language file. </li>
+		<li>A Java version for the test results (testsubmit.jsp) is now available. Thanks to
+			Pritpal Dhaliwal. </li>
+		<li>When using JavaScript to create a editor instance it's possible now to easily get
+			the editor's value calling oFCKeditor.GetValue() (eg.). Better JavaScript API interfaces
+			will be available on version 2.0. </li>
+		<li>If <strong>XHTML</strong> is enabled the editor cleans the HTML before showing it
+			on the Source View, so the exact result can be viewed by the user. This option can
+			be activated setting config.EnableSourceXHTML = true in the fck_config.js file.
+		</li>
+		<li>The <strong>JS integration object</strong> now escapes all configuration settings,
+			in this way a user can use <strong>reserved chars</strong> on it. For example:
+			<br />
+			oFCKeditor.Config[&quot;ImageBrowserURL&quot;] = '/imgs/browse.asp?filter=abc*.jpg&amp;userid=1';
+		</li>
+		<li>A minimal browse server sample is now available in ASP. Thanks to Andreas Barnet.
+		</li>
+	</ul>
+	<h3>
+		Version 1.4</h3>
+	<ul>
+		<li><strong>ATTENTION: For PHP users</strong>: The editor was changed and now uses <strong>
+			htmlspecialchars</strong> instead of <strong>htmlentities</strong> when handling
+			the initial value. It should works well, but please make some tests before upgrading
+			definitively. If there is any problem just uncomment the line in the fckeditor.php
+			file (and send me a message!). </li>
+		<li>The editor is now integrated with <strong>ieSpell</strong> (<a href="http://www.iespell.com">http://www.iespell.com</a>)
+			for <strong>Spell Checking</strong>. You can configure the download URL in then
+			fck_config.js file. Thanks to Sanjay Sharma. (ieSpell is free for personal use but
+			must be paid for commercial use) </li>
+		<li><strong>Table</strong> and <strong>table cell</strong> dialogs has been changed.
+			Now you can <strong>select the class</strong> you want to be applied. Thanks to
+			Alexander Lezos. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=865378&amp;group_id=75348&amp;atid=543656">SF
+			Feature-865378</a>]A new <strong>upload support is available for ASP</strong>. It
+			uses the /UserImages/ folder in the root of the web site as the files container
+			and a counter controlled by the upload.cnt file. Both must have write permissions
+			set to the IUSR_xxx user. Thanks to Trax and Juanjo. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=798128&amp;group_id=75348&amp;atid=543655">SF
+			Patch-798128</a>] The user (programmer) can now define a <strong>custom separator</strong>
+			for the list items of a combo in the toolbar. Thanks to Wulff D. Heiss. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=741963&amp;group_id=75348&amp;atid=543656">SF
+			Feature-741963</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=878941&amp;group_id=75348&amp;atid=543656">SF
+				Feature-878941</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=869389&amp;group_id=75348&amp;atid=543655">SF
+					Patch-869389</a>] A minimal support for a &ldquo;fake&rdquo; <strong>TAB is now available</strong>,
+			even if HTML has no support for TAB. Now when the user presses the TAB key a configurable
+			number of spaces (&amp;nbsp;) is added. Take a look at config.TabSpaces on the fck_config.js
+			file. No action is performed if it is set to zero. The default value is 4. Thanks
+			to Phil Hassey. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-782779</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=790939&amp;group_id=75348&amp;atid=543653">SF
+				BUG-790939</a>] The problem with big images has been corrected. Thanks to Raver.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
+			BUG-862975</a>] Now the editor does nothing if no image is selected in the image
+			dialog box and the OK button is hit. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=851609&amp;group_id=75348&amp;atid=543653">SF
+			BUG-851609</a>] The problem with ASP and null values has been solved. </li>
+		<li><strong>Norwegean</strong> language pack. Thanks to Martin Kronstad. </li>
+		<li><strong>Hungarian</strong> language pack. Thanks to Bal&aacute;zs Szab&oacute;.
+		</li>
+		<li><strong>Bosnian</strong> language pack. Thanks to Trax. </li>
+		<li><strong>Japanese</strong> language pack. Thanks to Kato Yuichiro. </li>
+		<li>Updates on the <strong>Polish</strong> language pack. Thanks to Norbert Neubauer.
+		</li>
+		<li>The <strong>Chinese (Taiwan)</strong> (zh-tw) has been removed from the package
+			because it's corrupt. I'm sorry. I hope someone could send me a good version soon.
+		</li>
+	</ul>
+	<h3>
+		Version 1.3.1</h3>
+	<ul>
+		<li>It's now possible to configure the editor the insert a <strong>&lt;BR&gt; tag instead
+			of &lt;P&gt;</strong> when the user presses the <strong>&lt;Enter&gt;</strong> key.
+			Take a look at the fck_config.js configuration file for the &quot;<strong>UseBROnCarriageReturn</strong>&quot;
+			key. This option is disabled by default. </li>
+		<li><strong>Icelandic</strong> language pack. Thanks to Andri &Oacute;skarsson. </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
+			BUG-853374</a>] On IE 5.0 there was a little error introduced with version 1.3 on
+			initialization. It was corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853372&amp;group_id=75348">SF
+			BUG-853372</a>] On IE 5.0 there was a little error introduced with version 1.3 when
+			setting the focus in the editor. It was corrected. </li>
+		<li>Minor errors on the language file for <strong>english</strong> has been corrected.
+			Thanks to Anders Madsen. </li>
+		<li>Minor errors on the language file for <strong>danish</strong> has been corrected.
+			Thanks to Martin Johansen. </li>
+	</ul>
+	<h3>
+		Version 1.3</h3>
+	<ul>
+		<li>Language support for <strong>Danish, Polish, Simple Chinese, Slovak, Swedish and
+			Turkish</strong>. </li>
+		<li>Language updates for <strong>Romanian</strong>. </li>
+		<li>It's now possible to <strong>override</strong> any of the <strong>editor's configurations</strong>
+			(for now it's implemented just for JavaScript, ASPX and HTC modules). See _test/test.html
+			for a sample. I'm now waiting for the Community for the ASP, CFM and PHP versions.
+		</li>
+		<li>A new method is available for <strong>PHP</strong> users. It's called <strong>ReturnFCKeditor</strong>.
+			It works exactly like CreateFCKeditor, but it <strong>returns a string with the HTML</strong>
+			for the editor instead of output it (echo). This feature is useful for people who
+			are working with Smarty Templates or something like that. Thanks to Timothy J. Finucane.
+		</li>
+		<li>Many people have had problems with <strong>international characters</strong> over
+			<strong>PHP</strong>. I had also the same problem. PHP have strange problems with
+			character encoding. The code hasn't been changed but just saved again with Western
+			European encoding. <strong>Now it works well</strong> in my system.<br />
+			Take a look also at the &quot;default_charset&quot; configuration option at the
+			php.ini file. It doesn't seem to be an editor's problem but a PHP issue. </li>
+		<li>The &quot;<strong>testsubmit.php</strong>&quot; file now strips the &quot;<strong>Magic
+			Quotes</strong> &quot; that are automatically added by PHP on form posts. </li>
+		<li>A <strong>new language</strong> integration module is available for <strong>ASP/Jscript</strong>.
+			Thanks to Dimiter Naydenov. </li>
+		<li><strong>New configuration</strong> options are available to <strong>customize the
+			Target</strong> combo box in the <strong>Insert/Modify Link</strong> dialog box.
+			Now you can hide it, or set which options are available in the combo box. Take a
+			look at the fck_config.js file. </li>
+		<li>The <strong>Text as Plain Text</strong> toolbar <strong>icon</strong> has been changed
+			<strong>to avoid confusion</strong> with the Normal Paste or. Thanks to Kaupo Kalda.
+		</li>
+		<li>The file <strong>dhtmled.cab has been removed</strong> from the package. It's not
+			needed to the editor to work and caused some confusion for a few users. </li>
+		<li>The <strong>editor's content</strong> now <strong>doesn't loose the focus</strong>
+			when the user clicks with the mouse in a toolbar button. </li>
+		<li>On <strong>drag-and-drop</strong> operations the data to be inserted in the editor
+			is now <strong>converted to plain text</strong> when the &quot;<strong>ForcePasteAsPlainText</strong>&quot;
+			configuration is set to <strong>true</strong>. </li>
+		<li>The <strong>image browser</strong> sample in PHP now <strong>sorts the files</strong>
+			by name. Thanks to Sergey Lupashko. </li>
+		<li>Two <strong>new configuration</strong> options are available to <strong>turn on/off
+			by default</strong> the &quot;<strong>Show Borders</strong>&quot; and &quot;<strong>Show
+				Details</strong>&quot; commands. </li>
+		<li>Some <strong>characters have been removed</strong> from the &quot;<strong>Insert
+			Special Chars</strong>&quot; dialog box because they were causing encoding problems
+			in some languages. Thanks to Abomb Hua. </li>
+		<li><strong>JSP</strong> versions of the <strong>image and file upload and browsing</strong>
+			features. Thanks to Simone Chiaretta.</li>
+	</ul>
+	<h3>
+		Version 1.2.4</h3>
+	<ul>
+		<li>Language support for <strong>Spanish, Finnish, Romanian and Korean</strong>. </li>
+		<li>Language updates for <strong>German</strong>. </li>
+		<li>New <strong>Zoom</strong> toolbar option. (<a href="https://sourceforge.net/forum/forum.php?thread_id=904116&amp;forum_id=257180">Thanks
+			to &quot;mtn_roadie&quot;</a>)</li>
+	</ul>
+	<h3>
+		Version 1.2.2</h3>
+	<ul>
+		<li>Language support for <strong>French</strong>. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-782779</a>] Version 1.2 introduced a bug on the image dialog window: when changing
+			the image, no update was done. This bug is now fixed. </li>
+	</ul>
+	<h3>
+		Version 1.2</h3>
+	<ul>
+		<li>Enhancements to the <strong>Word cleaning</strong> feature (Thanks to Karl von Randow).
+		</li>
+		<li>The <strong>Table dialog box</strong> now handles the Style width and height set
+			in the table (Thanks to Roberto Arruda). There where many problems on prior version
+			when people changed manually the table's size, dragging the size handles, and then
+			it was not possible to set a new size using the table dialog box. </li>
+		<li>For the <strong>Image dialog box:</strong>
+			<ul>
+				<li>No image is shown in the preview pane if no image has been set. </li>
+				<li>If no HSpace is set in the image a &quot;-1&quot; value was shown in the dialog
+					box. Now, nothing is shown if the value is negative. </li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=739630&amp;group_id=75348&amp;atid=543653">SF
+			BUG-739630</a>] Image with link lost the link when changing its properties. The
+			problem is solved. </li>
+		<li>Due to some problems in the XHTML cleaning (content duplication when the source
+			HTML is dirty and malformed), the <strong>XHTML support is turned off by default</strong>
+			from this version. You can still change this behavior and turn it on in the configuration
+			file. </li>
+		<li>Some little updates on the <strong>English </strong>language file. </li>
+		<li>A few addition of missing entries on all languages files (translations for these
+			changes are pending). </li>
+		<li>Language files has been added for the following languages:
+			<ul>
+				<li><strong>Brazilian Portuguese</strong> (pt-br) </li>
+				<li><strong>Czech</strong> (cz) </li>
+				<li><strong>Dutch</strong> (nl) </li>
+				<li><strong>Russian</strong> (ru) </li>
+				<li><strong>Chinese (Taiwan)</strong> (zh-tw) </li>
+				<li><strong>Greek</strong> (gr) </li>
+				<li><strong>German</strong> (de)</li>
+			</ul>
+		</li>
+	</ul>
+	<h3>
+		Version 1.1</h3>
+	<ul>
+		<li>The &quot;<strong>Multi Language</strong>&quot; system is now available. This version
+			ships with English and Italian versions completed. Other languages will be available
+			soon. The editor automatically detects the client language and sets all labels,
+			tooltips and dialog boxes to it, if available. The auto detection and the default
+			language can be set in the <strong>fck_config.file</strong>. </li>
+		<li>Two files can now be created to isolate customizations code from the original source
+			code of the editor: <strong>fckeditor.config.js</strong> and <strong>fckeditor.custom.js</strong>.
+			Create these files in the root folder of your web site, if needed. The first one
+			can be used to add or override configurations set on fck_config.js. The second one
+			is used for custom actions and behaviors. </li>
+		<li>A problem with relative links and images like &quot;/test/test.doc&quot; has been
+			solved. In prior versions, only with XHTML support enabled, the URL was changed
+			to something like &quot;http://www.mysite.xxx/test/test.doc&quot; (The domain was
+			automatically added). Now the XHTML cleaning procedure gets the URLs exactly how
+			they are defined in the editor&rsquo;s HTML. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=742168&amp;group_id=75348&amp;atid=543653">SF
+			BUG-742168</a>] Mouse drag and drop from toolbar buttons has been disabled. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=768210&amp;group_id=75348&amp;atid=543653">SF
+			BUG-768210</a>] HTML entities, like <strong>&amp;lt;</strong>, were not load correctly.
+			The problem is solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=748812&amp;group_id=75348&amp;atid=543653">SF
+			BUG-748812</a>] The link dialog window doesn't open when the link button is grayed.
+		</li>
+	</ul>
+	<h3>
+		Version 1.0</h3>
+	<ul>
+		<li>Three new options are available in the configuration file to set what file types
+			are allowed / denied to be uploaded from the &quot;Insert Link&quot; and &quot;Insert
+			Image&quot; dialog boxes. </li>
+		<li>Upload options, for links and images, are automatically hidden on IE 5.0 browsers
+			(it's not compatible). </li>
+		<li>[SF BUG-734894] Fixed a problem on XHTML cleaning: the value on INPUT fields were
+			lost. </li>
+		<li>[SF BUG-713797] Fixed some image dialog errors when trying to set image properties
+			when no image is available. </li>
+		<li>[SF BUG-736414] Developed a workaround for a DHTML control bug when loading in the
+			editor some HTML started with &lt;p&gt;&lt;hr&gt;&lt;/p&gt;. </li>
+		<li>[SF BUG-737143] Paste from Word cleaning changed to solve some IE 5.0 errors. This
+			feature is still not available over IE 5.0. </li>
+		<li>[SF BUG-737233] CSS mappings are now OK on the PHP image browser module. </li>
+		<li>[SF BUG-737495] The image preview in the image dialog box is now working correctly.
+		</li>
+		<li>[SF BUG-737532] The editor automatically switches to WYSIWYG mode when the form
+			is posted. </li>
+		<li>[SF BUG-739571] The editor is now working well over Opera (as for Netscape, a TEXTAREA
+			is shown). </li>
+	</ul>
+	<h3>
+		Version 1.0 Final Candidate</h3>
+	<ul>
+		<li>A new dialog box for the &quot;Link&quot; command is available. Now you can upload
+			and browse the server exactly like the image dialog box. It's also possible to define
+			the link title and target window (_blank, _self, _parent and _top). As with the
+			image dialog box, a sample (and simple) file server browser is available. </li>
+		<li>A new configuration option is available to force every paste action to be handled
+			as plain text. See &quot;config.ForcePasteAsPlainText&quot; in fck_config.js. </li>
+		<li>A new Toolbar button is available: &quot;Paste from Word&quot;. It automatically
+			cleans the clipboard content before pasting (removesWord styles, classes, xml stuff,
+			etc...). This command is available for IE 5.5 and more. For IE 5.0 users, a message
+			is displayed advising that the text will not be cleaned before pasting. </li>
+		<li>The editor automatically detects Word clipboard data on pasting operations and asks
+			the user to clean it before pasting. This option is turned on by default but it
+			can be configured. See &quot;config.AutoDetectPasteFromWord&quot; in fck_config.js.
+		</li>
+		<li>Table properties are now available in cells' right click context menu. </li>
+		<li>It's now possible to edit cells advanced properties from it's right click context
+			menu. </li>
+	</ul>
+	<h3>
+		Version 1.0 Release Candidate 1 (RC1)</h3>
+	<ul>
+		<li>Some performance improvements. </li>
+		<li>The file dhtmled.cab has been added to the package for clients ho needs to install
+			the Microsoft DHTML Editor component. </li>
+		<li>[SF BUG-713952] The format command options are localized, so it depends on the IE
+			language to work. Until version 0.9.5 it was working only over English IE browsers.
+			Now the options are load dynamically on the client using the client's language.
+		</li>
+		<li>[SF BUG-712103] The style command is localized, so it depends on the IE language
+			to work. Until version 0.9.5 it was working only over English IE browsers. Now it
+			configures itself using the client's language. </li>
+		<li>[SF BUG-726137] On version 0.9.5, some commands (special chars, image, emoticons,
+			...) remove the next available character before inserting the required content even
+			if no selection was made in the editor. Now the editor replaces only the selected
+			content (if available). </li>
+	</ul>
+	<h3>
+		Version 0.9.5 beta</h3>
+	<ul>
+		<li>XHTML support is now available! It can be enabled/disabled in the fck_config.js
+			file. </li>
+		<li>&quot;Show Table Borders&quot; option: show borders for tables with borders size
+			set to zero. </li>
+		<li>&quot;Show Details&quot; option: show hidden elements (comments, scripts, paragraphs,
+			line breaks) </li>
+		<li>IE behavior integration module. Thanks to Daniel Shryock. </li>
+		<li>&quot;Find&quot; option: to find text in the document. </li>
+		<li>More performance enhancements. </li>
+		<li>New testsubmit.php file. Thansk to Jim Michaels. </li>
+		<li>Two initial PHP upload manager implementations (not working yet). Thanks to Frederic
+			Tyndiuk and Christian Liljedahl. </li>
+		<li>Initial PHP image browser implementation (not working yet). Thanks to Frederic Tyndiuk.
+		</li>
+		<li>Initial CFM upload manager implementation. Thanks to John Watson. </li>
+	</ul>
+	<h3>
+		Version 0.9.4 beta</h3>
+	<ul>
+		<li>ColdFusion module integration is now available! Thanks to John Watson. </li>
+		<li>&quot;Insert Smiley&quot; toolbar option! Thanks to Fredox. Take a look at fck_config.js
+			for configuration options. </li>
+		<li>&quot;Paste as plain text&quot; toolbar option! </li>
+		<li>Right click support for links (edit / remove). </li>
+		<li>Buttons now are shown in gray when disabled. </li>
+		<li>Buttons are shown just when the image is downloaded (no more &quot;red x&quot; while
+			waiting for it). </li>
+		<li>The toolbar background color can be set with a CSS style (see fck_editor.css). </li>
+		<li>Toolbar images have been reviewed:
+			<ul>
+				<li>Now they are transparent. </li>
+				<li>No more over...gif for every button (so the editor loads quicker). </li>
+				<li>Buttons states are controlled with CSS styles. (see fck_editor.css).</li>
+			</ul>
+		</li>
+		<li>Internet Explorer 5.0 compatibility, except for the image uploading popup. </li>
+		<li>Optimizations when loading the editor. </li>
+		<li>[SF BUG-709544] - Toolbar buttons wait for the images to be downloaded to start
+			watching and responding the user actions (turn buttons on/off when the user changes
+			position inside the editor). </li>
+		<li>JavaScript integration is now Object Oriented. CreateFCKeditor function is not available
+			anymore. Take a look in test.html. </li>
+		<li>Two new configuration options, ImageBrowser and ImageUpload, are available to turn
+			on and off the image upload and image browsing options in the Image dialog box.
+			This options can be hidden for a specific editor instance throw specific URL parameter
+			in the editor&rsquo;s IFRAME (upload=true/false&amp;browse=true/false). All specific
+			language integration modules handle this option. For sample see the _test directory.
+		</li>
+	</ul>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/_upgrade.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/_upgrade.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/_upgrade.html	(revision 1610)
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Upgrade</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor Upgrade</h1>
+	<p>
+		Please check the following URL for notes regarding upgrade:<br />
+		<a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading">
+			http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Installation/Upgrading</a></p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/_documentation.html
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/_documentation.html	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/_documentation.html	(revision 1610)
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Documentation</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor Documentation</h1>
+	<p>
+		You can find the official documentation for FCKeditor online, at <a href="http://docs.fckeditor.net/">
+			http://docs.fckeditor.net/</a>.</p>
+</body>
+</html>
Index: tags/2.8.3/wb/modules/fckeditor/fckeditor/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/fckeditor/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/fckeditor/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/fckeditor/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckconfig.js
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckconfig.js	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckconfig.js	(revision 1610)
@@ -0,0 +1,217 @@
+/*
+ #########################################################################################
+ # Configure FCKEditor according your needs
+ # ---------------------------------------------------------------------------------------
+ #  Purpose of this file is to define all settings of FCKEditor without changing the FCK
+ #  Javascript core file fckconfig.js. Doing so allows to upgrade to a newer version of
+ #  FCKEditor while keeping all your customisations (styles, toolbars...)
+ #  
+ #  Author: Christian Sommer, (doc)
+ #
+ #  Follow this link for more information:
+ #  http://wiki.fckeditor.net/Developer%27s_Guide/Configuration/Configurations_Settings
+ #  
+ #########################################################################################
+*/
+
+// required settings to make FCKEditor work with Website Baker (do not change them)
+    FCKConfig.Plugins.Add( 'WBModules', 'en,nl,de' ) ;
+    FCKConfig.Plugins.Add( 'WBDroplets', 'en,nl,de' ) ;
+//  FCKConfig.Plugins.Add( 'youtube', 'en,ja,de' );
+    FCKConfig.Plugins.Add( 'swfobject', 'en,es') ;
+//  FCKConfig.Plugins.Add( 'flvPlayer','en,de') ;
+
+// ----------------------
+// Configure Syntax highlighter for 2.0.x
+FCKConfig.Plugins.Add('syntaxhighlight2', 'en');
+// default language options:
+// c++,csharp,css,delphi,java,jscript,php,python,ruby,sql,vb,xhtml
+FCKConfig.SyntaxHighlight2LangDefault = 'php';
+//
+// ----------------------
+
+// FCKConfig.Plugins.Add( 'autogrow' ) ;
+// FCKConfig.Plugins.Add( 'dragresizetable' );
+FCKConfig.AutoGrowMax = 600 ;
+
+// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;	// ASP style server side code <%...%>
+// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;	// PHP style server side code
+// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
+
+// #########################################################################################
+// # FCKEditor: General settings
+// # ---------------------------------------------------------------------------------------
+// #  Here you can modify all the options available in the /fckeditor/editor/fckconfig.js
+// #  Settings defined here will overrule the ones defined in fckconfig.js without touching
+// #  the Javascript core files of FCK.
+// #
+// #  If you are missing some options, have a look into fckconfig.js and copy the required
+// #  code lines here
+// #########################################################################################
+
+// set doctype as used in your template to prevent code mix up (example XHTML 1.0 Transitional)
+   FCKConfig.DocType = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' ;
+
+// define FCK default language
+   FCKConfig.AutoDetectLanguage		= true ;	// could be turned off, if all users speek same language
+   FCKConfig.DefaultLanguage		= 'en' ;	// could be switched to de for German
+   FCKConfig.ContentLangDirection	= 'ltr' ;	// left to right
+
+// specify HTML tag used for ENTER and SHIFT+ENTER key
+   FCKConfig.EnterMode 			= 'p' ;		// allowed tags: p | div | br
+   FCKConfig.ShiftEnterMode 	= 'br' ;	// allowed tags: p | div | br
+   FCKConfig.StylesXmlPath		= FCKConfig.EditorPath + 'fckstyles.xml' ;
+   // define how FCK should handle empty blocks
+   FCKConfig.FillEmptyBlocks	= true ;   //true (default value) sets <p></p> tags to empty blocks
+
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// Note: If you miss some options, have a look into fckconfig.js and add the lines below
+// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+
+// #########################################################################################
+// # FCKEditor: Customised FCKEditor tool bar
+// # ---------------------------------------------------------------------------------------
+// #  Here you can modify the FCKEditor tool bar to your needs.
+// #  A collection of example layouts are provided below.
+// #
+// #  Note: Per default the tool bar named: "WBToolbar" will be used within FCKEditor.
+// #########################################################################################
+
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+//  Default toolbar set used by Website Baker
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   FCKConfig.ToolbarSets["Original"] = [
+	['Source','Save'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','SpellCheck'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Smiley','SpecialChar'],
+	['FitWindow','-','About'],
+	'/',
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule'],
+	'/',
+	['Style','FontFormat','FontName','FontSize'],
+	['TextColor','BGColor']
+] ;
+
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+//  original FCKEditor toolbar
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   FCKConfig.ToolbarSets["WBToolbar"] = [
+	['Source','DocProps','-','NewPage','Preview','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
+    ['FitWindow','ShowBlocks', '-', 'SyntaxHighLight2',  /**/ /* 'flvPlayer', */ '-','About'],
+	'/',
+	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+    ['TextColor','BGColor'],
+	['WBDroplets','WBModules','Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
+	'/',
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	'/',
+	['Style','FontFormat','FontName','FontSize']  // No comma for the last row.
+
+] ;
+
+
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+//  simple toolbar (only basic functions)
+// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   FCKConfig.ToolbarSets["Simple"] = [
+	['Preview',"Print"],
+	['Cut','Copy','Paste','PasteText'],
+	['Undo','Redo'],
+	['Bold','Italic','Underline'],
+	['OrderedList','UnorderedList','-','Table'],
+	['WBModules','Link','Unlink','Anchor'],
+	['RemoveFormat','Image','-','Source'],
+	'/',
+	['FontFormat','Style']
+] ;
+
+
+// #########################################################################################
+// # FCKEditor: CSS / XML / TEMPLATES
+// # ---------------------------------------------------------------------------------------
+// #  Here you can tweak the layout of the FCKEditor according your needs.
+// #  Specify HTML elements shown in the dropdown menu and the XML file which defines your
+// #  CSS styles available in the FCKEditor style menu.
+// #########################################################################################
+
+// define HTML elements which appear in the FCK "Format" toolbar menu
+   FCKConfig.FontFormats	= 'p;div;pre;address;h1;h2;h3;h4;h5;h6' ;
+// define font colors which can be set by the user (HEXADECIMAL)
+   FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF' ;
+// define fonts style and sizes which can be set by the user
+   FCKConfig.FontNames	= 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana;Wingdings' ;
+//   FCKConfig.FontSizes	= 'smaller;larger;xx-small;x-small;small;medium;large;x-large;xx-large' ;
+   FCKConfig.FontSizes	= '8px;10px;12px;14px;16px;18px;20px;24px;28px;32px;36px;48px;60px;72px' ;
+// make the offic2003 skin the default skin
+   FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/office2003/'
+   FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;
+   FCKConfig.TemplateReplaceAll = false;
+   FCKConfig.TemplateReplaceCheckbox = true ;
+   FCKConfig['StylesXmlPath'] = FCKConfig.BasePath+'/wb_config/wb_fckstyles.xml';
+
+/*
+   -----------------------------------------------------------------------------------------
+   Note: GENERAL HINTS ON CSS FORMATS AND XML FILES
+   -----------------------------------------------------------------------------------------
+   Easiest way to display all CSS definitions used in your template is to make a copy of your
+   CSS definition file and place it as "editor.css" in your template folder.
+   All styles will automatically be updated and used with the FCK editor.
+
+   If you don�t want to put custom "editor.css" files into your templates folder, you can
+   try the other approach introduced below:
+   
+   copy all CSS definitions of your template into file: /my_config/my_fckeditorarea.css
+    o Default HTML elements like (h1, p) will appear in the format you have specified via CSS.
+    o additional HTML elements like (.title) will appear in the "Styles" toolbar menu of FCK
+   
+   Via file (/my_config/my_fckstyles.xml) you can define additional styles for default
+   elements. Use this option, if you want to display conditional styles only if a special
+   HTML element is selected (e.g. after selecting an <img> element, the style menu will
+   provide additional elements like align=left, align=right, which don�t show up for other
+   elements like <p>
+
+   CSS definitions declared in the XML file are realised as INLINE styles. If you want avoid
+   INLINE elements, but the CSS definitions into the /my_config_my_fckeditorarea.css and
+   references only the class or ID in the XML file.
+
+   Use /my_config/my_template.xls to define custom Editor templates (e.g. 2 or 3 column).
+   This option is usefull if you have several side layouts (e.g. Level 1, Level 2...)
+*/
+
+
+// #########################################################################################
+// # FCK Editor: PLUGINS (Link, Image, Flash)
+// # ---------------------------------------------------------------------------------------
+// #  Plugin Link:   create internal or external links and URL
+// #  Plugin Image:  insert images to your WYSIWYG text area form the WB media directory
+// #  Plugin Flash:  insert flash elements including upload Option
+// #  
+// #  Note: 
+// #  You need to integrate the plugins into the menu bar so you can use them
+// #    FCKConfig.ToolbarSets["MyToolbar"] = [
+// #      ['Image',Link','Flash'], ...
+// #    ];
+// #########################################################################################
+
+// configure the image plugin
+   FCKConfig.ImageUpload = false ;		// display/hides image upload tab (allow/disable users to upload images from FCK)
+   FCKConfig.ImageBrowser = true ;		// enables/disables the file browser to search for uploaded files in /media folder
+
+// configure the link plugin
+   FCKConfig.LinkUpload = false ;		// display/hides link upload tab (allow/disable users to upload files from FCK)
+   FCKConfig.LinkBrowser = true ;		// enables/disables the file browser to search for uploaded files in /media folder
+
+// configure the flash plugin
+   FCKConfig.FlashUpload = false ;		// display/hides upload tab (allow/disable users to upload flash movies from FCK)
+   FCKConfig.FlashBrowser = true;		// enables/disables the file browser to search for uploaded files in /media folder
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckconfig.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fcktemplates.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fcktemplates.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fcktemplates.xml	(revision 1610)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the sample templates definitions file. It makes the "templates"
+ * command completely customizable.
+ *
+ * See FCKConfig.TemplatesXmlPath in the configuration file.
+-->
+<Templates imagesBasePath="fck_template/images/">
+	<Template title="Import Block3" image="template1.gif">
+		<Description>Import Block3</Description>
+		<Html>
+			<![CDATA[
+				<div class="block3">
+				<div class="text3 rounded">
+				<div>[[showrandomwysiwyg?section=206,207,208,209,628]]</div>
+				</div>
+				</div>
+            ]]>
+		</Html>
+	</Template>
+	<Template title="Image and Title" image="template1.gif">
+		<Description>One main image with a title and text that surround the image.</Description>
+		<Html>
+			<![CDATA[
+				<div><img align="left" width="61" vspace="2" hspace="10" height="57" alt="" src="http://staging.websitebaker.org/start/media/common/backend.png" /></div>
+				<h3>Type the title here</h3>
+				<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tatio</p>			
+			]]>
+		</Html>
+	</Template>
+	<Template title="Image and Title" image="yaml33_66.gif">
+		<Description>Subtemplate: 2 Spalten mit 33/66 Teilung nur YAML Framework</Description>
+		<Html>
+			<![CDATA[
+                <!-- Subtemplate: 2 Spalten mit 33/66 Teilung -->
+                <div class="subcolumns">
+                    <div class="c33l">
+                        <div class="subcl">
+                        <!-- Inhalt linker Block -->
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+
+                        </div>
+                    </div>
+
+                    <div class="c66r">
+                        <div class="subcr">
+                            <!-- Inhalt rechter Block -->
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+
+                        </div>
+                    </div>
+                </div>
+            ]]>
+		</Html>
+	</Template>
+	<Template title="Image and Title" image="yaml25_75.gif">
+		<Description>Subtemplate: 2 Spalten mit 25/75 Teilung nur YAML Framework</Description>
+		<Html>
+			<![CDATA[
+              <!-- Subtemplate: 2 Spalten mit 25/75 Teilung -->
+              <div class="subcolumns">
+                <div class="c25l">
+                  <div class="subcl">
+                    <!-- Inhalt linker Block -->
+                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                  </div>
+                </div>
+
+                <div class="c75r">
+                  <div class="subcr">
+                    <!-- Inhalt rechter Block -->
+                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                  </div>
+                </div>
+              </div>
+            ]]>
+		</Html>
+	</Template>
+    <Template title="Image and Title" image="yaml50_50.gif">
+		<Description>Subtemplate: 2 Spalten mit 50/50 Teilung nur YAML Framework</Description>
+		<Html>
+			<![CDATA[
+                <!-- Subtemplate: 2 Spalten mit 50/50 Teilung -->
+                <div class="subcolumns">
+                    <div class="c50l">
+                        <div class="subcl">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                    <div class="c50r">
+                        <div class="subcr">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                </div>
+            ]]>
+		</Html>
+	</Template>
+	<Template title="Image and Title" image="yaml33_33_33.gif">
+		<Description>Subtemplate: 3 Spalten mit 33/33/33 Teilung nur YAML Framework</Description>
+		<Html>
+			<![CDATA[
+                <!-- Subtemplate: 3 Spalten mit 33/33/33 Teilung -->
+                <div class="subcolumns">
+                    <div class="c33l">
+                        <div class="subcl">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                    <div class="c33l">
+                        <div class="subcl">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                    <div class="c33r">
+                        <div class="subcr">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                </div>
+			]]>
+		</Html>
+	</Template>
+	<Template title="Image and Title" image="yaml66_33.gif">
+		<Description>Subtemplate: 2 Spalten mit 66/33 Teilung nur YAML Framework</Description>
+		<Html>
+			<![CDATA[
+                <!-- Subtemplate: 2 Spalten mit 66/33 Teilung -->
+                <div class="subcolumns">
+                    <div class="c66l">
+                        <div class="subcl">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                    <div class="c33r">
+                        <div class="subcr">
+                            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in </p>
+                        </div>
+                    </div>
+                </div>
+		]]>
+		</Html>
+	</Template>
+	<Template title="Strange Template" image="template2.gif">
+		<Description>A template that defines two colums, each one with a title, and some text.</Description>
+		<Html>
+			<![CDATA[
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tbody>
+						<tr>
+							<td width="50%">
+							<h3>Title 1</h3>
+							</td>
+							<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
+							<td width="50%">
+							<h3>Title 2</h3>
+							</td>
+						</tr>
+						<tr>
+							<td>Text 1</td>
+							<td>&nbsp;</td>
+							<td>Text 2</td>
+						</tr>
+					</tbody>
+				</table>
+				More text goes here.
+			]]>
+		</Html>
+	</Template>
+	<Template title="Text and Table" image="template3.gif">
+		<Description>A title with some text and a table.</Description>
+		<Html>
+			<![CDATA[
+				<table align="left" width="80%" border="0" cellspacing="0" cellpadding="0"><tr><td>
+					<h3>Title goes here</h3>
+					<p>
+					<table style="FLOAT: right" cellspacing="0" cellpadding="0" width="150" border="1">
+						<tbody>
+							<tr>
+								<td align="center" colspan="3"><strong>Table title</strong></td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+							<tr>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+								<td>&nbsp;</td>
+							</tr>
+						</tbody>
+					</table>
+					Type the text here</p>
+				</td></tr></table>
+			]]>
+		</Html>
+	</Template>
+</Templates>

Property changes on: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fcktemplates.xml
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/wb_config/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/wb_config/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/wb_config/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/wb_config/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckeditorarea.css
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckeditorarea.css	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckeditorarea.css	(revision 1610)
@@ -0,0 +1,36 @@
+/*
+ #########################################################################################
+ # Configure FCKEditor according your needs
+ # ---------------------------------------------------------------------------------------
+ #  Copy all CSS definitions of your Website Baker template here enables FCKEditor to
+ #  display the contents in the textarea field as shown in the frontend of Website Baker
+ #  
+ #  Note: The "body" styles should match your editor web site, mainly regarding
+ #  background color and font family and size.
+ #  
+ #########################################################################################
+*/
+
+body {
+  font-family:Verdana,Helvetica, Arial, sans-serif;
+  font-size:small;
+  background-color: #FFF;
+  padding: 5px 5px 5px 5px;
+  margin: 0px;
+}
+
+a[href] {
+  color: #0000FF !important;	/* For Firefox... mark as important, otherwise it becomes black */
+}
+
+/* 
+  Just uncomment the following block if you want to avoid spaces between 
+  paragraphs. Remember to apply the same style in your output front end page.
+*/
+
+/*
+p, ul, li {
+  margin-top: 0px;
+  margin-bottom: 0px;
+}
+*/
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckeditorarea.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckstyles.xml
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckstyles.xml	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckstyles.xml	(revision 1610)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * This is the sample style definitions file. It makes the styles combo
+ * completely customizable.
+ *
+ * See FCKConfig.StylesXmlPath in the configuration file.
+-->
+<Styles>
+
+	<!-- Block Styles -->
+
+	<!--
+	# These styles are already available in the "Format" combo, so they are not
+	# needed here by default.
+
+	<Style name="Heading 1" element="h1" />
+	<Style name="Heading 2" element="h2" />
+	<Style name="Heading 3" element="h3" />
+	<Style name="Heading 4" element="h4" />
+	<Style name="Heading 5" element="h5" />
+	<Style name="Heading 6" element="h6" />
+	<Style name="Paragraph" element="p" />
+	<Style name="Document Block" element="div" />
+	<Style name="Preformatted Text" element="pre" />
+	<Style name="Address" element="address" />
+	-->
+
+	<!-- Inline Styles -->
+
+	<!--
+	# These are core styles available as toolbar buttons.
+
+	<Style name="Bold" element="b">
+		<Override element="strong" />
+	</Style>
+	<Style name="Italic" element="i">
+		<Override element="em" />
+	</Style>
+	<Style name="Underline" element="u" />
+	<Style name="Strikethrough" element="strike" />
+	<Style name="Subscript" element="sub" />
+	<Style name="Superscript" element="sup" />
+	-->
+
+	<Style name="Marker: Yellow" element="span">
+		<Style name="background-color" value="Yellow" />
+	</Style>
+	<Style name="Marker: Green" element="span">
+		<Style name="background-color" value="Lime" />
+	</Style>
+
+	<Style name="Big" element="big" />
+	<Style name="Small" element="small" />
+	<Style name="Typewriter" element="tt" />
+
+	<Style name="Computer Code" element="code" />
+	<Style name="Keyboard Phrase" element="kbd" />
+	<Style name="Sample Text" element="samp" />
+	<Style name="Variable" element="var" />
+
+	<Style name="Deleted Text" element="del" />
+	<Style name="Inserted Text" element="ins" />
+
+	<Style name="Cited Work" element="cite" />
+	<Style name="Inline Quotation" element="q" />
+
+	<Style name="Language: RTL" element="span">
+		<Attribute name="dir" value="rtl" />
+	</Style>
+	<Style name="Language: LTR" element="span">
+		<Attribute name="dir" value="ltr" />
+	</Style>
+	<Style name="Language: RTL Strong" element="bdo">
+		<Attribute name="dir" value="rtl" />
+	</Style>
+	<Style name="Language: LTR Strong" element="bdo">
+		<Attribute name="dir" value="ltr" />
+	</Style>
+
+	<!-- Object Styles -->
+
+	<Style name="Image on Left" element="img">
+		<Attribute name="style" value="padding: 5px; margin-right: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="left" />
+	</Style>
+	<Style name="Image on Right" element="img">
+		<Attribute name="style" value="padding: 5px; margin-left: 5px" />
+		<Attribute name="border" value="2" />
+		<Attribute name="align" value="right" />
+	</Style>
+</Styles>

Property changes on: tags/2.8.3/wb/modules/fckeditor/wb_config/wb_fckstyles.xml
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/class.cssparser.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/class.cssparser.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/class.cssparser.php	(revision 1610)
@@ -0,0 +1,306 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+ * Class to parse css information.
+ *
+ * See the readme file : http://www.phpclasses.org/browse/file/4685.html
+ *
+ * $Id$
+ *
+ * @author http://www.phpclasses.org/browse/package/1289.html
+ * @package PhpGedView
+ * @subpackage Charts
+ *
+ * added function GetXML to the cssparser class (Christian Sommer, 2007)
+ *
+ */
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+class cssparser {
+	var $css;
+	var $html;
+  
+	function cssparser($html = true) {
+		// Register "destructor"
+		register_shutdown_function(array(&$this, "finalize"));
+		$this->html = ($html != false);
+		$this->Clear();
+	}
+  
+	function finalize() {
+		unset($this->css);
+	}
+  
+	function Clear() {
+		unset($this->css);
+		$this->css = array();
+		if($this->html) {
+			$this->Add("ADDRESS", "");
+			$this->Add("APPLET", "");
+			$this->Add("AREA", "");
+			$this->Add("A", "");
+			$this->Add("A:visited", "");
+			$this->Add("BASE", "");
+			$this->Add("BASEFONT", "");
+			$this->Add("BIG", "");
+			$this->Add("BLOCKQUOTE", "");
+			$this->Add("BODY", "");
+			$this->Add("BR", "");
+			$this->Add("B", "");
+			$this->Add("CAPTION", "");
+			$this->Add("CENTER", "");
+			$this->Add("CITE", "");
+			$this->Add("CODE", "");
+			$this->Add("DD", "");
+			$this->Add("DFN", "");
+			$this->Add("DIR", "");
+			$this->Add("DIV", "");
+			$this->Add("DL", "");
+			$this->Add("DT", "");
+			$this->Add("EM", "");
+			$this->Add("FONT", "");
+			$this->Add("FORM", "");
+			$this->Add("H1", "");
+			$this->Add("H2", "");
+			$this->Add("H3", "");
+			$this->Add("H4", "");
+			$this->Add("H5", "");
+			$this->Add("H6", "");
+			$this->Add("HEAD", "");
+			$this->Add("HR", "");
+			$this->Add("HTML", "");
+			$this->Add("IMG", "");
+			$this->Add("INPUT", "");
+			$this->Add("ISINDEX", "");
+			$this->Add("I", "");
+			$this->Add("KBD", "");
+			$this->Add("LINK", "");
+			$this->Add("LI", "");
+			$this->Add("MAP", "");
+			$this->Add("MENU", "");
+			$this->Add("META", "");
+			$this->Add("OL", "");
+			$this->Add("OPTION", "");
+			$this->Add("PARAM", "");
+			$this->Add("PRE", "");
+			$this->Add("P", "");
+			$this->Add("SAMP", "");
+			$this->Add("SCRIPT", "");
+			$this->Add("SELECT", "");
+			$this->Add("SMALL", "");
+			$this->Add("STRIKE", "");
+			$this->Add("STRONG", "");
+			$this->Add("STYLE", "");
+			$this->Add("SUB", "");
+			$this->Add("SUP", "");
+			$this->Add("TABLE", "");
+			$this->Add("TD", "");
+			$this->Add("TEXTAREA", "");
+			$this->Add("TH", "");
+			$this->Add("TITLE", "");
+			$this->Add("TR", "");
+			$this->Add("TT", "");
+			$this->Add("UL", "");
+			$this->Add("U", "");
+			$this->Add("VAR", "");
+		}
+	}
+  
+	function SetHTML($html) {
+		$this->html = ($html != false);
+	}
+  
+	function Add($key, $codestr) {
+		$key = strtolower($key);
+		//    $codestr = strtolower($codestr);
+		if(!isset($this->css[$key])) {
+			$this->css[$key] = array();
+		}
+		$codes = explode(";",$codestr);
+		if(count($codes) > 0) {
+			foreach($codes as $code) {
+				$code = trim($code);
+				@list($codekey, $codevalue) = explode(":",$code);
+				if(strlen($codekey) > 0) {
+					$this->css[$key][trim($codekey)] = trim($codevalue);
+				}
+			}
+		}
+	}
+  
+	function Get($key, $property) {
+		$key = strtolower($key);
+		//    $property = strtolower($property);
+		@list($tag, $subtag) = explode(":",$key);
+		@list($tag, $class) = explode(".",$tag);
+		@list($tag, $id) = explode("#",$tag);
+		$result = "";
+		foreach($this->css as $_tag => $value) {
+			@list($_tag, $_subtag) = explode(":",$_tag);
+			@list($_tag, $_class) = explode(".",$_tag);
+			@list($_tag, $_id) = explode("#",$_tag);
+            $tagmatch = (strcmp($tag, $_tag) == 0) | (strlen($_tag) == 0);
+			$subtagmatch = (strcmp($subtag, $_subtag) == 0) | (strlen($_subtag) == 0);
+			$classmatch = (strcmp($class, $_class) == 0) | (strlen($_class) == 0);
+			$idmatch = (strcmp($id, $_id) == 0);
+            if($tagmatch & $subtagmatch & $classmatch & $idmatch) {
+				$temp = $_tag;
+				if((strlen($temp) > 0) & (strlen($_class) > 0)) {
+					$temp .= ".".$_class;
+				}
+				elseif(strlen($temp) == 0) {
+					$temp = ".".$_class;
+				}
+				if((strlen($temp) > 0) & (strlen($_subtag) > 0)) {
+					$temp .= ":".$_subtag;
+				}
+				elseif(strlen($temp) == 0) {
+					$temp = ":".$_subtag;
+				}
+				if(isset($this->css[$temp][$property])) {
+					$result = $this->css[$temp][$property];
+				}
+			}
+		}
+		return $result;
+	}
+  
+	function GetSection($key) {
+		$key = strtolower($key);
+        @list($tag, $subtag) = explode(":",$key);
+		@list($tag, $class) = explode(".",$tag);
+		@list($tag, $id) = explode("#",$tag);
+		$result = array();
+		foreach($this->css as $_tag => $value) {
+			@list($_tag, $_subtag) = explode(":",$_tag);
+			@list($_tag, $_class) = explode(".",$_tag);
+			@list($_tag, $_id) = explode("#",$_tag);
+			$tagmatch = (strcmp($tag, $_tag) == 0) | (strlen($_tag) == 0);
+			$subtagmatch = (strcmp($subtag, $_subtag) == 0) | (strlen($_subtag) == 0);
+			$classmatch = (strcmp($class, $_class) == 0) | (strlen($_class) == 0);
+			$idmatch = (strcmp($id, $_id) == 0);
+			if($tagmatch & $subtagmatch & $classmatch & $idmatch) {
+				$temp = $_tag;
+				if((strlen($temp) > 0) & (strlen($_class) > 0)) {
+					$temp .= ".".$_class;
+				}
+				elseif(strlen($temp) == 0) {
+					$temp = ".".$_class;
+				}
+				if((strlen($temp) > 0) & (strlen($_subtag) > 0)) {
+					$temp .= ":".$_subtag;
+				}
+				elseif(strlen($temp) == 0) {
+					$temp = ":".$_subtag;
+				}	
+				foreach($this->css[$temp] as $property => $value) {
+					$result[$property] = $value;
+				}
+			}
+		}
+		return $result;
+	}
+  
+	function ParseStr($str) {
+		$this->Clear();
+		// Remove comments
+		$str = preg_replace("/\/\*(.*)?\*\//Usi", "", $str);
+		// Parse this damn csscode
+		$parts = explode("}",$str);
+		if(count($parts) > 0) {
+			foreach($parts as $part) {
+				@list($keystr,$codestr) = explode("{",$part);
+				$keys = explode(",",trim($keystr));
+				if(count($keys) > 0) {
+					foreach($keys as $key) {
+						if(strlen($key) > 0) {
+							$key = str_replace("\n", "", $key);
+							$key = str_replace("\\", "", $key);
+							$this->Add($key, trim($codestr));
+						}
+					}
+				}
+			}
+		}
+		//
+		return (count($this->css) > 0);
+	}
+  
+	function Parse($filename) {
+		$this->Clear();
+		if(file_exists($filename)) {
+			return $this->ParseStr(file_get_contents($filename));
+		}
+		else {
+			return false;
+		}
+	}
+	
+	function GetCSS() {
+		$result = "";
+		foreach($this->css as $key => $values) {
+			$result .= $key." {\n";
+			foreach($values as $key => $value) {
+				$result .= "  $key: $value;\n";
+			}
+			$result .= "}\n\n";
+		}
+		return $result;
+	}
+
+	function GetXML() {
+		// Construction of "fckstyles.xml" for FCKeditor
+		$styles = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n";
+		$styles .= '<Styles>'."\n";
+		foreach ($this->css as $key => $value) {
+			// skip all CSS that are a combination of CSS
+			// skip CSS that are binded on an EVENT
+			if (strpos($key, " ") === false && strpos($key, ":") === false) {
+				$pieces = explode(".", $key, 2);
+				if (strcmp($pieces[0], "") != 0) {
+					continue;
+				} else {
+					$style_elem = "span";
+				}
+				if (strcmp($pieces[1], "") != 0) {
+					$style_class_name = $pieces[1];
+				} else {
+					$style_class_name = $pieces[0];
+				}
+				$styles .= '<Style name="'.$style_class_name.'" element="'.$style_elem.'"';
+				if (strcmp($style_class_name, $style_elem) != 0) {
+					$styles .= '>'."\n".'<Attribute name="class" value="'.$style_class_name.'" />'."\n".'</Style>'."\n";
+				} else {
+					$styles .= '/>'."\n";
+				}
+			}
+		}
+		$styles .= '</Styles>'."\n";
+		return trim($styles);
+	}
+}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/class.cssparser.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/include.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/include.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/include.php	(revision 1610)
@@ -0,0 +1,115 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+function reverse_htmlentities($mixed) {
+	$mixed = str_replace(array('&gt;','&lt;','&quot;','&amp;'), array('>','<','"','&'), $mixed);
+	return $mixed;
+}
+
+function get_template_name() {
+	global $database;
+	// returns the template name of the current displayed page
+
+	// Loading config.php is not needed here, it is loaded before. It breaks the module when the editor is called form another dir as WB_PATH/modules/mymodule
+	// require_once('../../config.php');
+
+	// work out default editor.css file for CKeditor
+	if(file_exists(WB_PATH .'/templates/' .DEFAULT_TEMPLATE .'/editor.css')) {
+		$fck_template_dir = DEFAULT_TEMPLATE;
+	} else {
+		$fck_template_dir = "none";
+	}
+
+	// check if a editor.css file exists in the specified template directory of current page
+	if (isset($_GET["page_id"]) && (int) $_GET["page_id"] > 0) {
+		$pageid = (int) $_GET["page_id"];
+
+		// obtain template folder of current page from the database
+		$query_page = "SELECT template FROM " .TABLE_PREFIX ."pages WHERE page_id =$pageid";
+		$pagetpl = $database->get_one($query_page);   // if empty, default template is used
+
+		// check if a specific template is defined for current page
+		if(isset($pagetpl) && $pagetpl != '') {
+			// check if a specify editor.css file is contained in that folder
+			if(file_exists(WB_PATH.'/templates/'.$pagetpl.'/editor.css')) {
+				$fck_template_dir = $pagetpl;
+			}
+		}
+	}
+	return $fck_template_dir;
+}
+
+function show_wysiwyg_editor($name, $id, $content, $width, $height) {
+	// create new CKeditor instance
+	require_once(WB_PATH.'/modules/fckeditor/fckeditor/fckeditor.php');
+	$oFCKeditor = new FCKeditor($name);
+
+	// set defaults (Note: custom settings defined in: "/my_config/my_fckconfig.js" instead of "/editor/fckconfig.js")
+	$oFCKeditor->BasePath = WB_URL.'/modules/fckeditor/fckeditor/';
+	$oFCKeditor->Config['CustomConfigurationsPath'] = WB_URL .'/modules/fckeditor/wb_config/wb_fckconfig.js';
+	$oFCKeditor->ToolbarSet = 'WBToolbar';        // toolbar defined in my_fckconfig.js
+
+	// obtain template name of current page (if empty, no editor.css files exists)
+	$template_name = get_template_name();
+
+	// work out default CSS file to be used for FCK textarea
+	if($template_name == "none") {
+		// no editor.css file exists in default template folder, or template folder of current page
+		$css_file = WB_URL .'/modules/fckeditor/wb_config/wb_fckeditorarea.css';
+	} else {
+		// editor.css file exists in default template folder or template folder of current page
+		$css_file = WB_URL .'/templates/' .$template_name .'/editor.css';
+	}
+	// set CSS file depending on $css_file
+	$oFCKeditor->Config['EditorAreaCSS'] = $css_file;
+
+	// work out settings for the FCK "Style" toolbar
+	if ($template_name == "none") {
+		// no custom editor.css exists, use default XML definitions
+		$oFCKeditor->Config['StylesXmlPath'] = WB_URL.'/modules/fckeditor/wb_config/wb_fckstyles.xml';
+	} else {
+		// file editor.css exists in template folder, parse it and create XML definitions
+		$oFCKeditor->Config['StylesXmlPath'] = WB_URL.'/modules/fckeditor/css_to_xml.php?template_name=' .$template_name;
+	}
+
+	// custom templates can be defined via /wb_config/wb_fcktemplates.xml
+	if(file_exists(WB_PATH .'/modules/fckeditor/wb_config/wb_fcktemplates.xml')) {
+		$oFCKeditor->Config['TemplatesXmlPath'] = WB_URL.'/modules/fckeditor/wb_config/wb_fcktemplates.xml';
+	}
+
+  // set required file connectors (overwrite settings which may be made in fckconfig.js or my_fckconfig.js)
+	$connectorPath = $oFCKeditor->BasePath.'editor/filemanager/connectors/php/connector.php';
+  $oFCKeditor->Config['LinkBrowserURL'] = $oFCKeditor->BasePath.'editor/filemanager/browser/default/browser.html?Connector='
+		.$connectorPath;
+  $oFCKeditor->Config['ImageBrowserURL'] = $oFCKeditor->BasePath.'editor/filemanager/browser/default/browser.html?Connector='
+		.$connectorPath;
+  $oFCKeditor->Config['FlashBrowserURL'] = $oFCKeditor->BasePath.'editor/filemanager/browser/default/browser.html?Connector='
+		.$connectorPath;
+
+  if(defined('EDITOR_WIDTH'))
+  {
+    $width = ( ($width > EDITOR_WIDTH ) OR (EDITOR_WIDTH <= 0) ) ? $width : EDITOR_WIDTH;
+  }
+
+	$oFCKeditor->Value = reverse_htmlentities($content);
+    $oFCKeditor->Width  = $width;
+	$oFCKeditor->Height = $height;
+	$oFCKeditor->Create();
+}

Property changes on: tags/2.8.3/wb/modules/fckeditor/include.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/uninstall.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn29.websitebaker2.org/trunk/wb/modules/fckeditor/uninstall.php $
+ * @lastmodified    $Date: 2010-11-23 00:55:43 +0100 (Di, 23. Nov 2010) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Delete the editor directory
+rm_full_dir(WB_PATH.'/modules/fckeditor/fckeditor');

Property changes on: tags/2.8.3/wb/modules/fckeditor/uninstall.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/info.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/info.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+$module_directory		= 'fckeditor';
+$module_name			= 'FCKeditor';
+$module_function		= 'WYSIWYG';
+$module_version			= '2.9.6';
+$module_platform		= '2.7 | 2.8.x';
+$module_requirements    = 'PHP 4.3.11 or higher, WB 2.7 or higher';
+$module_author 			= 'Christian Sommer, P. Widlund, S. Braunewell, M. Gallas, Wouldlouper, Aldus, Luisehahne';
+$module_license 		= 'GNU General Public License';
+$module_description 	= 'This module allows you to edit the contents of a page using <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a>.';

Property changes on: tags/2.8.3/wb/modules/fckeditor/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/install.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/install.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }

Property changes on: tags/2.8.3/wb/modules/fckeditor/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/index.php	(revision 1610)
@@ -0,0 +1,19 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn29.websitebaker2.org/trunk/wb/modules/fckeditor/index.php $
+ * @lastmodified    $Date: 2010-11-23 00:55:43 +0100 (Di, 23. Nov 2010) $
+ *
+ */
+
+header('Location: ../index.php');

Property changes on: tags/2.8.3/wb/modules/fckeditor/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/upgrade.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wysiwyg
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }

Property changes on: tags/2.8.3/wb/modules/fckeditor/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE FCKEDITOR MODULE
+ -----------------------------------------------------------------------------------------
+*/
+
+// Nederlandstalige beschrijving van de module
+$module_description 	= 'Met deze <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a> module kunt u de inhoud van een pagina wijzigen.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+    NORWEGIAN LANGUAGE FILE FOR THE ADDON:: FCKEDITOR
+ -----------------------------------------------------------------------------------------
+*/
+
+//Module Description
+$module_description 	= 'Med denne modulen kan du redigere innholdet p&aring; sidene dine ved &aring; benytte redigeringsverkt&oslash;yet <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a>.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/DA.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE MODULE: FCKEDITOR
+ -----------------------------------------------------------------------------------------
+*/
+
+// Dansk modulbeskrivelse
+$module_description 	= 'Dette modul muligg&oslash;r redigering af sideindhold ved hj&aelig;lp af  <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a>.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/FR.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ 
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: FCKEDITOR
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Ce module permet de modifier le contenu de la page avec <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a>.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/DE.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: FCKEDITOR
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description 	= 'Dieses Modul erlaubt das bearbeiten von Seiteninhalten mit dem <a href="http://www.fckeditor.net/" target="_blank">FCKeditor v2.6.6</a>.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/fckeditor/css_to_xml.php
===================================================================
--- tags/2.8.3/wb/modules/fckeditor/css_to_xml.php	(nonexistent)
+++ tags/2.8.3/wb/modules/fckeditor/css_to_xml.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require_once('../../config.php');
+
+if(isset($_GET['template_name'])) {
+	$temp_name = $_GET['template_name'];
+	// check if specified template exists
+	if(file_exists(WB_PATH .'/templates/' .$temp_name)) {
+		// parse the editor.css and write XML output
+		require_once(WB_PATH .'/modules/fckeditor/class.cssparser.php');
+		$cssparser = new cssparser();
+		$cssparser->Parse(WB_PATH .'/templates/' .$temp_name .'/editor.css');
+		header('Content-type: text/xml'); 
+		echo $cssparser->GetXML();
+	}
+}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/fckeditor/css_to_xml.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/LoginBox.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/LoginBox.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/LoginBox.php	(revision 1610)
@@ -0,0 +1,125 @@
+//:Puts a Login / Logout box on your page.
+//:Use: [[LoginBox?redirect=url]]
+//:Absolute or relative url possible
+//:Remember to enable frontend login in your website settings.
+
+	global $wb,$page_id,$TEXT, $MENU, $HEADING;
+
+	$return_value = '<div class="login-box">'."\n";
+	$return_admin = ' ';
+	// Return a system permission
+	function get_permission($name, $type = 'system')
+	{
+	   	global $wb;
+	// Append to permission type
+		$type .= '_permissions';
+		// Check if we have a section to check for
+		if($name == 'start') {
+			return true;
+		} else {
+			// Set system permissions var
+			$system_permissions = $wb->get_session('SYSTEM_PERMISSIONS');
+			// Set module permissions var
+			$module_permissions = $wb->get_session('MODULE_PERMISSIONS');
+			// Set template permissions var
+			$template_permissions = $wb->get_session('TEMPLATE_PERMISSIONS');
+			// Return true if system perm = 1
+			if (isset($$type) && is_array($$type) && is_numeric(array_search($name, $$type))) {
+				if($type == 'system_permissions') {
+					return true;
+				} else {
+					return false;
+				}
+			} else {
+				if($type == 'system_permissions') {
+					return false;
+				} else {
+					return true;
+				}
+			}
+		}
+	}
+
+	function get_page_permission($page, $action='admin') {
+		if ($action!='viewing'){ $action='admin';}
+		$action_groups=$action.'_groups';
+		$action_users=$action.'_users';
+		if (is_array($page)) {
+				$groups=$page[$action_groups];
+				$users=$page[$action_users];
+		} else {
+			global $database,$wb;
+			$results = $database->query("SELECT $action_groups,$action_users FROM ".TABLE_PREFIX."pages WHERE page_id = '$page'");
+			$result = $results->fetchRow();
+			$groups = explode(',', str_replace('_', '', $result[$action_groups]));
+			$users = explode(',', str_replace('_', '', $result[$action_users]));
+		}
+
+		$in_group = FALSE;
+		foreach($wb->get_groups_id() as $cur_gid){
+		    if (in_array($cur_gid, $groups)) {
+		        $in_group = TRUE;
+		    }
+		}
+		if((!$in_group) AND !is_numeric(array_search($wb->get_user_id(), $users))) {
+			return false;
+		}
+		return true;
+	}
+
+// Get redirect
+	$redirect_url = ((isset($_SESSION['HTTP_REFERER']) && $_SESSION['HTTP_REFERER'] != '') ? $_SESSION['HTTP_REFERER'] : WB_URL );
+   	$redirect_url = (isset($redirect) && ($redirect!='') ? $redirect : $redirect_url);
+
+	if ( ( FRONTEND_LOGIN == 'enabled') &&
+		    ( VISIBILITY != 'private') &&
+		        ( $wb->get_session('USER_ID') == '')  )
+	{
+		$return_value .= '<form action="'.LOGIN_URL.'" method="post">'."\n";
+		$return_value .= '<input type="hidden" name="url" value="'.$redirect_url.'" />'."\n";
+    	$return_value .= '<fieldset>'."\n";
+		$return_value .= '<h1>'.$TEXT['LOGIN'].'</h1>'."\n";
+		$return_value .= '<label for="username">'.$TEXT['USERNAME'].':</label>'."\n";
+		$return_value .= '<p><input type="text" name="username" id="username"  /></p>'."\n";
+		$return_value .= '<label for="password">'.$TEXT['PASSWORD'].':</label>'."\n";
+		$return_value .= '<p><input type="password" name="password" id="password"/></p>'."\n";
+		$return_value .= '<p><input type="submit" id="submit" value="'.$TEXT['LOGIN'].'" class="dbutton" /></p>'."\n";
+    	$return_value .= '<ul class="login-advance">'."\n";
+		$return_value .= '<li class="forgot"><a href="'.FORGOT_URL.'"><span>'.$TEXT['FORGOT_DETAILS'].'</span></a></li>'."\n";
+
+		if (intval(FRONTEND_SIGNUP) > 0)
+	    {
+	        $return_value .= '<li class="sign"><a href="'.SIGNUP_URL.'">'.$TEXT['SIGNUP'].'</a></li>'."\n";
+	    }
+	    $return_value .= '</ul>'."\n";
+	    $return_value .= '</fieldset>'."\n";
+		$return_value .= '</form>'."\n";
+
+	} elseif( (FRONTEND_LOGIN == 'enabled') &&
+				(is_numeric($wb->get_session('USER_ID'))) )
+	{
+			$return_value .= '<form action="'.LOGOUT_URL.'" method="post" class="login-table">'."\n";
+        	$return_value .= '<fieldset>'."\n";
+			$return_value .= '<h1>'.$TEXT["LOGGED_IN"].'</h1>'."\n";
+			$return_value .= '<label>'.$TEXT['WELCOME_BACK'].', '.$wb->get_display_name().'</label>'."\n";
+			$return_value .= '<p><input type="submit" name="submit" value="'.$MENU['LOGOUT'].'" class="dbutton" /></p>'."\n";
+	        $return_value .= '<ul class="logout-advance">'."\n";
+			$return_value .= '<li class="preference"><a href="'.PREFERENCES_URL.'" title="'.$MENU['PREFERENCES'].'">'.$MENU['PREFERENCES'].'</a></li>'."\n";
+
+			if ($wb->ami_group_member('1'))  //change ot the group that should get special links
+	        {
+		        $return_admin .= '<li class="admin"><a target="_blank" href="'.ADMIN_URL.'/index.php" title="'.$TEXT['ADMINISTRATION'].'" class="blank_target">'.$TEXT["ADMINISTRATION"].'</a></li>'."\n";
+				//you can add more links for your users like userpage, lastchangedpages or something
+				$return_value .= $return_admin;
+			}
+            //change ot the group that should get special links
+			if( get_permission('pages_modify') && get_page_permission( PAGE_ID ) )
+	        {
+				$return_value .= '<li class="modify"><a target="_blank" href="'.ADMIN_URL.'/pages/modify.php?page_id='.PAGE_ID.'" title="'.$HEADING['MODIFY_PAGE'].'" class="blank_target">'.$HEADING['MODIFY_PAGE'].'</a></li>'."\n";
+	        }
+	        $return_value .= '</ul>'."\n";
+	        $return_value .= '</fieldset>'."\n";
+			$return_value .= '</form>'."\n";
+	}
+	$return_value .= '</div>'."\n";
+	return $return_value;

Property changes on: tags/2.8.3/wb/modules/droplets/example/LoginBox.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/SectionPicker.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/SectionPicker.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/SectionPicker.php	(revision 1610)
@@ -0,0 +1,28 @@
+//:Load the view.php from any other section-module
+//:Use [[SectionPicker?sid=123]]
+global $database, $wb, $TEXT, $DGTEXT;
+$content = '';
+if( intval($sid)>0 ) {
+	$sql  = 'SELECT `page_id`, `section_id`, `module` FROM `'.TABLE_PREFIX.'sections` ';
+	$sql .= 'WHERE `section_id` = '.(int)$sid;
+	$sql .= '';
+	if($query_sec = $database->query($sql))
+	{
+		$section = $query_sec->fetchRow();
+		$section_id = $section['section_id'];
+		$module = $section['module'];
+		$_sFrontendCss = '/modules/'.$module.'/frontend.css';
+		if(is_readable(WB_PATH.$_sFrontendCss)) {
+			$_sSearch = preg_quote(WB_URL.'/modules/'.$module.'/frontend.css', '/');
+			if(preg_match('/<link[^>]*?href\s*=\s*\"'.$_sSearch.'\".*?\/>/si', $wb_page_data)) {
+				$_sFrontendCss = '';
+			}else {
+				$_sFrontendCss = '<link href="'.WB_URL.$_sFrontendCss.'" rel="stylesheet" type="text/css" media="screen" />';
+			}
+		} else { $_sFrontendCss = ''; }
+		ob_start();
+		require(WB_PATH.'/modules/'.$module.'/view.php');
+		$content = $_sFrontendCss.ob_get_clean();
+	}
+}
+return $content;
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/SectionPicker.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/EmailFilter.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/EmailFilter.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/EmailFilter.php	(revision 1610)
@@ -0,0 +1,3 @@
+//:Emailfiltering on your output - dummy Droplet
+//:usage:  [[EmailFilter]]
+return '';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/EmailFilter.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/Lorem.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/Lorem.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/Lorem.php	(revision 1610)
@@ -0,0 +1,18 @@
+//:Create Lorum Ipsum text
+//:Use: [[Lorem?blocks=6]] (max 6 paragraphs)
+$lorem = array();
+$lorem[] = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut odio. Nam sed est. Nam a risus et est iaculis adipiscing. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer ut justo. In tincidunt viverra nisl. Donec dictum malesuada magna. Curabitur id nibh auctor tellus adipiscing pharetra. Fusce vel justo non orci semper feugiat. Cras eu leo at purus ultrices tristique.<br /><br />";
+$lorem[] = "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.<br /><br />";
+$lorem[] = "Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.<br /><br />";
+$lorem[] = "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.<br /><br />";
+$lorem[] = "Cras consequat magna ac tellus. Duis sed metus sit amet nunc faucibus blandit. Fusce tempus cursus urna. Sed bibendum, dolor et volutpat nonummy, wisi justo convallis neque, eu feugiat leo ligula nec quam. Nulla in mi. Integer ac mauris vel ligula laoreet tristique. Nunc eget tortor in diam rhoncus vehicula. Nulla quis mi. Fusce porta fringilla mauris. Vestibulum sed dolor. Aliquam tincidunt interdum arcu. Vestibulum eget lacus. Curabitur pellentesque egestas lectus. Duis dolor. Aliquam erat volutpat. Aliquam erat volutpat. Duis egestas rhoncus dui. Sed iaculis, metus et mollis tincidunt, mauris dolor ornare odio, in cursus justo felis sit amet arcu. Aenean sollicitudin. Duis lectus leo, eleifend mollis, consequat ut, venenatis at, ante.<br /><br />";
+$lorem[] = "Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.<br /><br />"; 
+if (!isset($blocks)) $blocks=1;
+$blocks = (int)$blocks - 1;
+if ($blocks <= 0) $blocks = 0;
+if ($blocks > 5) $blocks = 5;
+$returnvalue = "";
+for ( $i=0 ; $i<=$blocks ; $i++) {
+    $returnvalue .= $lorem[$i];
+}
+return $returnvalue;
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/Lorem.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/Text2Image.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/Text2Image.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/Text2Image.php	(revision 1610)
@@ -0,0 +1,30 @@
+//:Create an image from the textparameter
+//:Use [[text2image?text=The text to create]]
+//clean up old files..
+$dir = WB_PATH.'/temp/';
+$dp = opendir($dir) or die ('Could not open '.$dir);
+while ($file = readdir($dp)) {
+	if ((preg_match('/img_/',$file)) && (filemtime($dir.$file)) <  (strtotime('-10 minutes'))) {
+		unlink($dir.$file);
+	}
+}
+closedir($dp);
+
+$imgfilename = 'img_'.rand().'_'.time().'.jpg';
+//create image
+$padding = 0;
+$font = 3;  	
+
+$height = imagefontheight($font) + ($padding * 2);
+$width = imagefontwidth($font) * strlen($text) + ($padding * 2);
+$image_handle = imagecreatetruecolor($width, $height);
+$text_color = imagecolorallocate($image_handle, 0, 0, 0);
+$background_color = imagecolorallocate($image_handle, 255, 255, 255);
+$bg_height = imagesy($image_handle);
+$bg_width = imagesx($image_handle);
+imagefilledrectangle($image_handle, 0, 0, $bg_width, $bg_height, $background_color);
+imagestring($image_handle, $font, $padding, $padding, $text, $text_color);
+imagejpeg($image_handle,WB_PATH.'/temp/'.$imgfilename,100);
+imagedestroy($image_handle);
+
+return '<img src="'.WB_URL.'/temp/'.$imgfilename.'" style="border:0px;margin:0px;padding:0px;vertical-align:middle;" />';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/Text2Image.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/PreviousPage.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/PreviousPage.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/PreviousPage.php	(revision 1610)
@@ -0,0 +1,13 @@
+//:Create a previous link to your page
+//:Display a link to the previous page on the same menu level
+$info = show_menu2(0, SM2_CURR, SM2_START, SM2_ALL|SM2_BUFFER, '[if(class==menu-current){[level] [sib] [sibCount] [parent]}]', '', '', '');+list($nLevel, $nSib, $nSibCount, $nParent) = explode(' ', $info);++// show previous+$prv = $nSib > 1 ? $nSib - 1 : 0;+if ($prv > 0) { +return show_menu2(0, SM2_CURR, SM2_START, SM2_ALL|SM2_BUFFER, "[if(sib==$prv){[a][menu_title]</a> &lt;&lt;}]", '', '', '');+}+else +return '(no previous)';+
Property changes on: tags/2.8.3/wb/modules/droplets/example/PreviousPage.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/NextPage.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/NextPage.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/NextPage.php	(revision 1610)
@@ -0,0 +1,11 @@
+//:Create a next link to your page
+//:Display a link to the next page on the same menu level
+$info = show_menu2(0, SM2_CURR, SM2_START, SM2_ALL|SM2_BUFFER, '[if(class==menu-current){[level] [sib] [sibCount] [parent]}]', '', '', '');+list($nLevel, $nSib, $nSibCount, $nParent) = explode(' ', $info);++// show next+$nxt = $nSib < $nSibCount ? $nSib + 1 : 0;+if ($nxt > 0) {+return show_menu2(0, SM2_CURR, SM2_START, SM2_ALL|SM2_BUFFER,	"[if(sib==$nxt){&gt;&gt; [a][menu_title]</a>}]", '', '', '');+}+else return '(no next)';
Property changes on: tags/2.8.3/wb/modules/droplets/example/NextPage.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/Oneliner.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/Oneliner.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/Oneliner.php	(revision 1610)
@@ -0,0 +1,5 @@
+//:Create a random oneliner on your page
+//:Use: [[OneLiner]]. The file with the oneliner data is located in /modules/droplets/example/oneliners.txt
+$line = file (dirname(__FILE__)."/example/oneliners.txt");+shuffle($line);+return $line[0]; 
Property changes on: tags/2.8.3/wb/modules/droplets/example/Oneliner.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/Skype.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/Skype.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/Skype.php	(revision 1610)
@@ -0,0 +1,3 @@
+//:Your skype status as an image
+//:Commandline to use: [[skype?user=skypename]]
+return '<img src="http://mystatus.skype.com/'.$user.'.png?t='.time().'" alt="My Skype status" />';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/Skype.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/SearchBox.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/SearchBox.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/SearchBox.php	(revision 1610)
@@ -0,0 +1,15 @@
+//:Create a searchbox
+//:Creates a serachbox on the position of [[searchbox]]. Optional parameter "?msg=the search message"
+global $TEXT;
+$return_value = true;
+if (!isset($msg)) $msg='search this site..';
+$j = "onfocus=\"if(this.value=='$msg'){this.value='';this.style.color='#000';}else{this.select();}\"
+        onblur=\"if(this.value==''){this.value='$msg';this.style.color='#b3b3b3';}\"";
+if(SHOW_SEARCH) { 
+	$return_value  = '<div class="searchbox">';
+	$return_value  .= '<form action="'.WB_URL.'/search/index'.PAGE_EXTENSION.'" method="get" name="search" class="searchform" id="search">';
+	$return_value  .= '<input style="color:#b3b3b3;" type="text" name="string" size="25" class="textbox" value="'.$msg.'" '.$j.'  />&nbsp;';
+	$return_value  .= '</form>';
+	$return_value  .= '</div>';
+}
+return $return_value;

Property changes on: tags/2.8.3/wb/modules/droplets/example/SearchBox.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/ModifiedWhen.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/ModifiedWhen.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/ModifiedWhen.php	(revision 1610)
@@ -0,0 +1,8 @@
+//:Displays the last modification time of the current page
+//:Use [[ModifiedWhen]]
+global $database, $wb;+if (PAGE_ID>0) {+	$query=$database->query("SELECT modified_when FROM ".TABLE_PREFIX."pages where page_id=".PAGE_ID);+	$mod_details=$query->fetchRow();+	return "This page was last modified on ".date("d/m/Y",$mod_details[0]). " at ".date("H:i",$mod_details[0]).".";+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/ModifiedWhen.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/RandomImage.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/RandomImage.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/RandomImage.php	(revision 1610)
@@ -0,0 +1,15 @@
+//:Get a random image from a folder in the MEDIA folder.
+//:Commandline to use: [[RandomImage?dir=subfolder_in_mediafolder]]
+$folder=opendir(WB_PATH.MEDIA_DIRECTORY.'/'.$dir.'/.'); +$names = array();+while ($file = readdir($folder))  {+	$ext=strtolower(substr($file,-4));+	if ($ext==".jpg"||$ext==".gif"||$ext==".png"){+		$names[count($names)] = $file; +	}+}+closedir($folder);+shuffle($names);+$image=$names[0]; +$name=substr($image,0,-4);+return '<img src="'.WB_URL.MEDIA_DIRECTORY.'/'.$dir.'/'.$image.'" alt="'.$name.'" width="'.$width.'" height="'.$height.'"/>';
Property changes on: tags/2.8.3/wb/modules/droplets/example/RandomImage.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/SiteModified.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/SiteModified.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/SiteModified.php	(revision 1610)
@@ -0,0 +1,8 @@
+//:Create information on when your site was last updated.
+//:Create information on when your site was last updated. Any page update counts.
+global $database, $wb;+if (PAGE_ID>0) {+	$query=$database->query("SELECT max(modified_when) FROM ".TABLE_PREFIX."pages");+	$mod_details=$query->fetchRow();+	return "This site was last modified on ".date("d/m/Y",$mod_details[0]). " at ".date("H:i",$mod_details[0]).".";+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/SiteModified.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/ParentPage.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/ParentPage.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/ParentPage.php	(revision 1610)
@@ -0,0 +1,13 @@
+//:Create a parent link to your page
+//:Display a link to the parent page of the current page
+$info = show_menu2(0, SM2_CURR, SM2_START, SM2_ALL|SM2_BUFFER, '[if(class==menu-current){[level] [sib] [sibCount] [parent]}]', '', '', '');+list($nLevel, $nSib, $nSibCount, $nParent) = explode(' ', $info);++// show up level+if ($nLevel > 0) {+$lev = $nLevel - 1;+return show_menu2(0, SM2_ROOT, SM2_CURR, SM2_CRUMB|SM2_BUFFER, "[if(level==$lev){[a][menu_title]</a>}]", '', '', '');+}+else +return '(no parent)';+
Property changes on: tags/2.8.3/wb/modules/droplets/example/ParentPage.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/oneliners.txt
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/oneliners.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/oneliners.txt	(revision 1610)
@@ -0,0 +1,151 @@
+A bug in the code is worth two in the documentation.
+According to my calculations the problem doesn't exist.
+A computer's attention span is as long as its power cord.
+A computer scientist is someone who fixes things that aren't broken.
+Adding manpower to a late software project makes it later.
+Air conditioned environment - Do NOT open Windows!
+All computers wait at the same speed.
+All wiyht. Rho sritched mg kegtops awound?
+Willyoupleasehelpmefixmykeyboard?Thespacebarisbroken!
+All you need to know is the user interface.
+Alpha. Software undergoes alpha testing as a first step in getting user feedback. Alpha is Latin for "doesn't work."
+Any programming language is at its best before it is implemented and used.
+Any program that runs right is obsolete.
+A paperless office has about as much chance as a paperless bathroom.
+A printer consists of three main parts: the case, the jammed paper tray and the blinking red light.
+A Life? Cool! Where can I download one of those from?
+A program is never finished until the programmer dies.
+ASCII stupid question, get a stupid ANSI!
+As far as we know, our computer has never had an undetected error.
+A user friendly computer first requires a friendly user.
+A user will find any interface design intuitive...with enough practice.
+Backup not found: (A)bort (R)etry (P)anic
+Bad or missing mouse driver. Spank the cat [Y/N]?
+Be aware of Programmers who carry screwdrivers.
+Best file compression around: "DEL *.*" = 100% compression
+Beta. Software undergoes beta testing shortly before it's released. Beta is Latin for "still doesn't work."
+Bug? That's not a bug, that's a feature.
+Build a system that even a fool can use, and only a fool will use it.
+Buy a Pentium IV 2GHz so you can reboot faster.
+Cannot load Windows 95, Incorrect DOS Version.
+COFFEE.EXE Missing---Insert Cup and Press Any Key.
+Compatible: Gracefully accepts erroneous data from any source.
+Computer analyst to programmer: "You start coding. I'll go find out what they want."
+Computer and car salesmen differ in that the latter know when they are lying.
+Computer programmers do it byte by byte.
+Computer programmers don't byte, they nibble a bit.
+Computers are a more fun way to do the same work you'd have to do without them.
+Computers are like air-conditioners: both stop working, if you open windows.
+Computers are not intelligent. They only think they are.
+Computers are unreliable, but humans are even more unreliable.
+Computers can never replace human stupidity.
+Computer Science: solving today's problems tomorrow.
+Computers follow your orders, not your intentions.
+Computers make very fast, very accurate mistakes.
+Crashing is the only thing windows does quickly.
+Daddy, what does FORMATTING DRIVE C mean?
+Disclaimer: Any errors in spelling, tact, or fact are transmission errors.
+Disinformation is not as good as datinformation.
+Don't compute and drive; the life you save may be your own.
+Don't document the program; program the document.
+Don't hit the keys so hard, it hurts.
+Don't let the computer bugs bite!
+DOS=HIGH? I knew it was on something!
+DOS Tip #1: Add DEVICE=FNGRCROS.SYS to CONFIG.SYS
+DOS Tip #2: Add BUGS=OFF to your CONFIG.SYS
+Email returned to sender -- insufficient voltage.
+Enter any 11-digit prime number to continue...
+Error:015: Unable to exit Windows. Try the door.
+Error reading FAT record: Try the SKINNY one? (Y/N)
+Ever notice how fast Windows runs? Neither did I...
+Every bug you find is the last one.
+Every time I type 'win', I loose ...
+Excuse me for butting in, but I'm interrupt-driven.
+Failure is not an option, it comes bundled with the software.
+.....File not found. Should I fake it? (Y/N)
+For any problem there is a solution that is simple, quick, and ultimately worse than the problem.
+Hardware: The parts of a computer system that can be kicked.
+Hi, my name is Any Key. Please don't hit me!
+Hiroshima..45........Tjernobil..86........Windows..95....
+Hit any user to continue.
+Home is where the computer is plugged in.
+How an engineer writes a program: Start by debugging an empty file...
+I am a computer, dumber than any human and smarter than an administrator.
+If at first you don't succeed, call it version 1.0.
+If a train station is where the train stops, what is a work station?
+I finally made my stupid computer faster; I dropped it out of the window, and it went really fast.
+If the automobile had followed the same development cycle as the computer, a Rolls-Royce today would cost $100, get a million miles to the gallon, and explode once a year, illing everyone inside.
+If the pen is mightier than the sword, and a picture is worth a thousand words, how dangerous is a fax?
+If your computer says, "Printer out of Paper," this problem cannot be resolved by continuously clicking the "OK" button.
+I have a dream: 1073741824 bytes free.
+I haven't lost my mind; it's backed up on tape somewhere.
+I hit the CTRL key but I'm still not in control!
+I'm writing a book. I've got the page numbers done.
+In a few minutes a computer can make a mistake so great that it would take many men many months to equal it.
+Is reading in the bathroom considered Multi-Tasking.
+It is easier to write an incorrect program than understand a correct one.
+It said "Insert disk 3..." but only 2 fit.
+It's not a bug; it's an undocumented feature.
+It works! Now if only I could remember what I did...
+I wish life has a scroll back buffer.
+Keyboard : Instrument used to enter errors into computer.
+Keyboard not connected, press F1 to continue.
+MACINTOSH stands for Most Applications Crash If Not The Operating System Hangs.
+Maintenance-free: When it breaks, it can't be fixed...
+Math problems? Call 1-800-[(10x)(ln(13e))]-[sin(xy)/2.362x]
+Melted fruit snacks found on Keyboard. Delete nephew [Y/N]?
+MICROSOFT: Most Intelligent Customers Realize Our Software is Only for Fools and Teenagers.
+Mommy! The cursor's winking at me!
+My software never has bugs. It just develops random features.
+Never say "OOPS!" always say "Ah, Interesting!"
+No matter how much data you add to your laptop, it will not get heavier.
+Of course I know how to copy disks. Where's the xerox machine?
+One person's error is another person's data.
+One picture is worth 128K words.
+Operator! Trace this call and tell me where I am.
+Owners of digital watches: Your day's are numbered!
+Oxymoron: Microsoft Works.
+Press any key...no, no, no, NOT THAT ONE!
+Press any key to continue or any other key to quit...
+Press CTRL-ALT-DEL to continue....
+Programmers don't die, they just GOSUB without RETURN.
+Programmer's Time-Space Continuum: Programmers continuously space the time.
+RAM disk is NOT an installation procedure.
+Reference Manual: Object that raises the monitor to eye level. Also used to compensate for that short table leg.
+Scheduled Release Date: A carefully calculated date determined by estimating the actual shipping date and subtracting six months from it.
+Shift to the left! Shift to the right! Pop up, push down, byte, byte, byte!
+Southern DOS: Y'all reckon? (Yep/Nope)
+Speed Kills! Use Windows 95.
+System going down at 1:45 for disk crashing.
+The box said: 'install on Windows 95, NT 4.0 or better'. So I installed it on Linux.
+The definition of an upgrade: Take old bugs out, put new ones in.
+The name is Baud......, James Baud.
+The program is absolutely right; therefore the computer must be wrong.
+The programmer's national anthem is 'AAAAAAAAHHHHHHHH'.
+The Queue Principle: The longer you wait in line, the greater the likelihood that you are standing in the wrong line.
+There are never enough hours in a day, but always too many days before Saturday.
+There are two ways to write error-free programs; only the third one works.
+There can never be a computer language in which you cannot write a bad program.
+There were computers in Biblical times. Eve had an Apple.
+These settings will have no effect until you restart the system.
+Reset Universe (Y/N) ?
+Those who can, do. Those who cannot, teach. Those who cannot teach, HACK!
+To be, or not to be, those are the parameters.
+To err is human, but to really foul things up requires a computer.
+User error: replace user and press any key to continue.
+Warning, keyboard not found. Press Enter to continue.
+What boots up must come down.
+Who's General Failure and why's he reading my disk?
+Why doesn't DOS ever say "EXCELLENT command or filename!"
+Why do they call this a word processor? It's simple, ... you've seen what food processors do to food, right?
+Why do we want intelligent terminals when there are so many stupid users?
+Will the information superhighway have any rest stops?
+Windows 3.1 not found: (C)heer, (P)arty, (D)ance?
+Windows is NOT a virus. Viruses DO something.
+WINDOWS stands for Will Install Needless Data On Whole System.
+Windows: the ultimate triumph of marketing over technology.
+You are making progress if each mistake is a new one.
+You don't have to know how the computer works, just how to work the computer.
+You forgot to do your backup 16 days ago. Tomorrow you'll need that version.
+You had mail, but the super-user read it, and deleted it!
+You never finish a program, you just stop working on it. 
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/oneliners.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/example/index.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/example/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/example/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/example/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/install.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/install.php	(revision 1610)
@@ -0,0 +1,113 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+	// global $admin;
+
+	$msg = array();
+	$sql  = 'DROP TABLE IF EXISTS `'.TABLE_PREFIX.'mod_droplets` ';
+	if( !$database->query($sql) ) {
+		$msg[] = $database->get_error();
+	}
+
+	$sql  = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_droplets` ( ';
+	$sql .= '`id` INT NOT NULL auto_increment, ';
+	$sql .= '`name` VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci  NOT NULL, ';
+	$sql .= '`code` LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci  NOT NULL , ';
+	$sql .= '`description` TEXT  CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, ';
+	$sql .= '`modified_when` INT NOT NULL default \'0\', ';
+	$sql .= '`modified_by` INT NOT NULL default \'0\', ';
+	$sql .= '`active` INT NOT NULL default \'0\', ';
+	$sql .= '`admin_edit` INT NOT NULL default \'0\', ';
+	$sql .= '`admin_view` INT NOT NULL default \'0\', ';
+	$sql .= '`show_wysiwyg` INT NOT NULL default \'0\', ';
+	$sql .= '`comments` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci  NOT NULL, ';
+	$sql .= 'PRIMARY KEY ( `id` ) ';
+	$sql .= ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	if( !$database->query($sql) ) {
+		$msg[] = $database->get_error();
+	}
+
+	//add all droplets from the droplet subdirectory
+	$folder=opendir(WB_PATH.'/modules/droplets/example/.');
+	$names = array();
+	while ($file = readdir($folder)) {
+		$ext=strtolower(substr($file,-4));
+		if ($ext==".php"){
+			if ($file<>"index.php" ) {
+				$names[count($names)] = $file;
+			}
+		}
+	}
+	closedir($folder);
+
+	foreach ($names as $dropfile)
+	{
+		$droplet = addslashes(getDropletCodeFromFile($dropfile));
+		if ($droplet != "")
+		{
+			$description = "Example Droplet";
+			$comments = "Example Droplet";
+			$cArray = explode("\n",$droplet);
+			if (substr($cArray[0],0,3) == "//:") {
+				$description = trim(substr($cArray[0],3));
+				array_shift ( $cArray );
+			}
+			if (substr($cArray[0],0,3) == "//:") {
+				$comments = trim(substr($cArray[0],3));
+				array_shift ( $cArray );
+			}
+			$droplet = implode ( "\n", $cArray );
+			$name = substr($dropfile,0,-4);
+			$modified_when = time();
+			$modified_by = (method_exists($admin, 'get_user_id') && ($admin->get_user_id()!=null) ? $admin->get_user_id() : 1);
+			$sql  = 'INSERT INTO `'.TABLE_PREFIX.'mod_droplets` SET ';
+			$sql .= '`name` = \''.$name.'\', ';
+			$sql .= '`code` = \''.$droplet.'\', ';
+			$sql .= '`description` = \''.$description.'\', ';
+			$sql .= '`comments` = \''.$comments.'\', ';
+			$sql .= '`active` = 1, ';
+			$sql .= '`modified_when` = '.$modified_when.', ';
+			$sql .= '`modified_by` = '.$modified_by;
+			if( !$database->query($sql) ) {
+				$msg[] = $database->get_error();
+			}
+			// do not output anything if this script is called during fresh installation
+			// if (method_exists($admin, 'get_user_id')) echo "Droplet import: $name<br/>";
+		}
+	}
+
+	function getDropletCodeFromFile ( $dropletfile ) {
+		$data = '';
+		$filename = WB_PATH."/modules/droplets/example/".$dropletfile;
+		if (file_exists($filename)) {
+			$filehandle = fopen ($filename, "r");
+			$data = fread ($filehandle, filesize ($filename));
+			fclose($filehandle);
+			// unlink($filename); doesnt work in unix
+		}
+		return $data;
+	}

Property changes on: tags/2.8.3/wb/modules/droplets/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/tool.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/tool.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/tool.php	(revision 1610)
@@ -0,0 +1,176 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$msg = array();
+// Load Language file
+if(LANGUAGE_LOADED) {
+	if(!file_exists(WB_PATH.'/modules/droplets/languages/'.LANGUAGE.'.php')) {
+		require_once(WB_PATH.'/modules/droplets/languages/EN.php');
+	} else {
+		require_once(WB_PATH.'/modules/droplets/languages/'.LANGUAGE.'.php');
+	}
+}
+
+// check if backend.css file needs to be included into the <body></body>
+if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH .'/modules/droplets/backend.css')) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/droplets/backend.css');
+	echo "\n</style>\n";
+}
+
+// Get userid for showing admin only droplets or not
+$loggedin_user = ($admin->ami_group_member('1') ? 1 : $admin->user_id());
+$loggedin_group = $admin->get_groups_id();
+$admin_user = ( ($admin->get_home_folder() == '') && ($admin->ami_group_member('1') ) || ($loggedin_user == '1'));
+
+// And... action
+$admintool_url = ADMIN_URL .'/admintools/index.php';
+
+//removes empty entries from the table so they will not be displayed
+$sql = 'DELETE FROM `'.TABLE_PREFIX.'mod_droplets` ';
+$sql .= 'WHERE name = \'\' ';
+if( !$database->query($sql) ) {
+	$msg[] = $database->get_error();
+}
+// if import failed after installation, should be only 1 time
+$sql = 'SELECT COUNT(`id`) FROM `'.TABLE_PREFIX.'mod_droplets` ';
+if( !$database->get_one($sql) ) {
+	include('install.php');
+}
+?><br />
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td valign="bottom" width="50%">
+		<button class="add" type="button" name="add_droplet" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/droplets/add_droplet.php';"><?php echo $TEXT['ADD'].' '.$DR_TEXT['DROPLETS']; ?></button>
+	</td>
+	<!-- commentet out the droplets logo for a more similar backend design with other admin tools
+	<td align="center"><img src="<?php /*echo WB_URL;*/ ?>/modules/droplets/img/droplets_logo.png" border="1" alt=""/></td>
+	-->
+	<td valign="top" width="50%" align="right">
+		<a href="#" onclick="javascript: window.open('<?php echo WB_URL; ?>/modules/droplets/readme/<?php echo $DR_TEXT['README']; ?>','helpwindow','width=700,height=550,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');"><?php echo $DR_TEXT['HELP']; ?></a>
+		<br /><br />
+		<a href="#" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/droplets/backup_droplets.php?id=<?php echo $admin->getIDKEY(999); ?>'"><?php echo $DR_TEXT['BACKUP']; ?></a>
+	</td>
+</tr>
+</table>
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$DR_TEXT['DROPLETS']; ?></h2>
+<?php
+
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_droplets` ';
+if (!$admin_user) {
+	$sql .= 'WHERE `admin_view` <> 1 ';
+}
+$sql .= 'ORDER BY `modified_when` DESC';
+$query_droplets = $database->query($sql);
+$num_droplets = $query_droplets->numRows();
+if($num_droplets > 0) {
+	?>
+	<table summary="" class="row_a" border="0" cellspacing="0" cellpadding="3" width="100%">
+	<thead>
+		<tr>
+			<td width="3%"></td>
+			<td width="21%"><?php echo $TEXT['NAME']; ?></td>
+			<td width="68%"><?php echo $TEXT['DESCRIPTION']; ?></td>
+			<td width="4%"><?php echo $TEXT['ACTIVE']; ?></td>
+			<td width="3%"></td>
+		</tr>
+	</thead>
+	<?php
+	$row = 'a';
+	while($droplet = $query_droplets->fetchRow()) {
+		$get_modified_user = $database->query("SELECT display_name,username, user_id FROM ".TABLE_PREFIX."users WHERE user_id = '".$droplet['modified_by']."' LIMIT 1");
+		if($get_modified_user->numRows() > 0) {
+			$fetch_modified_user = $get_modified_user->fetchRow();
+			$modified_user = $fetch_modified_user['username'];
+			$modified_userid = $fetch_modified_user['user_id'];
+		} else {
+			$modified_user = $TEXT['UNKNOWN'];
+			$modified_userid = 0;
+		}
+        $iDropletIdKey = $admin->getIDKEY($droplet['id']);
+		$comments = str_replace(array("\r\n", "\n", "\r"), '<br />', $droplet['comments']);
+		if (!strpos($comments,"[[")) $comments = "Use: [[".$droplet['name']."]]<br />".$comments;
+		$comments = str_replace(array("[[", "]]"), array('<b>[[',']]</b>'), $comments);
+		$valid_code = check_syntax($droplet['code']);
+		if (!$valid_code === true) $comments = '<font color=\'red\'><strong>'.$DR_TEXT['INVALIDCODE'].'</strong></font><br /><br />'.$comments;
+		$unique_droplet = check_unique ($droplet['name']);
+		if ($unique_droplet === false ) {$comments = '<font color=\'red\'><strong>'.$DR_TEXT['NOTUNIQUE'].'</strong></font><br /><br />'.$comments;}
+		$comments = '<span>'.$comments.'</span>';
+		?>
+
+		<tr class="row_<?php echo $row; ?>" >
+			<td >
+				<a href="<?php echo WB_URL; ?>/modules/droplets/modify_droplet.php?droplet_id=<?php echo $iDropletIdKey; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="Modify" />
+				</a>
+			</td>
+			<td >
+				<a href="<?php echo WB_URL; ?>/modules/droplets/modify_droplet.php?droplet_id=<?php echo $iDropletIdKey; ?>" class="tooltip">
+							<?php if ($valid_code && $unique_droplet) { ?><img src="<?php echo WB_URL; ?>/modules/droplets/img/droplet.png" border="0" alt=""/>
+							<?php } else {  ?><img src="<?php echo WB_URL; ?>/modules/droplets/img/invalid.gif" border="0" title="" alt=""/><?php }  ?>
+					<?php echo $droplet['name']; ?><?php echo $comments; ?>
+				</a>
+			</td>
+			<td >
+				<small><?php echo substr($droplet['description'],0,90); ?></small>
+			</td>
+			<td >
+				<b><?php if($droplet['active'] == 1){ echo '<span style="color: green;">'. $TEXT['YES']. '</span>'; } else { echo '<span style="color: red;">'.$TEXT['NO'].'</span>';  } ?></b>
+			</td>
+			<td >
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/droplets/delete_droplet.php?droplet_id=<?php echo $iDropletIdKey; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+}
+
+function check_syntax($code) {
+    return @eval('return true;' . $code);
+}
+
+function check_unique($name) {
+	global $database;
+	$retVal = 0;
+	$sql = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'mod_droplets` ';
+	$sql .= 'WHERE `name` = \''.$name.'\'';
+	$retVal = intval($database->get_one($sql));
+	return ($retVal == 1);
+}

Property changes on: tags/2.8.3/wb/modules/droplets/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/FTAN_SUPPORTED
===================================================================
--- tags/2.8.3/wb/modules/droplets/FTAN_SUPPORTED	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/FTAN_SUPPORTED	(revision 1610)
@@ -0,0 +1 @@
+This module supports the FTAN-System
\ No newline at end of file
Index: tags/2.8.3/wb/modules/droplets/delete_droplet.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/delete_droplet.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/delete_droplet.php	(revision 1610)
@@ -0,0 +1,53 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require_once(WB_PATH.'/framework/class.admin.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+$module_edit_link = ADMIN_URL .'/admintools/tool.php?tool=droplets';
+
+if(file_exists(ADMIN_PATH .'/admintools/tool.php')) {
+	$admintool_link = ADMIN_URL .'/admintools/index.php';
+	$admin = new admin('admintools', 'admintools');
+}
+
+// Get id
+$droplet_id = intval($admin->checkIDKEY('droplet_id', false, 'GET'));
+if (!$droplet_id) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $module_edit_link);
+ exit();
+}
+$sql  = 'DELETE FROM `'.TABLE_PREFIX.'mod_droplets` ';
+$sql .= 'WHERE id = '.$droplet_id;
+
+// Delete droplet
+$database->query($sql);
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/droplets/modify_droplet.php?droplet_id='.$droplet_id);
+} else {
+    $admin->print_success($TEXT['SUCCESS'], $module_edit_link);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/droplets/delete_droplet.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/info.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/info.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$module_directory = 'droplets';
+$module_name = 'Droplets';
+$module_function = 'tool';
+$module_version = '1.2.0';
+$module_platform = '2.8.x';
+$module_author = 'Ruud and pcwacht';
+$module_license = 'GNU General Public License';
+$module_description = 'This tool allows you to manage your local Droplets.';

Property changes on: tags/2.8.3/wb/modules/droplets/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/droplets.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/droplets.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/droplets.php	(revision 1610)
@@ -0,0 +1,119 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplets
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ *	droplets are small codeblocks that are called from anywhere in the template.
+ * 	To call a droplet just use [[dropletname]]. optional parameters for a droplet can be used like [[dropletname?parameter=value&parameter2=value]]\
+ *
+ *  1.0.2, bugfix, Reused the evalDroplet function so the extracted parameters will be only available within the scope of the eval and cleared when ready.
+ *  1.0.3, optimize, reduce memory consumption, increase speed, remove CSS, enable nested droplets
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+	function do_eval($_x_codedata, $_x_varlist, &$wb_page_data)
+	{
+		extract($_x_varlist, EXTR_SKIP);
+		return(eval($_x_codedata));
+	}
+
+	function processDroplets( &$wb_page_data ) {
+// collect all droplets from document
+		$droplet_tags = array();
+		$droplet_replacements = array();
+		if( preg_match_all( '/\[\[(.*?)\]\]/', $wb_page_data, $found_droplets ) )
+		{
+			foreach( $found_droplets[1] as $droplet )
+			{
+				if(array_key_exists( '[['.$droplet.']]', $droplet_tags) == false)
+				{
+// go in if same droplet with same arguments is not processed already
+					$varlist = array();
+// split each droplet command into droplet_name and request_string
+					$tmp = preg_split('/\?/', $droplet, 2);
+					$droplet_name = $tmp[0];
+					$request_string = (isset($tmp[1]) ? $tmp[1] : '');
+					if( $request_string != '' )
+					{
+// make sure we can parse the arguments correctly
+						$request_string = html_entity_decode($request_string, ENT_COMPAT,DEFAULT_CHARSET);
+// create array of arguments from query_string
+						$argv = preg_split( '/&(?!amp;)/', $request_string );
+						foreach ($argv as $argument)
+						{
+// split argument in pair of varname, value
+							list( $variable, $value ) = explode('=', $argument,2);
+							if( !empty($value) )
+							{
+// re-encode the value and push the var into varlist
+								$varlist[$variable] = htmlentities($value, ENT_COMPAT,DEFAULT_CHARSET);
+							}
+						}
+					}
+					else
+					{
+// no arguments given, so
+						$droplet_name = $droplet;
+					}
+// request the droplet code from database
+					$sql = 'SELECT `code` FROM `'.TABLE_PREFIX.'mod_droplets` WHERE `name` LIKE "'.$droplet_name.'" AND `active` = 1';
+					$codedata = $GLOBALS['database']->get_one($sql);
+					if (!is_null($codedata))
+					{
+						$newvalue = do_eval($codedata, $varlist, $wb_page_data);
+// check returnvalue (must be a string of 1 char at least or (bool)true
+						if ($newvalue == '' && $newvalue !== true)
+						{
+							if(DEBUG === true)
+							{
+								$newvalue = '<span class="mod_droplets_err">Error in: '.$droplet.', no valid returnvalue.</span>';
+							}
+							else
+							{
+								$newvalue = true;
+							}
+						}
+						if ($newvalue === true) { $newvalue = ""; }
+// remove any defined CSS section from code. For valid XHTML a CSS-section is allowed inside <head>...</head> only!
+						$newvalue = preg_replace('/<style.*>.*<\/style>/siU', '', $newvalue);
+// push droplet-tag and it's replacement into Search/Replace array after executing only
+						$droplet_tags[]         = '[['.$droplet.']]';
+						$droplet_replacements[] = $newvalue;
+					}
+				}
+			}	// End foreach( $found_droplets[1] as $droplet )
+// replace each Droplet-Tag with coresponding $newvalue
+			$wb_page_data = str_replace($droplet_tags, $droplet_replacements, $wb_page_data);
+		}
+// returns TRUE if droplets found in content, FALSE if not
+		return( count($droplet_tags)!=0 );
+	}
+
+	function evalDroplets( &$wb_page_data, $max_loops = 3 ) {
+		$max_loops = ((int)$max_loops = 0 ? 3 : (int)$max_loops);
+		while( (processDroplets($wb_page_data) == true) && ($max_loops > 0))
+		{ 
+			$max_loops--;
+		}
+		return $wb_page_data;
+	}

Property changes on: tags/2.8.3/wb/modules/droplets/droplets.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/readme/readme.html
===================================================================
--- tags/2.8.3/wb/modules/droplets/readme/readme.html	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/readme/readme.html	(revision 1610)
@@ -0,0 +1,55 @@
+<html>
+
+	<head>
+	<title>Droplets</title>
+	<link href="readme.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+
+	<body>
+		<small><font color="#7f7f7f">Droplets Help</font></small><br />
+		<h2> <img src="../img/droplets_logo.png" alt="" width="297" height="81" border="0"></h2> <br />
+		Droplets are small chunks of php code (just like the code module) that can be included in your template or any other content section. <br />
+		Including a droplet is done by encapsulating the droplet name in double brackets. <br />
+		If you want to use the droplet &quot;ModifiedWhen&quot; (to show the last modified date and time of the current page) you only need to add <b>[[ModifiedWhen]]</b> to your template or WYSIWYG contentpage. <br />
+		<br />
+		You are encouraged to create your own droplets and share them with the community. <br />
+		<br />
+		<h3>Installation</h3>
+		<br />
+		Droplets are installed as a admin tool. The installation is done using the normal &quot;Add module&quot; page in the WB backend. <br />
+		When the installation is successfull, there is a new tool added to the Admin-Tools menu. <br />
+		Clicking the tool will display the current installed droplets, and a button to create your own. <br />
+		<br />
+		<h3>Getting Droplets</h3>
+		<br />
+		A fast growing number of Droplets are available for use, you can use the <a href="http://www.websitebakers.com/pages/droplets/official-library.php" target="_new">Official Droplets Library</a> in the AMASP project website, or you can search the WB Forum. <br />
+		<br />
+		<h3>Coding Droplets</h3>
+		<br />
+		Droplets run in PHP mode, no <font color="#ff0000">&lt;?php</font> or <font color="#ff0000">?&gt;</font> is allowed in the code! If any of these tags are found in the code they will be removed. Your code will not run as expected. <br />
+		The droplet code can NOT echo or print data to the output stream directly. The Droplet name is replaced by the return value of the PHP code.<br />
+		Example: [[HelloWorld]] <br />
+		<br />
+		<font color="#ff0000">Wrong code:</font> echo &quot;Hello World&quot;; <br />
+		<font color="#339966">Correct code:</font> return &quot;Hello World&quot;; <br />
+		<br />
+		Since version 0.3 Droplets can modify the complete page content. <br />
+		When the Droplet is called, an extra variable ($wb_page_data) is made available. 
+		This variable holds all the content of your current generated webpage.
+		You can modify any part of this content simply by replacing it in the variable. There is no need to return this variable, the Droplet code will process changed content automatically.<br /><br />
+		
+		Since version 0.3 Droplets will check the PHP code you have saved for validity. <br />
+		When the code will not execute correctly a red flashing icon will apear in the backend Droplets list. <br />
+		The standard blue icon is no guarantee that the Droplets does what you would expect it to do, it will just tell you if the code is valid PHP code.<br /><br />
+		
+		Since version 0.3 Droplets you do not need to return any data. When you end your code with <pre>return true;</pre> there will not be an errormessage. The processed Droplet tag will be removed.<br />
+
+		<br />
+		<h3>PHP color coding</h3>
+		<br />
+		The Droplets edit page is ready to use the EditArea module. This module creates a color coded editor for PHP code. <br />
+		<br />
+		<br />
+	</body>
+
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/readme/readme.html
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/readme/readme.css
===================================================================
--- tags/2.8.3/wb/modules/droplets/readme/readme.css	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/readme/readme.css	(revision 1610)
@@ -0,0 +1,85 @@
+html {
+font-size:76%;
+}
+body {
+font-family:"Trebuchet MS",Tahoma,Verdana,Arial,Helvetica,sans-serif;
+font-size:1.1em;
+line-height:1.5em;
+margin:10px;
+padding:0;
+text-align:left;
+}
+h1, h2, h3, h4, h5, h6 {
+color:#009999;
+font-family:"Trebuchet MS",Tahoma,Verdana,Arial,Helvetica,sans-serif;
+font-weight:normal;
+letter-spacing:-1px;
+margin:0;
+}
+h1, h2 {
+border-bottom:1px solid #009999;
+font-size:1.8em;
+margin:15px 0 5px;
+padding-bottom:15px;
+}
+h3 {
+border-bottom:1px solid #009999;
+font-size:1.8em;
+margin:15px 0 5px;
+padding-bottom:15px;
+}
+h4 {
+font-size:1.4em;
+margin:10px 0 5px;
+}
+h5 {
+font-size:1.2em;
+margin:10px 0 5px;
+}
+h6 {
+font-size:1em;
+margin:10px 0 0;
+}
+p {
+margin:8px 0;
+}
+acronym {
+cursor:help;
+}
+code, blockquote {
+background:#FFFFFF none repeat scroll 0 0;
+border:1px dashed #DDDDDD;
+color:#666666;
+display:block;
+margin:15px 0;
+padding:5px;
+}
+pre {
+background:#FFFFFF none repeat scroll 0 0;
+border:1px dashed #DDDDDD;
+color:#666666;
+display:inline;
+margin:15px 0;
+padding:5px;
+}
+hr {
+background-color:#009999;
+border:0 none;
+color:#DDDDDD;
+height:1px;
+margin:5px 0;
+}
+.left {
+float:left;
+}
+.right {
+float:right;
+}
+.hide {
+display:none;
+}
+
+#body {
+background:#222222;
+padding:20px;
+}

Property changes on: tags/2.8.3/wb/modules/droplets/readme/readme.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/readme/index.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/readme/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/readme/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/readme/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/uninstall.php	(revision 1610)
@@ -0,0 +1,29 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$sql  = 'DROP TABLE IF EXISTS `'.TABLE_PREFIX.'mod_droplets` ';
+$database->query($sql);

Property changes on: tags/2.8.3/wb/modules/droplets/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/modify_droplet.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/modify_droplet.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/modify_droplet.php	(revision 1610)
@@ -0,0 +1,184 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+require_once(WB_PATH.'/framework/class.admin.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+$admintool_link = ADMIN_URL .'/admintools/index.php';
+$module_edit_link = ADMIN_URL .'/admintools/tool.php?tool=droplets';
+$admin = new admin('admintools', 'admintools');
+
+// Get id
+$droplet_id = intval($admin->checkIDKEY('droplet_id', false, 'GET'));
+if (!$droplet_id) {
+	$admin->print_error('IDKEY::'.$MESSAGE['GENERIC_SECURITY_ACCESS'], $module_edit_link);
+}
+/*
+// check if backend.css file needs to be included into the <body></body> of modify.php
+if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH ."/modules/droplets/backend.css")) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/droplets/backend.css');
+	echo "n</style>n";
+}
+*/
+// Load Language file
+if(LANGUAGE_LOADED) {
+	if(!file_exists(WB_PATH.'/modules/droplets/languages/'.LANGUAGE.'.php')) {
+		require_once(WB_PATH.'/modules/droplets/languages/EN.php');
+	} else {
+		require_once(WB_PATH.'/modules/droplets/languages/'.LANGUAGE.'.php');
+	}
+}
+require_once(WB_PATH . '/include/editarea/wb_wrapper_edit_area.php');
+echo registerEditArea ('contentedit','php',true,'both',true,true,600,450,'search, fullscreen, |, undo, redo, |, select_font,|, highlight, reset_highlight, |, help');
+
+$modified_when = time();
+$modified_by = ($admin->ami_group_member('1') ? 1 : $admin->user_id());
+$sOverviewDroplets = $TEXT['LIST_OPTIONS'].' '.$DR_TEXT['DROPLETS'];
+
+// Get header and footer
+$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_droplets` ';
+$sql .= 'WHERE id = '.$droplet_id;
+$sql .= '';
+
+$query_content = $database->query($sql);
+
+$fetch_content = $query_content->fetchRow();
+$content = (htmlspecialchars($fetch_content['code']));
+?>
+<h4 style="margin: 0; border-bottom: 1px solid #DDD; padding-bottom: 5px;">
+	<a href="<?php echo $admintool_link;?>" title="<?php echo $HEADING['ADMINISTRATION_TOOLS']; ?>"><?php echo $HEADING['ADMINISTRATION_TOOLS']; ?></a>
+	->
+	<a href="<?php echo $module_edit_link;?>" title="<?php echo $sOverviewDroplets ?>" alt="<?php echo $sOverviewDroplets ?>">Droplet Edit</a>
+</h4>
+<br />
+<form name="modify" action="<?php echo WB_URL; ?>/modules/droplets/save_droplet.php" method="post" style="margin: 0;">
+<input type="hidden" name="data_codepress" value="" />
+<input type="hidden" name="droplet_id" value="<?php echo $admin->getIDKEY($droplet_id); ?>" />
+<input type="hidden" name="show_wysiwyg" value="<?php echo $fetch_content['show_wysiwyg']; ?>" />
+<?php echo $admin->getFTAN(); ?>
+
+<table class="row_a" cellpadding="4" cellspacing="0" border="0" width="100%">
+		<tr>
+		<td width="10%" class="setting_name">
+			<?php echo $TEXT['NAME']; ?>:
+		</td>
+		<td width="90%">
+			<input type="text" name="title" value="<?php echo stripslashes($fetch_content['name']); ?>" style="width: 38%;" maxlength="32" />
+		</td>
+	</tr>
+	<tr>
+		<td valign="top" class="setting_name" width="60px"><?php echo $TEXT['DESCRIPTION']; ?>:</td>
+		<td>
+			<input type="text" name="description" value="<?php echo stripslashes($fetch_content['description']); ?>" style="width: 98%;" />
+		</td>
+	</tr>
+	<tr>
+		<td class="setting_name" width="60px">
+			<?php echo $TEXT['ACTIVE']; ?>:
+		</td>
+		<td>	
+			<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
+			<label><?php echo $TEXT['YES']; ?></label>
+			</a>
+			<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
+			<label><?php echo $TEXT['NO']; ?></label>
+			</a>
+		</td>
+	</tr>
+<?php
+// Next show only if admin is logged in, user_id = 1
+if ($modified_by == 1) {
+	?>
+	<tr>
+		<td class="setting_name" width="60px">
+			<?php echo $TEXT['ADMIN']; ?>:
+		</td>
+		<td> 
+			<?php echo $DR_TEXT['ADMIN_EDIT']; ?>&nbsp;   	
+			<input type="radio" name="admin_edit" id="admin_edit_true" value="1" <?php if($fetch_content['admin_edit'] == 1) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('admin_edit_true').checked = true;">
+			<label><?php echo $TEXT['YES']; ?></label>
+			</a>
+			<input type="radio" name="admin_edit" id="admin_edit_false" value="0" <?php if($fetch_content['admin_edit'] == 0) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('admin_edit_false').checked = true;">
+			<label><?php echo $TEXT['NO']; ?></label>
+			</a>
+			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
+			<?php echo $DR_TEXT['ADMIN_VIEW']; ?>:
+			<input type="radio" name="admin_view" id="admin_view_true" value="1" <?php if($fetch_content['admin_view'] == 1) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('admin_view_true').checked = true;">
+			<label><?php echo $TEXT['YES']; ?></label>
+			</a>
+			<input type="radio" name="admin_view" id="admin_view_false" value="0" <?php if($fetch_content['admin_view'] == 0) { echo ' checked="checked"'; } ?> />
+			<a href="#" onclick="javascript: document.getElementById('admin_view_false').checked = true;">
+			<label><?php echo $TEXT['NO']; ?></label>
+			</a>
+		</td>
+	</tr>
+	<?php
+}
+?>
+	<tr>
+		<td valign="top" class="setting_name" width="60px"><?php echo $TEXT['CODE']; ?>:</td>
+		<td ><textarea name="savecontent" id ="contentedit" style="width: 98%; height: 450px;" rows="50" cols="120"><?php echo $content; ?></textarea>&nbsp;
+		</td>
+	</tr>
+	<tr>
+		<td colspan="2">					
+		</td>
+	</tr>
+	<tr>
+		<td valign="top" class="setting_name" width="60px"><?php echo $TEXT['COMMENTS']; ?>:</td>
+		<td>
+			<textarea name="comments" style="width: 98%; height: 100px;" rows="50" cols="120"><?php echo stripslashes($fetch_content['comments']); ?></textarea>
+		</td>
+	</tr>
+	<tr>
+		<td colspan="2">&nbsp;					
+		</td>
+	</tr>
+</table>
+<br />
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+	<tr>
+		<td align="left">
+<?php
+// Show only save button if allowed....
+if ($modified_by == 1 OR $fetch_content['admin_edit'] == 0 ) {
+	?>
+			<button  class="save" name="save" type="submit"><?php echo $TEXT['SAVE']; ?></button>
+	<?php
+}
+?>
+		</td>
+		<td align="right">
+			<button class="cancel" type="button" onclick="javascript: window.location = '<?php echo $module_edit_link; ?>';"><?php echo $TEXT['CANCEL']; ?></button>
+		</td>
+	</tr>
+</table>
+</form>
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/droplets/modify_droplet.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/add_droplet.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/add_droplet.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/add_droplet.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+require_once(WB_PATH.'/framework/class.admin.php');
+require_once(WB_PATH.'/framework/functions.php');
+$admin = new admin('admintools','admintools',true,false);
+if($admin->get_permission('admintools') == true) {
+
+	$admintool_link = ADMIN_URL .'/admintools/index.php';
+	$module_edit_link = ADMIN_URL .'/admintools/tool.php?tool=droplets';
+	// $admin = new admin('admintools', 'admintools');
+
+	$modified_when = time();
+	$modified_by = intval($admin->get_user_id());
+
+	// Insert new row into database
+	$sql = 'INSERT INTO `'.TABLE_PREFIX.'mod_droplets` SET ';
+	$sql .= '`active` = 1, ';
+	$sql .= '`modified_when` = '.$modified_when.', ';
+	$sql .= '`modified_by` = '.$modified_by.' ';
+	$database->query($sql);
+
+	// Get the id
+	$droplet_id = intval($database->get_one("SELECT LAST_INSERT_ID()"));
+
+	// Say that a new record has been added, then redirect to modify page
+	if($database->is_error()) {
+		$admin->print_error($database->get_error(), $module_edit_link);
+	} else {
+		$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/droplets/modify_droplet.php?droplet_id='. $admin->getIDKEY($droplet_id));
+	}
+
+} else {
+		$admin->print_error($database->get_error(), $module_edit_link);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/droplets/add_droplet.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/backup_droplets.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/backup_droplets.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/backup_droplets.php	(revision 1610)
@@ -0,0 +1,95 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// tool_edit.php
+require_once('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+require_once(WB_PATH.'/framework/functions.php');
+// create admin object depending on platform (admin tools were moved out of settings with WB 2.7)
+$admin = new admin('admintools', 'admintools');
+$admintool_link = ADMIN_URL .'/admintools/index.php';
+$module_edit_link = ADMIN_URL .'/admintools/tool.php?tool=droplets';
+$template_edit_link = ADMIN_URL .'/admintools/tool.php?tool=templateedit';
+$sOverviewDroplets = $TEXT['LIST_OPTIONS'];
+
+// protect from CSRF
+$id = intval($admin->checkIDKEY('id', false, 'GET'));
+if (!$id or $id != 999) {
+ $admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $module_edit_link);
+}
+
+?>
+<h4 style="margin: 0; border-bottom: 1px solid #DDD; padding-bottom: 5px;">
+	<a href="<?php echo $admintool_link;?>" title="<?php echo $HEADING['ADMINISTRATION_TOOLS']; ?>"><?php echo $HEADING['ADMINISTRATION_TOOLS']; ?></a>
+	->
+	<a href="<?php echo $module_edit_link;?>" title="<?php echo $sOverviewDroplets ?>" alt="<?php echo $sOverviewDroplets ?>">Droplet Edit</a>
+</h4>
+<?php
+
+$temp_dir = WB_PATH.'/temp/droplets/';
+$temp_file = '/modules/droplets/backup-droplets.zip';
+// make the temporary working directory
+mkdir($temp_dir);
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_droplets`  ';
+$sql .= 'ORDER BY `modified_when` DESC';
+$query_droplets = $database->query($sql);
+while($droplet = $query_droplets->fetchRow()) {
+	echo 'Saving: '.$droplet["name"].'.php<br />';
+	$sFile = $temp_dir.$droplet["name"].'.php';
+	$fh = fopen($sFile, 'w') ;
+	fwrite($fh, '//:'.$droplet['description']."\n");
+	fwrite($fh, '//:'.str_replace("\n"," ",$droplet['comments'])."\n");
+	fwrite($fh, $droplet['code']);
+	fclose($fh);
+}
+echo '<br />Create archive: backup-droplets.zip<br />';
+
+require_once(WB_PATH.'/include/pclzip/pclzip.lib.php');
+$archive = new PclZip(WB_PATH.$temp_file);
+$file_list = $archive->create($temp_dir, PCLZIP_OPT_REMOVE_ALL_PATH);
+if ($file_list == 0){
+	echo "Packaging error: '.$archive->errorInfo(true).'";
+	die("Error : ".$archive->errorInfo(true));
+}
+else {
+	echo '<br /><br />Backup created - <a href="'.WB_URL.$temp_file.'">Download</a>';
+}
+
+delete_directory ( $temp_dir );
+
+function delete_directory($dirname) {
+    if (is_dir($dirname))
+        $dir_handle = opendir($dirname);
+    if (!$dir_handle)
+        return false;
+    while($file = readdir($dir_handle)) {
+        if ($file != "." && $file != "..") {
+            if (!is_dir($dirname."/".$file))
+                unlink($dirname."/".$file);
+            else
+                delete_directory($dirname.'/'.$file);          
+        }
+    }
+    closedir($dir_handle);
+    rmdir($dirname);
+    return true;
+}
+
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/droplets/backup_droplets.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/upgrade.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+
+	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+$table_name = TABLE_PREFIX .'mod_droplets';
+$description = 'INT NOT NULL default 0 ';
+$database->field_add($table_name,'show_wysiwyg',$description.'AFTER `active`' );
+$database->field_add($table_name,'admin_view',$description.'AFTER `active`' );
+$database->field_add($table_name,'admin_edit',$description.'AFTER `active`' );

Property changes on: tags/2.8.3/wb/modules/droplets/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/save_droplet.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/save_droplet.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/save_droplet.php	(revision 1610)
@@ -0,0 +1,87 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+// Get id
+/*
+if(!isset($_POST['droplet_id']) OR !is_numeric($_POST['droplet_id'])) {
+	header("Location: ".ADMIN_URL."/pages/index.php");
+} else {
+	$droplet_id = (int) $_POST['droplet_id'];
+}
+*/
+
+// Include WB admin wrapper script
+require_once(WB_PATH.'/framework/class.admin.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+$admintool_link = ADMIN_URL .'/admintools/index.php';
+$module_edit_link = ADMIN_URL .'/admintools/tool.php?tool=droplets';
+
+$admin = new admin('admintools', 'admintools',false);
+
+$droplet_id = intval($admin->checkIDKEY('droplet_id', false, 'POST'));
+
+if(!$admin->checkFTAN() || !$droplet_id ) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $module_edit_link );
+}
+$admin->print_header();
+
+// Validate all fields
+if($admin->get_post('title') == '') {
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/droplets/modify_droplet.php?droplet_id='. $admin->getIDKEY($droplet_id));
+} else {
+	$title = $admin->add_slashes($admin->get_post('title'));
+	$active = (int) $admin->get_post('active');
+	$admin_view = (int) $admin->get_post('admin_view');
+	$admin_edit = (int) $admin->get_post('admin_edit');
+	$show_wysiwyg = (int) $admin->get_post('show_wysiwyg');
+	$description = $admin->add_slashes($admin->get_post('description'));
+	$tags = array('<?php', '?>' , '<?');
+	$content = $admin->add_slashes(str_replace($tags, '', $_POST['savecontent']));
+	$comments = $admin->add_slashes($admin->get_post('comments'));
+	$modified_when = time();
+	$modified_by = (int) $admin->get_user_id();
+}
+
+// Update row
+$sql = 'UPDATE `'.TABLE_PREFIX.'mod_droplets` SET ';
+$sql .= '`name` = \''.$title.'\', ';
+$sql .= '`active` = '.$active.', ';
+$sql .= '`admin_view` = '.$admin_view.', ';
+$sql .= '`admin_edit` = '.$admin_edit.', ';
+$sql .= '`show_wysiwyg` = '.$show_wysiwyg.', ';
+$sql .= '`description` = \''.$description.'\', ';
+$sql .= '`code` = \''.$content.'\', ';
+$sql .= '`comments` = \''.$comments.'\', ';
+$sql .= '`modified_when` = '.$modified_when.', ';
+$sql .= '`modified_by` = '.$modified_by.' ';
+$sql .= 'WHERE `id` = '.$droplet_id;
+$database->query($sql);
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/droplets/modify_droplet.php?droplet_id='. $admin->getIDKEY($droplet_id));
+} else {
+    $admin->print_success($TEXT['SUCCESS'], $module_edit_link);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/droplets/save_droplet.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/index.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/index.php	(revision 1610)
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         droplet
+ * @author          Ruud Eisinga (Ruud) John (PCWacht)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/backend.css
===================================================================
--- tags/2.8.3/wb/modules/droplets/backend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/backend.css	(revision 1610)
@@ -0,0 +1,27 @@
+ul, li   { 
+	list-style: none;
+	margin: 0;
+	padding: 0 
+}
+
+.setting_name {
+	vertical-align: top;
+}
+
+.newsection {
+	border-top: 1px dashed #fff;
+}
+
+thead	{ 
+	font-weight: bold; 
+	background-color: #c7d1db; 
+	height: 25px }
+
+.row_om_out   { 
+	background: #ecf4f5 inherit; 
+	border: outset 1px #a5b3b4 
+}
+
+.row_om_over   { background: #ffffe0; border: outset 1px #679b38 }
+a.tooltip span {display:none; margin-left:14px; width:430px;}
+a.tooltip:hover span{display:inline; position:absolute; padding:5px; border:1px solid #000000; background:#ffffff; color:#000000;}

Property changes on: tags/2.8.3/wb/modules/droplets/backend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/languages/EN.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$module_description = 'This tool allows you to manage your local Droplets.';
+
+//Variables for the backend
+$DR_TEXT['DROPLETS']	= 'Droplet';
+$DR_TEXT['BACKUP']		= 'Backup Droplets (Zip)';
+$DR_TEXT['RESTORE']		= 'Restore Droplets (Zipped)';
+$DR_TEXT['HELP']		= 'Help / Readme';
+$DR_TEXT['README']		= 'readme.html';
+$DR_TEXT['INVALIDCODE']	= 'This Droplet has invalid PHP code';
+$DR_TEXT['NOTUNIQUE']	= 'This Dropletname is used more than once!';
+$DR_TEXT['ADMIN_EDIT']	= 'Edit-Only';
+$DR_TEXT['ADMIN_VIEW']	= 'View-Only';
+$DR_TEXT['WYSIWYG']		= 'Wysiwyg';
+$DR_TEXT['HELP']		= 'Help / Readme';
+$DR_TEXT['USED']		= 'This droplet is used on the following page(-s):<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/languages/DA.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$module_description = 'This tool allows you to manage your local Droplets.';
+
+//Variables for the backend
+$DR_TEXT['DROPLETS'] = 'Droplet';
+$DR_TEXT['BACKUP'] = 'Backup af dropletter (Zip)';
+$DR_TEXT['RESTORE'] = 'Indl&aelig;s backup af dropletter (fra Zip-fil)';
+$DR_TEXT['HELP'] = 'Hj&aelig;lp';
+$DR_TEXT['README'] = 'readme.html';
+$DR_TEXT['INVALIDCODE'] = 'Denne droplet indholder ugyldig PHP kode';
+$DR_TEXT['NOTUNIQUE'] = 'Dete dropletnavn bruges flere steder';
+$DR_TEXT['ADMIN_EDIT'] = 'Kun redigere';
+$DR_TEXT['ADMIN_VIEW'] = 'Kun se';
+$DR_TEXT['WYSIWYG'] = 'Wysiwyg';
+$DR_TEXT['HELP'] = 'Hj&aelig;lp';
+$DR_TEXT['USED'] = 'Denne droplet bruges p&Atilde;&yen; f&oslash;lgende side(r):<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/languages/DE.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Deutsche Modulbeschreibung
+$module_description 	= 'Mit Droplets kann PHP-Code in WYSIWYG-Abschnitten, Templates oder Modulen an beliebiger Stelle zur Verf&uuml;gung gestellt werden.';
+
+// Ueberschriften und Textausgaben
+$DR_TEXT['DROPLETS']	= 'Droplet';
+$DR_TEXT['BACKUP']		= 'Droplets sichern (Zip)';
+$DR_TEXT['RESTORE']		= 'Droplets wiederherstellen (Zipped)';
+$DR_TEXT['HELP']		= 'Hilfe';
+$DR_TEXT['README']		= 'readme.html';
+$DR_TEXT['INVALIDCODE']	= 'Dieses Droplet enth&auml;lt ung&uuml;ltigen PHP code';
+$DR_TEXT['NOTUNIQUE']	= 'Dieser Dropletname ist bereits vorhanden!';
+$DR_TEXT['ADMIN_EDIT']	= 'bearbeiten';
+$DR_TEXT['ADMIN_VIEW']	= 'ansehen';
+$DR_TEXT['WYSIWYG']		= 'Wysiwyg';
+$DR_TEXT['HELP']		= 'Hilfe';
+$DR_TEXT['USED']		= 'Dieses Droplet wird auf folgenden Seiten benutzt (-s):<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/img/index.php
===================================================================
--- tags/2.8.3/wb/modules/droplets/img/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets/img/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/droplets/img/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/img/droplets_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/droplets/img/droplets_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/img/invalid.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/droplets/img/invalid.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets/img/droplet.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/droplets/img/droplet.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/droplets
===================================================================
--- tags/2.8.3/wb/modules/droplets	(nonexistent)
+++ tags/2.8.3/wb/modules/droplets	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/droplets
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+backup-droplets.zip
Index: tags/2.8.3/wb/modules/news/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/news/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/upgrade.php	(revision 1610)
@@ -0,0 +1,182 @@
+<?php
+/**
+ *
+ * @category        WebsiteBaker
+ * @package         modules
+ * @subpackage      news
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+/* **** START UPGRADE ******************************************************* */
+if(!function_exists('mod_news_Upgrade'))
+{
+	function mod_news_Upgrade()
+	{
+		global $database, $msg, $admin, $MESSAGE;
+		$callingScript = $_SERVER["SCRIPT_NAME"];
+		$tmp = 'upgrade-script.php';
+		$globalStarted = substr_compare($callingScript, $tmp,(0-strlen($tmp)),strlen($tmp)) === 0;
+
+		$sPagesPath = WB_PATH.PAGES_DIRECTORY;
+		$sPostsPath = $sPagesPath.'/posts';
+	// create /posts/ - directory if not exists
+		if(!file_exists($sPostsPath)) {
+			if(is_writable($sPagesPath)) {
+				make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');
+			}else {
+				if(!$globalStarted){
+					$msg[] = ($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE']);
+				}else {
+					$msg[] = $MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'].'<br />';
+					return;
+				}
+			}
+			if($globalStarted) {echo 'directory "'.PAGES_DIRECTORY.'/posts/" created.<br />'; }
+		}
+	// check if new fields must be added
+		$doImportDate = true;
+		if(!$database->field_exists(TABLE_PREFIX.'mod_news_posts', 'created_when')) {
+			if(!$database->field_add(TABLE_PREFIX.'mod_news_posts', 'created_when',
+			                        'INT NOT NULL DEFAULT \'0\' AFTER `commenting`')) {
+				if($globalStarted){
+					echo $MESSAGE['RECORD_MODIFIED_FAILED'].'<br />';
+					return;
+				}else {
+					$admin->print_error($MESSAGE['RECORD_MODIFIED_FAILED']);
+				}
+			}
+			if($globalStarted) { echo 'datafield `'.TABLE_PREFIX.'mod_news_posts`.`created_when` added.<br />'; }
+		}else { $doImportDate = false; }
+		if(!$database->field_exists(TABLE_PREFIX.'mod_news_posts', 'created_by')) {
+			if(!$database->field_add(TABLE_PREFIX.'mod_news_posts', 'created_by',
+			                        'INT NOT NULL DEFAULT \'0\' AFTER `created_when`')) {
+				if($globalStarted){
+					echo $MESSAGE['RECORD_MODIFIED_FAILED'].'<br />';
+					return;
+				}else {
+					$admin->print_error($MESSAGE['RECORD_MODIFIED_FAILED']);
+				}
+			}
+			if($globalStarted) {echo 'datafield `'.TABLE_PREFIX.'mod_news_posts`.`created_by` added.<br />'; }
+		}
+	// preset new fields `created_by` and `created_when` from existing values
+		if($doImportDate) {
+			$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_news_posts` ';
+			$sql .= 'SET `created_by`=`posted_by`, `created_when`=`posted_when`';
+			$database->query($sql);
+		}
+
+	$array = rebuildFolderProtectFile($sPostsPath);
+	// now iterate through all existing accessfiles,
+	// write its creation date into database
+		$oDir = new DirectoryIterator($sPostsPath);
+		$count = 0;
+		foreach ($oDir as $fileinfo)
+		{
+			$fileName = $fileinfo->getFilename();
+			if((!$fileinfo->isDot()) &&
+			   ($fileName != 'index.php') &&
+			   (substr_compare($fileName,PAGE_EXTENSION,(0-strlen(PAGE_EXTENSION)),strlen(PAGE_EXTENSION)) === 0)
+			  )
+			{
+			// save creation date from old accessfile
+				if($doImportDate) {
+					$link = '/posts/'.preg_replace('/'.preg_quote(PAGE_EXTENSION).'$/i', '', $fileinfo->getFilename());
+					$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_news_posts` ';
+					$sql .= 'SET `created_when`='.$fileinfo->getMTime().' ';
+					$sql .= 'WHERE `link`=\''.$link.'\'';
+					$database->query($sql);
+				}
+			// delete old access file
+				unlink($fileinfo->getPathname());
+				$count++;
+			}
+		}
+		unset($oDir);
+		if($globalStarted && $count > 0) {
+			$msg[] = 'save date of creation from '.$count.' old accessfiles and delete these files.<br />';
+		}
+// ************************************************
+	// Check the validity of 'create-file-timestamp' and balance against 'posted-timestamp'
+		$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_news_posts` ';
+		$sql .= 'SET `created_when`=`published_when` ';
+		$sql .= 'WHERE `published_when`<`created_when`';
+		$database->query($sql);
+		$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_news_posts` ';
+		$sql .= 'SET `created_when`=`posted_when` ';
+		$sql .= 'WHERE `published_when`=0 OR `published_when`>`posted_when`';
+		$database->query($sql);
+// ************************************************
+
+	// rebuild all access-files
+		$count = 0;
+		$backSteps = preg_replace('@^'.preg_quote(WB_PATH).'@', '', $sPostsPath);
+		$backSteps = str_repeat( '../', substr_count($backSteps, '/'));
+		$sql  = 'SELECT `page_id`,`post_id`,`section_id`,`link` ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'mod_news_posts`';
+		$sql .= 'WHERE `link` != \'\'';
+		if( ($resPosts = $database->query($sql)) )
+		{
+			while( $recPost = $resPosts->fetchRow() )
+			{
+				$file = $sPagesPath.$recPost['link'].PAGE_EXTENSION;
+				$content =
+					'<?php'."\n".
+					'// *** This file is generated by WebsiteBaker Ver.'.VERSION."\n".
+					'// *** Creation date: '.date('c')."\n".
+					'// *** Do not modify this file manually'."\n".
+					'// *** WB will rebuild this file from time to time!!'."\n".
+					'// *************************************************'."\n".
+					"\t".'$page_id    = '.$recPost['page_id'].';'."\n".
+					"\t".'$section_id = '.$recPost['section_id'].';'."\n".
+					"\t".'$post_id    = '.$recPost['post_id'].';'."\n".
+					"\t".'$post_section = '.$recPost['section_id'].';'."\n".
+					"\t".'require(\''.$backSteps.'index.php\');'."\n".
+					'// *************************************************'."\n";
+				if( file_put_contents($file, $content) !== false ) {
+				// Chmod the file
+					change_mode($file);
+				}else {
+					if($globalStarted){
+						$msg[] = $MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'].'<br />';
+						return;
+					}else {
+						$msg[] = ($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE']);
+					}
+				}
+				$count++;
+			}
+		}
+		if($globalStarted) { $msg[] = 'created '.$count.' new accessfiles.'; }
+	}
+}
+
+	$msg = array();
+	$aTable = array('mod_news_posts','mod_news_groups','mod_news_comments','mod_news_settings');
+	for($x=0; $x<sizeof($aTable);$x++) {
+		if(($sOldType = $database->getTableEngine(TABLE_PREFIX.$aTable[$x]))) {
+			if(('myisam' != strtolower($sOldType))) {
+				if(!$database->query('ALTER TABLE `'.TABLE_PREFIX.$aTable[$x].'` Engine = \'MyISAM\' ')) {
+					$msg[] = $database->get_error();
+				}
+			}
+		} else {
+			$msg[] = $database->get_error();
+		}
+	}
+// ------------------------------------
+	mod_news_Upgrade();
+/* **** END UPGRADE ********************************************************* */
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/install.sql
===================================================================
--- tags/2.8.3/wb/modules/news/install.sql	(nonexistent)
+++ tags/2.8.3/wb/modules/news/install.sql	(revision 1610)
@@ -0,0 +1,88 @@
+-- phpMyAdmin SQL Dump
+-- Erstellungszeit: 20. Januar 2012 um 12:37
+-- Server Version: 5.1.41
+SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
+-- --------------------------------------------------------
+-- Database structure for module 'news'
+--
+-- Replacements: {TABLE_PREFIX}, {TABLE_ENGINE}, {TABLE_COLLATION}
+--
+-- --------------------------------------------------------
+--
+-- Tabellenstruktur für Tabelle `mod_news_comments`
+--
+DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_news_comments`;
+CREATE TABLE IF NOT EXISTS `{TABLE_PREFIX}mod_news_comments` (
+  `comment_id` int(11) NOT NULL AUTO_INCREMENT,
+  `section_id` int(11) NOT NULL DEFAULT '0',
+  `page_id` int(11) NOT NULL DEFAULT '0',
+  `post_id` int(11) NOT NULL DEFAULT '0',
+  `title` varchar(255){TABLE_COLLATION} NOT NULL,
+  `comment` text{TABLE_COLLATION} NOT NULL,
+  `commented_when` int(11) NOT NULL DEFAULT '0',
+  `commented_by` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`comment_id`)
+){TABLE_ENGINE};
+-- --------------------------------------------------------
+--
+-- Tabellenstruktur für Tabelle `mod_news_groups`
+--
+DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_news_groups`;
+CREATE TABLE IF NOT EXISTS `{TABLE_PREFIX}mod_news_groups` (
+  `group_id` int(11) NOT NULL AUTO_INCREMENT,
+  `section_id` int(11) NOT NULL DEFAULT '0',
+  `page_id` int(11) NOT NULL DEFAULT '0',
+  `active` int(11) NOT NULL DEFAULT '0',
+  `position` int(11) NOT NULL DEFAULT '0',
+  `title` varchar(255){TABLE_COLLATION} NOT NULL,
+  PRIMARY KEY (`group_id`)
+){TABLE_ENGINE};
+-- --------------------------------------------------------
+--
+-- Tabellenstruktur für Tabelle `mod_news_posts`
+--
+DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_news_posts`;
+CREATE TABLE IF NOT EXISTS `{TABLE_PREFIX}mod_news_posts` (
+  `post_id` int(11) NOT NULL AUTO_INCREMENT,
+  `section_id` int(11) NOT NULL DEFAULT '0',
+  `page_id` int(11) NOT NULL DEFAULT '0',
+  `group_id` int(11) NOT NULL DEFAULT '0',
+  `active` int(11) NOT NULL DEFAULT '0',
+  `position` int(11) NOT NULL DEFAULT '0',
+  `title` varchar(255){TABLE_COLLATION} NOT NULL,
+  `link` text{TABLE_COLLATION} NOT NULL,
+  `content_short` text{TABLE_COLLATION} NOT NULL,
+  `content_long` text{TABLE_COLLATION} NOT NULL,
+  `commenting` varchar(7){TABLE_COLLATION} NOT NULL,
+  `created_when` int(11) NOT NULL,
+  `created_by` int(11) NOT NULL,
+  `published_when` int(11) NOT NULL DEFAULT '0',
+  `published_until` int(11) NOT NULL DEFAULT '0',
+  `posted_when` int(11) NOT NULL DEFAULT '0',
+  `posted_by` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`post_id`)
+){TABLE_ENGINE};
+-- --------------------------------------------------------
+--
+-- Tabellenstruktur für Tabelle `mod_news_settings`
+--
+DROP TABLE IF EXISTS `{TABLE_PREFIX}mod_news_settings`;
+CREATE TABLE IF NOT EXISTS `{TABLE_PREFIX}mod_news_settings` (
+  `section_id` int(11) NOT NULL DEFAULT '0',
+  `page_id` int(11) NOT NULL DEFAULT '0',
+  `header` text{TABLE_COLLATION} NOT NULL,
+  `post_loop` text{TABLE_COLLATION} NOT NULL,
+  `footer` text{TABLE_COLLATION} NOT NULL,
+  `posts_per_page` int(11) NOT NULL DEFAULT '0',
+  `post_header` text{TABLE_COLLATION} NOT NULL,
+  `post_footer` text{TABLE_COLLATION} NOT NULL,
+  `comments_header` text{TABLE_COLLATION} NOT NULL,
+  `comments_loop` text{TABLE_COLLATION} NOT NULL,
+  `comments_footer` text{TABLE_COLLATION} NOT NULL,
+  `comments_page` text{TABLE_COLLATION} NOT NULL,
+  `commenting` varchar(7){TABLE_COLLATION} NOT NULL,
+  `resize` int(11) NOT NULL DEFAULT '0',
+  `use_captcha` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`section_id`)
+){TABLE_ENGINE};
+-- EndOfFile
\ No newline at end of file
Index: tags/2.8.3/wb/modules/news/install.php
===================================================================
--- tags/2.8.3/wb/modules/news/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/install.php	(revision 1610)
@@ -0,0 +1,47 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+	$sDefaultSql = dirname(__FILE__).'/install.sql';
+	if (is_readable($sDefaultSql)) {
+// create needet database tables and set default records
+		if ($database->SqlImport($sDefaultSql, TABLE_PREFIX)) {
+// Make news post access files dir
+			require_once(WB_PATH.'/framework/functions.php');
+			if(make_dir(WB_PATH.PAGES_DIRECTORY.'/posts')) {
+				// Add a index.php file to prevent directory spoofing
+				$sResponse  = $_SERVER['SERVER_PROTOCOL'].' 301 Moved Permanently';
+				$sContent =
+					'<?php'."\n".
+					'// *** This file is generated by WebsiteBaker Ver.'.VERSION."\n".
+					'// *** Creation date: '.date('c')."\n".
+					'// *** Do not modify this file manually'."\n".
+					'// *** WB will rebuild this file from time to time!!'."\n".
+					'// *************************************************'."\n".
+					"\t".'header(\''.$sResponse.'\');'."\n".
+					"\t".'header(\'Location: ../index.php\');'."\n".
+					'// *************************************************'."\n";
+				$sFilename = WB_PATH.PAGES_DIRECTORY.'/posts/index.php';
+				file_put_contents($sFilename, $sContent);
+				change_mode($sFilename, 'file');
+			}
+		}
+	}
+/* **** END INSTALL ********************************************************* */
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/info.php
===================================================================
--- tags/2.8.3/wb/modules/news/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/info.php	(revision 1610)
@@ -0,0 +1,33 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+$module_directory   = 'news';
+$module_name        = 'News';
+$module_function    = 'page';
+$module_version     = '3.5.6';
+$module_platform    = '2.8.2';
+$module_author      = 'Ryan Djurovich, Rob Smith, Werner v.d.Decken';
+$module_license     = 'GNU General Public License';
+$module_description = 'This page type is designed for making a news page.';

Property changes on: tags/2.8.3/wb/modules/news/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/add_post.php
===================================================================
--- tags/2.8.3/wb/modules/news/add_post.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/add_post.php	(revision 1610)
@@ -0,0 +1,48 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Get default commenting
+$query_settings = $database->query("SELECT commenting FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+$fetch_settings = $query_settings->fetchRow();
+$commenting = $fetch_settings['commenting'];
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_posts (section_id,page_id,position,commenting,active) VALUES ('$section_id','$page_id','$position','$commenting','1')");
+
+// Get the id
+$post_id = $admin->getIDKEY($database->get_one("SELECT LAST_INSERT_ID()"));
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/add_post.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/search.php
===================================================================
--- tags/2.8.3/wb/modules/news/search.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/search.php	(revision 1610)
@@ -0,0 +1,139 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+function news_search($func_vars) {
+	extract($func_vars, EXTR_PREFIX_ALL, 'func');
+	static $search_sql1 = FALSE;
+	static $search_sql2 = FALSE;
+	static $search_sql3 = FALSE;
+	if(function_exists('search_make_sql_part')) {
+		if($search_sql1===FALSE)
+			$search_sql1 = search_make_sql_part($func_search_url_array, $func_search_match, array('`title`','`content_short`','`content_long`'));
+		if($search_sql2===FALSE)
+			$search_sql2 = search_make_sql_part($func_search_url_array, $func_search_match, array('`title`','`comment`'));
+		if($search_sql3===FALSE)
+			$search_sql3 = search_make_sql_part($func_search_url_array, $func_search_match, array('g.`title`'));
+	} else {
+		$search_sql1 = $search_sql2 = $search_sql3 = '1=1';
+	}
+	// how many lines of excerpt we want to have at most
+	$max_excerpt_num = $func_default_max_excerpt;
+	// do we want excerpt from comments?
+	$excerpt_from_comments = true; // TODO: make this configurable
+	$divider = ".";
+	$result = false;
+
+  if($func_time_limit>0) {
+    $stop_time = time() + $func_time_limit;
+  }
+
+	// fetch all active news-posts (from active groups) in this section.
+	$t = time();
+	$table_posts = TABLE_PREFIX."mod_news_posts";
+	$table_groups = TABLE_PREFIX."mod_news_groups";
+	$query = $func_database->query("
+		SELECT p.post_id, p.title, p.content_short, p.content_long, p.link, p.posted_when, p.posted_by
+		FROM $table_posts AS p LEFT OUTER JOIN $table_groups AS g ON p.group_id = g.group_id
+		WHERE p.section_id='$func_section_id' AND p.active = '1' AND ( g.active IS NULL OR g.active = '1' )
+		AND (published_when = '0' OR published_when <= $t) AND (published_until = 0 OR published_until >= $t)
+		ORDER BY p.post_id DESC
+	");
+	// now call print_excerpt() for every single post
+	if($query->numRows() > 0) {
+		while($res = $query->fetchRow()) {
+			$text = '';
+			// break out if stop-time is reached
+			if(isset($stop_time) && time()>$stop_time) return($result);
+			// fetch content
+			$postquery = $func_database->query("
+				SELECT title, content_short, content_long
+				FROM $table_posts
+				WHERE post_id='{$res['post_id']}' AND $search_sql1
+			");
+			if($postquery->numRows() > 0) {
+				if($p_res = $postquery->fetchRow()) {
+					$text = $p_res['title'].$divider.$p_res['content_short'].$divider.$p_res['content_long'].$divider;
+				}
+			}
+			// fetch comments and add to $text
+			if($excerpt_from_comments) {
+				$table = TABLE_PREFIX."mod_news_comments";
+				$commentquery = $func_database->query("
+					SELECT title, comment
+					FROM $table
+					WHERE post_id='{$res['post_id']}' AND $search_sql2
+					ORDER BY commented_when ASC
+				");
+				if($commentquery->numRows() > 0) {
+					while($c_res = $commentquery->fetchRow()) {
+						// break out if stop-time is reached
+						if(isset($stop_time) && time()>$stop_time) return($result);
+						$text .= $c_res['title'].$divider.$c_res['comment'].$divider;
+					}
+				}
+			}
+			if($text) {
+				$mod_vars = array(
+					'page_link' => $res['link'], // use direct link to news-item
+					'page_link_target' => "",
+					'page_title' => $func_page_title,
+					'page_description' => $res['title'], // use news-title as description
+					'page_modified_when' => $res['posted_when'],
+					'page_modified_by' => $res['posted_by'],
+					'text' => $text,
+					'max_excerpt_num' => $max_excerpt_num
+				);
+				if(print_excerpt2($mod_vars, $func_vars)) {
+					$result = true;
+				}
+			}
+		}
+	}
+	
+	// now fetch group-titles - ignore those without (active) postings
+	$table_groups = TABLE_PREFIX."mod_news_groups";
+	$table_posts = TABLE_PREFIX."mod_news_posts";
+	$query = $func_database->query("
+		SELECT DISTINCT g.title, g.group_id
+		FROM $table_groups AS g INNER JOIN $table_posts AS p ON g.group_id = p.group_id
+		WHERE g.section_id='$func_section_id' AND g.active = '1' AND p.active = '1' AND $search_sql3
+	");
+	// now call print_excerpt() for every single group, too
+	if($query->numRows() > 0) {
+		while($res = $query->fetchRow()) {
+			// break out if stop-time is reached
+			if(isset($stop_time) && time()>$stop_time) return($result);
+			$mod_vars = array(
+				'page_link' => $func_page_link,
+				'page_link_target' => "&g=".$res['group_id'],
+				'page_title' => $func_page_title,
+				'page_description' => $func_page_description,
+				'page_modified_when' => $func_page_modified_when,
+				'page_modified_by' => $func_page_modified_by,
+				'text' => $res['title'].$divider,
+				'max_excerpt_num' => $max_excerpt_num
+			);
+			if(print_excerpt2($mod_vars, $func_vars)) {
+				$result = true;
+			}
+		}
+	}
+	return $result;
+}

Property changes on: tags/2.8.3/wb/modules/news/search.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/modify_settings.php
===================================================================
--- tags/2.8.3/wb/modules/news/modify_settings.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/modify_settings.php	(revision 1610)
@@ -0,0 +1,205 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// $admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = false;
+// show the info banner
+$print_info_banner = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// include core functions of WB 2.7 to edit the optional module CSS files (frontend.css, backend.css)
+@include_once(WB_PATH .'/framework/module.functions.php');
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/news/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/news/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/news/languages/'.LANGUAGE .'.php');
+}
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+$fetch_content = $query_content->fetchRow();
+
+// Set raw html <'s and >'s to be replace by friendly html code
+$raw = array('<', '>');
+$friendly = array('&lt;', '&gt;');
+
+// check if backend.css file needs to be included into the <body></body> of modify.php
+if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH ."/modules/form/backend.css")) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/form/backend.css');
+	echo "\n</style>\n";
+}
+
+?>
+<h2><?php echo $MOD_NEWS['SETTINGS']; ?></h2>
+<?php
+// include the button to edit the optional module CSS files (function added with WB 2.7)
+// Note: CSS styles for the button are defined in backend.css (div class="mod_moduledirectory_edit_css")
+// Place this call outside of any <form></form> construct!!!
+if(function_exists('edit_module_css'))
+{
+	edit_module_css('news');
+}
+?>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_settings.php" method="post" style="margin: 0;">
+
+	<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+	<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+	<?php echo $admin->getFTAN(); ?>
+	<table class="row_a" cellpadding="2" cellspacing="0" width="100%">
+		<tr>
+			<td colspan="2"><strong><?php echo $HEADING['GENERAL_SETTINGS']; ?></strong></td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['HEADER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="header" rows="10" cols="1" style="width: 98%; height: 80px;"><?php echo ($fetch_content['header']); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['POST'].' '.$TEXT['LOOP']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="post_loop" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo ($fetch_content['post_loop']); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['FOOTER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="footer" rows="10" cols="1" style="width: 98%; height: 80px;"><?php echo str_replace($raw, $friendly, ($fetch_content['footer'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['POST_HEADER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="post_header" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo str_replace($raw, $friendly, ($fetch_content['post_header'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['POST_FOOTER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="post_footer" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo str_replace($raw, $friendly, ($fetch_content['post_footer'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['POSTS_PER_PAGE']; ?>:</td>
+			<td class="setting_value">
+				<select name="posts_per_page" style="width: 98%;">
+					<option value=""><?php echo $TEXT['UNLIMITED']; ?></option>
+					<?php
+					for($i = 1; $i <= 20; $i++) {
+						if($fetch_content['posts_per_page'] == ($i*5)) { $selected = ' selected="selected"'; } else { $selected = ''; }
+						echo '<option value="'.($i*5).'"'.$selected.'>'.($i*5).'</option>';
+					}
+					?>
+				</select>
+			</td>
+		</tr>
+	</table>
+	<table class="row_a" cellpadding="2" cellspacing="0" width="100%" style="margin-top: 3px;">
+		<tr>
+			<td colspan="2"><strong><?php echo $TEXT['COMMENTS']; ?></strong></td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['COMMENTING']; ?>:</td>
+			<td class="setting_value">
+				<select name="commenting" style="width: 98%;">
+					<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
+					<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo ' selected="selected"'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
+					<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo 'selected="selected"'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['CAPTCHA_VERIFICATION']; ?>:</td>
+			<td>
+				<input type="radio" name="use_captcha" id="use_captcha_true" value="1"<?php if($fetch_content['use_captcha'] == true) { echo ' checked="checked"'; } ?> />
+				<label for="use_captcha_true"><?php echo $TEXT['ENABLED']; ?></label>
+				<input type="radio" name="use_captcha" id="use_captcha_false" value="0"<?php if($fetch_content['use_captcha'] == false) { echo ' checked="checked"'; } ?> />
+				<label for="use_captcha_false"><?php echo $TEXT['DISABLED']; ?></label>
+			</td>
+		</tr>
+		<?php if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) { /* Make's sure GD library is installed */ ?>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['RESIZE_IMAGE_TO']; ?>:</td>
+			<td class="setting_value">
+				<select name="resize" style="width: 98%;">
+					<option value=""><?php echo $TEXT['NONE']; ?></option>
+					<?php
+					$SIZES['50'] = '50x50px';
+					$SIZES['75'] = '75x75px';
+					$SIZES['100'] = '100x100px';
+					$SIZES['125'] = '125x125px';
+					$SIZES['150'] = '150x150px';
+					foreach($SIZES AS $size => $size_name) {
+						if($fetch_content['resize'] == $size) { $selected = ' selected="selected"'; } else { $selected = ''; }
+						echo '<option value="'.$size.'"'.$selected.'>'.$size_name.'</option>';
+					}
+					?>
+				</select>
+			</td>
+		</tr>
+		<?php } ?>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['HEADER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="comments_header" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo str_replace($raw, $friendly, ($fetch_content['comments_header'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['LOOP']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="comments_loop" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo str_replace($raw, $friendly, ($fetch_content['comments_loop'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['FOOTER']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="comments_footer" rows="10" cols="1" style="width: 98%; height: 60px;"><?php echo str_replace($raw, $friendly, ($fetch_content['comments_footer'])); ?></textarea>
+			</td>
+		</tr>
+		<tr>
+			<td class="setting_name"><?php echo $TEXT['COMMENTS'].' '.$TEXT['PAGE']; ?>:</td>
+			<td class="setting_value">
+				<textarea name="comments_page" rows="10" cols="1" style="width: 98%; height: 80px;"><?php echo str_replace($raw, $friendly, ($fetch_content['comments_page'])); ?></textarea>
+			</td>
+		</tr>
+	</table>
+	<table cellpadding="0" cellspacing="0" border="0" width="100%">
+		<tr>
+			<td class="left">
+				<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+			</td>
+			<td class="right">
+				<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+			</td>
+		</tr>
+	</table>
+</form>
+
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/modify_settings.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/delete_post.php
===================================================================
--- tags/2.8.3/wb/modules/news/delete_post.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/delete_post.php	(revision 1610)
@@ -0,0 +1,63 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$post_id = ($admin->checkIDKEY('post_id', false, 'GET'));
+if (!$post_id) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+// Get post details
+$query_details = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+if($query_details->numRows() > 0) {
+	$get_details = $query_details->fetchRow();
+} else {
+	$admin->print_error($TEXT['NOT_FOUND'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Unlink post access file
+if(is_writable(WB_PATH.PAGES_DIRECTORY.$get_details['link'].PAGE_EXTENSION)) {
+	unlink(WB_PATH.PAGES_DIRECTORY.$get_details['link'].PAGE_EXTENSION);
+}
+
+// Delete post
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id' LIMIT 1");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '$post_id'");
+
+// Clean up ordering
+require(WB_PATH.'/framework/class.order.php');
+$order = new order(TABLE_PREFIX.'mod_news_posts', 'position', 'post_id', 'section_id');
+$order->clean($section_id); 
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&post_id='.$post_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/delete_post.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/news/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/uninstall.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE name = 'module' AND value = 'news'");
+$database->query("DELETE FROM ".TABLE_PREFIX."search WHERE extra = 'news'");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_posts");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_groups");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_comments");
+$database->query("DROP TABLE ".TABLE_PREFIX."mod_news_settings");
+
+require_once(WB_PATH.'/framework/functions.php');
+rm_full_dir(WB_PATH.PAGES_DIRECTORY.'/posts');
+rm_full_dir(WB_PATH.MEDIA_DIRECTORY.'/.news');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/modify_comment.php
===================================================================
--- tags/2.8.3/wb/modules/news/modify_comment.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/modify_comment.php	(revision 1610)
@@ -0,0 +1,75 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$comment_id = $admin->checkIDKEY('comment_id', false, 'GET');
+if (!$comment_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],  ADMIN_URL.'/pages/modify.php?page_id='.$page_id );
+}
+
+// Get header and footer
+$query_content = $database->query("SELECT post_id,title,comment FROM ".TABLE_PREFIX."mod_news_comments WHERE comment_id = '$comment_id'");
+$fetch_content = $query_content->fetchRow();
+?>
+
+<h2><?php echo $TEXT['MODIFY'].' '.$TEXT['COMMENT']; ?></h2>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_comment.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="post_id" value="<?php echo $fetch_content['post_id']; ?>" />
+<input type="hidden" name="comment_id" value="<?php echo $comment_id; ?>" />
+<?php echo $admin->getFTAN(); ?>
+<table class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo (htmlspecialchars($fetch_content['title'])); ?>" style="width: 98%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td valign="top"><?php echo $TEXT['COMMENT']; ?>:</td>
+	<td>
+		<textarea name="comment" rows="10" cols="1" style="width: 98%; height: 150px;"><?php echo (htmlspecialchars($fetch_content['comment'])); ?></textarea>
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php
+			echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php
+			echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php
+			echo $admin->getIDKEY($fetch_content['post_id']); ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+</form>
+
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/modify_comment.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/view.php
===================================================================
--- tags/2.8.3/wb/modules/news/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/view.php	(revision 1610)
@@ -0,0 +1,450 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+global $post_id, $post_section,$TEXT,$MESSAGE;
+
+// load module language file
+$lang = (dirname(__FILE__)) . '/languages/' . LANGUAGE . '.php';
+require_once(!file_exists($lang) ? (dirname(__FILE__)) . '/languages/EN.php' : $lang );
+
+//overwrite php.ini on Apache servers for valid SESSION ID Separator
+if(function_exists('ini_set'))
+{
+	ini_set('arg_separator.output', '&amp;');
+}
+
+// Check if there is a start point defined
+$position = ( isset($_GET['p']) ? intval($_GET['p']) : 0);
+// Get user's username, display name, email, and id - needed for insertion into post info
+$users = array();
+$sql = 'SELECT `user_id`,`username`,`display_name`,`email` FROM `'.TABLE_PREFIX.'users`';
+if( ($resUsers = $database->query($sql)) ) {
+	while( $recUser = $resUsers->fetchRow() ) {
+		$users[$recUser['user_id']] = $recUser;
+	}
+}
+// Get groups (title, if they are active, and their image [if one has been uploaded])
+if (isset($groups))
+{
+   unset($groups);
+}
+
+$groups[0]['title'] = '';
+$groups[0]['active'] = true;
+$groups[0]['image'] = '';
+
+$query_users = $database->query("SELECT group_id,title,active FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_users->numRows() > 0)
+{
+
+	while( false != ($group = $query_users->fetchRow()) )
+    {
+		// Insert user info into users array
+		$group_id = $group['group_id'];
+		$groups[$group_id]['title'] = ($group['title']);
+		$groups[$group_id]['active'] = $group['active'];
+		if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg'))
+        {
+			$groups[$group_id]['image'] = WB_URL.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
+		} else {
+			$groups[$group_id]['image'] = '';
+		}
+	}
+}
+
+// Check if we should show the main page or a post itself
+// if(!defined('POST_ID') OR !is_numeric(POST_ID))
+if(!isset($post_id) || !is_numeric($post_id))
+{
+
+	// Check if we should only list posts from a certain group
+	if(isset($_GET['g']) AND is_numeric($_GET['g']))
+    {
+		$query_extra = 'AND `group_id`='.(int)$_GET['g'].' ';
+	} else {
+		$query_extra = '';
+	}
+
+	// Check if we should only list posts from a certain group
+	if(isset($_GET['g']) AND is_numeric($_GET['g']))
+    {
+		$query_extra = 'AND `group_id`='.(int)$_GET['g'].' ';
+	} else {
+		$query_extra = '';
+	}
+
+	// Get settings
+	$setting_header = $setting_post_loop = $setting_footer = $setting_posts_per_page = '';
+	$sql  = 'SELECT `header`, `post_loop`, `footer`, `posts_per_page` ';
+	$sql .= 'FROM `'.TABLE_PREFIX.'mod_news_settings` ';
+	$sql .= 'WHERE `section_id`='.(int)$section_id;
+	if( ($resSettings = $database->query($sql)) ){
+		if( ($recSettings = $resSettings->fetchRow()) ) {
+			foreach($recSettings as $key=>$val){
+				${'setting_'.$key} = $val;
+			}
+		}
+	}
+	$t = time();
+	// Get total number of posts
+	$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'mod_news_posts` ';
+	$sql .= 'WHERE `section_id`='.(int)$section_id.' AND `active`=1 ';
+	$sql .=        'AND `title`!=\'\' '.$query_extra;
+	$sql .=        'AND (`published_when`=0 OR `published_when`<='.$t.') ';
+	$sql .=        'AND (`published_until`=0 OR `published_until`>='.$t.') ';
+	$total_num = intval($database->get_one($sql));
+	// Work-out if we need to add limit code to sql
+	if($setting_posts_per_page != 0)
+    {
+		$limit_sql = " LIMIT $position, $setting_posts_per_page";
+	} else {
+		$limit_sql = "";
+	}
+
+	// Query posts (for this page)
+	$query_posts = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts
+		WHERE section_id = '$section_id' AND active = '1' AND title != ''$query_extra
+		AND (published_when = '0' OR published_when <= $t) AND (published_until = 0 OR published_until >= $t)
+		ORDER BY position DESC".$limit_sql);
+	$num_posts = $query_posts->numRows();
+
+	// Create previous and next links
+	if($setting_posts_per_page != 0)
+    {
+		if($position > 0)
+        {
+			if(isset($_GET['g']) AND is_numeric($_GET['g']))
+            {
+				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'&amp;g='.$_GET['g'].'">&lt;&lt; ';
+			} else {
+				$pl_prepend = '<a href="?p='.($position-$setting_posts_per_page).'">&lt;&lt; ';
+			}
+			$pl_append = '</a>';
+			$previous_link = $pl_prepend.$TEXT['PREVIOUS'].$pl_append;
+			$previous_page_link = $pl_prepend.$TEXT['PREVIOUS_PAGE'].$pl_append;
+		} else {
+			$previous_link = '';
+			$previous_page_link = '';
+		}
+		if($position + $setting_posts_per_page >= $total_num)
+        {
+			$next_link = '';
+			$next_page_link = '';
+		} else {
+			if(isset($_GET['g']) AND is_numeric($_GET['g']))
+            {
+				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'&amp;g='.$_GET['g'].'"> ';
+			} else {
+				$nl_prepend = '<a href="?p='.($position+$setting_posts_per_page).'"> ';
+			}
+			$nl_append = ' &gt;&gt;</a>';
+			$next_link = $nl_prepend.$TEXT['NEXT'].$nl_append;
+			$next_page_link = $nl_prepend.$TEXT['NEXT_PAGE'].$nl_append;
+		}
+		if($position+$setting_posts_per_page > $total_num)
+        {
+			$num_of = $position+$num_posts;
+		} else {
+			$num_of = $position+$setting_posts_per_page;
+		}
+
+		$out_of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OUT_OF']).' '.$total_num;
+		$of = ($position+1).'-'.$num_of.' '.strtolower($TEXT['OF']).' '.$total_num;
+		$display_previous_next_links = '';
+	} else {
+		$display_previous_next_links = 'none';
+	}
+
+	if ($num_posts === 0)
+    {
+		$setting_header = '';
+		$setting_post_loop = '';
+		$setting_footer = '';
+		$setting_posts_per_page = '';
+	}
+
+	// Print header
+	if($display_previous_next_links == 'none')
+    {
+		print  str_replace( array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'),
+                            array('','','','','','', $display_previous_next_links), $setting_header);
+	} else {
+		print str_replace(  array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'),
+                            array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_header);
+	}
+	if($num_posts > 0)
+    {
+		if($query_extra != '')
+        {
+			?>
+			<div class="selected-group-title">
+				<?php print '<a href="'.htmlspecialchars(strip_tags($_SERVER['SCRIPT_NAME'])).'">'.PAGE_TITLE.'</a> &gt;&gt; '.$groups[$_GET['g']]['title']; ?>
+			</div>
+			<?php
+		}
+		while( false != ($post = $query_posts->fetchRow()) )
+        {
+			if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false)
+            { // Make sure parent group is active
+				$uid = $post['posted_by']; // User who last modified the post
+				// Workout date and time of last modified post
+				if ($post['published_when'] === '0') $post['published_when'] = time();
+				if ($post['published_when'] > $post['posted_when'])
+                {
+					$post_date = date(DATE_FORMAT, $post['published_when']+TIMEZONE);
+					$post_time = date(TIME_FORMAT, $post['published_when']+TIMEZONE);
+				} else {
+					$post_date = date(DATE_FORMAT, $post['posted_when']+TIMEZONE);
+					$post_time = date(TIME_FORMAT, $post['posted_when']+TIMEZONE);
+				}
+
+				$publ_date = date(DATE_FORMAT,$post['published_when']);
+				$publ_time = date(TIME_FORMAT,$post['published_when']);
+
+				// Work-out the post link
+				$post_link = page_link($post['link']);
+
+                $post_link_path = str_replace(WB_URL, WB_PATH,$post_link);
+    			$create_date = date(DATE_FORMAT, $post['created_when']);
+    			$create_time = date(TIME_FORMAT, $post['created_when']);
+
+				if(isset($_GET['p']) AND $position > 0)
+                {
+					$post_link .= '?p='.$position;
+				}
+				if(isset($_GET['g']) AND is_numeric($_GET['g']))
+                {
+					if(isset($_GET['p']) AND $position > 0) { $post_link .= '&amp;'; } else { $post_link .= '?'; }
+                    {
+					$post_link .= 'g='.$_GET['g'];
+                    }
+				}
+
+				// Get group id, title, and image
+				$group_id = $post['group_id'];
+				$group_title = $groups[$group_id]['title'];
+				$group_image = $groups[$group_id]['image'];
+				$display_image = ($group_image == '') ? "none" : "inherit";
+				$display_group = ($group_id == 0) ? 'none' : 'inherit';
+
+				if ($group_image != "") $group_image= "<img src='".$group_image."' alt='".$group_title."' />";
+
+				// Replace [wblink--PAGE_ID--] with real link
+				$short = ($post['content_short']);
+				// Replace vars with values
+				$post_long_len = strlen($post['content_long']);
+				$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[LINK]', '[MODI_DATE]', '[MODI_TIME]', '[CREATED_DATE]', '[CREATED_TIME]', '[PUBLISHED_DATE]', '[PUBLISHED_TIME]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]', '[TEXT_READ_MORE]','[SHOW_READ_MORE]');
+				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '')
+                {
+					if($post_long_len < 9)
+                    {
+						$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $short, '#" onclick="javascript:void(0);return false;" style="cursor:no-drop;', $post_date, $post_time, $create_date, $create_time, $publ_date, $publ_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email'], '', 'hidden');
+					} else {
+					   	$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $short, $post_link, $post_date, $post_time, $create_date, $create_time, $publ_date, $publ_time, $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email'], $MOD_NEWS['TEXT_READ_MORE'], 'visible');
+					}
+				} else {
+					if($post_long_len < 9)
+                    {
+						$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $short, '#" onclick="javascript:void(0);return false;" style="cursor:no-drop;', $post_date, $post_time, $create_date, $create_time, $publ_date, $publ_time, '', '', '', '', '','hidden');
+					} else {
+						$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $short, $post_link, $post_date, $post_time, $create_date, $create_time, $publ_date, $publ_time, '', '', '', '', $MOD_NEWS['TEXT_READ_MORE'],'visible');
+					}
+				}
+				print str_replace($vars, $values, $setting_post_loop);
+			}
+		}
+	}
+    // Print footer
+    if($display_previous_next_links == 'none')
+    {
+    	print  str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array('','','','','','', $display_previous_next_links), $setting_footer);
+    }
+    else
+    {
+    	print str_replace(array('[NEXT_PAGE_LINK]','[NEXT_LINK]','[PREVIOUS_PAGE_LINK]','[PREVIOUS_LINK]','[OUT_OF]','[OF]','[DISPLAY_PREVIOUS_NEXT_LINKS]'), array($next_page_link, $next_link, $previous_page_link, $previous_link, $out_of, $of, $display_previous_next_links), $setting_footer);
+    }
+
+}
+//elseif(defined('POST_ID') AND is_numeric(POST_ID))
+elseif(isset($post_id) && is_numeric($post_id))
+{
+
+  // print '<h2>'.POST_ID.'/'.PAGE_ID.'/'.POST_SECTION.'</h2>';
+//  if(defined('POST_SECTION') AND POST_SECTION == $section_id)
+  if(isset($post_section) && ($post_section == $section_id))
+  {
+	// Get settings
+	$setting_post_header = $setting_post_footer = $setting_comments_header
+	                     = $setting_comments_loop = $setting_comments_footer = '';
+	$sql  = 'SELECT `post_header`, `post_footer`, `comments_header`, `comments_loop`, `comments_footer` ';
+	$sql .= 'FROM `'.TABLE_PREFIX.'mod_news_settings` ';
+	$sql .= 'WHERE `section_id`='.(int)$section_id;
+	if( ($resSettings = $database->query($sql)) ){
+		if( ($recSettings = $resSettings->fetchRow()) ) {
+			foreach($recSettings as $key=>$val){
+				${'setting_'.$key} = $val;
+			}
+		}
+	}
+	// Get page info
+	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."pages WHERE page_id = '".PAGE_ID."'");
+	if($query_page->numRows() > 0)
+    {
+		$page = $query_page->fetchRow();
+		$page_link = page_link($page['link']);
+		if(isset($_GET['p']) AND $position > 0)
+        {
+			$page_link .= '?p='.$_GET['p'];
+		}
+		if(isset($_GET['g']) AND is_numeric($_GET['g']))
+        {
+			if(isset($_GET['p']) AND $position > 0) { $page_link .= '&amp;'; } else { $page_link .= '?'; }
+			$page_link .= 'g='.$_GET['g'];
+		}
+	} else {
+		exit($MESSAGE['PAGES']['NOT_FOUND']);
+	}
+
+	// Get post info
+	$t = time();
+	$query_post = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts
+		WHERE post_id = '".$post_id."' AND active = '1'
+		AND (published_when = '0' OR published_when <= $t) AND (published_until = 0 OR published_until >= $t)");
+
+	if($query_post->numRows() > 0)
+    {
+		$post = $query_post->fetchRow();
+		if(isset($groups[$post['group_id']]['active']) AND $groups[$post['group_id']]['active'] != false)
+        { // Make sure parent group is active
+			$uid = $post['posted_by']; // User who last modified the post
+			// Workout date and time of last modified post
+			if ($post['published_when'] === '0') $post['published_when'] = time();
+			if ($post['published_when'] > $post['posted_when'])
+            {
+				$post_date = date(DATE_FORMAT, $post['published_when']+TIMEZONE);
+				$post_time = date(TIME_FORMAT, $post['published_when']+TIMEZONE);
+			}
+            else
+            {
+				$post_date = date(DATE_FORMAT, $post['posted_when']+TIMEZONE);
+				$post_time = date(TIME_FORMAT, $post['posted_when']+TIMEZONE);
+			}
+
+			$publ_date = date(DATE_FORMAT,$post['published_when']);
+			$publ_time = date(TIME_FORMAT,$post['published_when']);
+
+			// Work-out the post link
+			$post_link = page_link($post['link']);
+
+			$post_link_path = str_replace(WB_URL, WB_PATH,$post_link);
+			$create_date = date(DATE_FORMAT, $post['created_when']);
+			$create_time = date(TIME_FORMAT, $post['created_when']);
+			// Get group id, title, and image
+			$group_id = $post['group_id'];
+			$group_title = $groups[$group_id]['title'];
+			$group_image = $groups[$group_id]['image'];
+			$display_image = ($group_image == '') ? "none" : "inherit";
+			$display_group = ($group_id == 0) ? 'none' : 'inherit';
+
+			if ($group_image != "") $group_image= "<img src='".$group_image."' alt='".$group_title."' />";
+
+			$vars = array('[PAGE_TITLE]', '[GROUP_ID]', '[GROUP_TITLE]', '[GROUP_IMAGE]', '[DISPLAY_GROUP]', '[DISPLAY_IMAGE]', '[TITLE]', '[SHORT]', '[BACK]', '[TEXT_BACK]', '[TEXT_LAST_CHANGED]', '[MODI_DATE]', '[TEXT_AT]', '[MODI_TIME]', '[CREATED_DATE]', '[CREATED_TIME]', '[PUBLISHED_DATE]', '[PUBLISHED_TIME]', '[TEXT_POSTED_BY]', '[TEXT_ON]', '[USER_ID]', '[USERNAME]', '[DISPLAY_NAME]', '[EMAIL]');
+			$post_short=$post['content_short'];
+			if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '')
+            {
+				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $post_short, $page_link, $MOD_NEWS['TEXT_BACK'], $MOD_NEWS['TEXT_LAST_CHANGED'],$post_date, $MOD_NEWS['TEXT_AT'], $post_time, $create_date, $create_time, $publ_date, $publ_time, $MOD_NEWS['TEXT_POSTED_BY'], $MOD_NEWS['TEXT_ON'], $uid, $users[$uid]['username'], $users[$uid]['display_name'], $users[$uid]['email']);
+			} else {
+				$values = array(PAGE_TITLE, $group_id, $group_title, $group_image, $display_group, $display_image, $post['title'], $post_short, $page_link, $MOD_NEWS['TEXT_BACK'], $MOD_NEWS['TEXT_LAST_CHANGED'], $post_date, $MOD_NEWS['TEXT_AT'], $post_time, $create_date, $create_time, $publ_date, $publ_time, $MOD_NEWS['TEXT_POSTED_BY'], $MOD_NEWS['TEXT_ON'], '', '', '', '');
+			}
+			// $post_long = ($post['content_long']);
+			$post_long = ($post['content_long'] != '') ? $post['content_long'] : $post['content_short'];
+		}
+	} else {
+	    	$wb->print_error($MESSAGE['FRONTEND']['SORRY_NO_ACTIVE_SECTIONS'], 'view.php', false);
+	}
+
+	// Print post header
+	print str_replace($vars, $values, $setting_post_header);
+	// Print long
+	print $post_long;
+
+	// Print post footer
+	print str_replace($vars, $values, $setting_post_footer);
+
+	// Show comments section if we have to
+	if(($post['commenting'] == 'private' AND isset($wb) AND $wb->is_authenticated() == true) OR $post['commenting'] == 'public')
+    {
+		// Print comments header
+		$vars = array('[ADD_COMMENT_URL]','[TEXT_COMMENTS]');
+		// $pid = $admin->getIDKEY(POST_ID);
+		$values = array(WB_URL.'/modules/news/comment.php?post_id='.$post_id.'&amp;section_id='.$section_id, $MOD_NEWS['TEXT_COMMENTS']);
+		print str_replace($vars, $values, $setting_comments_header);
+
+		// Query for comments
+		$query_comments = $database->query("SELECT title,comment,commented_when,commented_by FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".$post_id."' ORDER BY commented_when ASC");
+		if($query_comments->numRows() > 0)
+        {
+			while( false != ($comment = $query_comments->fetchRow()) )
+            {
+				// Display Comments without slashes, but with new-line characters
+				$comment['comment'] = nl2br($wb->strip_slashes($comment['comment']));
+				$comment['title'] = $wb->strip_slashes($comment['title']);
+				// Print comments loop
+				$commented_date = date(DATE_FORMAT, $comment['commented_when']+TIMEZONE);
+				$commented_time = date(TIME_FORMAT, $comment['commented_when']+TIMEZONE);
+				$uid = $comment['commented_by'];
+				$vars = array('[TITLE]','[COMMENT]','[TEXT_ON]','[DATE]','[TEXT_AT]','[TIME]','[TEXT_BY]','[USER_ID]','[USERNAME]','[DISPLAY_NAME]', '[EMAIL]');
+				if(isset($users[$uid]['username']) AND $users[$uid]['username'] != '')
+                {
+					$values = array(($comment['title']), ($comment['comment']), $MOD_NEWS['TEXT_ON'], $commented_date, $MOD_NEWS['TEXT_AT'], $commented_time, $MOD_NEWS['TEXT_BY'], $uid, ($users[$uid]['username']), ($users[$uid]['display_name']), ($users[$uid]['email']));
+				} else {
+					$values = array(($comment['title']), ($comment['comment']), $MOD_NEWS['TEXT_ON'], $commented_date, $MOD_NEWS['TEXT_AT'], $commented_time, $MOD_NEWS['TEXT_BY'], '0', strtolower($TEXT['UNKNOWN']), $TEXT['UNKNOWN'], '');
+				}
+				print str_replace($vars, $values, $setting_comments_loop);
+			}
+		} else {
+			// Say no comments found
+			$content = '';
+			$vars = array('[TITLE]','[COMMENT]','[TEXT_ON]','[DATE]','[TEXT_AT]','[TIME]','[TEXT_BY]','[USER_ID]','[USERNAME]','[DISPLAY_NAME]', '[EMAIL]');
+			$values = array( '', $MOD_NEWS['NO_COMMENT_FOUND'], '', '', '', '', '', '', '', '');
+			print str_replace($vars, $values, $setting_comments_loop);
+		}
+
+		// Print comments footer
+		$vars = array('[ADD_COMMENT_URL]','[TEXT_ADD_COMMENT]');
+		$values = array(WB_URL.'/modules/news/comment.php?post_id='.$post_id.'&amp;section_id='.$section_id, $MOD_NEWS['TEXT_ADD_COMMENT']);
+		print str_replace($vars, $values, $setting_comments_footer);
+
+	}
+
+    }
+
+	if(ENABLED_ASP)
+    {
+		$_SESSION['comes_from_view'] = $post_id;
+		$_SESSION['comes_from_view_time'] = time();
+	}
+
+}

Property changes on: tags/2.8.3/wb/modules/news/view.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/save_group.php
===================================================================
--- tags/2.8.3/wb/modules/news/save_group.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/save_group.php	(revision 1610)
@@ -0,0 +1,131 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['group_id']) OR !is_numeric($_POST['group_id']))
+{
+	header("Location: ".ADMIN_URL."/pages/index.php");
+	exit( 0 );
+}
+else
+{
+	$group_id = $_POST['group_id'];
+}
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+// Include WB functions file
+require(WB_PATH.'/framework/functions.php');
+
+// Validate all fields
+if($admin->get_post('title') == '')
+{
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$admin->getIDKEY($group_id));
+}
+else
+{
+	$title = $admin->get_post_escaped('title');
+	$active = $admin->get_post_escaped('active');
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_groups SET title = '$title', active = '$active' WHERE group_id = '$group_id'");
+
+// Check if the user uploaded an image or wants to delete one
+if(isset($_FILES['image']['tmp_name']) AND $_FILES['image']['tmp_name'] != '') {
+	// Get real filename and set new filename
+	$filename = $_FILES['image']['name'];
+	$file_image_type = $_FILES['image']['type'];
+	$new_filename = WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg';
+	// Make sure the image is a jpg file
+	$file4=substr($filename, -4, 4);
+
+	switch ($file_image_type) :
+		case 'image/jpeg' :
+		case 'image/pjpeg' :
+		case 'image/png' :
+		case 'image/x-png' :
+		break;
+		default:
+			$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG) or PNG',ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+		break;
+	endswitch;
+
+/*
+	if(($file4 != '.jpg')and($file4 != '.JPG')and($file4 != '.png')and($file4 != '.PNG') and ($file4 !='jpeg') and ($file4 != 'JPEG'))
+    {
+		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG) or PNG',ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	} elseif(
+	(($_FILES['image']['type']) != 'image/jpeg' AND mime_content_type($_FILES['image']['tmp_name']) != 'image/jpg')
+	and
+	(($_FILES['image']['type']) != 'image/png' AND mime_content_type($_FILES['image']['tmp_name']) != 'image/png')
+	){
+		$admin->print_error($MESSAGE['GENERIC']['FILE_TYPE'].' JPG (JPEG) or PNG',ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	}
+*/
+
+	// Make sure the target directory exists
+	make_dir(WB_PATH.MEDIA_DIRECTORY.'/.news');
+	// Upload image
+	move_uploaded_file($_FILES['image']['tmp_name'], $new_filename);
+	// Check if we need to create a thumb
+	$query_settings = $database->query("SELECT resize FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+	$fetch_settings = $query_settings->fetchRow();
+	$resize = $fetch_settings['resize'];
+	if($resize != 0)
+    {
+		// Resize the image
+		$thumb_location = WB_PATH.MEDIA_DIRECTORY.'/.news/thumb'.$group_id.'.jpg';
+		if(make_thumb($new_filename, $thumb_location, $resize))
+        {
+			// Delete the actual image and replace with the resized version
+			unlink($new_filename);
+			rename($thumb_location, $new_filename);
+		}
+	}
+}
+if(isset($_POST['delete_image']) AND $_POST['delete_image'] != '')
+{
+	// Try unlinking image
+	if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg'))
+    {
+		unlink(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg');
+	}
+}
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$admin->getIDKEY($group_id));
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/save_group.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/save_settings.php
===================================================================
--- tags/2.8.3/wb/modules/news/save_settings.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/save_settings.php	(revision 1610)
@@ -0,0 +1,80 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+/*
+// Include WB admin wrapper script
+$update_when_modified = true; // Tells script to update when this page was last updated
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	exit();
+}
+*/
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+// This code removes any <?php tags and adds slashes
+$friendly = array('&lt;', '&gt;', '?php');
+$raw = array('<', '>', '');
+$header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['header']));
+$post_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_loop']));
+$footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['footer']));
+$post_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_header']));
+$post_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['post_footer']));
+$comments_header = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_header']));
+$comments_loop = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_loop']));
+$comments_footer = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_footer']));
+$comments_page = $admin->add_slashes(str_replace($friendly, $raw, $_POST['comments_page']));
+$commenting = $admin->add_slashes($_POST['commenting']);
+$posts_per_page = $admin->add_slashes($_POST['posts_per_page']);
+$use_captcha = $admin->add_slashes($_POST['use_captcha']);
+if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg')) {
+	$resize = $_POST['resize'];
+} else {
+	$resize = '';
+}
+
+// Update settings
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_settings SET header = '$header', post_loop = '$post_loop', footer = '$footer',
+				 posts_per_page = '$posts_per_page', post_header = '$post_header', post_footer = '$post_footer',
+				 comments_header = '$comments_header', comments_loop = '$comments_loop', comments_footer = '$comments_footer',
+				 comments_page = '$comments_page', commenting = '$commenting', resize = '$resize', use_captcha = '$use_captcha'
+				 WHERE section_id = '$section_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/save_settings.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/delete_comment.php
===================================================================
--- tags/2.8.3/wb/modules/news/delete_comment.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/delete_comment.php	(revision 1610)
@@ -0,0 +1,48 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+$admin_header = true;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$comment_id = intval($admin->checkIDKEY('comment_id', false, 'GET'));
+$post_id = intval($admin->checkIDKEY('post_id', false, 'GET'));
+if (!$post_id || !$comment_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id/*.'&post_id='.$post_id */);
+} else {
+	$post_id = $admin->getIDKEY($post_id);
+}
+
+// Update row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments  WHERE comment_id = '$comment_id'");
+
+// Check if there is a db error, otherwise say successful
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id );
+}
+else
+{
+	$admin->print_success($TEXT['SUCCESS'], WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.'&section_id='.$section_id.'&post_id='.$post_id );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/delete_comment.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/modify.php
===================================================================
--- tags/2.8.3/wb/modules/news/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/modify.php	(revision 1610)
@@ -0,0 +1,216 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts  WHERE page_id = '$page_id' and section_id = '$section_id' and title=''"); 
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups  WHERE page_id = '$page_id' and section_id = '$section_id' and title=''"); 
+
+//overwrite php.ini on Apache servers for valid SESSION ID Separator
+if(function_exists('ini_set')) {
+	ini_set('arg_separator.output', '&amp;');
+}
+
+?>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left" width="33%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['POST']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_post.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="left" width="33%">
+		<input type="button" value="<?php echo $TEXT['ADD'].' '.$TEXT['GROUP']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/add_group.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+	<td align="right" width="33%">
+		<input type="button" value="<?php echo $TEXT['SETTINGS']; ?>" onclick="javascript: window.location = '<?php echo WB_URL; ?>/modules/news/modify_settings.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>';" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['POST']; ?></h2>
+
+<?php
+
+// Loop through existing posts
+$query_posts = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_posts` WHERE section_id = '$section_id' ORDER BY position DESC");
+if($query_posts->numRows() > 0) {
+	$num_posts = $query_posts->numRows();
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($post = $query_posts->fetchRow()) {
+		$pid = $admin->getIDKEY($post['post_id']);
+		?>
+		<tr class="row_<?php echo $row; ?>">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
+				</a>
+			</td>
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>">
+					<?php echo ($post['title']); ?>
+				</a>
+			</td>
+			<td width="180">
+				<?php echo $TEXT['GROUP'].': ';
+				// Get group title
+				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '".$post['group_id']."'");
+				if($query_title->numRows() > 0) {
+					$fetch_title = $query_title->fetchRow();
+					echo ($fetch_title['title']);
+				} else {
+					echo $TEXT['NONE'];
+				}
+				?>
+			</td>
+			<td width="120">
+				<?php echo $TEXT['COMMENTS'].': ';
+				// Get number of comments
+				$query_title = $database->query("SELECT title FROM ".TABLE_PREFIX."mod_news_comments WHERE post_id = '".$post['post_id']."'");
+				echo $query_title->numRows();
+				?>
+			</td>
+			<td width="80">
+				<?php echo $TEXT['ACTIVE'].': '; if($post['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
+			</td>
+			<td width="20">
+			<?php
+			$start = $post['published_when'];
+			$end = $post['published_until'];
+			$t = time();
+			$icon = '';
+			if($start<=$t && $end==0)
+				$icon=THEME_URL.'/images/noclock_16.png';
+			elseif(($start<=$t || $start==0) && $end>=$t)
+				$icon=THEME_URL.'/images/clock_16.png';
+			else
+				$icon=THEME_URL.'/images/clock_red_16.png';
+			?>
+			<a href="<?php echo WB_URL; ?>/modules/news/modify_post.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+				<img src="<?php echo $icon; ?>" border="0" alt="" />
+			</a>
+			</td>
+			<td width="20">
+			<?php if($post['position'] != $num_posts) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/up_16.png" border="0" alt="^" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+			<?php if($post['position'] != 1) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/down_16.png" border="0" alt="v" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_post.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+?>
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['GROUP']; ?></h2>
+
+<?php
+
+// Loop through existing groups
+$query_groups = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_groups` WHERE section_id = '$section_id' ORDER BY position ASC");
+if($query_groups->numRows() > 0) {
+	$num_groups = $query_groups->numRows();
+	$row = 'a';
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($group = $query_groups->fetchRow()) {
+		$gid = $admin->getIDKEY($group['group_id']);
+		?>
+		<tr class="row_<?php echo $row; ?>">
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;group_id=<?php echo $gid; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="Modify - " />
+				</a>
+			</td>		
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_group.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;group_id=<?php echo $gid; ?>">
+					<?php echo $group['title']; ?>
+				</a>
+			</td>
+			<td width="80">
+				<?php echo $TEXT['ACTIVE'].': '; if($group['active'] == 1) { echo $TEXT['YES']; } else { echo $TEXT['NO']; } ?>
+			</td>
+			<td width="20">
+			<?php if($group['position'] != 1) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_up.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;group_id=<?php echo $gid; ?>" title="<?php echo $TEXT['MOVE_UP']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/up_16.png" border="0" alt="^" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+			<?php if($group['position'] != $num_groups) { ?>
+				<a href="<?php echo WB_URL; ?>/modules/news/move_down.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;group_id=<?php echo $gid; ?>" title="<?php echo $TEXT['MOVE_DOWN']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/down_16.png" border="0" alt="v" />
+				</a>
+			<?php } ?>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php echo WB_URL; ?>/modules/news/delete_group.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php echo $section_id; ?>&amp;group_id=<?php echo $gid; ?>');" title="<?php echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}

Property changes on: tags/2.8.3/wb/modules/news/modify.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/add.php
===================================================================
--- tags/2.8.3/wb/modules/news/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/add.php	(revision 1610)
@@ -0,0 +1,78 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$header = '<table cellpadding=\"0\" cellspacing=\"0\" class=\"loop-header\">'."\n";
+$post_loop = '<tr class=\"post-top\">
+<td class=\"post-title\"><a href=\"[LINK]\">[TITLE]</a></td>
+<td class=\"post-date\">[PUBLISHED_DATE], [PUBLISHED_TIME]</td>
+</tr>
+<tr>
+<td class=\"post-short\" colspan=\"2\">
+[SHORT]
+<span style=\"visibility:[SHOW_READ_MORE];\"><a href=\"[LINK]\">[TEXT_READ_MORE]</a></span>
+</td>
+</tr>';
+$footer = '</table>
+<table cellpadding="0" cellspacing="0" class="page-header" style="display: [DISPLAY_PREVIOUS_NEXT_LINKS]">
+<tr>
+<td class="page-left">[PREVIOUS_PAGE_LINK]</td>
+<td class="page-center">[OF]</td>
+<td class="page-right">[NEXT_PAGE_LINK]</td>
+</tr>
+</table>';
+$post_header = addslashes('<table cellpadding="0" cellspacing="0" class="post-header">
+<tr>
+<td><h1>[TITLE]</h1></td>
+<td rowspan="3" style="display: [DISPLAY_IMAGE]">[GROUP_IMAGE]</td>
+</tr>
+<tr>
+<td class="public-info"><b>[TEXT_POSTED_BY] [DISPLAY_NAME] ([USERNAME]) [TEXT_ON] [PUBLISHED_DATE]</b></td>
+</tr>
+<tr style="display: [DISPLAY_GROUP]">
+<td class="group-page"><a href="[BACK]">[PAGE_TITLE]</a> &gt;&gt; <a href="[BACK]?g=[GROUP_ID]">[GROUP_TITLE]</a></td>
+</tr>
+</table>');
+$post_footer = '<p>[TEXT_LAST_CHANGED]: [MODI_DATE] [TEXT_AT] [MODI_TIME]</p>
+<a href=\"[BACK]\">[TEXT_BACK]</a>';
+$comments_header = addslashes('<br /><br />
+<h2>[TEXT_COMMENTS]</h2>
+<table cellpadding="2" cellspacing="0" class="comment-header">');
+$comments_loop = addslashes('<tr>
+<td class="comment_title">[TITLE]</td>
+<td class="comment_info">[TEXT_BY] [DISPLAY_NAME] [TEXT_ON] [DATE] [TEXT_AT] [TIME]</td>
+</tr>
+<tr>
+<td colspan="2" class="comment-text">[COMMENT]</td>
+</tr>');
+$comments_footer = '</table>
+<br /><a href=\"[ADD_COMMENT_URL]\">[TEXT_ADD_COMMENT]</a>';
+$comments_page = '<h1>[TEXT_COMMENT]</h1>
+<h2>[POST_TITLE]</h2>
+<br />';
+$commenting = 'none';
+$use_captcha = true;
+
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_settings (section_id,page_id,header,post_loop,footer,post_header,post_footer,comments_header,comments_loop,comments_footer,comments_page,commenting,use_captcha) VALUES ('$section_id','$page_id','$header','$post_loop','$footer','$post_header','$post_footer','$comments_header','$comments_loop','$comments_footer','$comments_page','$commenting','$use_captcha')");

Property changes on: tags/2.8.3/wb/modules/news/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/modify_post.php
===================================================================
--- tags/2.8.3/wb/modules/news/modify_post.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/modify_post.php	(revision 1610)
@@ -0,0 +1,256 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// $admin_header = true;
+// Tells script to update when this page was last updated
+$update_when_modified = false;
+// show the info banner
+$print_info_banner = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$backlink = ADMIN_URL.'/pages/modify.php?page_id='.(int)$page_id;
+$post_id = intval($admin->checkIDKEY('post_id', false, 'GET'));
+if (!$post_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $backlink);
+}
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+$fetch_content = $query_content->fetchRow();
+
+if (!defined('WYSIWYG_EDITOR') OR WYSIWYG_EDITOR=="none" OR !file_exists(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php')) {
+	function show_wysiwyg_editor($name,$id,$content,$width,$height) {
+		echo '<textarea name="'.$name.'" id="'.$id.'" rows="10" cols="1" style="width: '.$width.'; height: '.$height.';">'.$content.'</textarea>';
+	}
+} else {
+	$id_list=array("short","long");
+	require(WB_PATH.'/modules/'.WYSIWYG_EDITOR.'/include.php');
+}
+
+// include jscalendar-setup
+$jscal_use_time = true; // whether to use a clock, too
+require_once(WB_PATH."/include/jscalendar/wb-setup.php");
+?>
+<h2><?php echo $TEXT['ADD'].'/'.$TEXT['MODIFY'].' '.$TEXT['POST']; ?></h2>
+<div class="jsadmin jcalendar hide"></div> 
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_post.php" method="post" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="post_id" value="<?php echo $post_id; ?>" />
+<input type="hidden" name="link" value="<?php echo $fetch_content['link']; ?>" />
+<?php echo $admin->getFTAN(); ?>
+
+<table class="row_a" cellpadding="2" cellspacing="0" width="100%">
+<tr>
+	<td><?php echo $TEXT['TITLE']; ?>:</td>
+	<td width="80%">
+		<input type="text" name="title" value="<?php echo (htmlspecialchars($fetch_content['title'])); ?>" style="width: 98%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['GROUP']; ?>:</td>
+	<td>
+		<select name="group" style="width: 100%;">
+			<option value="0"><?php echo $TEXT['NONE']; ?></option>
+			<?php
+			$query = $database->query("SELECT group_id,title FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id' ORDER BY position ASC");
+			if($query->numRows() > 0) {
+				// Loop through groups
+				while($group = $query->fetchRow()) {
+					?>
+					<option value="<?php echo $group['group_id']; ?>"<?php if($fetch_content['group_id'] == $group['group_id']) { echo ' selected="selected"'; } ?>><?php echo $group['title']; ?></option>
+					<?php
+				}
+			}
+			?>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['COMMENTING']; ?>:</td>
+	<td>
+		<select name="commenting" style="width: 100%;">
+			<option value="none"><?php echo $TEXT['DISABLED']; ?></option>
+			<option value="public" <?php if($fetch_content['commenting'] == 'public') { echo ' selected="selected"'; } ?>><?php echo $TEXT['PUBLIC']; ?></option>
+			<option value="private" <?php if($fetch_content['commenting'] == 'private') { echo ' selected="selected"'; } ?>><?php echo $TEXT['PRIVATE']; ?></option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
+	<td>
+		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked="checked"'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
+		<?php echo $TEXT['YES']; ?>
+		</a>
+		&nbsp;
+		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked="checked"'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
+		<?php echo $TEXT['NO']; ?>
+		</a>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['PUBL_START_DATE']; ?>:</td>
+	<td>
+	<input type="text" id="publishdate" name="publishdate" value="<?php if($fetch_content['published_when']==0) print date($jscal_format, strtotime((date('Y-m-d H:i')))); else print date($jscal_format, $fetch_content['published_when']);?>" style="width: 120px;" />
+	<img src="<?php echo THEME_URL ?>/images/clock_16.png" id="publishdate_trigger" style="cursor: pointer;" title="<?php echo $TEXT['CALENDAR']; ?>" alt="<?php echo $TEXT['CALENDAR']; ?>" onmouseover="this.style.background='lightgrey';" onmouseout="this.style.background=''" />
+	<img src="<?php echo THEME_URL ?>/images/clock_del_16.png" style="cursor: pointer;" title="<?php echo $TEXT['DELETE_DATE']; ?>" alt="<?php echo $TEXT['DELETE_DATE']; ?>" onmouseover="this.style.background='lightgrey';" onmouseout="this.style.background=''" onclick="document.modify.publishdate.value=''" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['PUBL_END_DATE']; ?>:</td>
+	<td>
+	<input type="text" id="enddate" name="enddate" value="<?php if($fetch_content['published_until']==0) print ""; else print date($jscal_format, $fetch_content['published_until'])?>" style="width: 120px;" />
+	<img src="<?php echo THEME_URL ?>/images/clock_16.png" id="enddate_trigger" style="cursor: pointer;" title="<?php echo $TEXT['CALENDAR']; ?>" alt="<?php echo $TEXT['CALENDAR']; ?>" onmouseover="this.style.background='lightgrey';" onmouseout="this.style.background=''" />
+	<img src="<?php echo THEME_URL ?>/images/clock_del_16.png" style="cursor: pointer;" title="<?php echo $TEXT['DELETE_DATE']; ?>" alt="<?php echo $TEXT['DELETE_DATE']; ?>" onmouseover="this.style.background='lightgrey';" onmouseout="this.style.background=''" onclick="document.modify.enddate.value=''" />
+	</td>
+</tr>
+</table>
+
+<table class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td valign="top"><?php echo $TEXT['SHORT']; ?>:</td>
+</tr>
+<tr>
+	<td>
+	<?php
+	show_wysiwyg_editor("short","short",htmlspecialchars($fetch_content['content_short']),"100%","200px");
+	?>
+	</td>
+</tr>
+<tr>
+	<td valign="top"><?php echo $TEXT['LONG']; ?>:</td>
+</tr>
+<tr>
+	<td>
+	<?php
+	show_wysiwyg_editor("long","long",htmlspecialchars($fetch_content['content_long']),"100%","650px");
+	?>
+	</td>
+</tr>
+</table>
+
+<table cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+</form>
+
+<script type="text/javascript">
+	Calendar.setup(
+		{
+			inputField  : "publishdate",
+			ifFormat    : "<?php echo $jscal_ifformat ?>",
+			button      : "publishdate_trigger",
+			firstDay    : <?php echo $jscal_firstday ?>,
+			<?php if(isset($jscal_use_time) && $jscal_use_time==TRUE)
+            { ?>
+				showsTime   : "true",
+				timeFormat  : "24",
+			<?php
+            } ?>
+			date        : "<?php echo $jscal_today ?>",
+			range       : [1970, 2037],
+			step        : 1
+		}
+	);
+	Calendar.setup(
+		{
+			inputField  : "enddate",
+			ifFormat    : "<?php echo $jscal_ifformat ?>",
+			button      : "enddate_trigger",
+			firstDay    : <?php echo $jscal_firstday ?>,
+			<?php if(isset($jscal_use_time) && $jscal_use_time==TRUE)
+            { ?>
+				showsTime   : "true",
+				timeFormat  : "24",
+			<?php
+            } ?>
+			date        : "<?php echo $jscal_today ?>",
+			range       : [1970, 2037],
+			step        : 1
+		}
+	);
+</script>
+
+<br />
+
+<h2><?php echo $TEXT['MODIFY'].'/'.$TEXT['DELETE'].' '.$TEXT['COMMENT']; ?></h2>
+
+<?php
+
+// Loop through existing posts
+$query_comments = $database->query("SELECT * FROM `".TABLE_PREFIX."mod_news_comments` WHERE section_id = '$section_id' AND post_id = '$post_id' ORDER BY commented_when DESC");
+if($query_comments->numRows() > 0) {
+	$row = 'a';
+	$pid = $admin->getIDKEY($post_id);
+	?>
+	<table cellpadding="2" cellspacing="0" border="0" width="100%">
+	<?php
+	while($comment = $query_comments->fetchRow()) {
+		$cid = $admin->getIDKEY($comment['comment_id']);
+		?>
+		<tr class="row_<?php echo $row; ?>" >
+			<td width="20" style="padding-left: 5px;">
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php
+					echo $section_id; ?>&amp;comment_id=<?php echo $cid; ?>" title="<?php echo $TEXT['MODIFY']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/modify_16.png" border="0" alt="^" />
+				</a>
+			</td>	
+			<td>
+				<a href="<?php echo WB_URL; ?>/modules/news/modify_comment.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php
+					echo $section_id; ?>&amp;comment_id=<?php echo $cid; ?>">
+					<?php echo $comment['title']; ?>
+				</a>
+			</td>
+			<td width="20">
+				<a href="javascript: confirm_link('<?php echo $TEXT['ARE_YOU_SURE']; ?>', '<?php
+					echo WB_URL; ?>/modules/news/delete_comment.php?page_id=<?php echo $page_id; ?>&amp;section_id=<?php
+					echo $section_id; ?>&amp;post_id=<?php echo $pid; ?>&amp;comment_id=<?php echo $cid; ?>');" title="<?php
+					echo $TEXT['DELETE']; ?>">
+					<img src="<?php echo THEME_URL; ?>/images/delete_16.png" border="0" alt="X" />
+				</a>
+			</td>
+		</tr>
+		<?php
+		// Alternate row color
+		if($row == 'a') {
+			$row = 'b';
+		} else {
+			$row = 'a';
+		}
+	}
+	?>
+	</table>
+	<?php
+} else {
+	echo $TEXT['NONE_FOUND'];
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/modify_post.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/comment_page.php
===================================================================
--- tags/2.8.3/wb/modules/news/comment_page.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/comment_page.php	(revision 1610)
@@ -0,0 +1,131 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+/* check if frontend.css file needs to be included into the <body></body> of page  */
+if ( (!function_exists('register_frontend_modfiles') || !defined('MOD_FRONTEND_CSS_REGISTERED')) && file_exists(WB_PATH .'/modules/news/frontend.css')) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/news/frontend.css');
+	echo "\n</style>\n";
+}
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/news/languages/'.LANGUAGE .'.php'))
+{
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/news/languages/EN.php');
+}
+else
+{
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/news/languages/'.LANGUAGE .'.php');
+}
+
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+// Get comments page template details from db
+$query_settings = $database->query("SELECT comments_page,use_captcha,commenting FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '".SECTION_ID."'");
+if($query_settings->numRows() == 0)
+{
+	header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	exit( 0 );
+}
+else
+{
+	$settings = $query_settings->fetchRow();
+
+	// Print comments page
+	$vars = array('[POST_TITLE]','[TEXT_COMMENT]');
+	$values = array(POST_TITLE, $MOD_NEWS['TEXT_COMMENT']);
+	echo str_replace($vars, $values, ($settings['comments_page']));
+	?>
+	<form name="comment" action="<?php echo WB_URL.'/modules/news/submit_comment.php?page_id='.PAGE_ID.'&amp;section_id='.SECTION_ID.'&amp;post_id='.POST_ID; ?>" method="post">
+	<?php if(ENABLED_ASP) { // add some honeypot-fields
+	?>
+	<input type="hidden" name="submitted_when" value="<?php $t=time(); echo $t; $_SESSION['submitted_when']=$t; ?>" />
+	<p class="nixhier">
+	email address:
+	<label for="email">Leave this field email blank:</label>
+	<input id="email" name="email" size="60" value="" /><br />
+	Homepage:
+	<label for="homepage">Leave this field homepage blank:</label>
+	<input id="homepage" name="homepage" size="60" value="" /><br />
+	URL:
+	<label for="url">Leave this field url blank:</label>
+	<input id="url" name="url" size="60" value="" /><br />
+	Comment:
+	<label for="comment">Leave this field comment blank:</label>
+	<input id="comment" name="comment" size="60" value="" /><br />
+	</p>
+	<?php }
+	// echo $admin->getFTAN();
+	echo $TEXT['TITLE']; ?>:
+	<br />
+	<input type="text" name="title" maxlength="255" style="width: 90%;"<?php if(isset($_SESSION['comment_title'])) { echo ' value="'.$_SESSION['comment_title'].'"'; unset($_SESSION['comment_title']); } ?> />
+	<br /><br />
+	<?php echo $TEXT['COMMENT']; 
+	?>:
+	<br />
+	<?php if(ENABLED_ASP) { ?>
+		<textarea name="comment_<?php echo date('W'); ?>" rows="10" cols="1" style="width: 90%; height: 150px;"><?php if(isset($_SESSION['comment_body'])) { echo $_SESSION['comment_body']; unset($_SESSION['comment_body']); } ?></textarea>
+	<?php } else { ?>
+		<textarea name="comment" rows="10" cols="1" style="width: 90%; height: 150px;"><?php if(isset($_SESSION['comment_body'])) { echo $_SESSION['comment_body']; unset($_SESSION['comment_body']); } ?></textarea>
+	<?php } ?>
+	<br /><br />
+	<?php
+	if(isset($_SESSION['captcha_error'])) {
+		echo '<font color="#FF0000">'.$_SESSION['captcha_error'].'</font><br />';
+		$_SESSION['captcha_retry_news'] = true;
+	}
+	// Captcha
+	if($settings['use_captcha']) {
+	?>
+	<table cellpadding="2" cellspacing="0" border="0">
+	<tr>
+		<td><?php echo $TEXT['VERIFICATION']; ?>:</td>
+		<td><?php call_captcha(); ?></td>
+	</tr>
+    </table>
+	<?php
+	if(isset($_SESSION['captcha_error'])) {
+		unset($_SESSION['captcha_error']);
+		?><script>document.comment.captcha.focus();</script><?php
+	}?>
+	<?php
+	}
+	?>
+	<table class="news-table">
+	<tr>
+	    <td>
+            <input type="submit" name="submit" value="<?php echo $MOD_NEWS['TEXT_ADD_COMMENT']; ?>" />
+        </td>
+        <td>
+		    <input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="history.go(-1)"  />
+        </td>
+	</tr>
+    </table>
+	</form>
+	<?php
+}

Property changes on: tags/2.8.3/wb/modules/news/comment_page.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/delete.php
===================================================================
--- tags/2.8.3/wb/modules/news/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/delete.php	(revision 1610)
@@ -0,0 +1,49 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+//get and remove all php files created for the news section
+$query_details = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id'");
+if($query_details->numRows() > 0) {
+	while($link = $query_details->fetchRow()) {
+		if(is_writable(WB_PATH.PAGES_DIRECTORY.$link['link'].PAGE_EXTENSION)) {
+		unlink(WB_PATH.PAGES_DIRECTORY.$link['link'].PAGE_EXTENSION);
+		}
+	}
+}
+//check to see if any other sections are part of the news page, if only 1 news is there delete it
+$query_details = $database->query("SELECT * FROM ".TABLE_PREFIX."sections WHERE page_id = '$page_id'");
+if($query_details->numRows() == 1) {
+	$query_details2 = $database->query("SELECT * FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+	$link = $query_details2->fetchRow();
+	if(is_writable(WB_PATH.PAGES_DIRECTORY.$link['link'].PAGE_EXTENSION)) {
+		unlink(WB_PATH.PAGES_DIRECTORY.$link['link'].PAGE_EXTENSION);
+	}
+}
+
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_posts WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_comments WHERE section_id = '$section_id'");
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");

Property changes on: tags/2.8.3/wb/modules/news/delete.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/comment.php
===================================================================
--- tags/2.8.3/wb/modules/news/comment.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/comment.php	(revision 1610)
@@ -0,0 +1,90 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include config file
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.wb.php');
+$wb = new wb;
+
+// Check if there is a post id
+// $post_id = $wb->checkIDKEY('post_id', false, 'GET');
+
+$post_id = (int)$_GET['post_id'];
+$section_id = (int)$_GET['section_id'];
+
+if (!$post_id OR !isset($_GET['section_id']) OR !is_numeric($_GET['section_id'])) {
+	$wb->print_error('ABORT::'.$MESSAGE['GENERIC_SECURITY_ACCESS'], WB_URL.PAGES_DIRECTORY );
+	exit();
+}
+
+// Query post for page id
+$query_post = $database->query("SELECT post_id,title,section_id,page_id FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+if($query_post->numRows() == 0)
+{
+    header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	exit( 0 );
+}
+else
+{
+	$fetch_post = $query_post->fetchRow();
+	$page_id = $fetch_post['page_id'];
+	$section_id = $fetch_post['section_id'];
+	$post_id = $fetch_post['post_id'];
+	$post_title = $fetch_post['title'];
+	define('SECTION_ID', $section_id);
+	define('POST_ID', $post_id);
+	define('POST_TITLE', $post_title);
+
+	// don't allow commenting if its disabled, or if post or group is inactive
+	$t = time();
+	$table_posts = TABLE_PREFIX."mod_news_posts";
+	$table_groups = TABLE_PREFIX."mod_news_groups";
+	$query = $database->query("
+		SELECT p.post_id
+		FROM $table_posts AS p LEFT OUTER JOIN $table_groups AS g ON p.group_id = g.group_id
+		WHERE p.post_id='$post_id' AND p.commenting != 'none' AND p.active = '1' AND ( g.active IS NULL OR g.active = '1' )
+		AND (p.published_when = '0' OR p.published_when <= $t) AND (p.published_until = 0 OR p.published_until >= $t)
+	");
+	if($query->numRows() == 0)
+    {
+		header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	    exit( 0 );
+	}
+
+	// don't allow commenting if ASP enabled and user doesn't comes from the right view.php
+	if(ENABLED_ASP && (!isset($_SESSION['comes_from_view']) OR $_SESSION['comes_from_view']!=POST_ID))
+    {
+		header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	    exit( 0 );
+	}
+
+	// Get page details
+	$query_page = $database->query("SELECT parent,page_title,menu_title,keywords,description,visibility FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id'");
+	if($query_page->numRows() == 0)
+    {
+		header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	    exit( 0 );
+	}
+    else
+    {
+		$page = $query_page->fetchRow();
+		// Required page details
+		define('PAGE_CONTENT', WB_PATH.'/modules/news/comment_page.php');
+		// Include index (wrapper) file
+		require(WB_PATH.'/index.php');
+	}
+}

Property changes on: tags/2.8.3/wb/modules/news/comment.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/modify_group.php
===================================================================
--- tags/2.8.3/wb/modules/news/modify_group.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/modify_group.php	(revision 1610)
@@ -0,0 +1,100 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// $admin_header = true;
+// Tells script to update when this page was last updated
+$update_when_modified = false;
+// show the info banner
+$print_info_banner = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+/* */
+$group_id = intval($admin->checkIDKEY('group_id', false, 'GET'));
+if (!$group_id) {
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$admin->getIDKEY($group_id));
+}
+
+// Get header and footer
+$query_content = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
+$fetch_content = $query_content->fetchRow();
+
+?>
+
+<h2><?php echo $TEXT['ADD'].'/'.$TEXT['MODIFY'].' '.$TEXT['GROUP']; ?></h2>
+
+<form name="modify" action="<?php echo WB_URL; ?>/modules/news/save_group.php" method="post" enctype="multipart/form-data" style="margin: 0;">
+
+<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+<input type="hidden" name="group_id" value="<?php echo $group_id; ?>" />
+<?php echo $admin->getFTAN(); ?>
+<table class="row_a" cellpadding="2" cellspacing="0" border="0" width="100%">
+<tr>
+	<td width="80"><?php echo $TEXT['TITLE']; ?>:</td>
+	<td>
+		<input type="text" name="title" value="<?php echo (htmlspecialchars($fetch_content['title'])); ?>" style="width: 98%;" maxlength="255" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['IMAGE']; ?>:</td>
+	<?php if(file_exists(WB_PATH.MEDIA_DIRECTORY.'/.news/image'.$group_id.'.jpg')) { ?>
+	<td>
+		<a href="<?php echo WB_URL.MEDIA_DIRECTORY; ?>/.news/image<?php echo $group_id; ?>.jpg" target="_blank">View</a>
+		&nbsp;
+		<input type="checkbox" name="delete_image" id="delete_image" value="true" />
+		<label for="delete_image">Delete</label>
+	</td>
+	<?php } else { ?>
+	<td>
+		<input type="file" name="image" />
+	</td>
+	<?php } ?>
+</tr>
+<tr>
+	<td><?php echo $TEXT['ACTIVE']; ?>:</td>
+	<td>
+		<input type="radio" name="active" id="active_true" value="1" <?php if($fetch_content['active'] == 1) { echo ' checked="checked"'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_true').checked = true;">
+		<?php echo $TEXT['YES']; ?>
+		</a>
+		-
+		<input type="radio" name="active" id="active_false" value="0" <?php if($fetch_content['active'] == 0) { echo ' checked="checked"'; } ?> />
+		<a href="#" onclick="javascript: document.getElementById('active_false').checked = true;">
+		<?php echo $TEXT['NO']; ?>
+		</a>
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input name="save" type="submit" value="<?php echo $TEXT['SAVE']; ?>" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL']; ?>" onclick="javascript: window.location = '<?php echo ADMIN_URL; ?>/pages/modify.php?page_id=<?php echo $page_id; ?>';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+</form>
+
+<?php
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/modify_group.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/save_post.php
===================================================================
--- tags/2.8.3/wb/modules/news/save_post.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/save_post.php	(revision 1610)
@@ -0,0 +1,146 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+	function createNewsAccessFile($newLink, $oldLink, $page_id, $section_id, $post_id)
+	{
+		global $admin, $MESSAGE;
+		$sPagesPath = WB_PATH.PAGES_DIRECTORY;
+		$sPostsPath = $sPagesPath.'/posts';
+	// create /posts/ - directory if not exists
+		if(!file_exists($sPostsPath)) {
+			if(is_writable($sPagesPath)) {
+				make_dir(WB_PATH.PAGES_DIRECTORY.'/posts/');
+			}else {
+				$admin->print_error($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE']);
+			}
+		}
+	// check if /posts/ - dir is writable
+		if(!is_writable($sPostsPath.'/')) {
+			$admin->print_error($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE']);
+		}
+	// delete old accessfile if link has changed
+		if(($newLink != $oldLink) && (is_writable($sPostsPath.$oldLink.PAGE_EXTENSION))) {
+			if(!unlink($sPostsPath.$oldLink.PAGE_EXTENSION)) {
+				$admin->print_error($MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'].' - '.$oldLink);
+			}
+		}
+	// all ok, now create new accessfile
+		$newFile = $sPagesPath.$newLink.PAGE_EXTENSION;
+		// $backSteps = preg_replace('/^'.preg_quote(WB_PATH).'/', '', $sPostsPath);
+		$backSteps = preg_replace('@^'.preg_quote(WB_PATH).'@', '', $sPostsPath);
+		$backSteps = str_repeat( '../', substr_count($backSteps, '/'));
+		$content =
+			'<?php'."\n".
+			'// *** This file is generated by WebsiteBaker Ver.'.WB_VERSION."\n".
+			'// *** Creation date: '.date('c')."\n".
+			'// *** Do not modify this file manually'."\n".
+			'// *** WB will rebuild this file from time to time!!'."\n".
+			'// *************************************************'."\n".
+			"\t".'$page_id      = '.$page_id.';'."\n".
+			"\t".'$section_id   = '.$section_id.';'."\n".
+			"\t".'$post_id      = '.$post_id.';'."\n".
+			"\t".'$post_section = '.$section_id.';'."\n".
+//			"\t".'define(\'POST_SECTION\', '.$section_id.');'."\n".
+//			"\t".'define(\'POST_ID\',      '.$post_id.');'."\n".
+			"\t".'require(\''.$backSteps.'index.php\');'."\n".
+			'// *************************************************'."\n";
+		if( file_put_contents($newFile, $content) !== false ) {
+		// Chmod the file
+			change_mode($newFile);
+		}else {
+			$admin->print_error($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'],ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+			// $admin->print_error($MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'].': '.$newFile);
+
+		}
+	} // end of function createNewsAccessFile
+/* ************************************************************************** */
+	require('../../config.php');
+	require_once(WB_PATH."/include/jscalendar/jscalendar-functions.php");
+// Get post_id
+	if(!isset($_POST['post_id']) OR !is_numeric($_POST['post_id'])) {
+		header("Location: ".ADMIN_URL."/pages/index.php");
+		exit( 0 );
+	}else {
+		$post_id = intval($_POST['post_id']);
+	}
+
+	$admin_header = false;
+	// Tells script to update when this page was last updated
+	$update_when_modified = true;
+	// Include WB admin wrapper script
+	require(WB_PATH.'/modules/admin.php');
+
+	if (!$admin->checkFTAN()) {
+		$admin->print_header();
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],
+		                    ADMIN_URL.'/pages/modify.php?page_id='.$page_id );
+	}
+	$admin->print_header();
+
+// Validate all fields
+	if($admin->get_post('title') == '' AND $admin->get_post('url') == '') {
+        $recallUrl = WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.
+		             '&section_id='.$section_id.'&post_id='.$admin->getIDKEY($post_id);
+		$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], $recallUrl);
+	}else {
+		$title      = $admin->get_post_escaped('title');
+		$short      = $admin->get_post_escaped('short');
+		$long       = $admin->get_post_escaped('long');
+		$commenting = $admin->get_post_escaped('commenting');
+		$active     = $admin->get_post_escaped('active');
+		$old_link   = $admin->get_post_escaped('link');
+		$group_id   = $admin->get_post_escaped('group');
+	}
+// Get page link URL
+	$sql = 'SELECT `link` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.(int)$page_id;
+	$oldLink = $database->get_one($sql);
+// Include WB functions file
+	require(WB_PATH.'/framework/functions.php');
+// Work-out what the link should be
+	$newLink = '/posts/'.page_filename($title).PAGE_SPACER.$post_id;
+// create new accessfile
+	createNewsAccessFile($newLink, $oldLink, $page_id, $section_id, $post_id);
+// get publisedwhen and publisheduntil
+	$publishedwhen = jscalendar_to_timestamp($admin->get_post_escaped('publishdate'));
+	if($publishedwhen == '' || $publishedwhen < 1) { $publishedwhen=0; }
+	$publisheduntil = jscalendar_to_timestamp($admin->get_post_escaped('enddate'), $publishedwhen);
+	if($publisheduntil == '' || $publisheduntil < 1) { $publisheduntil=0; }
+// Update row
+	$sql  = 'UPDATE `'.TABLE_PREFIX.'mod_news_posts` ';
+	$sql .= 'SET `group_id`='.(int)$group_id.', ';
+	$sql .=     '`title`=\''.$title.'\', ';
+	$sql .=     '`link`=\''.$newLink.'\', ';
+	$sql .=     '`content_short`=\''.$short.'\', ';
+	$sql .=     '`content_long`=\''.$long.'\', ';
+	$sql .=     '`commenting`=\''.$commenting.'\', ';
+	$sql .=     '`active`='.(int)$active.', ';
+	$sql .=     '`published_when`='.(int)$publishedwhen.', ';
+	$sql .=     '`published_until`='.(int)$publisheduntil.', ';
+	$sql .=     '`posted_when`='.time().', ';
+	$sql .=     '`posted_by`='.(int)$admin->get_user_id().' ';
+	$sql .= 'WHERE `post_id`='.(int)$post_id;
+	$database->query($sql);
+// Check if there is a db error, otherwise say successful
+	if($database->is_error()) {
+		$recallUrl = WB_URL.'/modules/news/modify_post.php?page_id='.$page_id.
+					 '&section_id='.$section_id.'&post_id='.$admin->getIDKEY($post_id);
+		$admin->print_error($database->get_error(), $recallUrl);
+	}else {
+		$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	}
+// Print admin footer
+	$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/save_post.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/add_group.php
===================================================================
--- tags/2.8.3/wb/modules/news/add_group.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/add_group.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$ 
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+// Get new order
+$order = new order(TABLE_PREFIX.'mod_news_groups', 'position', 'group_id', 'section_id');
+$position = $order->get_new($section_id);
+
+// Insert new row into database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_news_groups (section_id,page_id,position,active) VALUES ('$section_id','$page_id','$position','1')");
+
+// Get the id
+$group_id = $admin->getIDKEY($database->get_one("SELECT LAST_INSERT_ID()"));
+
+// Say that a new record has been added, then redirect to modify page
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'],     WB_URL.'/modules/news/modify_group.php?page_id='.$page_id.'&section_id='.$section_id.'&group_id='.$group_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/add_group.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/delete_group.php
===================================================================
--- tags/2.8.3/wb/modules/news/delete_group.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/delete_group.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$group_id = intval($admin->checkIDKEY('group_id', false, 'GET'));
+if (!$group_id) {
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_posts SET group_id = '0' where group_id='$group_id'");
+// Update row
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_news_groups WHERE group_id = '$group_id'");
+// Check if there is a db error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+} else {
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/delete_group.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/save_comment.php
===================================================================
--- tags/2.8.3/wb/modules/news/save_comment.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/save_comment.php	(revision 1610)
@@ -0,0 +1,79 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Get id
+if(!isset($_POST['comment_id']) OR !is_numeric($_POST['comment_id']) OR !isset($_POST['post_id']) OR !is_numeric($_POST['post_id']))
+{
+	header("Location: ".ADMIN_URL."/pages/index.php");
+	exit( 0 );
+}
+else
+{
+	$comment_id = (int)$_POST['comment_id'];
+}
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// show the info banner
+// $print_info_banner = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id );
+}
+
+$id = intval($admin->getIDKEY($comment_id));
+
+// Validate all fields
+if($admin->get_post('title') == '' AND $admin->get_post('comment') == '')
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC']['FILL_IN_ALL'], WB_URL.'/modules/news/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'comment_id='.$id);
+}
+else
+{
+	$title = strip_tags($admin->get_post_escaped('title'));
+	$comment = strip_tags($admin->get_post_escaped('comment'));
+	$post_id = $admin->getIDKEY($admin->get_post('post_id'));
+
+	// do not allow droplets in user input!
+	$title = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), $title);
+	$comment = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), $comment);
+}
+
+// Update row
+$database->query("UPDATE ".TABLE_PREFIX."mod_news_comments SET title = '$title', comment = '$comment' WHERE comment_id = '$comment_id'");
+
+$admin->print_header();
+// Check if there is a db error, otherwise say successful
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), WB_URL.'/modules/news/modify_comment.php?page_id='.$page_id.'&section_id='.$section_id.'&comment_id='.$id);
+}
+else
+{
+	$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/save_comment.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/submit_comment.php
===================================================================
--- tags/2.8.3/wb/modules/news/submit_comment.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/submit_comment.php	(revision 1610)
@@ -0,0 +1,174 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include config file
+require('../../config.php');
+
+/*
+overwrite php.ini on Apache servers for valid SESSION ID Separator
+if(function_exists('ini_set')) {
+	ini_set('arg_separator.output', '&amp;');
+}
+*/
+
+require_once(WB_PATH.'/framework/class.wb.php');
+$wb = new wb;
+
+/*
+$post_id = (int)$_GET['post_id'];
+$section_id = (int)$_GET['section_id'];
+if (!$wb->checkFTAN())
+{
+	$wb->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], WB_URL."/modules/news/comment.php?post_id=".$post_id."&section_id=".$section_id);
+}
+ */
+// Get page id
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$page_id = intval(isset(${$requestMethod}['page_id'])) ? ${$requestMethod}['page_id'] : (isset($page_id) ? intval($page_id) : 0);
+// Get post_id
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$post_id = (intval(isset(${$requestMethod}['post_id'])) ? ${$requestMethod}['post_id'] : (isset($post_id) ? intval($post_id) : 0));
+// Get section id if there is one
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$section_id = intval(isset(${$requestMethod}['section_id'])) ? ${$requestMethod}['section_id'] : (isset($section_id) ? intval($section_id) : 0);
+
+// Check if we should show the form or add a comment
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])
+    AND isset($_GET['section_id']) AND is_numeric($_GET['section_id'])
+        AND isset($_GET['post_id']) AND is_numeric($_GET['post_id'])
+            AND ( ( ENABLED_ASP AND isset($_POST['comment_'.date('W')]) AND $_POST['comment_'.date('W')] != '')
+            OR ( !ENABLED_ASP AND isset($_POST['comment']) AND $_POST['comment'] != '' ) ) )
+{
+
+	if(ENABLED_ASP){
+        $comment = $_POST['comment_'.date('W')];
+	}
+	else
+    {
+        $comment = $_POST['comment'];
+	}
+
+	$comment = $wb->add_slashes(strip_tags($comment));
+	$title = $wb->add_slashes(strip_tags($_POST['title']));
+	// do not allow droplets in user input!
+	$title = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), $title);
+	$comment = str_replace(array("[[", "]]"), array("&#91;&#91;", "&#93;&#93;"), $comment);
+
+	$page_id = (int)$_GET['page_id'];
+	$section_id = (int)$_GET['section_id'];
+	$post_id = (int)$_GET['post_id'];
+
+	// Check captcha
+	$query_settings = $database->query("SELECT use_captcha FROM ".TABLE_PREFIX."mod_news_settings WHERE section_id = '$section_id'");
+	if( !$query_settings->numRows())
+    {
+		header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	    exit( 0 );
+	}
+    else
+    {
+		$settings = $query_settings->fetchRow();
+		$t=time();
+
+        // Advanced Spam Protection
+	    if(ENABLED_ASP AND ( ($_SESSION['session_started']+ASP_SESSION_MIN_AGE > $t)  // session too young
+            OR (!isset($_SESSION['comes_from_view']))// user doesn't come from view.php
+            OR (!isset($_SESSION['comes_from_view_time']) OR $_SESSION['comes_from_view_time'] > $t-ASP_VIEW_MIN_AGE) // user is too fast
+            OR (!isset($_SESSION['submitted_when']) OR !isset($_POST['submitted_when'])) // faked form
+            OR ($_SESSION['submitted_when'] != $_POST['submitted_when']) // faked form
+            OR ($_SESSION['submitted_when'] > $t-ASP_INPUT_MIN_AGE && !isset($_SESSION['captcha_retry_news'])) // user too fast
+            OR ($_SESSION['submitted_when'] < $t-43200) // form older than 12h
+            OR ($_POST['email'] OR $_POST['url'] OR $_POST['homepage'] OR $_POST['comment']) /* honeypot-fields */ ) )
+        {
+            header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	        exit( 0 );
+		}
+
+		if(ENABLED_ASP)
+        {
+			if(isset($_SESSION['captcha_retry_news']))
+            {
+              unset($_SESSION['captcha_retry_news']);
+            }
+		}
+
+		if($settings['use_captcha'])
+        {
+			if(isset($_POST['captcha']) AND $_POST['captcha'] != '')
+            {
+				// Check for a mismatch
+				if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha'])
+                {
+					$_SESSION['captcha_error'] = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
+					$_SESSION['comment_title'] = $title;
+					$_SESSION['comment_body'] = $comment;
+					header("Location: ".WB_URL."/modules/news/comment.php?post_id=".$post_id."&section_id=".$section_id."" );
+	                exit( 0 );
+				}
+			}
+            else
+            {
+				$_SESSION['captcha_error'] = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'];
+				$_SESSION['comment_title'] = $title;
+				$_SESSION['comment_body'] = $comment;
+				header("Location: ".WB_URL."/modules/news/comment.php?post_id=".$post_id."&section_id=".$section_id."" );
+	            exit( 0 );
+			}
+		}
+	}
+
+	if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); }
+
+	if(ENABLED_ASP)
+    {
+		unset($_SESSION['comes_from_view']);
+		unset($_SESSION['comes_from_view_time']);
+		unset($_SESSION['submitted_when']);
+	}
+
+	// Insert the comment into db
+	$commented_when = time();
+	if($wb->is_authenticated() == true)
+    {
+		$commented_by = $wb->get_user_id();
+	}
+    else
+    {
+		$commented_by = '';
+	}
+
+	$query = $database->query("INSERT INTO ".TABLE_PREFIX."mod_news_comments (section_id,page_id,post_id,title,comment,commented_when,commented_by) VALUES ('$section_id','$page_id','$post_id','$title','$comment','$commented_when','$commented_by')");
+	// Get page link
+	$query_page = $database->query("SELECT link FROM ".TABLE_PREFIX."mod_news_posts WHERE post_id = '$post_id'");
+	$page = $query_page->fetchRow();
+	header('Location: '.$wb->page_link($page['link']).'?post_id='.$post_id.'' );
+	exit( 0 );
+}
+else
+{
+	if( isset($_GET['post_id']) AND is_numeric($_GET['post_id'])
+        AND isset($_GET['section_id']) AND is_numeric($_GET['section_id']) )
+    {
+ 		header("Location: ".WB_URL."/modules/news/comment.php?post_id=".(int)$_GET['post_id']."&section_id=".(int)$_GET['section_id']."" ) ;
+	    exit( 0 );
+    }
+	else
+    {
+		header("Location: ".WB_URL.PAGES_DIRECTORY."");
+	    exit( 0 );
+    }
+}

Property changes on: tags/2.8.3/wb/modules/news/submit_comment.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/rss.php
===================================================================
--- tags/2.8.3/wb/modules/news/rss.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/rss.php	(revision 1610)
@@ -0,0 +1,94 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Check that GET values have been supplied
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id'])) {
+	$page_id = $_GET['page_id'];
+} else {
+	header('Location: /');
+	exit(0);
+}
+if(isset($_GET['group_id']) AND is_numeric($_GET['group_id'])) {
+	$group_id = $_GET['group_id'];
+	define('GROUP_ID', $group_id);
+}
+
+// Include WB files
+require_once('../../config.php');
+require_once(WB_PATH.'/framework/class.frontend.php');
+$wb = new frontend();
+$wb->page_id = $page_id;
+$wb->get_page_details();
+$wb->get_website_settings();
+
+//checkout if a charset is defined otherwise use UTF-8
+if(defined('DEFAULT_CHARSET')) {
+	$charset=DEFAULT_CHARSET;
+} else {
+	$charset='utf-8';
+}
+
+// Sending XML header
+header("Content-type: text/xml; charset=$charset" );
+
+// Header info
+// Required by CSS 2.0
+echo '<?xml version="1.0" encoding="'.$charset.'"?>';
+?> 
+<rss version="2.0">
+	<channel>
+		<title><?php echo PAGE_TITLE; ?></title>
+		<link>http://<?php echo $_SERVER['SERVER_NAME']; ?></link>
+		<description> <?php echo PAGE_DESCRIPTION; ?></description>
+<?php
+// Optional header info 
+?>
+		<language><?php echo strtolower(DEFAULT_LANGUAGE); ?></language>
+		<copyright><?php $thedate = date('Y'); $websitetitle = WEBSITE_TITLE; echo "Copyright {$thedate}, {$websitetitle}"; ?></copyright>
+		<managingEditor><?php echo SERVER_EMAIL; ?></managingEditor>
+		<webMaster><?php echo SERVER_EMAIL; ?></webMaster>
+		<category><?php echo WEBSITE_TITLE; ?></category>
+		<generator>WebsiteBaker Content Management System</generator>
+<?php
+// Get news items from database
+$t = TIME();
+$time_check_str= "(published_when = '0' OR published_when <= ".$t.") AND (published_until = 0 OR published_until >= ".$t.")";
+//Query
+if(isset($group_id)) {
+	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE group_id=".$group_id." AND page_id = ".$page_id." AND active=1 AND ".$time_check_str." ORDER BY posted_when DESC";
+} else {
+	$query = "SELECT * FROM ".TABLE_PREFIX."mod_news_posts WHERE page_id=".$page_id." AND active=1 AND ".$time_check_str." ORDER BY posted_when DESC";	
+}
+$result = $database->query($query);
+
+//Generating the news items
+while($item = $result->fetchRow()){
+	$description = stripslashes($item["content_short"]);
+	// wb->preprocess() -- replace all [wblink123] with real, internal links
+	$wb->preprocess($description);
+?>
+	<item>
+		<title><![CDATA[<?php echo stripslashes($item["title"]); ?>]]></title>
+		<description><![CDATA[<?php echo $description; ?>]]></description>
+		<link><?php echo WB_URL.PAGES_DIRECTORY.$item["link"].PAGE_EXTENSION; ?></link>
+		<pubDate><?PHP echo date("D, d M Y", $item["published_when"]); ?></pubDate>
+		<guid><?php echo WB_URL.PAGES_DIRECTORY.$item["link"].PAGE_EXTENSION; ?></guid>
+	</item>
+<?php } ?>
+	</channel>
+</rss>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/rss.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/move_up.php
===================================================================
--- tags/2.8.3/wb/modules/news/move_up.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/move_up.php	(revision 1610)
@@ -0,0 +1,54 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$backlink = ADMIN_URL.'/pages/modify.php?page_id='.(int)$page_id;
+// Get id
+$pid = $admin->checkIDKEY('post_id', false, 'GET');
+$gid = $admin->checkIDKEY('group_id', false, 'GET');
+if (!$pid) {
+	if (!$gid) {
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $backlink);
+	} else {
+		$id = $gid;
+		$id_field = 'group_id';
+		$table = TABLE_PREFIX.'mod_news_groups';
+	}
+} else {
+	$id = $pid;
+	$id_field = 'post_id';
+	$table = TABLE_PREFIX.'mod_news_posts';
+}
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, 'section_id');
+if($order->move_up($id)) {
+	$admin->print_success($TEXT['SUCCESS'], $backlink);
+} else {
+	$admin->print_error($TEXT['ERROR'], $backlink);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/move_up.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/move_down.php
===================================================================
--- tags/2.8.3/wb/modules/news/move_down.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/move_down.php	(revision 1610)
@@ -0,0 +1,55 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../../config.php');
+
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+$backlink = ADMIN_URL.'/pages/modify.php?page_id='.(int)$page_id;
+// Get id
+$pid = $admin->checkIDKEY('post_id', false, 'GET');
+$gid = $admin->checkIDKEY('group_id', false, 'GET');
+if (!$pid) {
+	if (!$gid) {
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $backlink);
+		exit();
+	} else {
+		$id = $gid;
+		$id_field = 'group_id';
+		$table = TABLE_PREFIX.'mod_news_groups';
+	}
+} else {
+	$id = $pid;
+	$id_field = 'post_id';
+	$table = TABLE_PREFIX.'mod_news_posts';
+}
+
+// Include the ordering class
+require(WB_PATH.'/framework/class.order.php');
+
+// Create new order object an reorder
+$order = new order($table, 'position', $id_field, 'section_id');
+if($order->move_down($id)) {
+	$admin->print_success($TEXT['SUCCESS'], $backlink);
+} else {
+	$admin->print_error($TEXT['ERROR'], $backlink);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/news/move_down.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/NL.php	(revision 1610)
@@ -0,0 +1,41 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+
+//Modul Description
+$module_description = 'Met deze module maak je een nieuwspagina.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'Eigenschappen van de Nieuwsmodule';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'Lees verder';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Geplaatst door';
+$MOD_NEWS['TEXT_ON'] = 'op';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Laatst vernieuwd';
+$MOD_NEWS['TEXT_AT'] = 'om';
+$MOD_NEWS['TEXT_BACK'] = 'Terug';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Commentaren';
+$MOD_NEWS['TEXT_COMMENT'] = 'Commentaar';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Toevoegen commentaar';
+$MOD_NEWS['TEXT_BY'] = 'door';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Pagina niet gevonden';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/PL.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/PL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/PL.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'Ten moduł wyświetla stronę Newsów.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'Ustawienia';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'Czytaj więcej';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Napisał(a):';
+$MOD_NEWS['TEXT_ON'] = 'dnia';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Edytowano';
+$MOD_NEWS['TEXT_AT'] = 'o';
+$MOD_NEWS['TEXT_BACK'] = 'Wstecz';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Komentarze';
+$MOD_NEWS['TEXT_COMMENT'] = 'Dodaj komentarz';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Dodaj komentarz';
+$MOD_NEWS['TEXT_BY'] = 'Dodano:';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Strona nie istnieje';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Gość';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/PL.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/NO.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'Med denne modulen kan du lage Nyhets sider.';
+  
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'Innstillinger for Nyheter';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'Les Mer';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Skervet Av';
+$MOD_NEWS['TEXT_ON'] = 'P&aring;';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Sist Endret';
+$MOD_NEWS['TEXT_AT'] = 'p&aring;';
+$MOD_NEWS['TEXT_BACK'] = 'Tilbake';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Kommentarer';
+$MOD_NEWS['TEXT_COMMENT'] = 'Kommentar';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Legg Til Kommentar';
+$MOD_NEWS['TEXT_BY'] = 'Av';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Finner ikke siden ';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/EN.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'This page type is designed for making a news page.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'News Settings';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'Read More';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Posted by';
+$MOD_NEWS['TEXT_ON'] = 'on';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Last changed';
+$MOD_NEWS['TEXT_AT'] = 'at';
+$MOD_NEWS['TEXT_BACK'] = 'Back';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Comments';
+$MOD_NEWS['TEXT_COMMENT'] = 'Comment';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Add Comment';
+$MOD_NEWS['TEXT_BY'] = 'By';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Page not found';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/DA.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'Denne side er beregnet til at lave en nyhedsside.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'Nyhedsindstillinger';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'L&aelig;s mere';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Indsendt af';
+$MOD_NEWS['TEXT_ON'] = 'den';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Sidst &aelig;ndret';
+$MOD_NEWS['TEXT_AT'] = 'kl.';
+$MOD_NEWS['TEXT_BACK'] = 'Tilbage';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Kommentarer';
+$MOD_NEWS['TEXT_COMMENT'] = 'Kommentar';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Tilf&oslash;j kommentar';
+$MOD_NEWS['TEXT_BY'] = 'Af';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Page not found';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>

Property changes on: tags/2.8.3/wb/modules/news/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/RU.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1100; &#1087;&#1088;&#1077;&#1076;&#1085;&#1072;&#1079;&#1085;&#1072;&#1095;&#1077;&#1085; &#1076;&#1083;&#1103; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103; &#1083;&#1077;&#1085;&#1090;&#1099; &#1085;&#1086;&#1074;&#1086;&#1089;&#1090;&#1077;&#1081;';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1085;&#1086;&#1074;&#1086;&#1089;&#1090;&#1085;&#1086;&#1081; &#1083;&#1077;&#1085;&#1090;&#1099;';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = '&#1063;&#1080;&#1090;&#1072;&#1090;&#1100; &#1076;&#1072;&#1083;&#1100;&#1096;&#1077;';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Posted by';
+$MOD_NEWS['TEXT_ON'] = 'on';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = '&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1077;&#1077; &#1086;&#1073;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;';
+$MOD_NEWS['TEXT_AT'] = 'at';
+$MOD_NEWS['TEXT_BACK'] = '&#1053;&#1072;&#1079;&#1072;&#1076;';
+$MOD_NEWS['TEXT_COMMENTS'] = '&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1080;';
+$MOD_NEWS['TEXT_COMMENT'] = '&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$MOD_NEWS['TEXT_BY'] = 'By';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Page not found';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/FR.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Module Description
+$module_description = 'Ce type de page est conu &agrave faire une page de nouvelles.';
+
+//Variables for the  backend
+$MOD_NEWS['SETTINGS'] = 'Configurations Nouvelles';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'En savoir plus';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Post&eacute; par';
+$MOD_NEWS['TEXT_ON'] = '&agrave;';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Derni&egrave;re modification';
+$MOD_NEWS['TEXT_AT'] = '&agrave;';
+$MOD_NEWS['TEXT_BACK'] = 'Retour';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Commentaires';
+$MOD_NEWS['TEXT_COMMENT'] = 'Commentaire';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Ajouter un commentaire';
+$MOD_NEWS['TEXT_BY'] = 'Par';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Page non trouv&eacute;e';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Invit&eacute;';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/SE.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/SE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/SE.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'Den h&auml;r sidtypen &auml;r designad f&ouml;r att skapa en nyhetssida.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'Inst&auml;llningar';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'L&auml;s mer';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Postat av';
+$MOD_NEWS['TEXT_ON'] = 'den';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Senaste &auml;ndring';
+$MOD_NEWS['TEXT_AT'] = 'kl.';
+$MOD_NEWS['TEXT_BACK'] = 'Tillbaka';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Kommentarer';
+$MOD_NEWS['TEXT_COMMENT'] = 'kommentar';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Kommentera';
+$MOD_NEWS['TEXT_BY'] = 'Av';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Sidan kunde inte hittas';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'No comment found';
+$TEXT['UNKNOWN'] = 'Guest';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/SE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/DE.php	(revision 1610)
@@ -0,0 +1,41 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Modul Description
+$module_description = 'Mit diesem Modul k&ouml;nnen sie eine News Seite ihrer Seite hinzuf&uuml;gen.';
+
+//Variables for the backend
+$MOD_NEWS['SETTINGS'] = 'News Einstellungen';
+
+//Variables for the frontend
+$MOD_NEWS['TEXT_READ_MORE'] = 'Weiterlesen';
+$MOD_NEWS['TEXT_POSTED_BY'] = 'Ver&ouml;ffentlicht von';
+$MOD_NEWS['TEXT_ON'] = 'am';
+$MOD_NEWS['TEXT_LAST_CHANGED'] = 'Zuletzt ge&auml;ndert am';
+$MOD_NEWS['TEXT_AT'] = 'um';
+$MOD_NEWS['TEXT_BACK'] = 'Zur&uuml;ck';
+$MOD_NEWS['TEXT_COMMENTS'] = 'Kommentare';
+$MOD_NEWS['TEXT_COMMENT'] = 'Kommentar';
+$MOD_NEWS['TEXT_ADD_COMMENT'] = 'Kommentar hinzuf&uuml;gen';
+$MOD_NEWS['TEXT_BY'] = 'von';
+$MOD_NEWS['PAGE_NOT_FOUND'] = 'Seite nicht gefunden';
+$MOD_NEWS['NO_COMMENT_FOUND'] = 'Kein Kommentar gefunden';
+
+$TEXT['UNKNOWN'] = 'Gast';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/news/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/languages/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/frontend.css
===================================================================
--- tags/2.8.3/wb/modules/news/frontend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/news/frontend.css	(revision 1610)
@@ -0,0 +1,99 @@
+		.captcha-table,
+.captcha_table,
+.news-table {
+	border: 0px;
+}
+
+.post_title, .post_date,
+.post-title, .post-date {
+	border-bottom: 1px solid #DDDDDD;
+   font-size :1.0em;
+}
+.post_title,
+.post-title {
+	font-weight: bold;
+	color: #000000;
+}
+.post_date,
+.post-date {
+	text-align: right;
+	font-weight: bold;
+}
+.post_short,
+.post-short {
+	text-align: justify;
+	padding-bottom: 5px;
+}
+.comment_title,
+.comment-title {
+	font-weight: bold;
+}
+.comment_text,
+.comment-text {
+	font-weight: normal;
+	background-color: #FDFDFD;
+	border-bottom: 1px solid #DDDDDD;
+	padding-bottom: 15px;
+}
+.comment_title, .comment_text,
+.comment-title, .comment-text {
+	border-left: 1px solid #DDDDDD;
+}
+.comment_info,
+.comment-info {
+	text-align: right;
+	border-right: 1px solid #DDDDDD;
+}
+.comment_title, .comment_info,
+.comment-title, .comment-info {
+	border-top: 1px solid #DDDDDD;
+	background-color: #EEEEEE;
+}
+.selected_group_title,
+.selected-group-title { 
+	font-size: 14px;
+	text-align: center;
+}
+/*** Don't remove the class nixhier, this is required for ASP ***/
+.nixhier {
+	display:none;
+}
+.loop_header,
+.loop-header {
+	width: 100%;
+}
+.page_header,
+.page-header {
+	width: 100%;	
+}
+.post_header,
+.post-header {
+	width: 100%;	
+}
+.page_left,
+.page-left {
+	text-align: left;	
+}
+.page_center,
+.page-center {
+	text-align: center;
+}
+.page_right,
+.page-right {
+	text-align: right;	
+}
+.comment_header,
+.comment-header {
+	width: 100%;
+}
+.public_info,
+.public-info {
+	text-align: right;
+}
+.group_page,
+.group-page {
+	text-align: center;
+}
+
+.post_loop { font-size :1.0em; margin :0px 0px 10px; }
+.post_loop div {  line-height :1.6em; margin :0px 0px 2px; }		
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/frontend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/backend.css
===================================================================
--- tags/2.8.3/wb/modules/news/backend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/news/backend.css	(revision 1610)
@@ -0,0 +1,19 @@
+						.setting_name {
+	vertical-align: top;
+	width: 20%;
+}
+.setting_value {
+	vertical-align: top;
+	width: 80%;
+}
+
+/* 
+  The definitions below provide the style for the edit CSS button 
+  Required CSS class name: input.mod_moduledirectory_edit_css
+*/
+input.mod_news_edit_css {
+  color: #000;
+  padding: 2px;
+  margin: -20px auto;
+  float: right;
+}								
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/backend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/news/index.php
===================================================================
--- tags/2.8.3/wb/modules/news/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/news/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         news
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../index.php");
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/news/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/filter-routines.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/filter-routines.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/filter-routines.php	(revision 1610)
@@ -0,0 +1,234 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+
+/* ************************************************************************** */
+/**
+ * execute the frontend output filter to modify email addresses
+ * @param string actual content
+ * @return string modified content
+ */
+	function executeFrontendOutputFilter($content) {
+		// get output filter settings from database
+		$filter_settings = getOutputFilterSettings();
+		$output_filter_mode = 0;
+		$output_filter_mode |= ($filter_settings['email_filter'] * pow(2, 0));  // n | 2^0
+		$output_filter_mode |= ($filter_settings['mailto_filter'] * pow(2, 1)); // n | 2^1
+		define('OUTPUT_FILTER_AT_REPLACEMENT', $filter_settings['at_replacement']);
+		define('OUTPUT_FILTER_DOT_REPLACEMENT', $filter_settings['dot_replacement']);
+/* ### filter type: protect email addresses ################################# */
+		if( ($output_filter_mode & pow(2, 0)) || ($output_filter_mode & pow(2, 1)) ) {
+			$content = _doFilterEmail($content, $output_filter_mode);
+		}
+/* ### filter type: full qualified URLs ##################################### */
+        if($filter_settings['sys_rel'] == 1){
+			$content = _doFilterRelUrl($content);
+		}
+/* ### end of filters ####################################################### */
+		return $content;
+	}
+/* ************************************************************************** */
+/**
+ * function to read the current filter settings
+ * @global object $database
+ * @global object $admin
+ * @param void
+ * @return array contains all settings
+ */
+	function getOutputFilterSettings() {
+		global $database, $admin;
+	// set default values
+		$settings = array(
+			'sys_rel'         => 0,
+			'email_filter'    => 0,
+			'mailto_filter'   => 0,
+			'at_replacement'  => '(at)',
+			'dot_replacement' => '(dot)'
+		);
+	// be sure field 'sys_rel' is in table
+		$database->field_add( TABLE_PREFIX.'mod_output_filter', 'sys_rel', 'INT NOT NULL DEFAULT \'0\' FIRST');
+	// request settings from database
+		$sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_output_filter';
+		if(($res = $database->query($sql))) {
+			if(($rec = $res->fetchRow())) {
+				$settings = $rec;
+				$settings['at_replacement']  = $admin->strip_slashes($settings['at_replacement']);
+				$settings['dot_replacement'] = $admin->strip_slashes($settings['dot_replacement']);
+			}
+		}
+	// return array with filter settings
+		return $settings;
+	}
+/* ************************************************************************** */
+/**
+ * Convert full qualified, local URLs into relative URLs
+ * @param string $content
+ * @return string
+ */
+	function _doFilterRelUrl($content) {
+		$content = preg_replace_callback(
+				'/((?:href|src)\s*=\s*")([^\"]*?)(")/iU',
+				create_function('$matches',
+				    '$retval = $matches[0]; '.
+		            '$h = parse_url($matches[2], PHP_URL_HOST); '.
+					'if(isset($h) && $h != \'\') { '.
+					'if(stripos(WB_URL, $h) !== false) { '.
+					'$a = parse_url($matches[2]); '.
+					'$p = (isset($a[\'path\']) ? $a[\'path\'] : \'\'); '.
+					'$q = (isset($a[\'query\']) ? \'?\'.$a[\'query\'] : \'\'); '.
+					'$f = (isset($a[\'fragment\']) ? \'#\'.$a[\'fragment\'] : \'\'); '.
+					'$p .= ($q.$f); '.
+					'$retval = $matches[1]."/".(isset($p) ? ltrim(str_replace("//", "/", $p), "/") : "").$matches[3]; '.
+					'}} return $retval;'),
+		        $content);
+		return $content;
+	}
+/* ************************************************************************** */
+/**
+ * protect email addresses (replace '@' and '.' and obfuscate address
+ * @param string $content
+ * @return string
+ */
+	function _doFilterEmail($content, $output_filter_mode) {
+	// test if js-decryption is installed
+		if( preg_match('/<head.*<.*src=\".*\/mdcr.js.*>.*<\/head/siU', $content) ) {
+			$output_filter_mode |= pow(2, 2); // n | 2^2
+		}else {
+		// try to insert js-decrypt into <head> if available
+			$script = str_replace('\\', '/',str_replace(WB_PATH,'', dirname(__FILE__)).'/js/mdcr.js');
+			if(is_readable(WB_PATH.$script)) {
+				$scriptLink = '<script src="'.WB_URL.$script.'" type="text/javascript"></script>';
+				$regex = '/(.*)(<\s*?\/\s*?head\s*>.*)/isU';
+				$replace = '$1'.$scriptLink.'$2';
+				$content = preg_replace ($regex, $replace, $content);
+				$output_filter_mode |= pow(2, 2); // n | 2^2
+			}
+		}
+	// define some constants so we do not call the database in the callback functions again
+		define('OUTPUT_FILTER_MODE', (int)$output_filter_mode);
+/* *** obfuscate mailto addresses by js:mdcr *** */
+		// work out the defined output filter mode: possible output filter modes: [0], 1, 2, 3, 6, 7
+		// 2^0 * (0.. disable, 1.. enable) filtering of mail addresses in text
+		// 2^1 * (0.. disable, 1.. enable) filtering of mail addresses in mailto links
+		// 2^2 * (0.. disable, 1.. enable) Javascript mailto encryption (only if mailto filtering enabled)
+
+		// first search part to find all mailto email addresses
+		$pattern = '#(<a[^<]*href\s*?=\s*?"\s*?mailto\s*?:\s*?)([A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4})([^"]*?)"([^>]*>)(.*?)</a>';
+		// second part to find all non mailto email addresses
+		$pattern .= '|(value\s*=\s*"|\')??\b([A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4})\b#i';
+/*
+	Sub 1:\b(<a.[^<]*href\s*?=\s*?"\s*?mailto\s*?:\s*?)			-->	"<a id="yyy" class="xxx" href = " mailto :" ignoring white spaces
+	Sub 2:([A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4})			-->	the email address in the mailto: part of the mail link
+	Sub 3:([^"]*?)"												--> possible ?Subject&cc... stuff attached to the mail address
+	Sub 4:([^>]*>)												--> all class or id statements after the mailto but before closing ..>
+	Sub 5:(.*?)</a>\b											--> the mailto text; all characters between >xxxxx</a>
+	Sub 6:|\b([A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4})\b		--> email addresses which may appear in the text (require word boundaries)
+*/
+		// find all email addresses embedded in the content and filter them using a callback function
+		$content = preg_replace_callback($pattern, '_cbDoExecuteFilter', $content);
+		return $content;
+	}
+/* ************************************************************************** */
+/**
+ * callback-function for function _doFilterEmail() to proceed search results
+ * @param array results from preg_replace
+ * @return string proceeded replacement string
+ */
+	function _cbDoExecuteFilter($match) {
+		// check if required arguments are defined
+		if(!( defined('OUTPUT_FILTER_MODE')
+		      && defined('OUTPUT_FILTER_AT_REPLACEMENT')
+		      && defined('OUTPUT_FILTER_MODE')
+    	    ) ) {
+			return $match[0];
+		}
+		$search = array('@', '.');
+		$replace = array(OUTPUT_FILTER_AT_REPLACEMENT ,OUTPUT_FILTER_DOT_REPLACEMENT);
+		// check if the match contains the expected number of subpatterns (6|8)
+		switch (count($match)) {
+			case 8:
+			/** OUTPUT FILTER FOR EMAIL ADDRESSES EMBEDDED IN TEXT **/
+			// 1.. text mails only, 3.. text mails + mailto (no JS), 7 text mails + mailto (JS)
+				if(!in_array(OUTPUT_FILTER_MODE, array(1,3,7))) return $match[0];
+				// do not filter mail addresses included in input tags (<input ... value = "test@mail)
+				if (strpos($match[6], 'value') !== false) return $match[0];
+				// filtering of non mailto email addresses enabled
+				return str_replace($search, $replace, $match[0]);
+			break;
+			case 6:
+			/** OUTPUT FILTER FOR EMAIL ADDRESSES EMBEDDED IN MAILTO LINKS **/
+			// 2.. mailto only (no JS), 3.. text mails + mailto (no JS), 6.. mailto only (JS), 7.. all filters active
+				if(!in_array(OUTPUT_FILTER_MODE, array(2,3,6,7))) return $match[0];
+				// check if last part of the a href link: >xxxx</a> contains a email address we need to filter
+				$pattern = '#[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}#i';
+				if(preg_match_all($pattern, $match[5], $matches)) {
+					foreach($matches as $submatch) {
+						foreach($submatch as $value) {
+						// replace all . and all @ in email address parts by (dot) and (at) strings
+							$match[5] = str_replace($value, str_replace($search, $replace, $value), $match[5]);
+						}
+					}
+				}
+				// check if Javascript encryption routine is enabled
+				if(in_array(OUTPUT_FILTER_MODE, array(6,7))) {
+				/** USE JAVASCRIPT ENCRYPTION FOR MAILTO LINKS **/
+				// extract possible class and id attribute from ahref link
+					preg_match('/class\s*?=\s*?("|\')(.*?)\1/ix', $match[0], $class_attr);
+					$class_attr = empty($class_attr) ? '' : 'class="' . $class_attr[2] . '" ';
+					preg_match('/id\s*?=\s*?("|\')(.*?)\1/ix', $match[0], $id_attr);
+					$id_attr = empty($id_attr) ? '' : 'id="' . $id_attr[2] . '" ';
+				// preprocess mailto link parts for further usage
+					$search = array('@', '.', '_', '-'); $replace = array('F', 'Z', 'X', 'K');
+					$email_address = str_replace($search, $replace, strtolower($match[2]));
+					$email_subject = rawurlencode(html_entity_decode($match[3]));
+				// create a random encryption key for the Caesar cipher
+					mt_srand((double)microtime()*1000000);	// (PHP < 4.2.0)
+					$shift = mt_rand(1, 25);
+				// encrypt the email using an adapted Caesar cipher
+					$encrypted_email = "";
+					for($i = strlen($email_address) -1; $i > -1; $i--) {
+						if(preg_match('#[FZXK0-9]#', $email_address[$i], $characters)) {
+							$encrypted_email .= $email_address[$i];
+						} else {
+							$encrypted_email .= chr((ord($email_address[$i]) -97 + $shift) % 26 + 97);
+						}
+					}
+					$encrypted_email .= chr($shift + 97);
+				// build the encrypted Javascript mailto link
+					$mailto_link  = "<a {$class_attr}{$id_attr}href=\"javascript:mdcr('$encrypted_email','$email_subject')\">" .$match[5] ."</a>";
+					return $mailto_link;
+				} else {
+				/** DO NOT USE JAVASCRIPT ENCRYPTION FOR MAILTO LINKS **/
+				// as minimum protection, replace @ in the mailto part by (at)
+				// dots are not transformed as this would transform my.name@domain.com into: my(dot)name(at)domain(dot)com
+				// rebuild the mailto link from the subpatterns (at the missing characters " and </a>")
+					return $match[1] .str_replace('@', OUTPUT_FILTER_AT_REPLACEMENT, $match[2]) .$match[3] .'"' .$match[4] .$match[5] .'</a>';
+				// if you want to protect both, @ and dots, comment out the line above and remove the comment from the line below
+				// return $match[1] .str_replace($search, $replace, $match[2]) .$match[3] .'"' .$match[4] .$match[5] .'</a>';
+				}
+			break;
+			default:
+		// number of subpatterns do not match the requirements ... do nothing
+				return $match[0];
+			break;
+		}
+	}
+/* ************************************************************************** */

Property changes on: tags/2.8.3/wb/modules/output_filter/filter-routines.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/install.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/install.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2011-, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX .'mod_output_filter';
+$database->query("DROP TABLE IF EXISTS `$table`");
+
+$database->query("CREATE TABLE IF NOT EXISTS `$table` (
+	`sys_rel` INT NOT NULL DEFAULT '0',
+	`email_filter` VARCHAR(1) NOT NULL DEFAULT '0',
+	`mailto_filter` VARCHAR(1) NOT NULL DEFAULT '0',
+	`at_replacement` VARCHAR(255) NOT NULL DEFAULT '(at)',
+	`dot_replacement` VARCHAR(255) NOT NULL DEFAULT '(dot)'
+	) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"
+);
+
+// add default values to the module table
+$database->query("INSERT INTO ".TABLE_PREFIX
+	."mod_output_filter (sys_rel,email_filter, mailto_filter, at_replacement, dot_replacement) VALUES ('0','1', '1', '(at)', '(dot)')");

Property changes on: tags/2.8.3/wb/modules/output_filter/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/upgrade.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_output_filter';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------global $i;
+$table_name = TABLE_PREFIX .'mod_output_filter';
+$field_name = 'sys_rel';
+$i = (!isset($i) ? 1 : $i);
+print "<div style=\"margin:1em auto;font-size:1.1em;\">";
+print "<h4>Step $i: Updating Output Filter</h4>\n";
+$i++;
+$OK   = "<span class=\"ok\">OK</span>";
+$FAIL = "<span class=\"error\">FAILED</span>";
+if ( ($database->field_exists($table_name,$field_name) )) {
+		print "<br /><strong>'Output Filter already updated'</strong> $OK<br />\n";
+} else {
+	$description = 'INT NOT NULL DEFAULT \'0\' FIRST';
+	if( ($database->field_add($table_name,$field_name,$description )) ) {
+		print "<br /><strong>Updating Output Filter</strong> $OK<br />\n";
+	} else {
+			print "<br /><strong>Updating Output Filter</strong> $FAIL<br />\n";
+	}
+}
+print "</div>";

Property changes on: tags/2.8.3/wb/modules/output_filter/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/uninstall.php	(revision 1610)
@@ -0,0 +1,24 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2009-, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX .'mod_output_filter';
+$database->query("DROP TABLE IF EXISTS `$table`");

Property changes on: tags/2.8.3/wb/modules/output_filter/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/info.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/info.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+$module_directory = 'output_filter';
+$module_name = 'Frontend Output Filter';
+$module_function = 'tool';
+$module_version	= '0.3';
+$module_platform = '2.8.2';
+$module_author = 'Christian Sommer(doc), WB-Project, Werner v.d. Decken(DarkViper)';
+$module_license = 'GNU General Public License';
+$module_description = 'This module allows to filter the output before displaying it on the frontend. Support for filtering mailto links and mail addresses in strings.';

Property changes on: tags/2.8.3/wb/modules/output_filter/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/tool.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/tool.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/tool.php	(revision 1610)
@@ -0,0 +1,122 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2011-, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once( dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+
+	$modPath = str_replace('\\', '/', dirname(__FILE__)).'/';
+	$msgTxt = '';
+	$msgCls = 'msg-box';
+// include the modules language definitions
+	if(!is_readable($modPath.'languages/'.LANGUAGE .'.php')) {
+		require_once($modPath.'languages/EN.php');
+	} else {
+		require_once($modPath.'languages/'.LANGUAGE .'.php');
+	}
+// check if data was submitted
+	if($doSave) {
+	// take over post - arguments
+		$data = array();
+		$data['sys_rel']       = (int)(intval(isset($_POST['sys_rel']) ? $_POST['sys_rel'] : 0) != 0);
+		$data['email_filter']  = (int)(intval(isset($_POST['email_filter']) ? $_POST['email_filter'] : 0) != 0);
+		$data['mailto_filter'] = (int)(intval(isset($_POST['mailto_filter']) ? $_POST['mailto_filter'] : 0) != 0);
+		$data['at_replacement']  = isset($_POST['at_replacement']) ? trim(strip_tags($_POST['at_replacement'])) : '';
+		$data['dot_replacement'] = isset($_POST['dot_replacement']) ? trim(strip_tags($_POST['dot_replacement'])) : '';
+		if ($admin->checkFTAN()) {
+		// update database settings
+			$sql = 'UPDATE `'.TABLE_PREFIX.'mod_output_filter` SET '.
+					  '`email_filter`='.$data['email_filter'].', '.
+					  '`sys_rel`='.$data['sys_rel'].', '.
+					  '`mailto_filter`='.$data['mailto_filter'].', '.
+					  '`at_replacement`=\''.mysql_real_escape_string($data['at_replacement']).'\', '.
+					  '`dot_replacement`=\''.mysql_real_escape_string($data['dot_replacement']).'\'';
+			if($database->query($sql)) {
+			//anything ok
+				$msgTxt = $MESSAGE['RECORD_MODIFIED_SAVED'];
+				$msgCls = 'msg-box';
+			}else {
+			// database error
+				$msgTxt = $MESSAGE['RECORD_MODIFIED_FAILED'];
+				$msgCls = 'error-box';
+			}
+		}else {
+		// FTAN error
+			$msgTxt = $MESSAGE['GENERIC_SECURITY_ACCESS'];
+			$msgCls = 'error-box';
+		}
+	}else {
+	// read settings from the database to show
+		require_once($modPath.'filter-routines.php');
+		$data = getOutputFilterSettings();
+	}
+	// write out header if needed
+	if(!$admin_header) { $admin->print_header(); }
+	if( $msgTxt != '') {
+	// write message box if needed
+		echo '<div class="'.$msgCls.'">'.$msgTxt.'</div>';
+	}
+?>
+<h2><?php echo $MOD_MAIL_FILTER['HEADING']; ?></h2>
+<p><?php echo $MOD_MAIL_FILTER['HOWTO']; ?></p>
+<form name="store_settings" action="<?php echo $_SERVER['REQUEST_URI'];?>" method="post">
+	<?php echo $admin->getFTAN(); ?>
+	<input type="hidden" name="action" value="save" />
+	<table width="98%" cellspacing="0" cellpadding="5px" class="row_a">
+	<tr><td colspan="2"><strong><?php echo $MOD_MAIL_FILTER['BASIC_CONF'];?>:</strong></td></tr>
+	<tr>
+		<td width="35%"><?php echo $MOD_MAIL_FILTER['SYS_REL'];?>:</td>
+		<td>
+			<input type="radio" <?php echo ($data['sys_rel']=='1') ? 'checked="checked"' :'';?>
+				name="sys_rel" value="1"><?php echo $MOD_MAIL_FILTER['ENABLED'];?>
+			<input type="radio" <?php echo (($data['sys_rel'])=='0') ? 'checked="checked"' :'';?>
+				name="sys_rel" value="0"><?php echo $MOD_MAIL_FILTER['DISABLED'];?>
+		</td>
+	</tr>
+	<tr>
+		<td width="35%"><?php echo $MOD_MAIL_FILTER['EMAIL_FILTER'];?>:</td>
+		<td>
+			<input type="radio" <?php echo ($data['email_filter']=='1') ?'checked="checked"' :'';?>
+				name="email_filter" value="1"><?php echo $MOD_MAIL_FILTER['ENABLED'];?>
+			<input type="radio" <?php echo (($data['email_filter'])=='0') ?'checked="checked"' :'';?>
+				name="email_filter" value="0"><?php echo $MOD_MAIL_FILTER['DISABLED'];?>
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $MOD_MAIL_FILTER['MAILTO_FILTER'];?>:</td>
+		<td>
+			<input type="radio" <?php echo ($data['mailto_filter']=='1') ?'checked="checked"' :'';?>
+				name="mailto_filter" value="1"><?php echo $MOD_MAIL_FILTER['ENABLED'];?>
+			<input type="radio" <?php echo (($data['mailto_filter'])=='0') ?'checked="checked"' :'';?>
+				name="mailto_filter" value="0"><?php echo $MOD_MAIL_FILTER['DISABLED'];?>
+		</td>
+	</tr>
+	<tr><td colspan="2"><br /><strong><?php echo $MOD_MAIL_FILTER['REPLACEMENT_CONF'];?>:</strong></td></tr>
+	<tr>
+		<td><?php echo $MOD_MAIL_FILTER['AT_REPLACEMENT'];?>:</td>
+		<td><input type="text" style="width: 160px" value="<?php echo $data['at_replacement'];?>" 
+			name="at_replacement"/></td>
+	</tr>
+	<tr>
+		<td><?php echo $MOD_MAIL_FILTER['DOT_REPLACEMENT'];?>:</td>
+		<td><input type="text" style="width: 160px" value="<?php echo $data['dot_replacement'];?>" 
+			name="dot_replacement"/></td>
+	</tr>
+	</table>
+	<input type="submit" style="margin-top:10px; width:140px;" value="<?php echo $TEXT['SAVE']; ?>" />
+</form>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/output_filter/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/index.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/index.php	(revision 1610)
@@ -0,0 +1,19 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          Christian Sommer, WB-Project, Werner v.d. Decken
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('Location: ../index.php');
+exit();

Property changes on: tags/2.8.3/wb/modules/output_filter/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/NL.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING']				= 'Beheersinstellingen: Output Filter';
+$MOD_MAIL_FILTER['HOWTO']				= 'Hier kan je de uitvoer filteren met onderstaande opties.<p style="line-height:1.5em;"><strong>Tip: </strong>Mailto links kunnen gecodeerd worden door een Javascript functie. Om van deze optie gebruik te kunnen maken moet je de PHP code <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(\'js\');?&gt;</code> in de &lt;head&gt; sectie van het index.php bestand van je template plaatsen. Zonder deze aanpassing zal enkel het @ teken in het mailto deel vervangen worden.</p>';
+$MOD_MAIL_FILTER['WARNING']				= '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF']			= 'E-mail Configuratie';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with  relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER']		= 'Filter E-mail adressen in tekst';
+$MOD_MAIL_FILTER['MAILTO_FILTER']		= 'Filter E-mail adressen in mailto links';
+$MOD_MAIL_FILTER['ENABLED']				= 'Aan';
+$MOD_MAIL_FILTER['DISABLED']			= 'Uit';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']	= 'Vervang E-mail tekens';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']		= 'Vervang "@" door';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']		= 'Vervang "." door';

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/NO.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING']	= 'Valg: Filtrering av ut data';
+$MOD_MAIL_FILTER['HOWTO']	= 'Du kan gj&oslash;re innstillinger for utdatafitreringen i valgene nedenfor.<p style="line-height:1.5em;"><strong>Tips: </strong>Mailto linker kan krypteres av en Javascript funksjon. For &aring; f&aring; benyttet denne funksjonen, m&aring; det legges til f&oslash;lgende PHP kode <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(\'js\');?&gt;</code> inn i &lt;head&gt; seksjonen i index.php p&aring; design malen din. Uten denne modifikasjonen, vil kun @ karakterer i mailto linker bli erstattet.</p>';
+$MOD_MAIL_FILTER['WARNING']	= '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF']	= 'Enkel Epost konfigurasjon';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER']	= 'Filtrer Epost adresser i tekst';
+$MOD_MAIL_FILTER['MAILTO_FILTER']	= 'Filtrer Epost adresser i mailto linker';
+$MOD_MAIL_FILTER['ENABLED']	= 'P&aring;sl&aring;tt';
+$MOD_MAIL_FILTER['DISABLED']	= 'Avsl&aring;tt';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']= 'Endringe i Epost adresser';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']	= 'Bytt "@" med';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']	= 'Bytt "." med';

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/EN.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING']	= 'Options: Output Filter';
+$MOD_MAIL_FILTER['HOWTO'] = 'You can configure the output filtering with the options below.<p style="line-height:1.5em;"><strong>Tip: </strong>Mailto links can be encrypted by a Javascript function. To make use of this option, one needs to add the PHP code <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(\'js\');?&gt;</code> into the &lt;head&gt; section of the index.php of your template. Without this modification, only the @ character in the mailto part will be replaced.</p>';
+$MOD_MAIL_FILTER['WARNING']	= '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF'] = 'Basic Email Configuration';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with  relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER'] = 'Filter Email addresses in text';
+$MOD_MAIL_FILTER['MAILTO_FILTER'] = 'Filter Email addresses in mailto links';
+$MOD_MAIL_FILTER['ENABLED']	= 'Enabled';
+$MOD_MAIL_FILTER['DISABLED'] = 'Disabled';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']= 'Email Replacements';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']	= 'Replace "@" by';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']	= 'Replace "." by';

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/DA.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING'] = 'Indstillinger: Output-filter';
+$MOD_MAIL_FILTER['HOWTO'] = 'Du kan konfigurere output-filteret med indstillingerne nedenfor.<p style="line-height:1.5em;"><strong>Tip: </strong>Mailadresser kan krypteres vedhj&Atilde;&brvbar;lp af en  Javascript-funktion. For at g&Atilde;re brug af denne indstilling, skal du tilf&Atilde;je PHP-koden <code style="background:#FFA;color:#900;"><?php register_frontend_modfiles(js);?></code> til <head> sektionnen af  index.php i din template (layout-skabelon). Uden denne &Atilde;&brvbar;ndring vil kun @-tegnet i email-adressen blive erstattet.</p>';
+$MOD_MAIL_FILTER['WARNING']				= '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF'] = 'Email grundindstillinger';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with  relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER'] = 'Filtrer emailadresser i tekst';
+$MOD_MAIL_FILTER['MAILTO_FILTER'] = 'Filtrer emailadresser i mailto-links';
+$MOD_MAIL_FILTER['ENABLED'] = 'Aktiveret';
+$MOD_MAIL_FILTER['DISABLED'] = 'Deaktiveret';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF'] = 'Email erstatninger';
+$MOD_MAIL_FILTER['AT_REPLACEMENT'] = 'Erstat "@" med';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT'] = 'Erstat "." med';
+

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/RU.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING']	= '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;: Output Filter';
+$MOD_MAIL_FILTER['HOWTO'] = '&#1042;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1072;&#1094;&#1080;&#1102;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1085;&#1080;&#1078;&#1077;.<p style="line-height:1.5em;"><strong>&#1042;&#1072;&#1078;&#1085;&#1086;: </strong>Mailto &#1089;&#1089;&#1099;&#1083;&#1082;&#1080; &#1084;&#1086;&#1075;&#1091;&#1090; &#1073;&#1099;&#1090;&#1100; &#1089;&#1082;&#1088;&#1099;&#1090;&#1099; &#1086;&#1090; &#1089;&#1087;&#1072;&#1084;&#1077;&#1088;&#1086;&#1074; &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102; Javascript. &#1063;&#1090;&#1086;&#1073;&#1099; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1101;&#1090;&#1091; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100;, &#1076;&#1086;&#1073;&#1072;&#1074;&#1100;&#1090;&#1077; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1080;&#1081; PHP &#1082;&#1086;&#1076; <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(\'js\');?&gt;</code> &#1074; &lt;head&gt; &#1089;&#1077;&#1082;&#1094;&#1080;&#1102; index.php &#1092;&#1072;&#1081;&#1083;&#1072; &#1074;&#1072;&#1096;&#1077;&#1075;&#1086; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1072;. &#1048;&#1085;&#1072;&#1095;&#1077; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1089;&#1080;&#1084;&#1074;&#1086;&#1083; @ &#1073;&#1091;&#1076;&#1077;&#1090; &#1079;&#1072;&#1084;&#1077;&#1085;&#1077;&#1085; &#1074; mailto &#1089;&#1089;&#1099;&#1083;&#1082;&#1072;&#1093;.</p>';
+$MOD_MAIL_FILTER['WARNING']	= '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF']	= '&#1054;&#1089;&#1085;&#1086;&#1074;&#1085;&#1099;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; Email';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER'] = '&#1057;&#1082;&#1088;&#1099;&#1074;&#1072;&#1090;&#1100; Email &#1072;&#1076;&#1088;&#1077;&#1089;&#1072; &#1074; &#1090;&#1077;&#1082;&#1089;&#1090;&#1077;';
+$MOD_MAIL_FILTER['MAILTO_FILTER'] = '&#1057;&#1082;&#1088;&#1099;&#1074;&#1072;&#1090;&#1100; Email &#1072;&#1076;&#1088;&#1077;&#1089;&#1072; &#1074; mailto &#1089;&#1089;&#1099;&#1083;&#1082;&#1072;&#1093;';
+$MOD_MAIL_FILTER['ENABLED']	= '&#1042;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1086;';
+$MOD_MAIL_FILTER['DISABLED'] = '&#1042;&#1099;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1086;';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']= '&#1047;&#1072;&#1084;&#1077;&#1085;&#1099; &#1074; &#1072;&#1076;&#1088;&#1077;&#1089;&#1072;&#1093; Email';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']	= '&#1047;&#1072;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; "@" &#1085;&#1072;';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']	= '&#1047;&#1072;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; "." &#1085;&#1072;';
+

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/FR.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+//Module Description
+$module_description = 'Ce module g&egrave;re le filtrage des donn&eacute;es avant affichage &agrave; l&apos;utilisateur. Permets de filtrer les liens mailto et les adresses emails.';
+
+// Headings and text outputs
+$MOD_MAIL_FILTER['HEADING'] = 'Options: Output Filter';
+$MOD_MAIL_FILTER['HOWTO'] = 'Vous pouvez configurer le filtrage des donn&eacute;es avant affichage gr&acirc;ce aux options ci-dessous.<p style="line-height:1.5em;"><strong>Conseil: </strong>Les liens Mailto peuvent &ecirc;tre crypt&eacute;s &agrave; l&apos;aide d&apos;une fonction Javascript. Pour utiliser cette fonctionnalit&eacute;, vous devez ajouter le code PHP <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(&apos;js&apos;);?&gt;</code> dans la partie &lt;head&gt; de index.php de votre fichier mod&egrave;le. Sans cette modification, seulement le caract&egrave;re @ sera remplac&eacute; dans le champ mailto.</p>';
+$MOD_MAIL_FILTER['WARNING'] = '';
+
+// Text and captions of form elements
+$MOD_MAIL_FILTER['BASIC_CONF'] = 'Configuration de base des Emails';
+$MOD_MAIL_FILTER['SYS_REL'] = 'Frontendoutput with  relative Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER'] = 'Filtrer le texte des Emails';
+$MOD_MAIL_FILTER['MAILTO_FILTER'] = 'Filtrer les liens mailto des Emails';
+$MOD_MAIL_FILTER['ENABLED'] = 'Activ&eacute;';
+$MOD_MAIL_FILTER['DISABLED'] = 'D&eacute;sactiv&eacute;';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']= 'Remplacements';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']	= 'Remplacer "@" par';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']	= 'Remplacer "." par';

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/*
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+exit();
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/languages/DE.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Deutsche Modulbeschreibung
+$module_description 					= 'Dieses Modul erlaubt die Filterung von Inhalten vor der Anzeige im Frontendbereich. Unterst&uuml;zt die Filterung von Emailadressen in mailto Links und Text.';
+
+// Ueberschriften und Textausgaben
+$MOD_MAIL_FILTER['HEADING']				= 'Optionen: Ausgabe Filterung';
+$MOD_MAIL_FILTER['HOWTO']				= '&Uuml;ber nachfolgende Optionen kann die Ausgabefilterung konfiguriert werden.<p style="line-height:1.5em;"><strong>Tipp: </strong>Mailto Links k&ouml;nnen mit einer Javascript Routine verschl&uuml;sselt werden. Um diese Option zu aktivieren muss der PHP Befehl <code style="background:#FFA;color:#900;">&lt;?php register_frontend_modfiles(\'js\');?&gt;</code> im &lt;head&gt; Bereich der index.php Ihres Templates eingebunden werden. Ohne diese &Auml;nderungen wird nur das @ Zeichen im mailto: Teil ersetzt.</p>';
+$MOD_MAIL_FILTER['WARNING']				= '';
+
+// Text von Form Elementen
+$MOD_MAIL_FILTER['BASIC_CONF']			= 'Grundeinstellungen';
+$MOD_MAIL_FILTER['SYS_REL']	            = 'Frontendausgabe mit relativen Urls';
+$MOD_MAIL_FILTER['EMAIL_FILTER']		= 'Filtere E-Mail Adressen im Text';
+$MOD_MAIL_FILTER['MAILTO_FILTER']		= 'Filtere E-Mail Adressen in mailto Links';
+$MOD_MAIL_FILTER['ENABLED']				= 'Aktiviert';
+$MOD_MAIL_FILTER['DISABLED']			= 'Ausgeschaltet';
+
+$MOD_MAIL_FILTER['REPLACEMENT_CONF']	= 'Email Ersetzungen';
+$MOD_MAIL_FILTER['AT_REPLACEMENT']		= 'Ersetze "@" durch';
+$MOD_MAIL_FILTER['DOT_REPLACEMENT']		= 'Ersetze "." durch';

Property changes on: tags/2.8.3/wb/modules/output_filter/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/js/mdcr.js
===================================================================
--- tags/2.8.3/wb/modules/output_filter/js/mdcr.js	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/js/mdcr.js	(revision 1610)
@@ -0,0 +1,30 @@
+
+// $Id$
+
+
+function mdcr(a,b) {
+  location.href=sdcr(a,b);
+}
+
+function sdcr(a,f) {
+  var b = a.charCodeAt(a.length-1) -97;
+  var c=""; var e; var g;
+  
+  for(var d=a.length-2; d>-1; d--) {
+    if(a.charCodeAt(d) < 97) {
+      switch(a.charCodeAt(d)) {
+        case 70: g=64; break;
+        case 90: g=46; break;
+        case 88: g=95; break;
+        case 75: g=45; break;
+        default: g=a.charCodeAt(d); break;
+      }
+      c+=String.fromCharCode(g)
+    } else {
+      e=(a.charCodeAt(d) - 97 - b) % 26;
+      e+=(e<0 || e>25) ? +26 : 0;
+      c+=String.fromCharCode(e+97);
+    }
+  }
+  return "mailto:"+c+f;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/output_filter/js/mdcr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/js/index.php
===================================================================
--- tags/2.8.3/wb/modules/output_filter/js/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/js/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         output_filter
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+exit();
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/output_filter/js/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/output_filter/FTAN_SUPPORTED
===================================================================
--- tags/2.8.3/wb/modules/output_filter/FTAN_SUPPORTED	(nonexistent)
+++ tags/2.8.3/wb/modules/output_filter/FTAN_SUPPORTED	(revision 1610)
@@ -0,0 +1 @@
+This module supports the FTAN-System
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/output_filter/FTAN_SUPPORTED
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/info.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/info.php	(revision 1610)
@@ -0,0 +1,33 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$module_directory = 'wrapper';
+$module_name = 'Wrapper';
+$module_function = 'page';
+$module_version = '2.8.3';
+$module_platform = '2.7 | 2.8.x';
+$module_author = 'Ryan Djurovich';
+$module_license = 'GNU General Public License';
+$module_description = 'This module allows you to wrap your site around another using an inline frame';

Property changes on: tags/2.8.3/wb/modules/wrapper/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/view.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/view.php	(revision 1610)
@@ -0,0 +1,45 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/wrapper/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/wrapper/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/wrapper/languages/'.LANGUAGE .'.php');
+}
+
+// get url
+$get_settings = $database->query("SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");
+$fetch_settings = $get_settings->fetchRow();
+$url = ($fetch_settings['url']);
+
+?>
+<iframe src="<?php echo $url; ?>" width="100%" height="<?php echo $fetch_settings['height']; ?>" frameborder="0" scrolling="auto">
+<?php echo $MOD_WRAPPER['NOTICE']; ?>
+<a href="<?php echo $url; ?>" target="_blank"><?php echo $url; ?></a>
+</iframe>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/view.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/save.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/save.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/save.php	(revision 1610)
@@ -0,0 +1,51 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+require('../../config.php');
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+
+// Update the mod_wrapper table with the contents
+if(isset($_POST['url'])) {
+	$url = $admin->add_slashes(strip_tags($_POST['url']));
+	$height = $_POST['height'];
+	if(!is_numeric($height)) {
+		$height = 400;
+	}
+	$query = "UPDATE ".TABLE_PREFIX."mod_wrapper SET url = '$url', height = '$height' WHERE section_id = '$section_id'";
+	$database->query($query);
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/wrapper/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/delete.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/delete.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// Delete page from mod_wrapper
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'");

Property changes on: tags/2.8.3/wb/modules/wrapper/delete.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/install.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/install.php	(revision 1610)
@@ -0,0 +1,30 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+if(defined('WB_URL')) {
+	
+	// Create table
+	// $database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_wrapper`");
+	$mod_wrapper = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_wrapper` ('
+		. ' `section_id` INT NOT NULL DEFAULT \'0\','
+		. ' `page_id` INT NOT NULL DEFAULT \'0\','
+		. ' `url` TEXT NOT NULL,'
+		. ' `height` INT NOT NULL DEFAULT \'0\','
+		. ' PRIMARY KEY ( `section_id` ) '
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_wrapper);
+}

Property changes on: tags/2.8.3/wb/modules/wrapper/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/modify.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/modify.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// Setup template object
+$template = new Template(WB_PATH.'/modules/wrapper');
+$template->set_file('page', 'modify.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Get page content
+$query = "SELECT url,height FROM ".TABLE_PREFIX."mod_wrapper WHERE section_id = '$section_id'";
+$get_settings = $database->query($query);
+$settings = $get_settings->fetchRow();
+$url = ($settings['url']);
+$height = $settings['height'];
+
+// Insert vars
+$template->set_var(array(
+					'PAGE_ID' => $page_id,
+					'SECTION_ID' => $section_id,
+					'WB_URL' => WB_URL,
+					'URL' => $url,
+					'HEIGHT' => $height,
+					'TEXT_URL' => $TEXT['URL'],
+					'TEXT_HEIGHT' => $TEXT['HEIGHT'],
+					'TEXT_SAVE' => $TEXT['SAVE'],
+					'TEXT_CANCEL' => $TEXT['CANCEL'],
+					'FTAN' => $admin->getFTAN()
+				)
+			);
+
+// Parse template object
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page');

Property changes on: tags/2.8.3/wb/modules/wrapper/modify.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/upgrade.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_wrapper';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/add.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/add.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_wrapper (page_id,section_id,height) VALUES ('$page_id','$section_id','400')");

Property changes on: tags/2.8.3/wb/modules/wrapper/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/modify.htt
===================================================================
--- tags/2.8.3/wb/modules/wrapper/modify.htt	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/modify.htt	(revision 1610)
@@ -0,0 +1,41 @@
+<!-- BEGIN main_block -->
+
+<form action="{WB_URL}/modules/wrapper/save.php" method="post">
+
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<input type="hidden" name="section_id" value="{SECTION_ID}" />
+{FTAN}
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left" width="50">
+		{TEXT_URL}:
+	</td>
+	<td>
+		<input type="text" name="url" value="{URL}" style="width: 100%;" />
+	</td>
+</tr>
+<tr>
+	<td align="left" width="50">
+		{TEXT_HEIGHT}:
+	</td>
+	<td>
+		<input type="text" name="height" value="{HEIGHT}" maxlength="4" style="width: 100%;" />
+	</td>
+</tr>
+</table>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input type="submit" value="{TEXT_SAVE}" style="width: 200px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		</form>
+		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<!-- END main_block -->
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/modify.htt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/index.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         wrapper
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wrapper/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10 Jan 2011) $
+ *
+ */
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/DA.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE ADDON: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+
+// Dansk modulbeskrivelse
+$module_description = 'Med dette modul kan du indpakke indhold fra fremmede websider p&Atilde;&yen; dit websted ved hj&Atilde;&brvbar;lp af Inline Frames (iframe)';
+
+// Headings and text outputs
+$MOD_WRAPPER['NOTICE'] = 'Din browser underst&Atilde;tter ikke inline frames.<br />Klik p&Atilde;&yen; linket nedenfor for at bes&Atilde;ge det websted, som det var hensigten at vise her...<br />';
+
+?>

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+-----------------------------------------------------------------------------------------
+NORSK LANGUAGE FILE FOR THE ADDON: WRAPPER
+-----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_WRAPPER['NOTICE'] =	'Nettleseren din st&oslash;tter ikke &quot;inline frames&quot;.<br />Klikk p&amp;aring; lenken under for &amp;aring; g&amp;aring; til nettsiden som var men &amp;aring; skulle vises i dette vinduet...<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/FR.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Ce module permet l&apos;int&eacute;gration de contenus externes sur votre page &agrave; l&apos;aide de cadres enlign&eacute; (iframe)';
+
+// Ueberschriften und Textausgaben
+$MOD_WRAPPER['NOTICE'] = 'Votre navigateur ne supporte pas les cadres enlign&eacute;<br />Cliquez sur le lien ci-dessous pour vous rendre au site qui &eacute;tais sens&eacute; tre affich&eacute; ici...<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE ADDON: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_WRAPPER['NOTICE'] 		=	'Uw browser laat geen ondersteuning toe voor inline frames.<br />Klik op de link hieronder om de site te tonen die je eigenlijk wilde zien...<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/EN.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  ENGLISH LANGUAGE FILE FOR THE ADDON: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_WRAPPER['NOTICE'] 		=	'Your browser does not support inline frames.<br />Click on the link below to visit the website that was meant to be shown here...<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/RU.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project http://www.websitebaker.org/
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  RUSSIAN LANGUAGE FILE FOR THE ADDON: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_WRAPPER['NOTICE'] 		=	'&#1042;&#1072;&#1096; browser &#1085;&#1077; &#1087;&#1086;&#1076;&#1076;&#1077;&#1088;&#1078;&#1080;&#1074;&#1072;&#1077;&#1090; inline-&#1092;&#1088;&#1077;&#1081;&#1084;&#1099;.<br />&#1053;&#1072;&#1078;&#1084;&#1080;&#1090;&#1077; &#1085;&#1072; &#1089;&#1089;&#1099;&#1083;&#1082;&#1091; &#1085;&#1080;&#1078;&#1077;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1087;&#1077;&#1088;&#1077;&#1081;&#1090;&#1080; &#1082; &#1080;&#1084;&#1087;&#1086;&#1088;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1086;&#1084;&#1091; &#1089;&#1102;&#1076;&#1072; &#1089;&#1072;&#1081;&#1090;&#1091;...<br />';
+
+?>

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/wrapper/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/wrapper/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/wrapper/languages/DE.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: WRAPPER
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'Dieses Modul erlaubt das Einbinden fremder Inhalte auf Ihrer Seite mit Hilfe von Inline Frames (iframe)';
+
+// Ueberschriften und Textausgaben
+$MOD_WRAPPER['NOTICE'] = 'Ihr Browser unterst&uuml;tzt keine Inline Frames.<br />Bitte klicken Sie auf nachfolgenden Link, um den Seiteninhalt der externen Seite zu betrachten ...<br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/wrapper/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/info.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/info.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         jsadmin
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+$module_directory = 'jsadmin';
+$module_name = 'Javascript Admin';
+$module_function = 'tool';
+$module_version = '1.4.0';
+$module_platform = '2.7 | 2.8.x';
+$module_author = 'Stepan Riha, Swen Uth';
+$module_license	= 'BSD License';
+$module_description = 'This module adds Javascript functionality to the Website Baker Admin to improve some of the UI interactions. Uses the YahooUI library.';

Property changes on: tags/2.8.3/wb/modules/jsadmin/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/uninstall.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       (C) 2006, Stepan Riha, 2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX ."mod_jsadmin";
+$database->query("DROP TABLE `$table`");

Property changes on: tags/2.8.3/wb/modules/jsadmin/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/tool.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/tool.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/tool.php	(revision 1610)
@@ -0,0 +1,128 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/jsadmin/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/jsadmin/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/jsadmin/languages/'.LANGUAGE .'.php');
+}
+/*
+// check if backend.css file needs to be included into the <body></body>
+if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH .'/modules/jsadmin/backend.css')) {
+	echo '<style type="text/css">';
+	include(WB_PATH .'/modules/jsadmin/backend.css');
+	echo "\n</style>\n";
+}
+*/
+require_once(WB_PATH.'/modules/jsadmin/jsadmin.php');
+
+// Check if user selected what add-ons to reload
+if(isset($_POST['save_settings']))  {
+
+	if (!$admin->checkFTAN())
+	{
+		if(!$admin_header) { $admin->print_header(); }
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$_SERVER['REQUEST_URI']);
+	}
+
+	// Include functions file
+	require_once(WB_PATH.'/framework/functions.php');
+	save_setting('mod_jsadmin_persist_order', isset($_POST['persist_order']));
+	save_setting('mod_jsadmin_ajax_order_pages', isset($_POST['ajax_order_pages']));
+	save_setting('mod_jsadmin_ajax_order_sections', isset($_POST['ajax_order_sections']));
+   // 	echo '<div style="border: solid 2px #9c9; background: #ffd; padding: 0.5em; margin-top: 1em">'.$MESSAGE['SETTINGS']['SAVED'].'</div>';
+	// check if there is a database error, otherwise say successful
+	if(!$admin_header) { $admin->print_header(); }
+	if($database->is_error()) {
+		$admin->print_error($database->get_error(), $js_back);
+	} else {
+
+		$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/admintools/tool.php?tool=jsadmin');
+	}
+
+} else {
+	// $admin->print_header();
+}
+
+// Display form
+	$persist_order = get_setting('mod_jsadmin_persist_order', true) ? 'checked="checked"' : '';
+	$ajax_order_pages = get_setting('mod_jsadmin_ajax_order_pages', true) ? 'checked="checked"' : '';
+	$ajax_order_sections = get_setting('mod_jsadmin_ajax_order_sections', true) ? 'checked="checked"' : '';
+
+// THIS ROUTINE CHECKS THE EXISTING OFF ALL NEEDED YUI FILES
+  $YUI_ERROR=false; // ist there an Error
+  $YUI_PUT ='';   // String with javascipt includes
+  $YUI_PUT_MISSING_Files=''; // String with missing files
+  reset($js_yui_scripts);
+  foreach($js_yui_scripts as $script) {
+     if(!file_exists($WB_MAIN_RELATIVE_PATH.$script)){
+        $YUI_ERROR=true;
+        $YUI_PUT_MISSING_Files =$YUI_PUT_MISSING_Files."- ".WB_URL.$script."<br />";   // catch all missing files
+    }
+	}
+	if($YUI_ERROR)
+	{
+?>
+	<div id="jsadmin_install" style="border: solid 2px #c99; background: #ffd; padding: 0.5em; margin-top: 1em">
+
+     <?php echo $MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'].$YUI_PUT_MISSING_Files; ?>
+      </div>
+<?php
+  }
+  else
+  {
+  ?>
+   <form id="jsadmin_form" name="store_settings" style="margin-top: 1em; display: true;" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
+	<?php echo $admin->getFTAN(); ?>
+   <table cellpadding="4" cellspacing="0" border="0">
+   <tr>
+	     <td colspan="2"><?php echo $MOD_JSADMIN['TXT_HEADING_B']; ?>:</td>
+   </tr>
+   <tr>
+	     <td width="20"><input type="checkbox" name="persist_order" id="persist_order" value="true" <?php echo $persist_order; ?>/></td>
+	     <td><label for="persist_order"><?php echo $MOD_JSADMIN['TXT_PERSIST_ORDER_B']; ?></label></td>
+   </tr>
+   <tr>
+	     <td width="20"><input type="checkbox" name="ajax_order_pages" id="ajax_order_pages" value="true" <?php echo $ajax_order_pages; ?>/></td>
+	     <td><label for="ajax_order_pages"><?php echo $MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B']; ?></label></td>
+   </tr>
+   <tr>
+	     <td width="20"><input type="checkbox" name="ajax_order_sections" id="ajax_order_sections" value="true" <?php echo $ajax_order_sections; ?>/></td>
+	     <td><label for="ajax_order_sections"><?php echo $MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B']; ?></label></td>
+   </tr>
+   <tr>
+	     <td>&nbsp;</td>
+	     <td>
+		   <input type="submit" name="save_settings" value="<?php echo $TEXT['SAVE']; ?>" />
+	    </td>
+   </tr>
+   </table>
+   </form>
+ <?php
+ }

Property changes on: tags/2.8.3/wb/modules/jsadmin/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/jsadmin_backend_include.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/jsadmin_backend_include.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/jsadmin_backend_include.php	(revision 1610)
@@ -0,0 +1,118 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// obtain the admin folder (e.g. /admin)
+$admin_folder = str_replace(WB_PATH, '', ADMIN_PATH);
+
+$JSADMIN_PATH = WB_URL.'/modules/jsadmin';
+$YUI_PATH = WB_URL.'/include/yui';
+$script = $_SERVER['SCRIPT_NAME'];
+
+if(strstr($script, $admin_folder."/pages/index.php"))
+	$page_type = 'pages';
+elseif(strstr($script, $admin_folder."/pages/sections.php"))
+	$page_type = 'sections';
+elseif(strstr($script, $admin_folder."/settings/tool.php")
+	&& isset($_REQUEST["tool"]) && $_REQUEST["tool"] == 'jsadmin')
+	$page_type = 'config';
+elseif(strstr($script, $admin_folder."/pages/modify.php"))
+	$page_type = 'modules';
+else
+	$page_type = '';
+
+if($page_type) {
+
+	require_once(WB_PATH.'/modules/jsadmin/jsadmin.php');
+
+	// Default scripts
+	$js_buttonCell = 5;
+	$js_scripts = Array();
+	$js_scripts[] = 'jsadmin.js';
+
+	if($page_type == 'modules') {
+		if(!get_setting('mod_jsadmin_persist_order', '1')) {   //Maybe Bug settings to negativ for persist , by Swen Uth
+			$js_scripts[] = 'restore_pages.js';
+  		}
+		if(get_setting('mod_jsadmin_ajax_order_pages', '1')) {
+			$js_scripts[] = 'dragdrop.js';
+			$js_buttonCell= 7; // This ist the Cell where the Button "Up" is , by Swen Uth
+		}
+	} elseif($page_type == 'pages') {
+		if(!get_setting('mod_jsadmin_persist_order', '1')) {   //Maybe Bug settings to negativ for persist , by Swen Uth
+			$js_scripts[] = 'restore_pages.js';
+  		}
+		if(get_setting('mod_jsadmin_ajax_order_pages', '1')) {
+			$js_scripts[] = 'dragdrop.js';
+			$js_buttonCell= 7; // This ist the Cell where the Button "Up" is , by Swen Uth
+		}
+	} elseif($page_type == 'sections') {
+		if(get_setting('mod_jsadmin_ajax_order_sections', '1')) {
+			$js_scripts[] = 'dragdrop.js';
+			if(SECTION_BLOCKS) {
+			$js_buttonCell= 5; }
+      else{ $js_buttonCell= 5; } // This ist the Cell where the Button "Up" is , by Swen Uth
+		}
+	} elseif($page_type == 'config') {
+		$js_scripts[] = 'tool.js';
+	} else {
+		$admin->print_error('PageTtype '.$TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+	}
+?>
+<script  type="text/javascript">
+<!--
+var JsAdmin = { WB_URL : '<?php echo WB_URL ?>', ADMIN_URL : '<?php echo ADMIN_URL ?>' };
+var JsAdminTheme = { THEME_URL : '<?php echo THEME_URL ?>' };
+//-->
+</script>
+<?php
+	// For variable cell structure in the tables of admin content
+	echo "<script type='text/javascript'>buttonCell=".$js_buttonCell.";</script>\n";   // , by Swen  Uth
+	// Check and Load the needed YUI functions  //, all by Swen Uth
+	$YUI_ERROR=false; // ist there an Error
+	$YUI_PUT ='';   // String with javascipt includes
+	$YUI_PUT_MISSING_Files=''; // String with missing files
+	reset($js_yui_scripts);
+	foreach($js_yui_scripts as $script) {
+		if(file_exists($WB_MAIN_RELATIVE_PATH.$script)){
+			$YUI_PUT=$YUI_PUT."<script src='".$WB_MAIN_RELATIVE_PATH.$script."' type='text/javascript'></script>\n"; // go and include
+		} else {
+			$YUI_ERROR=true;
+			$YUI_PUT_MISSING_Files=$YUI_PUT_MISSING_Files."- ".WB_URL.$script."\\n";   // catch all missing files
+		}
+	}
+/*  */
+	if(!$YUI_ERROR)
+	{
+		echo $YUI_PUT;  // no Error so go and include
+		// Load the needed functions
+		foreach($js_scripts as $script) {
+			echo "<script src='".$JSADMIN_PATH."/js/".$script."' type='text/javascript'></script>\n";
+		}
+	} else {
+	    echo "<script type='text/javascript'>alert('YUI ERROR!! File not Found!! > \\n".$YUI_PUT_MISSING_Files." so look in the include folder or switch Javascript Admin off!');</script>\n"; //, by Swen Uth
+	}
+
+} else {
+/*
+print '<pre><strong>function '.__FUNCTION__.'();</strong> line: '.__LINE__.' -> ';
+print_r( $page_type.'/'.$buttonCell ); print '</pre>'; // die();
+*/
+}

Property changes on: tags/2.8.3/wb/modules/jsadmin/jsadmin_backend_include.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/jsadmin.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/jsadmin.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/jsadmin.php	(revision 1610)
@@ -0,0 +1,57 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+function get_setting($name, $default = '') {
+	global $database;
+	$rs = $database->query("SELECT value FROM ".TABLE_PREFIX."mod_jsadmin WHERE name = '".$name."'");
+	if($row = $rs->fetchRow())
+		return $row['value'];
+	return
+		$default;
+}
+
+function save_setting($name, $value) {
+	global $database;
+
+	$prev_value = get_setting($name, false);
+
+	if($prev_value === false) {
+		$database->query("INSERT INTO ".TABLE_PREFIX."mod_jsadmin (name,value) VALUES ('$name','$value')");
+	} else {
+		$database->query("UPDATE ".TABLE_PREFIX."mod_jsadmin SET value = '$value' WHERE name = '$name'");
+	}
+}
+
+// the follwing variables to use and check existing the YUI
+$WB_MAIN_RELATIVE_PATH="../..";
+$YUI_PATH = '/include/yui';
+$js_yui_min = "-min";  // option for smaller code so faster
+$js_yui_scripts = Array();
+$js_yui_scripts[] = $YUI_PATH.'/yahoo/yahoo'.$js_yui_min.'.js';
+$js_yui_scripts[] = $YUI_PATH.'/event/event'.$js_yui_min.'.js';
+$js_yui_scripts[] = $YUI_PATH.'/dom/dom'.$js_yui_min.'.js';
+$js_yui_scripts[] = $YUI_PATH.'/connection/connection'.$js_yui_min.'.js';
+$js_yui_scripts[] = $YUI_PATH.'/dragdrop/dragdrop'.$js_yui_min.'.js';

Property changes on: tags/2.8.3/wb/modules/jsadmin/jsadmin.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/install.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/install.php	(revision 1610)
@@ -0,0 +1,57 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       (C) 2006, Stepan Riha, 2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// add new rows to table "settings"
+
+$msg = array ();
+$table = TABLE_PREFIX ."mod_jsadmin";
+$jsadminDefault = array (
+	array ( 'id' => '1','name' => 'mod_jsadmin_persist_order','value' => '1' ),
+	array ( 'id' => '2','name' => 'mod_jsadmin_ajax_order_pages','value' => '1' ),
+	array ( 'id' => '3','name' => 'mod_jsadmin_ajax_order_sections','value' => '1' ),
+);
+
+$database->query("DROP TABLE IF EXISTS `$table`");
+$sql = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_jsadmin` ('
+	. ' `id` INT(11) NOT NULL DEFAULT \'0\','
+	. ' `name` VARCHAR(255) NOT NULL DEFAULT \'0\','
+	. ' `value` INT(11) NOT NULL DEFAULT \'0\','
+	. ' PRIMARY KEY ( `id` )'
+	. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+
+if($database->query($sql) ) {
+
+	for($x=0;$x<sizeof($jsadminDefault); $x++) {
+		$sql  = 'INSERT INTO '.$table.' SET ';
+		$sql .= '`id`=\''.$jsadminDefault[$x]['id'].'\', ';
+		$sql .= '`name`=\''.$jsadminDefault[$x]['name'].'\', ';
+		$sql .= '`value`=\''.$jsadminDefault[$x]['value'].'\' ';
+		if(!$database->query($sql) ) { $msg[] = $database->get_error();}
+	}
+} else {
+	$msg[] = $database->get_error();
+}
+

Property changes on: tags/2.8.3/wb/modules/jsadmin/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/upgrade.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         jsadmin
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_jsadmin';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/README.txt
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/README.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/README.txt	(revision 1610)
@@ -0,0 +1,65 @@
+Javscript Admin
+
+Release 1.2
+ On Sourcecode of
+(C) Copyright 2006 Stepan Riha (www.nonplus.net)
+* -----------------------------------------------------------------------------------------
+*	MODIFICATION HISTORY:
+*   by Swen Uth; 01/24/2008
+*   + Update to 1.2
+*   + Update to Website Baker (include/yui)-> YUI to Version 2.4.1
+*   + take the YUI folder to wb/include/
+*   + Website Baker 2.7 Kompatible
+*   + Multilingual
+*   + initial release of the English language file
+*   + initial release of the German language file
+*   + include the Option for backend.cs
+*   + include the option for backend.js
+*   + renamed footer.php to jsadmin_backend_include.php for a better understanding for integration and development
+*   + INCLUDE ERRORHANDLING for missing YUI - Files
+*   + the Array $js_yui_scripts are defined in the jsadmin.php for better development
+* -----------------------------------------------------------------------------------------
+*
+______________________________________________________________
+
+DESCRIPTION
+
+This tool module adds Javascript functionality to the Website Baker Admin to
+improve some of the UI interactions.
+
+Portions of this module use scripts from the Yahoo! UI Library
+You can find it in the WB/include folder
+
+	http://developer.yahoo.com/yui/
+	
+______________________________________________________________
+
+REQUIREMENTS
+
+This module is supported on Website Baker 2.7 and later.
+
+______________________________________________________________
+
+INSTALLATION
+
+The module includes the following files:
+
+	!!! footer.php is canceled -> renamed to jsadmin_backend_include.php
+	images/busy.gif
+	images/failure.gif
+	images/success.gif
+	index.php
+	info.php
+	js/dragdrop.js
+	js/jsadmin.js
+	js/restore_pages.js
+	js/tool.js
+ 	+ languages/EN.php
+	+ languages/DE.php
+	jsadmin.php
+	move_to.php
+	README.txt
+	tool.php
+
+______________________________________________________________
+

Property changes on: tags/2.8.3/wb/modules/jsadmin/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/index.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       (C) 2006, Stepan Riha
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/FTAN_SUPPORTED
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/FTAN_SUPPORTED	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/FTAN_SUPPORTED	(revision 1610)
@@ -0,0 +1 @@
+This module supports the FTAN-System
\ No newline at end of file
Index: tags/2.8.3/wb/modules/jsadmin/backend.css
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/backend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/backend.css	(revision 1610)
@@ -0,0 +1,28 @@
+/* Fix for funky spacing on page listing */
+.pages_list li {
+	margin-bottom: -2px;
+}
+
+body.jsadmin_busy td.content {
+	background: url(images/busy.gif) 4px 4px no-repeat;
+}
+
+body.jsadmin_success td.content {
+	background: url(images/success.gif) 4px 4px no-repeat;
+}
+
+body.jsadmin_failure td.content {
+	background: url(images/failure.gif) 4px 4px no-repeat;
+}
+
+.jsadmin_drag {
+	cursor: move;
+}
+
+.jsadmin_drag a, .jsadmin_drag input, .jsadmin_drag select {
+	cursor: pointer;
+}
+
+ul.jsadmin_drag_area {
+	border: solid 1px #99f;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/backend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/js/dragdrop.js
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/js/dragdrop.js	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/js/dragdrop.js	(revision 1610)
@@ -0,0 +1,383 @@
+// Copyright 2006 Stepan Riha
+// www.nonplus.net
+// $Id: dragdrop.js 2 2006-04-18 03:04:39Z stepan $
+/**
+* -----------------------------------------------------------------------------------------
+*  MODIFICATON FOR THE JSADMIN MODULE
+* -----------------------------------------------------------------------------------------
+*	MODIFICATION HISTORY:
+*   Swen Uth; 01/24/2008
+*   +INCLUDE VARIABLE buttonCell FOR ADAPTATION TO LATER LAYOUTS
+*
+**/
+JsAdmin.DD = {};
+JsAdmin.movable_rows = {};
+
+JsAdmin.init_drag_drop = function() {
+
+	// There seems to be many different ways the ordering is set up
+	//		pages/index.php has UL/LI containing tables with single row
+	//		pages/sections.php has a TABLE with many rows
+	//		pages/modify.php for manuals is completely weird...
+	// So we only want to deal with pages & sections...
+
+	var page_type = '';
+	var is_tree = false;
+
+	if(document.URL.indexOf(JsAdmin.ADMIN_URL + "/pages/index.php") > -1) {
+		page_type = 'pages';
+		is_tree = true;
+
+		// This page uses duplicate IDs and incorrectly nested lists:
+		// <ul id="p1">
+		//		<li id="p1"><table /></li>
+		//		<ul>... sub items ...</ul>
+		// </ul>
+		//
+		// We need to fix that to the following:
+		// <ul id="p1">
+		//		<li id="uniqueID"><table />
+		//		<ul>... sub items ...</ul>
+		//		</li>
+		// </ul>
+
+		// Stash all UL ids
+		var ids = {};
+		var lists = document.getElementsByTagName('ul');
+		for(var i = 0; i < lists.length; i++) {
+			if(lists[i].id) {
+				ids[lists[i].id] = true;
+			}
+		}
+
+		// Now fix all LIs
+		var items = document.getElementsByTagName('li');
+ 		for(var i = 0; i < items.length; i++) {
+			var item = items[i];
+
+			// Fix duplicate ID
+			if(ids[item.id]) {
+				item.id =  JsAdmin.util.getUniqueId();
+			}
+
+			// Fix UL parented by UL
+			var ul = JsAdmin.util.getNextSiblingNode(item, 'ul');
+			if(ul) {
+				var lis = ul.getElementsByTagName('li');
+ 				if(!lis || lis.length == 0) {
+					// Remove list without items
+					ul.parentNode.removeChild(ul);
+				} else {
+					// Make list child of list item
+					item.appendChild(ul);
+				}
+			}
+		}
+
+	} else if(document.URL.indexOf("/admin/pages/sections.php") > 0) {
+		page_type = 'sections';
+	} else if(document.URL.indexOf("/admin/pages/modify.php") > 0) {
+		page_type = 'modules';
+		is_tree = true;
+		// Stash all UL ids
+		var ids = {};
+		var lists = document.getElementsByTagName('ul');
+		for(var i = 0; i < lists.length; i++) {
+			if(lists[i].id) {
+				ids[lists[i].id] = true;
+			}
+		}
+
+		// Now fix all LIs
+		var items = document.getElementsByTagName('li');
+ 		for(var i = 0; i < items.length; i++) {
+			var item = items[i];
+
+			// Fix duplicate ID
+			if(ids[item.id]) {
+				item.id =  JsAdmin.util.getUniqueId();
+			}
+
+			// Fix UL parented by UL
+			var ul = JsAdmin.util.getNextSiblingNode(item, 'ul');
+			if(ul) {
+				var lis = ul.getElementsByTagName('li');
+ 				if(!lis || lis.length == 0) {
+					// Remove list without items
+					ul.parentNode.removeChild(ul);
+				} else {
+					// Make list child of list item
+					item.appendChild(ul);
+				}
+			}
+		}
+
+	} else {
+		// We don't do any other pages
+		return;
+		// page_type = 'modules';
+	}
+
+	var links = document.getElementsByTagName('a');
+	var reImg = /(.*)move_(down|up)\.php(.*)/;
+
+	for(var i = 0; i < links.length; i++) {
+		var link = links[i];
+		var href = link.href || '';
+		var match = href.match(reImg);
+		if(!match) {
+			continue;
+		}
+		var url = match[1];
+		var op = match[2];
+		var params = match[3];
+		var tr = JsAdmin.util.getAncestorNode(link, 'tr');
+		var item = is_tree ? JsAdmin.util.getAncestorNode(tr, 'li') : tr;
+		if(!item) {
+			continue;
+		}
+
+		// Make sure we have a unique id
+		if(!item.id || YAHOO.util.Dom.get(item.id) != item) {
+			item.id = JsAdmin.util.getUniqueId();
+		}
+
+		if(is_tree) {
+			var parent = JsAdmin.util.getAncestorNode(item, 'ul');
+			new JsAdmin.DD.liDDSwap(item.id, (parent && parent.id) ? parent.id : 'top');
+		} else {
+			new JsAdmin.DD.trDDSwap(item.id);
+		}
+		item.className += " jsadmin_drag";
+
+		this.movable_rows[item.id] = { item: item, tr : tr, url : url, params : params };
+	}
+};
+
+//==========================================================================
+// Drag-drop utils
+//==========================================================================
+
+JsAdmin.DD.dragee = null;
+
+JsAdmin.DD.addMoveButton = function(tr, cell, op) {
+	if(op == 'down') {
+		cell++;
+	}
+	var item = JsAdmin.movable_rows[tr.id];
+	if(!JsAdmin.util.isNodeType(tr, 'tr')) {
+		var rows = tr.getElementsByTagName('tr');
+		tr = rows[0];
+	}
+
+	var html = '<a href="' + item.url + 'move_' + op + '.php' + item.params
+				+ '"><img src="' + JsAdminTheme.THEME_URL + '/images/' + op
+				+ '_16.png" border="0" alt="' + op + '" /></a>';
+	tr.cells[cell].innerHTML = html;
+};
+
+JsAdmin.DD.deleteMoveButton = function(tr, cell, op) {
+	if(op == 'down') {
+		cell++;
+	}
+	if(!JsAdmin.util.isNodeType(tr, 'tr')) {
+		var rows = tr.getElementsByTagName('tr');
+		tr = rows[0];
+	}
+	
+	tr.cells[cell].innerHTML = "";
+};
+
+//==========================================================================
+// Drag-drop handling for table rows
+//==========================================================================
+
+JsAdmin.DD.trDDSwap = function(id, sGroup) {
+    this.init(id, sGroup);
+	this.addInvalidHandleType('a');
+	this.addInvalidHandleType('input');
+	this.addInvalidHandleType('select');
+    this.initFrame();
+	this.buttonCell = buttonCell;//, by Swen Uth
+	
+	// For Connection
+	this.scope = this;
+};
+
+JsAdmin.DD.trDDSwap.prototype = new YAHOO.util.DDProxy();
+
+JsAdmin.DD.trDDSwap.prototype.startDrag = function(x, y) {
+	if (JsAdmin.DD.dragee != this) {
+		this.rowIndex = this.getEl().rowIndex;
+		this.numRows = this.getEl().parentNode.rows.length;
+		this.opacity = YAHOO.util.Dom.getStyle(this.getEl(), "opacity");
+		this.background = YAHOO.util.Dom.getStyle(this.getEl(), "background");
+		YAHOO.util.Dom.setStyle(this.getEl(), "opacity", 0.5);
+		YAHOO.util.Dom.setStyle(this.getEl(), "background", "transparent");
+	}
+	JsAdmin.DD.dragee = this;
+};
+
+JsAdmin.DD.trDDSwap.prototype.onDragEnter = function(e, id) {
+  var elt = id ? YAHOO.util.Dom.get(id) : null;
+	var item = JsAdmin.movable_rows[this.getEl().id];
+	var rows = item.tr.parentNode.rows;
+	var wasFirst = item.tr.rowIndex == 1;
+	var wasLast = item.tr.rowIndex == this.numRows - 2;
+	if(elt.rowIndex < item.tr.rowIndex) {
+		elt.parentNode.insertBefore(item.tr, elt);
+	} else {
+		elt.parentNode.insertBefore(elt, item.tr);
+	}
+	// Fixup buttons
+	var isFirst = item.tr.rowIndex == 1;
+	var isLast = item.tr.rowIndex == this.numRows - 2;
+
+	if(wasFirst != isFirst) {
+		if(isFirst) {
+			JsAdmin.DD.deleteMoveButton(item.tr, this.buttonCell, 'up');
+			JsAdmin.DD.addMoveButton(JsAdmin.util.getNextSiblingNode(item.tr), this.buttonCell, 'up');
+		} else {
+			JsAdmin.DD.addMoveButton(item.tr, this.buttonCell, 'up');
+			JsAdmin.DD.deleteMoveButton(rows[1], this.buttonCell, 'up');
+		}
+	}
+	if(wasLast != isLast) {
+		if(isLast) {
+			JsAdmin.DD.deleteMoveButton(item.tr, this.buttonCell, 'down');
+			JsAdmin.DD.addMoveButton(JsAdmin.util.getPreviousSiblingNode(item.tr), this.buttonCell, 'down');
+		} else {
+			JsAdmin.DD.addMoveButton(item.tr, this.buttonCell, 'down');
+			JsAdmin.DD.deleteMoveButton(rows[rows.length-2], this.buttonCell, 'down');
+		}
+	}
+
+	this.DDM.refreshCache(this.groups);
+};
+
+JsAdmin.DD.trDDSwap.prototype.endDrag = function(e) {
+	YAHOO.util.Dom.setStyle(this.getEl(), "opacity", this.opacity);
+	YAHOO.util.Dom.setStyle(this.getEl(), "background", "#f0f0f0");
+	
+	JsAdmin.DD.dragee = null;
+
+	var newIndex = this.getEl().rowIndex;
+	if(newIndex != this.rowIndex) {
+		var url = JsAdmin.WB_URL + "/modules/jsadmin/move_to.php";
+		url += JsAdmin.movable_rows[this.getEl().id].params + "&position=" + newIndex;
+		document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/g, "$1") + " jsadmin_busy";
+		YAHOO.util.Connect.asyncRequest('GET', url, this, null);
+	}
+};
+
+JsAdmin.DD.trDDSwap.prototype.success = function(o) {
+	document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/g, "$1") + " jsadmin_success";
+};
+
+JsAdmin.DD.trDDSwap.prototype.failure = function(o) {
+	document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/, "$1") + " jsadmin_failure";
+};
+
+//==========================================================================
+// Drag-drop handling for list items
+//==========================================================================
+
+JsAdmin.DD.liDDSwap = function(id, sGroup) {
+    this.init(id, sGroup);
+	this.addInvalidHandleType('a');
+	this.addInvalidHandleType('input');
+	this.addInvalidHandleType('select');
+    this.initFrame();
+ this.buttonCell = buttonCell;//, by Swen Uth
+	this.counter = 0;
+};
+
+JsAdmin.DD.liDDSwap.prototype = new YAHOO.util.DDProxy();
+
+JsAdmin.DD.liDDSwap.prototype.startDrag = function(x, y) {
+	// On IE, startDrag is sometimes called twice
+	if(JsAdmin.DD.dragee && JsAdmin.DD.dragee != this) {
+		JsAdmin.DD.dragee.endDrag(null);
+	}
+	if(JsAdmin.DD.dragee != this) {
+		this.rowIndex = JsAdmin.util.getItemIndex(this.getEl());
+		this.opacity = YAHOO.util.Dom.getStyle(this.getEl(), "opacity");
+		this.background = YAHOO.util.Dom.getStyle(this.getEl(), "background");
+		YAHOO.util.Dom.setStyle(this.getEl(), "opacity", 0.5);
+
+		this.list = JsAdmin.util.getAncestorNode(this.getEl(), "ul");
+		this.list.className += " jsadmin_drag_area";
+	}
+	JsAdmin.DD.dragee = this;
+};
+
+JsAdmin.DD.liDDSwap.prototype.onDragEnter = function(e, id) {
+	// Swap with other element
+	var elt = id ? YAHOO.util.Dom.get(id) : null;
+	var item = JsAdmin.movable_rows[this.getEl().id];
+	var eltRowIndex = JsAdmin.util.getItemIndex(elt);
+	var rowIndex = JsAdmin.util.getItemIndex(this.getEl());
+	var wasFirst = !JsAdmin.util.getPreviousSiblingNode(this.getEl());
+	var wasLast = !JsAdmin.util.getNextSiblingNode(this.getEl());
+
+	if(eltRowIndex < rowIndex) {
+		elt.parentNode.insertBefore(this.getEl(), elt);
+	} else {
+		elt.parentNode.insertBefore(elt, this.getEl());
+	}
+	// Fixup buttons
+	var isFirst = !JsAdmin.util.getPreviousSiblingNode(this.getEl());
+	var isLast = !JsAdmin.util.getNextSiblingNode(this.getEl());
+
+	if(wasFirst != isFirst) {
+		if(isFirst) {
+			JsAdmin.DD.deleteMoveButton(item.tr, this.buttonCell, 'up');
+			JsAdmin.DD.addMoveButton(JsAdmin.util.getNextSiblingNode(item.item), this.buttonCell, 'up');
+		} else {
+			JsAdmin.DD.addMoveButton(item.item, this.buttonCell, 'up');
+			var first, prev = JsAdmin.util.getPreviousSiblingNode(item.item);
+			while(prev) {
+				first = prev;
+				prev = JsAdmin.util.getPreviousSiblingNode(prev);
+			}
+			JsAdmin.DD.deleteMoveButton(JsAdmin.movable_rows[first.id].tr, this.buttonCell, 'up');
+		}
+	}
+	if(wasLast != isLast) {
+		if(isLast) {
+			JsAdmin.DD.deleteMoveButton(item.tr, this.buttonCell, 'down');
+			JsAdmin.DD.addMoveButton(JsAdmin.util.getPreviousSiblingNode(item.item), this.buttonCell, 'down');
+		} else {
+			JsAdmin.DD.addMoveButton(item.item, this.buttonCell, 'down');
+			var last, next = JsAdmin.util.getNextSiblingNode(item.item);
+			while(next) {
+				last = next;
+				next = JsAdmin.util.getNextSiblingNode(next);
+			}
+			JsAdmin.DD.deleteMoveButton(JsAdmin.movable_rows[last.id].tr, this.buttonCell, 'down');
+		}
+	}
+
+	this.DDM.refreshCache(this.groups);
+};
+
+JsAdmin.DD.liDDSwap.prototype.endDrag = function(e) {
+	YAHOO.util.Dom.setStyle(this.getEl(), "opacity", this.opacity);
+	this.list.className = String(this.list.className).replace(/(\s*)jsadmin_([a-z]+)/g, "$1");
+	JsAdmin.DD.dragee = null;
+	var newIndex = JsAdmin.util.getItemIndex(this.getEl());
+	if(newIndex != this.rowIndex) {
+		var url = JsAdmin.WB_URL + "/modules/jsadmin/move_to.php";
+		url += JsAdmin.movable_rows[this.getEl().id].params + "&position=" + (newIndex+1);
+		document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/g, "$1") + " jsadmin_busy";
+		YAHOO.util.Connect.asyncRequest('GET', url, this, null);
+	}
+};
+
+JsAdmin.DD.liDDSwap.prototype.success = function(o) {
+	document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/g, "$1") + " jsadmin_success";
+};
+
+JsAdmin.DD.liDDSwap.prototype.failure = function(o) {
+	document.body.className = String(document.body.className).replace(/(\s*)jsadmin_([a-z]+)/, "$1") + " jsadmin_failure";
+};

Property changes on: tags/2.8.3/wb/modules/jsadmin/js/dragdrop.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/js/index.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/js/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/js/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/js/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/js/jsadmin.js
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/js/jsadmin.js	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/js/jsadmin.js	(revision 1610)
@@ -0,0 +1,162 @@
+// Copyright 2006 Stepan Riha
+// www.nonplus.net
+// $Id: jsadmin.js 2 2006-04-18 03:04:39Z stepan $
+
+// Initialize JsAdmin when page loads
+JsAdmin.loadHandler = function(ev, self) {
+	if(self.init_tool) {
+		self.init_tool();
+	}
+	if(self.restore_toggled) {
+		self.restore_toggled();
+		YAHOO.util.Event.addListener(window, 'unload', JsAdmin.unloadHandler, self, false);
+	}
+	if(self.init_drag_drop) {
+		self.init_drag_drop();
+	}
+};
+
+// Store JsAdmin cookies when page unloads
+JsAdmin.unloadHandler = function(ev, self) {
+	self.save_toggled();
+};
+
+JsAdmin.rowMouseOverHandler = function(ev, tr) {
+	YAHOO.util.Dom.setStyle(tr, 'background' ,'#fea');
+};
+
+JsAdmin.rowMouseOutHandler = function(ev, tr) {
+	YAHOO.util.Dom.setStyle(tr, 'background' ,'');
+};
+
+YAHOO.util.Event.addListener(window, 'load', JsAdmin.loadHandler, JsAdmin, false);
+
+JsAdmin.util = {
+	createCookie : function(name,value,days)
+	{
+		if (days)
+		{
+			var date = new Date();
+			date.setTime(date.getTime()+(days*24*60*60*1000));
+			var expires = "; expires="+date.toGMTString();
+		}
+		else var expires = "";
+		document.cookie = name+"="+value+expires+"; path=/";
+	},
+
+	readCookie : function(name)
+	{
+		var nameEQ = name + "=";
+		var ca = document.cookie.split(';');
+		for(var i=0;i < ca.length;i++)
+		{
+			var c = ca[i];
+			while (c.charAt(0)==' ') c = c.substring(1,c.length);
+			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+		}
+		return null;
+	},
+
+	eraseCookie : function(name)
+	{
+		this.createCookie(name,"",-1);
+	},
+
+	next_id : 1,
+	getUniqueId : function () {
+		var id;
+		do {
+			id = 'jsadmin_id_' + this.next_id++;
+		} while(YAHOO.util.Dom.get(id));
+		return id;
+	},
+	
+	isNodeType : function(elt, type) {
+		if(elt) {
+			return elt.nodeName.toUpperCase() == type.toUpperCase();
+		}
+		return false;
+	},
+
+	getItemIndex : function (elt) {
+		var type = elt.nodeName;
+		var index = 0;
+		for(var sib = elt.previousSibling; sib; sib = sib.previousSibling) {
+			if(sib.nodeName == type) {
+				index++;
+			}
+		}
+		return index;
+	},
+	
+	getAncestorNode : function(elt, type) {
+		if(elt) {
+			if(type) {
+				type = type.toUpperCase();
+			} else {
+				type = elt.nodeName.toUpperCase();
+			}
+			elt = elt.parentNode;
+			while(elt && elt.nodeName.toUpperCase() != type) {
+				elt = elt.parentNode;
+			}
+		}
+		return elt;
+	},
+	
+	getNextSiblingNode : function (elt, type) {
+		if(elt) {
+			if(type) {
+				type = type.toUpperCase();
+			} else {
+				type = elt.nodeName.toUpperCase();
+			}
+			elt = elt.nextSibling;
+			while(elt && elt.nodeName.toUpperCase() != type) {
+				elt = elt.nextSibling;
+			}
+		}
+		return elt;
+	},
+
+	matchNextSibling : function (elt, re) {
+		if(elt) {
+			elt = elt.nextSibling;
+			while(elt && !elt.nodeName.match(re)) {
+				elt = elt.nextSibling;
+			}
+		}
+		return elt;
+	},
+
+	getPreviousSiblingNode : function (elt, type) {
+		if(elt) {
+			if(type) {
+				type = type.toUpperCase();
+			} else {
+				type = elt.nodeName.toUpperCase();
+			}
+			elt = elt.previousSibling;
+			while(elt && elt.nodeName.toUpperCase() != type) {
+				elt = elt.previousSibling;
+			}
+		}
+		return elt;
+	},
+
+	insertBefore : function(parent, newChild, beforeChild) {
+		if(beforeChild) {
+			parent.insertBefore(newChild, beforeChild);
+		} else {
+			parent.appendChild(newChild);
+		}
+	},
+
+	insertAfter : function(parent, newChild, afterChild) {
+		if(afterChild) {
+			this.insertBefore(parent, newChild, afterChild.nextSibling);
+		} else {
+			this.insertBefore(parent, newChild, parent.firstChild);
+		}
+	}
+};

Property changes on: tags/2.8.3/wb/modules/jsadmin/js/jsadmin.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/js/tool.js
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/js/tool.js	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/js/tool.js	(revision 1610)
@@ -0,0 +1,14 @@
+// Copyright 2006 Stepan Riha
+// www.nonplus.net
+// $Id: tool.js 2 2006-04-18 03:04:39Z stepan $
+
+JsAdmin.init_tool = function() {
+	var instruction = YAHOO.util.Dom.get('jsadmin_install');
+	if(instruction) {
+		instruction.style.display = 'none';
+	}
+	var form = YAHOO.util.Dom.get('jsadmin_form');
+	if(form) {
+		form.style.display = '';
+	}
+};

Property changes on: tags/2.8.3/wb/modules/jsadmin/js/tool.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/js/restore_pages.js
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/js/restore_pages.js	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/js/restore_pages.js	(revision 1610)
@@ -0,0 +1,78 @@
+// Copyright 2006 Stepan Riha
+// www.nonplus.net
+// $Id: restore_pages.js 2 2006-04-18 03:04:39Z stepan $
+
+// Array of ids that can be toggled using toggle_visibility()
+JsAdmin.toggled_ids = function() {
+	var links = document.getElementsByTagName('a');
+	var ids = [];
+	var reId = /toggle_visibility\s*\(\s*\'([^\']+)/;
+
+	for(var i = 0; i < links.length; i++) {
+		var href = links[i].href || '';
+		var match = href.match(reId);
+		if(!match) {
+			continue;
+		}
+		var id = match[1];
+		ids.push(id);
+	}
+
+	if(ids.length > 0) {
+		return ids;
+	} else {
+		return false;
+	}
+};
+
+// Expand sections stored in the wb_jsadmin_pages cookie
+JsAdmin.restore_toggled = function() {
+	var ids = this.toggled_ids();
+
+	if(!ids) {
+		return;
+	}
+
+	var saved = this.util.readCookie('wb_jsadmin_pages');
+	if(!saved) {
+		return;
+	}
+
+	var reNum = /(\d+)/;
+
+	saved = ',' + saved + ',';
+
+	for(var i = ids.length-1; i >= 0; i--) {
+		var id = ids[i];
+		if(saved.indexOf(',' + id + ',') >= 0) {
+			toggle_visibility(id);
+			var match = id.match(reNum);
+			if(match)
+				toggle_plus_minus(match[1]);
+		}
+	}
+};
+
+// Store expanded section ids in the wb_jsadmin_pages cookie
+JsAdmin.save_toggled = function() {
+
+	var ids = this.toggled_ids();
+
+	if(!ids) {
+		return;
+	}
+
+	var visible = [];
+	for(var i = 0; i < ids.length; i++) {
+		var id = ids[i];
+		var elt = YAHOO.util.Dom.get(id);
+		var display = elt.style.display;
+		if(display == 'block') {
+			visible.push(ids[i]);
+		}
+	}
+
+	var ids = visible.join(",");
+	this.util.createCookie('wb_jsadmin_pages', ids, 14);
+};
+

Property changes on: tags/2.8.3/wb/modules/jsadmin/js/restore_pages.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/move_to.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/move_to.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/move_to.php	(revision 1610)
@@ -0,0 +1,98 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         JsAdmin
+ * @author          WebsiteBaker Project, modified by Swen Uth for Website Baker 2.7
+ * @copyright       (C) 2006, Stepan Riha
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require('../../config.php');
+
+if(isset($_GET['page_id']) AND is_numeric($_GET['page_id']) AND is_numeric(@$_GET['position'])) {
+	$position = (int)$_GET['position'];
+
+	// Include WB admin wrapper script
+	$update_when_modified = true;
+	// Tells script to update when this page was last updated
+	require(WB_PATH.'/modules/admin.php');
+
+if( isset($_GET['file_id']) || (isset($_GET['group_id'])) ) {
+	if(isset($_GET['group_id']) && is_numeric($_GET['group_id'])) {
+		$id = (int)$_GET['group_id'];
+		$id_field = 'group_id';
+		$table = TABLE_PREFIX.'mod_download_gallery_groups';
+		$common_field = 'section_id';
+	} else {
+		$id = (int)$_GET['file_id'];
+		$id_field = 'file_id';
+		$table = TABLE_PREFIX.'mod_download_gallery_files';
+		$common_field = 'group_id';
+	}
+} elseif( isset($_GET['page_id']) || (isset($_GET['section_id'])) ) {
+	// Get common fields
+	if(isset($_GET['section_id']) && is_numeric($_GET['section_id'])) {
+		$page_id = (int)$_GET['page_id'];
+		$id = (int)$_GET['section_id'];
+		$id_field = 'section_id';
+		$common_field = 'page_id';
+		$table = TABLE_PREFIX.'sections';
+	} else {
+		$id = (int)$_GET['page_id'];
+		$id_field = 'page_id';
+		$common_field = 'parent';
+		$table = TABLE_PREFIX.'pages';
+	}
+}
+
+	// Get current index
+	$sql = <<<EOT
+SELECT $common_field, position FROM $table WHERE $id_field = $id
+EOT;
+	echo "$sql<br>";
+	$rs = $database->query($sql);
+	if($row = $rs->fetchRow()) {
+		$common_id = $row[$common_field];
+		$old_position = $row['position'];
+	}
+	echo "$old_position<br>";
+	if($old_position == $position)
+		return;
+	
+	// Build query to update affected rows
+	if($old_position < $position)
+		$sql = <<<EOT
+UPDATE $table SET position = position - 1
+	WHERE position > $old_position AND position <= $position
+		AND $common_field = $common_id
+EOT;
+	else
+		$sql = <<<EOT
+UPDATE $table SET position = position + 1
+	WHERE position >= $position AND position < $old_position
+		AND $common_field = $common_id
+EOT;
+	echo "<pre>$sql</pre>";
+	$database->query($sql);
+
+	// Build query to update specified row
+	$sql = <<<EOT
+UPDATE $table SET position = $position
+	WHERE $id_field = $id
+EOT;
+	echo "<pre>$sql</pre>";
+	$database->query($sql);
+} else {
+	die("Missing parameters");
+	header("Location: index.php");
+	exit(0);
+}

Property changes on: tags/2.8.3/wb/modules/jsadmin/move_to.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/DA.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B'] = 'V&aelig;lg de Javascript funktioner, du vil g&oslash;re aktive';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] = 'Husk udvidede sider';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] = 'Byt om p&aring; sider ved hj&aelig;lp af  drag-and-drop';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = 'Byt om p&aring; sektioner ved hj&aelig;lp af  drag-and-drop';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] = '<h1>Fejl</h1><p>JavaScript Admin kr&aelig;ver YUI (Yahoo User Interface) framework.<br />F&oslash;lgende filer er n&oslash;dvendige for at f&aring; Javascript Admin til at virke som forventet:<br /><br />';
+
+?>

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/FR.php	(revision 1610)
@@ -0,0 +1,38 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Ce module am&eacute;liore l&apos;interactivit&eacute; de l&apos;interface d&apos;administration gr&acirc;ce &agrave; l&apos;ajout de fonctionnalit&eacute;s javascript am&eacute;lior&eacute;es. Utilise la librairie YahooUI.';
+
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B'] 				= 'Veuillez s&eacute;lectionner la fonctionnalit&eacute; Javascript &agrave; activer';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] 		= 'Garder en m&eacute;moire l&apos;arborescence des pages';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] 	= 'R&eacute;organisation des pages gr&acirc;ce au glisser-d&eacute;poser';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = 'R&eacute;organisation des sections gr&acirc;ce au glisser-d&eacute;poser';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] 	= '<h1>Erreur</h1><p>JavaScript Admin a besoin du framework YUI (Yahoo User Interface).<br />Les fichiers suivants sont requis pour que Javascript Admin fonctionne correctement:<br /><br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/NL.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B'] 				= 'Kies de Javascript functies die je wenst te gebruiken';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] 		= "Onthouden van uitgeklapte pagina's";
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] 	= "Klikken-en-slepen om pagina's te herordenen";
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = 'Klikken-en-slepen om secties te herordenen';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] 	= '<h1>Fout</h1><p>JavaScript Admin heeft de YUI (Yahoo User Interface) code nodig.<br />De volgende bestanden zijn nodig om Javascript Admin te laten werken:<br /><br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/NO.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+  -----------------------------------------------------------------------------------------
+  NORSK LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+  -----------------------------------------------------------------------------------------
+   */
+  
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B']				= 'Venligst velg de  Javascript funksjonene du vil aktivere';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B']			= 'Husk udtvidede grener i side oversikten';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B']		= 'Ordne siderekkef&oslash;lge ved &aring; bruke Dra og Slipp';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B']	= 'Ordne seksjonsrekkef&oslash;lge ved &aring; bruke Dra og Slipp';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B']		= '<h1>Feil</h1><p>JavaScript Admin krever  YUI (Yahoo User Interface) .<br />Det er behov for f&oslash;lgende filer for at Javascript Admin skal funger som forventet:<br /><br />';
+  
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/EN.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  ENGLISH LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B'] 				= 'Please choose the Javascript functions you want to enable';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] 		= 'Remember expanded pages';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] 	= 'Reorder pages by the use of drag-and-drop';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = 'Reorder sections by the use of drag-and-drop';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] 	= '<h1>Error</h1><p>JavaScript Admin requires the YUI (Yahoo User Interface) framework.<br />The following files are required to get Javascript Admin work as expected:<br /><br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/RU.php	(revision 1610)
@@ -0,0 +1,36 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project http://www.websitebaker.org/
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  RUSSIAN LANGUAGE FILE FOR THE ADDON: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_JSADMIN['TXT_HEADING_B'] 				= '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1074;&#1099;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077; Javascript &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1080;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1074;&#1099; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1074;&#1082;&#1083;&#1102;&#1095;&#1080;&#1090;&#1100;';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] 		= '&#1047;&#1072;&#1087;&#1086;&#1084;&#1080;&#1085;&#1072;&#1090;&#1100; &#1087;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1080; &#1074;&#1080;&#1076; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1074; &#1084;&#1077;&#1085;&#1102;';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] 	= '&#1048;&#1079;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; &#1087;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; drag-and-drop';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; &#1087;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1089;&#1077;&#1082;&#1094;&#1080;&#1081;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; drag-and-drop';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] 	= '<h1>&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;</h1><p>JavaScript Admin &#1090;&#1088;&#1077;&#1073;&#1091;&#1077;&#1090; YUI (Yahoo User Interface) framework.<br />&#1057;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1080;&#1077; &#1092;&#1072;&#1081;&#1083;&#1099; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099; &#1076;&#1083;&#1103; &#1082;&#1086;&#1088;&#1088;&#1077;&#1082;&#1090;&#1085;&#1086;&#1081; &#1088;&#1072;&#1073;&#1086;&#1090;&#1099; Javascript Admin:<br /><br />';
+
+?>

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/languages/DE.php	(revision 1610)
@@ -0,0 +1,39 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: JAVASCRIPT ADMIN
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description 	= 'Dieses Modul stellt Javascript Funktionen f&uuml;r die Website Baker Benutzeroberfl&auml;che zur Verf&uuml;gung. Verwendet das YahooUI Javascript Framework.';
+
+// Ueberschriften und Textausgaben
+$MOD_JSADMIN['TXT_HEADING_B'] 				= 'Bitte w&auml;hlen Sie die gew&uuml;nschten Javascript Funktionen aus';
+$MOD_JSADMIN['TXT_PERSIST_ORDER_B'] 		= 'Ge&ouml;ffneten Seitenbaum merken';
+$MOD_JSADMIN['TXT_AJAX_ORDER_PAGES_B'] 	= 'Sortierung von Seiten per "drag-and-drop" erlauben';
+$MOD_JSADMIN['TXT_AJAX_ORDER_SECTIONS_B'] = 'Sortierung von Abschnitten per "drag-and-drop" erlauben';
+$MOD_JSADMIN['TXT_ERROR_INSTALLINFO_B'] 	= '<h1>Fehler</h1><p>JavaScript Admin ben&ouml;tigt das YUI (Yahoo User Interface) Framework.<br />Folgende Dateien werden f&uuml;r das Modul ben&ouml;tigt:<br /><br />';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/images/index.php
===================================================================
--- tags/2.8.3/wb/modules/jsadmin/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/jsadmin/images/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/jsadmin/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/images/busy.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/jsadmin/images/busy.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/images/failure.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/jsadmin/images/failure.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/jsadmin/images/success.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/modules/jsadmin/images/success.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/info.php
===================================================================
--- tags/2.8.3/wb/modules/code/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/info.php	(revision 1610)
@@ -0,0 +1,35 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: info.php 1389 2011-01-16 12:39:50Z FrankH $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/info.php $
+ * @lastmodified    $Date: 2011-01-16 13:39:50 +0100 (So, 16. Jan 2011) $
+ *
+*/
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$module_directory	= 'code';
+$module_name		= 'Code';
+$module_function	= 'page';
+$module_version		= '2.8.3';
+$module_platform	= '2.7 | 2.8.x';
+$module_author		= 'Ryan Djurovich';
+$module_license		= 'GNU General Public License';
+$module_description	= 'This module allows you to execute PHP commands (limit access to users you trust!!)';
+

Property changes on: tags/2.8.3/wb/modules/code/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/code/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/uninstall.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         show_menu2
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: uninstall.php 1428 2011-02-07 04:55:31Z Luisehahne $
+ * @filesource      $HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/uninstall.php $
+ * @lastmodified    $Date: 2011-02-07 05:55:31 +0100 (Mo, 07. Feb 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */

Property changes on: tags/2.8.3/wb/modules/code/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/view.php
===================================================================
--- tags/2.8.3/wb/modules/code/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/view.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: info.php 1389 2011-01-16 12:39:50Z FrankH $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/info.php $
+ * @lastmodified    $Date: 2011-01-16 13:39:50 +0100 (So, 16. Jan 2011) $
+ *
+*/
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+// Get content
+$get_content = $database->query("SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
+$fetch_content = $get_content->fetchRow();
+$content = $fetch_content['content'];
+eval($content);
+

Property changes on: tags/2.8.3/wb/modules/code/view.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/save.php
===================================================================
--- tags/2.8.3/wb/modules/code/save.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/save.php	(revision 1610)
@@ -0,0 +1,49 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: save.php 1425 2011-02-03 23:16:12Z Luisehahne $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/save.php $
+ * @lastmodified    $Date: 2011-02-04 00:16:12 +0100 (Fr, 04. Feb 2011) $
+ *
+ */
+
+require('../../config.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+$admin->print_header();
+// Update the mod_wysiwygs table with the contents
+if(isset($_POST['content'])) {
+	$tags = array('<?php', '?>' , '<?', '<?=');
+	$content = $admin->add_slashes(str_replace($tags, '', $_POST['content']));
+	$query = "UPDATE ".TABLE_PREFIX."mod_code SET content = '$content' WHERE section_id = '$section_id'";
+	$database->query($query);	
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/code/save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/delete.php
===================================================================
--- tags/2.8.3/wb/modules/code/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/delete.php	(revision 1610)
@@ -0,0 +1,29 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: info.php 1389 2011-01-16 12:39:50Z FrankH $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/info.php $
+ * @lastmodified    $Date: 2011-01-16 13:39:50 +0100 (So, 16. Jan 2011) $
+ *
+*/
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// Delete record from the database
+$database->query("DELETE FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'");
+

Property changes on: tags/2.8.3/wb/modules/code/delete.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/install.php
===================================================================
--- tags/2.8.3/wb/modules/code/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/install.php	(revision 1610)
@@ -0,0 +1,68 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id: install.php 1374 2011-01-10 12:21:47Z Luisehahne $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/install.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10. Jan 2011) $
+ *
+ */
+
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+if(defined('WB_URL'))
+{
+
+	// Create table
+	$database->query("DROP TABLE IF EXISTS `".TABLE_PREFIX."mod_code`");
+	$mod_code = 'CREATE TABLE IF NOT EXISTS `'.TABLE_PREFIX.'mod_code` ('
+		. ' `section_id` INT NOT NULL DEFAULT \'0\','
+		. ' `page_id` INT NOT NULL DEFAULT \'0\','
+		. ' `content` TEXT NOT NULL,'
+		. ' PRIMARY KEY ( `section_id` )'
+		. ' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci';
+	$database->query($mod_code);
+
+    $mod_search = "SELECT * FROM ".TABLE_PREFIX."search  WHERE value = 'code'";
+    $insert_search = $database->query($mod_search);
+    if( $insert_search->numRows() == 0 )
+    {
+    	// Insert info into the search table
+    	// Module query info
+    	$field_info = array();
+    	$field_info['page_id'] = 'page_id';
+    	$field_info['title'] = 'page_title';
+    	$field_info['link'] = 'link';
+    	$field_info['description'] = 'description';
+    	$field_info['modified_when'] = 'modified_when';
+    	$field_info['modified_by'] = 'modified_by';
+    	$field_info = serialize($field_info);
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('module', 'code', '$field_info')");
+    	// Query start
+    	$query_start_code = "SELECT [TP]pages.page_id, [TP]pages.page_title,	[TP]pages.link, [TP]pages.description, [TP]pages.modified_when, [TP]pages.modified_by	FROM [TP]mod_code, [TP]pages WHERE ";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_start', '$query_start_code', 'code')");
+    	// Query body
+    	$query_body_code = " [TP]pages.page_id = [TP]mod_code.page_id AND [TP]mod_code.content [O] \'[W][STRING][W]\' AND [TP]pages.searching = \'1\'";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_body', '$query_body_code', 'code')");
+    	// Query end
+    	$query_end_code = "";
+    	$database->query("INSERT INTO ".TABLE_PREFIX."search (name,value,extra) VALUES ('query_end', '$query_end_code', 'code')");
+
+    	// Insert blank row (there needs to be at least on row for the search to work)
+    	$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('0','0')");
+
+    }
+}

Property changes on: tags/2.8.3/wb/modules/code/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/modify.php
===================================================================
--- tags/2.8.3/wb/modules/code/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/modify.php	(revision 1610)
@@ -0,0 +1,58 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: info.php 1389 2011-01-16 12:39:50Z FrankH $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/info.php $
+ * @lastmodified    $Date: 2011-01-16 13:39:50 +0100 (So, 16. Jan 2011) $
+ *
+*/
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+require_once(WB_PATH . '/include/editarea/wb_wrapper_edit_area.php');
+
+// Setup template object
+$template = new Template(WB_PATH.'/modules/code');
+$template->set_file('page', 'htt/modify.htt');
+$template->set_block('page', 'main_block', 'main');
+
+// Get page content
+$query = "SELECT content FROM ".TABLE_PREFIX."mod_code WHERE section_id = '$section_id'";
+$get_content = $database->query($query);
+$content = $get_content->fetchRow();
+$content = htmlspecialchars($content['content']);
+
+// Insert vars
+$template->set_var(
+	array(
+		'PAGE_ID'				=> $page_id,
+		'SECTION_ID'			=> $section_id,
+		'REGISTER_EDIT_AREA'	=> function_exists('registerEditArea') ? registerEditArea('content'.$section_id, 'php', false) : '',
+		'WB_URL'				=> WB_URL,
+		'CONTENT'				=> $content,
+		'TEXT_SAVE'				=> $TEXT['SAVE'],
+		'TEXT_CANCEL'			=> $TEXT['CANCEL'],
+		'SECTION'				=> $section_id,
+		'FTAN'					=> $admin->getFTAN()
+	)
+);
+
+// Parse template object
+$template->set_unknowns('keep');
+$template->parse('main', 'main_block', false);
+$template->pparse('output', 'page', false);

Property changes on: tags/2.8.3/wb/modules/code/modify.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/code/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/upgrade.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: upgrade.php 1428 2011-02-07 04:55:31Z Luisehahne $
+ * @filesource      $HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/upgrade.php $
+ * @lastmodified    $Date: 2011-02-07 05:55:31 +0100 (Mo, 07. Feb 2011) $
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_code';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/add.php
===================================================================
--- tags/2.8.3/wb/modules/code/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/add.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/*
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: save.php 1425 2011-02-03 23:16:12Z Luisehahne $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/save.php $
+ * @lastmodified    $Date: 2011-02-04 00:16:12 +0100 (Fr, 04. Feb 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+// Insert an extra row into the database
+$database->query("INSERT INTO ".TABLE_PREFIX."mod_code (page_id,section_id) VALUES ('$page_id','$section_id')");

Property changes on: tags/2.8.3/wb/modules/code/add.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/htt/modify.htt
===================================================================
--- tags/2.8.3/wb/modules/code/htt/modify.htt	(nonexistent)
+++ tags/2.8.3/wb/modules/code/htt/modify.htt	(revision 1610)
@@ -0,0 +1,23 @@
+<!-- BEGIN main_block -->
+{REGISTER_EDIT_AREA}
+
+<form action="{WB_URL}/modules/code/save.php" method="post">
+
+<input type="hidden" name="page_id" value="{PAGE_ID}" />
+<input type="hidden" name="section_id" value="{SECTION_ID}" />
+{FTAN}
+<textarea cols="2" rows="20"  id="content{SECTION}" name="content" style="width: 100%; height: 380px">{CONTENT}</textarea>
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%" >
+<tr>
+	<td align="left">
+		<input type="submit" value="{TEXT_SAVE}" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		<input type="button" value="{TEXT_CANCEL}" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+</form>
+<p>&nbsp;</p>
+<!-- END main_block -->
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/htt/modify.htt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id: NL.php 915 2009-01-21 19:27:01Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE CODE MODULE
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'In deze module kan je PHP instructies ingeven (Gelieve de toegang ervan te beperken tot betrouwbare personen!!)';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id: NO.php 966 2009-04-17 12:41:33Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  NORWEGIAN LANGUAGE FILE FOR THE ADDON: CODE 
+ -----------------------------------------------------------------------------------------
+*/
+
+//Module Description
+$module_description = 'Denne modulen gir deg mulighet for &aring; kj&oslash;re PHP kommandoer og rutiner(OBS!! Begrens tilgangen til denne modulen. Tilgang m&aring; kun gis til personer du har full tiltro til og som du vet har kunnsakp til &aring; benytte den!!)';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/DA.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id: DA.php 1097 2009-07-27 06:58:07Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+ DANISH LANNGUAGE FILE FOR MODULE: CODE
+ -----------------------------------------------------------------------------------------
+*/
+
+// Dansk modulbeskrivelse
+$module_description = 'Dette modul g&oslash;r det muligt at udf&oslash;re PHP kommandoer (adgangen b&oslash;r begr&aelig;nses til p&aring;lidelige personer!)';
+
+?>

Property changes on: tags/2.8.3/wb/modules/code/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/RU.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id: RU.php 915 2009-01-21 19:27:01Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project http://www.websitebaker.org/
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  RUSIIAN LANGUAGE FOR MODULE: CODE
+ -----------------------------------------------------------------------------------------
+*/
+
+//Russian translation
+$module_description = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1100; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1074;&#1099;&#1087;&#1086;&#1083;&#1085;&#1103;&#1090;&#1100; PHP &#1082;&#1086;&#1076; (&#1088;&#1072;&#1079;&#1088;&#1077;&#1096;&#1072;&#1081;&#1090;&#1077; &#1077;&#1075;&#1086; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1076;&#1086;&#1074;&#1077;&#1088;&#1077;&#1085;&#1085;&#1099;&#1084; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;&#1084;!)';
+
+?>

Property changes on: tags/2.8.3/wb/modules/code/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/FR.php	(revision 1610)
@@ -0,0 +1,31 @@
+<?php
+
+// $Id: FR.php 961 2009-04-13 12:05:04Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: CODE
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Ce module permet d&apos;ex&eacute;cuter des commandes PHP (merci de limiter l&apos;acc&egrave;s &agrave; des personnes dignes de confiance!)';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 915 2009-01-21 19:27:01Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/code/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/languages/DE.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id: DE.php 915 2009-01-21 19:27:01Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: CODE
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'Dieses Modul erlaubt das ausf&uuml;hren von PHP Befehlen (bitte begrenzen Sie den Zugriff auf vertrauensw&uuml;rdige Personen!!)';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/code/index.php
===================================================================
--- tags/2.8.3/wb/modules/code/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/code/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         code
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id: index.php 1374 2011-01-10 12:21:47Z Luisehahne $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/code/index.php $
+ * @lastmodified    $Date: 2011-01-10 13:21:47 +0100 (Mo, 10. Jan 2011) $
+ *
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/code/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,2 ##
+      s v n : e o l - s t y l e    native   s v n : k e y w o r d s    Date Revision Id HeadURL   s v n : m i m e - t y p e 
+   text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/uninstall.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+require_once(WB_PATH.'/framework/class.database.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+$sql  = 'DELETE FROM `'.TABLE_PREFIX.'settings` ';
+$sql .= 'WHERE `name`=\'wb_secform_useip\' ';
+$sql .=    'OR `name`=\'wb_secform_usefp\' ';
+$sql .=    'OR `name`=\'wb_secform_tokenname\' ';
+$sql .=    'OR `name`=\'wb_secform_timeout\' ';
+$sql .=    'OR `name`=\'wb_secform_secrettime\' ';
+$sql .=    'OR `name`=\'wb_secform_secret\' ';
+$sql .=    'OR `name`=\'secure_form_module\' ';
+$database->query($sql);
+$dest_to_delete = WB_PATH.'/framework/SecureForm.mtab.php';
+if(is_writeable(WB_PATH.'/framework') ) {
+	@chmod($dest_to_delete, 0666);
+	@unlink($dest_to_delete);
+}
+

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/info.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/info.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+$module_directory = 'SecureFormSwitcher';
+$module_name = 'SecureForm Switcher';
+$module_function = 'tool';
+$module_version = '0.6.6';
+$module_platform = '2.8.2';
+$module_author = 'D. W&ouml;llbrrink (Luisehahne),  Florian Meerwinck (instantflorian), Michael Tentschert (test&ouml;r)';
+$module_license	= 'GNU General Public License';
+$module_description = 'This module switch between the <strong>SingleTab SecureForm</strong> and <strong>MultiTab SecureForm</strong>.';
+

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/tool.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/tool.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/tool.php	(revision 1610)
@@ -0,0 +1,232 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project, D Woellbrink
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false)
+{
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+
+// load module language file
+$mod_path = (dirname(__FILE__));
+require_once( $mod_path.'/language_load.php' );
+// callback function for settings name
+function converttoupper($val, $key, $vars) {
+	$vars[0][$key] = strtoupper($key);
+	$vars[1][$vars[0][$key]] = ($val);
+}
+
+// create backlinks
+$js_back =  ADMIN_URL.'/admintools/tool.php?tool=SecureFormSwitcher';
+$backlink =  ADMIN_URL.'/admintools/index.php';
+$FileNotFound = '&nbsp;';
+// defaults settings
+$default_cfg = array(
+	'secure_form_module' => '',
+	'wb_secform_secret' => '5609bnefg93jmgi99igjefg',
+	'wb_secform_secrettime' => '86400',
+	'wb_secform_timeout' => '7200',
+	'wb_secform_tokenname' => 'formtoken',
+	'wb_secform_usefp' => 'true',
+	'fingerprint_with_ip_octets' => '2',
+);
+$setting = $default_cfg;
+$MultitabTarget = WB_PATH.'/framework/SecureForm.mtab.php';
+// get stored settings to set in mask
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'settings` ';
+$sql .= 'WHERE `name` = \'secure_form_module\'';
+$sql .=    'OR `name`=\'fingerprint_with_ip_octets\' ';
+$sql .=    'OR `name`=\'wb_secform_usefp\' ';
+$sql .=    'OR `name`=\'wb_secform_tokenname\' ';
+$sql .=    'OR `name`=\'wb_secform_timeout\' ';
+$sql .=    'OR `name`=\'wb_secform_secrettime\' ';
+$sql .=    'OR `name`=\'wb_secform_secret\' ';
+if($res = $database->query($sql) ) {
+	if($res->numRows() > 0) {
+		while($rec = $res->fetchRow(MYSQL_ASSOC)) {
+	        $setting[$rec['name']] = $rec['value'];
+		}
+	} else {
+		// add missing values
+		db_update_key_value('settings', $setting );
+	}
+}
+
+$action = 'show';
+$action = isset($_POST['save_settings']) ? 'save_settings' : $action;
+$action = isset($_POST['save_settings_default']) ? 'save_settings_default' : $action;
+
+switch ($action) :
+	case 'save_settings':
+		$cfg = array(
+			'secure_form_module' => (isset($_POST['ftan_switch']) ? $_POST['ftan_switch'] : 'mtab'),
+			'wb_secform_secret' => (isset($_POST['wb_secform_secret']) ? $_POST['wb_secform_secret'] : $setting['wb_secform_secret'] ),
+			'wb_secform_secrettime' => (isset($_POST['wb_secform_secrettime']) ? $_POST['wb_secform_secrettime'] : $setting['wb_secform_secrettime'] ),
+			'wb_secform_timeout' => (isset($_POST['wb_secform_timeout']) ? $_POST['wb_secform_timeout'] : $setting['wb_secform_timeout'] ),
+			'wb_secform_tokenname' => (isset($_POST['wb_secform_tokenname']) ? $_POST['wb_secform_tokenname'] : $setting['wb_secform_tokenname'] ),
+			'wb_secform_usefp' => (isset($_POST['wb_secform_usefp']) ? $_POST['wb_secform_usefp'] : $setting['wb_secform_usefp'] ),
+			'fingerprint_with_ip_octets' => (isset($_POST['fingerprint_with_ip_octets']) ? $_POST['fingerprint_with_ip_octets'] : $setting['fingerprint_with_ip_octets'] ),
+		);
+		// unset($_POST);
+		$_SESSION['CFG'] = $cfg;
+		break;
+	case 'save_settings_default':
+		$cfg = $default_cfg;
+		$cfg['secure_form_module'] = $setting['secure_form_module'];
+		break;
+endswitch;
+
+
+switch ($action) :
+	case 'save_settings':
+	case 'save_settings_default':
+		if (!$admin->checkFTAN())
+		{
+			if(!$admin_header) { $admin->print_header(); }
+			$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$_SERVER['REQUEST_URI']);
+		}
+		if(file_exists($MultitabTarget)) {
+			$val = ( isset($_POST['ftan_switch'])  ? ($_POST['ftan_switch']) : 'mtab');
+		} else {
+			$cfg['secure_form_module'] = '';
+			$FileNotFound = $SFS_TEXT['FILE_FORMTAB_NOT_GOUND'];
+		}
+
+		db_update_key_value('settings', $cfg );
+		// check if there is a database error, otherwise say successful
+		if(!$admin_header) { $admin->print_header(); }
+		if($database->is_error()) {
+			$admin->print_error($database->get_error(), $js_back);
+		} else {
+            if(isset($_SESSION['CFG'])) { unset($_SESSION['CFG']);}
+			$admin->print_success($MESSAGE['PAGES_SAVED'], $js_back);
+		}
+		break;
+endswitch;
+
+// set template file and assign module and template block
+$tpl = new Template(WB_PATH.'/modules/SecureFormSwitcher/htt','keep');
+$tpl->set_file('page', 'switchform.htt');
+$tpl->debug = false; // false, true
+$tpl->set_block('page', 'main_block', 'main');
+
+$checked = ($setting['secure_form_module']!='');
+
+$ftanMode = ($checked ? $SFS_TEXT['SECURE_FORM'] : $SFS_TEXT['SECURE_FORMMTAB']);
+$target = ($checked) ? '.'.$setting['secure_form_module'] : '';
+$target = WB_PATH.'/framework/SecureForm'.$target.'.php';
+
+$SingleTabStatus = intval($checked==false);
+$MultitabStatus = intval($checked==true);
+$NotFoundClass = '';
+if(!file_exists($MultitabTarget)) {
+	$SingleTabStatus = true;
+	$MultitabStatus = false;
+	$FileNotFound = $SFS_TEXT['FILE_FORMTAB_NOT_GOUND'];
+	$NotFoundClass = 'class="warning"';
+} else {
+}
+
+// convert settings name to upper
+array_walk($setting,'converttoupper', array(&$search, &$replace ));
+
+$tpl->set_var($replace);
+$tpl->set_var(array(
+	'FTAN' => $admin->getFTAN(),
+	'SERVER_REQUEST_URI' => $_SERVER['REQUEST_URI'],
+	'TEXT_CANCEL' => $TEXT['CANCEL'],
+	'BACKLINK' => (isset($_POST['cancel'])) ? $backlink : '#',
+	'TEXT_INFO' => $SFS_TEXT['INFO'],
+	'TEXT_SUBMIT' => $SFS_TEXT['SUBMIT'],
+	'TEXT_MSUBMIT' => $SFS_TEXT['RESET_SETTINGS'],
+	'TXT_HEADING' => $SFS_TEXT['SECURE_FORM'.strtoupper($setting['secure_form_module'])],
+	'SELECTED' => ( ($SingleTabStatus) ? ' checked="checked"' : ''),
+	'SELECTED_TAB' => ( ($MultitabStatus) ? ' checked="checked"' : ''),
+	'SUBMIT_TYPE' => ($checked ? 'multitab' : 'singletab'),
+	'MSELECTED' => '',
+	'MSELECTED_TAB' => '',
+	'FTAN_COLOR' => ($checked ? 'grey' : 'norm'),
+	'TXT_SUBMIT_FORM' => $SFS_TEXT['SUBMIT_FORM'],
+	'TXT_SUBMIT_FORMTAB' => $SFS_TEXT['SUBMIT_FORMTAB'],
+	'FILE_FORMTAB_WARNING' => $NotFoundClass,
+	'FILE_FORMTAB_NOT_GOUND' => $FileNotFound,
+	)
+);
+
+$tpl->set_var(array(
+		'USEIP_SELECTED' => '',
+		'TXT_SECFORM_USEIP' => $SFS_TEXT['WB_SECFORM_USEIP'],
+        'TXT_SECFORM_USEIP_TOOLTIP' => $SFS_TEXT['WB_SECFORM_USEIP_TOOLTIP'], // Tooltip
+		'TEXT_DEFAULT_SETTINGS' => $HEADING['DEFAULT_SETTINGS'],
+		'USEIP_DEFAULT' => $default_cfg['fingerprint_with_ip_octets'],
+		'USEFP_CHECKED_TRUE' => (($setting['wb_secform_usefp']=='true') ? ' checked="checked"' : ''),
+		'USEFP_CHECKED_FALSE' => (($setting['wb_secform_usefp']=='false') ? ' checked="checked"' : ''),
+		'TEXT_DEFAULT_SETTINGS' => $HEADING['DEFAULT_SETTINGS'],
+	)
+);
+
+$tpl->set_block('main_block', 'useip_mtab_loop', 'mtab_loop');
+	for($x=0; $x < 5; $x++) {
+		// iu value == default set first option with standardtext
+		if(intval($default_cfg['fingerprint_with_ip_octets'])==$x ) {
+			$tpl->set_var(array(
+					'USEIP_VALUE' => $x,
+					'USEIP_DEFAULT_SELECTED' => ((intval($setting['fingerprint_with_ip_octets'])==$x) ? ' selected="selected"' : ''),
+					'USEIP_SELECTED' => '',
+					)
+			);
+		} else {
+			$tpl->set_var(array(
+					'USEIP_VALUE' => $x,
+					'USEIP_SELECTED' => ((intval($setting['fingerprint_with_ip_octets'])==$x) && (intval($setting['fingerprint_with_ip_octets'])!=intval($default_cfg['fingerprint_with_ip_octets'])) ? ' selected="selected"' : ''),
+				)
+			);
+		}
+		$tpl->parse('mtab_loop','useip_mtab_loop', true);
+	}
+
+$tpl->set_block('main_block', 'show_mtab_block', 'show_mtab');
+$tpl->set_block('main_block', 'mtab_block', 'mtab');
+if($checked) {
+	$tpl->set_var(array(
+			'TEXT_ENABLED' => $SFS_TEXT['ON_OFF'],
+			'TXT_SECFORM_TOKENNAME' => $SFS_TEXT['WB_SECFORM_TOKENNAME'],
+            'TXT_SECFORM_TOKENNAME_TOOLTIP' => $SFS_TEXT['WB_SECFORM_TOKENNAME_TOOLTIP'],
+			'TXT_SECFORM_TIMEOUT' => $SFS_TEXT['WB_SECFORM_TIMEOUT'],
+            'TXT_SECFORM_TIMEOUT_TOOLTIP' => $SFS_TEXT['WB_SECFORM_TIMEOUT_TOOLTIP'],
+			'TXT_SECFORM_SECRETTIME' => $SFS_TEXT['WB_SECFORM_SECRETTIME'],
+            'TXT_SECFORM_SECRETTIME_TOOLTIP' => $SFS_TEXT['WB_SECFORM_SECRETTIME_TOOLTIP'],
+			'TXT_SECFORM_SECRET' => $SFS_TEXT['WB_SECFORM_SECRET'],
+            'TXT_SECFORM_SECRET_TOOLTIP' => $SFS_TEXT['WB_SECFORM_SECRET_TOOLTIP'],
+			'TXT_SECFORM_USEFP' => $SFS_TEXT['WB_SECFORM_USEFP'],
+			'SECFORM_USEFP' => 'true',
+            'TXT_SECFORM_USEFP_TOOLTIP' => $SFS_TEXT['WB_SECFORM_USEFP_TOOLTIP'],
+		)
+	);
+	$tpl->parse('mtab','mtab_block', true);
+	$tpl->parse('show_mtab','show_mtab_block', true);
+} else  {
+	$tpl->parse('mtab', '');
+	$tpl->parse('show_mtab', '');
+}
+
+// Parse template object
+$tpl->parse('main', 'main_block', false);
+$output = $tpl->finish($tpl->parse('output', 'page'));
+unset($tpl);
+print $output;
+

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/language_load.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/language_load.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/language_load.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ *
+ */
+/* ************************************************************************** */
+
+if(defined('WB_PATH') == false)
+{
+	die(" <head><title>Access denied</title></head><body><h2 style=\"color:red;margin:3em auto;text-align:center;\">Cannot access this file directly.</h2></body>");
+}
+
+$mod_path = (dirname(__FILE__));
+$dlg_lang_dir = $mod_path.'/languages/';
+if(file_exists($dlg_lang_dir)){
+	$dlg_lang = file_exists($dlg_lang_dir.LANGUAGE.'.php') ? LANGUAGE : 'EN';
+	require_once($dlg_lang_dir.$dlg_lang.'.php');
+}
+
+//  iconv_set_encoding("output_encoding", "ISO-8859-1");
+if(!function_exists('convert_charset'))
+{
+	function convert_charset(&$val, $key, $vars) {
+		$val = iconv($vars['0'], $vars['1'].'//TRANSLIT', ($val));
+	}
+}
+if( strtolower(DEFAULT_CHARSET) != 'utf-8') {
+	$in_charset = 'utf-8';
+	$out_charset = DEFAULT_CHARSET;
+	array_walk_recursive($SFS_TEXT,'convert_charset',array($in_charset, $out_charset));
+}
+

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/language_load.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/install.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/install.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+require_once(WB_PATH.'/framework/class.database.php');
+require_once(WB_PATH.'/framework/functions.php');
+
+$mod_path = (dirname(__FILE__));
+require_once( $mod_path.'/language_load.php' );
+
+$aDefault = array(
+	'secure_form_module' => '',
+	'wb_secform_secret' => '5609bnefg93jmgi99igjefg',
+	'wb_secform_secrettime' => '86400',
+	'wb_secform_timeout' => '7200',
+	'wb_secform_tokenname' => 'formtoken',
+	'wb_secform_usefp' => 'true',
+	'wb_secform_useip' => '2',
+);
+
+db_update_key_value('settings', $aDefault );
+

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/upgrade.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          Luisehahne
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/htt/switchform.htt
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/htt/switchform.htt	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/htt/switchform.htt	(revision 1610)
@@ -0,0 +1,141 @@
+<!-- BEGIN main_block -->
+<script language="JavaScript" type="text/javascript">
+/*<![CDATA[*/
+if('{BACKLINK}'!=false) {
+	redirect_to_page ('{BACKLINK}', 0);
+}
+/*]]>*/
+</script>
+   <table class="switch-ftan-info" summary="" cellpadding="4" cellspacing="0" border="0">
+	<thead>
+		<tr>
+			<th colspan="3">Status: <span class="{FTAN_COLOR}">{TXT_HEADING}</span></th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr>
+			<td colspan="2" class="module-info"><p>{TEXT_INFO}</p></td>
+		</tr>
+		<tr>
+			<td colspan="2"><p {FILE_FORMTAB_WARNING}>{FILE_FORMTAB_NOT_GOUND}</p></td>
+		</tr>
+	</tbody>
+   </table>
+
+   <form class="secure_switch" name="store_settings" action="{SERVER_REQUEST_URI}" method="post" >
+	{FTAN}
+	<input type="hidden" name="{SUBMIT_TYPE}" value="true" />
+	<div class="left-content">
+	   <table class="switch-ftan-form" summary="" cellpadding="4" cellspacing="0" border="0">
+		<tbody>
+			<tr>
+				<td width="20"><input type="radio" name="ftan_switch" id="ftan_switch" value=""{SELECTED}/></td>
+				<td><label for="ftan_switch">{TXT_SUBMIT_FORM}</label></td>
+			</tr>
+			<tr>
+				<td width="20"><input type="radio" name="ftan_switch" id="ftan_switch_tab" value="mtab"{SELECTED_TAB}/></td>
+				<td><label for="ftan_switch_tab">{TXT_SUBMIT_FORMTAB}</label></td>
+			</tr>
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+<!-- BEGIN show_mtab_block -->
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="2">&nbsp;</td>
+			</tr>
+<!-- END show_mtab_block -->
+			<tr>
+				<td colspan="2">
+					<input type="submit" name="save_settings" value="{TEXT_SUBMIT}" />
+					<input type="submit" name="cancel" value="{TEXT_CANCEL}" />
+				</td>
+			</tr>
+		</tbody>
+	   </table>
+	</div>
+	<div class="right-content">
+	   <table class="switch-ftan-form" summary="" cellpadding="4" cellspacing="0" border="0">
+		<tbody>
+			<tr>
+				<td colspan="2">
+					<select name="fingerprint_with_ip_octets">
+						<option value="{USEIP_DEFAULT}"{USEIP_DEFAULT_SELECTED}>{TEXT_DEFAULT_SETTINGS}</option>
+	<!-- BEGIN useip_mtab_loop -->
+						<option value="{USEIP_VALUE}"{USEIP_SELECTED}>{USEIP_VALUE}</option>
+	<!-- END useip_mtab_loop -->
+					</select>
+				</td>
+				<td><label for="fingerprint_with_ip_octets">{TXT_SECFORM_USEIP}
+						<a class="tooltip" href="#">? {TXT_SECFORM_USEIP_TOOLTIP}</a>
+				</label></td>
+			</tr>
+	<!-- BEGIN mtab_block -->
+			<tr>
+				<td colspan="2"><input type="text" name="wb_secform_tokenname" id="wb_secform_tokenname" value="{WB_SECFORM_TOKENNAME}"/></td>
+				<td><label for="wb_secform_tokenname">{TXT_SECFORM_TOKENNAME}
+					<a class="tooltip" href="#">? {TXT_SECFORM_TOKENNAME_TOOLTIP}</a>
+				</label></td>
+			</tr>
+			<tr>
+				<td colspan="2"><input type="text" name="wb_secform_secret" id="wb_secform_secret" value="{WB_SECFORM_SECRET}"/></td>
+				<td><label for="wb_secform_secret">{TXT_SECFORM_SECRET}
+					<a class="tooltip" href="#">? {TXT_SECFORM_SECRET_TOOLTIP}</a>
+				</label></td>
+			</tr>
+			<tr>
+				<td colspan="2"><input type="text" name="wb_secform_secrettime" id="wb_secform_secrettime" value="{WB_SECFORM_SECRETTIME}"/></td>
+				<td><label for="wb_secform_secrettime">{TXT_SECFORM_SECRETTIME}
+					<a class="tooltip" href="#">? {TXT_SECFORM_SECRETTIME_TOOLTIP}</a>
+				</label></td>
+			</tr>
+			<tr>
+				<td colspan="2"><input type="text" name="wb_secform_timeout" id="wb_secform_timeout" value="{WB_SECFORM_TIMEOUT}"/></td>
+				<td><label for="wb_secform_timeout">{TXT_SECFORM_TIMEOUT}
+					<a class="tooltip" href="#">? {TXT_SECFORM_TIMEOUT_TOOLTIP}</a>
+				</label></td>
+			</tr>
+			<tr>
+				<td>
+					<label for="wb_secform_usefp_true">{TEXT_ENABLED}</label>
+				</td>
+				<td width="50">
+					<input type="radio" value="true" id="wb_secform_usefp_true" name="wb_secform_usefp"{USEFP_CHECKED_TRUE} />
+					<input type="radio" value="false" id="wb_secform_usefp_false" name="wb_secform_usefp"{USEFP_CHECKED_FALSE} />
+				</td>
+				<td><label for="wb_secform_usefp">{TXT_SECFORM_USEFP}
+					<a class="tooltip" href="#">? {TXT_SECFORM_USEFP_TOOLTIP}</a>
+				</label></td>
+			</tr>
+			<tr>
+				<td>&nbsp;</td>
+				<td>&nbsp;</td>
+				<td>&nbsp;</td>
+			</tr>
+
+			<tr>
+				<td colspan="4">&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="4">
+					<input type="submit" name="save_settings_default" value="{TEXT_MSUBMIT}" />
+				</td>
+			</tr>
+<!-- END mtab_block -->
+		</tbody>
+	   </table>
+	</div>
+
+   </form>
+<!-- END main_block -->
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/htt/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/htt/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/htt
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/htt	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/htt	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/htt
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/files/SecureForm.mtab.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/files/SecureForm.mtab.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/files/SecureForm.mtab.php	(revision 1610)
@@ -0,0 +1,408 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         SecureForm.mtab
+ * @author          WebsiteBaker Community Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+##  Heavy patched version, idea for patches based on :
+##  http://stackoverflow.com/questions/2695153/php-csrf-how-to-make-it-works-in-all-tabs/2695291#2695291
+##  Whith this patch the token System now allows for multiple browser tabs but 
+##  denies the use of multiple browsers.
+##  You can configure this class by adding several constants to your config.php
+##  All Patches are Copyright Norbert Heimsath released under GPLv3 
+##  http://www.gnu.org/licenses/gpl.html
+##  Take a look at  __construkt  for configuration options(constants).
+##  Patch version 0.3.5
+
+/**
+ * If you want some special configuration put this somewhere in your config.php for
+ * example or just uncomment the lines here
+ *
+ * This parameter now can be set with the admintool SecureForm Switcher coded by Luisehahne,
+ * pls ask for it in the forum
+ *
+ * Secret can contain anything its the base for the secret part for the hash
+ * define ('WB_SECFORM_SECRET','whatever you like');
+ * after how many seconds a new secret is generated
+ * define ('WB_SECFORM_SECRETTIME',86400);      #aprox one day
+ * shall we use fingerprinting true/false
+ * define ('WB_SECFORM_USEFP', true);
+ * Timeout till the form token times out. Integer value between 0-86400 seconds (one day)
+ * define ('WB_SECFORM_TIMEOUT', 3600);
+ * Name for the token form element only alphanumerical string allowed that starts whith a charakter
+ * define ('WB_SECFORM_TOKENNAME','my3form3');
+ * how many blocks of the IP should be used in fingerprint 0=no ipcheck, possible values 0-4
+ * define ('FINGERPRINT_WITH_IP_OCTETS',2);
+ */
+
+class SecureForm {
+
+	const FRONTEND = 0;
+	const BACKEND  = 1;      
+
+        ## additional private data
+	private $_secret      	 = '5609bnefg93jmgi99igjefg';
+	private $_secrettime  	 = 86400;   #Approx. one day 
+        private $_tokenname   	 = 'formtoken';
+	private $_timeout	 = 7200;         
+	private $_useipblocks	 = 2;
+	private $_usefingerprint = true;
+        ### additional private data
+
+        private $_FTAN           = '';
+	private $_IDKEYs         = array('0'=>'0');
+	private $_idkey_name     = '';
+	private $_salt           = '';
+	private $_fingerprint    = '';
+	private $_serverdata  	 = '';
+
+	/* Construtor */
+	protected function __construct($mode = self::FRONTEND){
+
+        	## additional constants and stuff for global configuration
+
+		# Secret can contain anything its the base for the secret part of the hash
+                if (defined ('WB_SECFORM_SECRET')){ 	
+			$this->_secret=WB_SECFORM_SECRET;
+		}
+
+		# shall we use fingerprinting
+                if (defined ('WB_SECFORM_USEFP') AND WB_SECFORM_USEFP===false){
+			$this->_usefingerprint	= false;
+		}
+
+                # Timeout till the form token times out. Integer value between 0-86400 seconds (one day)
+                if (defined ('WB_SECFORM_TIMEOUT') AND is_numeric(WB_SECFORM_TIMEOUT) AND intval(WB_SECFORM_TIMEOUT) >=0 AND intval(WB_SECFORM_TIMEOUT) <=86400 ){
+			$this->_timeout=intval(WB_SECFORM_TIMEOUT);
+		}
+		# Name for the token form element only alphanumerical string allowed that starts whith a charakter
+                if (defined ('WB_SECFORM_TOKENNAME') AND !$this->_validate_alalnum(WB_SECFORM_TOKENNAME)){
+			$this->_tokenname=WB_SECFORM_TOKENNAME;
+		}
+		# how many bloks of the IP should be used 0=no ipcheck 
+                if (defined ('FINGERPRINT_WITH_IP_OCTETS') AND !$this->_is04(FINGERPRINT_WITH_IP_OCTETS)){
+			$this->_useipblocks=FINGERPRINT_WITH_IP_OCTETS;
+                }
+		## additional stuff end 
+		$this->_browser_fingerprint   = $this->_browser_fingerprint(true);
+		$this->_fingerprint   = $this->_generate_fingerprint();
+		$this->_serverdata    = $this->_generate_serverdata();
+		$this->_secret        = $this->_generate_secret();
+                $this->_salt          = $this->_generate_salt();
+
+		$this->_idkey_name    = substr($this->_fingerprint, hexdec($this->_fingerprint[strlen($this->_fingerprint)-1]), 16);
+		// make sure there is a alpha-letter at first position
+		$this->_idkey_name[0] = dechex(10 + (hexdec($this->_idkey_name[0]) % 5));
+		// takeover id_keys from session if available
+		if(isset($_SESSION[$this->_idkey_name]) && is_array($_SESSION[$this->_idkey_name])){
+			$this->_IDKEYs = $_SESSION[$this->_idkey_name];
+		}else{
+			$this->_IDKEYs = array('0'=>'0');
+			$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		}
+	}
+
+	private function _generate_secret(){
+
+                $secret= $this->_secret;
+		$secrettime= $this->_secrettime;
+		#create a different secret every day
+		$TimeSeed= floor(time()/$secrettime)*$secrettime;  #round(floor) time() to whole days
+		$DomainSeed =  $_SERVER['SERVER_NAME'];  # generate a numerical from server name.
+		$Seed = $TimeSeed+$DomainSeed;
+                $secret .=md5($Seed);  #
+
+		$secret .= $this->_secret.$this->_serverdata.session_id();
+		if ($this->_usefingerprint){$secret.= $this->_browser_fingerprint;}
+		
+	return $secret;
+	}
+
+
+
+	private function _generate_salt()
+		{
+			if(function_exists('microtime'))
+			{
+				list($usec, $sec) = explode(" ", microtime());
+				$salt = (string)((float)$usec + (float)$sec);
+			}else{
+				$salt = (string)time();
+			}
+			$salt = (string)rand(10000, 99999) . $salt . (string)rand(10000, 99999);
+			return md5($salt);
+		}
+
+	private function _generate_fingerprint()
+	{
+	// server depending values
+ 		$fingerprint  = $this->_generate_serverdata();
+		
+	// client depending values
+		$fingerprint .= ( isset($_SERVER['HTTP_USER_AGENT']) ) ? $_SERVER['HTTP_USER_AGENT'] : '17';
+		$usedOctets = ( defined('FINGERPRINT_WITH_IP_OCTETS') ) ? intval(defined('FINGERPRINT_WITH_IP_OCTETS')) : 0;
+		$clientIp = ( isset($_SERVER['REMOTE_ADDR'])  ? $_SERVER['REMOTE_ADDR'] : '' );
+		if(($clientIp != '') && ($usedOctets > 0)){
+			$ip = explode('.', $clientIp);
+			while(sizeof($ip) > $usedOctets) { array_pop($ip); }
+			$clientIp = implode('.', $ip);
+		}else {
+			$clientIp = 19;
+		}
+		$fingerprint .= $clientIp;
+		return md5($fingerprint);
+	}
+
+	private function _generate_serverdata(){
+
+	 	$serverdata  = ( isset($_SERVER['SERVER_SIGNATURE']) ) ? $_SERVER['SERVER_SIGNATURE'] : '2';
+		$serverdata .= ( isset($_SERVER['SERVER_SOFTWARE']) ) ? $_SERVER['SERVER_SOFTWARE'] : '3';
+		$serverdata .= ( isset($_SERVER['SERVER_NAME']) ) ? $_SERVER['SERVER_NAME'] : '5';
+		$serverdata .= ( isset($_SERVER['SERVER_ADDR']) ) ? $_SERVER['SERVER_ADDR'] : '7';
+		$serverdata .= ( isset($_SERVER['SERVER_PORT']) ) ? $_SERVER['SERVER_PORT'] : '11';
+		$serverdata .= ( isset($_SERVER['SERVER_ADMIN']) ) ? $_SERVER['SERVER_ADMIN'] : '13';
+		$serverdata .= PHP_VERSION;
+	return  $serverdata;
+	}
+
+        // fake funktion , just exits to avoid error message 
+        final protected function createFTAN(){}
+
+	/*
+	* creates selfsigning Formular transactionnumbers for unique use
+	* @access public
+	* @param bool $asTAG: true returns a complete prepared, hidden HTML-Input-Tag (default)
+	*                     false returns an GET argument 'key=value'
+	* @return mixed:      string
+	*
+	* requirements: an active session must not be available but it makes no sense whithout :-)
+	*/
+	final public function getFTAN( $as_tag = true)
+	{
+		$secret= $this->_secret;
+
+		$timeout= time()+$this->_timeout;
+
+		#mt_srand(hexdec(crc32(microtime()));
+                $token= dechex(mt_rand());
+
+                $hash= sha1($secret.'-'.$token.'-'.$timeout);
+		$signed= $token.'-'.$timeout.'-'.$hash;
+
+		if($as_tag == true)
+		{ // by default return a complete, hidden <input>-tag
+			return '<input type="hidden" name="'.$this->_tokenname.'" value="'.htmlspecialchars($signed).'" title="" alt="" />';
+		}else{ // return an array with raw tokenname=value
+			return $this->_tokenname.'='.$signed;
+		}
+	}
+
+	/*
+	* checks received form-transactionnumbers against itself
+	* @access public
+	* @param string $mode: requestmethode POST(default) or GET
+	* @return bool:    true if numbers matches against stored ones
+	*
+	* requirements: no active session must be available but it makes no sense whithout.
+	* this check will prevent from multiple sending a form. history.back() also will never work
+	*/
+	final public function checkFTAN( $mode = 'POST')
+	{
+		$mode = (strtoupper($mode) != 'POST' ? '_GET' : '_POST');
+
+		$isok= false;
+		$secret= $this->_secret;
+
+		if (isset($GLOBALS[$mode][$this->_tokenname])) 	{$latoken=$GLOBALS[$mode][$this->_tokenname];}
+                else 						{return $isok;}
+
+		$parts= explode('-', $latoken);
+		if (count($parts)==3) {
+			list($token,$timeout, $hash)= $parts;
+			if ($hash==sha1($secret.'-'.$token.'-'.$timeout) AND $timeout > time())
+			{$isok= true;}
+		}
+
+		return $isok;
+	}
+
+	/*
+	* save values in session and returns a ID-key
+	* @access public
+	* @param mixed $value: the value for witch a key shall be generated and memorized
+	* @return string:      a MD5-Key to use instead of the real value
+	*
+	* @requirements: an active session must be available
+	* @description: IDKEY can handle string/numeric/array - vars. Each key is a
+	*/
+	final public function getIDKEY($value)
+	{
+		if( is_array($value) == true )
+		{ // serialize value, if it's an array
+			$value = serialize($value);
+		}
+		// crypt value with salt into md5-hash
+		// and return a 16-digit block from random start position
+		$key = substr( md5($this->_salt.(string)$value), rand(0,15), 16);
+		do{ // loop while key/value isn't added
+			if( !array_key_exists($key, $this->_IDKEYs) )
+			{ // the key is unique, so store it in list
+				$this->_IDKEYs[$key] = $value;
+				break;
+			}else {
+				// if key already exist, increment the last five digits until the key is unique
+				$key = substr($key, 0, -5).dechex(('0x'.substr($key, -5)) + 1);
+			}
+		}while(0);
+		// store key/value-pairs into session
+		$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		return $key;
+	}
+
+	/*
+	* search for key in session and returns the original value
+	* @access public
+	* @param string $fieldname: name of the POST/GET-Field containing the key or hex-key itself
+	* @param mixed $default: returnvalue if key not exist (default 0)
+	* @param string $request: requestmethode can be POST or GET or '' (default POST)
+	* @return mixed: the original value (string, numeric, array) or DEFAULT if request fails
+	*
+	* @requirements: an active session must be available
+	* @description: each IDKEY can be checked only once. Unused Keys stay in list until the
+	*               session is destroyed.
+	*/
+ 	final public function checkIDKEY( $fieldname, $default = 0, $request = 'POST' )
+	{
+		$return_value = $default; // set returnvalue to default
+		switch( strtoupper($request) )
+		{
+			case 'POST':
+				$key = isset($_POST[$fieldname]) ? $_POST[$fieldname] : $fieldname;
+				break;
+			case 'GET':
+				$key = isset($_GET[$fieldname]) ? $_GET[$fieldname] : $fieldname;
+				break;
+			default:
+				$key = $fieldname;
+		}
+		if( preg_match('/[0-9a-f]{16}$/', $key) )
+		{ // key must be a 16-digit hexvalue
+			if( array_key_exists($key, $this->_IDKEYs))
+			{ // check if key is stored in IDKEYs-list
+				$return_value = $this->_IDKEYs[$key]; // get stored value
+				unset($this->_IDKEYs[$key]);   // remove from list to prevent multiuse
+				$_SESSION[$this->_idkey_name] = $this->_IDKEYs; // save modified list into session again
+				if( preg_match('/.*(?<!\{).*(\d:\{.*;\}).*(?!\}).*/', $return_value) )
+				{ // if value is a serialized array, then deserialize it
+					$return_value = unserialize($return_value);
+				}
+			}
+		}
+		return $return_value;
+	}
+
+	/* @access public
+	* @return void
+	*
+	* @requirements: an active session must be available
+	* @description: remove all entries from IDKEY-Array
+	*
+	*/
+ 	final public function clearIDKEY()
+	{
+		 $this->_IDKEYs = array('0'=>'0');
+	}
+
+
+	## additional Functions needed cause the original ones lack some functionality
+	## all are Copyright Norbert Heimsath, heimsath.org
+	## released under GPLv3  http://www.gnu.org/licenses/gpl.html
+
+	/* Made because ctype_ gives strange results using mb Strings*/ 
+ 	private function _validate_alalnum($input){
+	# alphanumerical string that starts whith a letter charakter 
+		if (preg_match('/^[a-zA-Z][0-9a-zA-Z]+$/u', $input))
+			{return false;}
+	
+	return "The given input is not an alphanumeric string.";
+	} 
+
+ 	private function _is04($input){
+	# integer value between 0-4
+		if (preg_match('/^[0-4]$/', $input)) {return false;}
+	
+	return "The given input is not an alphanumeric string.";
+	} 
+
+
+	private function _getip($ipblocks=4){
+	/*
+	Just a function to get User ip even if hes behind a proxy
+	*/
+		$ip    	=   ""; //Ip address result
+		$cutip	=   ""; //Ip address cut to limit
+	
+		# mabe user is behind a Proxy but we need his real ip address if we got a nice Proxyserver, 
+		# it sends us the "HTTP_X_FORWARDED_FOR" Header. Sometimes there is more than one Proxy.
+		# !!!!!! THIS PART WAS NEVER TESTED BECAUSE I ONLY GOT A DIRECT INTERNET CONNECTION !!!!!!
+		# long2ip(ip2long($lastip)) makes sure we got nothing else than an ip into our script ;-)
+		# !!!!! WARNING the 'HTTP_X_FORWARDED_FOR' Part is NOT TESTED !!!!!
+		if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
+		{
+			$iplist= explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
+			$lastip = array_pop($iplist);
+			$ip.= long2ip(ip2long($lastip));
+		}
+		
+		/* If theres no other supported info we just use REMOTE_ADDR
+		If we have a fiendly proxy supporting  HTTP_X_FORWARDED_FOR its ok to use the full address.
+		But if there is no HTTP_X_FORWARDED_FOR we can  not be sure if its a proxy or whatever, so we use the 
+		blocklimit for IP address. 
+		*/
+		else 
+		{
+			$ip = long2ip(ip2long($_SERVER['REMOTE_ADDR']));
+	
+			# ipblocks used here defines how many blocks of the ip adress are checked xxx.xxx.xxx.xxx
+			$blocks = explode('.', $ip);
+			for ($i=0; $i<$ipblocks; $i++){
+				$cutip.= $blocks[$i] . '.';
+				}
+			$ip=substr($cutip, 0, -1);
+		}
+		
+	return $ip;
+	}
+	
+	private function _browser_fingerprint($encode=true,$fpsalt="My Fingerprint: "){
+	/*
+	Creates a basic Browser Fingerprint for securing the session and forms.
+	*/
+	
+		$fingerprint=$fpsalt;
+		if (isset($_SERVER['HTTP_USER_AGENT'])){ $fingerprint .= $_SERVER['HTTP_USER_AGENT'];}
+		if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];}
+		if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_ENCODING'];}
+		if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_CHARSET'];}
+		
+		$fingerprint.= $this->_getip($this->_useipblocks);
+		
+		if ($encode){$fingerprint=md5($fingerprint);}
+	
+	return $fingerprint;
+	}
+	##
+	## additional Functions END
+	##
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/files/SecureForm.mtab.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/files
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/files	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/files	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/files
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/languages/EN.php	(revision 1610)
@@ -0,0 +1,55 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+//Module description
+$module_description = 'This module switch between the <strong>SingleTab SecureForm</strong> and <strong>MultiTab SecureForm</strong>.';
+
+// Backend variables
+$SFS_TEXT['TEXT_SWITCH'] = 'Change';
+$SFS_TEXT['TXT_FTAN_SWITCH'] = 'Change to ';
+$SFS_TEXT['SECURE_FORM'] = 'SingleTab SecureForm';
+$SFS_TEXT['SECURE_FORMMTAB'] = 'Multitab SecureForm';
+$SFS_TEXT['FILE_FORMTAB_NOT_GOUND'] = '<strong>Multitab not possible!<br />Needed file \'/framework/SecureForm.mtab.php\' not found!</strong><br />
+<span>You have to upload the file manually via FTP</span>';
+$SFS_TEXT['SUBMIT_FORM'] = 'Single Tab (recommended)';
+$SFS_TEXT['SUBMIT_FORMTAB'] = 'Multi Tab';
+$SFS_TEXT['SUBMIT'] = 'Accept';
+$SFS_TEXT['INFO'] = 'Please select if you want to use the default security settings or the settings for working with several WebsiteBaker instances in parallel browser tabs.';
+$SFS_TEXT['RESET_SETTINGS'] = 'Default setting';
+$SFS_TEXT['ON_OFF'] = 'On/OFF';
+
+// Variablen fuer AdminTool Optionen
+$SFS_TEXT['WB_SECFORM_USEIP'] = 'IP-Blocks (1-4, 0=no check)';
+$SFS_TEXT['WB_SECFORM_USEIP_TOOLTIP'] = '<span class="custom help"><em>Help</em>
+These number of segments of an IP address can be used for the fingerprint. "4" means the whole IP address (this makes sense e.g. for servers with a stable IP address). "2" is a good compromise, because at home there\'s often the 24-hour reset and therefore only the first two segments keep constant.
+<ul>
+<li>4= xxx.xxx.xxx.xxx</li>
+<li>3= xxx.xxx.xxx</li>
+<li>2= xxx.xxx</li>
+<li>1= xxx</li>
+<li>0= no usage of the IP</li></ul></span>';
+$SFS_TEXT['WB_SECFORM_TOKENNAME'] = 'Tokenname';
+$SFS_TEXT['WB_SECFORM_TOKENNAME_TOOLTIP'] = '<span class="custom help"><em>Help</em>The name of the token. Coll. a token is often called TAN.</span>';
+$SFS_TEXT['WB_SECFORM_SECRET'] = 'Secret (whatever you like)';
+$SFS_TEXT['WB_SECFORM_SECRET_TOOLTIP'] = '<span class="custom help"><em>Help</em>A random key, that is being used for creating a TAN. Recommend are at least 20 digits.</span>';
+$SFS_TEXT['WB_SECFORM_SECRETTIME'] = 'Secrettime';
+$SFS_TEXT['WB_SECFORM_SECRETTIME_TOOLTIP'] = '<span class="custom help"><em>Help</em>Time (in seconds), until the secret-key will be renewed.</span>';
+$SFS_TEXT['WB_SECFORM_TIMEOUT'] = 'Timeout';
+$SFS_TEXT['WB_SECFORM_TIMEOUT_TOOLTIP'] = '<span class="custom help"><em>Help</em>Time (in seconds), until the form-token is void.</span>';
+$SFS_TEXT['WB_SECFORM_USEFP'] = 'Fingerprinting';
+$SFS_TEXT['WB_SECFORM_USEFP_TOOLTIP'] = '<span class="custom help"><em>Help</em>Require OS and browser for every TAN-validation additionally to the IP-address.</span>';

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/languages/EN.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/languages/DE.php	(revision 1610)
@@ -0,0 +1,55 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+//Module description
+$module_description = 'Dieses Modul wechselt zwischen <strong>SingleTab SecureForm</strong> und <strong>MultiTab SecureForm</strong>.';
+
+// Backend variables
+$SFS_TEXT['TEXT_SWITCH'] = 'Wechseln';
+$SFS_TEXT['TXT_FTAN_SWITCH'] = 'Wechsel zu ';
+$SFS_TEXT['SECURE_FORM'] = 'SingleTab SecureForm';
+$SFS_TEXT['SECURE_FORMMTAB'] = 'Multitab SecureForm';
+$SFS_TEXT['FILE_FORMTAB_NOT_GOUND'] = '<strong>Multitab nicht ausführbar!<br />Benötigte Datei \'/framework/SecureForm.mtab.php\' nicht gefunden!</strong><br />
+<span>Sie müssen die Datei manuell über FTP hochspielen</span>';
+$SFS_TEXT['SUBMIT_FORM'] = 'SingleTab (empfohlen)';
+$SFS_TEXT['SUBMIT_FORMTAB'] = 'Multi Tab';
+$SFS_TEXT['SUBMIT'] = 'Übernehmen';
+$SFS_TEXT['INFO'] = 'Hier können Sie auswählen, ob die Standard-Sicherheitseinstellung oder die Sicherheitseinstellung zur Verwendung von mehreren WebsiteBaker-Instanzen in parallelen Browser-Tabs aktiviert werden soll.';
+$SFS_TEXT['RESET_SETTINGS'] = 'Standardeinstellung';
+$SFS_TEXT['ON_OFF'] = 'Ein/Aus';
+
+// Variablen fuer AdminTool Optionen
+$SFS_TEXT['WB_SECFORM_USEIP'] = 'IP-Blocks (1-4, 0=kein Check)';
+$SFS_TEXT['WB_SECFORM_USEIP_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>
+Diese Anzahl der Segmente einer IP-Adresse werden für den Fingerprint genutzt. "4" heißt die gesamte IP-Adresse (dies macht nur bei festen IPs wie z.B. Servern Sinn). "2" ist ein guter Kompromiss, da im Heimbereich durch 24-Stunden Resets nur die ersten beiden Segmente konstant bleiben. 
+<ul>
+<li>4= xxx.xxx.xxx.xxx</li>
+<li>3= xxx.xxx.xxx</li>
+<li>2= xxx.xxx</li>
+<li>1= xxx</li>
+<li>0=keine Nutzung der IP</li></ul></span>';
+$SFS_TEXT['WB_SECFORM_TOKENNAME'] = 'Tokenname';
+$SFS_TEXT['WB_SECFORM_TOKENNAME_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>Der Name des Tokens. Umgangssprachlich wird Token auch TAN genannt.</span>';
+$SFS_TEXT['WB_SECFORM_SECRET'] = 'Secret (Beliebige Zeichen)';
+$SFS_TEXT['WB_SECFORM_SECRET_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>Ein zufälliger Schlüssel, der für die Token-Erstellung verwendet wird. Empfohlen sind mind. 20 Zeichen.</span>';
+$SFS_TEXT['WB_SECFORM_SECRETTIME'] = 'Secrettime';
+$SFS_TEXT['WB_SECFORM_SECRETTIME_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>Zeit (in Sekunden), bis der Secret-Schlüssel sich erneuert.</span>';
+$SFS_TEXT['WB_SECFORM_TIMEOUT'] = 'Timeout';
+$SFS_TEXT['WB_SECFORM_TIMEOUT_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>Zeit (in Sekunden), bis ein Formular-Token nicht mehr gilt.</span>';
+$SFS_TEXT['WB_SECFORM_USEFP'] = 'Fingerprinting';
+$SFS_TEXT['WB_SECFORM_USEFP_TOOLTIP'] = '<span class="custom help"><em>Hilfe</em>Zusätzlich zur IP-Adresse wird Betriebssystem und Browser zu jeder TAN-Validierung hinzugezogen.</span>';

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/languages/DE.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/languages
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/languages	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/languages	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/languages
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/index.php
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         SecureFormSwitcher
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.9.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('Location: ../index.php');
+exit();
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/FTAN_SUPPORTED
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/FTAN_SUPPORTED	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/FTAN_SUPPORTED	(revision 1610)
@@ -0,0 +1 @@
+This module supports the FTAN-System
\ No newline at end of file
Index: tags/2.8.3/wb/modules/SecureFormSwitcher/backend.css
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher/backend.css	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher/backend.css	(revision 1610)
@@ -0,0 +1,66 @@
+@charset "UTF-8";
+
+td.content form.secure_switch .left-content { width :49%; float :left; }
+td.content form.secure_switch .right-content { width :49%; float :right; }
+
+form.secure_switch { border :0px #484 solid; margin :1em 0; width :100%; }
+
+table.switch-ftan-info,
+table.switch-ftan-form { width :100%; background-color :transparent; }
+table.switch-ftan-info tbody,
+table.switch-ftan-form tbody { margin :10px 0; }
+table.switch-ftan-form tbody td label { font-weight :bold; font-size :1.0em; color :#000000; }
+table.switch-ftan-info thead tr th { margin :20px 0; font-weight :bold; font-size :1.4em; background-color :transparent; color :#000000; text-align :left; }
+
+table.switch-ftan-info thead tr th span.norm { color : #003300; }
+table.switch-ftan-info thead tr th span.grey { color : #666666; }
+
+table.switch-ftan-form tbody td { height :30px; vertical-align :middle; }
+table.switch-ftan-form tbody td input[type="submit"] { font-size :1.0em; width : 40%; }
+table.switch-ftan-form tbody td input[type="text"] { font-size :1.0em; width : 100%; }
+table.switch-ftan-form tbody td select { font-size :1.0em; width : 101.5%; }
+
+.ok, .error { font-weight:bold; }
+.ok { color:green; }
+.error { color:red; }
+.check { color:#555; }
+
+.module-info { padding :10px; margin :0px auto; background :transparent; color :#000000; font-size :1.0em; }
+.module-info p { margin :0.2em auto; }
+.warning { border-radius :10px; -khtml-border-radius :10px; -webkit-border-radius :10px; -moz-border-radius :10px; background :#fee; border :0.2em #844 solid; color :#990000; margin :0.2em auto; padding :0.63em; width :60%; text-align :center; }
+.warning strong { font-size :1.2em; }
+.warning span { font-size :1.2em; line-height :1.5em; color :#333333; }
+
+/* Tooltip CSS */
+.tooltip {
+	border-bottom: 1px dotted #000000;
+	color: #000000;
+	outline: none;
+	cursor: help;
+	text-decoration: none;
+	position: relative;
+}
+.tooltip span { margin-left: -999em; position: absolute; }
+.tooltip:hover em {
+	font-family: Candara, Tahoma, Geneva, sans-serif;
+	font-size: 1.2em;
+	font-weight: bold;
+	display: block;
+	padding: 0.2em 0 0.6em 0;
+}
+.tooltip:hover span {
+	border-radius: 5px 5px;
+	box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
+	font-family: Calibri, Tahoma, Geneva, sans-serif;
+	position: absolute;
+	left: -15em;
+	top: 2em;
+	z-index: 99;
+	margin-left: 1em;
+	padding: 10px 10px 10px 50px;
+	width: 250px;
+}
+.help {
+	border: 1px solid #2bb0d7;
+	background: #9fdaee url(htt/help.png) no-repeat left;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher/backend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/css
\ No newline at end of property
Index: tags/2.8.3/wb/modules/SecureFormSwitcher
===================================================================
--- tags/2.8.3/wb/modules/SecureFormSwitcher	(nonexistent)
+++ tags/2.8.3/wb/modules/SecureFormSwitcher	(revision 1610)

Property changes on: tags/2.8.3/wb/modules/SecureFormSwitcher
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/save.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/save.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/save.php	(revision 1610)
@@ -0,0 +1,58 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+require_once('../../config.php');
+
+$admin_header = false;
+// Tells script to update when this page was last updated
+$update_when_modified = true;
+// Include WB admin wrapper script
+require(WB_PATH.'/modules/admin.php');
+$backlink = ADMIN_URL.'/pages/modify.php?page_id='.(int)$page_id;
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$backlink );
+}
+$admin->print_header();
+
+// Update id, anchor and target
+if(isset($_POST['menu_link'])) {
+	$foreign_page_id = $admin->add_slashes($_POST['menu_link']);
+	$page_target = $admin->add_slashes($_POST['page_target']);
+	$url_target = $admin->add_slashes($_POST['target']);
+	$r_type = $admin->add_slashes($_POST['r_type']);
+	if(isset($_POST['extern']))
+		$extern = $admin->add_slashes($_POST['extern']);
+	else
+		$extern='';
+
+	$table_pages = TABLE_PREFIX.'pages';
+	$table_mod = TABLE_PREFIX.'mod_menu_link';
+	$database->query("UPDATE `$table_pages` SET `target` = '$url_target' WHERE `page_id` = '$page_id'");
+	$database->query("UPDATE `$table_mod` SET `target_page_id` = '$foreign_page_id', `anchor` = '$page_target', `extern` = '$extern', `redirect_type` = '$r_type' WHERE `page_id` = '$page_id'");
+}
+
+// Check if there is a database error, otherwise say successful
+if($database->is_error()) {
+	$admin->print_error($database->get_error(), $js_back);
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED'],$backlink );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/menu_link/save.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/install.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/install.php	(revision 1610)
@@ -0,0 +1,41 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX ."mod_menu_link";
+$database->query("DROP TABLE IF EXISTS `$table`");
+
+$database->query("
+	CREATE TABLE IF NOT EXISTS `$table` (
+		`section_id` INT(11) NOT NULL DEFAULT '0',
+		`page_id` INT(11) NOT NULL DEFAULT '0',
+		`target_page_id` INT(11) NOT NULL DEFAULT '0',
+		`redirect_type` INT NOT NULL DEFAULT '302',
+		`anchor` VARCHAR(255) NOT NULL DEFAULT '0' ,
+		`extern` VARCHAR(255) NOT NULL DEFAULT '' ,
+		PRIMARY KEY (`section_id`)
+	) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
+");

Property changes on: tags/2.8.3/wb/modules/menu_link/install.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/modify.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/modify.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/modify.php	(revision 1610)
@@ -0,0 +1,235 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/menu_link/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/menu_link/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/menu_link/languages/'.LANGUAGE .'.php');
+}
+
+// get target page_id
+$table = TABLE_PREFIX.'mod_menu_link';
+$sql_result = $database->query("SELECT * FROM $table WHERE section_id = '$section_id'");
+$sql_row = $sql_result->fetchRow();
+$target_page_id = $sql_row['target_page_id'];
+$r_type = $sql_row['redirect_type'];
+$extern = $sql_row['extern'];
+$anchor = $sql_row['anchor'];
+$sel = ' selected="selected"';
+
+// Get list of all visible pages and build a page-tree
+
+// this function will fetch the page_tree, recursive
+if(!function_exists('menulink_make_tree')) {
+function menulink_make_tree($parent, $link_pid, $tree) {
+	global $database, $admin, $menulink_titles;
+	$table_p = TABLE_PREFIX."pages";
+	// get list of page-trails, recursive
+	if($query_page = $database->query("SELECT * FROM `$table_p` WHERE `parent`=$parent ORDER BY `position`")) {
+		while($page = $query_page->fetchRow()) {
+			if($admin->page_is_visible($page) ) {
+				$pids = explode(',', $page['page_trail']);
+				$entry = '';
+				foreach($pids as $pid)
+					$entry .= $menulink_titles[$pid].' / ';
+				$tree[$page['page_id']] = rtrim($entry, '/ ');
+				$tree = menulink_make_tree($page['page_id'], $link_pid, $tree);
+			}
+		}
+	}
+	return($tree);
+}
+}
+
+// get list of all page_ids and page_titles
+global $menulink_titles;
+$menulink_titles = array();
+$table_p = TABLE_PREFIX."pages";
+if($query_page = $database->query("SELECT `page_id`,`menu_title` FROM `$table_p`")) {
+	while($page = $query_page->fetchRow())
+		$menulink_titles[$page['page_id']] = $page['menu_title'];
+}
+// now get the tree
+$links = array();
+$links = menulink_make_tree(0, $page_id, $links);
+
+// Get list of targets (id=... or <a name ...>) from pages in $links
+$targets = array();
+$table_mw = TABLE_PREFIX."mod_wysiwyg";
+$table_s = TABLE_PREFIX."sections";
+foreach($links as $pid=>$l) {
+	if($query_section = $database->query("SELECT section_id, module FROM $table_s WHERE page_id = '$pid' ORDER BY position")) {
+		while($section = $query_section->fetchRow()) {
+			// get section-anchor
+			if(defined('SEC_ANCHOR') && SEC_ANCHOR!='') {
+				$targets[$pid][] = SEC_ANCHOR.$section['section_id'];
+			} else {
+				$targets[$pid] = array();
+			}
+			if($section['module'] == 'wysiwyg') {
+				if($query_page = $database->query("SELECT content FROM $table_mw WHERE section_id = '{$section['section_id']}' LIMIT 1")) {
+					$page = $query_page->fetchRow();
+					if(preg_match_all('/<(?:a[^>]+name|[^>]+id)\s*=\s*"([^"]+)"/i',$page['content'], $match)) {
+						foreach($match[1] AS $t) {
+							$targets[$pid][$t] = $t;
+						}
+					}
+				}
+			}
+		}
+	}
+}
+// get target-window for actual page
+$table = TABLE_PREFIX."pages";
+$query_page = $database->query("SELECT target FROM $table WHERE page_id = '$page_id'");
+$page = $query_page->fetchRow();
+$target = $page['target'];
+
+
+// script for target-select-box
+?>
+<script language="JavaScript" type="text/javascript">
+/*<![CDATA[*/
+	function populate() {
+		o=document.getElementById('menu_link');
+		d=document.getElementById('page_target');
+		e=document.getElementById('extern');
+		if(!d){return;}
+		var mitems=new Array();
+		mitems['0']=[' ','0'];
+		mitems['-1']=[' ','0'];
+		<?php
+		foreach($links AS $pid=>$link) {
+			$str="mitems['$pid']=[";
+			$str.="' ',";
+			$str.="'0',";
+			if(is_array($targets) && is_array($targets[$pid])) {
+				foreach($targets[$pid] AS $value) {
+					$str.="'#$value',";
+					$str.="'$value',";
+				}
+				$str=rtrim($str, ',');
+				$str.="];\n";
+			}
+			echo $str;
+		}
+		?>
+		d.options.length=0;
+		cur=mitems[o.options[o.selectedIndex].value];
+		if(!cur){return;}
+		d.options.length=cur.length/2;
+		j=0;
+		for(var i=0;i<cur.length;i=i+2)
+		{
+			d.options[j].text=cur[i];
+			d.options[j++].value=cur[i+1];
+		}
+
+		if(o.value=='-1') {
+			e.disabled = false;
+		} else {
+			e.disabled = true;
+		}
+	}
+
+/*]]>*/
+</script>
+<form name="menulink" action="<?php echo WB_URL ?>/modules/menu_link/save.php" method="post">
+<input type="hidden" name="page_id" value="<?php echo $page_id ?>" />
+<input type="hidden" name="section_id" value="<?php echo $section_id ?>" />
+<?php echo $admin->getFTAN(); ?>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td>
+		<?php echo $TEXT['LINK'].':' ?>
+	</td>
+	<td>
+		<select name="menu_link" id="menu_link" onchange="populate()" style="width:250px;" >
+			<option value="0"<?php echo $target_page_id=='0'?$sel:''?>><?php echo $TEXT['PLEASE_SELECT']; ?></option>
+			<option value="-1"<?php echo $target_page_id=='-1'?$sel:''?>><?php echo $MOD_MENU_LINK['EXTERNAL_LINK']; ?></option>
+			<?php foreach($links AS $pid=>$link) {
+				if ($pid == $page_id)  // Display current page with selection disabled
+					echo "<option value=\"$pid\" disabled=\"disabled\">$link *</option>\n";
+				else
+					echo "<option value=\"$pid\" ".($target_page_id==$pid?$sel:'').">$link</option>\n";
+			} ?>
+		</select>
+		&nbsp;
+		<input type="text" name="extern" id="extern" value="<?php echo $extern; ?>" style="width:250px;" <?php if($target_page_id!='-1') echo 'disabled="disabled"'; ?> />
+	</td>
+</tr>
+<tr>
+	<td>
+		<?php echo $TEXT['ANCHOR'].':' ?>
+	</td>
+	<td>
+		<select name="page_target" id="page_target" onfocus="populate()" style="width:250px;" >
+			<option value="<?php echo $anchor ?>" selected="selected"><?php echo $anchor=='0'?' ':'#'.$anchor ?></option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td>
+		<?php echo $TEXT['TARGET'].':' ?>
+	</td>
+	<td>
+		<select name="target" style="width:250px;" >
+			<option value="_blank"<?php if($target=='_blank') echo ' selected="selected"'; ?>><?php echo $TEXT['NEW_WINDOW'] ?></option>
+			<option value="_self"<?php if($target=='_self') echo ' selected="selected"'; ?>><?php echo $TEXT['SAME_WINDOW'] ?></option>
+			<option value="_top"<?php if($target=='_top') echo ' selected="selected"'; ?>><?php echo $TEXT['TOP_FRAME'] ?></option>
+		</select>
+	</td>
+</tr>
+<tr>
+	<td>
+		<?php echo $MOD_MENU_LINK['R_TYPE'].':' ?>
+	</td>
+	<td>
+		<select name="r_type" style="width:250px;" >
+			<option value="301"<?php if($r_type=='301') echo ' selected="selected"'; ?>>301</option>
+			<option value="302"<?php if($r_type=='302') echo ' selected="selected"'; ?>>302</option>
+		</select>
+	</td>
+</tr>
+</table>
+
+<br />
+
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+<tr>
+	<td align="left">
+		<input type="submit" value="<?php echo $TEXT['SAVE'] ?>" style="width: 100px; margin-top: 5px;" />
+	</td>
+	<td align="right">
+		<input type="button" value="<?php echo $TEXT['CANCEL'] ?>" onclick="javascript: window.location = 'index.php';" style="width: 100px; margin-top: 5px;" />
+	</td>
+</tr>
+</table>
+
+</form>

Property changes on: tags/2.8.3/wb/modules/menu_link/modify.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/upgrade.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+// Must include code to stop this file being access directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_menu_link';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/add.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/add.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/add.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-11 20:29:52 +0100 (Di, 11 Jan 2011) $
+ *
+ */
+
+
+// prevent this file from being accesses directly
+if(defined('WB_PATH') == false) {
+	exit("Cannot access this file directly"); 
+}
+
+$table = TABLE_PREFIX ."mod_menu_link";
+$database->query("INSERT INTO `$table` (`page_id`, `section_id`, `target_page_id`, `anchor`, `extern`) VALUES ('$page_id', '$section_id', '0', '0', '')");

Property changes on: tags/2.8.3/wb/modules/menu_link/add.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/view.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/view.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/view.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         Menu Link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-11 20:29:52 +0100 (Di, 11 Jan 2011) $
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/menu_link/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/menu_link/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/menu_link/languages/'.LANGUAGE .'.php');
+}
+
+?>
+<a href="<?php echo WB_URL; ?>">
+<?php echo $MOD_MENU_LINK['TEXT']; ?>
+</a>

Property changes on: tags/2.8.3/wb/modules/menu_link/view.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/uninstall.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         Menu Link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-11 20:29:52 +0100 (Di, 11 Jan 2011) $
+ *
+ */
+
+// prevent this file from being accesses directly
+if(defined('WB_PATH') == false) {
+	exit("Cannot access this file directly"); 
+}
+
+$table = TABLE_PREFIX ."mod_menu_link";
+$database->query("DROP TABLE `$table`");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/uninstall.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/info.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/info.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         Menu Link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-11 20:29:52 +0100 (Di, 11 Jan 2011) $
+ *
+ */
+
+
+/* History:
+2.8 - June 2009
+- Improved the pagelist (thorn)
+- Added different redirect types 301 or 302 (thorn)
+- Set platform version 2.8
+
+2.7 - 24. Jan. 2008 - doc
+- added language support, changed platform to 2.7
+
+2.6.1.1 - 16. Jan. 2008 - thorn
+- added table mod_menu_link
+- added install.php, delete.php, add.php
+- changed wb/index.php: redirect if page is menu_link
+- removed special-handling of menu_link in: admin/pages/settings2.php
+
+*/
+
+$module_directory = 'menu_link';
+$module_name = 'Menu Link';
+$module_function = 'page';
+$module_version = '2.8';
+$module_platform = '2.8.x';
+$module_author = 'Ryan Djurovich, thorn';
+$module_license = 'GNU General Public License';
+$module_description = 'This module allows you to insert a link into the menu.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/delete.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/delete.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/delete.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         Menu Link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/modules/wysiwyg/modify.php $
+ * @lastmodified    $Date: 2011-01-11 20:29:52 +0100 (Di, 11 Jan 2011) $
+ *
+ */
+
+// prevent this file from being accesses directly
+if(defined('WB_PATH') == false) {
+	exit("Cannot access this file directly"); 
+}
+
+$table = TABLE_PREFIX ."mod_menu_link";
+$database->query("DELETE FROM `$table` WHERE section_id = '$section_id'");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/delete.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/index.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         menu_link
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/DA.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT'] = 'Klik HER for at f&Atilde;&yen; til hovedsiden';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = 'Eksternt link';
+$MOD_MENU_LINK['R_TYPE'] = 'Redirect-type';
+
+?>

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/NO.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  NORWEGIAN LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT']			= 'Klikk HER for &aring; komme til hovedsiden';
+$MOD_MENU_LINK['EXTERNAL_LINK']	= 'Ekstern lenke';
+$MOD_MENU_LINK['R_TYPE'] = 'Omdirigerings Type';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/FR.php	(revision 1610)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT']				= 'Cliquez ICI pour retourn&eacute; &agrave; la page principale';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = 'Lien externe';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/NL.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT']				= 'Klik HIER om naar de hoofdpagina te gaan';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = 'Externe Link';
+$MOD_MENU_LINK['R_TYPE'] = 'Redirect-Type';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/EN.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  ENGLISH LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT']				= 'Click HERE to go to the main page';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = 'External Link';
+$MOD_MENU_LINK['R_TYPE'] = 'Redirect-Type';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/RU.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project http://www.websitebaker.org/
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  RUSSIAN LANGUAGE FILE FOR THE ADDON: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_MENU_LINK['TEXT']				= '&#1053;&#1072;&#1078;&#1084;&#1080;&#1090;&#1077; &#1079;&#1076;&#1077;&#1089;&#1100; &#1076;&#1083;&#1103; &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1072; &#1085;&#1072; &#1075;&#1083;&#1072;&#1074;&#1085;&#1091;&#1102;';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = '&#1042;&#1085;&#1077;&#1096;&#1085;&#1103;&#1103; &#1089;&#1089;&#1099;&#1083;&#1082;&#1072;';
+$MOD_MENU_LINK['R_TYPE'] = 'Redirect-Type';
+
+?>

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/menu_link/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/menu_link/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/menu_link/languages/DE.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS MODUL: MENU_LINK
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description 	= 'Dieses Modul erm&ouml;glicht die Anzeige eines Links im Seitenmen&uuml;.';
+
+// Ueberschriften und Textausgaben
+$MOD_MENU_LINK['TEXT']				= 'Klicken Sie HIER um zur Startseite zu gelangen';
+$MOD_MENU_LINK['EXTERNAL_LINK'] = 'Entfernte Adresse';
+$MOD_MENU_LINK['R_TYPE'] = 'Redirect-Typ';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/menu_link/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/uninstall.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX .'mod_captcha_control';
+$database->query("DROP TABLE `$table`");

Property changes on: tags/2.8.3/wb/modules/captcha_control/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/info.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/info.php	(revision 1610)
@@ -0,0 +1,33 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+$module_directory 	= 'captcha_control';
+$module_name        = 'Captcha and Advanced-Spam-Protection (ASP) Control';
+$module_function    = 'tool';
+$module_version     = '1.2.0';
+$module_platform    = '2.7 | 2.8.x';
+$module_author      = 'Thomas Hornik (thorn)';
+$module_license     = 'GNU General Public License';
+$module_description = 'Admin-Tool to control CAPTCHA and ASP';

Property changes on: tags/2.8.3/wb/modules/captcha_control/info.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/tool.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/tool.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/tool.php	(revision 1610)
@@ -0,0 +1,200 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+if(!file_exists(WB_PATH .'/modules/captcha_control/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH .'/modules/captcha_control/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH .'/modules/captcha_control/languages/'.LANGUAGE .'.php');
+}
+
+$table = TABLE_PREFIX.'mod_captcha_control';
+$js_back = ADMIN_URL.'/admintools/tool.php?tool=captcha_control';
+
+// check if data was submitted
+if(isset($_POST['save_settings'])) {
+	if (!$admin->checkFTAN())
+	{
+		if(!$admin_header) { $admin->print_header(); }
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $js_back );
+	}
+	
+	// get configuration settings
+	$enabled_captcha = ($_POST['enabled_captcha'] == '1') ? '1' : '0';
+	$enabled_asp = ($_POST['enabled_asp'] == '1') ? '1' : '0';
+	$captcha_type = $admin->add_slashes($_POST['captcha_type']);
+	
+	// update database settings
+	$database->query("UPDATE $table SET
+		enabled_captcha = '$enabled_captcha',
+		enabled_asp = '$enabled_asp',
+		captcha_type = '$captcha_type'
+	");
+
+	// save text-captchas
+	if($captcha_type == 'text') { // ct_text
+		$text_qa=$admin->add_slashes($_POST['text_qa']);
+		if(!preg_match('/### .*? ###/', $text_qa)) {
+			$database->query("UPDATE $table SET ct_text = '$text_qa'");
+		}
+	}
+	
+	// check if there is a database error, otherwise say successful
+	if(!$admin_header) { $admin->print_header(); }
+	if($database->is_error()) {
+		$admin->print_error($database->get_error(), $js_back);
+	} else {
+		$admin->print_success($MESSAGE['PAGES']['SAVED'], $js_back);
+	}
+
+} else {
+}
+	
+	// include captcha-file
+	require_once(WB_PATH .'/include/captcha/captcha.php');
+
+	// load text-captchas
+	$text_qa='';
+	if($query = $database->query("SELECT ct_text FROM $table")) {
+		$data = $query->fetchRow();
+		$text_qa = $data['ct_text'];
+	}
+	if($text_qa == '')
+		$text_qa = $MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'];
+
+// script to load image
+?>
+<script type="text/javascript">
+	var pics = new Array();
+
+	pics["ttf_image"] = new Image();
+	pics["ttf_image"].src = "<?php echo WB_URL.'/include/captcha/captchas/ttf_image.png'?>";
+
+	pics["calc_image"] = new Image();
+	pics["calc_image"].src = "<?php echo WB_URL.'/include/captcha/captchas/calc_image.png'?>";
+
+	pics["calc_ttf_image"] = new Image();
+	pics["calc_ttf_image"].src = "<?php echo WB_URL.'/include/captcha/captchas/calc_ttf_image.png'?>";
+
+	pics["old_image"] = new Image();
+	pics["old_image"].src = "<?php echo WB_URL.'/include/captcha/captchas/old_image.png'?>";
+	
+	pics["calc_text"] = new Image();
+	pics["calc_text"].src = "<?php echo WB_URL.'/include/captcha/captchas/calc_text.png'?>";
+	
+	pics["text"] = new Image();
+	pics["text"].src = "<?php echo WB_URL.'/include/captcha/captchas/text.png'?>";
+
+	function load_captcha_image() {
+		document.captcha_example.src = pics[document.store_settings.captcha_type.value].src;
+		toggle_text_qa();
+	}
+	
+	function toggle_text_qa() {
+		if(document.store_settings.captcha_type.value == 'text' ) {
+			document.getElementById('text_qa').style.display = '';
+		} else {
+			document.getElementById('text_qa').style.display = 'none';
+		}
+	}
+
+</script>
+<?php
+
+	// connect to database and read out captcha settings
+	if($query = $database->query("SELECT * FROM $table")) {
+		$data = $query->fetchRow();
+		$enabled_captcha = $data['enabled_captcha'];
+		$enabled_asp = $data['enabled_asp'];
+		$captcha_type = $data['captcha_type'];
+	} else {
+		// something went wrong, use dummy value
+		$enabled_captcha = '1';
+		$enabled_asp = '1';
+		$captcha_type = 'calc_text';
+	}
+		
+	// write out heading
+	echo '<h2>' .$MOD_CAPTCHA_CONTROL['HEADING'] .'</h2>';
+
+	// output the form with values from the database
+	echo '<p>' .$MOD_CAPTCHA_CONTROL['HOWTO'] .'</p>';
+?>
+<form name="store_settings" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
+	<?php echo $admin->getFTAN(); ?>
+	<table width="98%" cellspacing="0" border="0" cellpadding="5px" class="row_a">
+	<tr><td colspan="2"><strong><?php echo $MOD_CAPTCHA_CONTROL['CAPTCHA_CONF'];?>:</strong></td></tr>
+	<tr>
+		<td width="30%"><?php echo $MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE'];?>:</td>
+		<td>
+		<select name="captcha_type" id="captcha_type" onchange="load_captcha_image()" style="width: 98%;">
+			<?php foreach($useable_captchas AS $key=>$text) {
+			echo "<option value=\"$key\" ".($captcha_type==$key ? ' selected="selected"' : '').">$text</option>";
+			} ?>
+		</select>
+		</td>
+	</tr>
+	<tr>
+		<td>&nbsp;</td>
+		<td align="left" width="150px">
+            <img alt="captcha_example" id="captcha_example" src="<?php echo WB_URL.'/include/captcha/captchas/'.$captcha_type.'.png'?>" />
+        </td>
+	</tr>
+	<tr id="text_qa" style="display:<?php if($captcha_type=='text') echo ''; else echo 'none'; ;?>;">
+		<td valign="top" class="setting_name"><?php echo $MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT'];?>:</td>
+		<td class="setting_value" colspan="2">
+			<textarea name="text_qa" cols="60" rows="10"><?php echo $text_qa; ?></textarea>
+		</td>
+	</tr>
+	<tr>
+		<td><?php echo $MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA'];?>:</td>
+		<td>
+			<input type="radio" <?php echo ($enabled_captcha=='1') ?'checked="checked"' :'';?>
+				name="enabled_captcha" value="1" /><?php echo $MOD_CAPTCHA_CONTROL['ENABLED'];?>
+			<input type="radio" <?php echo ($enabled_captcha=='0') ?'checked="checked"' :'';?>
+				name="enabled_captcha" value="0" /><?php echo $MOD_CAPTCHA_CONTROL['DISABLED'];?>
+		</td>
+	</tr>
+	<tr><td>&nbsp;</td><td style="font-size:smaller;"><?php echo $MOD_CAPTCHA_CONTROL['CAPTCHA_EXP'];?></td></tr>
+	<tr><td colspan="2"><br /><strong><?php echo $MOD_CAPTCHA_CONTROL['ASP_CONF'];?>:</strong></td></tr>
+	<tr>
+		<td><?php echo $MOD_CAPTCHA_CONTROL['ASP_TEXT'];?>:</td>
+		<td>
+			<input type="radio" <?php echo ($enabled_asp=='1') ?'checked="checked"' :'';?>
+				name="enabled_asp" value="1" /><?php echo $MOD_CAPTCHA_CONTROL['ENABLED'];?>
+			<input type="radio" <?php echo ($enabled_asp=='0') ?'checked="checked"' :'';?>
+				name="enabled_asp" value="0" /><?php echo $MOD_CAPTCHA_CONTROL['DISABLED'];?>
+		</td>
+	</tr>
+	<tr>
+        <td>&nbsp;</td>
+        <td style="font-size:smaller;"><?php echo $MOD_CAPTCHA_CONTROL['ASP_EXP'];?></td>
+    </tr>
+	</table>
+	<input type="submit" name="save_settings" style="margin-top:10px; width:140px;" value="<?php echo $TEXT['SAVE']; ?>" />
+</form>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/tool.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/install.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/install.php	(revision 1610)
@@ -0,0 +1,47 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+$table = TABLE_PREFIX.'mod_captcha_control';
+$database->query("DROP TABLE IF EXISTS `$table`");
+
+$database->query("CREATE TABLE IF NOT EXISTS `$table` (
+	`enabled_captcha` VARCHAR(1) NOT NULL DEFAULT '1',
+	`enabled_asp` VARCHAR(1) NOT NULL DEFAULT '0',
+	`captcha_type` VARCHAR(255) NOT NULL DEFAULT 'calc_text',
+	`asp_session_min_age` INT(11) NOT NULL DEFAULT '20',
+	`asp_view_min_age` INT(11) NOT NULL DEFAULT '10',
+	`asp_input_min_age` INT(11) NOT NULL DEFAULT '5',
+	`ct_text` LONGTEXT NOT NULL
+	) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"
+);
+
+// add new row using the table default values defined above
+$database->query("
+	INSERT INTO `$table`
+		(`enabled_captcha`, `enabled_asp`, `captcha_type`)
+	VALUES
+		('1', '1', 'calc_text')
+");

Property changes on: tags/2.8.3/wb/modules/captcha_control/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/upgrade.php	(revision 1610)
@@ -0,0 +1,37 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+$msg = '';
+$sTable = TABLE_PREFIX.'mod_captcha_control';
+if(($sOldType = $database->getTableEngine($sTable))) {
+	if(('myisam' != strtolower($sOldType))) {
+		if(!$database->query('ALTER TABLE `'.$sTable.'` Engine = \'MyISAM\' ')) {
+			$msg = $database->get_error();
+		}
+	}
+} else {
+	$msg = $database->get_error();
+}
+// ------------------------------------
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/index.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         captcha_control
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('Location: ../index.php');

Property changes on: tags/2.8.3/wb/modules/captcha_control/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/FTAN_SUPPORTED
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/FTAN_SUPPORTED	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/FTAN_SUPPORTED	(revision 1610)
@@ -0,0 +1 @@
+This module supports the FTAN-System
\ No newline at end of file
Index: tags/2.8.3/wb/modules/captcha_control/languages/PL.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/PL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/PL.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  POLISH LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Captcha i Kontrola ASP';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Tutaj możesz zmieć tryb wyświetlania "CAPTCHA" i ustawić zaawansowaną ochronę przed spamem (ASP).';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'Konfiguracja CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'Rodzaj CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'Ustawienia CAPTCHA dla modułów znajdują się w opcjach modułu';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'Aktywacja CAPTCHA przy rejestracji';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Włączone';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'Wyłączone';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Ustawienia - zaawansowana ochrona przed spamem';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'Aktywuj ASP (jeśli dostępne)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP będzie weryfikować czy dodana treść pochodzi od człowieka czy spam-bota.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'Weryfikacja tekstu';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'Weryfikacja obrazu';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'Weryfikacja obrazu z różnymi czcionkami i tłem'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Obraz z różnych czcionek i tła';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Stary styl (nie polecane)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'Treść-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Pytania i odpowiedzi';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Usuń wszystko aby dodać własną treść.'."\n".'W przeciwnym razie twoje zmiany nie zostaną zapisane!'."\n".'### przykład ###'."\n".'Wpisuj tylko pytania i odpowiedzi.'."\n".'Ułóż treści w następujący sposób:'."\n".'?Jak Adam Małysz ma na imię?'."\n".'!Adam'."\n".'?Pytanie 2'."\n".'!Odpowiedź 2'."\n".''."\n".'Jeśli język treści jest nieistotny.'."\n".' ... '."\n".'bądź jest ułóż treść w pastępujący sposób:'."\n".'?PL:Jak Adam Małysz ma na imię?'."\n".'!Adam'."\n".'?PL:Pytanie 2'."\n".'!Odpowiedź 2'."\n".'?DE:Wie ist der Vorname von Claudia Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### przykład ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = 'Weryfikacja';
+$MOD_CAPTCHA['ADDITION']               = 'plus';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'minus';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'razy';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'wpisz wynik';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'wpisz tekst';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'odpowiedz na pytanie';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'weryfikacja nie powiodła się';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/PL.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/SK.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/SK.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/SK.php	(revision 1610)
@@ -0,0 +1,52 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         languages
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Captcha a ASP kontrola';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Tu m&ocirc;&#382;ete ovplyvni&#357; spr&aacute;vanie "CAPTCHA" a "Advanced Spam Protection" (ASP).
+						Ak chcete pou&#382;&iacute;va&#357; ASP pr&aacute;cu s dan&yacute;m modulom, tento &#353;peci&aacute;lny modul, mus&iacute; by&#357; upraven&yacute; pre vyu&#382;itie ASP.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'CAPTCHA Konfigur&aacute;cia';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'Typ CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'CAPTCHA settings for modules are located in the respective module settings';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'Aktivova&#357; CAPTCHA pre prihl&aacute;senie';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Povoli&#357;';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'Zak&aacute;za&#357;';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Advanced Spam Protection Konfigur&aacute;cia';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'Aktivova&#357; ASP (ak je dostupn&eacute;)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP sa sna&#382;&iacute; zisti&#357;, &#269;i forma vstupu poch&aacute;dza od &#269;loveka alebo spam-bota.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'V&yacute;po&#269;et ako text';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'V&yacute;po&#269;et ako obr&aacute;zok';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'V&yacute;po&#269;et ako obr&aacute;zok s r&ocirc;znymi fontmy a pozad&iacute;m'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Obr&aacute;zok s r&ocirc;znymi fontmy a pozad&iacute;m';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Star&yacute; sp&ocirc;sob (neodpor&uacute;&#269;a sa)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'Text-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Ot&aacute;zky a odpovede';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Delete this all to add your own entries'."\n".'or your changes won\'t be saved!'."\n".'### example ###'."\n".'Here you can enter Questions and Answers.'."\n".'Use:'."\n".'?What\'s <b>Claudia</b> Schiffer\'s <b>first name</b>?'."\n".'!Claudia'."\n".'?Question 2'."\n".'!Answer 2'."\n".''."\n".'if language doesn\'t matter.'."\n".' ... '."\n".'Or, if language do matter, use:'."\n".'?EN:What\'s <b>Claudia</b> Schiffer\'s <b>first name</b>?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der <b>Vorname</b> von <b>Claudia</b> Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### example ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = 'Overenie';
+$MOD_CAPTCHA['ADDITION']               = 'plus';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'm&iacute;nus';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'n&aacute;sobi&#357;';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'Vlo&#382;te v&yacute;sledok';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Vlo&#382;te text';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'Odpove na ot&aacute;zku';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Overenie zlyhalo';
+
+?> 
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/SK.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/EN.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/EN.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  ENGLISH LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Captcha and ASP control';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Here you can control the behavior of "CAPTCHA" and "Advanced Spam Protection" (ASP). To get ASP work with a given module, this special module has to be adapted to make use of ASP.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'CAPTCHA Configuration';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'Type of CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'CAPTCHA settings for modules are located in the respective module settings';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'Activate CAPTCHA for signup';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Enabled';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'Disabled';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Advanced Spam Protection Configuration';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'Activate ASP (if available)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP tries to determine if a form-input was originated from a human or a spam-bot.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'Calculation as text';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'Calculation as image';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'Calculation as image with varying fonts and backgrounds'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Image with varying fonts and backgrounds';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Old style (not recommended)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'Text-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Questions and Answers';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Delete this all to add your own entries'."\n".'or your changes won\'t be saved!'."\n".'### example ###'."\n".'Here you can enter Questions and Answers.'."\n".'Use:'."\n".'?What\'s Claudia Schiffer\'s first name?'."\n".'!Claudia'."\n".'?Question 2'."\n".'!Answer 2'."\n".''."\n".'if language doesn\'t matter.'."\n".' ... '."\n".'Or, if language do matter, use:'."\n".'?EN:What\'s Claudia Schiffer\'s first name?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der Vorname von Claudia Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### example ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = 'Verification';
+$MOD_CAPTCHA['ADDITION']               = 'add';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'subtract';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'multiply';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'Fill in the result';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Fill in the text';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'Answer the question';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Verification failed';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/DE.php	(revision 1610)
@@ -0,0 +1,63 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS CAPTCHA-CONTROL ADMINISTRATIONS TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description 	= 'Admin-Tool um das Verhalten von CAPTCHA und ASP zu kontrollieren';
+
+// Ueberschriften und Textausgaben
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Captcha- und ASP Steuerung';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Hiermit kann das Verhalten von "CAPTCHA" und "Advanced Spam Protection" (ASP) gesteuert werden. Damit ASP in einem Modul wirken kann, muss das verwendete Modul entsprechend angepasst sein.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'CAPTCHA-Einstellungen';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'CAPTCHA-Typ';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'Die CAPTCHA-Einstellungen f&uuml;r die Module befinden sich in den jeweiligen Modul-Optionen';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'CAPTCHA f&uuml;r Registrierung aktivieren';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Aktiviert';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'Ausgeschaltet';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Erweiterter-Spam-Schutz (ASP) Einstellungen';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'ASP benutzen (wenn im Modul vorhanden)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP versucht anhand der verschiedenen Verhaltensweisen zu erkennen, ob eine Formular-Eingabe von einem Menschen oder einem Spam-Bot kommt.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'Rechnung als Text';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'Rechnung als Bild';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'Rechnung als Bild mit wechselnden Schriften und Hintergr&uuml;nden';
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Bild mit wechselnden Schriften und Hintergr&uuml;nden';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Alter Stil (nicht empfohlen)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'Text-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Fragen und Antworten';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Bitte hier alles l&ouml;schen'."\n".'sonst werden Ihre &Auml;nderungen nicht gespeichert!'."\n".'### Beispiel ###'."\n".'Hier k&ouml;nnen sie Fragen und Antworten eingeben.'."\n".'Entweder:'."\n".'?Wie ist der Vorname von Claudia Schiffer?'."\n".'!Claudia'."\n".'?Frage 2'."\n".'!Antwort 2'."\n".' ... '."\n".'wenn nur eine Sprache benutzt wird.'."\n".''."\n".'Oder, wenn die Sprache relevant ist:'."\n".'?EN:What\'s Claudia Schiffer\'s first name?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der Vorname von Claudia Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### Beispiel ###'."\n".'';
+$MOD_CAPTCHA['VERIFICATION']           = 'Pr&uuml;fziffer';
+$MOD_CAPTCHA['ADDITION']               = 'plus';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'minus';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'mal';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'Bitte Ergebnis eintragen';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Bitte Text eintragen';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'Bitte Frage beantworten';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Das Ergebnis ist falsch. Bitte tragen Sie es erneut ein';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/NL.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']				= 'CAPTCHA en Advanced Spam Protection';
+$MOD_CAPTCHA_CONTROL['HOWTO']				= 'Hier kunt u "CAPTCHA" en "Advanced Spam Protection" (ASP) beheren. Let op: alleen daarvoor aangepaste modules werken met ASP.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']		= 'CAPTCHA-configuratie';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']		= 'Type CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']			= 'Let op: CAPTCHA-instellingen voor modules bevinden zich in de desbetreffende module-instellingen.';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']	= 'Activeer CAPTCHA voor aanmeldingen';
+$MOD_CAPTCHA_CONTROL['ENABLED']				= 'Inschakelen';
+$MOD_CAPTCHA_CONTROL['DISABLED']			= 'Uitschakelen';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']			= 'Advanced Spam Protection';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']			= 'Activeer ASP (indien beschikbaar)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']				= 'ASP probeert te detecteren of het formulier ingevuld werd door een persoon of een spam-bot.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']			= 'Rekensom als tekst';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']			= 'Rekensom als afbeelding';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']		= 'Rekensom als afbeelding met verschillende lettertypen en achtergronden';
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']			= 'Afbeelding met verschillende lettertypen en achtergronden';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']			= 'Oude stijl (niet aan te raden)';
+$MOD_CAPTCHA_CONTROL['TEXT']				= 'Tekst-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']	= 'Vragen en antwoorden';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC']	= 'Verwijder dit om uw lijst in te voeren, of de wijzigingen zullen niet bewaard worden!'."\n".'### voorbeeld ###'."\n".'Hier kunt u vragen en antwoorden invoeren.'."\n".'Gebruik:'."\n".'?Wat is de <b>voornaam</b> van <b>Pietje</b> Puk?'."\n".'!Pietje'."\n".'?Vraag 2'."\n".'!Antwoord 2'."\n".' ... '."\n".'indien de taal geen rol speelt.'."\n".''."\n".'Of, indien taal wel een rol speelt, gebruik:'."\n".'?EN:What\'s <b>John</b> Doe\'s <b>first name</b>?'."\n".'!John'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der <b>Vorname</b> von <b>Claudia</b> Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### voorbeeld ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']				= 'Verificatie';
+$MOD_CAPTCHA['ADDITION']					= 'plus';
+$MOD_CAPTCHA['SUBTRAKTION']					= 'min';
+$MOD_CAPTCHA['MULTIPLIKATION']				= 'maal';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']		= 'Voer het resultaat in a.u.b.';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT']		= 'Voer de tekst in a.u.b.';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST']		= 'Beantwoord de vraag a.u.b.';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION']		= 'Verificatie mislukt';
+
+?>

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/DA.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING'] = 'Captcha og ASP styring';
+$MOD_CAPTCHA_CONTROL['HOWTO'] = 'Her kan du styre anvendelsen af  of "CAPTCHA" og "Avanceres spambeskyttelse" (ASB). For at f&Atilde;&yen; ASB til at fungere sammen med et givet modul, skal det p&Atilde;&yen;g&Atilde;&brvbar;ldende modul  tilrettes til at anvende ASB';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF'] = 'CAPTCHA konfigurering';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE'] = 'Type af CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP'] = 'CAPTCHA indstillinger for moduler findes i modulindstillingerne for de respektive moduler';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA'] = 'Brug af CAPTCHA ved tilmelding';
+$MOD_CAPTCHA_CONTROL['ENABLED'] = 'Sl&Atilde;&yen; til';
+$MOD_CAPTCHA_CONTROL['DISABLED'] = 'Sl&Atilde;&yen; fra';
+$MOD_CAPTCHA_CONTROL['ASP_CONF'] = 'Indstillnger for avanceret spam beskyttelse';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT'] = 'Aktiver ASB (hvis muligt)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP'] = 'ASB fors&Atilde;ger at afg&Atilde;re om en formular er udfyldt af en menneske eller spam-robot';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT'] = 'Beregning som tekst';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE'] = 'Beregning som billede';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE'] = 'Beregning som billede med forskellige fonte og baggrunde';
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE'] = 'Billede med forskellige fonte og baggrunde';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE'] = 'Traditionel m&Atilde;&yen;de (anbefales ikke)';
+$MOD_CAPTCHA_CONTROL['TEXT'] = 'Tekst-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT'] = 'Sp&Atilde;rgsm&Atilde;&yen;l og svar';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Slet alt her for at lave dine egne valg."n".eller dine &Atilde;&brvbar;ndringer bliver ikke gemt!."n".### eksempel ###."n".Her kan du indtaste sp&Atilde;rgsm&Atilde;&yen;l og svar."n".Brug:."n".?Hvad er  <b>Anne</b> Linnets <b>fornavn</b>?."n".!Anne."n".?Sp&Atilde;rgsm&Atilde;&yen;l 2."n".!Svar 2."n".."n".hvis sproget er uden betydning.."n". ... ."n".Eller, hvis sproget har betydning, brug:."n".?EN:Whats <b>Anne</b> Linnets <b>first name</b>?."n".!Anne."n".?EN:Question 2."n".!Answer 2."n".?DE:Wie ist der <b>Vorname</b> von <b>Anne</b> Linnet?."n".!Anne."n". ... ."n".### eksempel ###."n".';
+
+$MOD_CAPTCHA['VERIFICATION'] = 'Verificering';
+$MOD_CAPTCHA['ADDITION'] = 'adder';
+$MOD_CAPTCHA['SUBTRAKTION'] = 'tr&Atilde;&brvbar;k fra';
+$MOD_CAPTCHA['MULTIPLIKATION'] = 'gang';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES'] = 'Inds&Atilde;&brvbar;t resultat';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Inds&Atilde;&brvbar;t tekst';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'Besvar sp&Atilde;rgsm&Atilde;&yen;l';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Verificering mislykkedes';
+
+?>

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/NO.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+-----------------------------------------------------------------------------------------
+NORWEGIAN LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+-----------------------------------------------------------------------------------------
+  */
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Captcha og ASP kontroll';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Her kan du kontrolere hvordan du vil at "CAPTCHA" og "Avansert Spam Beskyttelse" (ASP) skal virke. For &aring; f&aring; ASP til &aring; fungere med en spesifik modul, m&aring; denne tilpasses for bruk sammen med ASP. ASP vil ellers ikke fungere med moduler hvor denne endringen ikke er gjort.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'CAPTCHA Konfigurasjon';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'Type CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'CAPTCHA instillinger for modulene, finner du under innstillinger i de respektive modulene.';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'Aktiver CAPTCHA for brukerregistreringen';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Aktivert';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'Deaktivert';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Konfigrering av Avansert Spam Beskyttelse';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'Aktiver ASP (om tilgjengelig)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP vil pr&oslash;ve &aring; fastsl&aring; hvor hvidt innfyllingen i et skjema ble gjort av et meneske eller en spam-robot.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'Kalkuler som tekst';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'Kalkuler som bilde';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'Kalkulering som bilde med varierende fonter og bakgrunner'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Bilde med varierende fonter og bakgrunner';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Gammel Type (Anbefales ikke!)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'Tekst-CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Sp&oslash;rsm&aring;l og svar';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Slett atlt dette for &aring; legge til dine egne innlegg ellers vil ikke endringene bli lagret!'."\n".'### eksempel ###'."\n".'Her kan du legge inn Sp&oslash;rsm&aring;l og Svar.'."\n".'Bruk:'."\n".'?Hva er <b>Claudia</b> Schiffer\'s <b>fornavn</b>?'."\n".'!Claudia'."\n".'?Sp&oslash;rsm&aring;l 2'."\n".'!Svar 2'."\n".''."\n".'om type spr&aring;k ikke er av betydning.'."\n".' ... '."\n".'Eller, om spr&aring;k er av betydning, bruk:'."\n".'?NO:Hva er <b>Claudia</b> Schiffer\'s <b>fornavn</b>?'."\n".'!Claudia'."\n".'?NO:Sp&oslash;rsm&aring;l 2'."\n".'!Svar 2'."\n".'?EN:What\'s <b>Claudia</b> Schiffer\'s <b>first name</b>?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der <b>Vorname</b> von <b>Claudia</b> Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### Eksempel ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = 'Verifikasjon';
+$MOD_CAPTCHA['ADDITION']               = 'pluss';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'minus';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'ganger';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'Skriv inn ressultatet';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Skriv inn teksten';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'Svar p&aring; sp&oslash;rsm&aring;let';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Feil ved verifiseringen';
+
+?>

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/FR.php	(revision 1610)
@@ -0,0 +1,63 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+//Module Description
+$module_description = 'Outil d&apos;administration de la v&eacute;rification par Captcha et du ASP';
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = 'Contr&ocirc;le du Captcha et de l&apos;ASP';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = 'Ici vous pouvez modifier le comportement du "CAPTCHA" et de l&apos;ASP (Advanced Spam Protection). Pour qu&apos;un module puisse utiliser l&apos;ASP, il doit &ecirc;tre sp&eacute;cifiquement adapt&eacute;.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = 'Configuration du CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = 'Type de CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = 'les r&eacute;glagles des CAPTCHA pour les modules sont d&eacute;finis dans leurs pr&eacute;f&eacute;rences respectives';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= 'CAPTCHA avant validation';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = 'Activ&eacute;';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = 'D&eacute;sactiv&eacute;';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = 'Configuration de l&apos;ASP (Advanced Spam Protection)';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = 'Activer ASP (si disponible)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP tente de d&eacute;terminer si un formulaire &agrave; &eacute;t&eacute; post&eacute; par un humain ou un spam-bot.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = 'Calcul sous forme de texte';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = 'Calcul sous forme d&apos;image';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = 'Calcul sous forme d&apos;image avec polices et fonds al&eacute;atoires'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = 'Image avec polices et fonds al&eacute;atoires';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = 'Ancienne m&eacute;thode (non recommand&eacute;)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = 'CAPTCHA texte';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= 'Questions et R&eacute;ponses';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Effacez ceci et remplacez le par votre propre texte'."\n".'sinon vos changements ne seront pas enregistr&eacute;s'."\n".'### exemple ###'."\n".'Saisissez ici vos questions et r&eacute;ponses.'."\n".'Utilisation:'."\n".'?Quel est le <b>pr&eacute;nom</b> de <b>Claudia</b> Schiffer ?'."\n".'!Claudia'."\n".'?Question 2'."\n".'!R&eacute;ponse 2'."\n".''."\n".'si le langage n&apos;a pas d&apos;importance.'."\n".' ... '."\n".'Ou, si vous utilisez la localisation:'."\n".'?FR:Quel est le <b>pr&eacute;nom</b> de <b>Claudia</b> Schiffer ?'."\n".'!Claudia'."\n".' ... '."\n".'?EN:What&apos;s <b>Claudia</b> Schiffer&apos;s <b>first name</b>?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'### exemple ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = 'V&eacute;rification';
+$MOD_CAPTCHA['ADDITION']               = 'ajout&eacute; &agrave; (+)';
+$MOD_CAPTCHA['SUBTRAKTION']            = 'moins (-)';
+$MOD_CAPTCHA['MULTIPLIKATION']         = 'multipli&eacute; par (x)';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = 'Indiquez le r&eacute;sultat';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = 'Remplissez le texte';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = 'R&eacute;pondez &agrave; la question';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = 'Erreur de v&eacute;rification';
+
+?>

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/RU.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/RU.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project http://www.websitebaker.org/
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+ -----------------------------------------------------------------------------------------
+  RUSSIAN LANGUAGE FILE FOR THE CAPTCHA-CONTROL ADMIN TOOL
+ -----------------------------------------------------------------------------------------
+*/
+
+// Headings and text outputs
+$MOD_CAPTCHA_CONTROL['HEADING']           = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; Captcha &#1080; ASP';
+$MOD_CAPTCHA_CONTROL['HOWTO']             = '&#1047;&#1076;&#1077;&#1089;&#1100; &#1074;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1103;&#1090;&#1100; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1072;&#1084;&#1080; "CAPTCHA" &#1080; "Advanced Spam Protection" (ASP). &#1044;&#1083;&#1103; &#1090;&#1086;&#1075;&#1086; &#1095;&#1090;&#1086;&#1073;&#1099;  ASP &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1083; &#1074; &#1084;&#1086;&#1076;&#1091;&#1083;&#1103;&#1093;, &#1074;&#1072;&#1084; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1077;&#1075;&#1086; &#1087;&#1086;&#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1077; &#1079;&#1076;&#1077;&#1089;&#1100;.';
+
+// Text and captions of form elements
+$MOD_CAPTCHA_CONTROL['CAPTCHA_CONF']      = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TYPE']      = '&#1058;&#1080;&#1087; CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_EXP']       = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; CAPTCHA &#1076;&#1083;&#1103; &#1084;&#1086;&#1076;&#1091;&#1083;&#1077;&#1081; &#1085;&#1072;&#1093;&#1086;&#1076;&#1103;&#1090;&#1089;&#1103; &#1074; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1072;&#1093; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1097;&#1077;&#1075;&#1086; &#1084;&#1086;&#1076;&#1091;&#1083;&#1103;';
+$MOD_CAPTCHA_CONTROL['USE_SIGNUP_CAPTCHA']= '&#1048;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; CAPTCHA &#1076;&#1083;&#1103; &#1092;&#1086;&#1088;&#1084;&#1099; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1080;';
+$MOD_CAPTCHA_CONTROL['ENABLED']           = '&#1042;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1086;';
+$MOD_CAPTCHA_CONTROL['DISABLED']          = '&#1042;&#1099;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1086;';
+$MOD_CAPTCHA_CONTROL['ASP_CONF']          = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; Advanced Spam Protection';
+$MOD_CAPTCHA_CONTROL['ASP_TEXT']          = '&#1048;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; ASP (&#1077;&#1089;&#1083;&#1080; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;)';
+$MOD_CAPTCHA_CONTROL['ASP_EXP']           = 'ASP &#1087;&#1099;&#1090;&#1072;&#1077;&#1090;&#1089;&#1103; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1080;&#1090;&#1100;, &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1077;&#1085;&#1072; &#1092;&#1086;&#1088;&#1084;&#1072; &#1095;&#1077;&#1083;&#1086;&#1074;&#1077;&#1082;&#1086;&#1084; &#1080;&#1083;&#1080; spam-&#1088;&#1086;&#1073;&#1086;&#1090;&#1086;&#1084;.';
+$MOD_CAPTCHA_CONTROL['CALC_TEXT']         = '&#1042;&#1099;&#1095;&#1080;&#1089;&#1083;&#1077;&#1085;&#1080;&#1103; (&#1090;&#1077;&#1082;&#1089;&#1090;)';
+$MOD_CAPTCHA_CONTROL['CALC_IMAGE']        = '&#1042;&#1099;&#1095;&#1080;&#1089;&#1083;&#1077;&#1085;&#1080;&#1103; (&#1082;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1072;)';
+$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE']    = '&#1042;&#1099;&#1095;&#1080;&#1089;&#1083;&#1077;&#1085;&#1080;&#1103; (&#1082;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1072; &#1089; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1084;&#1080; &#1096;&#1088;&#1080;&#1092;&#1090;&#1072;&#1084;&#1080; &#1080; &#1092;&#1086;&#1085;&#1086;&#1084;)'; 
+$MOD_CAPTCHA_CONTROL['TTF_IMAGE']         = '&#1050;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1072; &#1089; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1084;&#1080; &#1096;&#1088;&#1080;&#1092;&#1090;&#1072;&#1084;&#1080; &#1080; &#1092;&#1086;&#1085;&#1086;&#1084;';
+$MOD_CAPTCHA_CONTROL['OLD_IMAGE']         = '&#1057;&#1090;&#1072;&#1088;&#1099;&#1081; &#1089;&#1090;&#1080;&#1083;&#1100; (&#1085;&#1077; &#1088;&#1077;&#1082;&#1086;&#1084;&#1085;&#1076;&#1091;&#1077;&#1090;&#1100;&#1089;&#1103;)';
+$MOD_CAPTCHA_CONTROL['TEXT']              = '&#1058;&#1077;&#1082;&#1089;&#1090;&#1086;&#1074;&#1072;&#1103; CAPTCHA';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_ENTER_TEXT']= '&#1042;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099; &#1080; &#1054;&#1090;&#1074;&#1077;&#1090;&#1099;';
+$MOD_CAPTCHA_CONTROL['CAPTCHA_TEXT_DESC'] = 'Delete this all to add your own entries'."\n".'or your changes won\'t be saved!'."\n".'### example ###'."\n".'Here you can enter Questions and Answers.'."\n".'Use:'."\n".'?What\'s <b>Claudia</b> Schiffer\'s <b>first name</b>?'."\n".'!Claudia'."\n".'?Question 2'."\n".'!Answer 2'."\n".' ... '."\n".'if language doesn\'t matter.'."\n".''."\n".'Or, if language do matter, use:'."\n".'?EN:What\'s <b>Claudia</b> Schiffer\'s <b>first name</b>?'."\n".'!Claudia'."\n".'?EN:Question 2'."\n".'!Answer 2'."\n".'?DE:Wie ist der <b>Vorname</b> von <b>Claudia</b> Schiffer?'."\n".'!Claudia'."\n".' ... '."\n".'### example ###'."\n".'';
+
+$MOD_CAPTCHA['VERIFICATION']           = '&#1055;&#1088;&#1086;&#1074;&#1077;&#1088;&#1082;&#1072;';
+$MOD_CAPTCHA['ADDITION']               = '&#1087;&#1083;&#1102;&#1089;';
+$MOD_CAPTCHA['SUBTRAKTION']            = '&#1084;&#1080;&#1085;&#1091;&#1089;';
+$MOD_CAPTCHA['MULTIPLIKATION']         = '&#1091;&#1084;&#1085;&#1086;&#1078;&#1080;&#1090;&#1100; &#1085;&#1072;';
+$MOD_CAPTCHA['VERIFICATION_INFO_RES']  = '&#1059;&#1082;&#1072;&#1078;&#1080;&#1090;&#1077; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;';
+$MOD_CAPTCHA['VERIFICATION_INFO_TEXT'] = '&#1059;&#1082;&#1072;&#1078;&#1080;&#1090;&#1077; &#1090;&#1077;&#1082;&#1089;&#1090;';
+$MOD_CAPTCHA['VERIFICATION_INFO_QUEST'] = '&#1054;&#1090;&#1074;&#1077;&#1090;&#1100;&#1090;&#1077; &#1085;&#1072; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;';
+$MOD_CAPTCHA['INCORRECT_VERIFICATION'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1074;&#1077;&#1088;&#1080;&#1092;&#1080;&#1082;&#1072;&#1094;&#1080;&#1080;';
+
+?>

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/RU.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/captcha_control/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/captcha_control/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/captcha_control/languages/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/captcha_control/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/admin.php
===================================================================
--- tags/2.8.3/wb/modules/admin.php	(nonexistent)
+++ tags/2.8.3/wb/modules/admin.php	(revision 1610)
@@ -0,0 +1,196 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         modules
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2010, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+// Stop this file being access directly
+if(defined('WB_PATH') == false)
+{
+	die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+
+// Get page id
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$page_id = intval(isset(${$requestMethod}['page_id'])) ? ${$requestMethod}['page_id'] : (isset($page_id) ? intval($page_id) : 0);
+	if(	($page_id == 0)) {
+		header("Location: index.php");
+		exit(0);
+	}
+
+// Get section id if there is one
+	$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+	$section_id = intval(isset(${$requestMethod}['section_id'])) ? ${$requestMethod}['section_id'] : (isset($section_id) ? intval($section_id) : 0);
+	if(	($section_id == 0) && isset($section_required)) {
+		header("Location: $section_required");
+		exit(0);
+	}
+/*
+// be sure is is numeric
+$page_id = intval($page_id);
+$section_id = intval($section_id);
+*/
+// Create js back link
+// $js_back = 'javascript: history.go(-1);';
+$js_back = ADMIN_URL.'/pages/sections.php?page_id='.$page_id;
+// Create new admin object, you can set the next variable in your module
+// to print with or without header, default is with header
+// it is recommed to set the variable before including the /modules/admin.php
+$admin_header = (!isset($admin_header)) ? true : $admin_header;
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Pages', 'pages_modify',(bool)$admin_header);
+// Get perms
+// unset($admin_header);
+
+$page = $admin->get_page_details($page_id,ADMIN_URL.'/pages/index.php' );
+
+$old_admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
+$old_admin_users = explode(',', str_replace('_', '', $page['admin_users']));
+
+$in_group = false;
+foreach($admin->get_groups_id() as $cur_gid){
+    if (in_array($cur_gid, $old_admin_groups)) {
+        $in_group = true;
+    }
+}
+
+if((!$in_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users))) {
+	print $admin->get_group_id().$admin->get_user_id();
+	// print_r ($old_admin_groups);
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// some additional security checks:
+// Check whether the section_id belongs to the page_id at all
+if ($section_id != 0) {
+	$section = $admin->get_section_details($section_id,ADMIN_URL.'/pages/index.php');
+	if (!$admin->get_permission($section['module'], 'module'))
+	{
+		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+	}
+}
+
+// Workout if the developer wants to show the info banner
+if(isset($print_info_banner) && $print_info_banner == true) {
+	// Get page details already defined
+
+	// Get display name of person who last modified the page
+	$user = $admin->get_user_details($page['modified_by']);
+
+	// Convert the unix ts for modified_when to human a readable form
+	if($page['modified_when'] != 0) {
+		$modified_ts = gmdate(TIME_FORMAT.', '.DATE_FORMAT, $page['modified_when']+TIMEZONE);
+	} else {
+		$modified_ts = 'Unknown';
+	}
+
+	// Setup template object, parse vars to it, then parse it
+	$ThemePath = realpath(WB_PATH.$admin->correct_theme_source('pages_modify.htt'));
+	// Create new template object
+	$template = new Template($ThemePath);
+	// $template->debug = true;
+	$template->set_file('page', 'pages_modify.htt');
+	$template->set_block('page', 'main_block', 'main');
+	$template->set_block('main_block', 'section_block', 'section_list');
+	$template->set_block('section_block', 'block_block', 'block_list');
+	$template->set_var(array(
+				'PAGE_ID' => $page['page_id'],
+				// 'PAGE_IDKEY' => $admin->getIDKEY($page['page_id']),
+				'PAGE_IDKEY' => $page['page_id'],
+				'PAGE_TITLE' => ($page['page_title']),
+				'MENU_TITLE' => ($page['menu_title']),
+				'ADMIN_URL' => ADMIN_URL,
+				'WB_URL' => WB_URL,
+				'THEME_URL' => THEME_URL
+				));
+
+	$template->set_var(array(
+				'MODIFIED_BY' => $user['display_name'],
+				'MODIFIED_BY_USERNAME' => $user['username'],
+				'MODIFIED_WHEN' => $modified_ts,
+				'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
+				));
+
+	$template->set_block('main_block', 'show_modify_block', 'show_modify');
+	if($modified_ts == 'Unknown')
+	{
+	    $template->set_block('show_modify', '');
+		$template->set_var('CLASS_DISPLAY_MODIFIED', 'hide');
+
+	} else {
+		$template->set_var('CLASS_DISPLAY_MODIFIED', '');
+	    $template->parse('show_modify', 'show_modify_block', true);
+	}
+
+	// Work-out if we should show the "manage sections" link
+	$sql  = 'SELECT `section_id` FROM `'.TABLE_PREFIX.'sections` WHERE `page_id` = '.(int)$page_id.' ';
+	$sql .= 'AND `module` = "menu_link"';
+	$query_sections = $database->query($sql);
+
+	$template->set_block('main_block', 'show_section_block', 'show_section');
+	if($query_sections->numRows() > 0)
+	{
+		$template->set_block('show_section', '');
+		$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+
+	} elseif(MANAGE_SECTIONS == 'enabled')
+	{
+
+		$template->set_var('TEXT_MANAGE_SECTIONS', $HEADING['MANAGE_SECTIONS']);
+	    $template->parse('show_section', 'show_section_block', true);
+
+	} else {
+		$template->set_block('show_section', '');
+		$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+
+	}
+
+	// Insert language TEXT
+	$template->set_var(array(
+					'TEXT_CURRENT_PAGE' => $TEXT['CURRENT_PAGE'],
+					'TEXT_CHANGE_SETTINGS' => $TEXT['CHANGE_SETTINGS'],
+					'HEADING_MODIFY_PAGE' => $HEADING['MODIFY_PAGE']
+					));
+
+	// Parse and print header template
+	$template->parse('main', 'main_block', false);
+	$template->pparse('output', 'page');
+	// unset($print_info_banner);
+	unset($template);
+
+	if (SECTION_BLOCKS) {
+		if (isset($block[$section['block']]) && trim(strip_tags(($block[$section['block']]))) != '')
+                 {
+			$block_name = htmlentities(strip_tags($block[$section['block']]));
+		} else {
+			if ($section['block'] == 1)
+                     {
+				$block_name = $TEXT['MAIN'];
+			} else {
+				$block_name = '#' . (int) $section['block'];
+			}
+		}
+
+		$sec_anchor = (defined( 'SEC_ANCHOR' ) && ( SEC_ANCHOR != '' )  ? 'id="'.SEC_ANCHOR.$section['section_id'].'"' : '');
+		print '<div class="section-info" '.$sec_anchor.' ><b>' . $TEXT['BLOCK'] . ': </b>' . $block_name;
+		print '<b>  Modul: </b>' . $section['module']." ";
+		print '<b>  ID: </b>' . $section_id."</div>\n";
+	}
+
+} //
+
+// Work-out if the developer wants us to update the timestamp for when the page was last modified
+if(isset($update_when_modified) && $update_when_modified == true) {
+	$database->query("UPDATE ".TABLE_PREFIX."pages SET modified_when = '".time()."', modified_by = '".$admin->get_user_id()."' WHERE page_id = '$page_id'");
+}

Property changes on: tags/2.8.3/wb/modules/admin.php
___________________________________________________________________
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/edit_module_files.php
===================================================================
--- tags/2.8.3/wb/modules/edit_module_files.php	(nonexistent)
+++ tags/2.8.3/wb/modules/edit_module_files.php	(revision 1610)
@@ -0,0 +1,126 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         modules
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// include required libraries
+// include configuration file
+	require('../config.php');
+// include edit area wrapper script
+	require_once(WB_PATH.'/include/editarea/wb_wrapper_edit_area.php');
+// include functions to edit the optional module CSS files (frontend.css, backend.css)
+	require_once(WB_PATH.'/framework/module.functions.php');
+// $admin_header = false;
+// Tells script to update when this page was last updated
+	$update_when_modified = false;
+// show the info banner
+	$print_info_banner = true;
+// Include WB admin wrapper script
+	require(WB_PATH.'/modules/admin.php');
+/*
+	$page_id = (isset($_REQUEST['page_id']) ? intval($_REQUEST['page_id']) : 0  );
+	$section_id = (isset($_POST['section_id']) ? intval($_POST['section_id']) : 0  );
+*/
+	$_action = (isset($_POST['action']) ? strtolower($_POST['action']) : '');
+	$_action = ($_action != 'save' ? 'edit' : 'save');
+	$mod_dir = (isset($_POST['mod_dir']) ? $_POST['mod_dir'] : '');
+	$_edit_file = (isset($_POST['edit_file']) ? $_POST['edit_file'] : '');
+//check if given mod_dir + edit_file is valid path/file
+	$_realpath = realpath(WB_PATH.'/modules/'.$mod_dir.'/'.$_edit_file);
+	if($_realpath){
+	// realpath is a valid path, now test if it's inside WB_PATH
+		$_realpath = str_replace('\\','/', $_realpath);
+		$_fileValid = (strpos($_realpath, (str_replace('\\','/', WB_PATH))) !== false);
+	}
+// check if all needed args are valid 
+	if(!$page_id || !$section_id || !$_realpath || !$_fileValid) {
+		die('Invalid arguments passed - script stopped.');
+	}
+
+	// echo registerEditArea('code_area', 'css');
+	echo (function_exists('registerEditArea')) ? registerEditArea('code_area', 'css') : 'none';
+// set default text output if varibles are not defined in the global WB language files
+	if(!isset($TEXT['HEADING_CSS_FILE'])) { $TEXT['HEADING_CSS_FILE'] = 'Actual module file: '; }
+	if(!isset($TEXT['TXT_EDIT_CSS_FILE'])) { $TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.'; }
+
+// check if action is: save or edit
+	if($_action == 'save') {
+	// SAVE THE UPDATED CONTENTS TO THE CSS FILE
+		$css_content = '';
+		if (isset($_POST['css_data']) && strlen($_POST['css_data']) > 0) {
+			$css_content = stripslashes($_POST['css_data']);
+		}
+		$modFileName = WB_PATH .'/modules/' .$mod_dir .'/' .$_edit_file;
+		if(($fileHandle = fopen($modFileName, 'wb'))) {
+			if(fwrite($fileHandle, $css_content)) {
+				fclose($fileHandle);
+				$admin->print_success($TEXT['SUCCESS'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+				exit;
+			}
+			fclose($fileHandle);
+		}
+		$admin->print_error($TEXT['ERROR'], ADMIN_URL.'/pages/modify.php?page_id='.$page_id);
+		exit;
+	} else {
+	// MODIFY CONTENTS OF THE CSS FILE VIA TEXT AREA
+	// check which module file to edit (frontend.css, backend.css or '')
+		$css_file = (in_array($_edit_file, array('frontend.css', 'backend.css'))) ? $_edit_file : '';
+
+	// display output
+		if($css_file == '')	{
+		// no valid module file to edit; display error message and backlink to modify.php
+			echo "<h2>Nothing to edit</h2>";
+			echo "<p>No valid module file exists for this module.</p>";
+			$output  = "<a href=\"#\" onclick=\"javascript: window.location = '";
+			$output .= ADMIN_URL ."/pages/modify.php?page_id=" .$page_id ."'\">back</a>";
+			echo $output;
+		} else {
+		// store content of the module file in variable
+		$css_content = @file_get_contents(WB_PATH .'/modules/' .$mod_dir .'/' .$css_file);
+		// write out heading
+		echo '<h2>' .$TEXT['HEADING_CSS_FILE'] .'"' .$css_file .'"</h2>';
+		// include button to switch between frontend.css and backend.css (only shown if both files exists)
+		toggle_css_file($mod_dir, $css_file);
+		echo '<p>'.$TEXT['TXT_EDIT_CSS_FILE'].'</p>';
+
+		// output content of module file to textareas
+	  ?><form name="edit_module_file" action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="post" style="margin: 0;">
+	  	<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+	  	<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+	  	<input type="hidden" name="mod_dir" value="<?php echo $mod_dir; ?>" />
+		<input type="hidden" name="edit_file" value="<?php echo $css_file; ?>" />
+	  	<input type="hidden" name="action" value="save" />
+		<textarea id="code_area" name="css_data" cols="100" rows="25" wrap="VIRTUAL" style="margin:2px;width:100%;">
+<?php echo htmlspecialchars($css_content); ?>
+		</textarea>
+  			<table cellpadding="0" cellspacing="0" border="0" width="100%">
+  			<tr>
+    			<td class="left">
+ 				<input name="save" type="submit" value="<?php echo $TEXT['SAVE'];?>" style="width: 100px; margin-top: 5px;" />
+    			</td>
+  				<td class="right">
+      			<input type="button" value="<?php echo $TEXT['CANCEL']; ?>"
+						onclick="javascript: window.location = '<?php echo ADMIN_URL;?>/pages/modify.php?page_id=<?php echo $page_id; ?>';"
+						style="width: 100px; margin-top: 5px;" />
+  				</td>
+  			</tr>
+  			</table>
+		</form>
+<?php 
+	}
+}
+// Print admin footer
+$admin->print_footer();

Property changes on: tags/2.8.3/wb/modules/edit_module_files.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/info.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/info.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/info.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         show_menu2
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.7.0
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+$module_directory = 'show_menu2';
+$module_name = 'show_menu2';
+$module_function = 'snippet';
+$module_version = '4.9.6';
+$module_platform = '2.7 | 2.8.2';
+$module_author = 'Brodie Thiesfield';
+$module_license = 'GNU General Public License';
+$module_description = 'A code snippet for the Website Baker CMS providing a complete replacement for the builtin menu functions. See <a href="http://code.jellycan.com/show_menu2/" target="_blank">http://code.jellycan.com/show_menu2/</a> for details or view the <a href="' .WB_URL .'/modules/show_menu2/README.en.txt" target="_blank">readme</a> file.';
+

Property changes on: tags/2.8.3/wb/modules/show_menu2/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/include.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/include.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/include.php	(revision 1610)
@@ -0,0 +1,845 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         show_menu2
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.7.0 | 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+define('SM2_ROOT',          -1000);
+define('SM2_CURR',          -2000);
+define('SM2_ALLMENU',          -1);
+define('SM2_START',          1000);
+define('SM2_MAX',            2000);
+define('SM2_ALL',          0x0001); // bit 0 (group 1) (Note: also used for max level!)
+define('SM2_TRIM',         0x0002); // bit 1 (group 1)
+define('SM2_CRUMB',        0x0004); // bit 2 (group 1)
+define('SM2_SIBLING',      0x0008); // bit 3 (group 1)
+define('SM2_NUMCLASS',     0x0010); // bit 4
+define('SM2_ALLINFO',      0x0020); // bit 5
+define('SM2_NOCACHE',      0x0040); // bit 6
+define('SM2_PRETTY',       0x0080); // bit 7
+define('SM2_ESCAPE',       0x0100); // bit 8
+define('SM2_NOESCAPE',          0); // NOOP, unnecessary with WB 2.6.7+
+define('SM2_BUFFER',       0x0200); // bit 9
+define('SM2_CURRTREE',     0x0400); // bit 10
+define('SM2_SHOWHIDDEN',   0x0800); // bit 11
+define('SM2_XHTML_STRICT', 0x1000); // bit 12
+define('SM2_NO_TITLE',     0x1001); // bit 13
+
+define('_SM2_GROUP_1',  0x000F); // exactly one flag from group 1 is required
+
+
+// Implement support for page_menu and show_menu using show_menu2. If you remove
+// the comments characters from the beginning of the following include, all menu
+// functions in Website Baker will be implemented using show_menu2. While it is
+// commented out, the original WB functions will be used.
+//include('legacy.php');
+
+// This class is the default menu formatter for sm2. If desired, you can 
+// create your own formatter class and pass the object into show_menu2 
+// as $aItemFormat.
+define('SM2_CONDITIONAL','if\s*\(([^\)]+)\)\s*{([^}]*)}\s*(?:else\s*{([^}]*)}\s*)?');
+define('SM2_COND_TERM','\s*(\w+)\s*(<|<=|==|=|=>|>|!=)\s*([\w\-]+)\s*');
+class SM2_Formatter
+{
+    var $output;
+    var $flags;
+    var $itemOpen;
+    var $itemClose;
+    var $menuOpen;
+    var $menuClose;
+    var $topItemOpen;
+    var $topMenuOpen;
+    
+    var $isFirst;
+    var $page;
+    var $url;
+    var $currSib;
+    var $sibCount;
+    var $currClass;
+    var $prettyLevel;
+
+    // output the data
+    function output($aString) {
+        if ($this->flags & SM2_BUFFER) {
+            $this->output .= $aString;
+        }
+        else {
+            echo $aString;
+        }
+    }
+    
+    // set the default values for all of our formatting items
+    function set($aFlags, $aItemOpen, $aItemClose, $aMenuOpen, $aMenuClose, $aTopItemOpen, $aTopMenuOpen) {
+        $this->flags        = $aFlags;
+        $this->itemOpen     = is_string($aItemOpen)    ? $aItemOpen    : '[li][a][menu_title]</a>';
+        $this->itemClose    = is_string($aItemClose)   ? $aItemClose   : '</li>';
+        $this->menuOpen     = is_string($aMenuOpen)    ? $aMenuOpen    : '[ul]';
+        $this->menuClose    = is_string($aMenuClose)   ? $aMenuClose   : '</ul>';
+        $this->topItemOpen  = is_string($aTopItemOpen) ? $aTopItemOpen : $this->itemOpen;
+        $this->topMenuOpen  = is_string($aTopMenuOpen) ? $aTopMenuOpen : $this->menuOpen;
+    }
+
+    // initialize the state of the formatter before anything is output
+    function initialize() {
+        $this->output = '';
+        $this->prettyLevel = 0;
+        if ($this->flags & SM2_PRETTY) {
+            $this->output("\n<!-- show_menu2 -->");
+        }
+    }
+
+    // start a menu     
+    function startList(&$aPage, &$aUrl) {
+        $currClass = '';
+        $currItem = $this->menuOpen;
+        
+        // use the top level menu open if this is the first menu
+        if ($this->topMenuOpen) {
+            $currItem = $this->topMenuOpen;
+            $currClass .= ' menu-top';
+            $this->topMenuOpen = false;
+        }
+        
+        // add the numbered menu class only if requested
+        if (($this->flags & SM2_NUMCLASS) == SM2_NUMCLASS) {
+            $currClass .= ' menu-'.$aPage['level'];
+        }
+        
+        $this->prettyLevel += 1;
+        
+        // replace all keywords in the output
+        if ($this->flags & SM2_PRETTY) {
+            $this->output("\n".str_repeat(' ',$this->prettyLevel).
+                $this->format($aPage, $aUrl, $currItem, $currClass));
+        }
+        else {
+            $this->output($this->format($aPage, $aUrl, $currItem, $currClass));
+        }
+        
+        $this->prettyLevel += 3;
+    }
+    
+    // start an item within the menu
+    function startItem(&$aPage, &$aUrl, $aCurrSib, $aSibCount) {
+        // generate our class list
+        $currClass = '';
+        if (($this->flags & SM2_NUMCLASS) == SM2_NUMCLASS) {
+            $currClass .= ' menu-'.$aPage['level'];
+        }
+        if (array_key_exists('sm2_has_child', $aPage)) {
+            // not set if false, so existence = true
+            $currClass .= ' menu-expand';
+        }
+        if (array_key_exists('sm2_is_curr', $aPage)) { 
+            $currClass .= ' menu-current';
+        }
+        elseif (array_key_exists('sm2_is_parent', $aPage)) { 
+            // not set if false, so existence = true
+            $currClass .= ' menu-parent';
+        }
+        elseif (array_key_exists('sm2_is_sibling', $aPage)) {
+            // not set if false, so existence = true
+            $currClass .= ' menu-sibling';
+        }
+        elseif (array_key_exists('sm2_child_level',$aPage)) {
+            // not set if not a child
+            $currClass .= ' menu-child';
+            if (($this->flags & SM2_NUMCLASS) == SM2_NUMCLASS) {
+                $currClass .= ' menu-child-'.($aPage['sm2_child_level']-1);
+            }
+        }
+        if ($aCurrSib == 1) {
+            $currClass .= ' menu-first';
+        }
+        if ($aCurrSib == $aSibCount) {
+            $currClass .= ' menu-last';
+        }
+
+        // use the top level item if this is the first item
+        $currItem = $this->itemOpen;
+        if ($this->topItemOpen) {
+            $currItem = $this->topItemOpen;
+            $this->topItemOpen = false;
+        }
+
+        // replace all keywords in the output
+        if ($this->flags & SM2_PRETTY) {
+            $this->output("\n".str_repeat(' ',$this->prettyLevel));
+        }
+        $this->output($this->format($aPage, $aUrl, $currItem, $currClass, $aCurrSib, $aSibCount));
+    }
+    
+    // find and replace all keywords, setting the state variables first
+    function format(&$aPage, &$aUrl, &$aCurrItem, &$aCurrClass, 
+        $aCurrSib = 0, $aSibCount = 0) 
+    {
+        $this->page      = &$aPage;
+        $this->url       = &$aUrl;
+        $this->currClass = trim($aCurrClass);
+        $this->currSib   = $aCurrSib;
+        $this->sibCount  = $aSibCount;
+        
+        $item = $this->format2($aCurrItem);
+        
+        unset($this->page);
+        unset($this->url);
+        unset($this->currClass);
+        
+        return $item;
+    }
+    
+    // find and replace all keywords
+    function format2(&$aCurrItem) {
+        if (!is_string($aCurrItem)) return '';
+        return preg_replace(
+            '@\[('.
+                'a|ac|/a|li|/li|ul|/ul|menu_title|menu_icon_0|menu_icon_1|'.
+				'page_title|page_icon|url|target|page_id|tooltip|'.
+                'parent|level|sib|sibCount|class|description|keywords|'.
+                SM2_CONDITIONAL.
+            ')\]@e', 
+            '$this->replace("\1")', $aCurrItem);
+    }
+    
+    // replace the keywords
+    function replace($aMatch) {
+        $retval = '['.$aMatch.'=UNKNOWN]';
+        switch ($aMatch) {
+        case 'a':
+            $retval = '<a href="'.$this->url.'"';
+			// break; // ignore 'break' to add the rest of <a>-tag
+		case 'ac':
+			if( substr($retval, 0, 2) != '<a'){
+				$retval = '<a href="'.$this->url.'" class="'.$this->currClass.'"';
+			}
+			if(($this->flags & SM2_NO_TITLE)) {
+				$retval .= ' title="'.$this->page['tooltip'].'"';
+			}
+			if(!($this->flags & SM2_XHTML_STRICT)) {
+				$retval .= ' target="'.$this->page['target'].'"';
+			}
+			$retval .= '>';
+			break;
+        case '/a':
+            $retval = '</a>'; break;
+        case 'li':
+            $retval = '<li class="'.$this->currClass.'">'; break;
+        case '/li':
+            $retval = '</li>'; break;
+        case 'ul':
+            $retval = '<ul class="'.$this->currClass.'">'; break;
+        case '/ul':
+            $retval = '</ul>'; break;
+        case 'url':
+            $retval = $this->url; break;
+        case 'sib':
+            $retval = $this->currSib; break;
+        case 'sibCount':
+            $retval = $this->sibCount; break;
+        case 'class':
+            $retval = $this->currClass; break;
+        default:
+            if (array_key_exists($aMatch, $this->page)) {
+                if ($this->flags & SM2_ESCAPE) {
+                    $retval = htmlspecialchars($this->page[$aMatch], ENT_QUOTES);
+                }
+                else {
+                    $retval = $this->page[$aMatch];
+                }
+            }
+            if (preg_match('/'.SM2_CONDITIONAL.'/', $aMatch, $rgMatches)) {
+                $retval = $this->replaceIf($rgMatches[1], $rgMatches[2], $rgMatches[3]);
+            }
+        }
+        return $retval;
+    }
+    
+    // conditional replacement
+    function replaceIf(&$aExpression, &$aIfValue, &$aElseValue) {
+        // evaluate all of the tests in the conditional (we don't do short-circuit
+        // evaluation) and replace the string test with the boolean result
+        $rgTests = preg_split('/(\|\||\&\&)/', $aExpression, -1, PREG_SPLIT_DELIM_CAPTURE);
+        for ($n = 0; $n < count($rgTests); $n += 2) {
+            if (preg_match('/'.SM2_COND_TERM.'/', $rgTests[$n], $rgMatches)) {
+                $rgTests[$n] = $this->ifTest($rgMatches[1], $rgMatches[2], $rgMatches[3]);
+            }
+            else {
+                @error_logs("show_menu2 error: conditional expression is invalid!");
+                $rgTests[$n] = false;
+            }
+        }
+
+        // combine all test results for a final result
+        $ok = $rgTests[0];
+        for ($n = 1; $n+1 < count($rgTests); $n += 2) {
+            if ($rgTests[$n] == '||') {
+                $ok = $ok || $rgTests[$n+1];
+            }
+            else {
+                $ok = $ok && $rgTests[$n+1];
+            }
+        }
+        
+        // return the formatted expression if the test succeeded
+        return $ok ? $this->format2($aIfValue) : $this->format2($aElseValue);
+    }
+
+    // conditional test
+    function ifTest(&$aKey, &$aOperator, &$aValue) {
+        global $wb;
+        
+        // find the correct operand
+        $operand = false;
+        switch($aKey) {
+        case 'class':
+            // we need to wrap the class names in spaces so we can test for a unique
+            // class name that will not match prefixes or suffixes. Same must be done
+            // for the value we are testing.
+            $operand = " $this->currClass "; 
+            break;
+		case 'target':
+			$operand = $this->page['target'];
+			break;
+        case 'sib':
+            $operand = $this->currSib;
+            if ($aValue == 'sibCount') {
+                $aValue = $this->sibCount;
+            }
+            break;
+        case 'sibCount':
+            $operand = $this->sibCount;
+            break;
+        case 'level':
+            $operand = $this->page['level'];
+            switch ($aValue) {
+            case 'root':    $aValue = 0; break;
+            case 'granny':  $aValue = $wb->page['level']-2; break;
+            case 'parent':  $aValue = $wb->page['level']-1; break;
+            case 'current': $aValue = $wb->page['level'];   break;
+            case 'child':   $aValue = $wb->page['level']+1; break;
+            }
+            if ($aValue < 0) $aValue = 0;
+            break;
+        case 'id':
+            $operand = $this->page['page_id'];
+            switch ($aValue) {
+            case 'parent':  $aValue = $wb->page['parent'];  break;
+            case 'current': $aValue = $wb->page['page_id']; break;
+            }
+            break;
+        default:
+            return '';
+        }
+
+        // do the test        
+        $ok = false;
+        switch ($aOperator) { 
+        case '<':
+            $ok = ($operand < $aValue); 
+            break;
+        case '<=':
+            $ok = ($operand <= $aValue); 
+            break;
+        case '=':
+        case '==':
+        case '!=':
+            if ($aKey == 'class') {
+                $ok = strstr($operand, " $aValue ") !== FALSE;
+            }
+            else {
+                $ok = ($operand == $aValue); 
+            }
+            if ($aOperator == '!=') {
+                $ok = !$ok;
+            }
+            break;
+        case '>=':
+            $ok = ($operand >= $aValue); 
+        case '>':
+            $ok = ($operand > $aValue); 
+        }
+        
+        return $ok;
+    }
+    
+    // finish the current menu item
+    function finishItem() {
+        if ($this->flags & SM2_PRETTY) {
+            $this->output(str_repeat(' ',$this->prettyLevel).$this->itemClose);
+        }
+        else {
+            $this->output($this->itemClose);
+        }
+    }
+
+    // finish the current menu
+    function finishList() {
+        $this->prettyLevel -= 3;
+        
+        if ($this->flags & SM2_PRETTY) {
+            $this->output("\n".str_repeat(' ',$this->prettyLevel).$this->menuClose."\n");
+        }
+        else {
+            $this->output($this->menuClose);
+        }
+        
+        $this->prettyLevel -= 1;
+    }
+    
+    // cleanup the state of the formatter after everything has been output
+    function finalize() {
+        if ($this->flags & SM2_PRETTY) {
+            $this->output("\n");
+        }
+    }
+
+    // return the output
+    function getOutput() {
+        return $this->output;
+    }
+};
+
+function error_logs($error_str)
+{
+                $log_error = true;
+                if ( ! function_exists('error_log') )
+                        $log_error = false;
+
+                $log_file = @ini_get('error_log');
+                if ( !empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file) )
+                        $log_error = false;
+
+                if ( $log_error )
+                        @error_log($error_str, 0);
+}
+
+function show_menu2(
+    $aMenu          = 0,
+    $aStart         = SM2_ROOT,
+    $aMaxLevel      = -1999, // SM2_CURR+1
+    $aOptions       = SM2_TRIM,
+    $aItemOpen      = false,
+    $aItemClose     = false,
+    $aMenuOpen      = false,
+    $aMenuClose     = false,
+    $aTopItemOpen   = false,
+    $aTopMenuOpen   = false
+    )
+{
+    global $wb;
+
+    // extract the flags and set $aOptions to an array
+    $flags = 0;
+    if (is_int($aOptions)) {
+        $flags = $aOptions;
+        $aOptions = array();
+    }
+    else if (isset($aOptions['flags'])) {
+        $flags = $aOptions['flags'];
+    }
+    else {
+        $flags = SM2_TRIM;
+        $aOptions = array();
+        @error_logs('show_menu2 error: $aOptions is invalid. No flags supplied!');
+    }
+    
+    // ensure we have our group 1 flag, we don't check for the "exactly 1" part, but
+    // we do ensure that they provide at least one.
+    if (0 == ($flags & _SM2_GROUP_1)) {
+        @error_logs('show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!');
+        $flags |= SM2_TRIM; // default to TRIM
+    }
+    
+    // search page results don't have any of the page data loaded by WB, so we load it 
+    // ourselves using the referrer ID as the current page
+    $CURR_PAGE_ID = defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID;
+    if (count($wb->page) == 0 && defined('REFERRER_ID') && REFERRER_ID > 0) {
+        global $database;
+        $sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.REFERRER_ID.'';
+        $result = $database->query($sql);
+        if ($result->numRows() == 1) {
+            $wb->page = $result->fetchRow();
+        }
+        unset($result);
+    }
+    
+    // fix up the menu number to default to the menu number
+    // of the current page if no menu has been supplied
+    if ($aMenu == 0) {
+        $aMenu = $wb->page['menu'] == '' ? 1 : $wb->page['menu'];
+    } 
+
+    // Set some of the $wb->page[] settings to defaults if not set
+    $pageLevel  = $wb->page['level']  == '' ? 0 : $wb->page['level'];
+    $pageParent = $wb->page['parent'] == '' ? 0 : $wb->page['parent'];
+    
+    // adjust the start level and start page ID as necessary to
+    // handle the special values that can be passed in as $aStart
+    $aStartLevel = 0;
+    if ($aStart < SM2_ROOT) {   // SM2_CURR+N
+        if ($aStart == SM2_CURR) {
+            $aStartLevel = $pageLevel;
+            $aStart = $pageParent;
+        }
+        else {
+            $aStartLevel = $pageLevel + $aStart - SM2_CURR;
+            $aStart = $CURR_PAGE_ID; 
+        }
+    }
+    elseif ($aStart < 0) {   // SM2_ROOT+N
+        $aStartLevel = $aStart - SM2_ROOT;
+        $aStart = 0;
+    }
+
+    // we get the menu data once and store it in a global variable. This allows 
+    // multiple calls to show_menu2 in a single page with only a single call to 
+    // the database. If this variable exists, then we have already retrieved all
+    // of the information and processed it, so we don't need to do it again.
+    if (($flags & SM2_NOCACHE) != 0
+        || !array_key_exists('show_menu2_data', $GLOBALS)
+        || !array_key_exists($aMenu, $GLOBALS['show_menu2_data'])) 
+    {
+        global $database;
+
+        // create an array of all parents of the current page. As the page_trail
+        // doesn't include the theoretical root element 0, we add it ourselves.
+        $rgCurrParents = explode(",", '0,'.$wb->page['page_trail']);
+        array_pop($rgCurrParents); // remove the current page
+        $rgParent = array();
+
+        // if the caller wants all menus gathered together (e.g. for a sitemap)
+        // then we don't limit our SQL query
+        $menuLimitSql = ' AND `menu`='.$aMenu;
+        if ($aMenu == SM2_ALLMENU) {
+            $menuLimitSql = '';
+        }
+
+        // we only load the description and keywords if we have been told to,
+        // this cuts the memory load for pages that don't use them. Note that if
+        // we haven't been told to load these fields the *FIRST TIME* show_menu2
+        // is called (i.e. where the database is loaded) then the info won't
+        // exist anyhow.
+        $fields  = '`parent`,`page_id`,`menu_title`,`page_title`,`link`,`target`,';
+		$fields .= '`level`,`visibility`,`viewing_groups`';
+        if (version_compare(WB_VERSION, '2.7', '>=')) { // WB 2.7+
+            $fields .= ',`viewing_users`';
+        }
+		if(version_compare(WB_VERSION, '2.9.0', '>=')) {
+            $fields .= ',`menu_icon_0`,`menu_icon_1`,`page_icon`,`tooltip`';
+		}
+        if ($flags & SM2_ALLINFO) {
+            $fields = '*';
+        }
+
+        // we request all matching rows from the database for the menu that we
+        // are about to create it is cheaper for us to get everything we need
+        // from the database once and create the menu from memory then make 
+        // multiple calls to the database. 
+        $sql  = 'SELECT '.$fields.' FROM `'.TABLE_PREFIX.'pages` ';
+		$sql .= 'WHERE '.$wb->extra_where_sql.' '.$menuLimitSql.' ';
+		$sql .= 'ORDER BY `level` ASC, `position` ASC';
+        $sql = str_replace('hidden', 'IGNOREME', $sql); // we want the hidden pages
+        $oRowset = $database->query($sql);
+        if (is_object($oRowset) && $oRowset->numRows() > 0) {
+            // create an in memory array of the database data based on the item's parent. 
+            // The array stores all elements in the correct display order.
+            while ($page = $oRowset->fetchRow()) {
+                // ignore all pages that the current user is not permitted to view
+                if(version_compare(WB_VERSION, '2.7', '>=')) { // WB >= 2.7
+                    // 1. hidden pages aren't shown unless they are on the current page
+                    if ($page['visibility'] == 'hidden') {
+                        $page['sm2_hide'] = true;
+                    }
+                    
+                    // 2. all pages with no active sections (unless it is the top page) are ignored
+                    else if (!$wb->page_is_active($page) && $page['link'] != $wb->default_link && !INTRO_PAGE) {
+                        continue;
+                    }
+
+                    // 3. all pages not visible to this user (unless always visible to registered users) are ignored
+                    else if (!$wb->page_is_visible($page) && $page['visibility'] != 'registered') {
+                        continue;
+                    }
+                }
+				if(!isset($page['tooltip'])) { $page['tooltip'] = $page['page_title']; }
+                // ensure that we have an array entry in the table to add this to
+                $idx = $page['parent'];
+                if (!array_key_exists($idx, $rgParent)) {
+                    $rgParent[$idx] = array();
+                }
+
+                // mark our current page as being on the current path
+                if ($page['page_id'] == $CURR_PAGE_ID) {
+                    $page['sm2_is_curr'] = true;
+                    $page['sm2_on_curr_path'] = true;
+                    if ($flags & SM2_SHOWHIDDEN) 
+					{ 
+                        // show hidden pages if active and SHOWHIDDEN flag supplied
+                        unset($page['sm2_hide']); 
+                    }
+                }
+
+                // mark parents of the current page as such
+                if (in_array($page['page_id'], $rgCurrParents)) {
+                    $page['sm2_is_parent'] = true;
+                    $page['sm2_on_curr_path'] = true;
+                    if ($flags & SM2_SHOWHIDDEN) 
+					{
+                        // show hidden pages if active and SHOWHIDDEN flag supplied
+						unset($page['sm2_hide']); // don't hide a parent page                
+                    }
+                }
+                
+                // add the entry to the array                
+                $rgParent[$idx][] = $page;
+            }
+        }    
+        unset($oRowset);
+
+        // mark all elements that are siblings of any element on the current path
+        foreach ($rgCurrParents as $x) {
+            if (array_key_exists($x, $rgParent)) {
+                foreach (array_keys($rgParent[$x]) as $y) {
+                    $mark =& $rgParent[$x][$y];
+                    $mark['sm2_path_sibling'] = true;
+                    unset($mark);
+                }
+            }
+        }
+
+        // mark all elements that have children and are siblings of the current page
+        $parentId = $pageParent;
+        foreach (array_keys($rgParent) as $x) {
+            $childSet =& $rgParent[$x];
+            foreach (array_keys($childSet) as $y) {
+                $mark =& $childSet[$y];
+                if (array_key_exists($mark['page_id'], $rgParent)) {
+                    $mark['sm2_has_child'] = true;
+                }
+                if ($mark['parent'] == $parentId && $mark['page_id'] != $CURR_PAGE_ID) {
+                    $mark['sm2_is_sibling'] = true;
+                }
+                unset($mark);
+            }
+            unset($childSet);
+        }
+        
+        // mark all children of the current page. We don't do this when 
+        // $CURR_PAGE_ID is 0, as 0 is the parent of everything. 
+        // $CURR_PAGE_ID == 0 occurs on special pages like search results
+        // when no referrer is available.s
+        if ($CURR_PAGE_ID != 0) {
+            sm2_mark_children($rgParent, $CURR_PAGE_ID, 1);
+        }
+        
+        // store the complete processed menu data as a global. We don't 
+        // need to read this from the database anymore regardless of how 
+        // many menus are displayed on the same page.
+        if (!array_key_exists('show_menu2_data', $GLOBALS)) {
+            $GLOBALS['show_menu2_data'] = array();
+        }
+        $GLOBALS['show_menu2_data'][$aMenu] =& $rgParent;
+        unset($rgParent);
+    }
+
+    // adjust $aMaxLevel to the level number of the final level that 
+    // will be displayed. That is, we display all levels <= aMaxLevel.
+    if ($aMaxLevel == SM2_ALL) {
+        $aMaxLevel = 1000;
+    }
+    elseif ($aMaxLevel < 0) {   // SM2_CURR+N
+        $aMaxLevel += $pageLevel - SM2_CURR;
+    }
+    elseif ($aMaxLevel >= SM2_MAX) { // SM2_MAX+N
+        $aMaxLevel += $aStartLevel - SM2_MAX;
+        if ($aMaxLevel > $pageLevel) {
+            $aMaxLevel = $pageLevel;
+        }
+    }
+    else {  // SM2_START+N
+        $aMaxLevel += $aStartLevel - SM2_START;
+    }
+
+    // generate the menu
+    $retval = false;
+    if (array_key_exists($aStart, $GLOBALS['show_menu2_data'][$aMenu])) {
+        $formatter = $aItemOpen;
+        if (!is_object($aItemOpen)) {
+            static $sm2formatter;
+            if (!isset($sm2formatter)) {
+                $sm2formatter = new SM2_Formatter;
+            }
+            $formatter = $sm2formatter;
+            $formatter->set($flags, $aItemOpen, $aItemClose, 
+                $aMenuOpen, $aMenuClose, $aTopItemOpen, $aTopMenuOpen);
+        }
+        
+        // adjust the level until we show everything and ignore the SM2_TRIM flag.
+        // Usually this will be less than the start level to disable it.
+        $showAllLevel = $aStartLevel - 1;
+        if (isset($aOptions['notrim'])) {
+            $showAllLevel = $aStartLevel + $aOptions['notrim'];
+        }
+        
+        // display the menu
+        $formatter->initialize();
+        sm2_recurse(
+            $GLOBALS['show_menu2_data'][$aMenu],
+            $aStart,    // parent id to start displaying sub-menus
+            $aStartLevel, $showAllLevel, $aMaxLevel, $flags, 
+            $formatter);
+        $formatter->finalize();
+        
+        // if we are returning something, get the data
+        if (($flags & SM2_BUFFER) != 0) {
+            $retval = $formatter->getOutput();
+        }
+    }
+
+    // clear the data if we aren't caching it
+    if (($flags & SM2_NOCACHE) != 0) {
+        unset($GLOBALS['show_menu2_data'][$aMenu]);
+    }
+    
+    return $retval;
+}
+
+function sm2_mark_children(&$rgParent, $aStart, $aChildLevel)
+{
+    if (array_key_exists($aStart, $rgParent)) {
+        foreach (array_keys($rgParent[$aStart]) as $y) {
+            $mark =& $rgParent[$aStart][$y];
+            $mark['sm2_child_level'] = $aChildLevel;
+            $mark['sm2_on_curr_path'] = true;
+            sm2_mark_children($rgParent, $mark['page_id'], $aChildLevel+1);
+        }
+    }
+}
+
+function sm2_recurse(
+    &$rgParent, $aStart, 
+    $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
+    &$aFormatter
+    )
+{
+    global $wb;
+
+    // on entry to this function we know that there are entries for this 
+    // parent and all entries for that parent are being displayed. We also 
+    // need to check if any of the children need to be displayed too.
+    $isListOpen = false;
+    $currentLevel = $wb->page['level'] == '' ? 0 : $wb->page['level'];
+
+    // get the number of siblings skipping the hidden pages so we can pass 
+    // this in and check if the item is first or last
+    $sibCount = 0;
+    foreach ($rgParent[$aStart] as $page) {
+        if (!array_key_exists('sm2_hide', $page)) $sibCount++;
+    }
+    
+    $currSib = 0;
+    foreach ($rgParent[$aStart] as $page) {
+        // skip all hidden pages 
+        if (array_key_exists('sm2_hide', $page)) { // not set if false, so existence = true
+            continue;
+        }
+        
+        $currSib++;
+
+        // skip any elements that are lower than the maximum level
+        $pageLevel = $page['level'];
+        if ($pageLevel > $aMaxLevel) {
+            continue;
+        }
+        
+        // this affects ONLY the top level
+        if ($aStart == 0 && ($aFlags & SM2_CURRTREE)) {
+            if (!array_key_exists('sm2_on_curr_path', $page)) { // not set if false, so existence = true
+                continue;
+            }
+            $sibCount = 1;
+        }
+        
+        // trim the tree as appropriate
+        if ($aFlags & SM2_SIBLING) {
+            // parents, and siblings and children of current only
+            if (!array_key_exists('sm2_on_curr_path', $page)      // not set if false, so existence = true
+                && !array_key_exists('sm2_is_sibling', $page)     // not set if false, so existence = true
+                && !array_key_exists('sm2_child_level', $page)) { // not set if false, so existence = true
+                continue;
+            }
+        }
+        else if ($aFlags & SM2_TRIM) {
+            // parents and siblings of parents
+            if ($pageLevel > $aShowAllLevel  // permit all levels to be shown
+                && !array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
+                && !array_key_exists('sm2_path_sibling', $page)) {  // not set if false, so existence = true
+                continue;
+            }
+        }
+        elseif ($aFlags & SM2_CRUMB) {
+            // parents only
+            if (!array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
+                || array_key_exists('sm2_child_level', $page)) {  // not set if false, so existence = true
+                continue;
+            }
+        }
+
+        // depth first traverse
+        $nextParent = $page['page_id'];
+
+        // display the current element if we have reached the start level
+        if ($pageLevel >= $aStartLevel) {
+            // massage the link into the correct form
+            if(!INTRO_PAGE && $page['link'] == $wb->default_link) {
+                $url = WB_URL.'/';
+            }
+            else {
+                $url = $wb->page_link($page['link']);
+            }
+                    
+            // we open the list only when we absolutely need to
+            if (!$isListOpen) {
+                $aFormatter->startList($page, $url);
+                $isListOpen = true;
+            }
+
+            $aFormatter->startItem($page, $url, $currSib, $sibCount);
+        }
+        
+        // display children as appropriate
+        if ($pageLevel + 1 <= $aMaxLevel 
+            && array_key_exists('sm2_has_child', $page)) {  // not set if false, so existence = true
+            sm2_recurse(
+                $rgParent, $nextParent, // parent id to start displaying sub-menus
+                $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
+                $aFormatter);
+        }
+        
+        // close the current element if appropriate
+        if ($pageLevel >= $aStartLevel) {
+            $aFormatter->finishItem($pageLevel, $page);
+        }
+    }
+
+    // close the list if we opened one
+    if ($isListOpen) {
+        $aFormatter->finishList();
+    }
+}
+

Property changes on: tags/2.8.3/wb/modules/show_menu2/include.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/legacy.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/legacy.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/legacy.php	(revision 1610)
@@ -0,0 +1,193 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         show_menu2
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.7.0 | 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/*
+    This file provides backward compatibility between show_menu2 and the
+    old functions show_menu() and menu(). Note that it is highly recommended 
+    for you to update your templates to use show_menu2 directly.
+ */    
+
+/* ----------------------------------------------------------------------------
+   show_menu
+   
+ From: http://forum.websitebaker.org/index.php/topic,2251.msg13978.html#msg13978  
+ 
+ * By calling it multiple times, you can have one menu just
+ * showing the root level, one for the sub-pages, and so on
+ * The order of the arguments has been changed compared
+ * to the page_menu() function, so read carefully the list
+ * of arguments!
+ * To just display the standard menu, use
+ * <?php show_menu(); ?> within your template's html code.
+ * You don't normally need anymore than the first four arguments.
+ * Usual calls would be (inside php code!)
+ * show_menu(1,0,-1,false); - displays the complete page tree
+ * show_menu(1,1,1); - show only first sub level
+ * show_menu(1,1,-1); -    show an expanding/collapsing menu tree starting at level 1
+ * Have fun experimenting!
+ *
+ * Full list of arguments:
+ * 1. $menu_number:   With activitated "multiple menu" feature
+ *                  you can choose which menu will be displayed
+ *                  default: 1
+ * 2. $start_level: The depth level of the root of the displayed
+ *               menu tree. Defaults to '0', which is the top level.
+ *                  '1' will show all pages starting from the first sub level.
+ * 3. $recurse:     Gives the maximum number of levels to be displayed. Default
+ *                  is '-1' which means 'all'.
+ * 4. $collapse:    Specifies, whether the menu tree shall be
+ *               expandable/collapsible (if set to 'true')
+ *               or complete (all pages being displayed) if set to 'false'
+ * 5. $item_template: Gives the possibility to specify the html code that is
+ *                  displayed before displaying sub-pages
+ * 6. $item_footer: The html code to appear after sub-pages were displayed.
+ * 7. $menu_header: The html code to appear before the entire menu code and each
+ *               sub tree.
+ * 8. $menu_footer: The html code to appear after the entire menu code and each
+ *               sub tree.
+ * 9. $default_class: The (CSS) class of every menu item except the currently viewed page
+ * 10. $current_class: The class of the currently viewed page
+ * 11. $parent:    (used internally) The page_id of the menu's root node, defaults is '0' (root level)
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+ 
+class SM2_ShowMenuFormatter
+{
+    var $output;
+    var $itemTemplate;
+    var $itemFooter;
+    var $menuHeader;
+    var $menuFooter;
+    var $defaultClass;
+    var $currentClass;
+    
+    function output($aString) {
+        if ($this->flags & SM2_BUFFER) {
+            $this->output .= $aString;
+        }
+        else {
+            echo $aString;
+        }
+    }
+    function initialize() { $this->output = ''; }
+    function startList($aPage, $aUrl) { 
+        echo $this->menuHeader;
+    }
+    function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { 
+        // determine the class string to use
+        $thisClass = $this->defaultClass;
+        if ($aPage['page_id'] == PAGE_ID) {
+            $thisClass = $this->currentClass;
+        }
+        
+        // format and display this item
+        $item = str_replace( 
+                array(
+                    '[a]','[/a]','[menu_title]','[page_title]','[url]',
+                    '[target]','[class]'
+                    ),
+                array(
+                    "<a href='$aUrl' target='".$aPage['target']."'>", '</a>',
+                    $aPage['menu_title'], $aPage['page_title'], $aUrl, 
+                    $aPage['target'], $thisClass
+                    ),
+                $this->itemTemplate);
+        echo $item;
+    }
+    function finishItem() { 
+        echo $this->itemFooter;
+    }
+    function finishList() { 
+        echo $this->menuFooter;
+    }
+    function finalize() { }
+    function getOutput() {
+        return $this->output;
+    }
+}
+
+function show_menu(
+    $aMenu          = 1, 
+    $aStartLevel    = 0, 
+    $aRecurse       = -1, 
+    $aCollapse      = true,
+    $aItemTemplate  = '<li><span[class]>[a][menu_title][/a]</span>',
+    $aItemFooter    = '</li>',
+    $aMenuHeader    = '<ul>',
+    $aMenuFooter    = '</ul>',
+    $aDefaultClass  = ' class="menu_default"',
+    $aCurrentClass  = ' class="menu_current"',
+    $aParent        = 0
+    )
+{
+    static $formatter;
+    if (!isset($formatter)) {
+        $formatter = new SM2_ShowMenuFormatter;
+    }
+    
+    $formatter->itemTemplate  = $aItemTemplate;
+    $formatter->itemFooter    = $aItemFooter;  
+    $formatter->menuHeader    = $aMenuHeader;  
+    $formatter->menuFooter    = $aMenuFooter;  
+    $formatter->defaultClass  = $aDefaultClass;
+    $formatter->currentClass  = $aCurrentClass;
+    
+    $start = SM2_ROOT + $aStartLevel;
+    if ($aParent != 0) {
+        $start = $aParent;
+    }
+
+    $maxLevel = 0;
+    if ($aRecurse == 0) {
+        return;
+    }
+    if ($aRecurse < 0) {
+        $maxLevel = SM2_ALL;
+    }
+    else {
+        $maxLevel = SM2_START + $aRecurse - 1;
+    }
+    
+    $flags = $aCollapse ? SM2_TRIM : SM2_ALL;
+    
+    // special case for default case
+    if ($aStartLevel == 0 && $aRecurse == -1 && $aCollapse) {
+        $maxLevel = SM2_CURR + 1;
+    }
+
+    show_menu2($aMenu, $start, $maxLevel, $flags, $formatter);
+}
+
+function page_menu(
+    $aParent = 0, 
+    $menu_number = 1, 
+    $item_template = '<li[class]>[a][menu_title][/a]</li>', 
+    $menu_header = '<ul>', 
+    $menu_footer = '</ul>', 
+    $default_class = ' class="menu_default"', 
+    $current_class = ' class="menu_current"', 
+    $recurse = LEVEL    // page['level']
+    ) 
+{
+    show_menu($menu_number, 0, $recurse+2, true, $item_template, '', 
+        $menu_header, $menu_footer, $default_class, $current_class, $aParent);
+}
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/legacy.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/install.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/install.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/install.php	(revision 1610)
@@ -0,0 +1,24 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         show_menu2
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/install.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/upgrade.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/upgrade.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/upgrade.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         show_menu2
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/upgrade.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/uninstall.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/uninstall.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/uninstall.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        modules
+ * @package         show_menu2
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/show_menu2/uninstall.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/index.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         show_menu2
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.7.0 | 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$ 
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('Location: ../index.php');
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/LICENCE.txt
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/LICENCE.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/LICENCE.txt	(revision 1610)
@@ -0,0 +1,278 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
Index: tags/2.8.3/wb/modules/show_menu2/README.de.txt
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/README.de.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/README.de.txt	(revision 1610)
@@ -0,0 +1,668 @@
+﻿show_menu2, version 4.9
+=======================
+Ist ein Code-Snippet für das CMS Website Baker. Es stellt einen kompletten 
+Ersatz für die eingebaute Menüfuntionalität zur Verfügung. Alle, für die 
+Erzeugung des Menüs erforderlichen Daten, werden durch eine einzige 
+Datenbankabfrage erzeugt. Durch umfangreiche Anpassungsmöglichkeiten des 
+erzeugten HTML-Code können alle möglichen Menüarten (Listen, Breadcrumbs, 
+Sitemaps, usw.) erzeugt werden.
+
+---
+Deutsche Übersetzung von BerndJM. Dies ist eine weitgehend direkte Übersetzung 
+des englischen Originals. Bei Übersetzungs- oder Interpretationsfehlern, bitte 
+eine Email an bjm@wwnw.de.
+---
+
+
+
+INSTALLATION
+============
+1. Die aktuelle Version von http://code.jellycan.com/show_menu2/ herunterladen.
+2. In das Admin-Backend der Website Baker Installation einlogen.
+3. Erweiterungen -> Module aufrufen.
+4. Wenn bereits eine frühere Version von show_menu2 installiert ist, diese über
+   "Modul deinstallieren" auswählen und deinstallieren.
+5. Im Abschnitt "Modul installieren" das im Schritt 1 heruntergeladene zip-File
+   auswählen und installieren.
+
+   
+   
+BENUTZUNG VON SHOW_MENU2
+========================
+Um show_menu2 zu benutzen muss das verwendete Template an den Stellen 
+modifiziert werden, an denen das Menü erscheinen soll. Bitte beachten: Wenn alte 
+Menüaufrufe ersetzt werden, müssen unbedingt auch die entsprechenden neuen 
+Parameter verwendet werden die show_menu2 benötigt.
+
+In den meisten Fällen genügt bereits der Standardaufruf ohne weitere Parameter 
+von show_menu2. In diesem Fall werden die Vorgabewerte verwendet, dies erzeugt 
+ein Menü das die aktuelle Seite und die Unterseiten der aktuellen Seite anzeigt:
+    
+    show_menu2();
+    
+Bitte beachten: der Aufruf von show_menu2 ist PHP und muss normalerweise in PHP-
+Codezeichen eingeschlossen werden (ausser der Aufruf erfolgt bereits innerhalb 
+von PHP Code):
+
+    <?php show_menu2(); ?>
+
+Dieses Vorgabe Menü erzeugt bereits ein komplettes Menü auf Listenbasis mit 
+etlichen Klassen, die eine leichte Formatierung mittels CSS ermöglichen. Es wird 
+z.B. die Klasse "menu-current" zu dem <li> tag des aktuellen Menüpunktes 
+hinzugefügt. Zusätzlich erhält jeder Menüpunkt der Unterpunkte enthält die 
+Klasse "menu-expand". Das erlaubt es sehr differenzierte CSS Regeln für die 
+einzelnen Menüpunkte aufzustellen.
+Zum Beispiel:
+
+    li.menu-expand  { font-weight: bold; }
+    li.menu-current { background: red; }
+
+Im Abschnitt "HTML-Ausgabe" findet sich eine detaillierte Beschreibung welche 
+Klassen welchem Element zugeordnet werden. Durch die Verwendung von 
+verschiedenen Parametern bei dem show_menu2 Funktionsaufruf lassen sich auch 
+recht umfangreiche und unterschiedliche Menüstrukturen erzeugen. Um 
+beispielsweise nur Menüpunkte aus der obersten Ebene der Menüstruktur 
+darzustellen, könnte man folgenden Aufruf verwenden:
+
+    show_menu2(0, SM2_ROOT, SM2_START);
+    
+Oder um beispielsweise bis zu zwei Unterebenen der aktuellen Seite anzuzeigen:
+
+    show_menu2(0, SM2_CURR+1, SM2_CURR+2);
+
+Es gibt jede Menge Möglichkeiten, um die unterschiedlichsten Menüstrukturen zu 
+erzeugen. Zahlreiche Beispiele dazu findet man auf der Demo-Website: http://
+code.jellycan.com/sm2test/
+
+
+
+HÄUFIGE FRAGEN
+==============
+
+Q:  Ich bin kein Programmierer. Gibt es keine einfachere Dokumentation? 
+A:  Nein, denn dies hier ist bereits die einfache Dokumentation.
+
+
+Q:  Wie kann ich ein sogenanntes Drop-Down Menü erstellen?
+A:  Dies hat nichts mit show_menu2 zu tun. Um ein Drop-Down Menü zu erzeugen muß
+    lediglich der CSS-Code des jeweiligen Templates angepaßt werden. Die nötigen 
+    Anpassungen findet man z.B. im "allcss2" Template aus dem WB Addon     
+    Repository -> http://addons.websitebaker.org/pages/templates.php
+
+
+Q:  Warum verschwindet das Menü nachdem ich in einer mehrsprachigen WB-Site die 
+    Suchfunktion benutzt habe?
+A:  Im verwendeten Template fehlen die notwendigen Zeilen:
+
+    1.  Im WB Admin Backend: Optionen -> Erweiterte Optionen anzeigen ->        
+        Suchoptionen -> Kopfzeile - hier direkt nach dem öffnenden <form> tag 
+        folgende Zeile einfügen:
+       
+        <input type="hidden" name="referrer" value="[REFERRER_ID]" />
+
+    2.  In der index.php des verwendeten Templates folgende Zeile unmittelbar   
+        nach dem öffnenden <form> tag der Suche einfügen:
+
+        <input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
+
+
+Q:  Mehrsprachig? Das klingt toll. Wie macht man das?
+A:  http://help.websitebaker.org/pages/de/advanced-doku/designer-guide/mehrsprachige-webseiten.php
+
+
+Q:  Jedesmal wenn eine Seite aufgerufen wird, erzeugt SM2 folgende Warnmeldung:
+    "show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!"
+A:  Der Funktion wurden die falschen Werte oder eine falsche Anzahl an 
+    Werten übergeben.
+    Siehe den Abschnitt PARAMETER für die korrekten Flag Werte die dem 
+    $aOptions Parameter zu übergeben sind.    
+
+
+Q:  How do I use a different class/picture/color/widget for each entry in a menu?
+A:  Use the [page_id] format string in the $aItemOpen string. Create a unique 
+    class or id for each menu item, then reference that item in your CSS or Javascript
+    to do whatever you want.
+    
+    To add a unique class for each menu item (or similar):
+    
+        "<li><a href="[url]" target="[target]" class="[class] p[page_id]">[menu_title]</a>"
+
+        ... creating menu items like ...
+    
+        <li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
+
+        Reference this in your CSS like:
+        
+        a.p45 { color: red; }
+    
+    To add a unique ID for each menu item (or similar):
+    
+        "<li><a id="p[page_id]" href="[url]" target="[target]" class="[class]">[menu_title]</a>"
+    
+        ... creating menu items like ...
+    
+        <li><a id="p45" href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
+
+        Reference this in your CSS like:
+        
+        a#p45 { color: red; }
+        
+        Note that the ID can only be used if that menu is generated and displayed one time
+        only on the page (because HTML ID's must be unique within a page). 
+    
+    
+FUNKTION
+========
+
+Der komplette Aufruf und die Vorgabe Parameterwerte für show_menu2 sind wie folgt:
+
+    show_menu2(
+        $aMenu          = 0,
+        $aStart         = SM2_ROOT,
+        $aMaxLevel      = SM2_CURR+1,
+        $aOptions       = SM2_TRIM,
+        $aItemOpen      = '[li][a][menu_title]</a>',
+        $aItemClose     = '</li>',
+        $aMenuOpen      = '[ul]',
+        $aMenuClose     = '</ul>',
+        $aTopItemOpen   = false,
+        $aTopMenuOpen   = false
+        )
+
+Im Abschnitt "Parameter" findet sich eine detaillierte Beschreibung jedes 
+einzelnen Parameters.
+Jeder Parameter muß absolut korrekt verwendet werden. Folgende Regeln können 
+dabei helfen:
+
+    $aMenu = 0 ist in den meisten Anwendungsfällen der beste Wert.
+    
+    $aStart muß entweder eine page ID oder ein Wert der mit "SM2_" beginnt sein.
+    
+    $aMaxLevel kann nur Werte erhalten, die mit "SM2_" beginnen.
+    
+    $aOptions bis auf einige wenige Spezialfälle sind hier nur Werte die mit 
+    "SM2_" beginnen zulässig.
+    
+    Alle weiteren Parameter enthalten die (HTML)Tags die die Ausgabe des Menüs 
+    steuern.
+    
+    Ab $aItemOpen kann jedem Parameter der Wert false übergeben werden um den 
+    jeweiligen Vorgabewert zu erhalten.
+
+    Dies kann beispielsweise verwendet werden um eine nummerierte Liste zu 
+    erzeugen, während für die einzelnen Menüpunkte trotzdem die Vorgabewerte 
+    Verwendung finden:
+
+        show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
+
+Bitte beachten: bis einschliesslich $aOptions müssen alle Parameter explizit übergeben werden!
+
+
+HTML-AUSGABE
+============
+Die HTML-Ausgabe hängt wesentlich davon ab, welche Parameter an die Funktion übergeben werden. 
+Unabhängig davon werden nachfolgende Klassen grundsätzlich für jedes Menü verwendet, wobei 
+einzelne Menüpunkte, wenn es erforderlich ist, auch mehrere Klassen erhalten können.
+
+    KLASSE          ZUORDNUNG
+    ------------    -------------------------------------------------------
+    menu-top        Nur der erste Menüpunkt.
+    menu-parent     Jeder Hauptmenüpunkt.
+    menu-current    Nur der Menüpunkt der aktuellen Seite.
+    menu-sibling    Alle "Geschwister" der aktuellen Seite.
+    menu-child      Jedes Untermenü der aktuellen Seite.
+    menu-expand     Jedes Menü das Untermenüs hat.
+    menu-first      Der erste Punkt eines jeden Menüs oder Untermenüs.
+    menu-last       Der letzte Punkt eines jeden Menüs oder Untermenüs.
+
+    Folgende Klassen werden nur hinzugefügt, wenn das SM2_NUMCLASS Flag gesetzt 
+    ist:
+
+    menu-N          Jeder Menüpunkt, wobei das N für die ABSOLUTE Menütiefe, 
+                    beginnend bei 0, des jeweiligen Menüpunktes steht.
+                    Die oberste Ebene ist also immer menu-0, die nächste
+                    Ebene menu-1 usw.
+    menu-child-N    Jedes Untermenü der aktuellen Seiten, wobei das N für die
+                    RELATIVE Tiefe des Untermenüs, beginnend bei 0, steht.
+        
+Beispiel einer HTML-Ausgabe:
+
+<ul class="menu-top menu-0">
+  <li class="menu-0 menu-first">  ... </li>
+  <li class="menu-0 menu-expand menu-parent">  ...
+  <ul class="menu-1">
+    <li class="menu-1 menu-expand menu-first">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-first">  ...
+      <li class="menu-2 menu-last">  ...
+    </ul>
+    </li>
+    <li class="menu-1 menu-expand menu-parent">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
+      <ul class="menu-3">
+        <li class="menu-3 menu-child menu-child-0 menu-first">  ...
+        <ul class="menu-4">
+          <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
+          <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
+        </ul>
+        </li>
+        <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
+      </ul>
+      </li>
+      <li class="menu-2 menu-sibling menu-last">  ... </li>
+    </ul>
+    </li>
+    <li class="menu-1">  ... </li>
+    <li class="menu-1 menu-expand menu-last">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-first menu-last">  ... </li>
+    </ul>
+    </li>
+  </ul>
+  </li>
+  <li class="menu-0 menu-last">  ... </li>
+</ul>
+
+
+PARAMETER
+=========
+$aMenu      
+    Nummer des Menüs. Diese ist nützlich um mehrere Menüs auf einer Seite zu    
+    verwenden.
+    Menü Nummer 0 ist das Vorgabemenü der aktuellen Seite, SM2_ALLMENU gibt alle
+    im System verwendeten Menüs zurück.
+
+$aStart  
+    Gibt an, ab welcher Ebene die Erzeugung des Menüs beginnen soll. In den     
+    meisten Fällen wird dies die oberste Ebene des anzuzeigenden Menüs sein. Es 
+    kann einer der folgenden Werte verwendet werden:
+
+        SM2_ROOT+N  Beginnt N Ebenen unterhalb der obersten Ebene, z.B.:
+                    SM2_ROOT      Beginnt auf der obersten Ebene
+                    SM2_ROOT+1    Beginnt eine Ebene unterhalb der obersten Ebene
+                    SM2_ROOT+2    Beginnt zwei Ebenen unterhalb der obersten Ebene
+
+        SM2_CURR+N  Beginnt N Ebenen unterhalb der aktuellen Ebene, z.B.:
+                    SM2_CURR      Beginnt auf der aktuellen Ebene. Alle Geschwister
+                                  der aktuellen Ebene
+                    SM2_CURR+1    Beginnt eine Ebene unterhalb der aktuellen Ebene
+                                  mit allen Unterebenen
+
+        page_id     Verwendet die Seite mit der angegebenen page id als Elternelement.
+                    Alle Untermenüs dieser Seite werden angezeigt. 
+                    (Die page id kann ermittelt werden, wenn man die Seite im 
+                    Admin-Backend editiert, sie steht dann in der Adresszeile des      
+                    Browsers: http://SITE/admin/pages/modify.php?page_id=35
+
+$aMaxLevel   
+    Die maximale Anzahl der Ebenen die angezeigt werden. Die Anzeige
+    beginnt ab der in $aStart festgelegten Ebene, bis hin zu der hier 
+    festgelegten Ebene.
+        
+        SM2_ALL      Keine Beschränkung, alle Ebenen werden angezeigt
+
+        SM2_CURR+N   Zeigt immer die aktuelle Seite + N Ebenen. 
+                     SM2_CURR      Aktuelle Ebene (keine Unterebene)
+                     SM2_CURR+3    Alle übergeordneten + aktuelle + 3 Unterebenen
+
+        SM2_START+N  Beginnt immer auf der Startebene + N Ebenen.
+                     Die Ebenen werden unabhängig davon angezeigt,egal 
+                     auf welcher Ebene sich die aktuelle Seite befindet.
+                     SM2_START     Eine einzelne Ebene ab der Startebene.
+                     SM2_START+1   Startebene + eine Ebene darunter.
+
+        SM2_MAX+N    Zeigt höchstens N Ebenen ab der Startebene.
+                     Ebenen unterhalb der aktuellen Ebene werden nicht angezeigt.
+                     SM2_MAX       Nur die Startebene (gleiche Wirkung wie SM2_START)
+                     SM2_MAX+1     Die Startebene und eine Ebene darunter.
+
+$aOptions   
+    Spezielle Flags für verschiedene Menügenerierungs Optionen. Sie können mittels
+    einer ODER Verknüpfung (|) miteinander kombiniert werden. Um beispielsweise
+    sowohl TRIM als auch PRETTY zu definieren, verwendet man: (SM2_TRIM | SM2_PRETTY).
+
+    GROUP 1
+    -------
+    Aus dieser Gruppe muss stets genau ein Flag angegeben werden. Diese Flags
+    bestimmen auf welche Weise die Geschwisterelemente im Menübaum in der
+    Ausgabe unterdrückt werden.
+    
+    SM2_ALL         Zeigt alle Zweige des Menübaums
+                        A-1 -> B-1 
+                            -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+                        A-2 -> B-3
+                            -> B-4
+
+    SM2_TRIM        Zeigt alle Geschwistermenüs der Seite im aktuellen Pfad.
+                    Alle Untermenüs von Elemnten die sich nicht im Pfad befinden
+                    werden entfernt.
+                        A-1 -> B-1 
+                            -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+                        A-2 
+
+    SM2_CRUMB       Zeigt den Breadcrumb Pfad des Menüs an, also den aktuellen
+                    Menüpunkt sowie alle Menüpunkte die dorthin führen.
+                        A-1 -> B-2 -> C-2 (CURRENT)
+
+    SM2_SIBLING     Wie SM2_TRIM, es werden aber nur Geschwistermenüs der aktuellen
+                    Seite angezeigt. Alle anderen Punkte werden unterdrückt.
+                        A-1 -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+
+    GROUP 2
+    -------
+    Diese Flags sind optional, sie können in beliebiger Anzahl kombiniert werden.
+
+    SM2_NUMCLASS    Fügt die nummerierten Menüklassen "menu-N" und 
+                    "menu-child-N hinzu.
+        
+    SM2_ALLINFO     Lädt alle Felder aus der Seitentabelle der Datenbank.
+                    Dies verursacht einen ziemlich hohen Speicherverbauch und sollte
+                    deshalb nur mit Bedacht verwendet werden.
+                    Dadurch werden z.B. die Keywords, die Seitenbeschreibung sowie
+                    all die anderen Informationen verfügbar, die normalerweise nicht
+                    geladen werden.
+                    Bitte beachten: dieses Flag muss beim ERSTEN Aufruf von schow_menu2
+                    für die jeweilige Menü ID verwendet werden, oder in Verbindung
+                    mit SM2_NOCACHE, sonst zeigt es keine Wirkung.
+    
+    SM2_NOCACHE     Die aus der Datenbank gelesenen Daten werden bei erneutem Aufruf von
+                    show_menu2 nicht wiederverwendet sondern erneut aus der Datenbank 
+                    gelesen.
+    
+    SM2_PRETTY      Bringt die HTML-Ausgabe des Menüs mittels Leerzeichen und
+                    Zeilenumbrüchen in eine gut lesbare Form. Das ist besonders 
+                    nützlich beim Debuggen der Menüausgabe.
+    
+    SM2_BUFFER      Gibt den HTML-Code nicht direkt aus, sondern speichert ihn intern
+                    zwischen und gibt ihn als kompletten String aus.
+    
+    SM2_CURRTREE    Schliesst alle anderen Toplevelmenüs von der Betrachtung aus.
+                    Es werden nur Menüpunkte des aktuellen Menüzweiges dargestellt.
+                    Dieses Flag kann bei Bedarf mit jedem Flag aus der Gruppe 1
+                    kombiniert werden.
+    
+    SM2_ESCAPE      Wendet htmlspecialchars auf den Menüstring an.
+                    Dies kann bei älteren Websitebaker Installationen erforderlich
+                    sein um eine valide HTML Ausgabe zu erzeugen.
+                        
+    SM2_SHOWHIDDEN  Hidden pages are usually hidden all of the time, including 
+                    when they are active (i.e. current page or a parent page).
+                    Use private pages for time when you want pages to be
+                    hidden except when active. However for compatibility with
+                    release 4.8, supply this flag to enable hidden pages to
+                    become visible when they are active.
+
+    SM2_XHTML_STRICT	Stellt die XHTML-Kompatibilität der Links sicher indem
+					in per [a] oder [ac] formatierten Links die Targetangabe
+					entfernt und das Argument title="[page_titel]" eingefügt
+					wird. Bei manuell zusammengestellten Links ist der Designer
+					selbst für die XHTML-Konformität zuständig.
+
+	SM2_NO_TITLE	Unterdrückt die Ausgabe des Inhaltes des Title-Attributes
+					bei [a] oder [ac] formatierten links. Im XHTML-Strikt Modus
+                    wird 'title' mit einen &nbsp; ausgegeben.
+
+    Für diesen Parameter gibt es auch einen erweiterten Modus, bei dem die Optionen
+    als assoziatives Array übergeben werden. Näheres dazu im Abschnitt ERWEITERTE
+    OPTIONEN. Für die meisten Anwendungsfälle wird dies jedoch NICHT benötigt.
+    
+$aItemOpen
+    Dies legt den Formatstring fest, mit dem jeder einzelne Menüeintrag begonnen
+    wird. Für den allerersten Menüeintrag kann mittels $aTopItemOpen ein anderer
+    Formatstring definiert werden.
+    Wenn dieser Parameter auf false gesetzt wird, wird der Vorgabe Formatstring
+    '[li][a][menu_title]</a>' verwendet um die Kompatibilität zur Website Baker
+    Standardfunktion show_menu() zu gewährleisten.
+    Da die Formatierung mittels CSS-Klassen oftmals einfacher ist, wenn sie auf den 
+    <a> tag angewendet werden, empfiehlt es sich hier folgenden Formatstring zu
+    verwenden: '<li>[ac][menu_title]</a>'.
+    
+    Dieser Parameter kann auch als Instanz eine Formatierungklasse für das Menü
+    verwendet werden. Die nähere Beschreibung dazu findet sich im Abschnitt FORMATTER. 
+    Wenn hier ein Formatter angegeben wird, werden alle Argumente
+    nach $aItemOpen ignoriert.
+
+$aItemClose
+    Dieser String schließt jeden Menüpunkt ab. 
+    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
+    ersetzt!
+    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</li>' verwendet.
+    
+$aMenuOpen
+    Mit diesem Formatstring wird eine Liste von Menüeinträgen geöffnet. Für das erste
+    Menü kann mittels $aTopMenuOpen ein davon abweichender Formatstring definiert
+    werden.
+    Wenn dieser Parameter auf false gesetzt ist wird der Vorgabewert '[ul]'
+    verwendet.
+    
+$aMenuClose
+    Dieser String schließt jedes Menü ab. 
+    Bitte beachten: dies ist kein Formatstring und es werden keine Schlüsselworte
+    ersetzt!
+    Wenn dieser Parameter auf false gesetzt ist, wird die Vorgabe '</ul>' verwendet.
+
+$aTopItemOpen
+    Der Formatstring für den allerersten Menüpunkt. Wenn dieser Parameter auf false
+    gesetzt wird, wird der selbe Formatstring wie bei $aItemOpen verwendet.
+
+$aTopMenuOpen 
+    Der Formatstring für das erste Menü. Wenn dieser Parameter auf false
+    gesetzt wird, wird der selbe Formatstring wie bei $aMenuOpen verwendet.
+
+    
+
+ERWEITERTE OPTIONEN
+===================
+Der Parameter $aOptions kann auf zweierlei Arten verwendet werden. Zum einen, wie oben 
+im Abschnitt PARAMETER beschrieben, diese Art sollte für die allermeisten 
+Anwendungsfälle ausreichen. Um allerdings in speziellen Fällen die Sonderoptionen 
+ansprechen zu können, müssen die erforderlichen Werte als assoziatives Array 
+bereitgestellt werden.
+Bitte beachten: Die SM2_* Flags sind auch hierbei erforderlich und müßen als 'flags' 
+übergeben werden.
+
+    'flags'     **ZWINGEND ERFORDELICH** Dies sind die Flags die oben im Abschnitt 
+                PARAMETER unter $aOptions beschrieben wurden.
+
+    'notrim'    Hiermit wird eine Anzahl von Ebenen festegelegt, die relativ bezogen 
+                auf die in $aStart festgelegte Menüebene, immer angezeigt werden. Dies 
+                bewirkt, daß für diese Ebenen das SM2_TRIM Flag ignoriert wird.
+
+Um dieses Array zu verwenden, empfiehlt es sich es erst anzulegen und dann den 
+$aOptions parameter mit dem angelegten Array zu beliefern:
+
+    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
+    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
+    
+    
+    
+FORMAT STRINGS
+==============
+Die folgenden Tags können in den Formatstrings für $aItemOpen und $aMenuOpen
+verwendet werden und sollen durch den entsprechenden Text ersetzt werden.
+
+[a]             <a> tag ohne Klasse:   '<a href="[url]" target="[target]">'
+[ac]            <a> tag mit Klasse:    '<a href="[url]" target="[target]" class="[class]">'
+[li]            <li> tag mit Klasse:   '<li class="[class]">'
+[ul]            <ul> tag mit Klasse:   '<ul class="[class]">'
+[class]         Liste der Klassen für diese Seite
+[menu_title]    Text des Menütitel 
+                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
+[menu_icon_0]	die URL zu einer Bilddatei mit normal - Darstellung (ab WB2.9.0)
+[menu_icon_1]	die URL zu einer Bilddatei mit active/hover - Darstellung (ab WB2.9.0)
+[page_title]    text des Seitentitel 
+                (HTML entity escaped ausser das SM2_NOESCAPE Flag ist gesetzt)
+[page_icon]		die URL zu einer seitenbezogenen Bilddatei (ab WB2.9.0)
+[tooltip]       Tooltip-Text, der normal im title-Attribut der Links ausgegeben wird
+[url]           die URL der Seiten für den <a> tag
+[target]        das Seitenziel für den <a> tag
+[page_id]       die Page ID des aktuellen Menüpunktes.
+[parent]        die Page ID des übergeordneten Menüpunktes.
+[level]         die Seitenebene, 
+                dies ist die gleiche Zahl die im "menu-N" CSS tag verwendet wird.
+[sib]           Anzahl der Geschwister des aktuellen Menüpunktes.
+[sibCount]      Anzahl aller Geschwister in diesem Menü.
+[if]            Bedingung (Details hierzu im Abschnitt "Bedingte Formatierung')
+
+Folgende tags sind NUR verfügbar, wenn das SM2_ALLINFO Flag gesetzt ist.
+
+[description]   Seitenbeschreibung
+[keywords]      Schlüsselworte der Seite
+
+
+
+BEDINGTE FORMATIERUNG
+=====================
+Die Anweisung für eine bedingte Formatierung kann eine der folgenden Formen haben:
+
+    [if(A){B}]
+    [if(A){B}else{C}]
+    
+    A   Die Bedingung. Details dazu, siehe unten.
+    
+    B   Der Ausdruck der verwendet wird, wenn die Bedingung erfüllt ist.
+        Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
+        enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
+        'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das 
+        Zeichen '}' nicht erlaubt ist).
+    
+    C   Der Ausdruck der verwendet wird, wenn die Bedingung nicht erfüllt ist.
+        Dies kann ein beliebiger String sein, der jedoch nicht das Zeichen '}'
+        enthalten darf. Er kann jeden beliebigen Formatstring aus dem Abschnitt
+        'Format Strings' enthalten, jedoch keinen weiteren Bedingungstest (da das 
+        Zeichen '}' nicht erlaubt ist).
+
+Die Bedingung ist eine Kombination von einem oder mehreren boolschen Vergleichen.
+Wenn mehr als ein Vergleich erforderlich ist, so muss dieser mit den anderen Vergleichen
+mittels || (boolsches oder - OR) oder && (boolsches und - AND) verknüpft werden.    
+
+Ein einzelner Vergleich besteht aus dem linken Operanden, dem Operator und dem rechten 
+Operanden.
+z.B. X == Y  - hierbei ist X der linke Operand, == der Operator und Y der rechte Operand.
+    
+    Linker Operand. Muss eines der folgende Schlüsselworte sein:
+        class       Überprüfung ob diese Klasse existiert. Es sind nur die
+                    "==" and "!=" Operatoren erlaubt. In diesem Fall haben die Operatoren
+                    die Bedeutung von "enthält" bzw. "enthält nicht" an Stelle von
+                    "ist gleich" bzw. "ist nicht gleich"
+        level       Überprüfung der Seitenebene.
+        sib         Überprüfung der Geschwisteranzahl der aktuellen Seite.
+        sibCount    Überprüfung der Geamtanzahl der Geschwister im aktuellen Menü.
+        id          Überprüfung der page id.
+		target		Überprüfung der Target-Angabe
+    
+    Operator. Muss einer der folgenden sein:
+        <           Kleiner als
+        <=          Kleiner oder gleich als
+        ==          Gleich
+        !=          Nicht gleich
+        >=          Grössr oder gleich als
+        >           Grösser als
+    
+    Rechter Operand. Die Art dieses Operanden hängt von dem, für den linken Operanden
+                     verwendeten Schlüsselwort ab.
+        class       einer der "menu-*" Klassennamen wie sie im Abschnitt "Ausgabe"
+                    spezifiziert sind.
+        level       Überprüfung der Seitenebene gegen folgende Werte:
+                        <number>  die absolute Seitenebene
+                        root      die oberste Seitenebene
+                        granny    die Seitenebene über der übergeordneten Seitenebene
+                        parent    die übergeordnete Seitenebene
+                        current   die aktuelle Seitenebene
+                        child     die untergeornete Seitenebene
+        id          Überprüfung der page id gegen folgende Werte:
+                        <number>  die absolute page id
+                        parent    die übergeordnete page id
+                        current   die aktuelle page id
+        sib         Eine positive Integerzahl, oder "sibCount" um die Anzahl der
+                    Geschwister in diesem Menü zu überprüfen
+        sibCount    Eine positive Integerzahl
+		target		Ein String, der eine mögliche Targetangabe darstellt
+        
+Folgende Beispiele ergeben "wahr" und der Ausdruck {exp} wird ausgeführt, wenn zutrifft:
+    
+    [if(class==menu-expand){exp}]   hat ein Untermenü
+    [if(class==menu-first){exp}]    ist der erste Eintrag in einem Menü
+    [if(class!=menu-first){exp}]    ist NICHT der erste Eintrag in einem Menü
+    [if(class==menu-last){exp}]     ist der letzte Eintrag in einem Menü
+    [if(level==0){exp}]             befindet sich auf der obersten Ebene
+    [if(level>0){exp}]              befindet sich NICHT auf der obersten Ebene
+    [if(sib==2){exp}]               ist der zweite Eintrag in einem Menü
+    [if(sibCount>1){exp}]           ist in einem Menü mit mehr als einem Eintrag
+    [if(sibCount!=2){exp}]          ist in einem Menü, das nicht genau 2 Einträge hat
+    [if(level>parent){exp}]         ist in einem Geschwistermenü oder dem Untermenü eines      
+                                    Geschwistermenüs
+    [if(id==parent){exp}]           ist der übergeordnete Punkt der aktuellen id
+	[if(target==_self){exp}]		im Target-Attribut ist der String '_self' enthalten
+
+Wenn eine sonst-Klausel (else) hinzugefügt wird, so wird diese in allen anderen Fällen 
+ausgeführt.
+Zum Beispiel wird "foo" immer dann ausgeführt, wenn die if Überprüfung falsch ergibt, also:
+
+    [if(sib==2){exp}else{foo}]      ist NICHT der zweite Eintrag im Menü
+    [if(sibCount>2){exp}else{foo}]  ist NICHT in einem Menü mit mehr als zwei Einträgen
+
+Bei mehrfach Vergleichen wird der Ausdruck "exp" nur ausgeführt, wenn:
+
+    [if(sib == 1 || sib > 3){exp}]  ist der erste Eintrag ODER ist der vierte oder höhere   
+    Eintrag im Menü    
+               
+    [if(id == current && class == menu-expand){exp}  ist der aktuelle Eintrag UND hat 
+    Untermenüs
+        
+Bitte beachten:
+Alle Überprüfungen werden in der Reihenfolge ausgeführt, in der sie notiert sind, denn:
+* es findet keine Überprüfung auf evtl. Schleifen statt (alle Überprüfungen werden immer ausgeführt)
+* Überprüfungen werden nicht gruppiert (eine Klammerung von Überprüfungen wird nicht unterstützt)
+* sowohl || als auch && haben die gleiche Wertigkeit
+
+
+
+FORMATTER
+=========
+Achtung: dies ist ein fortgeschrittenes und äusserst selten benötigtes Feature!
+
+Mit umfangreichen Kenntnissen in der PHP Programmierung ist es möglich den vordefinierten
+Formatierer von show_menu2 mit einem eigenen zu ersetzen.
+In der include.php von show_menu2 sieht man wie der Formatierer geschreiben werden muss.
+Die API, die verwendet werden muss, sieht wie folgt aus:
+
+(Anmerkung des Übersetzers: Kommentare sind nicht übersetzt, wer sich so weit vorwagt, sollte
+damit keine Probleme haben ;-)
+
+class SM2_Formatter
+{
+    // called once before any menu is processed to allow object initialization
+    function initialize() { }
+    
+    // called to open the menu list
+    function startList($aPage, $aUrl) { }
+    
+    // called to open the menu item
+    function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { }
+    
+    // called to close the menu item
+    function finishItem() { }
+    
+    // called to close the menu list
+    function finishList() { }
+    
+    // called once after all menu has been processed to allow object finalization
+    function finalize() { }
+    
+    // called once after finalize() if the SM2_NOOUTPUT flag is used
+    function getOutput() { }
+};
Index: tags/2.8.3/wb/modules/show_menu2/languages/NL.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+
+ -----------------------------------------------------------------------------------------
+  DUTCH LANGUAGE FILE FOR THE ADDON: SHOW_MENU2
+ -----------------------------------------------------------------------------------------
+*/
+
+//Module Description
+$module_description = 'Deze module integreert een de geavanceerde menu functie <code> show_menu2 () </ code> in Website Baker. Gedetailleerde informatie is beschikbaar op <a href="http://code.jellycan.com/show_menu2/" target="_blank"> http://code.jellycan.com/show_menu2/ </a> of in de <a href = "{WB_URL}/modules/show_menu2/README_EN" target = "_blank"> README </a>.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/languages/NO.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+
+ -----------------------------------------------------------------------------------------
+  NORWEGIAN LANGUAGE FILE FOR THE ADDON: SHOW_MENU2
+ -----------------------------------------------------------------------------------------
+*/
+
+// Norwegian Moduledscripton
+$module_description = 'Dette er en kode snutt (snippet) beregnet p&aring; Website Baker CMS og er en fullgod erstatning for den innebygde meny modulen. For n&aelig;rmere beskrivelse se (Kun p&aring; Engelsk) <a href="http://code.jellycan.com/show_menu2/" target="_blank">http://code.jellycan.com/show_menu2/</a> , for mer WB spesifikke detaljer se <a href="' .WB_URL .'/modules/show_menu2/README.en.txt" target="_blank">readme</a> filen.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/languages/DA.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/DA.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+
+ -----------------------------------------------------------------------------------------
+  DANISH LANGUAGE FILE FOR THE ADDON: SHOW_MENU2
+ -----------------------------------------------------------------------------------------
+*/
+
+// Dansk modulbeskrivelse
+$module_description = 'Dette modul integrerer den udvidede men&uuml;funktion <code>show_menu2()</code> i Website Baker. Der findes detaljeret information p&aring; <a href="http://code.jellycan.com/show_menu2/" target="_blank">http://code.jellycan.com/show_menu2/</a> eller i <a href="{WB_URL}/modules/show_menu2/README.en.txt" target="_blank">readme</a>filen.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/DA.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/languages/FR.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/FR.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+
+ -----------------------------------------------------------------------------------------
+  FRENCH LANGUAGE FILE FOR THE ADDON: SHOW_MENU2
+ -----------------------------------------------------------------------------------------
+*/
+
+//Module Description
+$module_description = 'Ce module int&egrave;gre la fonction de menu avanc&eacute;e <code> show_menu2 () </ code> dans Website Baker. Une information d&eacute;taill&eacute;e est disponible sur <a href="http://code.jellycan.com/show_menu2/" target="_blank"> http://code.jellycan.com/show_menu2/ </a> ou dans le fichier <a href = "{WB_URL}/modules/show_menu2/README_DE" target = "_blank"> README </a>.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/languages/index.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/index.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/languages/DE.php
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/languages/DE.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+    show_menu2: show_menu replacement for Website Baker 
+    Copyright (C) 2006-2009, Brodie Thiesfield
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 2
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
+    02110-1301, USA.
+
+ -----------------------------------------------------------------------------------------
+  GERMAN LANGUAGE FILE FOR THE ADDON: SHOW_MENU2
+ -----------------------------------------------------------------------------------------
+*/
+
+// Deutsche Modulbeschreibung
+$module_description = 'Dieses Modul integriert die erweiterte Men&uuml;funktion <code>show_menu2()</code> in Website Baker. Detailierte Informationen gibt es auf <a href="http://code.jellycan.com/show_menu2/" target="_blank">http://code.jellycan.com/show_menu2/</a> oder in der <a href="{WB_URL}/modules/show_menu2/README.de.txt" target="_blank">readme</a> Datei.';
+
+?>

Property changes on: tags/2.8.3/wb/modules/show_menu2/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/modules/show_menu2/README.en.txt
===================================================================
--- tags/2.8.3/wb/modules/show_menu2/README.en.txt	(nonexistent)
+++ tags/2.8.3/wb/modules/show_menu2/README.en.txt	(revision 1610)
@@ -0,0 +1,606 @@
+show_menu2, version 4.9
+=======================
+A code snippet for the Website Baker CMS software. It provides a complete 
+replacement for the builtin menu functions. All menu data is retrieved using 
+a single database query, all types of menu styles (lists, breadcrums, sitemaps) 
+can be generated with extensive customisation of the resulting HTML.
+
+
+
+INSTALLATION
+============
+1. Download the latest version from http://code.jellycan.com/show_menu2/
+2. Log into your WebsiteBaker installation
+3. Go to Addons -> Modules
+4. If a previous version of show_menu2 is already installed, select it from
+   the "Uninstall Module" list and choose the "Uninstall" button.
+5. In the "Install Module" section, enter the path to the show_menu2 zip file
+   that you downloaded in step 1, and choose the "Install" button.
+   
+   
+   
+USING SHOW_MENU2
+================
+You need to modify the PHP files of your template to call show_menu2 where you 
+wish to have the menu displayed. Remember when you replace calls to the old
+menu functions to use the new parameters that show_menu2 requires. 
+
+Often times the default menu generated by show_menu2 is all that you need.
+This menu shows the current page and children of the current page. It is
+generated by just calling show_menu2 with no parameters. For example:
+
+    show_menu2();
+    
+Note that the call to show_menu2 is PHP, so you usually need to wrap it in the
+PHP code brackets so that it will execute. Like this:
+
+    <?php show_menu2(); ?>
+
+This default menu generates a complete list based menu with many classes that
+allow easy CSS styling. For example, the current menu item will have the
+"menu-current" class added to the <li> tag. Additionally, every menu item with
+a sub-menu will have the "menu-expand" class added to the <li> tag. This allows 
+you to create CSS rules to style those menu items differently. For example:
+
+    li.menu-expand  { font-weight: bold; }
+    li.menu-current { background: red; }
+
+See the "Output" section for details of exactly what classes are added to each 
+element. More elaborate and different menu structures are able to be created by 
+supplying different parameters to the show_menu2 function call. For example, 
+to show only menu items from the top level of the menu you use:
+
+    show_menu2(0, SM2_ROOT, SM2_START);
+    
+Alternatively, to show up to two levels of the child menus of the current page:
+
+    show_menu2(0, SM2_CURR+1, SM2_CURR+2);
+
+There are many more possible menus that can be generated by show_menu2. See the
+demonstration website at http://code.jellycan.com/sm2test/ for more examples. 
+
+
+
+COMMON QUESTIONS
+================
+
+Q:  I'm not a programmer. Do you have simpler documentation? 
+A:  Nup. This is it. Go hard. Gambarre.
+
+
+Q:  How do I create a drop-down menu?
+A:  This is unrelated to show_menu2. You need to change the template CSS code 
+    to display the menu as a drop-down. Try the "allcss2" template from the WB
+    addon repository. http://addons.websitebaker.org/pages/templates.php
+
+
+Q:  Why does the menu disappear after I do a search on my multilingual WB site?
+A:  You're missing some required lines in your template.
+
+    1.  Log into WB administration, and go to Settings -> Show advanced settings 
+        -> Search Settings -> Header Code and add the following input field 
+        after the <form> open tag: 
+
+        <input type="hidden" name="referrer" value="[REFERRER_ID]" />
+
+
+    2.  In the index.php of your template, add the following input field 
+        immediately following the search <form> open tag.
+
+        <input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
+
+
+Q:  Multilingual? That sounds cool. How do I do that?
+A:  http://help.websitebaker.org/pages/en/advanced-docu.php
+
+
+Q:  SM2 is generating a warning every time the page is accessed:
+    "show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!"
+A:  You are passing the wrong values to the function. Have a closer look at the 
+    parameters that you are passing. See the PARAMETERS section below for the 
+    correct flag values to pass for the $aOptions parameter.
+
+
+Q:  How do I use a different class/picture/color/widget for each entry in a menu?
+A:  Use the [page_id] format string in the $aItemOpen string. Create a unique 
+    class or id for each menu item, then reference that item in your CSS or Javascript
+    to do whatever you want.
+    
+    To add a unique class for each menu item (or similar):
+    
+        "<li><a href="[url]" target="[target]" class="[class] p[page_id]">[menu_title]</a>"
+
+        ... creating menu items like ...
+    
+        <li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
+
+        Reference this in your CSS like:
+        
+        a.p45 { color: red; }
+    
+    To add a unique ID for each menu item (or similar):
+    
+        "<li><a id="p[page_id]" href="[url]" target="[target]" class="[class]">[menu_title]</a>"
+    
+        ... creating menu items like ...
+    
+        <li><a id="p45" href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
+
+        Reference this in your CSS like:
+        
+        a#p45 { color: red; }
+        
+        Note that the ID can only be used if that menu is generated and displayed one time
+        only on the page (because HTML ID's must be unique within a page). 
+    
+
+
+FUNCTION
+========
+
+The complete call signature and default parameter value for show_menu2 is:
+
+    show_menu2(
+        $aMenu          = 0,
+        $aStart         = SM2_ROOT,
+        $aMaxLevel      = SM2_CURR+1,
+        $aOptions       = SM2_TRIM,
+        $aItemOpen      = '[li][a][menu_title]</a>',
+        $aItemClose     = '</li>',
+        $aMenuOpen      = '[ul]',
+        $aMenuClose     = '</ul>',
+        $aTopItemOpen   = false,
+        $aTopMenuOpen   = false
+        )
+
+See the "Parameters" section for detailed descriptions of each parameter.
+Ensure that you use each parameter correctly. Use the following rules:
+
+    $aMenu will be 0 for most people.
+    
+    $aStart must be either a page ID or a value starting with "SM2_".
+    
+    $aMaxLevel must be only values that start with "SM2_".
+    
+    $aOptions must be only values that start with "SM2_" (unless you are 
+    in a very small minority of users).
+    
+    All other parameters are the HTML tag templates that will be 
+    output for menus and menu items.
+    
+Note that every parameter from $aItemOpen can be supplied as false to get 
+the default value.
+
+
+
+HTML OUTPUT
+===========
+The menu is output differently depending on what parameters have been 
+supplied to the function, however in general the following classes are used 
+for each menu. Note that items will have multiple classes when relevant.
+
+    CLASS           ATTACHED TO
+    ------------    -------------------------------------------------------
+    menu-top        First menu tag only
+    menu-parent     Every parent menu item of the current page.
+    menu-current    Only the menu item for the current page.
+    menu-sibling    Every sibling of the current page.
+    menu-child      Every sub-menu of the current page.
+    menu-expand     Every menu item with children.
+    menu-first      First item in any menu or sub-menu.
+    menu-last       Last item in any menu or sub-menu.
+
+    The following classes are added only if SM2_NUMCLASS flag has been used.
+
+    menu-N          Every menu item. The N is replaced with the ABSOLUTE 
+                    menu depth of the item starting with 0. The root level 
+                    menu is always menu-0, the next level is menu-1, etc.
+    menu-child-N    Every sub-menu of the current page, the N is replaced 
+                    with the relative depth of the submenu starting at 0.
+
+
+<ul class="menu-top menu-0">
+  <li class="menu-0 menu-first">  ... </li>
+  <li class="menu-0 menu-expand menu-parent">  ...
+  <ul class="menu-1">
+    <li class="menu-1 menu-expand menu-first">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-first">  ...
+      <li class="menu-2 menu-last">  ...
+    </ul>
+    </li>
+    <li class="menu-1 menu-expand menu-parent">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-expand menu-current menu-first">  ...      ** CURRENT PAGE **
+      <ul class="menu-3">
+        <li class="menu-3 menu-child menu-child-0 menu-first">  ...
+        <ul class="menu-4">
+          <li class="menu-4 menu-child menu-child-1 menu-first">  ... </li>
+          <li class="menu-4 menu-child menu-child-1 menu-last">  ... </li>
+        </ul>
+        </li>
+        <li class="menu-3 menu-child menu-child-0 menu-last">  ... </li>
+      </ul>
+      </li>
+      <li class="menu-2 menu-sibling menu-last">  ... </li>
+    </ul>
+    </li>
+    <li class="menu-1">  ... </li>
+    <li class="menu-1 menu-expand menu-last">  ...
+    <ul class="menu-2">
+      <li class="menu-2 menu-first menu-last">  ... </li>
+    </ul>
+    </li>
+  </ul>
+  </li>
+  <li class="menu-0 menu-last">  ... </li>
+</ul>
+
+
+
+PARAMETERS
+==========
+$aMenu      
+    Menu number to use. This is useful when you are using multiple menus. 
+    Supplying a menu number of 0 will use the default menu for the current 
+    page. Supplying SM2_ALLMENU will return all menus in the system.
+
+$aStart  
+    Specify where the menu generation should start from. This is most
+    times the parent item of the menu to display. It must be one of the 
+    following values:
+        SM2_ROOT+N  Start N levels down from the root. e.g.
+                      SM2_ROOT      Starting at the root menu 
+                      SM2_ROOT+1    Start 1 level below the root
+                      SM2_ROOT+2    Start 2 levels below the root
+        SM2_CURR+N  Start N levels down from the current page level. e.g.
+                      SM2_CURR      Starts at the current page level. All
+                                    sibling menus to the current page.
+                      SM2_CURR+1    Starts 1 level down from the current
+                                    page with the children menus.
+        page_id     Display using the specific page as the parent. All
+                    child menus of that page will be displayed. The 
+                    page_id can be found by editing the page in WB admin 
+                    interface. The page_id is included in the URL like: 
+                        http://SITE/admin/pages/modify.php?page_id=35
+
+$aMaxLevel   
+    Maximum menu level to display. Menus are displayed from the start
+    level down to this level.
+        SM2_ALL     No limit, all levels are displayed
+        SM2_CURR+N  Always show to the current page + N levels. 
+                      SM2_CURR      Current (no children)
+                      SM2_CURR+3    All parents + current + 3 children
+        SM2_START+N Always show from the starting level + N levels. The
+                    levels of menu will always be displayed regardless of
+                    what level the current page is.
+                      SM2_START     Single level of menus from starting level
+                      SM2_START+1   Starting level and 1 level down
+        SM2_MAX+N   Show at most N levels from the starting level. Levels 
+                    won't be shown if they are below the current level.
+                      SM2_MAX       Starting level only (same as SM2_START)
+                      SM2_MAX+1     Maximum of starting level and 1 level.
+
+$aOptions  
+    Specify flags for different generation options for the menu. The flags
+    may be combined together using bitwise OR (|). For example, to specify
+    both TRIM and PRETTY you should use, (SM2_TRIM | SM2_PRETTY).
+
+    GROUP 1
+    -------
+    Exactly one flag from this group must always be supplied. These flags 
+    affect how the siblings in the tree are removed from the output. 
+
+    SM2_ALL         Show all branches of the menu tree
+                        A-1 -> B-1 
+                            -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+                        A-2 -> B-3
+                            -> B-4
+    SM2_TRIM        Show all sibling menus of pages on the current path. 
+                    All sub-menus of elements that are not on the path 
+                    are removed.
+                        A-1 -> B-1 
+                            -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+                        A-2 
+    SM2_CRUMB       Show only the breadcrumb trail, i.e. the current
+                    menu and all of it's ancestor menus.
+                        A-1 -> B-2 -> C-2 (CURRENT)
+    SM2_SIBLING     The same as SM2_TRIM however only sibling menus of 
+                    the current page are displayed. All other menus are 
+                    trimmed to show only the path.
+                        A-1 -> B-2 -> C-1
+                                   -> C-2 (CURRENT)
+                                          -> D-1
+                                          -> D-2
+                                   -> C-3
+
+    GROUP 2
+    -------
+    All of these flags are optional. Any number of them may be combined.
+
+    SM2_NUMCLASS    Add the numbered menu classes to the menu. If this 
+                    flag is supplied, the "menu-N" and "menu-child-N" 
+                    classes will be added.
+                    
+    SM2_ALLINFO     Load all fields from the page table of the database.
+                    This will result in quite a lot of memory being used
+                    and is not recommended, however it will make keywords,
+                    descriptions, and other fields available. This data
+                    is not loaded by default.
+                    NOTE: This flag must be used on the *FIRST* call to
+                    show_menu2 *for this menu ID*, or in combination with
+                    SM2_NOCACHE otherwise it will have no effect.
+                    
+    SM2_NOCACHE     Do not reuse or store the data read from the database
+                    between calls to show_menu2. 
+                    
+    SM2_PRETTY      Pretty print the menu HTML with spacing and newlines
+                    for debugging purposes.
+                    
+    SM2_BUFFER      Do not output the menu HTML but instead buffer it 
+                    internally and return it as a string from show_menu2.
+                    
+    SM2_CURRTREE    Exclude all other top level menus from being considered. 
+                    Only items in the current menu tree will be output.
+                    This can be combined with any of the Group 1 flags as
+                    necessary.
+                    
+    SM2_ESCAPE      Call htmlspecialchars on the menu strings. This may be
+                    required with older installations of WB. By escaping the
+                    raw database strings, it permits menus to have HTML 
+                    formatting in them that would cause otherwise cause
+                    pages to fail validation. 
+    
+    SM2_SHOWHIDDEN  Hidden pages are usually hidden all of the time, including 
+                    when they are active (i.e. current page or a parent page).
+                    Use private pages for time when you want pages to be
+                    hidden except when active. However for compatibility with
+                    release 4.8, supply this flag to enable hidden pages to
+                    become visible when they are active.
+
+    SM2_XHTML_STRICT	From all links, created by [a] or [ac], the 'target' -
+					attribute will be removed to preserve the XHTML-Compatibility
+
+	SM2_NO_TITLE	Supress the value of the 'title'-attributes on links which
+					are created by [a] or [ac] formatted links.
+
+    This parameter also has an extended mode where an associative array of 
+    options is supplied. See the EXTENDED OPTIONS section for details. 
+    Most users will NOT need to use this.
+
+$aItemOpen
+    Format string to use for creating each individual menu item entry.
+    A different format string may be used for the very first entry by 
+    supplying a different format string for $aTopItemOpen. When set to 
+    false, it uses the default of '[li][a][menu_title]</a>' to maintain
+    compatibility with show_menu(). Note however that CSS formatting is
+    often easier if the classes are added to the <a> tag. Use the format
+    string of '<li>[ac][menu_title]</a>' for this style of tag.
+
+    This parameter may also be specified as an instance of a formatting 
+    class for the menu. See the section "Formatter" below for details of
+    the API this class must expose. When a formatter is supplied, all 
+    arguments after $aItemOpen are ignored.
+
+$aItemClose
+    String used to close each item. Note that this is not a format
+    string and no keywords will be replaced. When set to false, it uses 
+    the default of '</li>'.
+
+$aMenuOpen
+    Format string to use for opening a list of menu item entries. A 
+    different format string may be used for the very first menu by 
+    supplying a different format string for $aTopMenuOpen. When set to 
+    false, it uses the default of '[ul]'.
+
+$aMenuClose
+    String used to close each menu. Note that this is not a format
+    string and no keywords will be replaced. When set to false, it uses 
+    the default of '</ul>'.
+
+$aTopItemOpen
+    Format string for the first item. When set to false, it uses the same 
+    format as $aItemOpen.
+
+$aTopMenuOpen 
+    Format string for the first menu. When set to false, it uses the same 
+    format as $aMenuOpen.
+
+
+
+EXTENDED OPTIONS
+================
+The $aOptions parameter is a dual mode parameter. For most users, only the
+SM2_* flags will be sufficient. However, to access the extra options, it 
+must be supplied as an associative array. Note that the SM2_* flags are
+still required and must be supplied as 'flags'.
+
+    'flags'     **REQUIRED** These are the flags described in PARAMETERS
+                above for the $aOptions parameter. 
+
+    'notrim'    Specify a number of levels relative to the menu level of 
+                $aStart that will always be displayed. This will cause the
+                SM2_TRIM flag to be ignored for these levels.
+                        
+To supply one of these options in addition to the flags, the option array 
+should be created and passed as the $aOptions parameter:
+
+    $options = array('flags' => (SM2_TRIM|...), 'notrim' => 1);
+    show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
+    
+    
+    
+FORMAT STRINGS
+==============
+The following tags may be included in the format strings for $aItemOpen and 
+$aMenuOpen and will be replaced with the appropriate text.
+
+[a]             <a> tag (no class):         '<a href="[url]" target="[target]">'
+[ac]            <a> tag including class:    '<a href="[url]" target="[target]" class="[class]">'
+[li]            <li> tag including class:   '<li class="[class]">'
+[ul]            <ul> tag including class:   '<ul class="[class]">'
+[class]         List of classes for that page
+[menu_title]    Menu title text (HTML entity escaped unless SM2_NOESCAPE flag is used)
+[menu_icon_0]	URL poining to an image for display normal - status
+[menu_icon_1]	URL poining to an image for display active/hover - status
+[page_title]    Page title text (HTML entity escaped unless SM2_NOESCAPE flag is used)
+[page_icon]		URL poining to an image relating to the current page
+[url]           Page URL for the <a> tag
+[target]        Page target for the <a> tag
+[page_id]       Page ID of the current menu item
+[parent]        Page ID of the parent menu item
+[level]         Page level, the same number as is used for the "menu-N" CSS tag.
+[sib]           Current menu sibling number
+[sibCount]      Total number of siblings in this menu
+[if]            Conditional test (see section CONDITIONAL FORMATTING)
+
+The following tags are only available when the SM2_ALLINFO flag is used.
+
+[description]   Page description
+[keywords]      Page keywords
+
+
+
+CONDITIONAL FORMATTING
+======================
+The conditional formatting directive takes one of the following forms:
+
+    [if(A){B}]
+    [if(A){B}else{C}]
+    
+    A   Conditional test. See below for more details.
+    
+    B   Expression emitted when the if-test is true. This may be any string 
+        that does NOT include the '}' character. It may include any of the 
+        format strings described in the section FORMAT STRINGS with the 
+        exception of the conditional test (because '}' is not permitted).
+        
+    C   Expression emitted when the if-test is false. This may be any string 
+        that does NOT include the '}' character. It may include any of the 
+        format strings described in the section FORMAT STRINGS with the 
+        exception of the conditional test (because '}' is not permitted).
+    
+The conditional test is a combination of one or more boolean tests.
+If more than one test is supplied, it must be combined with other tests
+using either || (boolean OR) or && (boolean AND). 
+
+A single test is made up of the left operand, operator and right operand.
+e.g. X == Y where X is the left operand, == is the operator and Y is the
+right operand.
+    
+    Left operand. It must be one of the following keywords:
+        class       Test for existence of one of the classes. Only the
+                    "==" and "!=" operators are permitted. In this case
+                    these operators have the meaning of "includes" 
+                    instead of "equals".
+        level       Test against the page level.
+        sib         Test against the current page sibling number.
+        sibCount    Test against the number of siblings in the menu.
+        id          Test against the page id.
+		target		Test against the target attribute
+    
+    Operator. It must be one of the following:
+        <           Less Than
+        <=          Less Than Equals
+        ==          Equals
+        !=          Not Equal
+        >=          Greater Than Equals
+        >           Greater Than
+    
+    Right operand. The type of this operand depends on the keyword used
+    for the left operand:
+        class       One of the "menu-*" class names as listed in the 
+                    section "OUTPUT".
+        level       Test the page level against the following values:
+                      <number>  absolute page level
+                      root      the root page level
+                      granny    the grand-parent page level
+                      parent    the parent page level
+                      current   the current page level
+                      child     the child page level
+        id          Test the page id against the following values:
+                      <number>  absolute page id
+                      parent    the parent page id
+                      current   the current page id
+        sib         A positive integer, or "sibCount" to test against
+                    the count of siblings in this menu.
+        sibCount    A positive integer.
+		target		A string, containing a possible target
+        
+For example, valid tests are expression "exp" is emitted only when the menu item:
+    
+    [if(class==menu-expand){exp}]   has a sub-menu
+    [if(class==menu-first){exp}]    is first item in a menu
+    [if(class!=menu-first){exp}]    is NOT first item in a menu
+    [if(class==menu-last){exp}]     is last item in a menu
+    [if(level==0){exp}]             is at the root
+    [if(level>0){exp}]              is not at the root
+    [if(sib==2){exp}]               is the second item in a menu
+    [if(sibCount>1){exp}]           is in a menu with more than 1 entry
+    [if(sibCount!=2){exp}]          is in a menu which doesn't have exactly
+    [if(level>parent){exp}]         is in a sibling menu or child of a sibling
+    [if(id==parent){exp}]           is the parent of the current page
+	[if(target==_self){exp}]		if value of target-attribute is '_self'
+
+If an else-clause was added, then the expression for the else would be 
+emitted in all other cases. For example the expression "foo" is emitted
+whenever the if-test is false, so therefore:
+
+    [if(sib==2){exp}else{foo}]          is NOT the second item in a menu
+    [if(sibCount>2){exp}else{foo}]      is NOT in a menu with more than 2 entries
+
+For multiple tests, the expression "exp" is emitted only when the menu item:
+
+    [if(sib == 1 || sib > 3){exp}]      
+        [is the first item] OR [is the 4th or larger item] in the menu
+        
+    [if(id == current && class == menu-expand){exp}
+        [is the current item] AND [it has children]
+
+Note that all tests are evaluated in the order listed because:
+ * there is no short-circuit evaluation (all individual tests are always evaluated)
+ * there is no grouping of tests (i.e. no support for parenthesis)
+ * both || and && are considered the same level 
+
+
+
+FORMATTER
+=========
+Note: This is an advanced and rarely needed feature!
+
+If you are capable of extensive PHP programming, it is possible to replace the 
+predefined menu formatter that show_menu2 is uses with a custom module. See the
+include.php file of show_menu2 for an example of how the menu formatter must be 
+written. The API it must use is:
+
+class SM2_Formatter
+{
+    // called once before any menu is processed to allow object initialization
+    function initialize() { }
+    
+    // called to open the menu list
+    function startList($aPage, $aUrl) { }
+    
+    // called to open the menu item
+    function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { }
+    
+    // called to close the menu item
+    function finishItem() { }
+    
+    // called to close the menu list
+    function finishList() { }
+    
+    // called once after all menu has been processed to allow object finalization
+    function finalize() { }
+    
+    // called once after finalize() if the SM2_NOOUTPUT flag is used
+    function getOutput() { }
+};
Index: tags/2.8.3/wb/modules/index.php
===================================================================
--- tags/2.8.3/wb/modules/index.php	(nonexistent)
+++ tags/2.8.3/wb/modules/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         modules
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/modules/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/modules
===================================================================
--- tags/2.8.3/wb/modules	(nonexistent)
+++ tags/2.8.3/wb/modules	(revision 1610)

Property changes on: tags/2.8.3/wb/modules
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+loginbox
Index: tags/2.8.3/wb/templates/allcss/info.php
===================================================================
--- tags/2.8.3/wb/templates/allcss/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/info.php	(revision 1610)
@@ -0,0 +1,45 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory				= 'allcss';
+$template_name						= 'All CSS';
+$template_function			= 'template';
+$template_version					= '2.71';
+$template_platform				= '2.7';
+$template_author					= 'Ryan Djurovich, C. Sommer';
+$template_license					= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description			= 'Default template for Website Baker. This template is designed with one goal in mind: to completely control layout with CSS. In case you were wondering, that is where the name came from.';
+
+// OPTIONAL VARIABLES FOR ADDITIONAL MENUES AND BLOCKS
+// $menu[1]								= '';
+// $menu[2]								= '';
+// $block[1]							= '';
+// $block[2]							= '';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/allcss/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/index.php
===================================================================
--- tags/2.8.3/wb/templates/allcss/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/index.php	(revision 1610)
@@ -0,0 +1,148 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains the overall template markup and the Website Baker
+ * template functions to add the contents from the database.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../index.php'));
+
+// TEMPLATE CODE STARTS BELOW
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=<?php 
+	echo defined('DEFAULT_CHARSET') ? DEFAULT_CHARSET : 'utf-8'; ?>" />
+	<meta name="description" content="<?php page_description(); ?>" />
+	<meta name="keywords" content="<?php page_keywords(); ?>" />
+	<link rel="stylesheet" type="text/css" href="<?php
+	echo TEMPLATE_DIR; ?>/template.css" media="screen,projection" />
+	<link rel="stylesheet" type="text/css" href="<?php
+	echo TEMPLATE_DIR; ?>/print.css" media="print" />
+	<title><?php page_title('', '[WEBSITE_TITLE]'); ?></title>
+	<?php
+	// automatically include optional WB module files (frontend.css, frontend.js)
+	if (function_exists('register_frontend_modfiles')) {
+		register_frontend_modfiles('css');
+		// register_frontend_modfiles('jquery');
+		register_frontend_modfiles('js');
+	} ?>
+</head>
+
+<body>
+
+<div class="main">
+	
+	<div class="banner">
+		<a href="<?php echo WB_URL; ?>/" target="_top"><?php page_title('', '[WEBSITE_TITLE]'); ?></a>
+		<span>| <?php page_title('', '[PAGE_TITLE]'); ?></span>
+	</div>
+	
+	<!-- frontend search -->
+	<div class="search_box">
+		<?php 
+		// CODE FOR WEBSITE BAKER FRONTEND SEARCH
+		if (SHOW_SEARCH) { ?>
+			<form name="search" action="<?php echo WB_URL; ?>/search/index.php" method="get">
+				<input type="hidden" name="referrer" value="<?php 
+				echo defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID; ?>" />
+				<input type="text" name="string" class="search_string" />
+				<input type="submit" name="wb_search" id="wb_search" value="<?php 
+				echo $TEXT['SEARCH']; ?>" class="search_submit" />
+			</form><?php 
+		} ?>
+	</div>
+
+	<!-- main navigation menu -->
+	<div class="menu">
+		<?php
+		show_menu2(0,SM2_ROOT,SM2_CURR+1,SM2_TRIM,'<li><span class="menu-default">[ac][menu_title]</a></span>','</li>','<ul>','</ul>');
+		// CODE FOR WEBSITE BAKER FRONTEND LOGIN
+		if (FRONTEND_LOGIN == 'enabled' && VISIBILITY != 'private' && $wb->get_session('USER_ID') == '') {
+			$redirect_url = ((isset($_SESSION['HTTP_REFERER']) && $_SESSION['HTTP_REFERER'] != '') ? $_SESSION['HTTP_REFERER'] : WB_URL );
+			$redirect_url = (isset($thisApp->redirect_url) ? $thisApp->redirect_url : $redirect_url );
+		?>
+			<!-- login form -->
+			<br />
+			<form name="login" id="login" action="<?php echo LOGIN_URL; ?>" method="post">
+				<input type="hidden" name="redirect" value="<?php echo $redirect_url;?>" />
+				<fieldset>
+					<legend><?php echo $TEXT['LOGIN']; ?></legend>
+					<label for="username" accesskey="1"><?php echo $TEXT['USERNAME']; ?>:</label>
+					<input type="text" name="username" id="username" style="text-transform: lowercase;" /><br />
+					<label for="password" accesskey="2"><?php echo $TEXT['PASSWORD']; ?>:</label>
+					<input type="password" name="password" id="password" /><br />
+					<input type="submit" name="wb_login" id="wb_login" value="<?php echo $MENU['LOGIN']; ?>"/><br />
+	
+					<!-- forgotten details link -->
+					<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
+
+					<!-- frontend signup -->
+					<?php
+					if (is_numeric(FRONTEND_SIGNUP)) { ?>
+						<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
+					<?php } ?>
+				</fieldset>
+			</form>
+			
+		<?php 
+		} elseif (FRONTEND_LOGIN == 'enabled' && is_numeric($wb->get_session('USER_ID'))) { ?>
+			<!-- logout form -->
+			<br />
+			<form name="logout" id="logout" action="<?php echo LOGOUT_URL; ?>" method="post">
+				<fieldset>
+					<legend><?php echo $TEXT['LOGGED_IN']; ?>:</legend>
+					<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $wb->get_display_name(); ?>
+					<input type="submit" name="wb_logout" id="wb_logout" value="<?php echo $MENU['LOGOUT']; ?>" />
+					<!-- edit user preferences -->
+					<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
+				</fieldset>
+			</form>
+		<?php 
+		} ?>
+	</div>
+	
+	<div class="content">
+		<?php page_content(); ?>
+	</div>
+	
+	<div class="footer">
+		<?php page_footer(); ?>
+	</div>
+	
+</div>
+
+<div class="powered_by">
+	Powered by <a href="http://www.websitebaker.org" target="_blank">Website Baker</a>
+</div>
+<?php 
+// automatically include optional WB module file frontend_body.js)
+if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body(); } 
+?>
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/allcss/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/editor.css
===================================================================
--- tags/2.8.3/wb/templates/allcss/editor.css	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/editor.css	(revision 1610)
@@ -0,0 +1,61 @@
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains all CSS definitions required to display the template
+ * in the Website Baker frontend. 
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	text-align: justify;
+	color: #000;
+	background-color: #FFF;
+	width: 580px;
+}
+a:link, a:visited, a:active {
+	color: #603;
+	text-decoration: none;
+}
+a:hover {
+	color: #936;
+	text-decoration: none;
+}
+hr {
+	margin: 5px 0px 5px 0px;
+	color: #603;
+	border: 0;
+	border-top: 1px solid #603;
+	height: 1px;
+	width: 580px;
+}
+h1 {
+	font-size: 16px;
+	color: #993366;
+	text-align: left;
+	margin: 8px 2px 8px 2px;
+}
+form {
+	margin: 0;
+}

Property changes on: tags/2.8.3/wb/templates/allcss/editor.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/template.css
===================================================================
--- tags/2.8.3/wb/templates/allcss/template.css	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/template.css	(revision 1610)
@@ -0,0 +1,189 @@
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains all CSS definitions required to display the template
+ * in the Website Baker frontend. 
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+}
+body {
+	background-color: #F0F0F0;
+	background-image: url(images/background.jpg);
+	margin: 0;
+}
+a:link, a:visited, a:active {
+	color: #603;
+	text-decoration: none;
+}
+a:hover {
+	color: #936;
+	text-decoration: none;
+}
+hr {
+	margin: 5px 0px 5px 0px;
+	color: #603;
+	border: 0;
+	border-top: 1px solid #603;
+	height: 1px;
+	width: 580px;
+}
+h1 {
+	font-size: 16px;
+	color: #993366;
+	text-align: left;
+	margin: 8px 2px 8px 2px;
+}
+form {
+	margin: 0;
+}
+.main {
+	width: 750px;
+	margin: auto;
+	padding: 0;
+	background-color: #FFF;
+}
+.banner, .search_box {
+	height: 80px;
+	background-image: url(images/header.jpg);
+	background-repeat: repeat-x;
+	font-size: 20px;
+	font-weight: bold;
+	color: #FFF;
+	text-align: center;
+	padding-top: 20px;
+}
+
+.banner {
+	width: 530px;
+	padding-left: 20px;
+	float: left;
+	text-align: left;
+}
+.search_box {
+	float: right;
+	clear: right;
+	width: 200px;
+}
+.search_string {
+	width: 100px;
+	height: 16px;
+	font-size: 10px;
+	vertical-align: middle;
+}
+.search_submit {
+	width: 50px;
+	height: 22px;
+	font-size: 10px;
+	vertical-align: middle;
+}
+.highlight {
+	background-color: #D0D0D0;
+}
+.banner a {
+	color: #FFF;
+}
+.banner span {
+	color: #D0D0D0;
+}
+
+.menu {
+	float: left;
+	width: 140px;
+	margin: 10px;
+	margin-top: 3px;
+}
+.menu ul, .menu li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	margin-bottom: 5px;
+}
+.menu ul ul {
+	padding-left: 8px;
+}
+.menu a:link, .menu a:visited, .menu a:active, .menu a:hover {
+	display: block;
+	padding: 2px;
+}
+.menu-default a:link, .menu-default a:visited, .menu-default a:active {
+	border-bottom: 1px dashed #999;
+}
+.menu-default a:hover {
+	border-bottom: 1px dashed #333;
+}
+
+.menu-current  {
+	border-bottom: 1px dashed #999;
+	font-weight:bold;
+}
+
+.menu fieldset {
+	border: 1px solid #D0D0D0;
+	margin-top: 20px;
+	margin-bottom: 5px;
+	text-align: center;
+	padding-bottom: 3px;
+}
+
+.menu legend {
+	color: #603;
+	font-size: 12px;
+	text-transform: uppercase;
+	font-weight: bold;
+	text-align: center;
+}
+
+.menu input {
+	text-transform: uppercase;
+	font-size: 10px;
+	margin: 5px 0px 1px 0px;
+	width: 100px;
+}
+
+.content {
+	margin-left: 150px;
+	padding: 4px 10px 14px 10px;
+	text-align: justify;
+	clear: right;
+}
+.footer {
+	background-color: #FFF;
+	clear: both;
+	height: 20px;
+	background-image: url(images/footer.jpg);
+	background-repeat: repeat-x;
+	font-size: 10px;
+	color: #666;
+	text-align: center;
+	line-height: 18px;
+}
+.powered_by {
+	text-align: center;
+	font-size: 10px;
+	padding-top: 2px;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/allcss/images/index.php
===================================================================
--- tags/2.8.3/wb/templates/allcss/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/images/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/allcss/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/allcss/images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/images/footer.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/allcss/images/footer.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/images/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/allcss/images/background.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/preview.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/allcss/preview.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/allcss/print.css
===================================================================
--- tags/2.8.3/wb/templates/allcss/print.css	(nonexistent)
+++ tags/2.8.3/wb/templates/allcss/print.css	(revision 1610)
@@ -0,0 +1,71 @@
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #660033;
+	text-decoration: none;
+}
+a:hover {
+	color: #993366;
+	text-decoration: none;
+}
+hr {
+	margin: 15px 0px 15px 0px;
+	color: #660033;
+	height: 1px;
+	width: 100%;
+}
+h1 {
+	font-size: 15px;
+	color: #993366;
+	margin: 5px 0px 5px 0px;
+}
+form {
+	margin: 0;
+}
+.main {
+	width: 100%;
+	margin: 0;
+	padding: 0;
+}
+.banner {
+	font-size: 20px;
+	font-weight: bold;
+	color: #FFFFFF;
+	padding-bottom: 20px;
+	text-align: center;
+}
+.search_box {
+	display: none;
+}
+.menu {
+	display: none;
+}
+.menu ul, .menu li {
+	display: none;
+}
+.login_table {
+	display: none;
+}
+.content {
+	margin: 0;
+	text-align: justify;
+}
+.footer {
+	clear: both;
+	height: 20px;
+	background: #FFFFFF;
+	font-size: 10px;
+	color: #666666;
+	text-align: center;
+	padding-top: 20px;
+}
+.powered_by {
+	display: none;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/allcss/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/info.php
===================================================================
--- tags/2.8.3/wb/templates/round/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/round/info.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: round
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory				= 'round';
+$template_name						= 'Round';
+$template_function			= 'template';
+$template_version					= '2.71';
+$template_platform				= '2.7';
+$template_author					= 'Ryan Djurovich, C. Sommer';
+$template_license					= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description			= 'Default template for Website Baker. Simular to the box template, but with rounded edges.';
+
+// OPTIONAL VARIABLES FOR ADDITIONAL MENUES AND BLOCKS
+// $menu[1]								= '';
+// $menu[2]								= '';
+// $block[1]							= '';
+// $block[2]							= '';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/round/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/index.php
===================================================================
--- tags/2.8.3/wb/templates/round/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/round/index.php	(revision 1610)
@@ -0,0 +1,255 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: round
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains the overall template markup and the Website Baker
+ * template functions to add the contents from the database.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../../index.php'));
+
+// TEMPLATE CODE STARTS BELOW
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=<?php 
+	echo defined('DEFAULT_CHARSET') ? DEFAULT_CHARSET : 'utf-8'; ?>" />
+	<meta name="description" content="<?php page_description(); ?>" />
+	<meta name="keywords" content="<?php page_keywords(); ?>" />
+	<link rel="stylesheet" type="text/css" href="<?php
+		echo TEMPLATE_DIR; ?>/template.css" media="screen,projection" />
+	<link rel="stylesheet" type="text/css" href="<?php
+		echo TEMPLATE_DIR; ?>/print.css" media="print" />
+	<title><?php page_title('', '[WEBSITE_TITLE]'); ?></title>
+	<?php
+	// automatically include optional WB module files (frontend.css, frontend.js)
+	if (function_exists('register_frontend_modfiles')) {
+		register_frontend_modfiles('css');
+		// register_frontend_modfiles('jquery');
+		register_frontend_modfiles('js');
+	} ?>
+</head>
+
+<body>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" align="center" class="main" width="750">
+<tr>
+	<td colspan="2" class="header" height="80">
+		<a href="<?php echo WB_URL; ?>">
+			<img src="<?php echo TEMPLATE_DIR; ?>/images/banner.jpg" border="0" width="750" height="80" alt="<?php
+			page_title('', '[WEBSITE_TITLE]'); ?>" />
+		</a>
+	</td>
+</tr>
+<tr>
+	<?php
+	// navigation menu
+	if(SHOW_MENU) {
+	?>	
+	<td style="padding: 10px; background-color: #FFF;" valign="top">
+		<table summary="" cellpadding="0" cellspacing="0" border="0" width="150" align="center" class="menu">
+		<tr>
+			<td class="border">
+				<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_top.gif" border="0" alt="" />
+			</td>
+		</tr>
+		<tr>
+			<td width="170">
+				<?php show_menu2(0,SM2_ROOT,SM2_CURR+1,SM2_TRIM,'<li><span class="menu-default">[ac][menu_title]</a></span>','</li>','<ul>','</ul>');?>
+			</td>
+		</tr>
+		<tr>
+			<td class="border">
+				<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_bottom.gif" border="0" alt="" />
+			</td>
+		</tr>
+		</table>
+		
+		
+		<!-- frontend search -->
+		<?php if (SHOW_SEARCH) { ?>
+		<form name="search" action="<?php echo WB_URL; ?>/search/index.php" method="get">
+			<input type="hidden" name="referrer" value="<?php
+				echo defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID; ?>" />
+			<table summary="" cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+				<tr>
+					<td class="border">
+						<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_top.gif" border="0" alt="" />
+					</td>
+				</tr>
+				<tr>
+					<td class="login">
+						<input type="text" name="string" />
+					</td>
+				</tr>
+				<tr>
+					<td class="login">
+						<input type="submit" name="submit" value="<?php echo $TEXT['SEARCH']; ?>" />
+					</td>
+				</tr>
+				<tr>
+					<td class="border">
+						<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_bottom.gif" border="0" alt="" />
+					</td>
+				</tr>
+			</table>
+		</form>
+		<?php } ?>
+		
+<?php
+		if(FRONTEND_LOGIN AND !$wb->is_authenticated() AND VISIBILITY != 'private' ) {
+			$redirect_url = ((isset($_SESSION['HTTP_REFERER']) && $_SESSION['HTTP_REFERER'] != '') ? $_SESSION['HTTP_REFERER'] : WB_URL );
+			$redirect_url = (isset($thisApp->redirect_url) ? $thisApp->redirect_url : $redirect_url );
+?>
+		<form name="login" action="<?php echo LOGIN_URL; ?>" method="post">
+			<input type="hidden" name="redirect" value="<?php echo $redirect_url;?>" />
+			<table summary="" cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_top.gif" border="0" alt="" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-transform: uppercase;">
+					<b><?php echo $TEXT['LOGIN']; ?></b>
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-align: left;">
+					<?php echo $TEXT['USERNAME']; ?>:
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="text" name="username" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-align: left;">
+					<?php echo $TEXT['PASSWORD']; ?>:
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="password" name="password" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="submit" name="submit" value="<?php 
+						echo $TEXT['LOGIN']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<a href="<?php echo FORGOT_URL; ?>"><?php echo $TEXT['FORGOT_DETAILS']; ?></a>
+					<?php if (is_numeric(FRONTEND_SIGNUP)) { ?>
+						<a href="<?php echo SIGNUP_URL; ?>"><?php echo $TEXT['SIGNUP']; ?></a>
+					<?php } ?>
+				</td>
+			</tr>
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_bottom.gif" border="0" alt="" />
+				</td>
+			</tr>
+			</table>
+		
+		</form>
+		<?php
+		} elseif (FRONTEND_LOGIN AND $wb->is_authenticated()) {
+		?>
+		<form name="logout" action="<?php echo LOGOUT_URL; ?>" method="post">
+			
+			<table summary="" cellpadding="0" cellspacing="0" border="0" width="150" align="center" style="margin-top: 10px;">
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_top.gif" border="0" alt="" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="text-transform: uppercase;">
+					<b><?php echo $TEXT['LOGGED_IN']; ?></b>
+				</td>
+			</tr>
+			<tr>
+				<td class="login" style="padding-top: 15px; padding-bottom: 15px;">
+					<?php echo $TEXT['WELCOME_BACK']; ?>, <?php echo $wb->get_display_name(); ?>
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<input type="submit" name="submit" value="<?php 
+						echo $MENU['LOGOUT']; ?>" style="margin-top: 3px; text-transform: uppercase;" />
+				</td>
+			</tr>
+			<tr>
+				<td class="login">
+					<a href="<?php echo PREFERENCES_URL; ?>"><?php echo $MENU['PREFERENCES']; ?></a>
+				</td>
+			</tr>
+			<tr>
+				<td class="border">
+					<img src="<?php echo TEMPLATE_DIR; ?>/images/menu_bottom.gif" border="0" alt="" />
+				</td>
+			</tr>
+			</table>
+		
+		</form>
+		<?php
+		}
+		?>
+	</td>
+	<?php } ?>
+	<td class="content" width="600" rowspan="2">
+		<?php page_content(); ?>
+	</td>
+</tr>
+<tr>
+	<td height="20" width="155" valign="bottom" class="powered_by">
+		<a href="http://www.websitebaker.org/" target="_blank">
+			<img src="<?php echo TEMPLATE_DIR; ?>/images/powered.jpg" border="0" alt="Powered By Website Baker" />
+		</a>
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="border">
+		<img src="<?php echo TEMPLATE_DIR; ?>/images/footer.png" border="0" alt="" />
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		<?php page_footer(); ?>
+	</td>
+</tr>
+</table>
+<?php 
+// automatically include optional WB module file frontend_body.js)
+if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body(); } 
+?>
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/round/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/editor.css
===================================================================
--- tags/2.8.3/wb/templates/round/editor.css	(nonexistent)
+++ tags/2.8.3/wb/templates/round/editor.css	(revision 1610)
@@ -0,0 +1,62 @@
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains all CSS definitions required to display the template
+ * in the Website Baker frontend. 
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+	background-color: #FFF;
+	width: 540px;
+}
+a:link, a:visited, a:active {
+	color: #036;
+	text-decoration: none;
+}
+a:hover {
+	color: #369;
+	text-decoration: none;
+}
+hr {
+	margin: 15px 0px 15px 0px;
+	color: #036;
+	height: 1px;
+	width: 100%;
+}
+h1 {
+	font-size: 18px;
+	color: #036;
+	margin: 5px 0px 5px 0px;
+}
+h2 {
+	font-size: 15px;
+	color: #369;
+	margin: 15px 0px 5px 0px;
+}
+form {
+	margin: 0;
+}

Property changes on: tags/2.8.3/wb/templates/round/editor.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/template.css
===================================================================
--- tags/2.8.3/wb/templates/round/template.css	(nonexistent)
+++ tags/2.8.3/wb/templates/round/template.css	(revision 1610)
@@ -0,0 +1,148 @@
+/**
+ * $Id$
+ * Website Baker template: allcss
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains all CSS definitions required to display the template
+ * in the Website Baker frontend. 
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+}
+body {
+	background-color: #036;
+	background-image: url(images/background.jpg);
+	background-repeat: repeat-x;
+	margin: 10px;
+}
+a:link, a:visited, a:active {
+	color: #036;
+	text-decoration: none;
+}
+a:hover {
+	color: #369;
+	text-decoration: none;
+}
+hr {
+	margin: 15px 0px 15px 0px;
+	color: #036;
+	height: 1px;
+	width: 100%;
+}
+h1 {
+	font-size: 18px;
+	color: #036;
+	margin: 5px 0px 5px 0px;
+}
+h2 {
+	font-size: 15px;
+	color: #369;
+	margin: 15px 0px 5px 0px;
+}
+form {
+	margin: 0;
+}
+.header {
+	width: 750px;
+	height: 80px;
+	background-color: #FFF;
+	vertical-align: top;
+}
+.menu {
+	vertical-align: top;
+	background-color: #FFF;
+	width: 170px;
+	padding: 0px;
+}
+.menu ul, .menu li{
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+.menu ul {
+	border-bottom: 0px;
+	background-color: #036;
+}
+.menu ul ul {
+	padding-left: 10px;
+}
+.menu a:link, .menu a:visited, .menu a:active {
+	padding: 4px 10px 4px 10px;
+	color: #FFF;
+	display: block;
+	background-color: #036;
+	text-decoration: none;
+}
+.menu a:hover {
+	background-color: #369;
+	text-decoration: none;
+}
+.menu-current {
+	font-weight: bold;
+}
+.highlight {
+	background-color: #D0D0D0;
+}
+.border {
+	font-size: 1px;
+	height: 10px;
+}
+.login {
+	padding: 2px 10px 2px 10px;
+	font-size: 10px;
+	background-color: #036;
+	color: #FFF;
+	text-align: center;
+}
+.login input {
+	width: 95%;
+	font-size: 10px;
+}
+.login a:link, .login a:visited, .login a:active {
+	color: #DDD;
+	text-decoration: none;
+}
+.login a:hover {
+	color: #FFF;
+	text-decoration: none;
+}
+.powered_by {
+	padding: 3px 0px 0px 15px;
+	background-color: #FFF;
+}
+.content {
+	padding: 10px;
+	background-color: #FFF;
+	height: 300px;
+	vertical-align: top;
+	text-align: left;
+}
+.footer {
+	padding: 5px;
+	height: 20px;
+	color: #FFF;
+	vertical-align: middle;
+	text-align: center;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/round/images/index.php
===================================================================
--- tags/2.8.3/wb/templates/round/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/round/images/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: round
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/round/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/footer.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/footer.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/banner.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/banner.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/powered.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/powered.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/menu_top.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/menu_top.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/menu_bottom.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/menu_bottom.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/images/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/images/background.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/preview.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/round/preview.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/round/print.css
===================================================================
--- tags/2.8.3/wb/templates/round/print.css	(nonexistent)
+++ tags/2.8.3/wb/templates/round/print.css	(revision 1610)
@@ -0,0 +1,50 @@
+/**
+ * $Id$
+ * Website Baker template: round
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the CSS styles used for print devices.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+}
+body {
+	background-color: #FFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #036;
+	text-decoration: none;
+}
+a:hover {
+	color: #369;
+	text-decoration: none;
+}
+.header, .menu, .search, .powered_by, .footer {
+	display: none;
+}
+.content {
+	vertical-align: top;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/round/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/theme.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/theme.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/theme.css	(revision 1610)
@@ -0,0 +1,159 @@
+* html div{ height :1em; /* Workaround gegen den 3-Pixel-Bug des Internet Explorers 6 */ }
+html{ font-family :Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif; font-size :100.1%; font-weight :normal; color :#404040; overflow :-moz-scrollbars-vertical; }
+body{ margin :0 auto; padding :0px; background :#a8bccb; text-align :left; font-size :0.8em; }
+body { background-color :#a8bccb; background-repeat :repeat-x; }
+td,th,input,textarea { color :#000000; font-size :1.0em; font-family :Verdana, Arial, Helvetica, sans-serif; }
+textarea { font-size :1em; }
+img { border :0px; }
+form { margin :0; }
+hr { margin :1em auto; color :#003366; height :1px; }
+h1 { color :#000000; font-size :1.8em; text-align :center; text-transform :uppercase; }
+h2 { margin :0.5em 0px 0.5em 0px; color :#336699; font-size :1.5em; }
+h2 { font-family :arial,sans-serif; letter-spacing :-1px; margin :0.5em 0; text-align :left; }
+h4 { margin :0; border-bottom :1px solid #dddddd; padding-bottom :5px; }
+a h3 { margin :0; font-size :1.1em; padding-bottom :2px; }
+li p { margin :0.5em 0; }
+a:link, a:visited, a:active { color :#003366; text-decoration :none; }
+a:hover { color :#336699; text-decoration :none; }
+ul, li { margin :0; padding :0; list-style :none; }
+.current a, .current a:link, .current a:active, .current a:visited { background :url(images/menuo.png) #ffffff; background-repeat :repeat-x; color :#ffffff; }
+label { cursor :pointer; }
+input:focus, input:active, select:focus, textarea:focus { background :#f1f8fd; }
+iframe { border :1px solid #35373a; }
+div.box { width :100%; margin :-10px 0 0 0; font-size :small; text-align :right; }
+.header { width :900px; margin :0 auto; }
+.container { width :85%; margin :0 auto; background :url(images/bgtitle.png) #ffffff; background-repeat :repeat-x; }
+.content { padding :1.6em; margin :0 auto; min-height :300px; vertical-align :top; width :900px; }
+#content_container { text-align :center; width :900px; clear :both; margin :0 auto; }
+#admintools ul { padding :0; margin :0 auto; width :100%; }
+#admintools li { list-style-type :none; display :inline; float :left; width :47%; margin :0 10px 0 0; }
+.description { padding :4px 4px 0 4px; text-align :left; vertical-align :top; }
+.graphic { border :4px solid #fdfdfd; height :50px; padding-left :3px; width :50px; }
+.graphic img { background-color :#ffffff; border :1px solid #d0d0d0; padding :4px; vertical-align :middle; }
+.menu { margin :0; padding :0; padding-top :8px; padding-bottom :10px; padding-left :8px; background :url(images/menu.png) #000000; background-repeat :repeat-x; }
+.menu li { padding-right :1px; list-style-type :none; display :inline; }
+.menu a, .menu a:link, .menu a:active, .menu a:visited { border-bottom :0; padding :7px 11px 9px 11px; color :#ffffff; }
+.menu a:hover { color :#ffffff; background :url(images/menuo.png) #ffffff; background-repeat :repeat-x; text-decoration :none; }
+.note { color :#666666; font-size :10px; }
+div .pages_list { width :100%; font-size :0.7em; }
+.pages_list .icon_col td img { border-style :none; float :left; padding-right :7px; display :block; }
+.pages_list table { width :100%; margin :0 auto; background-color :#dcdcdc; }
+.pages_list ul { margin :0; padding :0px; font-weight :normal; }
+.pages_list ul li { margin :2px 0; padding :0px; list-style-type :none; }
+.page_list_show li { display :block; }
+img.page_list_rights { border :none; margin-right :5px; float :left; margin-top :2px; margin-bottom :2px; }
+.content input { font-size :12px; }
+.section { margin-top :10px; padding :0px; border :1px solid #999999; font-size :1em; width :100%; background-color :#fdfdfd; height :75px; }
+.sections_header { width :100%; margin-bottom :10px; border :none; background-color :#f0f0f0; height :50px; }
+.sections_header td { padding :5px; }
+.setting_name { width :20%; min-width :200px;  }
+.setting_value { width :80%; }
+.setting_value_permissions { width :50%; min-width :400px; }
+.setting_value textarea { height :50px; }
+.title {
+   text-align :left;
+   padding :4px 5px 0px 3px;
+   font-weight :bold;
+   font-size :14px;
+   margin-bottom :5px;
+}
+span.title { display :block; }
+.tool_table ul { margin :0; padding :0; margin-left :20px; margin-bottom :2px; }
+.tool_table li { padding :1px; list-style-type :disc; }
+/* CSS STYLES FOR THE PAGES SECTION */
+table.pages_view { width :100%; margin :0 auto; border :0; background-color :#ecf3f7; border-spacing :0px; }
+table.pages_view tr:hover { background-color :#f1f8dd; }
+/* FORMS */
+.submit, .cancel { width :100px; margin-top :5px; }
+.form_submit .right { text-align :right; }
+.input_small { width :20px; }
+.input_normal { width :120px; }
+.input_medium { width :150px; }
+.input_wide { width :200px; }
+.input_large { width :300px; }
+select option.disabled { color :#aaaaaa; }
+.jsadmin_drag img { padding :3px 0; margin-top :1px; vertical-align :top; cursor :pointer; }
+.modify_link { padding-top :4px; display :inline; vertical-align :middle; }
+.header_list_page_id { width :30px; padding-right :15px; text-align :right; }
+.header_list_actions { width :150px; text-align :left; }
+.list_actions { width :20px; text-align :left; }
+.sections_list { padding-left :10px; font-weight :bold; }
+.header_list_block { width :180px; text-align :left; }
+.header_list_sections_actions { width :30px; text-align :left; }
+.value_page_code { width :240px; color :#006400; font-weight :400; }
+/* Ende */
+.pages_list table td, table.pages_view td { padding :3px; }
+.save, .reset, .input_narrow { width :100px; }
+.settings_table td, .tool_table td { text-align :left; vertical-align :top; }
+#file_mode input, #dir_mode input { width :12px; height :12px; }
+#hide2, .hide, .page_list { display :none; }
+.header_list_page_title, .list_page_title { width :300px; text-align :left; }
+.list_section_id, .list_page_id, .header_list_section_id { width :2em; text-align :right; }
+.list_page_code, .list_page_language { width :240px; }
+.form_submit .left, .header_list_menu_title, .list_menu_title, .header_list_type { text-align :left; }
+.header_title, .sections_list table, .setting_value input, .setting_value select, .setting_value textarea, .value_input input, .value_input text, .value_input select, .form_submit, .input_full { width :100%; }
+.header_list_pubdate_start, .header_list_pubdate_end, .list_pubdate_start, .list_pubdate_end { width :200px; text-align :left; }
+.right{ text-align :right; }
+.left{ text-align :left; }
+/* set div layers in dead tables */
+.subcolumns { width :100%; overflow :hidden; margin :10px 0; }
+.subcolumns_oldgecko { width :100%; float :left; margin :10px 0; }
+.c10l, .c20l, .c25l, .c33l, .c40l, .c38l, .c50l, .c60l, .c62l, .c66l, .c75l, .c80l { float :left; }
+.c10r, .c20r, .c25r, .c33r, .c40r, .c38r, .c50r, .c60r, .c66r, .c62r, .c75r, .c80r { float :right; margin-left :-5px; }
+  .c10l, .c10r { width :10%; }
+  .c20l, .c20r { width :20%; line-height :2em; }
+  .c40l, .c40r { width :40%; }
+  .c60l, .c60r { width :60%; height :21px; }
+  .c25l, .c25r { width :28%; }
+  .c33l, .c33r { width :33.333%; }
+  .c50l, .c50r { width :50%; }
+  .c66l, .c66r { width :66.666%; }
+  .c38l, .c38r { width :38.2%; }
+  .c62l, .c62r { width :61.8%; }
+  .subc { padding :0 0.5em; }
+  .subcl { padding :0 1em 0 0; }
+  .subcr { padding :0 0 0 1em; }
+.c80l, .c80r, .c90l, .c90r { width :80%; }
+.c75l, .c75r, .c80l, .c80r { width :75%; }
+.info { padding :10px; margin-bottom :0.5em; background :#f8f8f8; color :#666666; font-size :91.7%; }
+.note { border :2px #448844 solid; padding :10px; margin :10px auto; background :#eeffee; color :#004400; }
+.important { border :2px #888844 solid; padding :10px; margin-bottom :1em; background :#ffffee; color :#444400; }
+.warning { border :2px #884444 solid; padding :10px; margin-bottom :1em; background :#ffeeee; color :#440000; }
+.row_0 { background-color :transparent; }
+.row_1 { background-color :#ccddee; }
+div.content_box { margin :0em auto; }
+div.content_box form { width :98%; }
+#language,
+#timezone,
+#date_format,
+#time_format { min-width :250px; }
+#display_name,
+#username,
+#email,
+#new_password_1,
+#new_password_2,
+#current_password { min-width :250px; }
+#submit,
+#reset { max-width :100px; }
+ div#username { height :17px; width :118%; background-color :#e9e9e9; min-width :250px; border :0px groove #6799c4; text-align :left; font-weight :bold; margin :0; }
+.save_section { margin :20px auto 5px auto; }
+#language,
+#timezone,
+#date_format,
+#time_format,
+#display_name,
+#username,
+#email,
+#new_password_1,
+#new_password_2,
+#current_password { width :118%; }
+.section-info { margin :1.5em 0; }
+.rounded { border-radius :10px; -khtml-border-radius :10px; -webkit-border-radius :10px; -moz-border-radius :10px; }
+.bigger { font-size :150%; }
+.strong { font-weight :bold; }
+.msg-box { background :#e5ffe6; border :0.2em #009900 solid; color :#336600; margin-bottom :1em; padding :0.63em; text-align :center; }
+.error-box { background :#ffeeee; border :0.2em #884444 solid; color :#440000; margin-bottom :1em; padding :0.63em; text-align :center; }
+.msg-box p,
+.error-box p { font-size :120%; }
+select > option.user-inactive { color :#990000; }
+button.status { cursor :pointer; border-radius :5px; -khtml-border-radius :5px; -webkit-border-radius :5px; -moz-border-radius :5px; }

Property changes on: tags/2.8.3/wb/templates/wb_theme/theme.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/templates/header.htt
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/templates/header.htt	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/templates/header.htt	(revision 1610)
@@ -0,0 +1,65 @@
+<!-- BEGIN header_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>{WEBSITE_TITLE} >> {TEXT_ADMINISTRATION} - {SECTION_NAME}</title>
+<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
+<meta http-equiv="content-language" content="{LANGUAGE}" />
+<meta name="description" content="{TEXT_ADMINISTRATION}" />
+<meta name="keywords" content="{TEXT_ADMINISTRATION}" />
+<meta name="author" content="WebsiteBaker Org e.V." />
+<meta http-equiv="Content-Encoding" content="gzip" />
+<meta http-equiv="Accept-Encoding" content="gzip, deflate" />
+<link href="{THEME_URL}/theme.css" rel="stylesheet" type="text/css" />
+{BACKEND_MODULE_CSS}
+<script type="text/javascript">
+var WB_URL = '{WB_URL}';
+var THEME_URL = '{THEME_URL}';
+var ADMIN_URL = '{ADMIN_URL}';
+</script>
+<script src="{WB_URL}/include/jquery/jquery-min.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-insert.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-include.js" type="text/javascript"></script>
+<!--[if lt IE 7]><script type="text/javascript" src="{WB_URL}/include/jquery/plugins/jquery-pngFix.js"></script><![endif]-->
+<script src="{THEME_URL}/jquery/jquery-plugins.js" type="text/javascript"></script>
+{BACKEND_MODULE_JS}
+<script type="text/javascript">
+function confirm_link(message, url) {
+	if(confirm(message)) location.href = url;
+}
+
+</script>
+</head>
+<body>
+<table summary="" class="header">
+<tr>
+	<td>
+		<a href="{ADMIN_URL}" title="{TITLE_START}"><img src="{THEME_URL}/images/logo.png" border="0" alt="Logo" /></a>
+	</td>
+	<td>&nbsp;</td>
+	<td class="menue">
+         <a href="{ADMIN_URL}" title="{TITLE_START}"><img src="{THEME_URL}/images/home.png" border="0" alt="{TITLE_START}" /></a>
+         &nbsp;&nbsp;<a href="{URL_VIEW}" target="_blank" title="{TITLE_VIEW}"><img src="{THEME_URL}/images/view.png" border="0" alt="{WB_URL}" /></a>
+	&nbsp; <a href="{URL_HELP}" target="_blank" title="{TITLE_HELP}"><img src="{THEME_URL}/images/help.png" border="0" alt="{TITLE_HELP}" /></a>
+         &nbsp; <a href="{ADMIN_URL}/logout" title="{TITLE_LOGOUT}"><img src="{THEME_URL}/images/dl.png" border="0" alt="{TITLE_LOGOUT}" /></a>
+</td>
+	<td class="version">
+	Version {VERSION} {SP}<br />
+    Revision {REVISION}
+	</td>
+</tr>
+</table>
+
+<table summary="" class="container">
+<tr>
+	<td>
+		<ul class="menu">
+			<!-- BEGIN linkBlock -->
+			<li class="{CLASS}"><a href="{LINK}" target="{TARGET}">{TITLE}</a></li>
+			<!-- END linkBlock -->
+		</ul>
+	</td>
+</tr>
+<tr>
+	<td class="content">
+<!-- END header_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/templates/footer.htt
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/templates/footer.htt	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/templates/footer.htt	(revision 1610)
@@ -0,0 +1,19 @@
+<!-- BEGIN footer_block -->
+	</td>
+</tr>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding: 10px 0px 10px 0px;">
+<tr>
+	<td style="font-size: 12px; text-align:center;">
+      <!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+      <a href="http://www.websitebaker2.org/" title="external">WebsiteBaker</a> is released under the
+      <a href="http://www.gnu.org/licenses/gpl.html" title="WebsiteBaker is released under the GNU General Public License">GNU General Public License</a>
+      <!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+	</td>
+</tr>
+</table>
+{BACKEND_BODY_MODULE_JS}
+</body>
+</html>
+<!-- END footer_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/templates/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/templates/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/templates/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/templates/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/templates/warning.html
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/templates/warning.html	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/templates/warning.html	(revision 1610)
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<title>Maximum Invalid Login Attemps Exceeded</title>
+<style type="text/css"><!--
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	margin: 0px;
+  background: #A8BCCB url(../images/background.png) ;
+  background-repeat:repeat-x;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: underline;
+	color: #336699;
+}
+h1 {
+	text-align: center;
+	font-size: 18px;
+	color: #000;
+	text-transform: uppercase;
+}
+hr {
+	height: 1px;
+	color: #336699;
+	background-color: #336699;
+	border: 0;
+}
+div#message {
+	text-align: center;
+}
+--></style></head>
+<body>
+
+<div id='message'>
+	<h1>Excessive Invalid Logins</h1>
+	You have attempted to login too many times
+</div>
+
+</body>
+</html>
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/templates
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/templates	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/templates	(revision 1610)

Property changes on: tags/2.8.3/wb/templates/wb_theme/templates
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+backup
Index: tags/2.8.3/wb/templates/wb_theme/images/logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/image.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/image.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/newfolder.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/newfolder.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/resize_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/resize_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/tabl.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/tabl.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/calendar_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/calendar_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/csv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/csv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/blank_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/blank_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/blank_16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/blank_16.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/fh.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/fh.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/fh10.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/fh10.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/aif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/aif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/mp3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/mp3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/ppt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/ppt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/html.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/html.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/doc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/doc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/gif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/gif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/xls.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/xls.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/asf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/asf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/vcd.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/vcd.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/ogg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/ogg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/txt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/txt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/tif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/tif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/rar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/rar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/cda.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/cda.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/css.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/css.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/tiff.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/tiff.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/wav.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/wav.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/swf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/swf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/unknown.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/unknown.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/zip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/zip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/fla.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/fla.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/tgz.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/tgz.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/pdf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/pdf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/wmv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/wmv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/images/files/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/images/files/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/avi.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/avi.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/jpg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/jpg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/gz.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/gz.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/mpg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/mpg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/png.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/png.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/jpeg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/jpeg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/files/php.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/files/php.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/tabr.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/tabr.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/unzip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/unzip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/file.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/file.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/Image3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/Image3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/none.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/none.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/fr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/fr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/nl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/nl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/ru.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/ru.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/images/flags/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/images/flags/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/da.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/da.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/de.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/de.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/hr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/hr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/pl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/pl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/pt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/pt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/en.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/en.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/et.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/et.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/fi.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/fi.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/no.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/no.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/ca.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/ca.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/cs.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/cs.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/se.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/se.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/sk.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/sk.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/hu.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/hu.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/lv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/lv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/es.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/es.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/it.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/it.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/flags/bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/flags/bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/background.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/background.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/edit_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/edit_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/user_red.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/user_red.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/user_delete.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/user_delete.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/user.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/user.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/pic_exist_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/pic_exist_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/1x1.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/1x1.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/blank_16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/blank_16.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/pic_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/pic_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/siteadd.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/siteadd.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/fancy_progress.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/fancy_progress.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/images/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/modify_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/modify_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/dl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/dl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/minus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/minus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/clock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/clock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/visible_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/visible_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/menu.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/menu.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/none_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/none_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/blank.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/blank.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/view.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/view.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/reload_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/reload_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/view_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/view_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/keys_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/keys_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/menuo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/menuo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/clock_del_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/clock_del_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/bgtitle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/bgtitle.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/clock_red_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/clock_red_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/sections_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/sections_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/noclock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/noclock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/hidden_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/hidden_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/delete_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/delete_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/deleted_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/deleted_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/down_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/down_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/private_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/private_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/visible_16_1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/visible_16_1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/up_folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/up_folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/home.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/home.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/plus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/plus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/restore_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/restore_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/images/up_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/images/up_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/NL.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Geavanceerde admin-template voor Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Instellingen alleen beschikbaar voor administrator';
+$TEXT['NO_SHOW_THUMBS'] = 'Thumbnails niet weergeven';
+$TEXT['TEXT_HEADER'] = 'Stel de maximale grootte voor \'resized\' afbeeldingen in per folder</b><br><small><i>(NB: werkt alleen bij nieuwe uploads)</i></small>';

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/NL.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/NO.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/NO.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Standard design mal for Admin sidene i Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Settings for administrator only';
+$TEXT['NO_SHOW_THUMBS'] = 'Hide thumbnails';
+$TEXT['TEXT_HEADER'] = 'Set maximum imagesize for a folder</b><br><small><i>(resizing on new uploads only)</i></small>';

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/NO.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/EN.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/EN.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Default backend theme for Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Settings for administrator only';
+$TEXT['NO_SHOW_THUMBS'] = 'Hide thumbnails';
+$TEXT['TEXT_HEADER'] = 'Set maximum imagesize for a folder</b><br><small><i>(resizing on new uploads only)</i></small>';

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/FR.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/FR.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Default backend theme for Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Seul l&apos;administrateur peut modifier ces r&eacute;glages';
+$TEXT['NO_SHOW_THUMBS'] = 'Cacher les vignettes';
+$TEXT['TEXT_HEADER'] = 'D&eacute;finir la taille des images par dossier</b><br><small><i>(Redimensionnement seulement lors d&apos;un nouvel upload)</i></small>';

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/DE.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/DE.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Das Standard-Backend-Theme von Websitebaker 2.8';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'diese Optionen nur Administratoren zug&auml;nglich machen';
+$TEXT['NO_SHOW_THUMBS'] = 'Vorschaubilder verstecken';
+$TEXT['TEXT_HEADER'] = 'Maximale Bildergr&ouml;&szlig;e f&uuml;r Ordner festlegen</b><br><small><i>(&Auml;nderung nur beim Hochladen)</i></small>';

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/languages/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/languages/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/browse.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/browse.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/browse.css	(revision 1610)
@@ -0,0 +1,6 @@
+body,td,th,input,textarea {font-family:Arial,Helvetica,sans-serif;font-size:12px;}
+body {background-color:#fff;margin:0;}
+hr {margin:0;color:#003366;height:1px;}
+.hide {display:none;}
+a:link, a:visited, a:active {color:#003366;text-decoration:none;}
+a:hover {text-decoration:none;color:#336699;}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/browse.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/css
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/jquery-plugins.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/jquery-plugins.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/jquery-plugins.js	(revision 1610)
@@ -0,0 +1,48 @@
+function include_file(filename, filetype) {
+
+	if(!filetype)
+		var filetype = 'js'; //js default filetype
+
+	var th = document.getElementsByTagName('head')[0];
+	var s = document.createElement((filetype == "js") ? 'script' : 'link');
+
+	s.setAttribute('type',(filetype == "js") ? 'text/javascript' : 'text/css');
+
+	if (filetype == "css")
+		s.setAttribute('rel','stylesheet');
+
+	s.setAttribute((filetype == "js") ? 'src' : 'href', filename);
+	th.appendChild(s);
+
+}
+
+function redirect_to_page (url, timer) {
+	setTimeout('self.location.href="'+url+'"', timer);
+}
+
+$(document).ready(function()
+{
+
+        if($(".jcalendar").length) {
+            $.insert(WB_URL+"/include/jscalendar/calendar-system.css");
+          }
+
+        if($(".jsadmin").length) {
+            $.insert(WB_URL+"/modules/jsadmin/backend.css");
+          }
+
+	//Add external link class to external links -
+	$('a[href^="http://"]').filter(function() {
+		//Compare the anchor tag's host name with location's host name
+	    return this.hostname && this.hostname !== location.hostname;
+	  }).addClass("external").attr("target", "_blank");
+
+	/* Add internal link class to external links -   */
+	$('a[href^="http://"]').filter(function() {
+		//Compare the anchor tag's host name with location's host name
+	    return this.hostname && this.hostname == location.hostname;
+	  }).addClass("internal");
+
+	$('form').attr('autocomplete', 'off');
+
+});
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/jquery-corner.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/jquery-corner.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/jquery-corner.js	(revision 1610)
@@ -0,0 +1,178 @@
+/*!
+ * jQuery corner plugin: simple corner rounding
+ * Examples and documentation at: http://jquery.malsup.com/corner/
+ * version 1.96 (11-MAY-2009)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+/**
+ *  corner() takes a single string argument:  $('#myDiv').corner("effect corners width")
+ *
+ *  effect:  name of the effect to apply, such as round, bevel, notch, bite, etc (default is round). 
+ *  corners: one or more of: top, bottom, tr, tl, br, or bl. 
+ *           by default, all four corners are adorned. 
+ *  width:   width of the effect; in the case of rounded corners this is the radius. 
+ *           specify this value using the px suffix such as 10px (and yes, it must be pixels).
+ *
+ * @name corner
+ * @type jQuery
+ * @param String options Options which control the corner style
+ * @cat Plugins/Corner
+ * @return jQuery
+ * @author Dave Methvin (http://methvin.com/jquery/jq-corner.html)
+ * @author Mike Alsup   (http://jquery.malsup.com/corner/)
+ */
+;(function($) { 
+
+var expr = (function() {
+    var div = document.createElement('div');
+    try { div.style.setExpression('width','0+0'); }
+    catch(e) { return false; }
+    return true;
+})();
+    
+function sz(el, p) { 
+    return parseInt($.css(el,p))||0; 
+};
+function hex2(s) {
+    var s = parseInt(s).toString(16);
+    return ( s.length < 2 ) ? '0'+s : s;
+};
+function gpc(node) {
+    for ( ; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode ) {
+        var v = $.css(node,'backgroundColor');
+        if ( v.indexOf('rgb') >= 0 ) { 
+            if ($.browser.safari && v == 'rgba(0, 0, 0, 0)')
+                continue;
+            var rgb = v.match(/\d+/g); 
+            return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
+        }
+        if ( v && v != 'transparent' )
+            return v;
+    }
+    return '#ffffff';
+};
+
+function getWidth(fx, i, width) {
+    switch(fx) {
+    case 'round':  return Math.round(width*(1-Math.cos(Math.asin(i/width))));
+    case 'cool':   return Math.round(width*(1+Math.cos(Math.asin(i/width))));
+    case 'sharp':  return Math.round(width*(1-Math.cos(Math.acos(i/width))));
+    case 'bite':   return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
+    case 'slide':  return Math.round(width*(Math.atan2(i,width/i)));
+    case 'jut':    return Math.round(width*(Math.atan2(width,(width-i-1))));
+    case 'curl':   return Math.round(width*(Math.atan(i)));
+    case 'tear':   return Math.round(width*(Math.cos(i)));
+    case 'wicked': return Math.round(width*(Math.tan(i)));
+    case 'long':   return Math.round(width*(Math.sqrt(i)));
+    case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
+    case 'dog':    return (i&1) ? (i+1) : width;
+    case 'dog2':   return (i&2) ? (i+1) : width;
+    case 'dog3':   return (i&3) ? (i+1) : width;
+    case 'fray':   return (i%2)*width;
+    case 'notch':  return width; 
+    case 'bevel':  return i+1;
+    }
+};
+
+$.fn.corner = function(o) {
+    // in 1.3+ we can fix mistakes with the ready state
+	if (this.length == 0) {
+        if (!$.isReady && this.selector) {
+            var s = this.selector, c = this.context;
+            $(function() {
+                $(s,c).corner(o);
+            });
+        }
+        return this;
+	}
+
+    o = (o||"").toLowerCase();
+    var keep = /keep/.test(o);                       // keep borders?
+    var cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]);  // corner color
+    var sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]);  // strip color
+    var width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10; // corner width
+    var re = /round|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dog/;
+    var fx = ((o.match(re)||['round'])[0]);
+    var edges = { T:0, B:1 };
+    var opts = {
+        TL:  /top|tl/.test(o),       TR:  /top|tr/.test(o),
+        BL:  /bottom|bl/.test(o),    BR:  /bottom|br/.test(o)
+    };
+    if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
+        opts = { TL:1, TR:1, BL:1, BR:1 };
+    var strip = document.createElement('div');
+    strip.style.overflow = 'hidden';
+    strip.style.height = '1px';
+    strip.style.backgroundColor = sc || 'transparent';
+    strip.style.borderStyle = 'solid';
+    return this.each(function(index){
+        var pad = {
+            T: parseInt($.css(this,'paddingTop'))||0,     R: parseInt($.css(this,'paddingRight'))||0,
+            B: parseInt($.css(this,'paddingBottom'))||0,  L: parseInt($.css(this,'paddingLeft'))||0
+        };
+
+        if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE
+        if (!keep) this.style.border = 'none';
+        strip.style.borderColor = cc || gpc(this.parentNode);
+        var cssHeight = $.curCSS(this, 'height');
+
+        for (var j in edges) {
+            var bot = edges[j];
+            // only add stips if needed
+            if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
+                strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
+                var d = document.createElement('div');
+                $(d).addClass('jquery-corner');
+                var ds = d.style;
+
+                bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);
+
+                if (bot && cssHeight != 'auto') {
+                    if ($.css(this,'position') == 'static')
+                        this.style.position = 'relative';
+                    ds.position = 'absolute';
+                    ds.bottom = ds.left = ds.padding = ds.margin = '0';
+                    if (expr)
+                        ds.setExpression('width', 'this.parentNode.offsetWidth');
+                    else
+                        ds.width = '100%';
+                }
+                else if (!bot && $.browser.msie) {
+                    if ($.css(this,'position') == 'static')
+                        this.style.position = 'relative';
+                    ds.position = 'absolute';
+                    ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
+                    
+                    // fix ie6 problem when blocked element has a border width
+                    if (expr) {
+                        var bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth');
+                        ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"');
+                    }
+                    else
+                        ds.width = '100%';
+                }
+                else {
+                    ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : 
+                                        (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';                
+                }
+
+                for (var i=0; i < width; i++) {
+                    var w = Math.max(0,getWidth(fx,i, width));
+                    var e = strip.cloneNode(false);
+                    e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
+                    bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
+                }
+            }
+        }
+    });
+};
+
+$.fn.uncorner = function() { 
+	$('div.jquery-corner', this).remove();
+	return this;
+};
+    
+})(jQuery);
Index: tags/2.8.3/wb/templates/wb_theme/jquery/jquery-fixedheader.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/jquery-fixedheader.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/jquery-fixedheader.js	(revision 1610)
@@ -0,0 +1,141 @@
+/**
+ * Stupid Fixed Header 1.0.1 - jQuery plugins to create a fixed headers
+ * 
+ * Require: jQuery 1.2.6
+ * Author: Jacky See
+ * Blog: http://jacky.seezone.net
+ * email:  jackysee at gmail dot com
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+*/
+
+(function($){
+	
+	/* created fixed headers , require jquery dimenions plugins*/
+	$.fn.fixedHeader = function(o){
+		var s = {adjustWidth: $.fixedHeader.calcWidth};
+		if(o) $.extend(s,o);
+		
+		return this.each(function(){
+			var table = $(this); //table
+			var tId = this.id;
+			
+			var scrollBarWidth = $.fixedHeader.getScrollBarWidth();
+			var IE6 = $.browser.msie && $.browser.version == '6.0';
+			
+			//wrap a body container
+			var bodyContainer = table.wrap('<div></div>').parent()
+				.attr('id', tId + "_body_container")
+				.css({
+					width: s.width,
+					height: s.height,
+					overflow: 'auto'
+				});
+			
+			//Wrap with an overall container
+			var tableContainer = bodyContainer.wrap('<div></div>').parent()
+				.attr('id', tId + '_table_container')
+				.css('position','relative');
+
+			//clone the header
+			var headerContainer = $(document.createElement('div'))
+				.attr('id', tId + '_header_container')
+				.css({
+					width:  bodyContainer.innerWidth() - scrollBarWidth,
+					height: table.find('thead').outerHeight(), 
+					overflow: 'hidden',
+					top: 0, left:0
+				})
+				.prependTo(tableContainer);
+			
+			var headerTable = table.clone(true)
+				.find('tbody').remove().end()
+				.attr('id',tId + "_header")
+				.addClass(s.tableClass || table[0].className)
+				.css({
+					//width: $.browser.msie? table.outerWidth():table.width(), 
+					'table-layout':'fixed',
+					position:'absolute',
+					top:0, left:0
+				})
+				.append(table.find('thead').clone(true))
+				.appendTo(headerContainer);
+			
+			//sync header width
+			var headThs = headerTable.find('th');
+			table.find('th').each(function(i){
+				headThs.eq(i).css('width', s.adjustWidth(this));
+			})
+			
+			//sync scroll
+			var selects = IE6? table.find("select"): null;
+			bodyContainer.scroll(function(){
+				if(IE6 && selects.size()>0){
+					selects.each(function(i){
+						this.style.visibility =
+							($(this).offset().top - bodyContainer.offset().top) <= table.find("thead").outerHeight() + 10
+							? 'hidden':'visible';
+					});
+				}
+				headerTable.css({
+					left: '-' + $(this).scrollLeft() + 'px'
+				});
+			})
+			
+			//Move it down
+			headerContainer.css({
+				'position': 'absolute',
+				'top': 0
+			});
+		});
+	}
+	
+	$.fixedHeader = {
+		calcWidth: function(th){
+			var w = $(th).width();
+			var paddingLeft = $.fixedHeader.getComputedStyleInPx(th,'paddingLeft');
+			var paddingRight = $.fixedHeader.getComputedStyleInPx(th,'paddingRight');
+			var borderWidth = $.fixedHeader.getComputedStyleInPx(th,'borderRightWidth');			
+			if($.browser.msie) w = w+borderWidth;
+			if($.browser.opera) w = w+borderWidth;
+			if($.browser.safari) w = w+paddingLeft+paddingRight+borderWidth*2;
+			if($.browser.mozilla && parseFloat($.browser.version) <= 1.8) w=w+borderWidth; //FF2 still got a border-left missing problem, this is the best I can do.
+			return w;
+		},
+		getComputedStyleInPx: function(elem,style){
+			var computedStyle = (typeof elem.currentStyle != 'undefined')
+				?elem.currentStyle
+				:document.defaultView.getComputedStyle(elem, null);
+			var val = computedStyle[style];
+			val = val? parseInt(val.replace("px","")):0;
+			return (!val || val == 'NaN')?0:val;
+		},
+		getScrollBarWidth: function() { //calculate or get from global the scroll bar width
+			if(!$.fixedHeader.scrollBarWidth){ 
+				var inner = $(document.createElement('p')).css({width:'100%',height:'100%'});
+				var outer = $(document.createElement('div'))
+					.css({
+						position:'absolute',
+						top: '0px',
+						left: '0px',
+						visibility: 'hidden',
+						width: '200px',
+						height: '150px',
+						overflow: 'hidden'
+					})
+					.append(inner)
+					.appendTo(document.body);
+				
+				var w1 = inner[0].offsetWidth;
+				outer[0].style.overflow = 'scroll';
+				var w2 = inner[0].offsetWidth;
+				if (w1 == w2) w2 = outer[0].clientWidth;
+				document.body.removeChild (outer[0]);
+				$.fixedHeader.scrollBarWidth = (w1 - w2);
+			}
+			return $.fixedHeader.scrollBarWidth;
+		}
+	}
+	
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-fixedheader.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-fixedheader.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-fixedheader.js	(revision 1610)
@@ -0,0 +1,141 @@
+/**
+ * Stupid Fixed Header 1.0.1 - jQuery plugins to create a fixed headers
+ * 
+ * Require: jQuery 1.2.6
+ * Author: Jacky See
+ * Blog: http://jacky.seezone.net
+ * email:  jackysee at gmail dot com
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+*/
+
+(function($){
+	
+	/* created fixed headers , require jquery dimenions plugins*/
+	$.fn.fixedHeader = function(o){
+		var s = {adjustWidth: $.fixedHeader.calcWidth};
+		if(o) $.extend(s,o);
+		
+		return this.each(function(){
+			var table = $(this); //table
+			var tId = this.id;
+			
+			var scrollBarWidth = $.fixedHeader.getScrollBarWidth();
+			var IE6 = $.browser.msie && $.browser.version == '6.0';
+			
+			//wrap a body container
+			var bodyContainer = table.wrap('<div></div>').parent()
+				.attr('id', tId + "_body_container")
+				.css({
+					width: s.width,
+					height: s.height,
+					overflow: 'auto'
+				});
+			
+			//Wrap with an overall container
+			var tableContainer = bodyContainer.wrap('<div></div>').parent()
+				.attr('id', tId + '_table_container')
+				.css('position','relative');
+
+			//clone the header
+			var headerContainer = $(document.createElement('div'))
+				.attr('id', tId + '_header_container')
+				.css({
+					width:  bodyContainer.innerWidth() - scrollBarWidth,
+					height: table.find('thead').outerHeight(), 
+					overflow: 'hidden',
+					top: 0, left:0
+				})
+				.prependTo(tableContainer);
+			
+			var headerTable = table.clone(true)
+				.find('tbody').remove().end()
+				.attr('id',tId + "_header")
+				.addClass(s.tableClass || table[0].className)
+				.css({
+					//width: $.browser.msie? table.outerWidth():table.width(), 
+					'table-layout':'fixed',
+					position:'absolute',
+					top:0, left:0
+				})
+				.append(table.find('thead').clone(true))
+				.appendTo(headerContainer);
+			
+			//sync header width
+			var headThs = headerTable.find('th');
+			table.find('th').each(function(i){
+				headThs.eq(i).css('width', s.adjustWidth(this));
+			})
+			
+			//sync scroll
+			var selects = IE6? table.find("select"): null;
+			bodyContainer.scroll(function(){
+				if(IE6 && selects.size()>0){
+					selects.each(function(i){
+						this.style.visibility =
+							($(this).offset().top - bodyContainer.offset().top) <= table.find("thead").outerHeight() + 10
+							? 'hidden':'visible';
+					});
+				}
+				headerTable.css({
+					left: '-' + $(this).scrollLeft() + 'px'
+				});
+			})
+			
+			//Move it down
+			headerContainer.css({
+				'position': 'absolute',
+				'top': 0
+			});
+		});
+	}
+	
+	$.fixedHeader = {
+		calcWidth: function(th){
+			var w = $(th).width();
+			var paddingLeft = $.fixedHeader.getComputedStyleInPx(th,'paddingLeft');
+			var paddingRight = $.fixedHeader.getComputedStyleInPx(th,'paddingRight');
+			var borderWidth = $.fixedHeader.getComputedStyleInPx(th,'borderRightWidth');			
+			if($.browser.msie) w = w+borderWidth;
+			if($.browser.opera) w = w+borderWidth;
+			if($.browser.safari) w = w+paddingLeft+paddingRight+borderWidth*2;
+			if($.browser.mozilla && parseFloat($.browser.version) <= 1.8) w=w+borderWidth; //FF2 still got a border-left missing problem, this is the best I can do.
+			return w;
+		},
+		getComputedStyleInPx: function(elem,style){
+			var computedStyle = (typeof elem.currentStyle != 'undefined')
+				?elem.currentStyle
+				:document.defaultView.getComputedStyle(elem, null);
+			var val = computedStyle[style];
+			val = val? parseInt(val.replace("px","")):0;
+			return (!val || val == 'NaN')?0:val;
+		},
+		getScrollBarWidth: function() { //calculate or get from global the scroll bar width
+			if(!$.fixedHeader.scrollBarWidth){ 
+				var inner = $(document.createElement('p')).css({width:'100%',height:'100%'});
+				var outer = $(document.createElement('div'))
+					.css({
+						position:'absolute',
+						top: '0px',
+						left: '0px',
+						visibility: 'hidden',
+						width: '200px',
+						height: '150px',
+						overflow: 'hidden'
+					})
+					.append(inner)
+					.appendTo(document.body);
+				
+				var w1 = inner[0].offsetWidth;
+				outer[0].style.overflow = 'scroll';
+				var w2 = inner[0].offsetWidth;
+				if (w1 == w2) w2 = outer[0].clientWidth;
+				document.body.removeChild (outer[0]);
+				$.fixedHeader.scrollBarWidth = (w1 - w2);
+			}
+			return $.fixedHeader.scrollBarWidth;
+		}
+	}
+	
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2.css	(revision 1610)
@@ -0,0 +1,83 @@
+/* SLIMBOX */
+
+#lbOverlay {
+	position: fixed;
+	z-index: 9999;
+	left: 0;
+	top: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #000;
+	cursor: pointer;
+}
+
+#lbCenter, #lbBottomContainer {
+	position: absolute;
+	z-index: 9999;
+	overflow: hidden;
+	background-color: #fff;
+}
+
+.lbLoading {
+	background: #fff url(images/loading.gif) no-repeat center;
+}
+
+#lbImage {
+	position: absolute;
+	left: 0;
+	top: 0;
+	border: 10px solid #fff;
+	background-repeat: no-repeat;
+}
+
+#lbPrevLink, #lbNextLink {
+	display: block;
+	position: absolute;
+	top: 0;
+	width: 50%;
+	outline: none;
+}
+
+#lbPrevLink {
+	left: 0;
+}
+
+#lbPrevLink:hover {
+	background: transparent url(images/prevlabel.gif) no-repeat 0 15%;
+}
+
+#lbNextLink {
+	right: 0;
+}
+
+#lbNextLink:hover {
+	background: transparent url(images/nextlabel.gif) no-repeat 100% 15%;
+}
+
+#lbBottom {
+	font-family: Verdana, Arial, Geneva, Helvetica, sans-serif;
+	font-size: 10px;
+	color: #666;
+	line-height: 1.4em;
+	text-align: left;
+	border: 10px solid #fff;
+	border-top-style: none;
+}
+
+#lbCloseLink {
+	display: block;
+	float: right;
+	width: 66px;
+	height: 22px;
+	background: transparent url(images/closelabel.gif) no-repeat center;
+	margin: 5px 0;
+	outline: none;
+}
+
+#lbCaption, #lbNumber {
+	margin-right: 71px;
+}
+
+#lbCaption {
+	font-weight: bold;
+}
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery.dropshadow.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery.dropshadow.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery.dropshadow.js	(revision 1610)
@@ -0,0 +1,304 @@
+/*
+	VERSION: Drop Shadow jQuery Plugin 1.6  12-13-2007
+
+	REQUIRES: jquery.js (1.2.6 or later)
+
+	SYNTAX: $(selector).dropShadow(options);  // Creates new drop shadows
+					$(selector).redrawShadow();       // Redraws shadows on elements
+					$(selector).removeShadow();       // Removes shadows from elements
+					$(selector).shadowId();           // Returns an existing shadow's ID
+
+	OPTIONS:
+
+		left    : integer (default = 4)
+		top     : integer (default = 4)
+		blur    : integer (default = 2)
+		opacity : decimal (default = 0.5)
+		color   : string (default = "black")
+		swap    : boolean (default = false)
+
+	The left and top parameters specify the distance and direction, in	pixels, to
+	offset the shadow. Zero values position the shadow directly behind the element.
+	Positive values shift the shadow to the right and down, while negative values 
+	shift the shadow to the left and up.
+	
+	The blur parameter specifies the spread, or dispersion, of the shadow. Zero 
+	produces a sharp shadow, one or two produces a normal shadow, and	three or four
+	produces a softer shadow. Higher values increase the processing load.
+	
+	The opacity parameter	should be a decimal value, usually less than one. You can
+	use a value	higher than one in special situations, e.g. with extreme blurring. 
+	
+	Color is specified in the usual manner, with a color name or hex value. The
+	color parameter	does not apply with transparent images.
+	
+	The swap parameter reverses the stacking order of the original and the shadow.
+	This can be used for special effects, like an embossed or engraved look.
+
+	EXPLANATION:
+	
+	This jQuery plug-in adds soft drop shadows behind page elements. It is only
+	intended for adding a few drop shadows to mostly stationary objects, like a
+	page heading, a photo, or content containers.
+
+	The shadows it creates are not bound to the original elements, so they won't
+	move or change size automatically if the original elements change. A window
+	resize event listener is assigned, which should re-align the shadows in many
+	cases, but if the elements otherwise move or resize you will have to handle
+	those events manually. Shadows can be redrawn with the redrawShadow() method
+	or removed with the removeShadow() method. The redrawShadow() method uses the
+	same options used to create the original shadow. If you want to change the
+	options, you should remove the shadow first and then create a new shadow.
+	
+	The dropShadow method returns a jQuery collection of the new shadow(s). If
+	further manipulation is required, you can store it in a variable like this:
+
+		var myShadow = $("#myElement").dropShadow();
+
+	You can also read the ID of the shadow from the original element at a later
+	time. To get a shadow's ID, either read the shadowId attribute of the
+	original element or call the shadowId() method. For example:
+
+		var myShadowId = $("#myElement").attr("shadowId");  or
+		var myShadowId = $("#myElement").shadowId();
+
+	If the original element does not already have an ID assigned, a random ID will
+	be generated for the shadow. However, if the original does have an ID, the 
+	shadow's ID will be the original ID and "_dropShadow". For example, if the
+	element's ID is "myElement", the shadow's ID would be "myElement_dropShadow".
+
+	If you have a long piece of text and the user resizes the	window so that the
+	text wraps or unwraps, the shape of the text changes and the words are no
+	longer in the same positions. In that case, you can either preset the height
+	and width, so that it becomes a fixed box, or you can shadow each word
+	separately, like this:
+
+		<h1><span>Your</span> <span>Page</span> <span>Title</span></h1>
+
+		$("h1 span").dropShadow();
+
+	The dropShadow method attempts to determine whether the selected elements have
+	transparent backgrounds. If you want to shadow the content inside an element,
+	like text or a transparent image, it must not have a background-color or
+	background-image style. If the element has a solid background it will create a
+	rectangular	shadow around the outside box.
+
+	The shadow elements are positioned absolutely one layer below the original 
+	element, which is positioned relatively (unless it's already absolute).
+
+	*** All shadows have the "dropShadow" class, for selecting with CSS or jQuery.
+
+	ISSUES:
+	
+		1)	Limited styling of shadowed elements by ID. Because IDs must be unique,
+				and the shadows have their own ID, styles applied by ID won't transfer
+				to the shadows. Instead, style elements by class or use inline styles.
+		2)	Sometimes shadows don't align properly. Elements may need to be wrapped
+				in container elements, margins or floats changed, etc. or you may just 
+				have to tweak the left and top offsets to get them to align. For example,
+				with draggable objects, you have to wrap them inside two divs. Make the 
+				outer div draggable and set the inner div's position to relative. Then 
+				you can create a shadow on the element inside the inner div.
+		3)	If the user changes font sizes it will throw the shadows off. Browsers 
+				do not expose an event for font size changes. The only known way to 
+				detect a user font size change is to embed an invisible text element and
+				then continuously poll for changes in size.
+		4)	Safari support is shaky, and may require even more tweaks/wrappers, etc.
+		
+		The bottom line is that this is a gimick effect, not PFM, and if you push it
+		too hard or expect it to work in every possible situation on every browser,
+		you will be disappointed. Use it sparingly, and don't use it for anything 
+		critical. Otherwise, have fun with it!
+				
+	AUTHOR: Larry Stevens (McLars@eyebulb.com) This work is in the public domain,
+					and it is not supported in any way. Use it at your own risk.
+*/
+
+
+(function($){
+
+	var dropShadowZindex = 1;  //z-index counter
+
+	$.fn.dropShadow = function(options)
+	{
+		// Default options
+		var opt = $.extend({
+			left: 4,
+			top: 4,
+			blur: 2,
+			opacity: .5,
+			color: "black",
+			swap: false
+			}, options);
+		var jShadows = $([]);  //empty jQuery collection
+		
+		// Loop through original elements
+		this.not(".dropShadow").each(function()
+		{
+			var jthis = $(this);
+			var shadows = [];
+			var blur = (opt.blur <= 0) ? 0 : opt.blur;
+			var opacity = (blur == 0) ? opt.opacity : opt.opacity / (blur * 8);
+			var zOriginal = (opt.swap) ? dropShadowZindex : dropShadowZindex + 1;
+			var zShadow = (opt.swap) ? dropShadowZindex + 1 : dropShadowZindex;
+			
+			// Create ID for shadow
+			var shadowId;
+			if (this.id) {
+				shadowId = this.id + "_dropShadow";
+			}
+			else {
+				shadowId = "ds" + (1 + Math.floor(9999 * Math.random()));
+			}
+
+			// Modify original element
+			$.data(this, "shadowId", shadowId); //store id in expando
+			$.data(this, "shadowOptions", options); //store options in expando
+			jthis
+				.attr("shadowId", shadowId)
+				.css("zIndex", zOriginal);
+			if (jthis.css("position") != "absolute") {
+				jthis.css({
+					position: "relative",
+					zoom: 1 //for IE layout
+				});
+			}
+
+			// Create first shadow layer
+			bgColor = jthis.css("backgroundColor");
+			if (bgColor == "rgba(0, 0, 0, 0)") bgColor = "transparent";  //Safari
+			if (bgColor != "transparent" || jthis.css("backgroundImage") != "none" 
+					|| this.nodeName == "SELECT" 
+					|| this.nodeName == "INPUT"
+					|| this.nodeName == "TEXTAREA") {		
+				shadows[0] = $("<div></div>")
+					.css("background", opt.color);								
+			}
+			else {
+				shadows[0] = jthis
+					.clone()
+					.removeAttr("id")
+					.removeAttr("name")
+					.removeAttr("shadowId")
+					.css("color", opt.color);
+			}
+			shadows[0]
+				.addClass("dropShadow")
+				.css({
+					height: jthis.outerHeight(),
+					left: blur,
+					opacity: opacity,
+					position: "absolute",
+					top: blur,
+					width: jthis.outerWidth(),
+					zIndex: zShadow
+				});
+				
+			// Create other shadow layers
+			var layers = (8 * blur) + 1;
+			for (i = 1; i < layers; i++) {
+				shadows[i] = shadows[0].clone();
+			}
+
+			// Position layers
+			var i = 1;			
+			var j = blur;
+			while (j > 0) {
+				shadows[i].css({left: j * 2, top: 0});           //top
+				shadows[i + 1].css({left: j * 4, top: j * 2});   //right
+				shadows[i + 2].css({left: j * 2, top: j * 4});   //bottom
+				shadows[i + 3].css({left: 0, top: j * 2});       //left
+				shadows[i + 4].css({left: j * 3, top: j});       //top-right
+				shadows[i + 5].css({left: j * 3, top: j * 3});   //bottom-right
+				shadows[i + 6].css({left: j, top: j * 3});       //bottom-left
+				shadows[i + 7].css({left: j, top: j});           //top-left
+				i += 8;
+				j--;
+			}
+
+			// Create container
+			var divShadow = $("<div></div>")
+				.attr("id", shadowId) 
+				.addClass("dropShadow")
+				.css({
+					left: jthis.position().left + opt.left - blur,
+					marginTop: jthis.css("marginTop"),
+					marginRight: jthis.css("marginRight"),
+					marginBottom: jthis.css("marginBottom"),
+					marginLeft: jthis.css("marginLeft"),
+					position: "absolute",
+					top: jthis.position().top + opt.top - blur,
+					zIndex: zShadow
+				});
+
+			// Add layers to container	
+			for (i = 0; i < layers; i++) {
+				divShadow.append(shadows[i]);
+			}
+			
+			// Add container to DOM
+			jthis.after(divShadow);
+
+			// Add shadow to return set
+			jShadows = jShadows.add(divShadow);
+
+			// Re-align shadow on window resize
+			$(window).resize(function()
+			{
+				try {
+					divShadow.css({
+						left: jthis.position().left + opt.left - blur,
+						top: jthis.position().top + opt.top - blur
+					});
+				}
+				catch(e){}
+			});
+			
+			// Increment z-index counter
+			dropShadowZindex += 2;
+
+		});  //end each
+		
+		return this.pushStack(jShadows);
+	};
+
+
+	$.fn.redrawShadow = function()
+	{
+		// Remove existing shadows
+		this.removeShadow();
+		
+		// Draw new shadows
+		return this.each(function()
+		{
+			var shadowOptions = $.data(this, "shadowOptions");
+			$(this).dropShadow(shadowOptions);
+		});
+	};
+
+
+	$.fn.removeShadow = function()
+	{
+		return this.each(function()
+		{
+			var shadowId = $(this).shadowId();
+			$("div#" + shadowId).remove();
+		});
+	};
+
+
+	$.fn.shadowId = function()
+	{
+		return $.data(this[0], "shadowId");
+	};
+
+
+	$(function()  
+	{
+		// Suppress printing of shadows
+		var noPrint = "<style type='text/css' media='print'>";
+		noPrint += ".dropShadow{visibility:hidden;}</style>";
+		$("head").append(noPrint);
+	});
+
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_2e83ff_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_2e83ff_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_95_fef1ec_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_95_fef1ec_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_888888_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_888888_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_55_fbf9ee_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_55_fbf9ee_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_75_dadada_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_75_dadada_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_flat_75_ffffff_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_flat_75_ffffff_40x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_75_e6e6e6_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_75_e6e6e6_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_65_ffffff_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_glass_65_ffffff_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/x-click-but04.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/x-click-but04.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_highlight-soft_75_cccccc_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_highlight-soft_75_cccccc_1x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_cd0a0a_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_cd0a0a_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_flat_0_aaaaaa_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-bg_flat_0_aaaaaa_40x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_454545_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_454545_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_222222_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/images/ui-icons_222222_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-metadata.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-metadata.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-metadata.js	(revision 1610)
@@ -0,0 +1,13 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.metadata.js 3620 2007-10-10 20:55:38Z pmclanahan $
+ *
+ */
+(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)return;var e=elem.getElementsByTagName(settings.name);if(e.length)data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)data=attr;}if(data.indexOf('{')<0)data="{"+data+"}";data=eval("("+data+")");$.data(elem,settings.single,data);return data;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2-min.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2-min.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/jquery-slimbox2-min.js	(revision 1610)
@@ -0,0 +1,15 @@
+/*
+	Slimbox v2.02 - The ultimate lightweight Lightbox clone for jQuery
+	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
+	MIT-style license.
+*/
+(function(w){var E=w(window),u,g,F=-1,o,x,D,v,y,L,s,n=!window.XMLHttpRequest,e=window.opera&&(document.compatMode=="CSS1Compat")&&(w.browser.version>=9.3),m=document.documentElement,l={},t=new Image(),J=new Image(),H,a,h,q,I,d,G,c,A,K;w(function(){w("body").append(w([H=w('<div id="lbOverlay" />')[0],a=w('<div id="lbCenter" />')[0],G=w('<div id="lbBottomContainer" />')[0]]).css("display","none"));h=w('<div id="lbImage" />').appendTo(a).append(q=w('<div style="position: relative;" />').append([I=w('<a id="lbPrevLink" href="#" />').click(B)[0],d=w('<a id="lbNextLink" href="#" />').click(f)[0]])[0])[0];c=w('<div id="lbBottom" />').appendTo(G).append([w('<a id="lbCloseLink" href="#" />').add(H).click(C)[0],A=w('<div id="lbCaption" />')[0],K=w('<div id="lbNumber" />')[0],w('<div style="clear: both;" />')[0]])[0]});w.slimbox=function(O,N,M){u=w.extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeEasing:"swing",initialWidth:250,initialHeight:250,imageFadeDuration:400,captionAnimationDuration:400,counterText:"Image {x} of {y}",closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},M);if(typeof O=="string"){O=[[O,N]];N=0}y=E.scrollTop()+((e?m.clientHeight:E.height())/2);L=u.initialWidth;s=u.initialHeight;w(a).css({top:Math.max(0,y-(s/2)),width:L,height:s,marginLeft:-L/2}).show();v=n||(H.currentStyle&&(H.currentStyle.position!="fixed"));if(v){H.style.position="absolute"}w(H).css("opacity",u.overlayOpacity).fadeIn(u.overlayFadeDuration);z();k(1);g=O;u.loop=u.loop&&(g.length>1);return b(N)};w.fn.slimbox=function(M,P,O){P=P||function(Q){return[Q.href,Q.title]};O=O||function(){return true};var N=this;return N.unbind("click").click(function(){var S=this,U=0,T,Q=0,R;T=w.grep(N,function(W,V){return O.call(S,W,V)});for(R=T.length;Q<R;++Q){if(T[Q]==S){U=Q}T[Q]=P(T[Q],Q)}return w.slimbox(T,U,M)})};function z(){var N=E.scrollLeft(),M=e?m.clientWidth:E.width();w([a,G]).css("left",N+(M/2));if(v){w(H).css({left:N,top:E.scrollTop(),width:M,height:E.height()})}}function k(M){w("object").add(n?"select":"embed").each(function(O,P){if(M){w.data(P,"slimbox",P.style.visibility)}P.style.visibility=M?"hidden":w.data(P,"slimbox")});var N=M?"bind":"unbind";E[N]("scroll resize",z);w(document)[N]("keydown",p)}function p(O){var N=O.keyCode,M=w.inArray;return(M(N,u.closeKeys)>=0)?C():(M(N,u.nextKeys)>=0)?f():(M(N,u.previousKeys)>=0)?B():false}function B(){return b(x)}function f(){return b(D)}function b(M){if(M>=0){F=M;o=g[F][0];x=(F||(u.loop?g.length:0))-1;D=((F+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";l=new Image();l.onload=j;l.src=o}return false}function j(){a.className="";w(h).css({backgroundImage:"url("+o+")",visibility:"hidden",display:""});w(q).width(l.width);w([q,I,d]).height(l.height);w(A).html(g[F][1]||"");w(K).html((((g.length>1)&&u.counterText)||"").replace(/{x}/,F+1).replace(/{y}/,g.length));if(x>=0){t.src=g[x][0]}if(D>=0){J.src=g[D][0]}L=h.offsetWidth;s=h.offsetHeight;var M=Math.max(0,y-(s/2));if(a.offsetHeight!=s){w(a).animate({height:s,top:M},u.resizeDuration,u.resizeEasing)}if(a.offsetWidth!=L){w(a).animate({width:L,marginLeft:-L/2},u.resizeDuration,u.resizeEasing)}w(a).queue(function(){w(G).css({width:L,top:M+s,marginLeft:-L/2,visibility:"hidden",display:""});w(h).css({display:"none",visibility:"",opacity:""}).fadeIn(u.imageFadeDuration,i)})}function i(){if(x>=0){w(I).show()}if(D>=0){w(d).show()}w(c).css("marginTop",-c.offsetHeight).animate({marginTop:0},u.captionAnimationDuration);G.style.visibility=""}function r(){l.onload=null;l.src=t.src=J.src=o;w([a,h,c]).stop(true);w([I,d,h,G]).hide()}function C(){if(F>=0){r();F=x=D=-1;w(a).hide();w(H).stop().fadeOut(u.overlayFadeDuration,k)}return false}})(jQuery);
+
+// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
+$(function($) {
+        $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, function(el) {
+                return [el.href, el.title + '<br /><a href="' + el.href + '">Download this image</a>'];
+        }, function(el) {
+                return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
+        });
+});
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_se.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_se.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/prevlabel.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/prevlabel.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/loading.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/loading.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_closebox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_closebox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/nextlabel.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/nextlabel.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_main.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_main.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/clear.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/clear.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_e.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_e.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_nw.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_nw.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 985 2009-05-27 04:46:39Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../../index.php");
+
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_title_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox.css	(revision 1610)
@@ -0,0 +1,92 @@
+div#fancy_overlay {
+	position:absolute;
+	top: 0;
+	left: 0;
+	z-index: 90;
+	width: 100%;
+	background-color: #333;
+}
+
+div#fancy_loading {
+	position: absolute;
+	height: 40px;
+	width: 40px;
+	cursor: pointer;
+	display: none;
+	overflow: hidden;
+	background: transparent;
+	z-index: 100;
+}
+
+div#fancy_loading div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 40px;
+	height: 480px;
+	background: transparent url(fancy_progress.png) no-repeat;
+}
+
+div#fancy_close {
+/*
+	position: absolute;
+	top: -12px;
+	right: -12px;
+	height: 30px;
+	width: 30px;
+	background: transparent url(fancy_closebox.png) ;
+	cursor: pointer;
+	z-index: 100;
+	display: none;
+*/
+}
+
+div#fancy_content {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0; 
+	margin: 0;
+	z-index: 96;
+}
+
+#fancy_frame {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	display: none;
+}
+
+img#fancy_img {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	border:0; 
+	padding: 0; 
+	margin: 0;
+	z-index: 92;
+}
+
+div#fancy_outer {
+	position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 90;
+    padding: 18px 18px 58px 18px;
+    margin: 0;
+    overflow: hidden;
+    background: transparent;
+    display: none;
+}
+
+div#fancy_inner {
+	position: relative;
+	width:100%;
+	height:100%;
+	border: 1px solid #444;
+	background: #FFF;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_sw.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_sw.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox-121.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox-121.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancybox-121.css	(revision 1610)
@@ -0,0 +1,315 @@
+html, body {
+	height: 100%;
+}
+
+div#fancy_overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-color: #666;
+	display: none;
+	z-index: 30;
+}
+
+* html div#fancy_overlay {
+	position: absolute;
+	height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+div#fancy_wrap {
+	text-align: left;
+}
+
+div#fancy_loading {
+	position: absolute;
+	height: 40px;
+	width: 40px;
+	cursor: pointer;
+	display: none;
+	overflow: hidden;
+	background: transparent;
+	z-index: 100;
+}
+
+div#fancy_loading div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 40px;
+	height: 480px;
+	background: transparent url('fancy_progress.png') no-repeat;
+}
+
+div#fancy_loading_overlay {
+	position: absolute;
+	background-color: #FFF;
+	z-index: 30;
+}
+
+div#fancy_loading_icon {
+	position: absolute;
+	background: url('fancy_loading.gif') no-repeat;
+	z-index: 35;
+	width: 16px;
+	height: 16px;
+}
+
+div#fancy_outer {
+	position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 90;
+    padding: 18px 18px 33px 18px;
+    margin: 0;
+    overflow: hidden;
+    background: transparent;
+    display: none;
+}
+
+div#fancy_inner {
+	position: relative;
+	width:100%;
+	height:100%;
+	border: 1px solid #BBB;
+	background: #FFF;
+}
+
+div#fancy_content {
+	margin: 0;
+	z-index: 100;
+	position: absolute;
+}
+
+div#fancy_div {
+	background: #000;
+	color: #FFF;
+	height: 100%;
+	width: 100%;
+	z-index: 100;
+}
+
+img#fancy_img {
+	position: absolute;
+	top: 0;
+	left: 0;
+	border:0; 
+	padding: 0; 
+	margin: 0;
+	z-index: 100;
+	width: 100%;
+	height: 100%;
+}
+
+div#fancy_close {
+	position: absolute;
+	top: -12px;
+	right: -15px;
+	height: 30px;
+	width: 30px;
+	background: url('fancy_closebox.png') top left no-repeat;
+	cursor: pointer;
+	z-index: 181;
+	display: none;
+}
+
+#fancy_frame {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	display: none;
+}
+
+#fancy_ajax {
+	width: 100%;
+	height: 100%;
+	overflow: auto;
+}
+
+a#fancy_left, a#fancy_right {
+	position: absolute; 
+	bottom: 0px; 
+	height: 100%; 
+	width: 35%; 
+	cursor: pointer;
+	z-index: 111; 
+	display: none;
+	background-image: url(data:image/gif;base64,AAAA);
+	outline: none;
+}
+
+a#fancy_left {
+	left: 0px; 
+}
+
+a#fancy_right {
+	right: 0px; 
+}
+
+span.fancy_ico {
+	position: absolute; 
+	top: 50%;
+	margin-top: -15px;
+	width: 30px;
+	height: 30px;
+	z-index: 112; 
+	cursor: pointer;
+	display: block;
+}
+
+span#fancy_left_ico {
+	left: -9999px;
+	background: transparent url('fancy_left.png') no-repeat;
+}
+
+span#fancy_right_ico {
+	right: -9999px;
+	background: transparent url('fancy_right.png') no-repeat;
+}
+
+a#fancy_left:hover {
+  visibility: visible;
+}
+
+a#fancy_right:hover {
+  visibility: visible;
+}
+
+a#fancy_left:hover span {
+	left: 20px; 
+}
+
+a#fancy_right:hover span {
+	right: 20px; 
+}
+
+.fancy_bigIframe {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background: transparent;
+}
+
+div#fancy_bg {
+	position: absolute;
+	top: 0; left: 0;
+	width: 100%;
+	height: 100%;
+	z-index: 70;
+	border: 0;
+	padding: 0;
+	margin: 0;
+}
+	
+div.fancy_bg {
+	position: absolute;
+	display: block;
+	z-index: 70;
+	border: 0;
+	padding: 0;
+	margin: 0;
+}
+
+div.fancy_bg_n {
+	top: -18px;
+	width: 100%;
+	height: 18px;
+	background: transparent url('fancy_shadow_n.png') repeat-x;
+}
+
+div.fancy_bg_ne {
+	top: -18px;
+	right: -13px;
+	width: 13px;
+	height: 18px;
+	background: transparent url('fancy_shadow_ne.png') no-repeat;
+}
+
+div.fancy_bg_e {
+	right: -13px;
+	height: 100%;
+	width: 13px;
+	background: transparent url('fancy_shadow_e.png') repeat-y;
+}
+
+div.fancy_bg_se {
+	bottom: -18px;
+	right: -13px;
+	width: 13px;
+	height: 18px;
+	background: transparent url('fancy_shadow_se.png') no-repeat;
+}
+
+div.fancy_bg_s {
+	bottom: -18px;
+	width: 100%;
+	height: 18px;
+	background: transparent url('fancy_shadow_s.png') repeat-x;
+}
+
+div.fancy_bg_sw {
+	bottom: -18px;
+	left: -13px;
+	width: 13px;
+	height: 18px;
+	background: transparent url('fancy_shadow_sw.png') no-repeat;
+}
+
+div.fancy_bg_w {
+	left: -13px;
+	height: 100%;
+	width: 13px;
+	background: transparent url('fancy_shadow_w.png') repeat-y;
+}
+
+div.fancy_bg_nw {
+	top: -18px;
+	left: -13px;
+	width: 13px;
+	height: 18px;
+	background: transparent url('fancy_shadow_nw.png') no-repeat;
+}
+
+div#fancy_title {
+	position: absolute;
+	bottom: -33px;
+	left: 0;
+	width: 100%;
+	z-index: 100;
+	display: none;
+}
+
+div#fancy_title div {
+	color: #FFF;
+	font: bold 12px Arial;
+	padding-bottom: 3px;
+}
+
+div#fancy_title table {
+	margin: 0 auto;
+}
+
+div#fancy_title table td {
+	padding: 0;
+	vertical-align: middle;
+}
+
+td#fancy_title_left {
+	height: 32px;
+	width: 15px;
+	background: transparent url(fancy_title_left.png) repeat-x;
+}
+
+td#fancy_title_main {
+	height: 32px;
+	background: transparent url(fancy_title_main.png) repeat-x;
+}
+
+td#fancy_title_right {
+	height: 32px;
+	width: 15px;
+	background: transparent url(fancy_title_right.png) repeat-x;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox.js	(revision 1610)
@@ -0,0 +1,384 @@
+/*
+ * FancyBox - simple jQuery plugin for fancy image zooming
+ * Examples and documentation at: http://fancy.klade.lv/
+ * Version: 1.0.0 (29/04/2008)
+ * Copyright (c) 2008 Janis Skarnelis
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
+ * Requires: jQuery v1.2.1 or later
+*/
+(function($) {
+	var opts = {}, 
+		imgPreloader = new Image, imgTypes = ['png', 'jpg', 'jpeg', 'gif'], 
+		loadingTimer, loadingFrame = 1;
+
+   $.fn.fancybox = function(settings) {
+		opts.settings = $.extend({}, $.fn.fancybox.defaults, settings);
+
+		$.fn.fancybox.init();
+
+		return this.each(function() {
+			var $this = $(this);
+			var o = $.metadata ? $.extend({}, opts.settings, $this.metadata()) : opts.settings;
+
+			$this.unbind('click').click(function() {
+				$.fn.fancybox.start(this, o); return false;
+			});
+		});
+	};
+
+	$.fn.fancybox.start = function(el, o) {
+		if (opts.animating) return false;
+
+		if (o.overlayShow) {
+			$("#fancy_wrap").prepend('<div id="fancy_overlay"></div>');
+			$("#fancy_overlay").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': o.overlayOpacity});
+
+			if ($.browser.msie) {
+				$("#fancy_wrap").prepend('<iframe id="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
+				$("#fancy_bigIframe").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': 0});
+			}
+
+			$("#fancy_overlay").click($.fn.fancybox.close);
+		}
+
+		opts.itemArray	= [];
+		opts.itemNum	= 0;
+
+		if (jQuery.isFunction(o.itemLoadCallback)) {
+		   o.itemLoadCallback.apply(this, [opts]);
+
+			var c	= $(el).children("img:first").length ? $(el).children("img:first") : $(el);
+			var tmp	= {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
+
+		   for (var i = 0; i < opts.itemArray.length; i++) {
+				opts.itemArray[i].o = $.extend({}, o, opts.itemArray[i].o);
+				
+				if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
+					opts.itemArray[i].orig = tmp;
+				}
+		   }
+
+		} else {
+			if (!el.rel || el.rel == '') {
+				var item = {url: el.href, title: el.title, o: o};
+
+				if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
+					var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
+					item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
+				}
+
+				opts.itemArray.push(item);
+
+			} else {
+				var arr	= $("a[@rel=" + el.rel + "]").get();
+
+				for (var i = 0; i < arr.length; i++) {
+					var tmp		= $.metadata ? $.extend({}, o, $(arr[i]).metadata()) : o;
+   					var item	= {url: arr[i].href, title: arr[i].title, o: tmp};
+
+   					if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
+						var c = $(arr[i]).children("img:first").length ? $(arr[i]).children("img:first") : $(el);
+
+						item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
+					}
+
+					if (arr[i].href == el.href) opts.itemNum = i;
+
+					opts.itemArray.push(item);
+				}
+			}
+		}
+
+		$.fn.fancybox.changeItem(opts.itemNum);
+	};
+
+	$.fn.fancybox.changeItem = function(n) {
+		$.fn.fancybox.showLoading();
+
+		opts.itemNum = n;
+
+		$("#fancy_nav").empty();
+		$("#fancy_outer").stop();
+		$("#fancy_title").hide();
+		$(document).unbind("keydown");
+
+		imgRegExp = imgTypes.join('|');
+    	imgRegExp = new RegExp('\.' + imgRegExp + '$', 'i');
+
+		var url = opts.itemArray[n].url;
+
+		if (url.match(/#/)) {
+			var target = window.location.href.split('#')[0]; target = url.replace(target,'');
+
+	        $.fn.fancybox.showItem('<div id="fancy_div">' + $(target).html() + '</div>');
+
+	        $("#fancy_loading").hide();
+
+		} else if (url.match(imgRegExp)) {
+			$(imgPreloader).unbind('load').bind('load', function() {
+				$("#fancy_loading").hide();
+
+				opts.itemArray[n].o.frameWidth	= imgPreloader.width;
+				opts.itemArray[n].o.frameHeight	= imgPreloader.height;
+
+				$.fn.fancybox.showItem('<img id="fancy_img" src="' + imgPreloader.src + '" />');
+
+			}).attr('src', url + '?rand=' + Math.floor(Math.random() * 999999999) );
+
+		} else {
+			$.fn.fancybox.showItem('<iframe id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + url + '"></iframe>');
+		}
+	};
+
+	$.fn.fancybox.showIframe = function() {
+		$("#fancy_loading").hide();
+		$("#fancy_frame").show();
+	};
+
+	$.fn.fancybox.showItem = function(val) {
+		$.fn.fancybox.preloadNeighborImages();
+
+		var viewportPos	= $.fn.fancybox.getViewport();
+		var itemSize	= $.fn.fancybox.getMaxSize(viewportPos[0] - 50, viewportPos[1] - 100, opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight);
+
+		var itemLeft	= viewportPos[2] + Math.round((viewportPos[0] - itemSize[0]) / 2) - 20;
+		var itemTop		= viewportPos[3] + Math.round((viewportPos[1] - itemSize[1]) / 2) - 40;
+
+		var itemOpts = {
+			'left':		itemLeft, 
+			'top':		itemTop, 
+			'width':	itemSize[0] + 'px', 
+			'height':	itemSize[1] + 'px'	
+		}
+
+		if (opts.active) {
+			$('#fancy_content').fadeOut("normal", function() {
+				$("#fancy_content").empty();
+				
+				$("#fancy_outer").animate(itemOpts, "normal", function() {
+					$("#fancy_content").append($(val)).fadeIn("normal");
+					$.fn.fancybox.updateDetails();
+				});
+			});
+
+		} else {
+			opts.active = true;
+
+			$("#fancy_content").empty();
+
+			if ($("#fancy_content").is(":animated")) {
+				console.info('animated!');
+			}
+
+			if (opts.itemArray[opts.itemNum].o.zoomSpeedIn > 0) {
+				opts.animating		= true;
+				itemOpts.opacity	= "show";
+
+				$("#fancy_outer").css({
+					'top':		opts.itemArray[opts.itemNum].orig.pos.top - 18,
+					'left':		opts.itemArray[opts.itemNum].orig.pos.left - 18,
+					'height':	opts.itemArray[opts.itemNum].orig.height,
+					'width':	opts.itemArray[opts.itemNum].orig.width
+				});
+
+				$("#fancy_content").append($(val)).show();
+
+				$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedIn, function() {
+					opts.animating = false;
+					$.fn.fancybox.updateDetails();
+				});
+
+			} else {
+				$("#fancy_content").append($(val)).show();
+				$("#fancy_outer").css(itemOpts).show();
+				$.fn.fancybox.updateDetails();
+			}
+		 }
+	};
+
+	$.fn.fancybox.updateDetails = function() {
+		$("#fancy_bg,#fancy_close").show();
+
+		if (opts.itemArray[opts.itemNum].title !== undefined && opts.itemArray[opts.itemNum].title !== '') {
+			$('#fancy_title div').html(opts.itemArray[opts.itemNum].title);
+			$('#fancy_title').show();
+		}
+
+		if (opts.itemArray[opts.itemNum].o.hideOnContentClick) {
+			$("#fancy_content").click($.fn.fancybox.close);
+		} else {
+			$("#fancy_content").unbind('click');
+		}
+
+		if (opts.itemNum != 0) {
+			$("#fancy_nav").append('<a id="fancy_left" href="javascript:;"></a>');
+
+			$('#fancy_left').click(function() {
+				$.fn.fancybox.changeItem(opts.itemNum - 1); return false;
+			});
+		}
+
+		if (opts.itemNum != (opts.itemArray.length - 1)) {
+			$("#fancy_nav").append('<a id="fancy_right" href="javascript:;"></a>');
+			
+			$('#fancy_right').click(function(){
+				$.fn.fancybox.changeItem(opts.itemNum + 1); return false;
+			});
+		}
+
+		$(document).keydown(function(event) {
+			if (event.keyCode == 27) {
+            	$.fn.fancybox.close();
+
+			} else if(event.keyCode == 37 && opts.itemNum != 0) {
+            	$.fn.fancybox.changeItem(opts.itemNum - 1);
+
+			} else if(event.keyCode == 39 && opts.itemNum != (opts.itemArray.length - 1)) {
+            	$.fn.fancybox.changeItem(opts.itemNum + 1);
+			}
+		});
+	};
+
+	$.fn.fancybox.preloadNeighborImages = function() {
+		if ((opts.itemArray.length - 1) > opts.itemNum) {
+			preloadNextImage = new Image();
+			preloadNextImage.src = opts.itemArray[opts.itemNum + 1].url;
+		}
+
+		if (opts.itemNum > 0) {
+			preloadPrevImage = new Image();
+			preloadPrevImage.src = opts.itemArray[opts.itemNum - 1].url;
+		}
+	};
+
+	$.fn.fancybox.close = function() {
+		if (opts.animating) return false;
+
+		$(imgPreloader).unbind('load');
+		$(document).unbind("keydown");
+
+		$("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
+
+		$("#fancy_nav").empty();
+
+		opts.active	= false;
+
+		if (opts.itemArray[opts.itemNum].o.zoomSpeedOut > 0) {
+			var itemOpts = {
+				'top':		opts.itemArray[opts.itemNum].orig.pos.top - 18,
+				'left':		opts.itemArray[opts.itemNum].orig.pos.left - 18,
+				'height':	opts.itemArray[opts.itemNum].orig.height,
+				'width':	opts.itemArray[opts.itemNum].orig.width,
+				'opacity':	'hide'
+			};
+
+			opts.animating = true;
+
+			$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedOut, function() {
+				$("#fancy_content").hide().empty();
+				$("#fancy_overlay,#fancy_bigIframe").remove();
+				opts.animating = false;
+			});
+
+		} else {
+			$("#fancy_outer").hide();
+			$("#fancy_content").hide().empty();
+			$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
+		}
+	};
+
+	$.fn.fancybox.showLoading = function() {
+		clearInterval(loadingTimer);
+
+		var pos = $.fn.fancybox.getViewport();
+
+		$("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
+		$("#fancy_loading").bind('click', $.fn.fancybox.close);
+		
+		loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
+	};
+
+	$.fn.fancybox.animateLoading = function(el, o) {
+		if (!$("#fancy_loading").is(':visible')){
+			clearInterval(loadingTimer);
+			return;
+		}
+
+		$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');
+
+		loadingFrame = (loadingFrame + 1) % 12;
+	};
+
+	$.fn.fancybox.init = function() {
+		if (!$('#fancy_wrap').length) {
+			$('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_close"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
+			$('<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>').prependTo("#fancy_inner");
+			
+			$('<table cellspacing="0" cellpadding="0" border="0"><tr><td id="fancy_title_left"></td><td id="fancy_title_main"><div></div></td><td id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');
+		}
+
+		if ($.browser.msie) {
+			$("#fancy_inner").prepend('<iframe id="fancy_freeIframe" scrolling="no" frameborder="0"></iframe>');
+		}
+
+		if (jQuery.fn.pngFix) $(document).pngFix();
+
+    	$("#fancy_close").click($.fn.fancybox.close);
+	};
+
+	$.fn.fancybox.getPosition = function(el) {
+		var pos = el.offset();
+
+		pos.top	+= $.fn.fancybox.num(el, 'paddingTop');
+		pos.top	+= $.fn.fancybox.num(el, 'borderTopWidth');
+
+ 		pos.left += $.fn.fancybox.num(el, 'paddingLeft');
+		pos.left += $.fn.fancybox.num(el, 'borderLeftWidth');
+
+		return pos;
+	};
+
+	$.fn.fancybox.num = function (el, prop) {
+		return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
+	};
+
+	$.fn.fancybox.getPageScroll = function() {
+		var xScroll, yScroll;
+
+		if (self.pageYOffset) {
+			yScroll = self.pageYOffset;
+			xScroll = self.pageXOffset;
+		} else if (document.documentElement && document.documentElement.scrollTop) {
+			yScroll = document.documentElement.scrollTop;
+			xScroll = document.documentElement.scrollLeft;
+		} else if (document.body) {
+			yScroll = document.body.scrollTop;
+			xScroll = document.body.scrollLeft;	
+		}
+
+		return [xScroll, yScroll]; 
+	};
+
+	$.fn.fancybox.getViewport = function() {
+		var scroll = $.fn.fancybox.getPageScroll();
+
+		return [$(window).width(), $(window).height(), scroll[0], scroll[1]];
+	};
+
+	$.fn.fancybox.getMaxSize = function(maxWidth, maxHeight, imageWidth, imageHeight) {
+		var r = Math.min(Math.min(maxWidth, imageWidth) / imageWidth, Math.min(maxHeight, imageHeight) / imageHeight);
+
+		return [Math.round(r * imageWidth), Math.round(r * imageHeight)];
+	};
+
+	$.fn.fancybox.defaults = {
+		hideOnContentClick:	false,
+		zoomSpeedIn:		500,
+		zoomSpeedOut:		500,
+		frameWidth:			600,
+		frameHeight:		400,
+		overlayShow:		false,
+		overlayOpacity:		0.4,
+		itemLoadCallback:	null
+	};
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox-121.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox-121.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/jquery-fancybox-121.js	(revision 1610)
@@ -0,0 +1,9 @@
+/*
+ * FancyBox - simple and fancy jQuery plugin
+ * Examples and documentation at: http://fancy.klade.lv/
+ * Version: 1.2.1 (13/03/2009)
+ * Copyright (c) 2009 Janis Skarnelis
+ * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
+ * Requires: jQuery v1.3+
+*/
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';(7($){$.b.2Q=7(){u B.2t(7(){9 1J=$(B).n(\'2Z\');5(1J.1c(/^3w\\(["\']?(.*\\.2p)["\']?\\)$/i)){1J=3t.$1;$(B).n({\'2Z\':\'45\',\'2o\':"3W:3R.4m.4d(3h=F, 3T="+($(B).n(\'41\')==\'2J-3Z\'?\'4c\':\'3N\')+", Q=\'"+1J+"\')"}).2t(7(){9 1b=$(B).n(\'1b\');5(1b!=\'2e\'&&1b!=\'2n\')$(B).n(\'1b\',\'2n\')})}})};9 A,4,16=D,s=1t 1o,1w,1v=1,1y=/\\.(3A|3Y|2p|3c|3d)(.*)?$/i;9 P=($.2q.3K&&2f($.2q.3z.2k(0,1))<8);$.b.c=7(Y){Y=$.3x({},$.b.c.2R,Y);9 2s=B;7 2h(){A=B;4=Y;2r();u D};7 2r(){5(16)u;5($.1O(4.2c)){4.2c()}4.j=[];4.h=0;5(Y.j.N>0){4.j=Y.j}t{9 O={};5(!A.1H||A.1H==\'\'){9 O={d:A.d,X:A.X};5($(A).1G("1m:1D").N){O.1a=$(A).1G("1m:1D")}4.j.2j(O)}t{9 Z=$(2s).2o("a[1H="+A.1H+"]");9 O={};3C(9 i=0;i<Z.N;i++){O={d:Z[i].d,X:Z[i].X};5($(Z[i]).1G("1m:1D").N){O.1a=$(Z[i]).1G("1m:1D")}4.j.2j(O)}3F(4.j[4.h].d!=A.d){4.h++}}}5(4.23){5(P){$(\'1U, 1Q, 1P\').n(\'1S\',\'3s\')}$("#1i").n(\'25\',4.2U).J()}1d()};7 1d(){$("#1f, #1e, #V, #G").S();9 d=4.j[4.h].d;5(d.1c(/#/)){9 U=11.3r.d.3f(\'#\')[0];U=d.3g(U,\'\');U=U.2k(U.2l(\'#\'));1k(\'<6 l="3e">\'+$(U).o()+\'</6>\',4.1I,4.1x)}t 5(d.1c(1y)){s=1t 1o;s.Q=d;5(s.3a){1K()}t{$.b.c.34();$(s).x().14(\'3b\',7(){$(".I").S();1K()})}}t 5(d.1c("17")||A.3j.2l("17")>=0){1k(\'<17 l="35" 3q="$.b.c.38()" 3o="3n\'+C.T(C.3l()*3m)+\'" 2K="0" 3E="0" Q="\'+d+\'"></17>\',4.1I,4.1x)}t{$.4p(d,7(2m){1k(\'<6 l="3L">\'+2m+\'</6>\',4.1I,4.1x)})}};7 1K(){5(4.30){9 w=$.b.c.1n();9 r=C.1M(C.1M(w[0]-36,s.g)/s.g,C.1M(w[1]-4b,s.f)/s.f);9 g=C.T(r*s.g);9 f=C.T(r*s.f)}t{9 g=s.g;9 f=s.f}1k(\'<1m 48="" l="49" Q="\'+s.Q+\'" />\',g,f)};7 2F(){5((4.j.N-1)>4.h){9 d=4.j[4.h+1].d;5(d.1c(1y)){1A=1t 1o();1A.Q=d}}5(4.h>0){9 d=4.j[4.h-1].d;5(d.1c(1y)){1A=1t 1o();1A.Q=d}}};7 1k(1j,g,f){16=F;9 L=4.2Y;5(P){$("#q")[0].1E.2u("f");$("#q")[0].1E.2u("g")}5(L>0){g+=L*2;f+=L*2;$("#q").n({\'v\':L+\'z\',\'2E\':L+\'z\',\'2i\':L+\'z\',\'y\':L+\'z\',\'g\':\'2B\',\'f\':\'2B\'});5(P){$("#q")[0].1E.2C(\'f\',\'(B.2D.4j - 20)\');$("#q")[0].1E.2C(\'g\',\'(B.2D.3S - 20)\')}}t{$("#q").n({\'v\':0,\'2E\':0,\'2i\':0,\'y\':0,\'g\':\'2z%\',\'f\':\'2z%\'})}5($("#k").1u(":19")&&g==$("#k").g()&&f==$("#k").f()){$("#q").1Z("2N",7(){$("#q").1C().1F($(1j)).21("1s",7(){1g()})});u}9 w=$.b.c.1n();9 2v=(g+36)>w[0]?w[2]:(w[2]+C.T((w[0]-g-36)/2));9 2w=(f+1z)>w[1]?w[3]:(w[3]+C.T((w[1]-f-1z)/2));9 K={\'y\':2v,\'v\':2w,\'g\':g+\'z\',\'f\':f+\'z\'};5($("#k").1u(":19")){$("#q").1Z("1s",7(){$("#q").1C();$("#k").24(K,4.2X,4.2T,7(){$("#q").1F($(1j)).21("1s",7(){1g()})})})}t{5(4.1W>0&&4.j[4.h].1a!==1L){$("#q").1C().1F($(1j));9 M=4.j[4.h].1a;9 15=$.b.c.1R(M);$("#k").n({\'y\':(15.y-18)+\'z\',\'v\':(15.v-18)+\'z\',\'g\':$(M).g(),\'f\':$(M).f()});5(4.1X){K.25=\'J\'}$("#k").24(K,4.1W,4.2W,7(){1g()})}t{$("#q").S().1C().1F($(1j)).J();$("#k").n(K).21("1s",7(){1g()})}}};7 2y(){5(4.h!=0){$("#1e, #2O").x().14("R",7(e){e.2x();4.h--;1d();u D});$("#1e").J()}5(4.h!=(4.j.N-1)){$("#1f, #2M").x().14("R",7(e){e.2x();4.h++;1d();u D});$("#1f").J()}};7 1g(){2y();2F();$(W).1B(7(e){5(e.29==27){$.b.c.1l();$(W).x("1B")}t 5(e.29==37&&4.h!=0){4.h--;1d();$(W).x("1B")}t 5(e.29==39&&4.h!=(4.j.N-1)){4.h++;1d();$(W).x("1B")}});5(4.1r){$(11).14("1N 1T",$.b.c.2g)}t{$("6#k").n("1b","2e")}5(4.2b){$("#22").R($.b.c.1l)}$("#1i, #V").14("R",$.b.c.1l);$("#V").J();5(4.j[4.h].X!==1L&&4.j[4.h].X.N>0){$(\'#G 6\').o(4.j[4.h].X);$(\'#G\').J()}5(4.23&&P){$(\'1U, 1Q, 1P\',$(\'#q\')).n(\'1S\',\'19\')}5($.1O(4.2a)){4.2a()}16=D};u B.x(\'R\').R(2h)};$.b.c.2g=7(){9 m=$.b.c.1n();$("#k").n(\'y\',(($("#k").g()+36)>m[0]?m[2]:m[2]+C.T((m[0]-$("#k").g()-36)/2)));$("#k").n(\'v\',(($("#k").f()+1z)>m[1]?m[3]:m[3]+C.T((m[1]-$("#k").f()-1z)/2)))};$.b.c.1h=7(H,2A){u 2f($.3I(H.3u?H[0]:H,2A,F))||0};$.b.c.1R=7(H){9 m=H.4g();m.v+=$.b.c.1h(H,\'3k\');m.v+=$.b.c.1h(H,\'3J\');m.y+=$.b.c.1h(H,\'3H\');m.y+=$.b.c.1h(H,\'3D\');u m};$.b.c.38=7(){$(".I").S();$("#35").J()};$.b.c.1n=7(){u[$(11).g(),$(11).f(),$(W).3i(),$(W).3p()]};$.b.c.2G=7(){5(!$("#I").1u(\':19\')){33(1w);u}$("#I > 6").n(\'v\',(1v*-40)+\'z\');1v=(1v+1)%12};$.b.c.34=7(){33(1w);9 m=$.b.c.1n();$("#I").n({\'y\':((m[0]-40)/2+m[2]),\'v\':((m[1]-40)/2+m[3])}).J();$("#I").14(\'R\',$.b.c.1l);1w=3Q($.b.c.2G,3X)};$.b.c.1l=7(){16=F;$(s).x();$("#1i, #V").x();5(4.2b){$("#22").x()}$("#V, .I, #1e, #1f, #G").S();5(4.1r){$(11).x("1N 1T")}1q=7(){$("#1i, #k").S();5(4.1r){$(11).x("1N 1T")}5(P){$(\'1U, 1Q, 1P\').n(\'1S\',\'19\')}5($.1O(4.1V)){4.1V()}16=D};5($("#k").1u(":19")!==D){5(4.26>0&&4.j[4.h].1a!==1L){9 M=4.j[4.h].1a;9 15=$.b.c.1R(M);9 K={\'y\':(15.y-18)+\'z\',\'v\':(15.v-18)+\'z\',\'g\':$(M).g(),\'f\':$(M).f()};5(4.1X){K.25=\'S\'}$("#k").31(D,F).24(K,4.26,4.2S,1q)}t{$("#k").31(D,F).1Z("2N",1q)}}t{1q()}u D};$.b.c.2V=7(){9 o=\'\';o+=\'<6 l="1i"></6>\';o+=\'<6 l="22">\';o+=\'<6 p="I" l="I"><6></6></6>\';o+=\'<6 l="k">\';o+=\'<6 l="2I">\';o+=\'<6 l="V"></6>\';o+=\'<6 l="E"><6 p="E 44"></6><6 p="E 43"></6><6 p="E 42"></6><6 p="E 3V"></6><6 p="E 3U"></6><6 p="E 3O"></6><6 p="E 3M"></6><6 p="E 3P"></6></6>\';o+=\'<a d="2P:;" l="1e"><1p p="1Y" l="2O"></1p></a><a d="2P:;" l="1f"><1p p="1Y" l="2M"></1p></a>\';o+=\'<6 l="q"></6>\';o+=\'<6 l="G"></6>\';o+=\'</6>\';o+=\'</6>\';o+=\'</6>\';$(o).2H("46");$(\'<32 4i="0" 4h="0" 4k="0"><2L><13 p="G" l="4l"></13><13 p="G" l="4o"><6></6></13><13 p="G" l="4n"></13></2L></32>\').2H(\'#G\');5(P){$("#2I").47(\'<17 p="4a" 4e="2J" 2K="0"></17>\');$("#V, .E, .G, .1Y").2Q()}};$.b.c.2R={2Y:10,30:F,1X:D,1W:0,26:0,2X:3G,2W:\'28\',2S:\'28\',2T:\'28\',1I:3B,1x:3v,23:F,2U:0.3,2b:F,1r:F,j:[],2c:2d,2a:2d,1V:2d};$(W).3y(7(){$.b.c.2V()})})(4f);',62,274,'||||opts|if|div|function||var||fn|fancybox|href||height|width|itemCurrent||itemArray|fancy_outer|id|pos|css|html|class|fancy_content||imagePreloader|else|return|top||unbind|left|px|elem|this|Math|false|fancy_bg|true|fancy_title|el|fancy_loading|show|itemOpts|pad|orig_item|length|item|isIE|src|click|hide|round|target|fancy_close|document|title|settings|subGroup||window||td|bind|orig_pos|busy|iframe||visible|orig|position|match|_change_item|fancy_left|fancy_right|_finish|getNumeric|fancy_overlay|value|_set_content|close|img|getViewport|Image|span|__cleanup|centerOnScroll|normal|new|is|loadingFrame|loadingTimer|frameHeight|imageRegExp|50|objNext|keydown|empty|first|style|append|children|rel|frameWidth|image|_proceed_image|undefined|min|resize|isFunction|select|object|getPosition|visibility|scroll|embed|callbackOnClose|zoomSpeedIn|zoomOpacity|fancy_ico|fadeOut||fadeIn|fancy_wrap|overlayShow|animate|opacity|zoomSpeedOut||swing|keyCode|callbackOnShow|hideOnContentClick|callbackOnStart|null|absolute|parseInt|scrollBox|_initialize|bottom|push|substr|indexOf|data|relative|filter|png|browser|_start|matchedGroup|each|removeExpression|itemLeft|itemTop|stopPropagation|_set_navigation|100|prop|auto|setExpression|parentNode|right|_preload_neighbor_images|animateLoading|appendTo|fancy_inner|no|frameborder|tr|fancy_right_ico|fast|fancy_left_ico|javascript|fixPNG|defaults|easingOut|easingChange|overlayOpacity|build|easingIn|zoomSpeedChange|padding|backgroundImage|imageScale|stop|table|clearInterval|showLoading|fancy_frame|||showIframe||complete|load|bmp|jpeg|fancy_div|split|replace|enabled|scrollLeft|className|paddingTop|random|1000|fancy_iframe|name|scrollTop|onload|location|hidden|RegExp|jquery|355|url|extend|ready|version|jpg|425|for|borderLeftWidth|hspace|while|300|paddingLeft|curCSS|borderTopWidth|msie|fancy_ajax|fancy_bg_w|scale|fancy_bg_sw|fancy_bg_nw|setInterval|DXImageTransform|clientWidth|sizingMethod|fancy_bg_s|fancy_bg_se|progid|66|gif|repeat||backgroundRepeat|fancy_bg_e|fancy_bg_ne|fancy_bg_n|none|body|prepend|alt|fancy_img|fancy_bigIframe|60|crop|AlphaImageLoader|scrolling|jQuery|offset|cellpadding|cellspacing|clientHeight|border|fancy_title_left|Microsoft|fancy_title_right|fancy_title_main|get'.split('|'),0,{}))
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_n.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_n.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_progress.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_progress.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/closelabel.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/closelabel.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/close.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/close.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_s.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_s.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_ne.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_ne.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_w.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/fancybox/fancy_shadow_w.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/jquery/plugins/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/plugins/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/plugins/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 985 2009-05-27 04:46:39Z Ruebenwurzel $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/jquery-metadata.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/jquery-metadata.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/jquery-metadata.js	(revision 1610)
@@ -0,0 +1,13 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.metadata.js 3620 2007-10-10 20:55:38Z pmclanahan $
+ *
+ */
+(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)return;var e=elem.getElementsByTagName(settings.name);if(e.length)data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)data=attr;}if(data.indexOf('{')<0)data="{"+data+"}";data=eval("("+data+")");$.data(elem,settings.single,data);return data;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/jquery-elastic.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/jquery-elastic.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/jquery-elastic.js	(revision 1610)
@@ -0,0 +1 @@
+(function($){$.fn.extend({elastic:function(){var g=new Array("paddingTop","paddingRight","paddingBottom","paddingLeft","fontSize","lineHeight","fontFamily","width");return this.each(function(){if(this.type=="textarea"){var b=$(this);var c=parseInt(b.css("lineHeight"))*2||parseInt(b.css("fontSize"))*2;var d=parseInt(b.css("height"))||c;var e=0;var f=null;function update(){if(!f){f=$("<div />").css({"visibility":"hidden","position":"absolute","overflow-x":"hidden"}).appendTo("body");$.each(g,function(){f.css(this,b.css(this))})}var a=b.val().replace(/<|>/g," ").replace(/\n/g,"<br />");if(f.text()!=a){f.html(a);e=(f.height()+c>d)?f.height()+c:d;if(e!=b.height()){b.animate({"height":e},500)}}}b.css({overflow:"hidden",display:"block"}).bind("focus",function(){self.periodicalUpdater=window.setInterval(function(){update()},400)}).bind("blur",function(){clearInterval(self.periodicalUpdater)});update()}})}})})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/jquery/toggle_zip.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/toggle_zip.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/toggle_zip.js	(revision 1610)
@@ -0,0 +1,14 @@
+function toggle() {
+	var check = document.getElementById("file2");
+	if (check.style.visibility == "visible") {
+		for (i=2; i<=10; i++) {
+			document.getElementById("file" + i).style.visibility = "hidden";
+		}
+		document.getElementById("delzip").style.display = "inline";
+	} else {
+		for (i=2; i<=10; i++) {
+			document.getElementById("file" + i).style.visibility = "visible";
+		}
+		document.getElementById("delzip").style.display = "none";
+	}
+}
Index: tags/2.8.3/wb/templates/wb_theme/jquery/webkit-focusfix.js
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/jquery/webkit-focusfix.js	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/jquery/webkit-focusfix.js	(revision 1610)
@@ -0,0 +1,40 @@
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Workaround for Webkit browser to fix focus problems when using skiplinks
+ * (de) Workaround für Webkit-Browser, um den Focus zu korrigieren, bei Verwendung von Skiplinks
+ *
+ * @note			inspired by Paul Ratcliffe's article 
+ *					http://www.communis.co.uk/blog/2009-06-02-skip-links-chrome-safari-and-added-wai-aria
+ *
+ * @copyright       Copyright 2005-2009, Dirk Jesse
+ * @license         CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ *                  YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link            http://www.yaml.de
+ * @package         yaml
+ * @version         3.2
+ * @revision        $Revision: 430 $
+ * @lastmodified    $Date: 2009-10-27 21:15:57 +0100 (Di, 27. Okt 2009) $
+ */
+ 
+var is_webkit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
+
+if(is_webkit) 
+{
+	var i;
+	var skiplinks = []
+	
+	if ( document.getElementsByClassName !== undefined) {
+		skiplinks = document.getElementsByClassName('skip');
+
+		for (i=0; i<skiplinks.length; i++) {
+			var target = skiplinks[i].href.substr(skiplinks[i].href.indexOf('#')+1);
+			var targetElement = document.getElementById(target);
+	
+			targetElement.href = '#'+target;
+			targetElement.setAttribute("tabindex", "0");
+	
+			skiplinks[i].setAttribute("onclick", "document.getElementById('"+target+"').focus();");
+		}
+	}	
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/wb_theme/fancybox.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/fancybox.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/fancybox.css	(revision 1610)
@@ -0,0 +1,92 @@
+div#fancy_overlay {
+	position:absolute;
+	top: 0;
+	left: 0;
+	z-index: 90;
+	width: 100%;
+	background-color: #333;
+}
+
+div#fancy_loading {
+	position: absolute;
+	height: 40px;
+	width: 40px;
+	cursor: pointer;
+	display: none;
+	overflow: hidden;
+	background: transparent;
+	z-index: 100;
+}
+
+div#fancy_loading div {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 40px;
+	height: 480px;
+	background: transparent url(images/fancy_progress.png) no-repeat;
+}
+
+div#fancy_close {
+/*
+	position: absolute;
+	top: -12px;
+	right: -12px;
+	height: 30px;
+	width: 30px;
+	background: transparent url(fancy_closebox.png) ;
+	cursor: pointer;
+	z-index: 100;
+	display: none;
+*/
+}
+
+div#fancy_content {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0; 
+	margin: 0;
+	z-index: 96;
+}
+
+#fancy_frame {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	display: none;
+}
+
+img#fancy_img {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	border:0; 
+	padding: 0; 
+	margin: 0;
+	z-index: 92;
+}
+
+div#fancy_outer {
+	position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 90;
+    padding: 18px 18px 58px 18px;
+    margin: 0;
+    overflow: hidden;
+    background: transparent;
+    display: none;
+}
+
+div#fancy_inner {
+	position: relative;
+	width:100%;
+	height:100%;
+	border: 1px solid #444;
+	background: #FFF;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/fancybox.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/media.css
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/media.css	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/media.css	(revision 1610)
@@ -0,0 +1,51 @@
+body,td,th,input,textarea {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+hr {
+	margin: 0px;
+	color: #003366;
+	height: 1px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: none;
+	color: #336699;
+}
+input:focus, select:focus, textarea:focus {
+	background: #F1F8FD;
+}
+.content {
+	width: 100%;
+	height: 100px;
+}
+.rename {
+    background: #fff url(images/bgtitle.png) ;
+    background-repeat:repeat-x;
+	padding: 20px;
+}
+.hide {
+	display: none;
+}
+
+table.browse_header {
+	background-color: #EEE; 
+	border-bottom: 1px solid #35373a;
+}
+
+th.headline {
+	font-weight: normal;
+	font-size: 10px;
+	border-bottom: 1px solid #35373a;
+}
+
+
+

Property changes on: tags/2.8.3/wb/templates/wb_theme/media.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/icons/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/icons/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/templates.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/templates.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/pages.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/pages.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/settings.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/settings.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/users.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/users.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/preferences.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/preferences.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/access.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/access.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/languages.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/languages.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/addons.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/addons.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/modules.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/modules.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/admintools.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/admintools.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/view.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/view.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/groups.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/groups.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/icons/media.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/wb_theme/icons/media.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/index.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../index.php'));
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/wb_theme/info.php
===================================================================
--- tags/2.8.3/wb/templates/wb_theme/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/wb_theme/info.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory			= 'wb_theme';
+$template_name				= 'wb_theme';
+$template_function			= 'theme';
+$template_version			= '2.80';
+$template_platform			= '2.8';
+$template_author			= 'Johannes Tassilo Gruber';
+$template_license			= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description		= 'Default backend theme for Website Baker 2.8.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/wb_theme/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/theme.css
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/theme.css	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/theme.css	(revision 1610)
@@ -0,0 +1,159 @@
+html { overflow :-moz-scrollbars-vertical; /* Force firefox to always show room for a vertical scrollbar */ }
+body,td,th,input,textarea { font-family :verdana,arial,helvetica,sans-serif; font-size :11px; color :#333333; }
+body { background :url(images/background.jpg) #f9f9f9 0 0 repeat-x; margin :0; text-align :center; }
+img { border :0px; }
+#admin_header { text-align :center; width :900px; height :105px; margin :0 auto; padding :10px 0 0 0; }
+#admin_header a#website_title { display :block; text-align :left; font-size :14px; font-weight :bold; color :#ffffff; text-transform :uppercase; text-decoration :none; }
+#topmenu { float :right; text-align :right; color :#ffffff; }
+#topmenu a { font-size :11px; color :#ffffff; text-decoration :underline; margin :0 5px; }
+#topmenu .version { font-size :11px; color :#7cacda; padding :0 10px 0 0; }
+#header_top { height :78px; }
+h1 { text-align :left; font-size :15px; color :#ffffff; text-transform :uppercase; }
+h2 { text-align :left; font-size :18px; color :#000000; margin :5px 0; font-family :arial,sans-serif; letter-spacing :-1px; font-weight :normal; }
+h3 { text-align :left; font-size :14px; color :#000000; margin :5px 0; }
+a:link, a:visited, a:active { color :#28609b; text-decoration :none; }
+a:hover { text-decoration :underline; color :#28609b; }
+.menu { margin :0 auto; padding :0; text-align :center; width :900px; }
+.menu ul { list-style-type :none; margin :0; padding :0; }
+.menu li { display :inline; margin :0 2px 0 0; padding :0; font-weight :bold; border-bottom :3px solid #c9c9c9; }
+.menu a { float :left; color :#ffffff !important; background :url(images/tabl.jpg) #28609b no-repeat left top; margin :0 5px 0 0; padding :0 0 0 3px; text-decoration :none; border-bottom :3px solid #cacaca; }
+.menu a span { display :block; background :url(images/tabr.jpg) #28609b no-repeat right top; padding :6px 9px 6px 6px; }
+.menu a:hover, .menu a:hover span { background-color :#28609b; text-decoration :none; }
+.menu .current a, .menu a:hover { border-bottom :3px solid #d25e59; }
+#content_container { text-align :center; width :900px; clear :both; margin :0 auto; }
+.content { margin :0; padding :20px 0; width :900px; text-align :left; vertical-align :top; }
+hr { margin :15px 0; color :#003366; height :1px; }
+.hide { display :none; }
+.note { color :#666666; font-size :11px; }
+.center { text-align :center; }
+form { margin :0; }
+label { cursor :pointer; }
+input:focus, select:focus, textarea:focus { background :#f1f8fd; }
+/* WB2.8 STYLES */
+.img_noborder img { border :0; }
+iframe { border :1px solid #35373a; }
+div.box { font-size :11px; width :100%; text-align :right; margin :-10px 0 0 0; }
+.section { margin-top :10px; padding :0; border :1px solid #999999; height :75px; width :100%; background-color :#fdfdfd; }
+.graphic { width :50px; height :50px; border :4px solid #fdfdfd; padding-left :3px; }
+.graphic img { vertical-align :middle; background-color :#ffffff; padding :4px; border :1px solid #d0d0d0; }
+.title { text-align :left; padding :4px 5px 0px 3px; font-weight :bold; font-size :14px; margin-bottom :5px; }
+span.title { display :block; }
+.description { text-align :left; padding :4px 0px 0 0px; }
+.note { color :#666666; font-size :11px; }
+.bold { font-weight :bold; }
+.submit, .cancel { width :100px; margin-top :5px; }
+.form_submit { width :100%; }
+.form_submit .left { text-align :left; }
+.form_submit .right { text-align :right; }
+.input_small { width :20px; }
+.input_narrow { width :100px; }
+.input_normal { width :120px; }
+.input_medium { width :150px; }
+.input_wide { width :200px; }
+.input_large { width :300px; }
+.input_full { width :100%; }
+select option.disabled { color :#aaaaaa; }
+.jsadmin_drag img { margin-top :2px; vertical-align :top; cursor :pointer; }
+.jsadmin_drag img:hover { }
+.modify_link { padding :4px 0 0 7px; }
+.settings_table td { vertical-align :top; text-align :left; padding :5px; }
+.setting_name { width :10%; min-width :180px; }
+.setting_value { width :90%; }
+.setting_value_permissions { width :50%; min-width :400px; }
+.setting_value input, .setting_value select, .setting_value textarea { width :100%; }
+.setting_value textarea { height :50px; }
+#admintools ul { padding :0; margin :0; }
+#admintools li { list-style-type :none; display :inline; float :left; width :48%; margin :0 10px 0 0; }
+.value_input input, .value_input text, .value_input select { width :100%; }
+#file_mode input, #dir_mode input { width :12px; height :12px; }
+#hide2 { display :none; }
+.pages_list { font-weight :bold; margin :10px auto; }
+.pages_list .icon_col td img { display :block; border-style :none; float :left; padding-right :7px; }
+.pages_list table { width :900px; }
+.pages_list ul { margin :0; font-weight :normal; padding :0; }
+.pages_list ul li { list-style-type :none; margin :2px 0; }
+table.pages_view { width :900px; }
+table.pages_view tr, tr.sectionrow { background :#f0f0f0; line-height :2.2em; }
+table.pages_view tr:hover, tr.sectionrow:hover { background :#eaeff6; }
+tr.sectionrow { padding :0 10px; }
+tr.sectionrow td { border-top :3px solid #f9f9f9; }
+.page_list { display :none; }
+.page_list_show li { display :block; }
+img.page_list_rights { border :none; float :left; margin :0; vertical-align :middle; padding :2px; }
+.sections_list { font-weight :bold; padding-left :10px; }
+.sections_list table { width :900px; }
+.header_list_type { text-align :left; }
+.header_list_block { text-align :left; width :180px; }
+.header_list_pubdate_start { text-align :left; width :200px; }
+.header_list_pubdate_end { text-align :left; width :200px; }
+.header_list_sections_actions { text-align :left; width :30px; }
+.header_list_section_id { width :30px; text-align :right; }
+.list_section_id { width :30px; text-align :right; }
+.list_pubdate_start { text-align :left; width :200px; }
+.list_pubdate_end { text-align :left; width :200px; }
+.header_list_menu_title { text-align :left; padding-left :30px; }
+.header_list_page_title { width :334px; text-align :left; }
+.header_list_page_id { width :30px; text-align :left; }
+.header_list_actions { width :178px; text-align :left; }
+.list_menu_title { text-align :left; }
+.list_page_title { width :300px; text-align :left; }
+.list_page_id { width :50px; text-align :right; padding-right :15px; }
+.list_actions { width :25px; text-align :left; }
+.value_page_code { color :#006400; font-weight :bold; width :240px; }
+.list_page_code { width :240px; }
+.list_page_language { width :240px; }
+#multi_lingual { font-weight :bold; }
+.right{ text-align :right; }
+.left{ text-align :left; }
+/* set div layers in dead tables */
+.subcolumns { width :100%; overflow :hidden; margin :10px 0; }
+.subcolumns_oldgecko { width :100%; float :left; margin :10px 0; }
+.c10l, .c20l, .c25l, .c33l, .c40l, .c38l, .c50l, .c60l, .c62l, .c66l, .c75l, .c80l { float :left; }
+.c10r, .c20r, .c25r, .c33r, .c40r, .c38r, .c50r, .c60r, .c66r, .c62r, .c75r, .c80r { float :right; margin-left :-5px; }
+.c10l, .c10r { width :10%; }
+.c20l, .c20r { width :20%; line-height :2em; }
+.c40l, .c40r { width :40%; }
+.c60l, .c60r { width :60%; height :2em; }
+.c25l, .c25r { width :28%; }
+.c33l, .c33r { width :33.333%; }
+.c50l, .c50r { width :50%; }
+.c66l, .c66r { width :66.666%; }
+.c38l, .c38r { width :38.2%; }
+.c62l, .c62r { width :61.8%; }
+.subc { padding :0 0.5em; }
+.subcl { padding :0 1em 0 0; }
+.subcr { padding :0 0 0 1em; }
+.c80l, .c80r, .c90l, .c90r { width :80%; }
+.c75l, .c75r, .c80l, .c80r { width :75%; }
+.info { padding :10px; margin-bottom :0.5em; background :#f8f8f8; color :#666666; font-size :11px; }
+.note { border :2px #448844 solid; padding :10px; margin :10px auto; background :#eeffee; color :#004400; }
+.important { border :2px #888844 solid; padding :10px; margin-bottom :1em; background :#ffffee; color :#444400; }
+.warning { border :2px #884444 solid; padding :10px; margin :1em auto; background :#ffeeee; color :#440000; }
+.row_0 { background-color :transparent; }
+.row_1 { background-color :#ccddee; }
+div.content_box { margin :0em auto; }
+div.content_box form { width :98%; }
+#language,
+#timezone,
+#date_format,
+#time_format,
+#display_name,
+#username,
+#email,
+#new_password_1,
+#new_password_2,
+#current_password { width :118%; }
+#submit,
+#reset { max-width :100px; }
+div#username { height :17px; width :118%; text-align :left; font-weight :bold; margin :0; }
+.save_section { margin :20px auto 5px auto; }
+.section-info { margin :1.5em 0; }
+.rounded { border-radius :10px; -khtml-border-radius :10px; -webkit-border-radius :10px; -moz-border-radius :10px; }
+.bigger { font-size :150%; }
+.strong { font-weight :bold; }
+.msg-box { background :#e5ffe6; border :0.2em #009900 solid; color :#336600; margin-bottom :1em; padding :0.63em; text-align :center; }
+.error-box { background :#ffeeee; border :0.2em #884444 solid; color :#440000; margin-bottom :1em; padding :0.63em; text-align :center; }
+.msg-box p,
+.error-box p { font-size :120%; }
+select > option.user-inactive { color :#990000; }
+button.status { cursor :pointer; border-radius :5px; -khtml-border-radius :5px; -webkit-border-radius :5px; -moz-border-radius :5px; }

Property changes on: tags/2.8.3/wb/templates/argos_theme/theme.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/templates/header.htt
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/templates/header.htt	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/templates/header.htt	(revision 1610)
@@ -0,0 +1,59 @@
+<!-- BEGIN header_block -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>{WEBSITE_TITLE}&raquo;{TEXT_ADMINISTRATION}-{SECTION_NAME}</title>
+<meta http-equiv="content-type" content="text/html; charset={CHARSET}" />
+<meta http-equiv="content-language" content="{LANGUAGE}" />
+<meta name="description" content="{TEXT_ADMINISTRATION}" />
+<meta name="keywords" content="{TEXT_ADMINISTRATION}" />
+<meta name="author" content="WebsiteBaker Org e.V." />
+<meta http-equiv="Content-Encoding" content="gzip" />
+<meta http-equiv="Accept-Encoding" content="gzip, deflate" />
+<link href="{THEME_URL}/theme.css" rel="stylesheet" type="text/css" />
+{BACKEND_MODULE_CSS}
+<script type="text/javascript">
+var WB_URL = '{WB_URL}';
+var THEME_URL = '{THEME_URL}';
+var ADMIN_URL = '{ADMIN_URL}';
+</script>
+<script src="{WB_URL}/include/jquery/jquery-min.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-insert.js" type="text/javascript"></script>
+<script src="{WB_URL}/include/jquery/jquery-include.js" type="text/javascript"></script>
+<!--[if lt IE 7]><script type="text/javascript" src="{WB_URL}/include/jquery/plugins/jquery-pngFix.js"></script><![endif]-->
+<script src="{THEME_URL}/jquery/jquery-plugins.js" type="text/javascript"></script>
+<script type="text/javascript">
+function confirm_link(message, url) {
+	if(confirm(message)) location.href = url;
+}
+</script>
+{BACKEND_MODULE_JS}
+</head>
+<body>
+<div id="admin_header">
+  <div id="header_top">
+    <div id="topmenu"> <a href="{ADMIN_URL}" title="{TITLE_START}">Home</a>| <a href="{URL_VIEW}" target="_blank" title="{TITLE_VIEW}">{TITLE_VIEW}</a>| <a href="{ADMIN_URL}/logout/" title="{TITLE_LOGOUT}">{TITLE_LOGOUT}</a>
+	  <br />
+      <br />
+      <span class="version">CMS Version {VERSION} {SP}</span><br/>
+      <span class="version">Revision {REVISION}</span><br/>
+      <span class="version">Admin version 1.6</span>
+	 </div>
+    <a href="{ADMIN_URL}" title="{TITLE_START}" id="website_title">
+    {WEBSITE_TITLE} - {TEXT_ADMINISTRATION}
+    <!-- <img src="{THEME_URL}/images/logo.png" border="0" alt="Logo" /> -->
+    </a> 
+	</div>
+  <div class="menu">
+    <ul>
+      <!-- BEGIN linkBlock -->
+      <li class="{CLASS}"><a href="{LINK}" target="{TARGET}"><span>{TITLE}</span></a></li>
+      <!-- END linkBlock -->
+    </ul>
+  </div>
+</div>
+<div id="content_container">
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="900" align="center">
+<tr>
+  <td class="content">
+<!-- END header_block -->
Index: tags/2.8.3/wb/templates/argos_theme/templates/footer.htt
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/templates/footer.htt	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/templates/footer.htt	(revision 1610)
@@ -0,0 +1,21 @@
+<!-- BEGIN footer_block -->
+
+</td>
+</tr>
+</table>
+
+<table summary="" cellpadding="0" cellspacing="0" border="0" width="100%" style="padding: 10px 0;">
+  <tr>
+    <td style="font-size:12px;text-align:center;">
+      <!-- Please note: the below reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+      <a href="http://www.websitebaker2.org/" title="external">WebsiteBaker</a> is released under the
+      <a href="http://www.gnu.org/licenses/gpl.html" title="WebsiteBaker is released under the GNU General Public License">GNU General Public License</a>
+      <!-- Please note: the above reference to the GNU GPL should not be removed, as it provides a link for users to read about warranty, etc. -->
+    </td>
+  </tr>
+</table>
+</div>
+{BACKEND_BODY_MODULE_JS}
+</body>
+</html>
+<!-- END footer_block -->
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/templates/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/templates/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/templates/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/templates/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/templates/warning.html
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/templates/warning.html	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/templates/warning.html	(revision 1610)
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<title>Maximum Invalid Login Attemps Exceeded</title>
+<style type="text/css"><!--
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	margin: 0px;
+  background: #A8BCCB url(../images/background.png) ;
+  background-repeat:repeat-x;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: underline;
+	color: #336699;
+}
+h1 {
+	text-align: center;
+	font-size: 18px;
+	color: #000;
+	text-transform: uppercase;
+}
+hr {
+	height: 1px;
+	color: #336699;
+	background-color: #336699;
+	border: 0;
+}
+div#message {
+	text-align: center;
+}
+--></style></head>
+<body>
+
+<div id='message'>
+	<h1>Excessive Invalid Logins</h1>
+	You have attempted to login too many times
+</div>
+
+</body>
+</html>
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/templates
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/templates	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/templates	(revision 1610)

Property changes on: tags/2.8.3/wb/templates/argos_theme/templates
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+backup
Index: tags/2.8.3/wb/templates/argos_theme/images/logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/background.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/background.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/user_red.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/user_red.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/user_delete.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/user_delete.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/user.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/user.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/pic_exist_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/pic_exist_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/fh.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/fh.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/fh10.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/fh10.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/mp3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/mp3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/aif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/aif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/ppt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/ppt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/html.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/html.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/doc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/doc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/gif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/gif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/xls.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/xls.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/asf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/asf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/ogg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/ogg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/vcd.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/vcd.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/txt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/txt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/tif.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/tif.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/rar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/rar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/cda.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/cda.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/tiff.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/tiff.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/css.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/css.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/csv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/csv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/wav.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/wav.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/blank_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/blank_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/unknown.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/unknown.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/swf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/swf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/fla.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/fla.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/zip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/zip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/tgz.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/tgz.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/wmv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/wmv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/pdf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/pdf.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/images/files/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/images/files/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/blank_16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/blank_16.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/avi.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/avi.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/jpg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/jpg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/gz.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/gz.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/mpg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/mpg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/png.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/png.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/jpeg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/jpeg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files/php.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files/php.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/files
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/images/files	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/images/files	(revision 1610)

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/files
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/1x1.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/1x1.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/none.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/none.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/images/flags/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/images/flags/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: wb_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file prevents directory listing.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Johannes Tassilo Gruber
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.80
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/fr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/fr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/nl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/nl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/ru.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/ru.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/da.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/da.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/de.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/de.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/hr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/hr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/pl.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/pl.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/pt.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/pt.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/en.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/en.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/et.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/et.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/fi.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/fi.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/no.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/no.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/ca.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/ca.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/cs.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/cs.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/se.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/se.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/sk.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/sk.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/hu.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/hu.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/lv.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/lv.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/es.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/es.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/it.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/it.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/flags/bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/flags/bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/blank_16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/gif

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/blank_16.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/gif
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/pic_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/pic_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/siteadd.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/siteadd.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/calendar_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/calendar_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/Image3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/Image3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/modify_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/modify_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/minus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/minus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/clock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/clock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/visible_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/visible_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/none_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/none_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/view_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/view_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/keys_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/keys_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/clock_red_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/clock_red_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/sections_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/sections_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/noclock_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/noclock_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/hidden_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/hidden_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/delete_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/delete_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/deleted_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/deleted_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/private_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/private_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/restore_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/restore_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/plus_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/plus_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/clock_del_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/clock_del_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/down_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/down_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/up_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/up_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/images/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/image.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/image.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/newfolder.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/newfolder.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/resize_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/resize_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/blank.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/blank.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/view.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/view.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/reload_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/reload_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/tabl.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/tabl.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/tabr.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/tabr.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/unzip.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/unzip.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/bgtitle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/bgtitle.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/file.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/file.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/background.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/background.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/visible_16_1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/visible_16_1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/up_folder_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/up_folder_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/images/edit_16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/images/edit_16.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/languages/NL.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/languages/NL.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Geavanceerde admin-template voor Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Instellingen alleen beschikbaar voor administrator';
+$TEXT['NO_SHOW_THUMBS'] = 'Thumbnails niet weergeven';
+$TEXT['TEXT_HEADER'] = 'Stel de maximale grootte voor \'resized\' afbeeldingen in per folder</b><br><small><i>(NB: werkt alleen bij nieuwe uploads)</i></small>';

Property changes on: tags/2.8.3/wb/templates/argos_theme/languages/NL.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/languages/EN.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/languages/EN.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Enhanced backend theme for Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Settings for administrator only';
+$TEXT['NO_SHOW_THUMBS'] = 'Hide thumbnails';
+$TEXT['TEXT_HEADER'] = 'Set maximum imagesize for a folder</b><br><small><i>(resizing on new uploads only)</i></small>';

Property changes on: tags/2.8.3/wb/templates/argos_theme/languages/EN.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/languages/FR.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/languages/FR.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Enhanced backend theme for Website Baker 2.8.';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'Seul l&apos;administrateur peut modifier ces r&eacute;glages';
+$TEXT['NO_SHOW_THUMBS'] = 'Cacher les vignettes';
+$TEXT['TEXT_HEADER'] = 'D&eacute;finir la taille des images par dossier</b><br><small><i>(Redimensionnement seulement lors d&apos;un nouvel upload)</i></small>';

Property changes on: tags/2.8.3/wb/templates/argos_theme/languages/FR.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/languages/DE.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/languages/DE.php	(revision 1610)
@@ -0,0 +1,33 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+//Modul Description
+$template_description 	= 'Ein erweitertes Backend-Theme f&uuml;r Websitebaker 2.8';
+
+//Texts
+$TEXT['ADMIN_ONLY'] = 'diese Optionen nur Administratoren zug&auml;nglich machen';
+$TEXT['NO_SHOW_THUMBS'] = 'Vorschaubilder verstecken';
+$TEXT['TEXT_HEADER'] = 'Maximale Bildergr&ouml;&szlig;e f&uuml;r Ordner festlegen</b><br><small><i>(&Auml;nderung nur beim Hochladen)</i></small>';
+

Property changes on: tags/2.8.3/wb/templates/argos_theme/languages/DE.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/languages/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/languages/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/languages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/jquery/jquery-plugins.js
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/jquery/jquery-plugins.js	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/jquery/jquery-plugins.js	(revision 1610)
@@ -0,0 +1,47 @@
+function include_file(filename, filetype) {
+
+	if(!filetype)
+		var filetype = 'js'; //js default filetype
+
+	var th = document.getElementsByTagName('head')[0];
+	var s = document.createElement((filetype == "js") ? 'script' : 'link');
+
+	s.setAttribute('type',(filetype == "js") ? 'text/javascript' : 'text/css');
+
+	if (filetype == "css")
+		s.setAttribute('rel','stylesheet');
+
+	s.setAttribute((filetype == "js") ? 'src' : 'href', filename);
+	th.appendChild(s);
+
+}
+
+function redirect_to_page (url, timer) {
+	setTimeout('self.location.href="'+url+'"', timer);
+}
+
+$(document).ready(function()
+{
+
+        if($(".jcalendar").length) {
+            $.insert(WB_URL+"/include/jscalendar/calendar-system.css");
+          }
+
+        if($(".jsadmin").length) {
+            $.insert(WB_URL+"/modules/jsadmin/backend.css");
+          }
+	//Add external link class to external links -
+	$('a[href^="http://"]').filter(function() {
+		//Compare the anchor tag's host name with location's host name
+	    return this.hostname && this.hostname !== location.hostname;
+	  }).addClass("external").attr("target", "_blank");
+
+	/* Add internal link class to external links -   */
+	$('a[href^="http://"]').filter(function() {
+		//Compare the anchor tag's host name with location's host name
+	    return this.hostname && this.hostname == location.hostname;
+	  }).addClass("internal");
+
+	$('form').attr('autocomplete', 'off');
+
+});
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/jquery/jquery-fixedheader.js
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/jquery/jquery-fixedheader.js	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/jquery/jquery-fixedheader.js	(revision 1610)
@@ -0,0 +1,141 @@
+/**
+ * Stupid Fixed Header 1.0.1 - jQuery plugins to create a fixed headers
+ * 
+ * Require: jQuery 1.2.6
+ * Author: Jacky See
+ * Blog: http://jacky.seezone.net
+ * email:  jackysee at gmail dot com
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+*/
+
+(function($){
+	
+	/* created fixed headers , require jquery dimenions plugins*/
+	$.fn.fixedHeader = function(o){
+		var s = {adjustWidth: $.fixedHeader.calcWidth};
+		if(o) $.extend(s,o);
+		
+		return this.each(function(){
+			var table = $(this); //table
+			var tId = this.id;
+			
+			var scrollBarWidth = $.fixedHeader.getScrollBarWidth();
+			var IE6 = $.browser.msie && $.browser.version == '6.0';
+			
+			//wrap a body container
+			var bodyContainer = table.wrap('<div></div>').parent()
+				.attr('id', tId + "_body_container")
+				.css({
+					width: s.width,
+					height: s.height,
+					overflow: 'auto'
+				});
+			
+			//Wrap with an overall container
+			var tableContainer = bodyContainer.wrap('<div></div>').parent()
+				.attr('id', tId + '_table_container')
+				.css('position','relative');
+
+			//clone the header
+			var headerContainer = $(document.createElement('div'))
+				.attr('id', tId + '_header_container')
+				.css({
+					width:  bodyContainer.innerWidth() - scrollBarWidth,
+					height: table.find('thead').outerHeight(), 
+					overflow: 'hidden',
+					top: 0, left:0
+				})
+				.prependTo(tableContainer);
+			
+			var headerTable = table.clone(true)
+				.find('tbody').remove().end()
+				.attr('id',tId + "_header")
+				.addClass(s.tableClass || table[0].className)
+				.css({
+					//width: $.browser.msie? table.outerWidth():table.width(), 
+					'table-layout':'fixed',
+					position:'absolute',
+					top:0, left:0
+				})
+				.append(table.find('thead').clone(true))
+				.appendTo(headerContainer);
+			
+			//sync header width
+			var headThs = headerTable.find('th');
+			table.find('th').each(function(i){
+				headThs.eq(i).css('width', s.adjustWidth(this));
+			})
+			
+			//sync scroll
+			var selects = IE6? table.find("select"): null;
+			bodyContainer.scroll(function(){
+				if(IE6 && selects.size()>0){
+					selects.each(function(i){
+						this.style.visibility =
+							($(this).offset().top - bodyContainer.offset().top) <= table.find("thead").outerHeight() + 10
+							? 'hidden':'visible';
+					});
+				}
+				headerTable.css({
+					left: '-' + $(this).scrollLeft() + 'px'
+				});
+			})
+			
+			//Move it down
+			headerContainer.css({
+				'position': 'absolute',
+				'top': 0
+			});
+		});
+	}
+	
+	$.fixedHeader = {
+		calcWidth: function(th){
+			var w = $(th).width();
+			var paddingLeft = $.fixedHeader.getComputedStyleInPx(th,'paddingLeft');
+			var paddingRight = $.fixedHeader.getComputedStyleInPx(th,'paddingRight');
+			var borderWidth = $.fixedHeader.getComputedStyleInPx(th,'borderRightWidth');			
+			if($.browser.msie) w = w+borderWidth;
+			if($.browser.opera) w = w+borderWidth;
+			if($.browser.safari) w = w+paddingLeft+paddingRight+borderWidth*2;
+			if($.browser.mozilla && parseFloat($.browser.version) <= 1.8) w=w+borderWidth; //FF2 still got a border-left missing problem, this is the best I can do.
+			return w;
+		},
+		getComputedStyleInPx: function(elem,style){
+			var computedStyle = (typeof elem.currentStyle != 'undefined')
+				?elem.currentStyle
+				:document.defaultView.getComputedStyle(elem, null);
+			var val = computedStyle[style];
+			val = val? parseInt(val.replace("px","")):0;
+			return (!val || val == 'NaN')?0:val;
+		},
+		getScrollBarWidth: function() { //calculate or get from global the scroll bar width
+			if(!$.fixedHeader.scrollBarWidth){ 
+				var inner = $(document.createElement('p')).css({width:'100%',height:'100%'});
+				var outer = $(document.createElement('div'))
+					.css({
+						position:'absolute',
+						top: '0px',
+						left: '0px',
+						visibility: 'hidden',
+						width: '200px',
+						height: '150px',
+						overflow: 'hidden'
+					})
+					.append(inner)
+					.appendTo(document.body);
+				
+				var w1 = inner[0].offsetWidth;
+				outer[0].style.overflow = 'scroll';
+				var w2 = inner[0].offsetWidth;
+				if (w1 == w2) w2 = outer[0].clientWidth;
+				document.body.removeChild (outer[0]);
+				$.fixedHeader.scrollBarWidth = (w1 - w2);
+			}
+			return $.fixedHeader.scrollBarWidth;
+		}
+	}
+	
+})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/jquery/jquery-metadata.js
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/jquery/jquery-metadata.js	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/jquery/jquery-metadata.js	(revision 1610)
@@ -0,0 +1,13 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.metadata.js 3620 2007-10-10 20:55:38Z pmclanahan $
+ *
+ */
+(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)return;var e=elem.getElementsByTagName(settings.name);if(e.length)data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)data=attr;}if(data.indexOf('{')<0)data="{"+data+"}";data=eval("("+data+")");$.data(elem,settings.single,data);return data;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/jquery/toggle_zip.js
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/jquery/toggle_zip.js	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/jquery/toggle_zip.js	(revision 1610)
@@ -0,0 +1,14 @@
+function toggle() {
+	var check = document.getElementById("file2");
+	if (check.style.visibility == "visible") {
+		for (i=2; i<=10; i++) {
+			document.getElementById("file" + i).style.visibility = "hidden";
+		}
+		document.getElementById("delzip").style.display = "inline";
+	} else {
+		for (i=2; i<=10; i++) {
+			document.getElementById("file" + i).style.visibility = "visible";
+		}
+		document.getElementById("delzip").style.display = "none";
+	}
+}
Index: tags/2.8.3/wb/templates/argos_theme/jquery/webkit-focusfix.js
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/jquery/webkit-focusfix.js	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/jquery/webkit-focusfix.js	(revision 1610)
@@ -0,0 +1,40 @@
+/**
+ * "Yet Another Multicolumn Layout" - (X)HTML/CSS Framework
+ *
+ * (en) Workaround for Webkit browser to fix focus problems when using skiplinks
+ * (de) Workaround für Webkit-Browser, um den Focus zu korrigieren, bei Verwendung von Skiplinks
+ *
+ * @note			inspired by Paul Ratcliffe's article 
+ *					http://www.communis.co.uk/blog/2009-06-02-skip-links-chrome-safari-and-added-wai-aria
+ *
+ * @copyright       Copyright 2005-2009, Dirk Jesse
+ * @license         CC-A 2.0 (http://creativecommons.org/licenses/by/2.0/),
+ *                  YAML-C (http://www.yaml.de/en/license/license-conditions.html)
+ * @link            http://www.yaml.de
+ * @package         yaml
+ * @version         3.2
+ * @revision        $Revision: 430 $
+ * @lastmodified    $Date: 2009-10-27 21:15:57 +0100 (Di, 27. Okt 2009) $
+ */
+ 
+var is_webkit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1;
+
+if(is_webkit) 
+{
+	var i;
+	var skiplinks = []
+	
+	if ( document.getElementsByClassName !== undefined) {
+		skiplinks = document.getElementsByClassName('skip');
+
+		for (i=0; i<skiplinks.length; i++) {
+			var target = skiplinks[i].href.substr(skiplinks[i].href.indexOf('#')+1);
+			var targetElement = document.getElementById(target);
+	
+			targetElement.href = '#'+target;
+			targetElement.setAttribute("tabindex", "0");
+	
+			skiplinks[i].setAttribute("onclick", "document.getElementById('"+target+"').focus();");
+		}
+	}	
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/argos_theme/info.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/info.php	(revision 1610)
@@ -0,0 +1,40 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory			= 'argos_theme';
+$template_name				= 'argos_theme';
+$template_function			= 'theme';
+$template_version			= '1.6';
+$template_platform			= '2.8';
+$template_author			= 'Jurgen Nijhuis (Argos Media) & Ruud Eisinga';
+$template_license			= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description		= 'Enhanced backend theme for Website Baker 2.8.';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/templates.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/templates.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/groups.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/groups.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/media.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/media.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/pages.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/pages.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/settings.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/settings.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/access.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/access.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/preferences.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/preferences.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/users.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/users.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/languages.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/languages.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/addons.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/addons.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/modules.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/modules.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/admintools.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/admintools.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/icons/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/icons/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/icons/view.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/argos_theme/icons/view.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/index.php
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/index.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+/**
+ * $Id$
+ * Website Baker theme: argos_theme
+ * This theme is the default WB backend Theme
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Jurgen Nijhuis (Argos Media) & Ruud Eisinga
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    1.1
+ * @platform   Website Baker 2.8
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../index.php'));
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/media.css
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/media.css	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/media.css	(revision 1610)
@@ -0,0 +1,37 @@
+body,td,th,input,textarea {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+hr {
+	margin: 0px;
+	color: #003366;
+	height: 1px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	text-decoration: none;
+	color: #336699;
+}
+input:focus, select:focus, textarea:focus {
+	background: #F1F8FD;
+}
+.content {
+	width: 100%;
+	height: 100px;
+}
+.rename {
+    background: #fff url(images/bgtitle.png) ;
+    background-repeat:repeat-x;
+	padding: 20px;
+}
+.hide {
+	display: none;
+}

Property changes on: tags/2.8.3/wb/templates/argos_theme/media.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/templates/argos_theme/browse.css
===================================================================
--- tags/2.8.3/wb/templates/argos_theme/browse.css	(nonexistent)
+++ tags/2.8.3/wb/templates/argos_theme/browse.css	(revision 1610)
@@ -0,0 +1,6 @@
+body,td,th,input,textarea {font-family:Arial,Helvetica,sans-serif;font-size:12px;}
+body {background-color:#fff;margin:0;}
+hr {margin:0;color:#003366;height:1px;}
+.hide {display:none;}
+a:link, a:visited, a:active {color:#003366;text-decoration:none;}
+a:hover {text-decoration:none;color:#336699;}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/argos_theme/browse.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/templates/simple/index.php
===================================================================
--- tags/2.8.3/wb/templates/simple/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/simple/index.php	(revision 1610)
@@ -0,0 +1,108 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: simple
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains the overall template markup and the Website Baker
+ * template functions to add the contents from the database.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../index.php'));
+
+// TEMPLATE CODE STARTS BELOW
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=<?php 
+	echo defined('DEFAULT_CHARSET') ? DEFAULT_CHARSET : 'utf-8'; ?>" />
+	<meta name="description" content="<?php page_description(); ?>" />
+	<meta name="keywords" content="<?php page_keywords(); ?>" />
+	<?php 
+	// automatically include optional WB module files (frontend.css, frontend.js)
+	if (function_exists('register_frontend_modfiles')) {
+		register_frontend_modfiles('css');
+		register_frontend_modfiles('js');
+	} ?>
+	<link rel="stylesheet" type="text/css" href="<?php 
+		echo TEMPLATE_DIR; ?>/template.css" media="screen,projection" />
+	<link rel="stylesheet" type="text/css" href="<?php 
+		echo TEMPLATE_DIR; ?>/print.css" media="print" />
+	<title><?php page_title('', '[WEBSITE_TITLE]'); ?></title>
+</head>
+
+<body>
+
+<table cellpadding="5" cellspacing="0" border="0" width="750" align="center">
+<tr>
+	<td colspan="2" class="header">
+		<?php page_title('','[WEBSITE_TITLE]'); ?>
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		&nbsp;
+	</td>
+</tr>
+<tr>
+	<td class="menu">
+		<?php 
+		if (SHOW_MENU) { 
+			// navigation menu
+			echo $TEXT['MENU'] . ':';
+			show_menu();
+		} ?>
+		
+		<?php 
+		if (SHOW_SEARCH) { /* Only show search box if search is enabled */ ?>
+			<br />
+			<?php echo $TEXT['SEARCH']; ?>: <br />
+			<form name="search" action="<?php echo WB_URL; ?>/search/index.php" method="get">
+				<input type="hidden" name="referrer" value="<?php
+					echo defined('REFERRER_ID') ? REFERRER_ID : PAGE_ID; ?>" />
+				<input type="text" name="string" style="width: 100%;" />
+				<input type="submit" name="submit" value="<?php echo $TEXT['SEARCH']; ?>" style="width: 100%;" />
+			</form>
+		<?php } ?>
+		
+		<br />
+		<a href="http://www.websitebaker.org" target="_blank">Powered by <br /> Website Baker</a>
+	</td>
+	<td class="content">
+		<?php page_content(); ?>
+	</td>
+</tr>
+<tr>
+	<td colspan="2" class="footer">
+		<?php page_footer(); ?>
+	</td>
+</tr>
+</table>
+<?php 
+// automatically include optional WB module file frontend_body.js)
+if (function_exists('register_frontend_modfiles_body')) { register_frontend_modfiles_body(); } 
+?>
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/simple/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/simple/info.php
===================================================================
--- tags/2.8.3/wb/templates/simple/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/simple/info.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: simple
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory				= 'simple';
+$template_name						= 'Simple';
+$template_function			= 'template';
+$template_version					= '2.70';
+$template_platform				= '2.7';
+$template_author					= 'Ryan Djurovich, C. Sommer';
+$template_license					= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description			= 'Default template for Website Baker. This template is designed for developers to learn how to make templates easily. Please note this template only supports 2 page levels.';
+
+// OPTIONAL VARIABLES FOR ADDITIONAL MENUES AND BLOCKS
+// $menu[1]								= '';
+// $menu[2]								= '';
+// $block[1]							= '';
+// $block[2]							= '';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/simple/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/simple/preview.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/simple/preview.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/simple/template.css
===================================================================
--- tags/2.8.3/wb/templates/simple/template.css	(nonexistent)
+++ tags/2.8.3/wb/templates/simple/template.css	(revision 1610)
@@ -0,0 +1,91 @@
+/**
+ * $Id$
+ * Website Baker template: simple
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file contains all CSS definitions required to display the template
+ * in the Website Baker frontend. 
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #333333;
+	margin: 10px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+form {
+	margin: 0;
+}
+h1, h2, h3, h4, h5 {
+	margin: 5px 0px 5px 0px;
+}
+.header {
+	background-color: #336699;
+	vertical-align: middle;
+	text-align: center;
+	color: #FFFFFF;
+	height: 50px;
+	font-size: 20px;
+	font-weight: bold;
+}
+.menu {
+	background-color: #EEEEEE;
+	padding: 10px;
+	width: 150px;
+	vertical-align: top;
+}
+.menu ul, .menu li {
+	list-style-type: none;
+	display: block;
+	margin: 0;
+	padding: 0;
+	padding-left: 5px;
+}
+.menu_current {
+	font-weight: bold;
+}
+.highlight {
+	background-color: #D0D0D0;
+}
+.content {
+	background-color: #FFFFFF;
+	padding: 20px;
+	height: 400px;
+	vertical-align: top;
+}
+.footer {
+	background-color: #DDDDDD;
+	text-align: center;
+	font-size: 10px;
+	height: 10px;
+}
\ No newline at end of file
Index: tags/2.8.3/wb/templates/simple/print.css
===================================================================
--- tags/2.8.3/wb/templates/simple/print.css	(nonexistent)
+++ tags/2.8.3/wb/templates/simple/print.css	(revision 1610)
@@ -0,0 +1,56 @@
+/**
+ * $Id$
+ * Website Baker template: simple
+ * This template is one of four basis templates distributed with Website Baker.
+ * Feel free to modify or build up on this template.
+ *
+ * This file defines the CSS styles used for print devices.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+body,td,th {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+body {
+	background-color: #FFFFFF;
+	margin: 0px;
+}
+a:link, a:visited, a:active {
+	color: #003366;
+	text-decoration: none;
+}
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+.header {
+	display: none;
+}
+.menu {
+	display: none;
+}
+.content {
+	vertical-align: top;
+}
+.footer {
+	display: none;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/simple/print.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/blank/info.php
===================================================================
--- tags/2.8.3/wb/templates/blank/info.php	(nonexistent)
+++ tags/2.8.3/wb/templates/blank/info.php	(revision 1610)
@@ -0,0 +1,47 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: blank
+ * This template is one of four basis templates distributed with Website Baker.
+ * Use this template for pages where you do not want anything wrapping the 
+ * content e.g. a page for a global block.
+ *
+ * This file defines the template variables required by Website Baker.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// OBLIGATORY WEBSITE BAKER VARIABLES
+$template_directory				= 'blank';
+$template_name						= 'Blank Template';
+$template_function			= 'template';
+$template_version					= '2.70';
+$template_platform				= '2.7';
+$template_author					= 'Ryan Djurovich, C. Sommer';
+$template_license					= '<a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>';
+$template_license_terms		= '-';
+$template_description			= 'This template is for use on page where you do not want anything wrapping the content.';
+
+// OPTIONAL VARIABLES FOR ADDITIONAL MENUES AND BLOCKS
+// $menu[1]								= '';
+// $menu[2]								= '';
+// $block[1]							= '';
+// $block[2]							= '';
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/blank/info.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/blank/preview.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/templates/blank/preview.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/templates/blank/index.php
===================================================================
--- tags/2.8.3/wb/templates/blank/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/blank/index.php	(revision 1610)
@@ -0,0 +1,38 @@
+<?php
+/**
+ * $Id$
+ * Website Baker template: blank
+ * This template is one of four basis templates distributed with Website Baker.
+ * Use this template for pages where you do not want anything wrapping the 
+ * content e.g. a page for a global block.
+ *
+ * This file contains the Website Baker template function to output the content.
+ *
+ * LICENSE: GNU General Public License
+ * 
+ * @author     Ryan Djurovich, C. Sommer
+ * @copyright  GNU General Public License
+ * @license    http://www.gnu.org/licenses/gpl.html
+ * @version    2.70
+ * @platform   Website Baker 2.7
+ *
+ * Website Baker is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Website Baker is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+*/
+
+// prevent this file from being accessed directly
+if (!defined('WB_PATH')) die(header('Location: ../../index.php'));
+
+// TEMPLATE CODE STARTS BELOW
+
+// output only the page content, nothing else
+page_content();
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/blank/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates/index.php
===================================================================
--- tags/2.8.3/wb/templates/index.php	(nonexistent)
+++ tags/2.8.3/wb/templates/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/templates/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/templates
===================================================================
--- tags/2.8.3/wb/templates	(nonexistent)
+++ tags/2.8.3/wb/templates	(revision 1610)

Property changes on: tags/2.8.3/wb/templates
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,2 ##
+classic_theme
+rounded
Index: tags/2.8.3/wb/account/login.php
===================================================================
--- tags/2.8.3/wb/account/login.php	(nonexistent)
+++ tags/2.8.3/wb/account/login.php	(revision 1610)
@@ -0,0 +1,94 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require_once("../config.php");
+
+// Make sure the login is enabled
+if(!FRONTEND_LOGIN) {
+	if(INTRO_PAGE) {
+		header('Location: '.WB_URL.PAGES_DIRECTORY.'/index.php');
+		exit(0);
+	} else {
+		header('Location: '.WB_URL.'/index.php');
+		exit(0);
+	}
+}
+
+$page_id = !empty($_SESSION['PAGE_ID']) ? $_SESSION['PAGE_ID'] : 0;
+
+// Required page details
+// $page_id = 0;
+$page_description = '';
+$page_keywords = '';
+define('PAGE_ID', $page_id);
+define('ROOT_PARENT', 0);
+define('PARENT', 0);
+define('LEVEL', 0);
+define('PAGE_TITLE', $TEXT['PLEASE_LOGIN']);
+define('MENU_TITLE', $TEXT['PLEASE_LOGIN']);
+define('VISIBILITY', 'public');
+// Set the page content include file
+define('PAGE_CONTENT', WB_PATH.'/account/login_form.php');
+
+require_once(WB_PATH.'/framework/class.login.php');
+require_once(WB_PATH.'/framework/class.frontend.php');
+
+// Create new frontend object
+$wb = new frontend();
+
+// Create new login app
+$requestMethod = '_'.strtoupper($_SERVER['REQUEST_METHOD']);
+$redirect  = strip_tags(isset(${$requestMethod}['redirect']) ? ${$requestMethod}['redirect'] : '');
+$redirect = ((isset($_SERVER['HTTP_REFERER']) && empty($redirect)) ?  $_SERVER['HTTP_REFERER'] : $redirect);
+$_SESSION['HTTP_REFERER'] = str_replace(WB_URL,'',$redirect);
+
+$loginUrl  = WB_URL.'/account/login.php';
+$loginUrl .= (!empty($redirect) ? '?redirect=' .$_SESSION['HTTP_REFERER'] : '');
+
+$ThemeUrl  = WB_URL.$wb->correct_theme_source('warning.html');
+// Setup template object, parse vars to it, then parse it
+$ThemePath = realpath(WB_PATH.$wb->correct_theme_source('login.htt'));
+
+$thisApp = new Login(
+				array(
+						"MAX_ATTEMPS" => "3",
+						"WARNING_URL" => $ThemeUrl."/warning.html",
+						"USERNAME_FIELDNAME" => 'username',
+						"PASSWORD_FIELDNAME" => 'password',
+						"REMEMBER_ME_OPTION" => SMART_LOGIN,
+						"MIN_USERNAME_LEN" => "2",
+						"MIN_PASSWORD_LEN" => "2",
+						"MAX_USERNAME_LEN" => "30",
+						"MAX_PASSWORD_LEN" => "30",
+						"LOGIN_URL" => $loginUrl,
+						"DEFAULT_URL" => WB_URL.PAGES_DIRECTORY."/index.php",
+						"TEMPLATE_DIR" => $ThemePath,
+						"TEMPLATE_FILE" => "login.htt",
+						"FRONTEND" => true,
+						"FORGOTTEN_DETAILS_APP" => WB_URL."/account/forgot.php",
+						"USERS_TABLE" => TABLE_PREFIX."users",
+						"GROUPS_TABLE" => TABLE_PREFIX."groups",
+						"REDIRECT_URL" => $redirect
+				)
+		);
+
+// Set extra outsider var
+$globals[] = 'thisApp';
+
+// Include the index (wrapper) file
+require(WB_PATH.'/index.php');

Property changes on: tags/2.8.3/wb/account/login.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/forgot_form.php
===================================================================
--- tags/2.8.3/wb/account/forgot_form.php	(nonexistent)
+++ tags/2.8.3/wb/account/forgot_form.php	(revision 1610)
@@ -0,0 +1,127 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+// Check if the user has already submitted the form, otherwise show it
+$message = $MESSAGE['FORGOT_PASS_NO_DATA'];
+$errMsg ='';
+if(isset($_POST['email']) && $_POST['email'] != "" )
+{
+	$email = strip_tags($_POST['email']);
+	if($admin->validate_email($email) == false)
+    {
+		$errMsg = $MESSAGE['USERS_INVALID_EMAIL'];
+		$email = '';
+	} else {
+// Check if the email exists in the database
+	$sql  = 'SELECT `user_id`,`username`,`display_name`,`email`,`last_reset`,`password` '.
+	        'FROM `'.TABLE_PREFIX.'users` '.
+	        'WHERE `email`=\''.$wb->add_slashes($_POST['email']).'\'';
+	if(($results = $database->query($sql)))
+	{
+		if(($results_array = $results->fetchRow()))
+		{ // Get the id, username, email, and last_reset from the above db query
+		// Check if the password has been reset in the last 2 hours
+			if( (time() - (int)$results_array['last_reset']) < (2 * 3600) ) {
+			// Tell the user that their password cannot be reset more than once per hour
+				$errMsg = $MESSAGE['FORGOT_PASS_ALREADY_RESET'];
+			} else {
+				require_once(WB_PATH.'/framework/PasswordHash.php');
+				$pwh = new PasswordHash(0, true);
+				$old_pass = $results_array['password'];
+			// Generate a random password then update the database with it
+				$new_pass = $pwh->NewPassword();
+				$sql = 'UPDATE `'.TABLE_PREFIX.'users` '.
+				       'SET `password`=\''.$pwh->HashPassword($new_pass, true).'\', '.
+				           '`last_reset`='.time().' '.
+				       'WHERE `user_id`='.(int)$results_array['user_id'];
+				unset($pwh); // destroy $pwh-Object
+				if($database->query($sql))
+				{ // Setup email to send
+					$mail_to = $email;
+					$mail_subject = $MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'];
+				// Replace placeholders from language variable with values
+					$search = array('{LOGIN_DISPLAY_NAME}', '{LOGIN_WEBSITE_TITLE}', '{LOGIN_NAME}', '{LOGIN_PASSWORD}');
+					$replace = array($results_array['display_name'], WEBSITE_TITLE, $results_array['username'], $new_pass);
+					$mail_message = str_replace($search, $replace, $MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT']);
+				// Try sending the email
+					if($wb->mail(SERVER_EMAIL,$mail_to,$mail_subject,$mail_message)) {
+						$message = $MESSAGE['FORGOT_PASS_PASSWORD_RESET'];
+						$display_form = false;
+					}else { // snd mail failed, rollback
+						$sql = 'UPDATE `'.TABLE_PREFIX.'users` '.
+						       'SET `password`=\''.$old_pass.'\' '.
+						       'WHERE `user_id`='.(int)$results_array['user_id'];
+						$database->query($sql);
+						$errMsg = $MESSAGE['FORGOT_PASS_CANNOT_EMAIL'];
+					}
+				}else { // Error updating database
+					$errMsg = $MESSAGE['RECORD_MODIFIED_FAILED'];
+					if(DEBUG) {
+						$message .= '<br />'.$database->get_error();
+						$message .= '<br />'.$sql;
+					}
+				}
+			}
+		}else { // no record found - Email doesn't exist, so tell the user
+			$errMsg = $MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'];
+		}
+	} else { // Query failed
+		$errMsg = 'SystemError:: Database query failed!';
+		if(DEBUG) {
+			$errMsg .= '<br />'.$database->get_error();
+			$errMsg .= '<br />'.$sql;
+		}
+	}
+	}
+} else {
+	$email = '';
+}
+
+if( ($errMsg=='') && ($message != '')) {
+	// $message = $MESSAGE['FORGOT_PASS_NO_DATA'];
+	$message_color = '000000';
+} else {
+	$message = $errMsg;
+	$message_color = 'ff0000';
+}
+?>
+<div style="margin: 1em auto;">
+	<button type="button" value="cancel" onClick="javascript: window.location = '<?php print $_SESSION['HTTP_REFERER'] ?>';"><?php print $TEXT['CANCEL'] ?></button>
+</div>
+<h1 style="text-align: center;"><?php echo $MENU['FORGOT']; ?></h1>
+<form name="forgot_pass" action="<?php echo WB_URL.'/account/forgot.php'; ?>" method="post">
+	<input type="hidden" name="url" value="{URL}" />
+		<table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="500">
+		<tr>
+			<td height="40" align="center" style="color: #<?php echo $message_color; ?>;" colspan="3">
+			<strong><?php echo $message; ?></strong>
+			</td>
+		</tr>
+<?php if(!isset($display_form) OR $display_form != false) { ?>
+		<tr>
+			<td height="10" colspan="2"></td>
+		</tr>
+		<tr>
+			<td width="165" height="30" align="right"><?php echo $TEXT['EMAIL']; ?>:</td>
+			<td><input type="text" maxlength="255" name="email" value="<?php echo $email; ?>" style="width: 180px;" /></td>
+			<td><input type="submit" name="submit" value="<?php echo $TEXT['SEND_DETAILS']; ?>" style="width: 180px; font-size: 10px; color: #003366; border: 1px solid #336699; background-color: #DDDDDD; padding: 3px; text-transform: uppercase;" /></td>
+		</tr>
+<?php } ?>
+		</table>
+</form>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/account/forgot_form.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/login_form.php
===================================================================
--- tags/2.8.3/wb/account/login_form.php	(nonexistent)
+++ tags/2.8.3/wb/account/login_form.php	(revision 1610)
@@ -0,0 +1,93 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+$username_fieldname = 'username';
+$password_fieldname = 'password';
+
+if(defined('SMART_LOGIN') AND SMART_LOGIN == 'enabled') {
+	// Generate username field name
+	$username_fieldname = 'username_';
+	$password_fieldname = 'password_';
+
+	$temp = array_merge(range('a','z'), range(0,9));
+	shuffle($temp);
+	for($i=0;$i<=7;$i++) {
+		$username_fieldname .= $temp[$i];
+		$password_fieldname .= $temp[$i];
+	}
+}
+
+$thisApp->redirect_url = (isset($thisApp->redirect_url) && ($thisApp->redirect_url!='')  ? $thisApp->redirect_url : $_SESSION['HTTP_REFERER'] );
+?>
+<div style="margin: 1em auto;">
+	<button type="button" value="cancel" onClick="javascript: window.location = '<?php print $_SESSION['HTTP_REFERER'] ?>';"><?php print $TEXT['CANCEL'] ?></button>
+</div>
+<h1>&nbsp;Login</h1>
+&nbsp;<?php echo $thisApp->message; ?>
+<br />
+<br />
+
+<form class="login-box" action="<?php echo WB_URL.'/account/login.php'; ?>" method="post">
+<input type="hidden" name="username_fieldname" value="<?php echo $username_fieldname; ?>" />
+<input type="hidden" name="password_fieldname" value="<?php echo $password_fieldname; ?>" />
+<input type="hidden" name="redirect" value="<?php echo $thisApp->redirect_url;?>" />
+
+<table cellpadding="5" cellspacing="0" border="0" width="90%">
+<tr>
+	<td style="width:100px"><?php echo $TEXT['USERNAME']; ?>:</td>
+	<td class="value_input">
+		<input type="text" name="<?php echo $username_fieldname; ?>" maxlength="30" style="width:220px;"/>
+    	<script type="text/javascript">
+    	// document.login.<?php echo $username_fieldname; ?>.focus();
+    	var ref= document.getElementById("<?php echo $username_fieldname; ?>");
+    	if (ref) ref.focus();
+    	</script>
+	</td>
+</tr>
+<tr>
+	<td style="width:100px"><?php echo $TEXT['PASSWORD']; ?>:</td>
+	<td class="value_input">
+		<input type="password" name="<?php echo $password_fieldname; ?>" maxlength="30" style="width:220px;"/>
+	</td>
+</tr>
+<?php if($username_fieldname != 'username') { ?>
+<tr>
+	<td>&nbsp;</td>
+	<td>
+		<input type="checkbox" name="remember" id="remember" value="true"/>
+		<label for="remember"><?php echo $TEXT['REMEMBER_ME']; ?></label>
+	</td>
+</tr>
+<?php } ?>
+<tr>
+	<td>&nbsp;</td>
+	<td>
+		<input type="submit" name="submit" value="<?php echo $TEXT['LOGIN']; ?>"  />
+		<input type="reset" name="reset" value="<?php echo $TEXT['RESET']; ?>"  />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<br />
+
+<a href="<?php echo WB_URL; ?>/account/forgot.php"><?php echo $TEXT['FORGOTTEN_DETAILS']; ?></a>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/account/login_form.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/signup.php
===================================================================
--- tags/2.8.3/wb/account/signup.php	(nonexistent)
+++ tags/2.8.3/wb/account/signup.php	(revision 1610)
@@ -0,0 +1,76 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require_once('../config.php');
+
+if(!( intval(FRONTEND_SIGNUP) && (  0 == (isset($_SESSION['USER_ID']) ? intval($_SESSION['USER_ID']) : 0) )))
+{
+	if(INTRO_PAGE) {
+		header('Location: '.WB_URL.PAGES_DIRECTORY.'/index.php');
+		exit(0);
+	} else {
+		header('Location: '.WB_URL.'/index.php');
+		exit(0);
+	}
+}
+
+if(ENABLED_ASP && isset($_POST['username']) && ( // form faked? Check the honeypot-fields.
+	(!isset($_POST['submitted_when']) OR !isset($_SESSION['submitted_when'])) OR 
+	($_POST['submitted_when'] != $_SESSION['submitted_when']) OR
+	(!isset($_POST['email-address']) OR $_POST['email-address']) OR
+	(!isset($_POST['name']) OR $_POST['name']) OR
+	(!isset($_POST['full_name']) OR $_POST['full_name'])
+)) {
+	exit(header("Location: ".WB_URL.PAGES_DIRECTORY.""));
+}
+
+// Load the language file
+if(!file_exists(WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php')) {
+	exit('Error loading language file '.DEFAULT_LANGUAGE.', please check configuration');
+} else {
+	require_once(WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php');
+	$load_language = false;
+}
+
+$page_id = (isset($_SESSION['PAGE_ID']) && ($_SESSION['PAGE_ID']!='') ? $_SESSION['PAGE_ID'] : 0);
+
+// Required page details
+// $page_id = 0;
+$page_description = '';
+$page_keywords = '';
+define('PAGE_ID', $page_id);
+define('ROOT_PARENT', 0);
+define('PARENT', 0);
+define('LEVEL', 0);
+define('PAGE_TITLE', $TEXT['SIGNUP']);
+define('MENU_TITLE', $TEXT['SIGNUP']);
+define('MODULE', '');
+define('VISIBILITY', 'public');
+
+// Set the page content include file
+if(isset($_POST['username'])) {
+	define('PAGE_CONTENT', WB_PATH.'/account/signup2.php');
+} else {
+	define('PAGE_CONTENT', WB_PATH.'/account/signup_form.php');
+}
+
+// Set auto authentication to false
+$auto_auth = false;
+
+// Include the index (wrapper) file
+require(WB_PATH.'/index.php');

Property changes on: tags/2.8.3/wb/account/signup.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/logout.php
===================================================================
--- tags/2.8.3/wb/account/logout.php	(nonexistent)
+++ tags/2.8.3/wb/account/logout.php	(revision 1610)
@@ -0,0 +1,44 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require("../config.php");
+
+if(isset($_COOKIE['REMEMBER_KEY'])) {
+	setcookie('REMEMBER_KEY', '', time()-3600, '/');
+}
+
+$redirect = ((isset($_SESSION['HTTP_REFERER']) && $_SESSION['HTTP_REFERER'] != '') ?  $_SESSION['HTTP_REFERER'] : WB_URL.'/index.php');
+
+$_SESSION['USER_ID'] = null;
+$_SESSION['GROUP_ID'] = null;
+$_SESSION['GROUPS_ID'] = null;
+$_SESSION['USERNAME'] = null;
+$_SESSION['PAGE_PERMISSIONS'] = null;
+$_SESSION['SYSTEM_PERMISSIONS'] = null;
+$_SESSION = array();
+
+session_unset();
+unset($_COOKIE[session_name()]);
+session_destroy();
+
+if(INTRO_PAGE) {
+	header('Location: '.WB_URL.PAGES_DIRECTORY.'/index.php');
+} else {
+	header('Location: '.$redirect);
+}
+

Property changes on: tags/2.8.3/wb/account/logout.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/preferences_form.php
===================================================================
--- tags/2.8.3/wb/account/preferences_form.php	(nonexistent)
+++ tags/2.8.3/wb/account/preferences_form.php	(revision 1610)
@@ -0,0 +1,192 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accesses directly
+if(defined('WB_PATH') == false) {	exit("Cannot access this file directly"); }
+
+	if($wb->is_authenticated() === false) {
+// User needs to login first
+		header("Location: ".WB_URL."/account/login.php?redirect=".$wb->link);
+		exit(0);
+	}
+
+// load module default language file (EN)
+	require_once(WB_PATH .'/account/languages/EN.php');
+// check for user defined language file, load it and override EN-Settings with
+	if(file_exists(WB_PATH .'/account/languages/' .LANGUAGE .'.php')) {
+		require_once(WB_PATH .'/account/languages/' .LANGUAGE .'.php');
+	}
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	echo '<style type="text/css">';
+	include(WB_PATH .'/account/frontend.css');
+	echo "\n</style>\n";
+	$user_time = true;
+	require(ADMIN_PATH.'/interface/timezones.php');
+	require(ADMIN_PATH.'/interface/date_formats.php');
+	require(ADMIN_PATH.'/interface/time_formats.php');
+	$error = array();
+	$success = array();
+	$template = new Template(WB_PATH .'/account','remove');
+
+	switch($wb->get_post('action')):
+		case 'details':
+			require_once(WB_PATH .'/account/details.php');
+			break;
+		case 'email':
+			require_once(WB_PATH .'/account/email.php');
+
+			break;
+		case 'password':
+			require_once(WB_PATH .'/account/password.php');
+			break;
+		default:
+			// do nothing
+	endswitch; // switch
+
+// show template
+	$template->set_file('page', 'template.html');
+	$template->set_block('page', 'main_block', 'main');
+// get existing values from database
+	$sql = "SELECT display_name,email FROM ".TABLE_PREFIX."users WHERE user_id = '".$wb->get_user_id()."'";
+	$rowset = $database->query($sql);
+	if($database->is_error()) $error[] = $database->get_error();
+	$row = $rowset->fetchRow();
+// insert values into form
+	$template->set_var('DISPLAY_NAME', $row['display_name']);
+	$template->set_var('EMAIL', $row['email']);
+
+// read available languages from table addons and assign it to the template
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+	$sql .= 'WHERE `type` = \'language\' ORDER BY `directory`';
+	if( $res_lang = $database->query($sql) )
+	{
+		$template->set_block('main_block', 'language_list_block', 'language_list');
+		while( $rec_lang = $res_lang->fetchRow() )
+		{
+	        $langIcons = (empty($rec_lang['directory'])) ? 'none' : strtolower($rec_lang['directory']);
+			$template->set_var('CODE',        $rec_lang['directory']);
+			$template->set_var('NAME',        $rec_lang['name']);
+			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
+			$template->parse('language_list', 'language_list_block', true);
+		}
+	}
+// Insert default timezone values
+	$template->set_block('main_block', 'timezone_list_block', 'timezone_list');
+	foreach($TIMEZONES AS $hour_offset => $title) {
+		$template->set_var('VALUE', $hour_offset);
+		$template->set_var('NAME', $title);
+		if($wb->get_timezone() == $hour_offset*3600) {
+			$template->set_var('SELECTED', 'selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('timezone_list', 'timezone_list_block', true);
+	}
+
+// Insert date format list
+	$template->set_block('main_block', 'date_format_list_block', 'date_format_list');
+	foreach($DATE_FORMATS AS $format => $title) {
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		if($format != 'system_default') {
+			$template->set_var('VALUE', $format);
+		} else {
+			$template->set_var('VALUE', '');
+		}
+		$template->set_var('NAME', $title);
+		if(DATE_FORMAT == $format AND !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
+			$template->set_var('SELECTED', 'selected="selected"');
+		} elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
+			$template->set_var('SELECTED', 'selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('date_format_list', 'date_format_list_block', true);
+	}
+
+// Insert time format list
+	$template->set_block('main_block', 'time_format_list_block', 'time_format_list');
+	foreach($TIME_FORMATS AS $format => $title) {
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		if($format != 'system_default') {
+			$template->set_var('VALUE', $format);
+		} else {
+			$template->set_var('VALUE', '');
+		}
+		$template->set_var('NAME', $title);
+		if(TIME_FORMAT == $format AND !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
+			$template->set_var('SELECTED', 'selected="selected"');
+		} elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
+			$template->set_var('SELECTED', 'selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('time_format_list', 'time_format_list_block', true);
+	}
+// Insert language headings
+	$template->set_var(array(
+								'HEADING_MY_SETTINGS' => $HEADING['MY_SETTINGS'],
+								'HEADING_MY_EMAIL'    => $HEADING['MY_EMAIL'],
+								'HEADING_MY_PASSWORD' => $HEADING['MY_PASSWORD']
+								)
+						);
+// Insert language text and messages
+	$template->set_var(array(
+								'HTTP_REFERER' => $_SESSION['HTTP_REFERER'],
+								'TEXT_SAVE'	=> $TEXT['SAVE'],
+								'TEXT_RESET' => $TEXT['RESET'],
+								'TEXT_CANCEL' => $TEXT['CANCEL'],
+								'TEXT_DISPLAY_NAME'	=> $TEXT['DISPLAY_NAME'],
+								'TEXT_EMAIL' => $TEXT['EMAIL'],
+								'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
+								'TEXT_TIMEZONE' => $TEXT['TIMEZONE'],
+								'TEXT_DATE_FORMAT' => $TEXT['DATE_FORMAT'],
+								'TEXT_TIME_FORMAT' => $TEXT['TIME_FORMAT'],
+								'TEXT_CURRENT_PASSWORD' => $TEXT['CURRENT_PASSWORD'],
+								'TEXT_NEW_PASSWORD' => $TEXT['NEW_PASSWORD'],
+								'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD']
+								)
+						);
+
+// Insert module releated language text and messages
+	$template->set_var(array(
+								'MOD_PREFERENCE_PLEASE_SELECT'	=> $MOD_PREFERENCE['PLEASE_SELECT'],
+								'MOD_PREFERENCE_SAVE_SETTINGS'	=> $MOD_PREFERENCE['SAVE_SETTINGS'],
+								'MOD_PREFERENCE_SAVE_EMAIL'			=> $MOD_PREFERENCE['SAVE_EMAIL'],
+								'MOD_PREFERENCE_SAVE_PASSWORD'	=> $MOD_PREFERENCE['SAVE_PASSWORD'],
+								)
+						);
+// Insert error and/or success messages
+	$template->set_block('main_block', 'error_block', 'error_list');
+	if(sizeof($error)>0){
+		foreach($error AS $value){
+			$template->set_var('ERROR_VALUE', $value);
+			$template->parse('error_list', 'error_block', true);
+		}
+	}
+
+	$template->set_block('main_block', 'success_block', 'success_list');
+	if(sizeof($success)!=0){
+		foreach($success AS $value){
+			$template->set_var('SUCCESS_VALUE', $value);
+			$template->parse('success_list', 'success_block', true);
+		}
+	}
+// Parse template for preferences form
+	$template->parse('main', 'main_block', false);
+	$template->pparse('output', 'page');

Property changes on: tags/2.8.3/wb/account/preferences_form.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/details.php
===================================================================
--- tags/2.8.3/wb/account/details.php	(nonexistent)
+++ tags/2.8.3/wb/account/details.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// Get entered values
+	$display_name = $wb->add_slashes(strip_tags($admin->get_post('display_name')));
+	$language = $wb->get_post('language');
+	$timezone = $wb->get_post('timezone')*60*60;
+	$date_format = $wb->get_post('date_format');
+	$time_format = $wb->get_post('time_format');
+
+// Update the database
+// $database = new database();
+	$sql  = "UPDATE `".TABLE_PREFIX."users` SET ";
+	$sql .= "`display_name` = '".$display_name."', `language` = '".$language."', ";
+	$sql .= "`timezone` = '".$timezone."', `date_format` = '".$date_format."', ";
+	$sql .= "`time_format` = '".$time_format."' ";
+	$sql .=	"WHERE `user_id` = '".$wb->get_user_id()."'";
+	$database->query($sql);
+	if($database->is_error()) {
+		$error[] = $database->get_error();
+	} else {
+		$success[] = $MOD_PREFERENCE['DETAILS_SAVED'];
+		$_SESSION['DISPLAY_NAME'] = $display_name;
+		$_SESSION['LANGUAGE'] = $language;
+		$_SESSION['TIMEZONE'] = $timezone;
+		$_SESSION['HTTP_REFERER'] = (($_SESSION['LANGUAGE']== LANGUAGE) ? $_SESSION['HTTP_REFERER'] : WB_URL);
+// Update date format
+		if($date_format != '') {
+			$_SESSION['DATE_FORMAT'] = $date_format;
+			if(isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) { unset($_SESSION['USE_DEFAULT_DATE_FORMAT']); }
+		} else {
+			$_SESSION['USE_DEFAULT_DATE_FORMAT'] = true;
+			if(isset($_SESSION['DATE_FORMAT'])) { unset($_SESSION['DATE_FORMAT']); }
+		}
+// Update time format
+		if($time_format != '') {
+			$_SESSION['TIME_FORMAT'] = $time_format;
+			if(isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) { unset($_SESSION['USE_DEFAULT_TIME_FORMAT']); }
+		} else {
+			$_SESSION['USE_DEFAULT_TIME_FORMAT'] = true;
+			if(isset($_SESSION['TIME_FORMAT'])) { unset($_SESSION['TIME_FORMAT']); }
+		}
+	}

Property changes on: tags/2.8.3/wb/account/details.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/signup2.php
===================================================================
--- tags/2.8.3/wb/account/signup2.php	(nonexistent)
+++ tags/2.8.3/wb/account/signup2.php	(revision 1610)
@@ -0,0 +1,130 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// require_once(WB_PATH.'/framework/class.wb.php');
+$wb = new wb('Start', 'start', false, false);
+
+// Get details entered
+$groups_id = FRONTEND_SIGNUP;
+$active = 1;
+$username = strtolower(strip_tags($wb->get_post_escaped('username')));
+$display_name = strip_tags($wb->get_post_escaped('display_name'));
+$email = $wb->get_post('email');
+
+// Create a javascript back link
+$js_back = WB_URL.'/account/signup.php';
+/*
+if (!$wb->checkFTAN())
+{
+	$wb->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], $js_back, false);
+	exit();
+}
+*/
+// Check values
+if($groups_id == "") {
+	$wb->print_error($MESSAGE['USERS']['NO_GROUP'], $js_back, false);
+}
+if(!preg_match('/^[a-z]{1}[a-z0-9_-]{2,}$/i', $username)) {
+	$wb->print_error( $MESSAGE['USERS_NAME_INVALID_CHARS'].' / '.
+	                  $MESSAGE['USERS_USERNAME_TOO_SHORT'], $js_back);
+}
+if($email != "") {
+	if($wb->validate_email($email) == false) {
+		$wb->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back, false);
+	}
+} else {
+	$wb->print_error($MESSAGE['SIGNUP']['NO_EMAIL'], $js_back, false);
+}
+
+$email = $wb->add_slashes($email);
+
+// Captcha
+if(ENABLED_CAPTCHA) {
+	if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){
+		// Check for a mismatch
+		if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) {
+			$wb->print_error($MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'], $js_back, false);
+		}
+	} else {
+		$wb->print_error($MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA'], $js_back, false);
+	}
+}
+if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); }
+
+// Generate a random password then update the database with it
+$new_pass = '';
+$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+srand((double)microtime()*1000000);
+$i = 0;
+while ($i <= 7) {
+	$num = rand() % 33;
+	$tmp = substr($salt, $num, 1);
+	$new_pass = $new_pass . $tmp;
+	$i++;
+}
+$md5_password = md5($new_pass);
+
+// Check if username already exists
+$results = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE username = '$username'");
+if($results->numRows() > 0) {
+	$wb->print_error($MESSAGE['USERS']['USERNAME_TAKEN'], $js_back, false);
+}
+
+// Check if the email already exists
+$results = $database->query("SELECT user_id FROM ".TABLE_PREFIX."users WHERE email = '".$wb->add_slashes($email)."'");
+if($results->numRows() > 0) {
+	if(isset($MESSAGE['USERS']['EMAIL_TAKEN'])) {
+		$wb->print_error($MESSAGE['USERS']['EMAIL_TAKEN'], $js_back, false);
+	} else {
+		$wb->print_error($MESSAGE['USERS']['INVALID_EMAIL'], $js_back, false);
+	}
+}
+
+// MD5 supplied password
+$md5_password = md5($new_pass);
+
+// Inser the user into the database
+$query = "INSERT INTO ".TABLE_PREFIX."users (group_id,groups_id,active,username,password,display_name,email) VALUES ('$groups_id', '$groups_id', '$active', '$username','$md5_password','$display_name','$email')";
+$database->query($query);
+
+if($database->is_error()) {
+	// Error updating database
+	$message = $database->get_error();
+} else {
+	// Setup email to send
+	$mail_to = $email;
+	$mail_subject = $MESSAGE['SIGNUP2']['SUBJECT_LOGIN_INFO'];
+
+	// Replace placeholders from language variable with values
+	$search = array('{LOGIN_DISPLAY_NAME}', '{LOGIN_WEBSITE_TITLE}', '{LOGIN_NAME}', '{LOGIN_PASSWORD}');
+	$replace = array($display_name, WEBSITE_TITLE, $username, $new_pass); 
+	$mail_message = str_replace($search, $replace, $MESSAGE['SIGNUP2']['BODY_LOGIN_INFO']);
+
+	// Try sending the email
+	if($wb->mail(SERVER_EMAIL,$mail_to,$mail_subject,$mail_message)) {
+		$display_form = false;
+		$wb->print_success($MESSAGE['FORGOT_PASS']['PASSWORD_RESET'], WB_URL.'/account/login.php' );
+	} else {
+		$database->query("DELETE FROM ".TABLE_PREFIX."users WHERE username = '$username'");
+		$wb->print_error($MESSAGE['FORGOT_PASS']['CANNOT_EMAIL'], $js_back, false);
+	}
+}
+

Property changes on: tags/2.8.3/wb/account/signup2.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/signup_form.php
===================================================================
--- tags/2.8.3/wb/account/signup_form.php	(nonexistent)
+++ tags/2.8.3/wb/account/signup_form.php	(revision 1610)
@@ -0,0 +1,91 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+?>
+<div style="margin: 1em auto;">
+	<button type="button" value="cancel" onClick="javascript: window.location = '<?php print $_SESSION['HTTP_REFERER'] ?>';"><?php print $TEXT['CANCEL'] ?></button>
+</div>
+<h1>&nbsp;<?php echo $TEXT['SIGNUP']; ?></h1>
+
+<form name="user" action="<?php echo WB_URL.'/account/signup.php'; ?>" method="post">
+	<?php echo $admin->getFTAN(); ?>
+	<?php if(ENABLED_ASP) { // add some honeypot-fields
+	?>
+    <div style="display:none;">
+	<input type="hidden" name="submitted_when" value="<?php $t=time(); echo $t; $_SESSION['submitted_when']=$t; ?>" />
+	<p class="nixhier">
+	email-address:
+	<label for="email-address">Leave this field email-address blank:</label>
+	<input id="email-address" name="email-address" size="60" value="" /><br />
+	username (id):
+	<label for="name">Leave this field name blank:</label>
+	<input id="name" name="name" size="60" value="" /><br />
+	Full Name:
+	<label for="full_name">Leave this field full_name blank:</label>
+	<input id="full_name" name="full_name" size="60" value="" /><br />
+	</p>
+	<?php }
+	?>
+    </div>
+<table summary="" cellpadding="5" cellspacing="0" border="0" width="90%">
+<tr>
+	<td width="180"><?php echo $TEXT['USERNAME']; ?>:</td>
+	<td class="value_input">
+		<input type="text" name="username" maxlength="30" style="width:300px;"/>
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['DISPLAY_NAME']; ?> (<?php echo $TEXT['FULL_NAME']; ?>):</td>
+	<td class="value_input">
+		<input type="text" name="display_name" maxlength="255" style="width:300px;" />
+	</td>
+</tr>
+<tr>
+	<td><?php echo $TEXT['EMAIL']; ?>:</td>
+	<td class="value_input">
+		<input type="text" name="email" maxlength="255" style="width:300px;"/>
+	</td>
+</tr>
+<?php
+// Captcha
+if(ENABLED_CAPTCHA) {
+	?><tr>
+		<td class="field_title"><?php echo $TEXT['VERIFICATION']; ?>:</td>
+		<td><?php call_captcha(); ?></td>
+		</tr>
+	<?php
+}
+?>
+<tr>
+	<td>&nbsp;</td>
+	<td>
+		<input type="submit" name="submit" value="<?php echo $TEXT['SIGNUP']; ?>" />
+		<input type="reset" name="reset" value="<?php echo $TEXT['RESET']; ?>" />
+	</td>
+</tr>
+</table>
+
+</form>
+
+<br />
+&nbsp; 

Property changes on: tags/2.8.3/wb/account/signup_form.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/template.html
===================================================================
--- tags/2.8.3/wb/account/template.html	(nonexistent)
+++ tags/2.8.3/wb/account/template.html	(revision 1610)
@@ -0,0 +1,138 @@
+<!-- begin settings_modify.html -->
+<!-- BEGIN main_block -->
+<!-- BEGIN success_block -->
+<p class="mod_preferences_success">
+	{SUCCESS_VALUE}
+</p>
+<!-- END success_block -->
+<!-- BEGIN error_block -->
+<p class="mod_preferences_error">
+	{ERROR_VALUE}
+</p>
+<!-- END error_block -->
+<div style="margin: 1em auto;">
+	<button type="button" value="cancel" onClick="javascript: window.location = '{HTTP_REFERER}';">{TEXT_CANCEL}</button>
+</div>
+<hr />
+<form name="details" action="" method="post">
+	<h3>{HEADING_MY_SETTINGS}</h3>
+	<table summary="" cellpadding="5" cellspacing="0" border="0" width="100%">
+		<tr>
+			<td width="160">{TEXT_DISPLAY_NAME}:</td>
+			<td>
+				<input type="text" name="display_name" value="{DISPLAY_NAME}" style="width: 98%;" readonly="readonly" />
+			</td>
+		</tr>
+		<tr>
+			<td>{TEXT_LANGUAGE}:</td>
+			<td>
+				<select name="language" id="language">
+					<!-- BEGIN language_list_block -->
+						<option value="{CODE}"{SELECTED} style="background: url({FLAG}.png) no-repeat center left; padding-left: 20px;">{NAME} ({CODE})</option>
+					<!-- END language_list_block -->
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td>{TEXT_TIMEZONE}:</td>
+			<td>
+				<select name="timezone" style="width: 98%;">
+					<option value="-20">{MOD_PREFERENCE_PLEASE_SELECT}</option>
+<!-- BEGIN timezone_list_block -->
+					<option value="{VALUE}" {SELECTED}>{NAME}</option>
+<!-- END timezone_list_block -->
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td>{TEXT_DATE_FORMAT}:</td>
+			<td>
+				<select name="date_format" style="width: 98%;">
+					<option value="">{MOD_PREFERENCE_PLEASE_SELECT}</option>
+<!-- BEGIN date_format_list_block -->
+					<option value="{VALUE}" {SELECTED}>{NAME}</option>
+<!-- END date_format_list_block -->
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td>{TEXT_TIME_FORMAT}:</td>
+			<td>
+				<select name="time_format" style="width: 98%;">
+					<option value="">{MOD_PREFERENCE_PLEASE_SELECT}</option>
+<!-- BEGIN time_format_list_block -->
+					<option value="{VALUE}" {SELECTED}>{NAME}</option>
+<!-- END time_format_list_block -->
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td>&nbsp;</td>
+			<td>
+				<button type="reset" name="reset" value="reset">{TEXT_RESET}</button>
+				<button type="submit" name="action" value="details">{MOD_PREFERENCE_SAVE_SETTINGS}</button>
+			</td>
+		</tr>
+	</table>
+</form>
+<hr />
+<form name="email" action="" method="post">
+	<h3>{HEADING_MY_EMAIL}</h3>
+	<table summary="" cellpadding="5" cellspacing="0" border="0" width="100%">
+		<tr>
+			<td>{TEXT_EMAIL}:</td>
+			<td>
+				<input type="text" name="email" value="{EMAIL}" style="width: 98%;" />
+			</td>
+		</tr>
+		<tr>
+			<td width="160">{TEXT_CURRENT_PASSWORD}:</td>
+			<td>
+				<input type="password" name="current_password" style="width: 98%;" />
+			</td>
+		</tr>
+		<tr>
+			<td>&nbsp;</td>
+			<td>
+				<button type="reset" name="reset" value="reset">{TEXT_RESET}</button>
+				<button type="submit" name="action" value="email">{MOD_PREFERENCE_SAVE_EMAIL}</button>
+			</td>
+		</tr>
+	</table>
+</form>
+<hr />
+<form name="password" action="" method="post">
+	<h3>{HEADING_MY_PASSWORD}</h3>
+	<table summary="" cellpadding="5" cellspacing="0" border="0" width="100%">
+		<tr>
+			<td width="160">{TEXT_CURRENT_PASSWORD}:</td>
+			<td>
+				<input type="password" name="current_password" style="width: 98%;" />
+			</td>
+		</tr>
+		<tr>
+			<td width="160">{TEXT_NEW_PASSWORD}:</td>
+			<td>
+				<input type="password" name="new_password" style="width: 98%;" />
+			</td>
+		</tr>
+		<tr>
+			<td width="160">{TEXT_RETYPE_NEW_PASSWORD}:</td>
+			<td>
+				<input type="password" name="new_password2" style="width: 98%;" />
+			</td>
+		</tr>
+		<tr>
+			<td>&nbsp;</td>
+			<td>
+				<button type="reset" name="reset" value="reset">{TEXT_RESET}</button>
+				<button type="submit" name="action" value="password">{MOD_PREFERENCE_SAVE_PASSWORD}</button>
+			</td>
+		</tr>
+	</table>
+</form>
+<div style="margin: 1em auto;">
+	<button type="button" value="cancel" onClick="javascript: window.location = '{HTTP_REFERER}';">{TEXT_CANCEL}</button>
+</div>
+<!-- END main_block -->
+<!-- end settings_modify.html -->

Property changes on: tags/2.8.3/wb/account/template.html
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/html
\ No newline at end of property
Index: tags/2.8.3/wb/account/password.php
===================================================================
--- tags/2.8.3/wb/account/password.php	(nonexistent)
+++ tags/2.8.3/wb/account/password.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2012, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// Get entered values
+	$iMinPassLength = 6;
+	$sCurrentPassword = $wb->get_post('current_password');
+	$sCurrentPassword = (is_null($sCurrentPassword) ? '' : $sCurrentPassword);
+	$sNewPassword = $wb->get_post('new_password');
+	$sNewPassword = is_null($sNewPassword) ? '' : $sNewPassword;
+	$sNewPasswordRetyped = $wb->get_post('new_password2');
+	$sNewPasswordRetyped= is_null($sNewPasswordRetyped) ? '' : $sNewPasswordRetyped;
+// Check existing password
+	$sql  = 'SELECT `password` ';
+	$sql .= 'FROM `'.TABLE_PREFIX.'users` ';
+	$sql .= 'WHERE `user_id` = '.$wb->get_user_id();
+// Validate values
+	if (md5($sCurrentPassword) != $database->get_one($sql)) {
+		$error[] = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'];
+	}else {
+		if(strlen($sNewPassword) < $iMinPassLength) {
+			$error[] = $MESSAGE['USERS_PASSWORD_TOO_SHORT'];
+		}else {
+			if($sNewPassword != $sNewPasswordRetyped) {
+				$error[] = $MESSAGE['USERS_PASSWORD_MISMATCH'];
+			}else {
+				$pattern = '/[^'.$wb->password_chars.']/';
+				if (preg_match($pattern, $sNewPassword)) {
+					$error[] = $MESSAGE['PREFERENCES_INVALID_CHARS'];
+				}else {
+// generate new password hash
+					$sPwHashNew = md5($sNewPassword);
+// Update the database
+					$sql  = 'UPDATE `'.TABLE_PREFIX.'users` ';
+					$sql .= 'SET `password`=\''.$sPwHashNew.'\' ';
+					$sql .= 'WHERE `user_id`='.$wb->get_user_id();
+					if ($database->query($sql)) {
+						$success[] = $MESSAGE['PREFERENCES_PASSWORD_CHANGED'];
+					}else {
+						$error[] = $database->get_error();
+					}
+				}
+			}
+		}
+	}

Property changes on: tags/2.8.3/wb/account/password.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/forgot.php
===================================================================
--- tags/2.8.3/wb/account/forgot.php	(nonexistent)
+++ tags/2.8.3/wb/account/forgot.php	(revision 1610)
@@ -0,0 +1,52 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require_once('../config.php');
+
+$page_id = (!empty($_SESSION['PAGE_ID']) ? $_SESSION['PAGE_ID'] : 0);
+
+// Required page details
+// $page_id = 0;
+$page_description = '';
+$page_keywords = '';
+define('PAGE_ID', $page_id);
+define('ROOT_PARENT', 0);
+define('PARENT', 0);
+define('LEVEL', 0);
+define('PAGE_TITLE', $MENU['FORGOT']);
+define('MENU_TITLE', $MENU['FORGOT']);
+define('VISIBILITY', 'public');
+
+if(!FRONTEND_LOGIN) {
+	if(INTRO_PAGE) {
+		header('Location: '.WB_URL.PAGES_DIRECTORY.'/index.php');
+		exit(0);
+	} else {
+		header('Location: '.WB_URL.'/index.php');
+		exit(0);
+	}
+}
+
+// Set the page content include file
+define('PAGE_CONTENT', WB_PATH.'/account/forgot_form.php');
+
+// Set auto authentication to false
+$auto_auth = false;
+
+// Include the index (wrapper) file
+require(WB_PATH.'/index.php');

Property changes on: tags/2.8.3/wb/account/forgot.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/languages/DE.php
===================================================================
--- tags/2.8.3/wb/account/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/account/languages/DE.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+  Module developed for the Open Source Content Management System Website Baker (http://websitebaker.org)
+  Copyright (C) 2008, ISTeam, Werner von der Decken
+  Contact me: wkl(at)isteam.de, http://isteam.de
+
+  This module is free software. You can redistribute it and/or modify it
+  under the terms of the GNU General Public License  - version 2 or later,
+  as published by the Free Software Foundation: http://www.gnu.org/licenses/gpl.html.
+
+  This module is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+ -----------------------------------------------------------------------------------------
+  DEUTSCHE SPRACHDATEI FUER DAS PREFERENCES MODUL
+ -----------------------------------------------------------------------------------------
+	UPDATE HISTORY:
+	Werner von der Decken; 17.05.2008
+	 + erstes release der Deutschen Sprachdatei
+ -----------------------------------------------------------------------------------------
+**/
+
+// Array fuer alle sprachabhaengigen Textausgaben im Front- und Backend
+// Hinweis: Verwende nachfolgende Namenskonvention fr die Sprachausgabe des Moduls: $MOD_MODULE_DIRECTORY
+$MOD_PREFERENCE = array(
+	'PLEASE_SELECT' => 'bitte w&auml;hlen',
+	'DETAILS_SAVED'	=> 'allgemeine Einstellungen ge&auml;ndert',
+	'SAVE_SETTINGS' => 'Einstellungen speichern',
+	'SAVE_EMAIL' => 'Email speichern',
+	'SAVE_PASSWORD' => 'Passwort speichern',
+);
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/account/languages/DE.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/account/languages/EN.php
===================================================================
--- tags/2.8.3/wb/account/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/account/languages/EN.php	(revision 1610)
@@ -0,0 +1,34 @@
+<?php
+/**
+  Module developed for the Open Source Content Management System Website Baker (http://websitebaker.org)
+  Copyright (C) 2008, ISTeam, Werner von der Decken
+  Contact me: wkl(at)isteam.de, http://isteam.de
+
+  This module is free software. You can redistribute it and/or modify it
+  under the terms of the GNU General Public License  - version 2 or later,
+  as published by the Free Software Foundation: http://www.gnu.org/licenses/gpl.html.
+
+  This module is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+ -----------------------------------------------------------------------------------------
+  ENGLISH LANGUAGE FILE FOR THE PREFERENCES MODULE
+ -----------------------------------------------------------------------------------------
+	UPDATE HISTORY:
+	Werner von der Decken; 17.05.2008
+	 + initial release of the English language file
+ -----------------------------------------------------------------------------------------
+**/
+// array for all language dependen text outputs in the front- and backend
+// Note: stick to the naming convention: $MOD_MODULE_DIRECTORY
+$MOD_PREFERENCE = array(
+	'PLEASE_SELECT' => 'please select',
+	'DETAILS_SAVED'	=> 'details successfully saved',
+	'SAVE_SETTINGS' => 'save details',
+	'SAVE_EMAIL'    => 'save email',
+	'SAVE_PASSWORD' => 'save password',
+);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/account/languages/EN.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/account/languages
===================================================================
--- tags/2.8.3/wb/account/languages	(nonexistent)
+++ tags/2.8.3/wb/account/languages	(revision 1610)

Property changes on: tags/2.8.3/wb/account/languages
___________________________________________________________________
Added: bugtraq:number
## -0,0 +1 ##
+true
\ No newline at end of property
Index: tags/2.8.3/wb/account/frontend.css
===================================================================
--- tags/2.8.3/wb/account/frontend.css	(nonexistent)
+++ tags/2.8.3/wb/account/frontend.css	(revision 1610)
@@ -0,0 +1,28 @@
+/* <![CDATA[ */
+/*
+  CSS definition for Website Baker module: WB-Preferences
+  Copyright (C) 2008, Werner von der Decken
+  Contact me: wkl(at)isteam.de, http://isteam.de
+
+  This CSS file is free software. You can redistribute it and/or modify it
+  under the terms of the GNU General Public License  - version 2 or later,
+  as published by the Free Software Foundation: http://www.gnu.org/licenses/gpl.html.
+
+  This CSS file is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+	.mod_preferences_error {
+		background-color:#ffb0b0;
+		padding:5px;
+		border:dotted 1px #ff0000;
+		color:#ff0000;
+	}
+	.mod_preferences_success {
+		background-color:#b0ffb0;
+		padding:5px;
+		border:dotted 1px #303030;
+		color:#303030;
+	}
+/* ]]> */

Property changes on: tags/2.8.3/wb/account/frontend.css
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/css
\ No newline at end of property
Index: tags/2.8.3/wb/account/email.php
===================================================================
--- tags/2.8.3/wb/account/email.php	(nonexistent)
+++ tags/2.8.3/wb/account/email.php	(revision 1610)
@@ -0,0 +1,47 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// Get entered values
+	$password = $wb->get_post('current_password');
+	$email = $wb->get_post('email');
+// validate password
+	$sql  = "SELECT `user_id` FROM `".TABLE_PREFIX."users` ";
+	$sql .= "WHERE `user_id` = ".$wb->get_user_id()." AND `password` = '".md5($password)."'";
+	$rowset = $database->query($sql);
+// Validate values
+	if($rowset->numRows() == 0) {
+		$error[] = $MESSAGE['PREFERENCES']['CURRENT_PASSWORD_INCORRECT'];
+	}else {
+		if(!$wb->validate_email($email)) {
+			$error[] = $MESSAGE['USERS']['INVALID_EMAIL'];
+		}else {
+			$email = $wb->add_slashes($email);
+// Update the database
+			$sql = "UPDATE `".TABLE_PREFIX."users` SET `email` = '".$email."' WHERE `user_id` = ".$wb->get_user_id();
+			$database->query($sql);
+			if($database->is_error()) {
+				$error[] = $database->get_error();
+			} else {
+				$success[] = $MESSAGE['PREFERENCES']['EMAIL_UPDATED'];
+				$_SESSION['EMAIL'] = $email;
+			}
+		}
+	}

Property changes on: tags/2.8.3/wb/account/email.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/preferences.php
===================================================================
--- tags/2.8.3/wb/account/preferences.php	(nonexistent)
+++ tags/2.8.3/wb/account/preferences.php	(revision 1610)
@@ -0,0 +1,57 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require_once('../config.php');
+
+if(!FRONTEND_LOGIN) {
+	if(INTRO_PAGE) {
+		header('Location: '.WB_URL.PAGES_DIRECTORY.'/index.php');
+		exit(0);
+	} else {
+		header('Location: '.WB_URL.'/index.php');
+		exit(0);
+	}
+}
+
+require_once(WB_PATH.'/framework/class.frontend.php');
+$wb_inst = new wb();
+if ($wb_inst->is_authenticated()==false) {
+	header('Location: '.WB_URL.'/account/login.php');
+	exit(0);
+}
+
+$page_id = !empty($_SESSION['PAGE_ID']) ? $_SESSION['PAGE_ID'] : 0;
+
+// Required page details
+/* */
+// $page_id = 0;
+$page_description = '';
+$page_keywords = '';
+define('PAGE_ID', $page_id);
+define('ROOT_PARENT', 0);
+define('PARENT', 0);
+define('LEVEL', 0);
+
+define('PAGE_TITLE', $MENU['PREFERENCES']);
+define('MENU_TITLE', $MENU['PREFERENCES']);
+define('MODULE', '');
+define('VISIBILITY', 'public');
+
+define('PAGE_CONTENT', WB_PATH.'/account/preferences_form.php');
+// Include the index (wrapper) file
+require(WB_PATH.'/index.php');

Property changes on: tags/2.8.3/wb/account/preferences.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/account/index.php
===================================================================
--- tags/2.8.3/wb/account/index.php	(nonexistent)
+++ tags/2.8.3/wb/account/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         account
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/account/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/framework/functions.php
===================================================================
--- tags/2.8.3/wb/framework/functions.php	(nonexistent)
+++ tags/2.8.3/wb/framework/functions.php	(revision 1610)
@@ -0,0 +1,1321 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         framework
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+// Define that this file has been loaded
+define('FUNCTIONS_FILE_LOADED', true);
+
+/**
+ * @description: recursively delete a non empty directory
+ * @param string $directory :
+ * @param bool $empty : true if you want the folder just emptied, but not deleted
+ *                      false, or just simply leave it out, the given directory will be deleted, as well
+ * @return boolean: list of ro-dirs
+ * @from http://www.php.net/manual/de/function.rmdir.php#98499
+ */
+function rm_full_dir($directory, $empty = false) {
+    
+	if(substr($directory,-1) == "/") {
+        $directory = substr($directory,0,-1);
+    }
+   // If suplied dirname is a file then unlink it
+    if (is_file( $directory )) {
+	  $retval = unlink($directory);
+	  clearstatcache();
+      return $retval;
+    }
+    if(!file_exists($directory) || !is_dir($directory)) {
+        return false;
+    } elseif(!is_readable($directory)) {
+        return false;
+    } else {
+        $directoryHandle = opendir($directory);
+        while ($contents = readdir($directoryHandle))
+		{
+            if($contents != '.' && $contents != '..')
+			{
+                $path = $directory . "/" . $contents;
+                if(is_dir($path)) {
+                    rm_full_dir($path);
+                } else {
+                    unlink($path);
+					clearstatcache();
+                }
+            }
+        }
+        closedir($directoryHandle);
+        if($empty == false) {
+            if(!rmdir($directory)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
+
+/*
+ * returns a recursive list of all subdirectories from a given directory
+ * @access  public
+ * @param   string  $directory: from this dir the recursion will start
+ * @param   bool    $show_hidden:  if set to TRUE also hidden dirs (.dir) will be shown
+ * @return  array
+ * example:
+ *  /srv/www/httpdocs/wb/media/a/b/c/
+ *  /srv/www/httpdocs/wb/media/a/b/d/
+ * directory_list('/srv/www/httpdocs/wb/media/') will return:
+ *  /a
+ *  /a/b
+ *  /a/b/c
+ *  /a/b/d
+ */
+ function directory_list($directory, $show_hidden = false)
+{
+	$result_list = array();
+	if (is_dir($directory))
+    {
+    	$dir = dir($directory); // Open the directory
+    	while (false !== $entry = $dir->read()) // loop through the directory
+		{
+			if($entry == '.' || $entry == '..') { continue; } // Skip pointers
+			if($entry[0] == '.' && $show_hidden == false) { continue; } // Skip hidden files
+    		if (is_dir("$directory/$entry")) { // Add dir and contents to list
+    			$result_list = array_merge($result_list, directory_list("$directory/$entry"));
+    			$result_list[] = "$directory/$entry";
+    		}
+    	}
+        $dir->close();
+    }
+	// sorting
+	if(natcasesort($result_list)) {
+		// new indexing
+		$result_list = array_merge($result_list);
+	}
+	return $result_list; // Now return the list
+}
+
+// Function to open a directory and add to a dir list
+function chmod_directory_contents($directory, $file_mode)
+{
+	if (is_dir($directory))
+    {
+    	// Set the umask to 0
+    	$umask = umask(0);
+    	// Open the directory then loop through its contents
+    	$dir = dir($directory);
+    	while (false !== $entry = $dir->read())
+		{
+    		// Skip pointers
+    		if($entry[0] == '.') { continue; }
+    		// Chmod the sub-dirs contents
+    		if(is_dir("$directory/$entry")) {
+    			chmod_directory_contents($directory.'/'.$entry, $file_mode);
+    		}
+    		change_mode($directory.'/'.$entry);
+    	}
+        $dir->close();
+    	// Restore the umask
+    	umask($umask);
+    }
+}
+
+/**
+* Scan a given directory for dirs and files.
+*
+* usage: scan_current_dir ($root = '' )
+*
+* @param     $root   set a absolute rootpath as string. if root is empty the current path will be scan
+* @param     $search set a search pattern for files, empty search brings all files
+* @access    public
+* @return    array    returns a natsort array with keys 'path' and 'filename'
+*
+*/
+if(!function_exists('scan_current_dir'))
+{
+	function scan_current_dir($root = '', $search = '/.*/')
+	{
+	    $FILE = array();
+		$array = array();
+	    clearstatcache();
+	    $root = empty ($root) ? getcwd() : $root;
+	    if (($handle = opendir($root)))
+	    {
+	    // Loop through the files and dirs an add to list  DIRECTORY_SEPARATOR
+	        while (false !== ($file = readdir($handle)))
+	        {
+	            if (substr($file, 0, 1) != '.' && $file != 'index.php')
+	            {
+	                if (is_dir($root.'/'.$file)) {
+	                    $FILE['path'][] = $file;
+	                } elseif (preg_match($search, $file, $array) ) {
+	                    $FILE['filename'][] = $array[0];
+	                }
+	            }
+	        }
+	        $close_verz = closedir($handle);
+	    }
+		// sorting
+	    if (isset ($FILE['path']) && natcasesort($FILE['path'])) {
+			// new indexing
+	        $FILE['path'] = array_merge($FILE['path']);
+	    }
+		// sorting
+	    if (isset ($FILE['filename']) && natcasesort($FILE['filename'])) {
+			// new indexing
+	        $FILE['filename'] = array_merge($FILE['filename']);
+	    }
+	    return $FILE;
+	}
+}
+
+// Function to open a directory and add to a file list
+function file_list($directory, $skip = array(), $show_hidden = false)
+{
+	$result_list = array();
+	if (is_dir($directory))
+    {
+    	$dir = dir($directory); // Open the directory
+		while (false !== ($entry = $dir->read())) // loop through the directory
+		{
+			if($entry == '.' || $entry == '..') { continue; } // Skip pointers
+			if($entry[0] == '.' && $show_hidden == false) { continue; } // Skip hidden files
+			if( sizeof($skip) > 0 && in_array($entry, $skip) ) { continue; } // Check if we to skip anything else
+			if(is_file( $directory.'/'.$entry)) { // Add files to list
+				$result_list[] = $directory.'/'.$entry;
+			}
+		}
+		$dir->close(); // Now close the folder object
+	}
+
+    // make the list nice. Not all OS do this itself
+	if(natcasesort($result_list)) {
+		$result_list = array_merge($result_list);
+	}
+	return $result_list;
+}
+
+// Function to get a list of home folders not to show
+function get_home_folders()
+{
+	global $database, $admin;
+	$home_folders = array();
+	// Only return home folders is this feature is enabled
+	// and user is not admin
+//	if(HOME_FOLDERS AND ($_SESSION['GROUP_ID']!='1')) {
+	if(HOME_FOLDERS AND (!in_array('1',explode(',', $_SESSION['GROUPS_ID']))))
+	{
+		$sql  = 'SELECT `home_folder` FROM `'.TABLE_PREFIX.'users` ';
+		$sql .= 'WHERE `home_folder`!=\''.$admin->get_home_folder().'\'';
+		$query_home_folders = $database->query($sql);
+		if($query_home_folders->numRows() > 0)
+		{
+			while($folder = $query_home_folders->fetchRow()) {
+				$home_folders[$folder['home_folder']] = $folder['home_folder'];
+			}
+		}
+		function remove_home_subs($directory = '/', $home_folders = '')
+		{
+			if( ($handle = opendir(WB_PATH.MEDIA_DIRECTORY.$directory)) )
+			{
+				// Loop through the dirs to check the home folders sub-dirs are not shown
+				while(false !== ($file = readdir($handle)))
+				{
+					if($file[0] != '.' && $file != 'index.php')
+					{
+						if(is_dir(WB_PATH.MEDIA_DIRECTORY.$directory.'/'.$file))
+						{
+							if($directory != '/') {
+								$file = $directory.'/'.$file;
+							}else {
+								$file = '/'.$file;
+							}
+							foreach($home_folders AS $hf)
+							{
+								$hf_length = strlen($hf);
+								if($hf_length > 0) {
+									if(substr($file, 0, $hf_length+1) == $hf) {
+										$home_folders[$file] = $file;
+									}
+								}
+							}
+							$home_folders = remove_home_subs($file, $home_folders);
+						}
+					}
+				}
+			}
+			return $home_folders;
+		}
+		$home_folders = remove_home_subs('/', $home_folders);
+	}
+	return $home_folders;
+}
+
+/*
+ * @param object &$wb: $wb from frontend or $admin from backend
+ * @return array: list of new entries
+ * @description: callback remove path in files/dirs stored in array
+ * @example: array_walk($array,'remove_path',PATH);
+ */
+//
+function remove_path(&$path, $key, $vars = '')
+{
+	$path = str_replace($vars, '', $path);
+}
+
+/*
+ * @param object &$wb: $wb from frontend or $admin from backend
+ * @return array: list of ro-dirs
+ * @description: returns a list of directories beyound /wb/media which are ReadOnly for current user
+ */
+function media_dirs_ro( &$wb )
+{
+	global $database;
+	// if user is admin or home-folders not activated then there are no restrictions
+	$allow_list = array();
+	if( $wb->get_user_id() == 1 || !HOME_FOLDERS ) {
+		return array();
+	}
+	// at first read any dir and subdir from /media
+	$full_list = directory_list( WB_PATH.MEDIA_DIRECTORY );
+	// add own home_folder to allow-list
+	if( $wb->get_home_folder() ) {
+		// old: $allow_list[] = get_home_folder();
+		$allow_list[] = $wb->get_home_folder();
+	}
+	// get groups of current user
+	$curr_groups = $wb->get_groups_id();
+	// if current user is in admin-group
+	if( ($admin_key = array_search('1', $curr_groups)) !== false)
+	{
+		// remove admin-group from list
+		unset($curr_groups[$admin_key]);
+		// search for all users where the current user is admin from
+		foreach( $curr_groups as $group)
+		{
+			$sql  = 'SELECT `home_folder` FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE (FIND_IN_SET(\''.$group.'\', `groups_id`) > 0) AND `home_folder` <> \'\' AND `user_id` <> '.$wb->get_user_id();
+			if( ($res_hf = $database->query($sql)) != null ) {
+				while( $rec_hf = $res_hf->fetchrow() ) {
+					$allow_list[] = $rec_hf['home_folder'];
+				}
+			}
+		}
+	}
+	$tmp_array = $full_list;
+	// create a list for readonly dir
+    $array = array();
+	while( sizeof($tmp_array) > 0)
+	{
+        $tmp = array_shift($tmp_array);
+        $x = 0;
+		while($x < sizeof($allow_list)) {
+			if(strpos ($tmp,$allow_list[$x])) {
+				$array[] = $tmp;
+			}
+			$x++;
+		}
+	}
+	$full_list = array_diff( $full_list, $array );
+	$tmp = array();
+	$full_list = array_merge($tmp,$full_list);
+	return $full_list;
+}
+
+/*
+ * @param object &$wb: $wb from frontend or $admin from backend
+ * @return array: list of rw-dirs
+ * @description: returns a list of directories beyound /wb/media which are ReadWrite for current user
+ */
+function media_dirs_rw ( &$wb )
+{
+	global $database;
+	// if user is admin or home-folders not activated then there are no restrictions
+	// at first read any dir and subdir from /media
+	$full_list = directory_list( WB_PATH.MEDIA_DIRECTORY );
+    $array = array();
+	$allow_list = array();
+	if( ($wb->ami_group_member('1')) && !HOME_FOLDERS ) {
+		return $full_list;
+	}
+	// add own home_folder to allow-list
+	if( $wb->get_home_folder() ) {
+	  	$allow_list[] = $wb->get_home_folder();
+	} else {
+		$array = $full_list;
+	}
+	// get groups of current user
+	$curr_groups = $wb->get_groups_id();
+	// if current user is in admin-group
+	if( ($admin_key = array_search('1', $curr_groups)) == true)
+	{
+		// remove admin-group from list
+		// unset($curr_groups[$admin_key]);
+		// search for all users where the current user is admin from
+		foreach( $curr_groups as $group)
+		{
+			$sql  = 'SELECT `home_folder` FROM `'.TABLE_PREFIX.'users` ';
+			$sql .= 'WHERE (FIND_IN_SET(\''.$group.'\', `groups_id`) > 0) AND `home_folder` <> \'\' AND `user_id` <> '.$wb->get_user_id();
+			if( ($res_hf = $database->query($sql)) != null ) {
+				while( $rec_hf = $res_hf->fetchrow() ) {
+					$allow_list[] = $rec_hf['home_folder'];
+				}
+			}
+		}
+	}
+
+	$tmp_array = $full_list;
+	// create a list for readwrite dir
+	while( sizeof($tmp_array) > 0)
+	{
+        $tmp = array_shift($tmp_array);
+        $x = 0;
+		while($x < sizeof($allow_list)) {
+			if(strpos ($tmp,$allow_list[$x])) {
+				$array[] = $tmp;
+			}
+			$x++;
+		}
+	}
+	$tmp = array();
+    $array = array_unique($array);
+	$full_list = array_merge($tmp,$array);
+    unset($array);
+    unset($allow_list);
+	return $full_list;
+}
+
+// Function to create directories
+function make_dir($dir_name, $dir_mode = OCTAL_DIR_MODE, $recursive=true)
+{
+	$retVal = false;
+	if(!is_dir($dir_name))
+    {
+		$retVal = mkdir($dir_name, $dir_mode,$recursive);
+	}
+	return $retVal;
+}
+
+// Function to chmod files and directories
+function change_mode($name)
+{
+	if(OPERATING_SYSTEM != 'windows')
+    {
+		// Only chmod if os is not windows
+		if(is_dir($name)) {
+			$mode = OCTAL_DIR_MODE;
+		}else {
+			$mode = OCTAL_FILE_MODE;
+		}
+		if(file_exists($name)) {
+			$umask = umask(0);
+			chmod($name, $mode);
+			umask($umask);
+			return true;
+		}else {
+			return false;
+		}
+	}else {
+		return true;
+	}
+}
+
+// Function to figure out if a parent exists
+function is_parent($page_id)
+{
+	global $database;
+	// Get parent
+	$sql = 'SELECT `parent` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
+	$parent = $database->get_one($sql);
+	// If parent isnt 0 return its ID
+	if(is_null($parent)) {
+		return false;
+	}else {
+		return $parent;
+	}
+}
+
+// Function to work out level
+function level_count($page_id)
+{
+	global $database;
+	// Get page parent
+	$sql = 'SELECT `parent` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
+	$parent = $database->get_one($sql);
+	if($parent > 0)
+	{	// Get the level of the parent
+		$sql = 'SELECT `level` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$parent;
+		$level = $database->get_one($sql);
+		return $level+1;
+	}else {
+		return 0;
+	}
+}
+
+// Function to work out root parent
+function root_parent($page_id)
+{
+	global $database;
+	// Get page details
+	$sql = 'SELECT `parent`, `level` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
+	$query_page = $database->query($sql);
+	$fetch_page = $query_page->fetchRow();
+	$parent = $fetch_page['parent'];
+	$level = $fetch_page['level'];
+	if($level == 1) {
+		return $parent;
+	}elseif($parent == 0) {
+		return $page_id;
+	}else {	// Figure out what the root parents id is
+		$parent_ids = array_reverse(get_parent_ids($page_id));
+		return $parent_ids[0];
+	}
+}
+
+// Function to get page title
+function get_page_title($id)
+{
+	global $database;
+	// Get title
+	$sql = 'SELECT `page_title` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$id;
+	$page_title = $database->get_one($sql);
+	return $page_title;
+}
+
+// Function to get a pages menu title
+function get_menu_title($id)
+{
+	global $database;
+	// Get title
+	$sql = 'SELECT `menu_title` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$id;
+	$menu_title = $database->get_one($sql);
+	return $menu_title;
+}
+
+// Function to get all parent page titles
+function get_parent_titles($parent_id)
+{
+	$titles[] = get_menu_title($parent_id);
+	if(is_parent($parent_id) != false) {
+		$parent_titles = get_parent_titles(is_parent($parent_id));
+		$titles = array_merge($titles, $parent_titles);
+	}
+	return $titles;
+}
+
+// Function to get all parent page id's
+function get_parent_ids($parent_id)
+{
+	$ids[] = $parent_id;
+	if(is_parent($parent_id) != false) {
+		$parent_ids = get_parent_ids(is_parent($parent_id));
+		$ids = array_merge($ids, $parent_ids);
+	}
+	return $ids;
+}
+
+// Function to genereate page trail
+function get_page_trail($page_id)
+{
+	return implode(',', array_reverse(get_parent_ids($page_id)));
+}
+
+// Function to get all sub pages id's
+function get_subs($parent, array $subs )
+{
+	// Connect to the database
+	global $database;
+	// Get id's
+	$sql = 'SELECT `page_id` FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$parent;
+	if( ($query = $database->query($sql)) ) {
+		while($fetch = $query->fetchRow()) {
+			$subs[] = $fetch['page_id'];
+			// Get subs of this sub recursive
+			$subs = get_subs($fetch['page_id'], $subs);
+		}
+	}
+	// Return subs array
+	return $subs;
+}
+
+// Function as replacement for php's htmlspecialchars()
+// Will not mangle HTML-entities
+function my_htmlspecialchars($string)
+{
+	$string = preg_replace('/&(?=[#a-z0-9]+;)/i', '__amp;_', $string);
+	$string = strtr($string, array('<'=>'&lt;', '>'=>'&gt;', '&'=>'&amp;', '"'=>'&quot;', '\''=>'&#39;'));
+	$string = preg_replace('/__amp;_(?=[#a-z0-9]+;)/i', '&', $string);
+	return($string);
+}
+
+// Convert a string from mixed html-entities/umlauts to pure $charset_out-umlauts
+// Will replace all numeric and named entities except &gt; &lt; &apos; &quot; &#039; &nbsp;
+// In case of error the returned string is unchanged, and a message is emitted.
+function entities_to_umlauts($string, $charset_out=DEFAULT_CHARSET)
+{
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	return entities_to_umlauts2($string, $charset_out);
+}
+
+// Will convert a string in $charset_in encoding to a pure ASCII string with HTML-entities.
+// In case of error the returned string is unchanged, and a message is emitted.
+function umlauts_to_entities($string, $charset_in=DEFAULT_CHARSET)
+{
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	return umlauts_to_entities2($string, $charset_in);
+}
+
+// Function to convert a page title to a page filename
+function page_filename($string)
+{
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	$string = entities_to_7bit($string);
+	// Now remove all bad characters
+	$bad = array(
+	'\'', /* /  */ '"', /* " */	'<', /* < */	'>', /* > */
+	'{', /* { */	'}', /* } */	'[', /* [ */	']', /* ] */	'`', /* ` */
+	'!', /* ! */	'@', /* @ */	'#', /* # */	'$', /* $ */	'%', /* % */
+	'^', /* ^ */	'&', /* & */	'*', /* * */	'(', /* ( */	')', /* ) */
+	'=', /* = */	'+', /* + */	'|', /* | */	'/', /* / */	'\\', /* \ */
+	';', /* ; */	':', /* : */	',', /* , */	'?' /* ? */
+	);
+	$string = str_replace($bad, '', $string);
+	// replace multiple dots in filename to single dot and (multiple) dots at the end of the filename to nothing
+	$string = preg_replace(array('/\.+/', '/\.+$/'), array('.', ''), $string);
+	// Now replace spaces with page spcacer
+	$string = trim($string);
+	$string = preg_replace('/(\s)+/', PAGE_SPACER, $string);
+	// Now convert to lower-case
+	$string = strtolower($string);
+	// If there are any weird language characters, this will protect us against possible problems they could cause
+	$string = str_replace(array('%2F', '%'), array('/', ''), urlencode($string));
+	// Finally, return the cleaned string
+	return $string;
+}
+
+// Function to convert a desired media filename to a clean mediafilename
+function media_filename($string)
+{
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	$string = entities_to_7bit($string);
+	// Now remove all bad characters
+	$bad = array('\'','"','`','!','@','#','$','%','^','&','*','=','+','|','/','\\',';',':',',','?');
+	$string = str_replace($bad, '', $string);
+	// replace multiple dots in filename to single dot and (multiple) dots at the end of the filename to nothing
+	$string = preg_replace(array('/\.+/', '/\.+$/', '/\s/'), array('.', '', '_'), $string);
+	// Clean any page spacers at the end of string
+	$string = trim($string);
+	// Finally, return the cleaned string
+	return $string;
+}
+
+// Function to work out a page link
+if(!function_exists('page_link'))
+{
+	function page_link($link)
+	{
+		global $admin;
+		return $admin->page_link($link);
+	}
+}
+
+// Create a new directory and/or protected file in the given directory
+function createFolderProtectFile($sAbsDir='',$make_dir=true)
+{
+	global $admin, $MESSAGE;
+	$retVal = array();
+	$wb_path = rtrim(str_replace('\/\\', '/', WB_PATH), '/');
+    if( ($sAbsDir=='') || ($sAbsDir == $wb_path) ) { return $retVal;}
+
+	if ( $make_dir==true ) {
+		// Check to see if the folder already exists
+		if(file_exists($sAbsDir)) {
+			// $admin->print_error($MESSAGE['MEDIA_DIR_EXISTS']);
+			$retVal[] = basename($sAbsDir).'::'.$MESSAGE['MEDIA_DIR_EXISTS'];
+		}
+		if (!is_dir($sAbsDir) && !make_dir($sAbsDir) ) {
+			// $admin->print_error($MESSAGE['MEDIA_DIR_NOT_MADE']);
+			$retVal[] = basename($sAbsDir).'::'.$MESSAGE['MEDIA_DIR_NOT_MADE'];
+		} else {
+			change_mode($sAbsDir);
+		}
+	}
+
+	if( is_writable($sAbsDir) )
+	{
+        // if(file_exists($sAbsDir.'/index.php')) { unlink($sAbsDir.'/index.php'); }
+	    // Create default "index.php" file
+		$rel_pages_dir = str_replace($wb_path, '', dirname($sAbsDir) );
+		$step_back = str_repeat( '../', substr_count($rel_pages_dir, '/')+1 );
+
+		$sResponse  = $_SERVER['SERVER_PROTOCOL'].' 301 Moved Permanently';
+		$content =
+			'<?php'."\n".
+			'// *** This file is generated by WebsiteBaker Ver.'.VERSION."\n".
+			'// *** Creation date: '.date('c')."\n".
+			'// *** Do not modify this file manually'."\n".
+			'// *** WB will rebuild this file from time to time!!'."\n".
+			'// *************************************************'."\n".
+			"\t".'header(\''.$sResponse.'\');'."\n".
+			"\t".'header(\'Location: '.WB_URL.'/index.php\');'."\n".
+			'// *************************************************'."\n";
+		$filename = $sAbsDir.'/index.php';
+
+		// write content into file
+		  if(is_writable($filename) || !file_exists($filename)) {
+		      if(file_put_contents($filename, $content)) {
+		//    print 'create => '.str_replace( $wb_path,'',$filename).'<br />';
+		          change_mode($filename, 'file');
+		      }else {
+		    $retVal[] = $MESSAGE['GENERIC_BAD_PERMISSIONS'].' :: '.$filename;
+		   }
+		  }
+		 } else {
+		   $retVal[] = $MESSAGE['GENERIC_BAD_PERMISSIONS'];
+		 }
+		 return $retVal;
+}
+
+function rebuildFolderProtectFile($dir='')
+{
+	$retVal = array();
+	$dir = rtrim(str_replace('\/\\', '/', $dir), '/');
+	try {
+		$files = array();
+		$files[] = $dir;
+		foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $fileInfo) {
+			$files[] = $fileInfo->getPath();
+		}
+		$files = array_unique($files);
+		foreach( $files as $file) {
+			$protect_file = rtrim(str_replace('\/\\', '/', $file), '/');
+			$retVal[] = createFolderProtectFile($protect_file,false);
+		}
+	} catch ( Exception $e ) {
+		$retVal[] = $MESSAGE['MEDIA_DIR_ACCESS_DENIED'];
+	}
+	return $retVal;
+}
+
+// Create a new file in the pages directory
+function create_access_file($filename,$page_id,$level)
+{
+	global $admin, $MESSAGE;
+	// First make sure parent folder exists
+	$parent_folders = explode('/',str_replace(WB_PATH.PAGES_DIRECTORY, '', dirname($filename)));
+	$parents = '';
+	foreach($parent_folders AS $parent_folder)
+	{
+		if($parent_folder != '/' AND $parent_folder != '')
+		{
+			$parents .= '/'.$parent_folder;
+			$acces_file = WB_PATH.PAGES_DIRECTORY.$parents;
+			// can only be dirs
+			if(!file_exists($acces_file)) {
+				if(!make_dir($acces_file)) {
+					$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE_FOLDER']);
+				}
+			}
+		}
+	}
+	// The depth of the page directory in the directory hierarchy
+	// '/pages' is at depth 1
+	$pages_dir_depth = count(explode('/',PAGES_DIRECTORY))-1;
+	// Work-out how many ../'s we need to get to the index page
+	$index_location = '';
+	for($i = 0; $i < $level + $pages_dir_depth; $i++) {
+		$index_location .= '../';
+	}
+	$content =
+		'<?php'."\n".
+		'// *** This file is generated by WebsiteBaker Ver.'.VERSION."\n".
+		'// *** Creation date: '.date('c')."\n".
+		'// *** Do not modify this file manually'."\n".
+		'// *** WB will rebuild this file from time to time!!'."\n".
+		'// *************************************************'."\n".
+		"\t".'$page_id    = '.$page_id.';'."\n".
+		"\t".'require(\''.$index_location.'index.php\');'."\n".
+		'// *************************************************'."\n";
+
+	if( ($handle = fopen($filename, 'w')) ) {
+		fwrite($handle, $content);
+		fclose($handle);
+		// Chmod the file
+		change_mode($filename);
+	} else {
+		$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
+	}
+	return;
+ }
+
+// Function for working out a file mime type (if the in-built PHP one is not enabled)
+if(!function_exists('mime_content_type'))
+{
+    function mime_content_type($filename)
+	{
+	    $mime_types = array(
+            'txt'	=> 'text/plain',
+            'htm'	=> 'text/html',
+            'html'	=> 'text/html',
+            'php'	=> 'text/html',
+            'css'	=> 'text/css',
+            'js'	=> 'application/javascript',
+            'json'	=> 'application/json',
+            'xml'	=> 'application/xml',
+            'swf'	=> 'application/x-shockwave-flash',
+            'flv'	=> 'video/x-flv',
+
+            // images
+            'png'	=> 'image/png',
+            'jpe'	=> 'image/jpeg',
+            'jpeg'	=> 'image/jpeg',
+            'jpg'	=> 'image/jpeg',
+            'gif'	=> 'image/gif',
+            'bmp'	=> 'image/bmp',
+            'ico'	=> 'image/vnd.microsoft.icon',
+            'tiff'	=> 'image/tiff',
+            'tif'	=> 'image/tiff',
+            'svg'	=> 'image/svg+xml',
+            'svgz'	=> 'image/svg+xml',
+
+            // archives
+            'zip'	=> 'application/zip',
+            'rar'	=> 'application/x-rar-compressed',
+            'exe'	=> 'application/x-msdownload',
+            'msi'	=> 'application/x-msdownload',
+            'cab'	=> 'application/vnd.ms-cab-compressed',
+
+            // audio/video
+            'mp3'	=> 'audio/mpeg',
+            'mp4'	=> 'audio/mpeg',
+            'qt'	=> 'video/quicktime',
+            'mov'	=> 'video/quicktime',
+
+            // adobe
+            'pdf'	=> 'application/pdf',
+            'psd'	=> 'image/vnd.adobe.photoshop',
+            'ai'	=> 'application/postscript',
+            'eps'	=> 'application/postscript',
+            'ps'	=> 'application/postscript',
+
+            // ms office
+            'doc'	=> 'application/msword',
+            'rtf'	=> 'application/rtf',
+            'xls'	=> 'application/vnd.ms-excel',
+            'ppt'	=> 'application/vnd.ms-powerpoint',
+
+            // open office
+            'odt'	=> 'application/vnd.oasis.opendocument.text',
+            'ods'	=> 'application/vnd.oasis.opendocument.spreadsheet',
+        );
+        $temp = explode('.',$filename);
+        $ext = strtolower(array_pop($temp));
+        if (array_key_exists($ext, $mime_types)) {
+            return $mime_types[$ext];
+        }elseif (function_exists('finfo_open')) {
+            $finfo = finfo_open(FILEINFO_MIME);
+            $mimetype = finfo_file($finfo, $filename);
+            finfo_close($finfo);
+            return $mimetype;
+        }else {
+            return 'application/octet-stream';
+        }
+    }
+}
+
+// Generate a thumbnail from an image
+function make_thumb($source, $destination, $size)
+{
+	// Check if GD is installed
+	if(extension_loaded('gd') && function_exists('imageCreateFromJpeg'))
+	{
+		// First figure out the size of the thumbnail
+		list($original_x, $original_y) = getimagesize($source);
+		if ($original_x > $original_y) {
+			$thumb_w = $size;
+			$thumb_h = $original_y*($size/$original_x);
+		}
+		if ($original_x < $original_y) {
+			$thumb_w = $original_x*($size/$original_y);
+			$thumb_h = $size;
+		}
+		if ($original_x == $original_y) {
+			$thumb_w = $size;
+			$thumb_h = $size;
+		}
+		// Now make the thumbnail
+		$source = imageCreateFromJpeg($source);
+		$dst_img = ImageCreateTrueColor($thumb_w, $thumb_h);
+		imagecopyresampled($dst_img,$source,0,0,0,0,$thumb_w,$thumb_h,$original_x,$original_y);
+		imagejpeg($dst_img, $destination);
+		// Clear memory
+		imagedestroy($dst_img);
+		imagedestroy($source);
+	   // Return true
+		return true;
+	} else {
+		return false;
+	}
+}
+
+/*
+ * Function to work-out a single part of an octal permission value
+ *
+ * @param mixed $octal_value: an octal value as string (i.e. '0777') or real octal integer (i.e. 0777 | 777)
+ * @param string $who: char or string for whom the permission is asked( U[ser] / G[roup] / O[thers] )
+ * @param string $action: char or string with the requested action( r[ead..] / w[rite..] / e|x[ecute..] )
+ * @return boolean
+ */
+function extract_permission($octal_value, $who, $action)
+{
+	// Make sure that all arguments are set and $octal_value is a real octal-integer
+	if(($who == '') || ($action == '') || (preg_match( '/[^0-7]/', (string)$octal_value ))) {
+		return false; // invalid argument, so return false
+	}
+	// convert $octal_value into a decimal-integer to be sure having a valid value
+	$right_mask = octdec($octal_value);
+	$action_mask = 0;
+	// set the $action related bit in $action_mask
+	switch($action[0]) { // get action from first char of $action
+		case 'r':
+		case 'R':
+			$action_mask = 4; // set read-bit only (2^2)
+			break;
+		case 'w':
+		case 'W':
+			$action_mask = 2; // set write-bit only (2^1)
+			break;
+		case 'e':
+		case 'E':
+		case 'x':
+		case 'X':
+			$action_mask = 1; // set execute-bit only (2^0)
+			break;
+		default:
+			return false; // undefined action name, so return false
+	}
+	// shift action-mask into the right position
+	switch($who[0]) { // get who from first char of $who
+		case 'u':
+		case 'U':
+			$action_mask <<= 3; // shift left 3 bits
+		case 'g':
+		case 'G':
+			$action_mask <<= 3; // shift left 3 bits
+		case 'o':
+		case 'O':
+			/* NOP */
+			break;
+		default:
+			return false; // undefined who, so return false
+	}
+	return( ($right_mask & $action_mask) != 0 ); // return result of binary-AND
+}
+
+// Function to delete a page
+	function delete_page($page_id)
+	{
+		global $admin, $database, $MESSAGE;
+		// Find out more about the page
+		$sql  = 'SELECT `page_id`, `menu_title`, `page_title`, `level`, ';
+		$sql .=        '`link`, `parent`, `modified_by`, `modified_when` ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
+		$results = $database->query($sql);
+		if($database->is_error())    { $admin->print_error($database->get_error()); }
+		if($results->numRows() == 0) { $admin->print_error($MESSAGE['PAGES']['NOT_FOUND']); }
+		$results_array = $results->fetchRow();
+		$parent     = $results_array['parent'];
+		$level      = $results_array['level'];
+		$link       = $results_array['link'];
+		$page_title = $results_array['page_title'];
+		$menu_title = $results_array['menu_title'];
+		// Get the sections that belong to the page
+		$sql  = 'SELECT `section_id`, `module` FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE `page_id`='.$page_id;
+		$query_sections = $database->query($sql);
+		if($query_sections->numRows() > 0)
+		{
+			while($section = $query_sections->fetchRow()) {
+				// Set section id
+				$section_id = $section['section_id'];
+				// Include the modules delete file if it exists
+				if(file_exists(WB_PATH.'/modules/'.$section['module'].'/delete.php')) {
+					include(WB_PATH.'/modules/'.$section['module'].'/delete.php');
+				}
+			}
+		}
+		// Update the pages table
+		$sql = 'DELETE FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
+		$database->query($sql);
+		if($database->is_error()) {
+			$admin->print_error($database->get_error());
+		}
+		// Update the sections table
+		$sql = 'DELETE FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.$page_id;
+		$database->query($sql);
+		if($database->is_error()) {
+			$admin->print_error($database->get_error());
+		}
+		// Include the ordering class or clean-up ordering
+		include_once(WB_PATH.'/framework/class.order.php');
+		$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
+		$order->clean($parent);
+		// Unlink the page access file and directory
+		$directory = WB_PATH.PAGES_DIRECTORY.$link;
+		$filename = $directory.PAGE_EXTENSION;
+		$directory .= '/';
+		if(file_exists($filename))
+		{
+			if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/')) {
+				$admin->print_error($MESSAGE['PAGES']['CANNOT_DELETE_ACCESS_FILE']);
+			}else {
+				unlink($filename);
+				if( file_exists($directory) &&
+				   (rtrim($directory,'/') != WB_PATH.PAGES_DIRECTORY) &&
+				   (substr($link, 0, 1) != '.'))
+				{
+					rm_full_dir($directory);
+				}
+			}
+		}
+	}
+
+/*
+ * @param string $file: name of the file to read
+ * @param int $size: number of maximum bytes to read (0 = complete file)
+ * @return string: the content as string, false on error
+ */
+	function getFilePart($file, $size = 0)
+	{
+		$file_content = '';
+		if( file_exists($file) && is_file($file) && is_readable($file))
+		{
+			if($size == 0) {
+				$size = filesize($file);
+			}
+			if(($fh = fopen($file, 'rb'))) {
+				if( ($file_content = fread($fh, $size)) !== false ) {
+					return $file_content;
+				}
+				fclose($fh);
+			}
+		}
+		return false;
+	}
+
+	/**
+	* replace varnames with values in a string
+	*
+	* @param string $subject: stringvariable with vars placeholder
+	* @param array $replace: values to replace vars placeholder
+	* @return string
+	*/
+    function replace_vars($subject = '', &$replace = null )
+    {
+		if(is_array($replace))
+		{
+			foreach ($replace  as $key => $value) {
+				$subject = str_replace("{{".$key."}}", $value, $subject);
+			}
+		}
+		return $subject;
+    }
+
+// Load module into DB
+function load_module($directory, $install = false)
+{
+	global $database,$admin,$MESSAGE;
+	$retVal = false;
+	if(is_dir($directory) && file_exists($directory.'/info.php'))
+	{
+		require($directory.'/info.php');
+		if(isset($module_name))
+		{
+			if(!isset($module_license)) { $module_license = 'GNU General Public License'; }
+			if(!isset($module_platform) && isset($module_designed_for)) { $module_platform = $module_designed_for; }
+			if(!isset($module_function) && isset($module_type)) { $module_function = $module_type; }
+			$module_function = strtolower($module_function);
+			// Check that it doesn't already exist
+			$sqlwhere = 'WHERE `type` = \'module\' AND `directory` = \''.$module_directory.'\'';
+			$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'addons` '.$sqlwhere;
+			if( $database->get_one($sql) ) {
+				$sql  = 'UPDATE `'.TABLE_PREFIX.'addons` SET ';
+			}else{
+				// Load into DB
+				$sql  = 'INSERT INTO `'.TABLE_PREFIX.'addons` SET ';
+				$sqlwhere = '';
+			}
+			$sql .= '`directory`=\''.$module_directory.'\', ';
+			$sql .= '`name`=\''.$module_name.'\', ';
+			$sql .= '`description`=\''.addslashes($module_description).'\', ';
+			$sql .= '`type`=\'module\', ';
+			$sql .= '`function`=\''.$module_function.'\', ';
+			$sql .= '`version`=\''.$module_version.'\', ';
+			$sql .= '`platform`=\''.$module_platform.'\', ';
+			$sql .= '`author`=\''.addslashes($module_author).'\', ';
+			$sql .= '`license`=\''.addslashes($module_license).'\'';
+			$sql .= $sqlwhere;
+			$retVal = $database->query($sql);
+			// Run installation script
+			if($install == true) {
+				if(file_exists($directory.'/install.php')) {
+					require($directory.'/install.php');
+				}
+			}
+		}
+	}
+}
+
+// Load template into DB
+function load_template($directory)
+{
+	global $database, $admin;
+	$retVal = false;
+	if(is_dir($directory) && file_exists($directory.'/info.php'))
+	{
+		require($directory.'/info.php');
+		if(isset($template_name))
+		{
+			if(!isset($template_license)) {
+              $template_license = 'GNU General Public License';
+            }
+			if(!isset($template_platform) && isset($template_designed_for)) {
+              $template_platform = $template_designed_for;
+            }
+			if(!isset($template_function)) {
+              $template_function = 'template';
+            }
+			// Check that it doesn't already exist
+			$sqlwhere = 'WHERE `type`=\'template\' AND `directory`=\''.$template_directory.'\'';
+			$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'addons` '.$sqlwhere;
+			if( $database->get_one($sql) ) {
+				$sql  = 'UPDATE `'.TABLE_PREFIX.'addons` SET ';
+			}else{
+				// Load into DB
+				$sql  = 'INSERT INTO `'.TABLE_PREFIX.'addons` SET ';
+				$sqlwhere = '';
+			}
+			$sql .= '`directory`=\''.$template_directory.'\', ';
+			$sql .= '`name`=\''.$template_name.'\', ';
+			$sql .= '`description`=\''.addslashes($template_description).'\', ';
+			$sql .= '`type`=\'template\', ';
+			$sql .= '`function`=\''.$template_function.'\', ';
+			$sql .= '`version`=\''.$template_version.'\', ';
+			$sql .= '`platform`=\''.$template_platform.'\', ';
+			$sql .= '`author`=\''.addslashes($template_author).'\', ';
+			$sql .= '`license`=\''.addslashes($template_license).'\' ';
+			$sql .= $sqlwhere;
+			$retVal = $database->query($sql);
+		}
+	}
+	return $retVal;
+}
+
+// Load language into DB
+function load_language($file)
+{
+	global $database,$admin;
+	$retVal = false;
+	if (file_exists($file) && preg_match('#^([A-Z]{2}.php)#', basename($file)))
+	{
+		// require($file);  it's to large
+		// read contents of the template language file into string
+		$data = @file_get_contents(WB_PATH.'/languages/'.str_replace('.php','',basename($file)).'.php');
+		// use regular expressions to fetch the content of the variable from the string
+		$language_name = get_variable_content('language_name', $data, false, false);
+		$language_code = get_variable_content('language_code', $data, false, false);
+		$language_author = get_variable_content('language_author', $data, false, false);
+		$language_version = get_variable_content('language_version', $data, false, false);
+		$language_platform = get_variable_content('language_platform', $data, false, false);
+
+		if(isset($language_name))
+		{
+			if(!isset($language_license)) { $language_license = 'GNU General Public License'; }
+			if(!isset($language_platform) && isset($language_designed_for)) { $language_platform = $language_designed_for; }
+			// Check that it doesn't already exist
+			$sqlwhere = 'WHERE `type`=\'language\' AND `directory`=\''.$language_code.'\'';
+			$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'addons` '.$sqlwhere;
+			if( $database->get_one($sql) ) {
+				$sql  = 'UPDATE `'.TABLE_PREFIX.'addons` SET ';
+			}else{
+				// Load into DB
+				$sql  = 'INSERT INTO `'.TABLE_PREFIX.'addons` SET ';
+				$sqlwhere = '';
+			}
+			$sql .= '`directory`=\''.$language_code.'\', ';
+			$sql .= '`name`=\''.$language_name.'\', ';
+			$sql .= '`type`=\'language\', ';
+			$sql .= '`version`=\''.$language_version.'\', ';
+			$sql .= '`platform`=\''.$language_platform.'\', ';
+			$sql .= '`author`=\''.addslashes($language_author).'\', ';
+			$sql .= '`license`=\''.addslashes($language_license).'\' ';
+			$sql .= $sqlwhere;
+			$retVal = $database->query($sql);
+		}
+	}
+	return $retVal;
+}
+
+// Upgrade module info in DB, optionally start upgrade script
+function upgrade_module($directory, $upgrade = false)
+{
+	global $database, $admin, $MESSAGE, $new_module_version;
+	$mod_directory = WB_PATH.'/modules/'.$directory;
+	if(file_exists($mod_directory.'/info.php'))
+	{
+		require($mod_directory.'/info.php');
+		if(isset($module_name))
+		{
+			if(!isset($module_license)) { $module_license = 'GNU General Public License'; }
+			if(!isset($module_platform) && isset($module_designed_for)) { $module_platform = $module_designed_for; }
+			if(!isset($module_function) && isset($module_type)) { $module_function = $module_type; }
+			$module_function = strtolower($module_function);
+			// Check that it does already exist
+			$sql  = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'addons` ';
+			$sql .= 'WHERE `directory`=\''.$module_directory.'\'';
+			if( $database->get_one($sql) )
+			{
+				// Update in DB
+				$sql  = 'UPDATE `'.TABLE_PREFIX.'addons` SET ';
+				$sql .= '`version`=\''.$module_version.'\', ';
+				$sql .= '`description`=\''.addslashes($module_description).'\', ';
+				$sql .= '`platform`=\''.$module_platform.'\', ';
+				$sql .= '`author`=\''.addslashes($module_author).'\', ';
+				$sql .= '`license`=\''.addslashes($module_license).'\' ';
+				$sql .= 'WHERE `directory`=\''.$module_directory.'\' ';
+				$database->query($sql);
+				if($database->is_error()) {
+					$admin->print_error($database->get_error());
+				}
+				// Run upgrade script
+				if($upgrade == true) {
+					if(file_exists($mod_directory.'/upgrade.php')) {
+						require($mod_directory.'/upgrade.php');
+					}
+				}
+			}
+		}
+	}
+}
+
+// extracts the content of a string variable from a string (save alternative to including files)
+if(!function_exists('get_variable_content'))
+{
+	function get_variable_content($search, $data, $striptags=true, $convert_to_entities=true)
+	{
+		$match = '';
+		// search for $variable followed by 0-n whitespace then by = then by 0-n whitespace
+		// then either " or ' then 0-n characters then either " or ' followed by 0-n whitespace and ;
+		// the variable name is returned in $match[1], the content in $match[3]
+		if (preg_match('/(\$' .$search .')\s*=\s*("|\')(.*)\2\s*;/', $data, $match))
+		{
+			if(strip_tags(trim($match[1])) == '$' .$search) {
+				// variable name matches, return it's value
+				$match[3] = ($striptags == true) ? strip_tags($match[3]) : $match[3];
+				$match[3] = ($convert_to_entities == true) ? htmlentities($match[3]) : $match[3];
+				return $match[3];
+			}
+		}
+		return false;
+	}
+}
+
+/*
+ * @param string $modulname: like saved in addons.directory
+ * @param boolean $source: true reads from database, false from info.php
+ * @return string:  the version as string, if not found returns null
+ */
+
+	function get_modul_version($modulname, $source = true)
+	{
+		global $database;
+		$version = null;
+		if( $source != true )
+		{
+			$sql  = 'SELECT `version` FROM `'.TABLE_PREFIX.'addons` ';
+			$sql .= 'WHERE `directory`=\''.$modulname.'\'';
+			$version = $database->get_one($sql);
+		} else {
+			$info_file = WB_PATH.'/modules/'.$modulname.'/info.php';
+			if(file_exists($info_file)) {
+				if(($info_file = file_get_contents($info_file))) {
+					$version = get_variable_content('module_version', $info_file, false, false);
+					$version = ($version !== false) ? $version : null;
+				}
+			}
+		}
+		return $version;
+	}
+
+/*
+ * @param string $varlist: commaseperated list of varnames to move into global space
+ * @return bool:  false if one of the vars already exists in global space (error added to msgQueue)
+ */
+	function vars2globals_wrapper($varlist)
+	{
+		$retval = true;
+		if( $varlist != '')
+		{
+			$vars = explode(',', $varlist);
+			foreach( $vars as $var)
+			{
+				if( isset($GLOBALS[$var]) ){
+					ErrorLog::write( 'variabe $'.$var.' already defined in global space!!',__FILE__, __FUNCTION__, __LINE__);
+					$retval = false;
+				}else {
+					global $$var;
+				}
+			}
+		}
+		return $retval;
+	}
+
+/*
+ * filter directory traversal more thoroughly, thanks to hal 9000
+ * @param string $dir: directory relative to MEDIA_DIRECTORY
+ * @param bool $with_media_dir: true when to include MEDIA_DIRECTORY
+ * @return: false if directory traversal detected, real path if not
+ */
+	function check_media_path($directory, $with_media_dir = true)
+	{
+		$md = ($with_media_dir) ? MEDIA_DIRECTORY : '';
+		$dir = realpath(WB_PATH . $md . '/' . utf8_decode($directory));
+		$required = realpath(WB_PATH . MEDIA_DIRECTORY);
+		if (strstr($dir, $required)) {
+			return $dir;
+		} else {
+			return false;
+		}
+	}
+
+/*
+urlencode function and rawurlencode are mostly based on RFC 1738.
+However, since 2005 the current RFC in use for URIs standard is RFC 3986.
+Here is a function to encode URLs according to RFC 3986.
+*/
+if(!function_exists('url_encode')){
+	function url_encode($string) {
+	    $string = html_entity_decode($string,ENT_QUOTES,'UTF-8');
+	    $entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
+	    $replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
+	    return str_replace($entities,$replacements, rawurlencode($string));
+	}
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/functions.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/initialize.php
===================================================================
--- tags/2.8.3/wb/framework/initialize.php	(nonexistent)
+++ tags/2.8.3/wb/framework/initialize.php	(revision 1610)
@@ -0,0 +1,161 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         initialize
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+if(!defined('WB_PATH')) { throw new IllegalFileException(); }
+/* -------------------------------------------------------- */
+//set_include_path(get_include_path() . PATH_SEPARATOR . WB_PATH);
+
+if (file_exists(WB_PATH.'/framework/class.database.php')) {
+	$sTmpReferer = '';
+	if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '') {
+	        $tmp0 = parse_url($_SERVER['HTTP_REFERER']);
+       if ($tmp0 !== false) {
+                $tmp0['host'] = isset($tmp0['host']) ? $tmp0['host'] : '';
+                $tmp0['path'] = isset($tmp0['path']) ? $tmp0['path'] : '';
+                $tmp0['fragment'] = isset($tmp0['fragment']) ? '#'.$tmp0['fragment'] : '';
+                $tmp1 = parse_url(WB_URL);
+                if ($tmp1 !== false) {
+                        $tmp1['host'] = isset($tmp1['host']) ? $tmp1['host'] : '';
+                        $tmp1['path'] = isset($tmp1['path']) ? $tmp1['path'] : '';
+                        if (strpos($tmp0['host'].$tmp0['path'], $tmp1['host'].$tmp1['path']) !== false) {
+                                $sTmpReferer = WB_URL.$tmp0['path'].$tmp0['fragment'];
+                        }
+                }
+        }
+	}
+	$_SERVER['HTTP_REFERER'] = $sTmpReferer;
+	date_default_timezone_set('UTC');
+	require_once(WB_PATH.'/framework/class.database.php');
+
+	// Create database class
+	$database = new database();
+
+    if(version_compare(PHP_VERSION, '5.3.0', '<'))
+    {
+        set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
+    }
+	// Get website settings (title, keywords, description, header, and footer)
+	$query_settings = "SELECT name,value FROM ".TABLE_PREFIX."settings";
+	$get_settings = $database->query($query_settings);
+	if($database->is_error()) { die($database->get_error()); }
+	if($get_settings->numRows() == 0) { die("Settings not found"); }
+	while($setting = $get_settings->fetchRow()) {
+		$setting_name=strtoupper($setting['name']);
+		$setting_value=$setting['value'];
+		if ($setting_value=='false')
+			$setting_value=false;
+		if ($setting_value=='true')
+			$setting_value=true;
+		@define($setting_name,$setting_value);
+	}
+	@define('DO_NOT_TRACK', (isset($_SERVER['HTTP_DNT'])));
+	$string_file_mode = STRING_FILE_MODE;
+	define('OCTAL_FILE_MODE',(int) octdec($string_file_mode));
+	$string_dir_mode = STRING_DIR_MODE;
+	define('OCTAL_DIR_MODE',(int) octdec($string_dir_mode));
+	$sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
+	$sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
+	require_once($sSecMod);
+	if (!defined("WB_INSTALL_PROCESS")) {
+		// get CAPTCHA and ASP settings
+		$table = TABLE_PREFIX.'mod_captcha_control';
+		if( ($get_settings = $database->query("SELECT * FROM $table LIMIT 1")) ) {
+			if($get_settings->numRows() == 0) { die("CAPTCHA-Settings not found"); }
+			$setting = $get_settings->fetchRow();
+			if($setting['enabled_captcha'] == '1') define('ENABLED_CAPTCHA', true);
+			else define('ENABLED_CAPTCHA', false);
+			if($setting['enabled_asp'] == '1') define('ENABLED_ASP', true);
+			else define('ENABLED_ASP', false);
+			define('CAPTCHA_TYPE', $setting['captcha_type']);
+			define('ASP_SESSION_MIN_AGE', (int)$setting['asp_session_min_age']);
+			define('ASP_VIEW_MIN_AGE', (int)$setting['asp_view_min_age']);
+			define('ASP_INPUT_MIN_AGE', (int)$setting['asp_input_min_age']);
+		}
+	}
+
+	// set error-reporting
+	if(intval(ER_LEVEL) > 0 )
+	{
+		error_reporting(ER_LEVEL);
+		if( intval(ini_get ( 'display_errors' )) == 0 )
+		{
+			ini_set('display_errors', 1);
+		}
+	}
+	// Start a session
+	if(!defined('SESSION_STARTED')) {
+		session_name(APP_NAME.'_session_id');
+		@session_start();
+		define('SESSION_STARTED', true);
+	}
+	if(defined('ENABLED_ASP') && ENABLED_ASP && !isset($_SESSION['session_started']))
+		$_SESSION['session_started'] = time();
+
+	// Get users language
+	if(isset($_GET['lang']) AND $_GET['lang'] != '' AND !is_numeric($_GET['lang']) AND strlen($_GET['lang']) == 2) {
+	  	define('LANGUAGE', strtoupper($_GET['lang']));
+		$_SESSION['LANGUAGE']=LANGUAGE;
+	} else {
+		if(isset($_SESSION['LANGUAGE']) AND $_SESSION['LANGUAGE'] != '') {
+			define('LANGUAGE', $_SESSION['LANGUAGE']);
+		} else {
+			define('LANGUAGE', DEFAULT_LANGUAGE);
+		}
+	}
+	
+	// Load Language file
+	if(!defined('LANGUAGE_LOADED')) {
+		if(!file_exists(WB_PATH.'/languages/'.LANGUAGE.'.php')) {
+			exit('Error loading language file '.LANGUAGE.', please check configuration');
+		} else {
+			require_once(WB_PATH.'/languages/'.LANGUAGE.'.php');
+		}
+	}
+	
+	// Get users timezone
+	if(isset($_SESSION['TIMEZONE'])) {
+		define('TIMEZONE', $_SESSION['TIMEZONE']);
+	} else {
+		define('TIMEZONE', DEFAULT_TIMEZONE);
+	}
+	// Get users date format
+	if(isset($_SESSION['DATE_FORMAT'])) {
+		define('DATE_FORMAT', $_SESSION['DATE_FORMAT']);
+	} else {
+		define('DATE_FORMAT', DEFAULT_DATE_FORMAT);
+	}
+	// Get users time format
+	if(isset($_SESSION['TIME_FORMAT'])) {
+		define('TIME_FORMAT', $_SESSION['TIME_FORMAT']);
+	} else {
+		define('TIME_FORMAT', DEFAULT_TIME_FORMAT);
+	}
+
+	// Set Theme dir
+	define('THEME_URL', WB_URL.'/templates/'.DEFAULT_THEME);
+	define('THEME_PATH', WB_PATH.'/templates/'.DEFAULT_THEME);
+
+    // extended wb_settings
+	define('EDIT_ONE_SECTION', false);
+
+	define('EDITOR_WIDTH', 0);
+
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/initialize.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.frontend.php
===================================================================
--- tags/2.8.3/wb/framework/class.frontend.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.frontend.php	(revision 1610)
@@ -0,0 +1,450 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         frontend
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+require_once(WB_PATH.'/framework/class.wb.php');
+//require_once(WB_PATH.'/framework/SecureForm.php');
+
+class frontend extends wb {
+	// defaults
+	public $default_link,$default_page_id;
+	// when multiple blocks are used, show home page blocks on
+	// pages where no content is defined (search, login, ...)
+	public $default_block_content=true;
+
+	// page details
+	// page database row
+	public $page;
+	public $page_id,$page_title,$menu_title,$parent,$root_parent,$level,$position,$visibility;
+	public $page_description,$page_keywords,$page_link;
+	public $page_trail=array();
+	
+	public $page_access_denied;
+	public $page_no_active_sections;
+	
+	// website settings
+	public $website_title,$website_description,$website_keywords,$website_header,$website_footer;
+
+	// ugly database stuff
+	public $extra_where_sql, $sql_where_language;
+	
+	public function __construct() {
+		parent::__construct(SecureForm::FRONTEND);
+	}
+
+	public function page_select() {
+		global $page_id,$no_intro;
+		global $database;
+		// We have no page id and are supposed to show the intro page
+		if((INTRO_PAGE AND !isset($no_intro)) AND (!isset($page_id) OR !is_numeric($page_id))) {
+			// Since we have no page id check if we should go to intro page or default page
+			// Get intro page content
+			$filename = WB_PATH.PAGES_DIRECTORY.'/intro'.PAGE_EXTENSION;
+			if(file_exists($filename)) {
+				$handle = @fopen($filename, "r");
+				$content = @fread($handle, filesize($filename));
+				@fclose($handle);
+				$this->preprocess($content);
+				header("Location: ".WB_URL.PAGES_DIRECTORY."/intro".PAGE_EXTENSION."");   // send intro.php as header to allow parsing of php statements
+				echo ($content);
+				return false;
+			}
+		}
+		// Check if we should add page language sql code
+		if(PAGE_LANGUAGES) {
+			$this->sql_where_language = ' AND `language`=\''.LANGUAGE.'\'';
+		}
+		// Get default page
+		// Check for a page id
+		$table_p = TABLE_PREFIX.'pages';
+		$table_s = TABLE_PREFIX.'sections';
+		$now = time();
+		$sql  = 'SELECT `p`.`page_id`, `link` ';
+		$sql .= 'FROM `'.$table_p.'` AS `p` INNER JOIN `'.$table_s.'` USING(`page_id`) ';
+		$sql .= 'WHERE `parent`=0 AND `visibility`=\'public\' ';
+		$sql .=     'AND (('.$now.'>=`publ_start` OR `publ_start`=0) ';
+		$sql .=     'AND ('.$now.'<=`publ_end` OR `publ_end`=0)) ';
+		if(trim($this->sql_where_language) != '') {
+			$sql .= trim($this->sql_where_language).' ';
+		}
+		$sql .= 'ORDER BY `p`.`position` ASC';
+		$get_default = $database->query($sql);
+		$default_num_rows = $get_default->numRows();
+		if(!isset($page_id) OR !is_numeric($page_id)){
+			// Go to or show default page
+			if($default_num_rows > 0) {
+				$fetch_default = $get_default->fetchRow();
+				$this->default_link = $fetch_default['link'];
+				$this->default_page_id = $fetch_default['page_id'];
+				// Check if we should redirect or include page inline
+				if(HOMEPAGE_REDIRECTION) {
+					// Redirect to page
+					header("Location: ".$this->page_link($this->default_link));
+					exit();
+				} else {
+					// Include page inline
+					$this->page_id = $this->default_page_id;
+				}
+			} else {
+		   		// No pages have been added, so print under construction page
+				$this->print_under_construction();
+				exit();
+			}
+		} else {
+			$this->page_id=$page_id;
+		}
+		// Get default page link
+		if(!isset($fetch_default)) {
+		  	$fetch_default = $get_default->fetchRow();
+	 		$this->default_link = $fetch_default['link'];
+			$this->default_page_id = $fetch_default['page_id'];
+		}
+		return true;
+	}
+
+	public function get_page_details() {
+		global $database;
+	    if($this->page_id != 0) {
+			// Query page details
+			$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.(int)$this->page_id;
+			$get_page = $database->query($sql);
+			// Make sure page was found in database
+			if($get_page->numRows() == 0) {
+				// Print page not found message
+				exit("Page not found");
+			}
+			// Fetch page details
+			$this->page = $get_page->fetchRow();
+			// Check if the page language is also the selected language. If not, send headers again.
+			if ($this->page['language']!=LANGUAGE) {
+				if(isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') { // check if there is an query-string
+					header('Location: '.$this->page_link($this->page['link']).'?'.$_SERVER['QUERY_STRING'].'&lang='.$this->page['language']);
+				} else {
+					header('Location: '.$this->page_link($this->page['link']).'?lang='.$this->page['language']);
+				}
+				exit();
+			}
+			// Begin code to set details as either variables of constants
+			// Page ID
+			if(!defined('PAGE_ID')) {define('PAGE_ID', $this->page['page_id']);}
+			// Page Title
+			if(!defined('PAGE_TITLE')) {define('PAGE_TITLE', $this->page['page_title']);}
+			$this->page_title=PAGE_TITLE;
+			// Menu Title
+			$menu_title = $this->page['menu_title'];
+			if($menu_title != '') {
+				if(!defined('MENU_TITLE')) {define('MENU_TITLE', $menu_title);}
+			} else {
+				if(!defined('MENU_TITLE')) {define('MENU_TITLE', PAGE_TITLE);}
+			}
+			$this->menu_title = MENU_TITLE;
+			// Page parent
+			if(!defined('PARENT')) {define('PARENT', $this->page['parent']);}
+			$this->parent=$this->page['parent'];
+			// Page root parent
+			if(!defined('ROOT_PARENT')) {define('ROOT_PARENT', $this->page['root_parent']);}
+			$this->root_parent=$this->page['root_parent'];
+			// Page level
+			if(!defined('LEVEL')) {define('LEVEL', $this->page['level']);}
+			$this->level=$this->page['level'];
+			// Page position
+			$this->level=$this->page['position'];
+			// Page visibility
+			if(!defined('VISIBILITY')) {define('VISIBILITY', $this->page['visibility']);}
+			$this->visibility=$this->page['visibility'];
+			// Page trail
+			foreach(explode(',', $this->page['page_trail']) AS $pid) {
+				$this->page_trail[$pid]=$pid;
+			}
+			// Page description
+			$this->page_description=$this->page['description'];
+			if($this->page_description != '') {
+				define('PAGE_DESCRIPTION', $this->page_description);
+			} else {
+				define('PAGE_DESCRIPTION', WEBSITE_DESCRIPTION);
+			}
+			// Page keywords
+			$this->page_keywords=$this->page['keywords'];
+			// Page link
+			$this->link=$this->page_link($this->page['link']);
+			$_SESSION['PAGE_ID'] = $this->page_id;
+			$_SESSION['HTTP_REFERER'] = $this->link;
+
+		// End code to set details as either variables of constants
+		}
+
+		// Figure out what template to use
+		if(!defined('TEMPLATE')) {
+			if(isset($this->page['template']) AND $this->page['template'] != '') {
+				if(file_exists(WB_PATH.'/templates/'.$this->page['template'].'/index.php')) {
+					define('TEMPLATE', $this->page['template']);
+				} else {
+					define('TEMPLATE', DEFAULT_TEMPLATE);
+				}
+			} else {
+				define('TEMPLATE', DEFAULT_TEMPLATE);
+			}
+		}
+		// Set the template dir
+		define('TEMPLATE_DIR', WB_URL.'/templates/'.TEMPLATE);
+
+		// Check if user is allowed to view this page
+		if($this->page && $this->page_is_visible($this->page) == false) {
+			if(VISIBILITY == 'deleted' OR VISIBILITY == 'none') {
+				// User isnt allowed on this page so tell them
+				$this->page_access_denied=true;
+			} elseif(VISIBILITY == 'private' OR VISIBILITY == 'registered') {
+				// Check if the user is authenticated
+				if($this->is_authenticated() == false) {
+					// User needs to login first
+					header("Location: ".WB_URL."/account/login.php?redirect=".$this->link);
+					exit(0);
+				} else {
+					// User isnt allowed on this page so tell them
+					$this->page_access_denied=true;
+				}
+				
+			}
+		}
+		// check if there is at least one active section
+		if($this->page && $this->page_is_active($this->page) == false) {
+			$this->page_no_active_sections=true;
+		}
+	}
+
+	public function get_website_settings()
+    {
+		global $database;
+
+		// set visibility SQL code
+		// never show no-vis, hidden or deleted pages
+		$this->extra_where_sql = '`visibility`!=\'none\' AND `visibility`!=\'hidden\' AND `visibility`!=\'deleted\'';
+		// Set extra private sql code
+		if($this->is_authenticated()==false) {
+			// if user is not authenticated, don't show private pages either
+			$this->extra_where_sql .= ' AND `visibility`!=\'private\'';
+			// and 'registered' without frontend login doesn't make much sense!
+			if (FRONTEND_LOGIN==false) {
+				$this->extra_where_sql .= ' AND `visibility`!=\'registered\'';
+			}
+		}
+		$this->extra_where_sql .= $this->sql_where_language;
+
+		// Work-out if any possible in-line search boxes should be shown
+		if(SEARCH == 'public') {
+			define('SHOW_SEARCH', true);
+		} elseif(SEARCH == 'private' AND VISIBILITY == 'private') {
+			define('SHOW_SEARCH', true);
+		} elseif(SEARCH == 'private' AND $this->is_authenticated() == true) {
+			define('SHOW_SEARCH', true);
+		} elseif(SEARCH == 'registered' AND $this->is_authenticated() == true) {
+			define('SHOW_SEARCH', true);	
+		} else {
+			define('SHOW_SEARCH', false);
+		}
+		// Work-out if menu should be shown
+		if(!defined('SHOW_MENU')) {
+			define('SHOW_MENU', true);
+		}
+		// Work-out if login menu constants should be set
+		if(FRONTEND_LOGIN) {
+			// Set login menu constants
+			define('LOGIN_URL', WB_URL.'/account/login.php');
+			define('LOGOUT_URL', WB_URL.'/account/logout.php');
+			define('FORGOT_URL', WB_URL.'/account/forgot.php');
+			define('PREFERENCES_URL', WB_URL.'/account/preferences.php');
+			define('SIGNUP_URL', WB_URL.'/account/signup.php');
+		}
+	}
+
+/*
+ * replace all "[wblink{page_id}]" with real links
+ * @param string &$content : reference to global $content
+ * @return void
+ * @history 100216 17:00:00 optimise errorhandling, speed, SQL-strict
+ */
+	public function preprocess(&$content)
+	{
+		global $database;
+		$replace_list = array();
+		$pattern = '/\[wblink([0-9]+)\]/isU';
+		if(preg_match_all($pattern,$content,$ids))
+		{
+			foreach($ids[1] as $key => $page_id)
+			{
+				$replace_list[$page_id] = $ids[0][$key];
+			}
+			foreach($replace_list as $page_id => $tag)
+			{
+				$sql = 'SELECT `link` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.(int)$page_id;
+				$link = $database->get_one($sql);
+				if(!is_null($link))
+				{
+					$link = $this->page_link($link);
+					$content = str_replace($tag, $link, $content);
+				}
+			}
+		}
+	}
+
+/*
+	function preprocess(&$content) {
+		global $database;
+		// Replace [wblink--PAGE_ID--] with real link
+		$pattern = '/\[wblink(.+?)\]/s';
+		preg_match_all($pattern,$content,$ids);
+		foreach($ids[1] AS $page_id) {
+			$pattern = '/\[wblink'.$page_id.'\]/s';
+			// Get page link
+			$get_link = $database->query("SELECT link FROM ".TABLE_PREFIX."pages WHERE page_id = '$page_id' LIMIT 1");
+			$fetch_link = $get_link->fetchRow();
+			$link = $this->page_link($fetch_link['link']);
+			$content = preg_replace($pattern,$link,$content);
+		}
+	}
+*/
+	public function menu() {
+		global $wb;
+	   if (!isset($wb->menu_number)) {
+	   	$wb->menu_number = 1;
+	   }
+	   if (!isset($wb->menu_start_level)) {
+	   	$wb->menu_start_level = 0;
+	   }
+	   if (!isset($wb->menu_recurse)) {
+	   	$wb->menu_recurse = -1;
+	   }
+	   if (!isset($wb->menu_collapse)) {
+	   	$wb->menu_collapse = true;
+	   }
+	   if (!isset($wb->menu_item_template)) {
+	   	$wb->menu_item_template = '<li><span[class]>[a] [menu_title] [/a]</span>';
+	   }
+	   if (!isset($wb->menu_item_footer)) {
+	   	$wb->menu_item_footer = '</li>';
+	   }
+	   if (!isset($wb->menu_header)) {
+	   	$wb->menu_header = '<ul>';
+	   }
+	   if (!isset($wb->menu_footer)) {
+	   	$wb->menu_footer = '</ul>';
+	   }
+	   if (!isset($wb->menu_default_class)) {
+	   	$wb->menu_default_class = ' class="menu_default"';
+	   }
+	   if (!isset($wb->menu_current_class)) {
+	   	$wb->menu_current_class = ' class="menu_current"';
+	   }
+	   if (!isset($wb->menu_parent)) {
+	   	$wb->menu_parent = 0;
+	   }
+	   $wb->show_menu();
+	}
+	
+	public function show_menu() {
+		global $database;
+		if ($this->menu_start_level>0) {
+			$key_array=array_keys($this->page_trail);
+			if (isset($key_array[$this->menu_start_level-1])) {
+				$real_start=$key_array[$this->menu_start_level-1];
+				$this->menu_parent=$real_start;
+				$this->menu_start_level=0;
+			} else {
+				return;
+			}
+		}
+		if ($this->menu_recurse==0)
+	       return;
+		// Check if we should add menu number check to query
+		if($this->menu_parent == 0) {
+			$menu_number = '`menu`='.intval($this->menu_number);
+		} else {
+			$menu_number = '1';
+		}
+		// Query pages
+		$sql  = 'SELECT `page_id`,`menu_title`,`page_title`,`link`,`target`,`level`,';
+		$sql .=        '`visibility`,viewing_groups,viewing_users ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'pages` ';
+		$sql .= 'WHERE `parent`='.(int)$this->menu_parent.' AND '.$menu_number.' AND '.$this->extra_where_sql.' ';
+		$sql .= 'ORDER BY `position` ASC';
+		$query_menu = $database->query($sql);
+		// Check if there are any pages to show
+		if($query_menu->numRows() > 0) {
+			// Print menu header
+			echo "\n".$this->menu_header;
+			// Loop through pages
+			while($page = $query_menu->fetchRow()) {
+				// check whether to show this menu-link
+				if($this->page_is_active($page)==false && $page['link']!=$this->default_link && !INTRO_PAGE) {
+					continue; // no active sections
+				}
+				if($this->page_is_visible($page)==false) {
+					if($page['visibility'] != 'registered') // special case: page_to_visible() check wheter to show the page contents, but the menu should be visible allways
+						continue;
+				}
+				// Create vars
+				$vars = array('[class]','[a]', '[/a]', '[menu_title]', '[page_title]');
+				// Work-out class
+				if($page['page_id'] == PAGE_ID) {
+					$class = $this->menu_current_class;
+				} else {
+					$class = $this->menu_default_class;
+				}
+				// Check if link is same as first page link, and if so change to WB URL
+				if($page['link'] == $this->default_link AND !INTRO_PAGE) {
+					$link = WB_URL;
+				} else {
+					$link = $this->page_link($page['link']);
+				}
+				// Create values
+				$values = array($class,'<a href="'.$link.'" target="'.$page['target'].'" '.$class.'>', '</a>', $page['menu_title'], $page['page_title']);
+				// Replace vars with value and print
+				echo "\n".str_replace($vars, $values, $this->menu_item_template);
+				// Generate sub-menu
+				if($this->menu_collapse==false OR ($this->menu_collapse==true AND isset($this->page_trail[$page['page_id']]))) {
+					$this->menu_recurse--;
+					$this->menu_parent=$page['page_id'];
+					$this->show_menu();
+				}
+				echo "\n".$this->menu_item_footer;
+			}
+			// Print menu footer
+			echo "\n".$this->menu_footer;
+		}
+	}
+
+
+	// Function to show the "Under Construction" page
+	public function print_under_construction() {
+		global $MESSAGE;
+		require_once(WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php');
+		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+		<head><title>'.$MESSAGE['GENERIC']['WEBSITE_UNDER_CONSTRUCTION'].'</title>
+		<style type="text/css"><!-- body{ font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 12px; background-image: url("'.THEME_URL.'/images/background.png");background-repeat: repeat-x; background-color: #A8BCCB; text-align: center; }
+		h1 { margin: 0; padding: 0; font-size: 18px; color: #000; text-transform: uppercase;
+}--></style></head><body>
+		<br /><h1>'.$MESSAGE['GENERIC']['WEBSITE_UNDER_CONSTRUCTION'].'</h1><br />
+		'.$MESSAGE['GENERIC']['PLEASE_CHECK_BACK_SOON'].'</body></html>';
+	}
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/class.frontend.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/frontend.functions.php
===================================================================
--- tags/2.8.3/wb/framework/frontend.functions.php	(nonexistent)
+++ tags/2.8.3/wb/framework/frontend.functions.php	(revision 1610)
@@ -0,0 +1,663 @@
+<?php
+/**$extra_sql
+ *
+ * @category        framework
+ * @package         frontend.functions
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+// compatibility mode for versions before 2.8.1
+	if(isset($wb)) {$admin = $wb; }
+	if(isset($wb->default_link)) { $default_link = $wb->default_link; }
+	if(isset($wb->page_trail)) {$page_trail = $wb->page_trail; }
+	if(isset($wb->page_description)) {$page_description = $wb->page_description;}
+	if(isset($wb->page_keywords)) {$page_keywords = $wb->page_keywords;}
+	if(isset($wb->link)) {$page_link = $wb->link;}
+
+	$include_head_link_css = '';
+	$include_body_links    = '';
+	$include_head_links    = '';
+
+// workout to included frontend.css, fronten.js and frontend_body.js in snippets
+	$sql  = 'SELECT `directory` FROM `'.TABLE_PREFIX.'addons` ';
+	$sql .= 'WHERE `type`=\'module\' AND `function`=\'snippet\'';
+	if(($resSnippets = $database->query($sql))) {
+		while($recSnippet = $resSnippets->fetchRow()) {
+			$module_dir = $recSnippet['directory'];
+			if (file_exists(WB_PATH.'/modules/'.$module_dir.'/include.php')) {
+				include(WB_PATH.'/modules/'.$module_dir.'/include.php');
+			// check if frontend.css file needs to be included into the <head></head> of index.php
+				if( file_exists(WB_PATH .'/modules/'.$module_dir.'/frontend.css')) {
+					$include_head_link_css .= '<link href="'.WB_URL.'/modules/'.$module_dir.'/frontend.css"';
+					$include_head_link_css .= ' rel="stylesheet" type="text/css" media="screen" />'."\n";
+					$include_head_file = 'frontend.css';
+				}
+			// check if frontend.js file needs to be included into the <body></body> of index.php
+				if(file_exists(WB_PATH .'/modules/'.$module_dir.'/frontend.js')) {
+					$include_head_links .= '<script src="'.WB_URL.'/modules/'.$module_dir.'/frontend.js" type="text/javascript"></script>'."\n";
+					$include_head_file = 'frontend.js';
+				}
+			// check if frontend_body.js file needs to be included into the <body></body> of index.php
+				if(file_exists(WB_PATH .'/modules/'.$module_dir.'/frontend_body.js')) {
+					$include_body_links .= '<script src="'.WB_URL.'/modules/'.$module_dir.'/frontend_body.js" type="text/javascript"></script>'."\n";
+					$include_body_file = 'frontend_body.js';
+				}
+			}
+		}
+	}
+
+// Frontend functions
+if(!function_exists('page_link')) {
+	/**
+	 * generate full qualified URL from relative link based on pages_dir
+	 * @param string $link
+	 * @return string
+	 */
+	function page_link($link) {
+		return $GLOBALS['wb']->page_link($link);
+	}
+}
+
+if (!function_exists('get_page_link')) {
+    /**
+	 * get relative link from database based on pages_dir
+	 * @global <type> $database
+	 * @param <type> $id
+	 * @return <type> 
+	 */
+	function get_page_link( $id )
+    {
+        global $database;
+        $sql = 'SELECT `link` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$id;
+        $link = $database->get_one( $sql );
+        return $link;
+    }
+}
+
+//function to highlight search results
+if(!function_exists('search_highlight')) {
+	/**
+	 *
+	 * @staticvar boolean $string_ul_umlaut
+	 * @staticvar boolean $string_ul_regex
+	 * @param string $foo
+	 * @param array $arr_string
+	 * @return string
+	 */
+	function search_highlight($foo='', $arr_string=array()) {
+		require_once(WB_PATH.'/framework/functions.php');
+		static $string_ul_umlaut = FALSE;
+		static $string_ul_regex = FALSE;
+		if($string_ul_umlaut === FALSE || $string_ul_regex === FALSE) {
+			require(WB_PATH.'/search/search_convert.php');
+		}
+		$foo = entities_to_umlauts($foo, 'UTF-8');
+		array_walk($arr_string, create_function('&$v,$k','$v = preg_quote($v, \'~\');'));
+		$search_string = implode("|", $arr_string);
+		$string = str_replace($string_ul_umlaut, $string_ul_regex, $search_string);
+		// the highlighting
+		// match $string, but not inside <style>...</style>, <script>...</script>, <!--...--> or HTML-Tags
+		// Also droplet tags are now excluded from highlighting.
+		// split $string into pieces - "cut away" styles, scripts, comments, HTML-tags and eMail-addresses
+		// we have to cut <pre> and <code> as well.
+		// for HTML-Tags use <(?:[^<]|<.*>)*> which will match strings like <input ... value="<b>value</b>" >
+		$matches = preg_split("~(\[\[.*\]\]|<style.*</style>|<script.*</script>|<pre.*</pre>|<code.*</code>|<!--.*-->|<(?:[^<]|<.*>)*>|\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}\b)~iUs",$foo,-1,(PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY));
+		if(is_array($matches) && $matches != array()) {
+			$foo = "";
+			foreach($matches as $match) {
+				if($match{0}!="<" && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}$/i', $match) && !preg_match('~\[\[.*\]\]~', $match)) {
+					$match = str_replace(array('&lt;', '&gt;', '&amp;', '&quot;', '&#039;', '&nbsp;'), array('<', '>', '&', '"', '\'', "\xC2\xA0"), $match);
+					$match = preg_replace('~('.$string.')~ui', '_span class=_highlight__$1_/span_',$match);
+					$match = str_replace(array('&', '<', '>', '"', '\'', "\xC2\xA0"), array('&amp;', '&lt;', '&gt;', '&quot;', '&#039;', '&nbsp;'), $match);
+					$match = str_replace(array('_span class=_highlight__', '_/span_'), array('<span class="highlight">', '</span>'), $match);
+				}
+				$foo .= $match;
+			}
+		}
+
+		if(DEFAULT_CHARSET != 'utf-8') {
+			$foo = umlauts_to_entities($foo, 'UTF-8');
+		}
+		return $foo;
+	}
+}
+
+if (!function_exists('page_menu')) {
+	/**
+	 * Old menu generator
+	 * @deprecated from WB 2.9.x and up
+	 * @global <type> $wb
+	 * @param <type> $parent
+	 * @param <type> $menu_number
+	 * @param <type> $item_template
+	 * @param <type> $menu_header
+	 * @param <type> $menu_footer
+	 * @param <type> $default_class
+	 * @param <type> $current_class
+	 * @param <type> $recurse
+	 */
+	function page_menu($parent = 0, $menu_number = 1, $item_template = '<li[class]>[a] [menu_title] [/a]</li>', $menu_header = '<ul>', $menu_footer = '</ul>', $default_class = ' class="menu_default"', $current_class = ' class="menu_current"', $recurse = LEVEL) {
+		global $wb;
+		$wb->menu_number=$menu_number;
+		$wb->menu_item_template=$item_template;
+		$wb->menu_item_footer='';
+		$wb->menu_parent = $parent;
+		$wb->menu_header = $menu_header;
+		$wb->menu_footer = $menu_footer;
+		$wb->menu_default_class = $default_class;
+		$wb->menu_current_class = $current_class;
+		$wb->menu_recurse = $recurse+2;
+		$wb->menu();
+		unset($wb->menu_parent);
+		unset($wb->menu_number);
+		unset($wb->menu_item_template);
+		unset($wb->menu_item_footer);
+		unset($wb->menu_header);
+		unset($wb->menu_footer);
+		unset($wb->menu_default_class);
+		unset($wb->menu_current_class);
+		unset($wb->menu_start_level);
+		unset($wb->menu_collapse);
+		unset($wb->menu_recurse);
+	}
+}
+
+if (!function_exists('show_menu')) {
+	/**
+	 * Old menu generator
+	 * @deprecated from WB 2.9.x and up
+	 * @global  $wb
+	 * @param <type> $menu_number
+	 * @param <type> $start_level
+	 * @param <type> $recurse
+	 * @param <type> $collapse
+	 * @param <type> $item_template
+	 * @param <type> $item_footer
+	 * @param <type> $menu_header
+	 * @param <type> $menu_footer
+	 * @param <type> $default_class
+	 * @param <type> $current_class
+	 * @param <type> $parent
+	 */
+	function show_menu($menu_number = NULL, $start_level=NULL, $recurse = NULL, $collapse = NULL, $item_template = NULL, $item_footer = NULL, $menu_header = NULL, $menu_footer = NULL, $default_class = NULL, $current_class = NULL, $parent = NULL) {
+		global $wb;
+		if (isset($menu_number))
+			$wb->menu_number=$menu_number;
+		if (isset($start_level))
+			$wb->menu_start_level=$start_level;
+		if (isset($recurse))
+			$wb->menu_recurse=$recurse;
+		if (isset($collapse))
+			$wb->menu_collapse=$collapse;
+		if (isset($item_template))
+			$wb->menu_item_template=$item_template;
+		if (isset($item_footer))
+			$wb->menu_item_footer=$item_footer;
+		if (isset($menu_header))
+			$wb->menu_header=$menu_header;
+		if (isset($menu_footer))
+			$wb->menu_footer=$menu_footer;
+		if (isset($default_class))
+			$wb->menu_default_class=$default_class;
+		if (isset($current_class))
+			$wb->menu_current_class=$current_class;
+		if (isset($parent))
+			$wb->menu_parent=$parent;
+		$wb->menu();
+		unset($wb->menu_recurse);
+		unset($wb->menu_parent);
+		unset($wb->menu_start_level);
+	}
+}
+
+if (!function_exists('page_content')) {
+	/**
+	 *
+	 * @global array $TEXT
+	 * @global array $MENU
+	 * @global array $HEADING
+	 * @global array $MESSAGE
+	 * @global array $globals several global vars
+	 * @global datadase $database
+	 * @global wb $wb
+	 * @global string $global_name
+	 * @param int $block
+	 * @return void
+	 */
+	function page_content($block = 1) {
+		// Get outside objects
+		global $TEXT,$MENU,$HEADING,$MESSAGE;
+		global $globals;
+		global $database;
+		global $wb;
+		$admin = $wb;
+		if ($wb->page_access_denied==true) {
+	        echo $MESSAGE['FRONTEND']['SORRY_NO_VIEWING_PERMISSIONS'];
+			return;
+		}
+		if ($wb->page_no_active_sections==true) {
+	        echo $MESSAGE['FRONTEND']['SORRY_NO_ACTIVE_SECTIONS'];
+			return;
+		}
+		if(isset($globals) AND is_array($globals)) {
+            foreach($globals AS $global_name) {
+                global $$global_name;
+			}
+        }
+		// Make sure block is numeric
+		if( ($block = intval($block)) == 0 ) { $block = 1; }
+		// Include page content
+		if(!defined('PAGE_CONTENT') OR $block!=1)
+        {
+			$page_id = intval($wb->page_id);
+/* move to class.frontend
+            // set session variable to save page_id only if PAGE_CONTENT is empty
+            $_SESSION['PAGE_ID'] = !isset($_SESSION['PAGE_ID']) ? $page_id : $_SESSION['PAGE_ID'];
+            // set to new value if page_id changed and not 0
+            if(($page_id != 0) && ($_SESSION['PAGE_ID'] <> $page_id))
+            {
+	            $_SESSION['PAGE_ID'] = $page_id;
+            }
+*/
+		// First get all sections for this page
+			$sql  = 'SELECT `section_id`, `module`, `publ_start`, `publ_end` ';
+			$sql .= 'FROM `'.TABLE_PREFIX.'sections` ';
+			$sql .= 'WHERE `page_id`='.$page_id.' AND `block`='.$block.' ';
+			$sql .= 'ORDER BY `position`';
+			if( !($query_sections = $database->query($sql)) ) { return; }
+		// If none were found, check if default content is supposed to be shown
+			if($query_sections->numRows() == 0) {
+				if($wb->default_block_content == 'none') { return; }
+				if (is_numeric($wb->default_block_content)) {
+					$page_id = $wb->default_block_content;
+				} else {
+					$page_id = $wb->default_page_id;
+				}				
+				$sql  = 'SELECT `section_id`, `module`, `publ_start`, `publ_end` ';
+				$sql .= 'FROM `'.TABLE_PREFIX.'sections` ';
+				$sql .= 'WHERE `page_id`='.$page_id.' AND `block`='.$block.' ';
+				$sql .= 'ORDER BY `position`';
+				if( !($query_sections = $database->query($sql)) ) { return; }
+				// Still no cotent found? Give it up, there's just nothing to show!
+				if($query_sections->numRows() == 0) { return; }
+			}
+			// Loop through them and include their module file
+			while($section = $query_sections->fetchRow()) {
+				// skip this section if it is out of publication-date
+				$now = time();
+				if( !(($now<=$section['publ_end'] || $section['publ_end']==0) && ($now>=$section['publ_start'] || $section['publ_start']==0)) ) {
+					continue;
+				}
+				$section_id = $section['section_id'];
+				$module = $section['module'];
+				// make a anchor for every section.
+				if(defined('SEC_ANCHOR') && SEC_ANCHOR!='') {
+					echo '<a class="section_anchor" id="'.SEC_ANCHOR.$section_id.'" name="'.SEC_ANCHOR.$section_id.'"></a>';
+				}
+                // check if module exists - feature: write in errorlog
+				if(file_exists(WB_PATH.'/modules/'.$module.'/view.php')) {
+				// fetch content -- this is where to place possible output-filters (before highlighting)
+					ob_start(); // fetch original content
+					require(WB_PATH.'/modules/'.$module.'/view.php');
+					$content = ob_get_clean();
+				} else {
+					continue;
+				}
+				// highlights searchresults
+				if(isset($_GET['searchresult']) && is_numeric($_GET['searchresult']) && !isset($_GET['nohighlight']) && isset($_GET['sstring']) && !empty($_GET['sstring'])) {
+					$arr_string = explode(" ", $_GET['sstring']);
+					if($_GET['searchresult']==2) { // exact match
+						$arr_string[0] = str_replace("_", " ", $arr_string[0]);
+					}
+					echo search_highlight($content, $arr_string);
+				} else {
+					echo $content;
+				}
+			}
+		}
+        else {
+			require(PAGE_CONTENT);
+		}
+	}
+}
+
+if (!function_exists('show_content')) {
+	function show_content($block=1) {
+		page_content($block);
+	}
+}
+
+if (!function_exists('show_breadcrumbs'))
+{
+	function show_breadcrumbs($sep = ' &raquo; ',$level = 0, $links = true, $depth = -1, $title = '')
+    {
+		global $wb,$database,$MENU;
+		$page_id = $wb->page_id;
+        $title = (trim($title) == '') ? $MENU['BREADCRUMB'] : $title;
+		if ($page_id != 0)
+		{
+			$counter = 0;
+            // get links as array
+            $bread_crumbs = $wb->page_trail;
+            $count = sizeof($bread_crumbs);
+            // level can't be greater than sum of links
+            $level = ($count <= $level ) ? $count-1 : $level;
+            // set level from which to show, delete indexes in array
+			$crumbs = array_slice($bread_crumbs, $level );
+            $depth = ($depth <= 0) ? sizeof($crumbs) : $depth;
+            // if empty array, set orginal links
+            $crumbs = (!empty($crumbs)) ?  $crumbs : $wb->page_trail;
+            $total_crumbs = ( ($depth <= 0) || ($depth > sizeof($crumbs)) ) ? sizeof($crumbs) : $depth;
+            print '<div class="breadcrumb"><span class="title">'.$title.'</span>';
+          //  print_r($crumbs);
+			foreach ($crumbs as $temp)
+            {
+                if($counter == $depth) { break; }
+                // set links and separator
+					$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.(int)$temp;
+					$query_menu = $database->query($sql);
+					$page = $query_menu->fetchRow();
+                    $show_crumb = (($links == true) && ($temp != $page_id))
+                            ? '<a href="'.page_link($page['link']).'" class="link">'.$page['menu_title'].'</a>'
+                            : '<span class="crumb">'.$page['menu_title'].'</span>';
+                    // Permission
+                    switch ($page['visibility'])
+                    {
+                        case 'none' :
+                        case 'hidden' :
+                        // if show, you know there is an error in a hidden page
+                            print $show_crumb.'&nbsp;';
+	                        break;
+                        default :
+                            print $show_crumb;
+		                    break;
+                    }
+
+                    if ( ( $counter <> $total_crumbs-1 ) )
+                    {
+                        print '<span class="separator">'.$sep.'</span>';
+                    }
+	            $counter++;
+            }
+            print "</div>\n";
+		}
+	}
+}
+
+// Function for page title
+if (!function_exists('page_title')) {
+	function page_title($spacer = ' - ', $template = '[WEBSITE_TITLE][SPACER][PAGE_TITLE]') {
+		$vars = array('[WEBSITE_TITLE]', '[PAGE_TITLE]', '[MENU_TITLE]', '[SPACER]');
+		$values = array(WEBSITE_TITLE, PAGE_TITLE, MENU_TITLE, $spacer);
+		echo str_replace($vars, $values, $template);
+	}
+}
+
+// Function for page description
+if (!function_exists('page_description')) {
+	function page_description() {
+		global $wb;
+		if ($wb->page_description!='') {
+			echo $wb->page_description;
+		} else {
+			echo WEBSITE_DESCRIPTION;
+		}
+	}
+}
+
+// Function for page keywords
+if (!function_exists('page_keywords')) {
+	function page_keywords() {
+		global $wb;
+		if ($wb->page_keywords!='') {
+			echo $wb->page_keywords;
+		} else {
+			echo WEBSITE_KEYWORDS;
+		}
+	}
+}
+
+// Function for page header
+if (!function_exists('page_header')) {
+	function page_header($date_format = 'Y') {
+		echo WEBSITE_HEADER;
+	}
+}
+
+// Function for page footer
+if (!function_exists('page_footer')) {
+	function page_footer($date_format = 'Y') {
+		global $starttime;
+		$vars = array('[YEAR]', '[PROCESS_TIME]');
+		$processtime=array_sum(explode(" ",microtime()))-$starttime;
+		$values = array(gmdate($date_format),$processtime);
+		echo str_replace($vars, $values, WEBSITE_FOOTER);
+	}
+}
+
+function bind_jquery ($file_id='jquery')
+{
+
+        $jquery_links = '';
+		/* include the Javascript jquery api  */
+		if( $file_id == 'jquery' AND file_exists(WB_PATH .'/include/jquery/jquery-min.js'))
+        {
+            $wbpath = str_replace('\\','/',WB_PATH);  // fixed localhost problem with ie
+			$jquery_links .= "<script type=\"text/javascript\">\n"
+                ."var URL = '".WB_URL."';\n"
+               /* ."var WB_PATH = '".$wbpath."';\n" */
+                ."var WB_URL = '".WB_URL."';\n"
+                ."var TEMPLATE_DIR = '".TEMPLATE_DIR."';\n"
+                ."</script>\n";
+
+			$jquery_links .= '<script src="'.WB_URL.'/include/jquery/jquery-min.js" type="text/javascript"></script>'."\n";
+			$jquery_links .= '<script src="'.WB_URL.'/include/jquery/jquery-insert.js" type="text/javascript"></script>'."\n";
+			$jquery_links .= '<script src="'.WB_URL.'/include/jquery/jquery-include.js" type="text/javascript"></script>'."\n";
+            /* workout to insert ui.css and theme */
+            $jquery_theme =  WB_PATH.'/modules/jquery/jquery_theme.js';
+			$jquery_links .=  file_exists($jquery_theme)
+                ? '<script src="'.WB_URL.'/modules/jquery/jquery_theme.js" type="text/javascript"></script>'."\n"
+                : '<script src="'.WB_URL.'/include/jquery/jquery_theme.js" type="text/javascript"></script>'."\n";
+            /* workout to insert plugins functions, set in templatedir */
+            $jquery_frontend_file = TEMPLATE_DIR.'/jquery_frontend.js';
+			$jquery_links .= file_exists(str_replace( WB_URL, WB_PATH, $jquery_frontend_file))
+                ? '<script src="'.$jquery_frontend_file.'" type="text/javascript"></script>'."\n"
+                : '';
+		}
+    return $jquery_links;
+}
+
+// Function to add optional module Javascript into the <body> section of the frontend
+if(!function_exists('register_frontend_modfiles_body'))
+{
+	function register_frontend_modfiles_body($file_id="js")
+    {
+		// sanity check of parameter passed to the function
+		$file_id = strtolower($file_id);
+		if($file_id !== "css" && $file_id !== "javascript" && $file_id !== "js" && $file_id !== "jquery")
+        {
+			return;
+		}
+
+       // define constant indicating that the register_frontent_files was invoked
+       if(!defined('MOD_FRONTEND_BODY_JAVASCRIPT_REGISTERED')) define('MOD_FRONTEND_BODY_JAVASCRIPT_REGISTERED', true);
+		global $wb, $database, $include_body_links;
+		// define default baselink and filename for optional module javascript files
+		$body_links = "";
+
+		/* include the Javascript jquery api  */
+        $body_links .= bind_jquery($file_id);
+
+		if($file_id !== "css" && $file_id == "js" && $file_id !== "jquery")
+        {
+    		$base_link = '<script src="'.WB_URL.'/modules/{MODULE_DIRECTORY}/frontend_body.js" type="text/javascript"></script>';
+    		$base_file = "frontend_body.js";
+
+			// ensure that frontend_body.js is only added once per module type
+    		if(!empty($include_body_links))
+            {
+    			if(strpos($body_links, $include_body_links) === false)
+                {
+    				$body_links .= $include_body_links;
+    			}
+    			$include_body_links = '';
+    		}
+
+    		// gather information for all models embedded on actual page
+    		$page_id = $wb->page_id;
+			$sql = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` ';
+			$sql .= 'WHERE `page_id` = '.(int)$page_id.' AND `module`<>\'wysiwyg\'';
+    		if( ($query_modules = $database->query($sql)) )
+			{
+	    		while($row = $query_modules->fetchRow())
+	            {
+	    			// check if page module directory contains a frontend_body.js file
+	    			if(file_exists(WB_PATH ."/modules/" .$row['module'] ."/$base_file"))
+	                {
+	    			// create link with frontend_body.js source for the current module
+	    				$tmp_link = str_replace("{MODULE_DIRECTORY}", $row['module'], $base_link);
+
+	    				// define constant indicating that the register_frontent_files_body was invoked
+	    					if(!defined('MOD_FRONTEND_BODY_JAVASCRIPT_REGISTERED')) { define('MOD_FRONTEND_BODY_JAVASCRIPT_REGISTERED', true);}
+
+	    				// ensure that frontend_body.js is only added once per module type
+	    				if(strpos($body_links, $tmp_link) === false)
+	                    {
+	    					$body_links .= $tmp_link;
+	    				}
+	    			}
+	    		}
+            }
+        }
+
+		print $body_links."\n"; ;
+	}
+}
+
+
+// Function to add optional module Javascript or CSS stylesheets into the <head> section of the frontend
+if(!function_exists('register_frontend_modfiles'))
+{
+	function register_frontend_modfiles($file_id="css")
+    {
+		// sanity check of parameter passed to the function
+		$file_id = strtolower($file_id);
+		if($file_id !== "css" && $file_id !== "javascript" && $file_id !== "js" && $file_id !== "jquery")
+        {
+			return;
+		}
+
+		global $wb, $database, $include_head_link_css, $include_head_links;
+		// define default baselink and filename for optional module javascript and stylesheet files
+		$head_links = "";
+
+        switch ($file_id)
+        {
+            case 'css':
+			$base_link = '<link href="'.WB_URL.'/modules/{MODULE_DIRECTORY}/frontend.css"';
+			$base_link.= ' rel="stylesheet" type="text/css" media="screen" />';
+			$base_file = "frontend.css";
+    		if(!empty($include_head_link_css))
+            {
+              $head_links .=  !strpos($head_links, $include_head_link_css) ? $include_head_link_css : '';
+              $include_head_link_css = '';
+            }
+            break;
+            case 'jquery':
+            $head_links .= bind_jquery($file_id);
+            break;
+            case 'js':
+			$base_link = '<script src="'.WB_URL.'/modules/{MODULE_DIRECTORY}/frontend.js" type="text/javascript"></script>';
+			$base_file = "frontend.js";
+    		if(!empty($include_head_links))
+            {
+              $head_links .= !strpos($head_links, $include_head_links) ? $include_head_links : '';
+              $include_head_links = '';
+            }
+            break;
+            default:
+            break;
+		}
+
+        if( $file_id != 'jquery')
+        {
+    		// gather information for all models embedded on actual page
+    		$page_id = $wb->page_id;
+			$sql  = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` ';
+			$sql .= 'WHERE `page_id` = '.(int)$page_id.' AND `module`<>\'wysiwyg\'';
+    		if( ($query_modules = $database->query($sql)) )
+			{
+	    		while($row = $query_modules->fetchRow())
+	            {
+	    			// check if page module directory contains a frontend.js or frontend.css file
+	    			if(file_exists(WB_PATH ."/modules/" .$row['module'] ."/$base_file"))
+	                {
+	    			// create link with frontend.js or frontend.css source for the current module
+	    				$tmp_link = str_replace("{MODULE_DIRECTORY}", $row['module'], $base_link);
+
+	    				// define constant indicating that the register_frontent_files was invoked
+	    				if($file_id == 'css')
+	                    {
+	    					if(!defined('MOD_FRONTEND_CSS_REGISTERED')) define('MOD_FRONTEND_CSS_REGISTERED', true);
+	    				} else
+	                    {
+	    					if(!defined('MOD_FRONTEND_JAVASCRIPT_REGISTERED')) define('MOD_FRONTEND_JAVASCRIPT_REGISTERED', true);
+	    				}
+	    				// ensure that frontend.js or frontend.css is only added once per module type
+	    				if(strpos($head_links, $tmp_link) === false)
+	                    {
+	    					$head_links .= $tmp_link."\n";
+	    				}
+	    			};
+	    		}
+			}
+       		// include the Javascript email protection function
+       		if( $file_id != 'css' && file_exists(WB_PATH .'/modules/droplets/js/mdcr.js'))
+               {
+       			$head_links .= '<script src="'.WB_URL.'/modules/droplets/js/mdcr.js" type="text/javascript"></script>'."\n";
+       		}
+               elseif( $file_id != 'css' && file_exists(WB_PATH .'/modules/output_filter/js/mdcr.js'))
+               {
+       			$head_links .= '<script src="'.WB_URL.'/modules/output_filter/js/mdcr.js" type="text/javascript"></script>'."\n";
+       		}
+        }
+        print $head_links;
+    }
+}
+
+	function moveCssToHead($content) {
+		// move css definitions into head section
+		$pattern1 = '/(?:<body.*?)(<link[^>]*?\"text\/css\".*?\/>)/si';
+		$pattern2 = '/(?:<body.*?)(<style[^>]*?\"text\/css\"[^>]*?>.*?<\/style>)/si';
+		while(preg_match($pattern1, $content, $matches)==1) {
+		// loop through all linked CSS
+			$insert = $matches[1];
+			$content = str_replace($insert, '', $content);
+			$insert = "\n".$insert."\n</head>\n<body";
+			$content = preg_replace('/<\/head>.*?<body/si', $insert, $content);
+		}
+		while(preg_match($pattern2, $content, $matches)==1) {
+		// loop through all inline CSS
+			$insert = $matches[1];
+			$content = str_replace($insert, '', $content);
+			$insert = "\n".$insert."\n</head>\n<body";
+			$content = preg_replace('/<\/head>.*?<body/si', $insert, $content);
+		}
+		return $content;
+	}

Property changes on: tags/2.8.3/wb/framework/frontend.functions.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.database.php
===================================================================
--- tags/2.8.3/wb/framework/class.database.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.database.php	(revision 1610)
@@ -0,0 +1,436 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         database
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/*
+Database class
+This class will be used to interface between the database
+and the Website Baker code
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+if(!defined('DB_URL')) {
+	//define('DB_URL', DB_TYPE.'://'.DB_USERNAME.':'.DB_PASSWORD.'@'.DB_HOST.'/'.DB_NAME);
+}
+
+define('DATABASE_CLASS_LOADED', true);
+
+class database {
+
+	private $db_handle  = null; // readonly from outside
+
+	private $connected  = false;
+
+	private $error      = '';
+	private $error_type = '';
+	private $message    = array();
+
+
+	// Set DB_URL
+	function database($url = '') {
+		// Connect to database
+		$this->connect();
+		// Check for database connection error
+		if($this->is_error()) {
+			die($this->get_error());
+		}
+	}
+	
+	// Connect to the database
+	function connect() {
+		$status = $this->db_handle = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
+		if(mysql_error()) {
+			$this->connected = false;
+			$this->error = mysql_error();
+		} else {
+			if(!mysql_select_db(DB_NAME)) {
+				$this->connected = false;
+				$this->error = mysql_error();
+			} else {
+				$this->connected = true;
+			}
+		}
+		return $this->connected;
+	}
+	
+	// Disconnect from the database
+	function disconnect() {
+		if($this->connected==true) {
+			mysql_close();
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
+	// Run a query
+	function query($statement) {
+		$mysql = new mysql();
+		$mysql->query($statement);
+		$this->set_error($mysql->error());
+		if($mysql->error()) {
+			return null;
+		} else {
+			return $mysql;
+		}
+	}
+
+	// Gets the first column of the first row
+	function get_one( $statement )
+	{
+		$fetch_row = mysql_fetch_array(mysql_query($statement) );
+		$result = $fetch_row[0];
+		$this->set_error(mysql_error());
+		if(mysql_error()) {
+			return null;
+		} else {
+			return $result;
+		}
+	}
+	
+	// Set the DB error
+	function set_error($message = null) {
+		global $TABLE_DOES_NOT_EXIST, $TABLE_UNKNOWN;
+		$this->error = $message;
+		if(strpos($message, 'no such table')) {
+			$this->error_type = $TABLE_DOES_NOT_EXIST;
+		} else {
+			$this->error_type = $TABLE_UNKNOWN;
+		}
+	}
+	
+	// Return true if there was an error
+	function is_error() {
+		return (!empty($this->error)) ? true : false;
+	}
+	
+	// Return the error
+	function get_error() {
+		return $this->error;
+	}
+
+/*
+ * default Getter
+ */
+	public function __get($var_name)
+	{
+		if($var_name == 'db_handle')
+		{
+			return $this->db_handle;
+		}
+		return null;
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $field_name: name of the field to seek for
+ * @return bool: true if field exists
+ */
+	public function field_exists($table_name, $field_name)
+	{
+		$sql = 'DESCRIBE `'.$table_name.'` `'.$field_name.'` ';
+		$query = $this->query($sql);
+		return ($query->numRows() != 0);
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $index_name: name of the index to seek for
+ * @return bool: true if field exists
+ */
+	public function index_exists($table_name, $index_name, $number_fields = 0)
+	{
+		$number_fields = intval($number_fields);
+		$keys = 0;
+		$sql = 'SHOW INDEX FROM `'.$table_name.'`';
+		if( ($res_keys = $this->query($sql)) )
+		{
+			while(($rec_key = $res_keys->fetchRow()))
+			{
+				if( $rec_key['Key_name'] == $index_name )
+				{
+					$keys++;
+				}
+			}
+
+		}
+		if( $number_fields == 0 )
+		{
+			return ($keys != $number_fields);
+		}else
+		{
+			return ($keys == $number_fields);
+		}
+	}
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $field_name: name of the field to add
+ * @param string $description: describes the new field like ( INT NOT NULL DEFAULT '0')
+ * @return bool: true if successful, otherwise false and error will be set
+ */
+	public function field_add($table_name, $field_name, $description)
+	{
+		if( !$this->field_exists($table_name, $field_name) )
+		{ // add new field into a table
+			$sql = 'ALTER TABLE `'.$table_name.'` ADD '.$field_name.' '.$description.' ';
+			$query = $this->query($sql);
+			$this->set_error(mysql_error());
+			if( !$this->is_error() )
+			{
+				return ( $this->field_exists($table_name, $field_name) ) ? true : false;
+			}
+		}else
+		{
+			$this->set_error('field \''.$field_name.'\' already exists');
+		}
+		return false;
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $field_name: name of the field to add
+ * @param string $description: describes the new field like ( INT NOT NULL DEFAULT '0')
+ * @return bool: true if successful, otherwise false and error will be set
+ */
+	public function field_modify($table_name, $field_name, $description)
+	{
+		$retval = false;
+		if( $this->field_exists($table_name, $field_name) )
+		{ // modify a existing field in a table
+			$sql  = 'ALTER TABLE `'.$table_name.'` MODIFY `'.$field_name.'` '.$description;
+			$retval = ( $this->query($sql) ? true : false);
+			$this->set_error(mysql_error());
+		}
+		return $retval;
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $field_name: name of the field to remove
+ * @return bool: true if successful, otherwise false and error will be set
+ */
+	public function field_remove($table_name, $field_name)
+	{
+		$retval = false;
+		if( $this->field_exists($table_name, $field_name) )
+		{ // modify a existing field in a table
+			$sql  = 'ALTER TABLE `'.$table_name.'` DROP `'.$field_name.'`';
+			$retval = ( $this->query($sql) ? true : false );
+		}
+		return $retval;
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $index_name: name of the new index
+ * @param string $field_list: comma seperated list of fields for this index
+ * @param string $index_type: kind of index (UNIQUE, PRIMARY, '')
+ * @return bool: true if successful, otherwise false and error will be set
+ */
+	public function index_add($table_name, $index_name, $field_list, $index_type = '')
+	{
+		$retval = false;
+		$field_list = str_replace(' ', '', $field_list);
+		$field_list = explode(',', $field_list);
+		$number_fields = sizeof($field_list);
+		$field_list = '`'.implode('`,`', $field_list).'`';
+		if( $this->index_exists($table_name, $index_name, $number_fields) ||
+		    $this->index_exists($table_name, $index_name))
+		{
+			$sql  = 'ALTER TABLE `'.$table_name.'` ';
+			$sql .= 'DROP INDEX `'.$index_name.'`';
+			if( $this->query($sql))
+			{
+				$sql  = 'ALTER TABLE `'.$table_name.'` ';
+				$sql .= 'ADD '.$index_type.' `'.$index_name.'` ( '.$field_list.' ); ';
+				if( $this->query($sql)) { $retval = true; }
+			}
+		}
+		return $retval;
+	}
+
+/*
+ * @param string $table_name: full name of the table (incl. TABLE_PREFIX)
+ * @param string $field_name: name of the field to remove
+ * @return bool: true if successful, otherwise false and error will be set
+ */
+	public function index_remove($table_name, $index_name)
+	{
+		$retval = false;
+		if( $this->index_exists($table_name, $index_name) )
+		{ // modify a existing field in a table
+			$sql  = 'ALTER TABLE `'.$table_name.'` DROP INDEX `'.$index_name.'`';
+			$retval = ( $this->query($sql) ? true : false );
+		}
+		return $retval;
+	}
+/**
+ * Import a standard *.sql dump file
+ * @param string $sSqlDump link to the sql-dumpfile
+ * @param string $sTablePrefix
+ * @param bool $bPreserve set to true will ignore all DROP TABLE statements
+ * @param string $sTblEngine
+ * @param string $sTblCollation
+ * @return boolean true if import successful
+ */
+	public function SqlImport($sSqlDump,
+	                          $sTablePrefix = '',
+	                          $bPreserve = true,
+	                          $sTblEngine = 'ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci',
+	                          $sTblCollation = ' collate utf8_unicode_ci')
+	{
+		$retval = true;
+		$this->error = '';
+		$aSearch  = array('{TABLE_PREFIX}','{TABLE_ENGINE}', '{TABLE_COLLATION}');
+		$aReplace = array($sTablePrefix, $sTblEngine, $sTblCollation);
+		$sql = '';
+		$aSql = file($sSqlDump);
+		while ( sizeof($aSql) > 0 ) {
+			$sSqlLine = trim(array_shift($aSql));
+			if (!preg_match('/^[-\/]+.*/', $sSqlLine)) {
+				$sql = $sql.' '.$sSqlLine;
+				if ((substr($sql,-1,1) == ';')) {
+					$sql = trim(str_replace( $aSearch, $aReplace, $sql));
+					if (!($bPreserve && preg_match('/^\s*DROP TABLE IF EXISTS/siU', $sql))) {
+						if(!mysql_query($sql, $this->db_handle)) {
+							$retval = false;
+							$this->error = mysql_error($this->db_handle);
+							unset($aSql);
+							break;
+						}
+					}
+					$sql = '';
+				}
+			}
+		}
+		return $retval;
+	}
+
+/**
+ * retuns the type of the engine used for requested table
+ * @param string $table name of the table, including prefix
+ * @return boolean/string false on error, or name of the engine (myIsam/InnoDb)
+ */
+	public function getTableEngine($table)
+	{
+		$retVal = false;
+		$mysqlVersion = mysql_get_server_info($this->db_handle);
+		$engineValue = (version_compare($mysqlVersion, '5.0') < 0) ? 'Type' : 'Engine';
+		$sql = "SHOW TABLE STATUS FROM " . DB_NAME . " LIKE '" . $table . "'";
+		if(($result = $this->query($sql))) {
+			if(($row = $result->fetchRow(MYSQL_ASSOC))) {
+				$retVal = $row[$engineValue];
+			}
+		}
+		return $retVal;
+	}
+
+
+} /// end of class database
+
+define('MYSQL_SEEK_FIRST', 0);
+define('MYSQL_SEEK_LAST', -1);
+
+class mysql {
+
+	// Run a query
+	function query($statement) {
+		$this->result = mysql_query($statement);
+		$this->error = mysql_error();
+		return $this->result;
+	}
+	
+	// Fetch num rows
+	function numRows() {
+		return mysql_num_rows($this->result);
+	}
+
+	// Fetch row  $typ = MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH
+	function fetchRow($typ = MYSQL_BOTH) {
+		return mysql_fetch_array($this->result, $typ);
+	}
+
+	function rewind()
+	{
+		return $this->seekRow();
+	}
+
+	function seekRow( $position = MYSQL_SEEK_FIRST )
+	{
+		$pmax = $this->numRows() - 1;
+		$p = (($position < 0 || $position > $pmax) ? $pmax : $position);
+		return mysql_data_seek($this->result, $p);
+	}
+
+	// Get error
+	function error() {
+		if(isset($this->error)) {
+			return $this->error;
+		} else {
+			return null;
+		}
+	}
+
+}
+/* this function is placed inside this file temporarely until a better place is found */
+/*  function to update a var/value-pair(s) in table ****************************
+ *  nonexisting keys are inserted
+ *  @param string $table: name of table to use (without prefix)
+ *  @param mixed $key:    a array of key->value pairs to update
+ *                        or a string with name of the key to update
+ *  @param string $value: a sting with needed value, if $key is a string too
+ *  @return bool:  true if any keys are updated, otherwise false
+ */
+	function db_update_key_value($table, $key, $value = '')
+	{
+		global $database;
+		if( !is_array($key))
+		{
+			if( trim($key) != '' )
+			{
+				$key = array( trim($key) => trim($value) );
+			} else {
+				$key = array();
+			}
+		}
+		$retval = true;
+		foreach( $key as $index=>$val)
+		{
+			$index = strtolower($index);
+			$sql = 'SELECT COUNT(`setting_id`) FROM `'.TABLE_PREFIX.$table.'` WHERE `name` = \''.$index.'\' ';
+			if($database->get_one($sql))
+			{
+				$sql = 'UPDATE ';
+				$sql_where = 'WHERE `name` = \''.$index.'\'';
+			}else {
+				$sql = 'INSERT INTO ';
+				$sql_where = '';
+			}
+			$sql .= '`'.TABLE_PREFIX.$table.'` ';
+			$sql .= 'SET `name` = \''.$index.'\', ';
+			$sql .= '`value` = \''.$val.'\' '.$sql_where;
+			if( !$database->query($sql) )
+			{
+				$retval = false;
+			}
+		}
+		return $retval;
+	}

Property changes on: tags/2.8.3/wb/framework/class.database.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.login.php
===================================================================
--- tags/2.8.3/wb/framework/class.login.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.login.php	(revision 1610)
@@ -0,0 +1,408 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         backend login
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+define('LOGIN_CLASS_LOADED', true);
+
+// Load the other required class files if they are not already loaded
+require_once(WB_PATH."/framework/class.admin.php");
+// Get WB version
+require_once(ADMIN_PATH.'/interface/version.php');
+
+class login extends admin {
+	public function __construct($config_array) {
+		// Get language vars
+		global $MESSAGE, $database;
+		parent::__construct();
+		// Get configuration values
+		while(list($key, $value) = each($config_array)) {
+			$this->{(strtolower($key))} = $value;
+		}
+		if(!isset($this->redirect_url)) { $this->redirect_url = ''; }
+		// Get the supplied username and password
+		if ($this->get_post('username_fieldname') != ''){
+			$username_fieldname = $this->get_post('username_fieldname');
+			$password_fieldname = $this->get_post('password_fieldname');
+		} else {
+			$username_fieldname = 'username';
+			$password_fieldname = 'password';
+		}
+		$this->username = htmlspecialchars (strtolower($this->get_post($username_fieldname)), ENT_QUOTES);
+
+		$this->password = $this->get_post($password_fieldname);
+		// Figure out if the "remember me" option has been checked
+		if($this->get_post('remember') == 'true') {
+			$this->remember = $this->get_post('remember');
+		} else {
+			$this->remember = false;
+		}
+		// Get the length of the supplied username and password
+		if($this->get_post($username_fieldname) != '') {
+			$this->username_len = strlen($this->username);
+			$this->password_len = strlen($this->password);
+		}
+		// If the url is blank, set it to the default url
+		$this->url = $this->get_post('url');
+		if ($this->redirect_url!='') {
+			$this->url = $this->redirect_url;
+		}
+		if(strlen($this->url) < 2) {
+			$this->url = $config_array['DEFAULT_URL'];
+		}
+		if($this->is_authenticated() == true) {
+			// User already logged-in, so redirect to default url
+			header('Location: '.$this->url);
+			exit();
+		} elseif($this->is_remembered() == true) {
+			// User has been "remembered"
+			// Get the users password
+			// $database = new database();
+			$sql  = 'SELECT * FROM `'.$this->users_table.'` ';
+			$sql .= 'WHERE `user_id`=\''.$this->get_safe_remember_key().'\'';
+			$query_details = $database->query($sql);
+			$fetch_details = $query_details->fetchRow();
+			$this->username = $fetch_details['username'];
+			$this->password = $fetch_details['password'];
+			// Check if the user exists (authenticate them)
+			if($this->authenticate()) {
+				// Authentication successful
+				header("Location: ".$this->url);
+				exit(0);
+			} else {
+				$this->message = $MESSAGE['LOGIN']['AUTHENTICATION_FAILED'];
+				$this->increase_attemps();
+			}
+		} elseif($this->username == '' AND $this->password == '') {
+			$this->message = $MESSAGE['LOGIN']['BOTH_BLANK'];
+			$this->display_login();
+		} elseif($this->username == '') {
+			$this->message = $MESSAGE['LOGIN']['USERNAME_BLANK'];
+			$this->increase_attemps();
+		} elseif($this->password == '') {
+			$this->message = $MESSAGE['LOGIN']['PASSWORD_BLANK'];
+			$this->increase_attemps();
+		} elseif($this->username_len < $config_array['MIN_USERNAME_LEN']) {
+			$this->message = $MESSAGE['LOGIN']['USERNAME_TOO_SHORT'];
+			$this->increase_attemps();
+		} elseif($this->password_len < $config_array['MIN_PASSWORD_LEN']) {
+			$this->message = $MESSAGE['LOGIN']['PASSWORD_TOO_SHORT'];
+			$this->increase_attemps();
+		} elseif($this->username_len > $config_array['MAX_USERNAME_LEN']) {
+			$this->message = $MESSAGE['LOGIN']['USERNAME_TOO_LONG'];
+			$this->increase_attemps();
+		} elseif($this->password_len > $config_array['MAX_PASSWORD_LEN']) {
+			$this->message = $MESSAGE['LOGIN']['PASSWORD_TOO_LONG'];
+			$this->increase_attemps();
+		} else {
+			// Check if the user exists (authenticate them)
+			$this->password = md5($this->password);
+			if($this->authenticate()) {
+				// Authentication successful
+				//echo $this->url;exit();
+				header("Location: ".$this->url);
+				exit(0);
+			} else {
+				$this->message = $MESSAGE['LOGIN']['AUTHENTICATION_FAILED'];
+				$this->increase_attemps();
+			}
+		}
+	}
+
+	// Authenticate the user (check if they exist in the database)
+	function authenticate() {
+		global $database;
+		// Get user information
+		// $database = new database();
+		// $query = 'SELECT * FROM `'.$this->users_table.'` WHERE MD5(`username`) = "'.md5($this->username).'" AND `password` = "'.$this->password.'" AND `active` = 1';
+ 		$loginname = ( preg_match('/[\;\=\&\|\<\> ]/',$this->username) ? '' : $this->username );
+		$sql  = 'SELECT * FROM `'.$this->users_table.'` ';
+		$sql .= 'WHERE `username`=\''.$loginname.'\' AND `password`=\''.$this->password.'\' AND `active`=1';
+		$results = $database->query($sql);
+		$results_array = $results->fetchRow();
+		$num_rows = $results->numRows();
+		if($num_rows == 1) {
+			$user_id = $results_array['user_id'];
+			$this->user_id = $user_id;
+			$_SESSION['USER_ID'] = $user_id;
+			$_SESSION['GROUP_ID'] = $results_array['group_id'];
+			$_SESSION['GROUPS_ID'] = $results_array['groups_id'];
+			$_SESSION['USERNAME'] = $results_array['username'];
+			$_SESSION['DISPLAY_NAME'] = $results_array['display_name'];
+			$_SESSION['EMAIL'] = $results_array['email'];
+			$_SESSION['HOME_FOLDER'] = $results_array['home_folder'];
+			// Run remember function if needed
+			if($this->remember == true) {
+				$this->remember($this->user_id);
+			}
+			// Set language
+			if($results_array['language'] != '') {
+				$_SESSION['LANGUAGE'] = $results_array['language'];
+			}
+			// Set timezone
+			if($results_array['timezone'] != '-72000') {
+				$_SESSION['TIMEZONE'] = $results_array['timezone'];
+			} else {
+				// Set a session var so apps can tell user is using default tz
+				$_SESSION['USE_DEFAULT_TIMEZONE'] = true;
+			}
+			// Set date format
+			if($results_array['date_format'] != '') {
+				$_SESSION['DATE_FORMAT'] = $results_array['date_format'];
+			} else {
+				// Set a session var so apps can tell user is using default date format
+				$_SESSION['USE_DEFAULT_DATE_FORMAT'] = true;
+			}
+			// Set time format
+			if($results_array['time_format'] != '') {
+				$_SESSION['TIME_FORMAT'] = $results_array['time_format'];
+			} else {
+				// Set a session var so apps can tell user is using default time format
+				$_SESSION['USE_DEFAULT_TIME_FORMAT'] = true;
+			}
+
+			// Get group information
+			$_SESSION['SYSTEM_PERMISSIONS'] = array();
+			$_SESSION['MODULE_PERMISSIONS'] = array();
+			$_SESSION['TEMPLATE_PERMISSIONS'] = array();
+			$_SESSION['GROUP_NAME'] = array();
+
+			$first_group = true;
+			foreach (explode(",", $this->get_session('GROUPS_ID')) as $cur_group_id)
+            {
+				$sql = 'SELECT * FROM `'.$this->groups_table.'` WHERE `group_id`=\''.$cur_group_id.'\'';
+				$results = $database->query($sql);
+				$results_array = $results->fetchRow();
+				$_SESSION['GROUP_NAME'][$cur_group_id] = $results_array['name'];
+				// Set system permissions
+				if($results_array['system_permissions'] != '') {
+					$_SESSION['SYSTEM_PERMISSIONS'] = array_merge($_SESSION['SYSTEM_PERMISSIONS'], explode(',', $results_array['system_permissions']));
+				}
+				// Set module permissions
+				if($results_array['module_permissions'] != '') {
+					if ($first_group) {
+          	$_SESSION['MODULE_PERMISSIONS'] = explode(',', $results_array['module_permissions']);
+          } else {
+          	$_SESSION['MODULE_PERMISSIONS'] = array_intersect($_SESSION['MODULE_PERMISSIONS'], explode(',', $results_array['module_permissions']));
+					}
+				}
+				// Set template permissions
+				if($results_array['template_permissions'] != '') {
+					if ($first_group) {
+          	$_SESSION['TEMPLATE_PERMISSIONS'] = explode(',', $results_array['template_permissions']);
+          } else {
+          	$_SESSION['TEMPLATE_PERMISSIONS'] = array_intersect($_SESSION['TEMPLATE_PERMISSIONS'], explode(',', $results_array['template_permissions']));
+					}
+				}
+				$first_group = false;
+			}	
+
+			// Update the users table with current ip and timestamp
+			$get_ts = time();
+			$get_ip = $_SERVER['REMOTE_ADDR'];
+			$sql  = 'UPDATE `'.$this->users_table.'` ';
+			$sql .= 'SET `login_when`=\''.$get_ts.'\', `login_ip`=\''.$get_ip.'\' ';
+			$sql .= 'WHERE `user_id`=\''.$user_id.'\'';
+			$database->query($sql);
+		}else {
+		  $num_rows = 0;
+		}
+		// Return if the user exists or not
+		return $num_rows;
+	}
+
+	// Increase the count for login attemps
+	function increase_attemps() {
+		if(!isset($_SESSION['ATTEMPS'])) {
+			$_SESSION['ATTEMPS'] = 0;
+		} else {
+			$_SESSION['ATTEMPS'] = $this->get_session('ATTEMPS')+1;
+		}
+		$this->display_login();
+	}
+	
+	// Function to set a "remembering" cookie for the user
+	function remember($user_id) {
+		return true;
+//		global $database;
+//		$remember_key = '';
+//		// Generate user id to append to the remember key
+//		$length = 11-strlen($user_id);
+//		if($length > 0) {
+//			for($i = 1; $i <= $length; $i++) {
+//				$remember_key .= '0';
+//			}
+//		}
+//		// Generate remember key
+//		$remember_key .= $user_id.'_';
+//		$salt = "abchefghjkmnpqrstuvwxyz0123456789";
+//		srand((double)microtime()*1000000);
+//		$i = 0;
+//		while ($i <= 10) {
+//			$num = rand() % 33;
+//			$tmp = substr($salt, $num, 1);
+//			$remember_key = $remember_key . $tmp;
+//			$i++;
+//		}
+//		$remember_key = $remember_key;
+//		// Update the remember key in the db
+//		// $database = new database();
+//		$database->query("UPDATE ".$this->users_table." SET remember_key = '$remember_key' WHERE user_id = '$user_id' LIMIT 1");
+//		if($database->is_error()) {
+//			return false;
+//		} else {
+//			// Workout options for the cookie
+//			$cookie_name = 'REMEMBER_KEY';
+//			$cookie_value = $remember_key;
+//			$cookie_expire = time()+60*60*24*30;
+//			// Set the cookie
+//			if(setcookie($cookie_name, $cookie_value, $cookie_expire, '/')) {
+//				return true;
+//			} else {
+//				return false;
+//			}
+//		}
+	}
+	
+	// Function to check if a user has been remembered
+	function is_remembered()
+	{
+		return false;
+//		global $database;
+//		// add if get_safe_remember_key not empty
+//		if(isset($_COOKIE['REMEMBER_KEY']) && ($_COOKIE['REMEMBER_KEY'] != '') && ($this->get_safe_remember_key() <> '' ) )
+//		{
+//			// Check if the remember key is correct
+//			// $database = new database();
+//			$sql = "SELECT `user_id` FROM `" . $this->users_table . "` WHERE `remember_key` = '";
+//			$sql .= $this->get_safe_remember_key() . "' LIMIT 1";
+//			$check_query = $database->query($sql);
+//
+//			if($check_query->numRows() > 0)
+//			{
+//				$check_fetch = $check_query->fetchRow();
+//				$user_id = $check_fetch['user_id'];
+//				// Check the remember key prefix
+//				$remember_key_prefix = '';
+//				$length = 11-strlen($user_id);
+//				if($length > 0)
+//				{
+//					for($i = 1; $i <= $length; $i++)
+//					{
+//						$remember_key_prefix .= '0';
+//					}
+//				}
+//				$remember_key_prefix .= $user_id.'_';
+//				$length = strlen($remember_key_prefix);
+//				if(substr($_COOKIE['REMEMBER_KEY'], 0, $length) == $remember_key_prefix)
+//				{
+//					return true;
+//				} else {
+//					return false;
+//				}
+//			} else {
+//				return false;
+//			}
+//		} else {
+//			return false;
+//		}
+	}
+
+	// Display the login screen
+	function display_login() {
+		// Get language vars
+		global $MESSAGE;
+		global $MENU;
+		global $TEXT;
+		// If attemps more than allowed, warn the user
+		if($this->get_session('ATTEMPS') > $this->max_attemps) {
+			$this->warn();
+		}
+		// Show the login form
+		if($this->frontend != true) {
+			require_once(WB_PATH.'/include/phplib/template.inc');
+			// $template = new Template($this->template_dir);
+			// Setup template object, parse vars to it, then parse it
+			$ThemePath = realpath(WB_PATH.$this->correct_theme_source($this->template_file));
+			$template = new Template($ThemePath);
+			$template->set_file('page', $this->template_file);
+			$template->set_block('page', 'mainBlock', 'main');
+			if($this->remember_me_option != true) {
+				$template->set_var('DISPLAY_REMEMBER_ME', 'display: none;');
+			} else {
+				$template->set_var('DISPLAY_REMEMBER_ME', '');
+			}
+			$template->set_var(array(
+				'ACTION_URL' => $this->login_url,
+				'ATTEMPS' => $this->get_session('ATTEMPS'),
+				'USERNAME' => $this->username,
+				'USERNAME_FIELDNAME' => $this->username_fieldname,
+				'PASSWORD_FIELDNAME' => $this->password_fieldname,
+				'MESSAGE' => $this->message,
+				'INTERFACE_DIR_URL' =>  ADMIN_URL.'/interface',
+				'MAX_USERNAME_LEN' => $this->max_username_len,
+				'MAX_PASSWORD_LEN' => $this->max_password_len,
+				'WB_URL' => WB_URL,
+				'THEME_URL' => THEME_URL,
+				'VERSION' => VERSION,
+				'REVISION' => REVISION,
+				'LANGUAGE' => strtolower(LANGUAGE),
+				'FORGOTTEN_DETAILS_APP' => $this->forgotten_details_app,
+				'TEXT_FORGOTTEN_DETAILS' => $TEXT['FORGOTTEN_DETAILS'],
+				'TEXT_USERNAME' => $TEXT['USERNAME'],
+				'TEXT_PASSWORD' => $TEXT['PASSWORD'],
+				'TEXT_REMEMBER_ME' => $TEXT['REMEMBER_ME'],
+				'TEXT_LOGIN' => $TEXT['LOGIN'],
+				'TEXT_HOME' => $TEXT['HOME'],
+				'PAGES_DIRECTORY' => PAGES_DIRECTORY,
+				'SECTION_LOGIN' => $MENU['LOGIN']
+				)
+			);
+			if(defined('DEFAULT_CHARSET')) {
+				$charset=DEFAULT_CHARSET;
+			} else {
+				$charset='utf-8';
+			}
+			
+			$template->set_var('CHARSET', $charset);	
+
+			$template->parse('main', 'mainBlock', false);
+			$template->pparse('output', 'page');
+		}
+	}
+
+	// sanities the REMEMBER_KEY cookie to avoid SQL injection
+	function get_safe_remember_key() {
+		if (!((strlen($_COOKIE['REMEMBER_KEY']) == 23) && (substr($_COOKIE['REMEMBER_KEY'], 11, 1) == '_'))) return '';
+		// create a clean cookie (XXXXXXXXXXX_YYYYYYYYYYY) where X:= numeric, Y:= hash
+		$clean_cookie = sprintf('%011d', (int) substr($_COOKIE['REMEMBER_KEY'], 0, 11)) . substr($_COOKIE['REMEMBER_KEY'], 11);
+		return ($clean_cookie == $_COOKIE['REMEMBER_KEY']) ? $this->add_slashes($clean_cookie) : '';
+	}
+	
+	// Warn user that they have had to many login attemps
+	function warn() {
+		header('Location: '.$this->warning_url);
+		exit(0);
+	}
+	
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/class.login.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.admin.php
===================================================================
--- tags/2.8.3/wb/framework/class.admin.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.admin.php	(revision 1610)
@@ -0,0 +1,472 @@
+<?php
+/**
+ *
+ * @category        framewotk
+ * @package         backend admin
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+require_once(WB_PATH.'/framework/class.wb.php');
+
+// Get WB version
+require_once(ADMIN_PATH.'/interface/version.php');
+
+// Include EditArea wrapper functions
+// require_once(WB_PATH . '/include/editarea/wb_wrapper_edit_area.php');
+//require_once(WB_PATH . '/framework/SecureForm.php');
+
+
+class admin extends wb {
+	// Authenticate user then auto print the header
+	public function __construct($section_name= '##skip##', $section_permission = 'start', $auto_header = true, $auto_auth = true)
+	{
+		parent::__construct(SecureForm::BACKEND);
+	if( $section_name != '##skip##' )
+	{
+		global $database, $MESSAGE;
+		// Specify the current applications name
+		$this->section_name = $section_name;
+		$this->section_permission = $section_permission;
+		// Authenticate the user for this application
+		if($auto_auth == true)
+		{
+			// First check if the user is logged-in
+			if($this->is_authenticated() == false)
+			{
+				header('Location: '.ADMIN_URL.'/login/index.php');
+				exit(0);
+			}
+
+			// Now check if they are allowed in this section
+			if($this->get_permission($section_permission) == false) {
+				die($MESSAGE['ADMIN']['INSUFFICIENT_PRIVELLIGES']);
+			}
+		}
+
+		// Check if the backend language is also the selected language. If not, send headers again.
+		$sql  = 'SELECT `language` FROM `'.TABLE_PREFIX.'users` ';
+		$sql .= 'WHERE `user_id`='.(int)$this->get_user_id();
+		$get_user_language = @$database->query($sql);
+		$user_language = ($get_user_language) ? $get_user_language->fetchRow() : '';
+		// prevent infinite loop if language file is not XX.php (e.g. DE_du.php)
+		$user_language = substr($user_language[0],0,2);
+		// obtain the admin folder (e.g. /admin)
+		$admin_folder = str_replace(WB_PATH, '', ADMIN_PATH);
+		if((LANGUAGE != $user_language) && file_exists(WB_PATH .'/languages/' .$user_language .'.php')
+			&& strpos($_SERVER['PHP_SELF'],$admin_folder.'/') !== false) {
+			// check if page_id is set
+			$page_id_url = (isset($_GET['page_id'])) ? '&page_id=' .(int) $_GET['page_id'] : '';
+			$section_id_url = (isset($_GET['section_id'])) ? '&section_id=' .(int) $_GET['section_id'] : '';
+			if(isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') { // check if there is an query-string
+				header('Location: '.$_SERVER['PHP_SELF'] .'?lang='.$user_language .$page_id_url .$section_id_url.'&'.$_SERVER['QUERY_STRING']);
+			} else {
+				header('Location: '.$_SERVER['PHP_SELF'] .'?lang='.$user_language .$page_id_url .$section_id_url);
+			}
+			exit();
+		}
+
+		// Auto header code
+		if($auto_header == true) {
+			$this->print_header();
+		}
+	}
+	}
+
+	// Print the admin header
+	function print_header($body_tags = '') {
+		// Get vars from the language file
+		global $MENU;
+		global $MESSAGE;
+		global $TEXT;
+		// Connect to database and get website title
+		global $database;
+		// $GLOBALS['FTAN'] = $this->getFTAN();
+		$this->createFTAN();
+		$sql = 'SELECT `value` FROM `'.TABLE_PREFIX.'settings` WHERE `name`=\'website_title\'';
+		$get_title = $database->query($sql);
+		$title = $get_title->fetchRow();
+		// Setup template object, parse vars to it, then parse it
+		$ThemePath = realpath(WB_PATH.$this->correct_theme_source('header.htt'));
+		$header_template = new Template($ThemePath);
+		$header_template->set_file('page', 'header.htt');
+		$header_template->set_block('page', 'header_block', 'header');
+		if(defined('DEFAULT_CHARSET')) {
+			$charset=DEFAULT_CHARSET;
+		} else {
+			$charset='utf-8';
+		}
+
+		// work out the URL for the 'View menu' link in the WB backend
+		// if the page_id is set, show this page otherwise show the root directory of WB
+		$view_url = WB_URL;
+		if(isset($_GET['page_id'])) {
+			// extract page link from the database
+			$sql  = 'SELECT `link` FROM `'.TABLE_PREFIX.'pages` ';
+			$sql .= 'WHERE `page_id`='.intval($_GET['page_id']);
+			$result = @$database->query($sql);
+			$row = @$result->fetchRow();
+			if($row) $view_url .= PAGES_DIRECTORY .$row['link']. PAGE_EXTENSION;
+		}
+
+		$header_template->set_var(	array(
+							'SECTION_NAME' => $MENU[strtoupper($this->section_name)],
+							'BODY_TAGS' => $body_tags,
+							'WEBSITE_TITLE' => ($title['value']),
+							'TEXT_ADMINISTRATION' => $TEXT['ADMINISTRATION'],
+							'CURRENT_USER' => $MESSAGE['START']['CURRENT_USER'],
+							'DISPLAY_NAME' => $this->get_display_name(),
+							'CHARSET' => $charset,
+							'LANGUAGE' => strtolower(LANGUAGE),
+							'VERSION' => VERSION,
+							'SP' => (defined('SP') ? SP : ''),
+							'REVISION' => REVISION,
+							'SERVER_ADDR' => ((int)$this->get_user_id()==1 ? $_SERVER['SERVER_ADDR'] : ''),
+							'WB_URL' => WB_URL,
+							'ADMIN_URL' => ADMIN_URL,
+							'THEME_URL' => THEME_URL,
+							'TITLE_START' => $MENU['START'],
+							'TITLE_VIEW' => $MENU['VIEW'],
+							'TITLE_HELP' => $MENU['HELP'],
+							'TITLE_LOGOUT' =>  $MENU['LOGOUT'],
+							'URL_VIEW' => $view_url,
+							'URL_HELP' => 'http://www.websitebaker2.org/',
+							'BACKEND_MODULE_CSS' => $this->register_backend_modfiles('css'),	// adds backend.css
+							'BACKEND_MODULE_JS'  => $this->register_backend_modfiles('js')		// adds backend.js
+						)
+					);
+
+		// Create the menu
+		$menu = array(
+					array(ADMIN_URL.'/pages/index.php', '', $MENU['PAGES'], 'pages', 1),
+					array(ADMIN_URL.'/media/index.php', '', $MENU['MEDIA'], 'media', 1),
+					array(ADMIN_URL.'/addons/index.php', '', $MENU['ADDONS'], 'addons', 1),
+					array(ADMIN_URL.'/preferences/index.php', '', $MENU['PREFERENCES'], 'preferences', 0),
+					array(ADMIN_URL.'/settings/index.php', '', $MENU['SETTINGS'], 'settings', 1),
+					array(ADMIN_URL.'/admintools/index.php', '', $MENU['ADMINTOOLS'], 'admintools', 1),
+					array(ADMIN_URL.'/access/index.php', '', $MENU['ACCESS'], 'access', 1)
+					);
+		$header_template->set_block('header_block', 'linkBlock', 'link');
+		foreach($menu AS $menu_item) {
+			$link = $menu_item[0];
+			$target = ($menu_item[1] == '') ? '_self' : $menu_item[1];
+			$title = $menu_item[2];
+			$permission_title = $menu_item[3];
+			$required = $menu_item[4];
+			$replace_old = array(ADMIN_URL, WB_URL, '/', 'index.php');
+			if($required == false OR $this->get_link_permission($permission_title)) {
+				$header_template->set_var('LINK', $link);
+				$header_template->set_var('TARGET', $target);
+				// If link is the current section apply a class name
+				if($permission_title == strtolower($this->section_name)) {
+					$header_template->set_var('CLASS', $menu_item[3] . ' current');
+				} else {
+					$header_template->set_var('CLASS', $menu_item[3]);
+				}
+				$header_template->set_var('TITLE', $title);
+				// Print link
+				$header_template->parse('link', 'linkBlock', true);
+			}
+		}
+		$header_template->parse('header', 'header_block', false);
+		$header_template->pparse('output', 'page');
+	}
+	
+	// Print the admin footer
+		function print_footer($activateJsAdmin = false) {
+		// include the required file for Javascript admin
+		if($activateJsAdmin != false) {
+			if(file_exists(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php')){
+				@include_once(WB_PATH.'/modules/jsadmin/jsadmin_backend_include.php');
+			}
+		}
+
+		// Setup template object, parse vars to it, then parse it
+		$ThemePath = realpath(WB_PATH.$this->correct_theme_source('footer.htt'));
+		$footer_template = new Template($ThemePath);
+		$footer_template->set_file('page', 'footer.htt');
+		$footer_template->set_block('page', 'footer_block', 'header');
+		$footer_template->set_var(array(
+						'BACKEND_BODY_MODULE_JS' => $this->register_backend_modfiles_body('js'),
+						'WB_URL' => WB_URL,
+						'ADMIN_URL' => ADMIN_URL,
+						'THEME_URL' => THEME_URL,
+			 ) );
+		$footer_template->parse('header', 'footer_block', false);
+		$footer_template->pparse('output', 'page');
+	}
+	
+	// Return a system permission
+	function get_permission($name, $type = 'system') {
+		// Append to permission type
+		$type .= '_permissions';
+		// Check if we have a section to check for
+		if($name == 'start') {
+			return true;
+		} else {
+			// Set system permissions var
+			$system_permissions = $this->get_session('SYSTEM_PERMISSIONS');
+			// Set module permissions var
+			$module_permissions = $this->get_session('MODULE_PERMISSIONS');
+			// Set template permissions var
+			$template_permissions = $this->get_session('TEMPLATE_PERMISSIONS');
+			// Return true if system perm = 1
+			if (isset($$type) && is_array($$type) && is_numeric(array_search($name, $$type))) {
+				if($type == 'system_permissions') {
+					return true;
+				} else {
+					return false;
+				}
+			} else {
+				if($type == 'system_permissions') {
+					return false;
+				} else {
+					return true;
+				}
+			}
+		}
+	}
+/*
+	function get_user_details($user_id) {
+		global $database;
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'users` ';
+		$sql .= 'WHERE `user_id`='.(int)$user_id.' LIMIT 1';
+		if(($resUser = $database->query($sql))){
+			if(!($recUser = $resUser->fetchRow())) {
+				$recUser['display_name'] = 'Unknown';
+				$recUser['username'] = 'unknown';
+			}
+		}
+		return $recUser;
+	}
+*/
+ function get_user_details($user_id) {
+  global $database;
+  $retval = array('username'=>'unknown','display_name'=>'Unknown','email'=>'');
+  $sql  = 'SELECT `username`,`display_name`,`email` ';
+  $sql .= 'FROM `'.TABLE_PREFIX.'users` ';
+  $sql .= 'WHERE `user_id`='.(int)$user_id;
+  if( ($resUsers = $database->query($sql)) ) {
+   if( ($recUser = $resUsers->fetchRow()) ) {
+    $retval = $recUser;
+   }
+  }
+  return $retval;
+ }
+
+    //
+	function get_section_details( $section_id, $backLink = 'index.php' ) {
+	global $database, $TEXT;
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'sections` ';
+		$sql .= 'WHERE `section_id`='.intval($section_id);
+		if(($resSection = $database->query($sql))){
+			if(!($recSection = $resSection->fetchRow())) {
+				$this->print_header();
+				$this->print_error($TEXT['SECTION'].' '.$TEXT['NOT_FOUND'], $backLink, true);
+			}
+			} else {
+				$this->print_header();
+				$this->print_error($database->get_error(), $backLink, true);
+			}
+		return $recSection;
+	}
+
+	function get_page_details( $page_id, $backLink = 'index.php' ) {
+		global $database, $TEXT;
+		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'pages` ';
+		$sql .= 'WHERE `page_id`='.intval($page_id);
+		if(($resPages = $database->query($sql))){
+			if(!($recPage = $resPages->fetchRow())) {
+			$this->print_header();
+			$this->print_error($TEXT['PAGE'].' '.$TEXT['NOT_FOUND'], $backLink, true);
+			}
+		} else {
+			$this->print_header();
+			$this->print_error($database->get_error(), $backLink, true);
+		}
+		return $recPage;
+	}
+
+	function get_page_permission($page,$action='admin') {
+		if($action != 'viewing') { $action = 'admin'; }
+		$action_groups = $action.'_groups';
+		$action_users  = $action.'_users';
+		$groups = $users = '0';
+		if(is_array($page)) {
+			$groups = $page[$action_groups];
+			$users  = $page[$action_users];
+		} else {
+			global $database;
+			$sql  = 'SELECT `'.$action_groups.'`,`'.$action_users.'` ';
+			$sql .= 'FROM `'.TABLE_PREFIX.'pages` ';
+			$sql .= 'WHERE `page_id`='.(int)$page;
+			if( ($res = $database->query($sql)) ) {
+				if( ($rec = $res->fetchRow()) ) {
+					$groups = $rec[$action_groups];
+					$users  = $rec[$action_users];
+				}
+			}
+		}
+		return ($this->ami_group_member($groups) || $this->is_group_match($this->get_user_id(), $users));
+	}
+
+	// Returns a system permission for a menu link
+	function get_link_permission($title) {
+		$title = str_replace('_blank', '', $title);
+		$title = strtolower($title);
+		// Set system permissions var
+		$system_permissions = $this->get_session('SYSTEM_PERMISSIONS');
+		// Set module permissions var
+		$module_permissions = $this->get_session('MODULE_PERMISSIONS');
+		if($title == 'start') {
+			return true;
+		} else {
+			// Return true if system perm = 1
+			if(is_numeric(array_search($title, $system_permissions))) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+	}
+
+	// Function to add optional module Javascript or CSS stylesheets into the <body> section of the backend
+	function register_backend_modfiles_body($file_id="js")
+		{
+		// sanity check of parameter passed to the function
+		$file_id = strtolower($file_id);
+		if($file_id !== "javascript" && $file_id !== "js")
+		{
+			return;
+		}
+		global $database;
+        $body_links = "";
+		// define default baselink and filename for optional module javascript and stylesheet files
+		if($file_id == "js") {
+			$base_link = '<script src="'.WB_URL.'/modules/{MODULE_DIRECTORY}/backend_body.js" type="text/javascript"></script>';
+			$base_file = "backend_body.js";
+		}
+		// check if backend_body.js files needs to be included to the <body></body> section of the backend
+		if(isset($_GET['tool']))
+			{
+			// check if displayed page contains a installed admin tool
+			$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+			$sql .= 'WHERE `type`=\'module\' AND `function`=\'tool\' AND `directory`=\''.addslashes($_GET['tool']).'\'';
+			$result = $database->query($sql);
+			if($result->numRows())
+				{
+				// check if admin tool directory contains a backend_body.js file to include
+				$tool = $result->fetchRow();
+				if(file_exists(WB_PATH ."/modules/" .$tool['directory'] ."/$base_file"))
+				{
+					// return link to the backend_body.js file
+					return str_replace("{MODULE_DIRECTORY}", $tool['directory'], $base_link);
+				}
+			}
+		} elseif(isset($_GET['page_id']) or isset($_POST['page_id']))
+		{
+			// check if displayed page in the backend contains a page module
+			if (isset($_GET['page_id']))
+			{
+				$page_id = (int) addslashes($_GET['page_id']);
+			} else {
+				$page_id = (int) addslashes($_POST['page_id']);
+			}
+			// gather information for all models embedded on actual page
+			$sql = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.(int)$page_id;
+			$query_modules = $database->query($sql);
+			while($row = $query_modules->fetchRow()) {
+				// check if page module directory contains a backend_body.js file
+				if(file_exists(WB_PATH ."/modules/" .$row['module'] ."/$base_file")) {
+					// create link with backend_body.js source for the current module
+					$tmp_link = str_replace("{MODULE_DIRECTORY}", $row['module'], $base_link);
+					// ensure that backend_body.js is only added once per module type
+					if(strpos($body_links, $tmp_link) === false) {
+						$body_links .= $tmp_link ."\n";
+					}
+				}
+			}
+			// write out links with all external module javascript/CSS files, remove last line feed
+			return rtrim($body_links);
+		}
+	}
+
+
+	// Function to add optional module Javascript or CSS stylesheets into the <head> section of the backend
+	function register_backend_modfiles($file_id="css") {
+		// sanity check of parameter passed to the function
+		$file_id = strtolower($file_id);
+		if($file_id !== "css" && $file_id !== "javascript" && $file_id !== "js") {
+			return;
+		}
+
+		global $database;
+		// define default baselink and filename for optional module javascript and stylesheet files
+		$head_links = "";
+		if($file_id == "css") {
+      	$base_link = '<link href="'.WB_URL.'/modules/{MODULE_DIRECTORY}/backend.css"';
+			$base_link.= ' rel="stylesheet" type="text/css" media="screen" />';
+			$base_file = "backend.css";
+		} else {
+			$base_link = '<script src="'.WB_URL.'/modules/{MODULE_DIRECTORY}/backend.js" type="text/javascript"></script>';
+			$base_file = "backend.js";
+		}
+
+		// check if backend.js or backend.css files needs to be included to the <head></head> section of the backend
+		if(isset($_GET['tool'])) {
+			// check if displayed page contains a installed admin tool
+			$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+			$sql .= 'WHERE `type`=\'module\' AND `function`=\'tool\' AND `directory`=\''.addslashes($_GET['tool']).'\'';
+			$result = $database->query($sql);
+			if($result->numRows()) {
+				// check if admin tool directory contains a backend.js or backend.css file to include
+				$tool = $result->fetchRow();
+				if(file_exists(WB_PATH ."/modules/" .$tool['directory'] ."/$base_file")) {
+        			// return link to the backend.js or backend.css file
+					return str_replace("{MODULE_DIRECTORY}", $tool['directory'], $base_link);
+				}
+			}
+		} elseif(isset($_GET['page_id']) || isset($_POST['page_id'])) {
+			// check if displayed page in the backend contains a page module
+			if (isset($_GET['page_id'])) {
+				$page_id = (int)$_GET['page_id'];
+			} else {
+				$page_id = (int)$_POST['page_id'];
+			}
+
+    		// gather information for all models embedded on actual page
+			$sql = 'SELECT `module` FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.(int)$page_id;
+			$query_modules = $database->query($sql);
+
+    		while($row = $query_modules->fetchRow()) {
+				// check if page module directory contains a backend.js or backend.css file
+      		if(file_exists(WB_PATH ."/modules/" .$row['module'] ."/$base_file")) {
+					// create link with backend.js or backend.css source for the current module
+					$tmp_link = str_replace("{MODULE_DIRECTORY}", $row['module'], $base_link);
+        			// ensure that backend.js or backend.css is only added once per module type
+        			if(strpos($head_links, $tmp_link) === false) {
+						$head_links .= $tmp_link ."\n";
+					}
+				}
+    		}
+    		// write out links with all external module javascript/CSS files, remove last line feed
+			return rtrim($head_links);
+		}
+	}
+}
+
+?>

Property changes on: tags/2.8.3/wb/framework/class.admin.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/SecureForm.mtab.php
===================================================================
--- tags/2.8.3/wb/framework/SecureForm.mtab.php	(nonexistent)
+++ tags/2.8.3/wb/framework/SecureForm.mtab.php	(revision 1610)
@@ -0,0 +1,424 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         SecureForm.mtab
+ * @author          WebsiteBaker Community Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+##  Heavy patched version, idea for patches based on :
+##  http://stackoverflow.com/questions/2695153/php-csrf-how-to-make-it-works-in-all-tabs/2695291#2695291
+##  Whith this patch the token System now allows for multiple browser tabs but 
+##  denies the use of multiple browsers.
+##  You can configure this class by adding several constants to your config.php
+##  All Patches are Copyright Norbert Heimsath released under GPLv3 
+##  http://www.gnu.org/licenses/gpl.html
+##  Take a look at  __construkt  for configuration options(constants).
+##  Patch version 0.3.5
+
+/**
+ * If you want some special configuration put this somewhere in your config.php for
+ * example or just uncomment the lines here
+ *
+ * This parameter now can be set with the admintool SecureForm Switcher coded by Luisehahne,
+ * pls ask for it in the forum
+ *
+ * Secret can contain anything its the base for the secret part for the hash
+ * define ('WB_SECFORM_SECRET','whatever you like');
+ * after how many seconds a new secret is generated
+ * define ('WB_SECFORM_SECRETTIME',86400);      #aprox one day
+ * shall we use fingerprinting true/false
+ * define ('WB_SECFORM_USEFP', true);
+ * Timeout till the form token times out. Integer value between 0-86400 seconds (one day)
+ * define ('WB_SECFORM_TIMEOUT', 3600);
+ * Name for the token form element only alphanumerical string allowed that starts whith a charakter
+ * define ('WB_SECFORM_TOKENNAME','my3form3');
+ * how many blocks of the IP should be used in fingerprint 0=no ipcheck, possible values 0-4
+ * define ('FINGERPRINT_WITH_IP_OCTETS',2);
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+class SecureForm {
+
+	const FRONTEND = 0;
+	const BACKEND  = 1;      
+
+        ## additional private data
+	private $_secret      	 = '5609bnefg93jmgi99igjefg';
+	private $_secrettime  	 = 86400;   #Approx. one day 
+        private $_tokenname   	 = 'formtoken';
+	private $_timeout	 = 7200;         
+	private $_useipblocks	 = 2;
+	private $_usefingerprint = true;
+        ### additional private data
+
+        private $_FTAN           = '';
+	private $_IDKEYs         = array('0'=>'0');
+	private $_idkey_name     = '';
+	private $_salt           = '';
+	private $_fingerprint    = '';
+	private $_serverdata  	 = '';
+
+	/* Construtor */
+	protected function __construct($mode = self::FRONTEND){
+
+        	## additional constants and stuff for global configuration
+
+		# Secret can contain anything its the base for the secret part of the hash
+                if (defined ('WB_SECFORM_SECRET')){ 	
+			$this->_secret=WB_SECFORM_SECRET;
+		}
+
+		# shall we use fingerprinting
+                if (defined ('WB_SECFORM_USEFP') AND WB_SECFORM_USEFP===false){
+			$this->_usefingerprint	= false;
+		}
+
+                # Timeout till the form token times out. Integer value between 0-86400 seconds (one day)
+                if (defined ('WB_SECFORM_TIMEOUT') AND is_numeric(WB_SECFORM_TIMEOUT) AND intval(WB_SECFORM_TIMEOUT) >=0 AND intval(WB_SECFORM_TIMEOUT) <=86400 ){
+			$this->_timeout=intval(WB_SECFORM_TIMEOUT);
+		}
+		# Name for the token form element only alphanumerical string allowed that starts whith a charakter
+                if (defined ('WB_SECFORM_TOKENNAME') AND !$this->_validate_alalnum(WB_SECFORM_TOKENNAME)){
+			$this->_tokenname=WB_SECFORM_TOKENNAME;
+		}
+		# how many bloks of the IP should be used 0=no ipcheck 
+                if (defined ('FINGERPRINT_WITH_IP_OCTETS') AND !$this->_is04(FINGERPRINT_WITH_IP_OCTETS)){
+			$this->_useipblocks=FINGERPRINT_WITH_IP_OCTETS;
+                }
+		## additional stuff end 
+		$this->_browser_fingerprint   = $this->_browser_fingerprint(true);
+		$this->_fingerprint   = $this->_generate_fingerprint();
+		$this->_serverdata    = $this->_generate_serverdata();
+		$this->_secret        = $this->_generate_secret();
+                $this->_salt          = $this->_generate_salt();
+
+		$this->_idkey_name    = substr($this->_fingerprint, hexdec($this->_fingerprint[strlen($this->_fingerprint)-1]), 16);
+		// make sure there is a alpha-letter at first position
+		$this->_idkey_name[0] = dechex(10 + (hexdec($this->_idkey_name[0]) % 5));
+		// takeover id_keys from session if available
+		if(isset($_SESSION[$this->_idkey_name]) && is_array($_SESSION[$this->_idkey_name])){
+			$this->_IDKEYs = $_SESSION[$this->_idkey_name];
+		}else{
+			$this->_IDKEYs = array('0'=>'0');
+			$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		}
+	}
+
+	private function _generate_secret(){
+
+                $secret= $this->_secret;
+		$secrettime= $this->_secrettime;
+		#create a different secret every day
+		$TimeSeed= floor(time()/$secrettime)*$secrettime;  #round(floor) time() to whole days
+		$DomainSeed =  $_SERVER['SERVER_NAME'];  # generate a numerical from server name.
+		$Seed = $TimeSeed+$DomainSeed;
+                $secret .=md5($Seed);  #
+
+		$secret .= $this->_secret.$this->_serverdata.session_id();
+		if ($this->_usefingerprint){$secret.= $this->_browser_fingerprint;}
+		
+	return $secret;
+	}
+
+
+
+	private function _generate_salt()
+		{
+			if(function_exists('microtime'))
+			{
+				list($usec, $sec) = explode(" ", microtime());
+				$salt = (string)((float)$usec + (float)$sec);
+			}else{
+				$salt = (string)time();
+			}
+			$salt = (string)rand(10000, 99999) . $salt . (string)rand(10000, 99999);
+			return md5($salt);
+		}
+
+	private function _generate_fingerprint()
+	{
+	// server depending values
+ 		$fingerprint  = $this->_generate_serverdata();
+		
+	// client depending values
+		$fingerprint .= ( isset($_SERVER['HTTP_USER_AGENT']) ) ? $_SERVER['HTTP_USER_AGENT'] : '17';
+		$usedOctets = ( defined('FINGERPRINT_WITH_IP_OCTETS') ) ? intval(defined('FINGERPRINT_WITH_IP_OCTETS')) : 0;
+		$clientIp = ( isset($_SERVER['REMOTE_ADDR'])  ? $_SERVER['REMOTE_ADDR'] : '' );
+		if(($clientIp != '') && ($usedOctets > 0)){
+			$ip = explode('.', $clientIp);
+			while(sizeof($ip) > $usedOctets) { array_pop($ip); }
+			$clientIp = implode('.', $ip);
+		}else {
+			$clientIp = 19;
+		}
+		$fingerprint .= $clientIp;
+		return md5($fingerprint);
+	}
+
+	private function _generate_serverdata(){
+
+		$usedOctets = ( defined('FINGERPRINT_WITH_IP_OCTETS') ) ? (intval(FINGERPRINT_WITH_IP_OCTETS) % 5) : 2;
+		$serverdata  = '';
+	 	$serverdata .= ( isset($_SERVER['SERVER_SIGNATURE']) ) ? $_SERVER['SERVER_SIGNATURE'] : '2';
+		$serverdata .= ( isset($_SERVER['SERVER_SOFTWARE']) ) ? $_SERVER['SERVER_SOFTWARE'] : '3';
+		$serverdata .= ( isset($_SERVER['SERVER_NAME']) ) ? $_SERVER['SERVER_NAME'] : '5';
+		$serverIp = ( isset($_SERVER['SERVER_ADDR']) ) ? $_SERVER['SERVER_ADDR'] : '';
+		if(($serverIp != '') && ($usedOctets > 0)){
+			$ip = explode('.', $serverIp);
+			while(sizeof($ip) > $usedOctets) { array_pop($ip); }
+			$serverdata .= implode('.', $ip);
+		}else {
+			$serverdata .= '7';
+		}
+		$serverdata .= ( isset($_SERVER['SERVER_PORT']) ) ? $_SERVER['SERVER_PORT'] : '11';
+		$serverdata .= ( isset($_SERVER['SERVER_ADMIN']) ) ? $_SERVER['SERVER_ADMIN'] : '13';
+		$serverdata .= PHP_VERSION;
+	return  $serverdata;
+	}
+
+        // fake funktion , just exits to avoid error message 
+        final protected function createFTAN(){}
+
+	/*
+	* creates selfsigning Formular transactionnumbers for unique use
+	* @access public
+	* @param bool $asTAG: true returns a complete prepared, hidden HTML-Input-Tag (default)
+	*                     false returns an GET argument 'key=value'
+	* @return mixed:      string
+	*
+	* requirements: an active session must not be available but it makes no sense whithout :-)
+	*/
+	final public function getFTAN( $as_tag = true)
+	{
+		$secret= $this->_secret;
+
+		$timeout= time()+$this->_timeout;
+
+		#mt_srand(hexdec(crc32(microtime()));
+                $token= dechex(mt_rand());
+
+                $hash= sha1($secret.'-'.$token.'-'.$timeout);
+		$signed= $token.'-'.$timeout.'-'.$hash;
+
+		if($as_tag == true)
+		{ // by default return a complete, hidden <input>-tag
+			return '<input type="hidden" name="'.$this->_tokenname.'" value="'.htmlspecialchars($signed).'" title="" alt="" />';
+		}else{ // return an array with raw tokenname=value
+			return $this->_tokenname.'='.$signed;
+		}
+	}
+
+	/*
+	* checks received form-transactionnumbers against itself
+	* @access public
+	* @param string $mode: requestmethode POST(default) or GET
+	* @return bool:    true if numbers matches against stored ones
+	*
+	* requirements: no active session must be available but it makes no sense whithout.
+	* this check will prevent from multiple sending a form. history.back() also will never work
+	*/
+	final public function checkFTAN( $mode = 'POST')
+	{
+		$mode = (strtoupper($mode) != 'POST' ? '_GET' : '_POST');
+
+		$isok= false;
+		$secret= $this->_secret;
+
+		if (isset($GLOBALS[$mode][$this->_tokenname])) 	{$latoken=$GLOBALS[$mode][$this->_tokenname];}
+                else 						{return $isok;}
+
+		$parts= explode('-', $latoken);
+		if (count($parts)==3) {
+			list($token,$timeout, $hash)= $parts;
+			if ($hash==sha1($secret.'-'.$token.'-'.$timeout) AND $timeout > time())
+			{$isok= true;}
+		}
+
+		return $isok;
+	}
+
+	/*
+	* save values in session and returns a ID-key
+	* @access public
+	* @param mixed $value: the value for witch a key shall be generated and memorized
+	* @return string:      a MD5-Key to use instead of the real value
+	*
+	* @requirements: an active session must be available
+	* @description: IDKEY can handle string/numeric/array - vars. Each key is a
+	*/
+	final public function getIDKEY($value)
+	{
+		if( is_array($value) == true )
+		{ // serialize value, if it's an array
+			$value = serialize($value);
+		}
+		// crypt value with salt into md5-hash
+		// and return a 16-digit block from random start position
+		$key = substr( md5($this->_salt.(string)$value), rand(0,15), 16);
+		do{ // loop while key/value isn't added
+			if( !array_key_exists($key, $this->_IDKEYs) )
+			{ // the key is unique, so store it in list
+				$this->_IDKEYs[$key] = $value;
+				break;
+			}else {
+				// if key already exist, increment the last five digits until the key is unique
+				$key = substr($key, 0, -5).dechex(('0x'.substr($key, -5)) + 1);
+			}
+		}while(0);
+		// store key/value-pairs into session
+		$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		return $key;
+	}
+
+	/*
+	* search for key in session and returns the original value
+	* @access public
+	* @param string $fieldname: name of the POST/GET-Field containing the key or hex-key itself
+	* @param mixed $default: returnvalue if key not exist (default 0)
+	* @param string $request: requestmethode can be POST or GET or '' (default POST)
+	* @return mixed: the original value (string, numeric, array) or DEFAULT if request fails
+	*
+	* @requirements: an active session must be available
+	* @description: each IDKEY can be checked only once. Unused Keys stay in list until the
+	*               session is destroyed.
+	*/
+ 	final public function checkIDKEY( $fieldname, $default = 0, $request = 'POST' )
+	{
+		$return_value = $default; // set returnvalue to default
+		switch( strtoupper($request) )
+		{
+			case 'POST':
+				$key = isset($_POST[$fieldname]) ? $_POST[$fieldname] : $fieldname;
+				break;
+			case 'GET':
+				$key = isset($_GET[$fieldname]) ? $_GET[$fieldname] : $fieldname;
+				break;
+			default:
+				$key = $fieldname;
+		}
+		if( preg_match('/[0-9a-f]{16}$/', $key) )
+		{ // key must be a 16-digit hexvalue
+			if( array_key_exists($key, $this->_IDKEYs))
+			{ // check if key is stored in IDKEYs-list
+				$return_value = $this->_IDKEYs[$key]; // get stored value
+				unset($this->_IDKEYs[$key]);   // remove from list to prevent multiuse
+				$_SESSION[$this->_idkey_name] = $this->_IDKEYs; // save modified list into session again
+				if( preg_match('/.*(?<!\{).*(\d:\{.*;\}).*(?!\}).*/', $return_value) )
+				{ // if value is a serialized array, then deserialize it
+					$return_value = unserialize($return_value);
+				}
+			}
+		}
+		return $return_value;
+	}
+
+	/* @access public
+	* @return void
+	*
+	* @requirements: an active session must be available
+	* @description: remove all entries from IDKEY-Array
+	*
+	*/
+ 	final public function clearIDKEY()
+	{
+		 $this->_IDKEYs = array('0'=>'0');
+	}
+
+
+	## additional Functions needed cause the original ones lack some functionality
+	## all are Copyright Norbert Heimsath, heimsath.org
+	## released under GPLv3  http://www.gnu.org/licenses/gpl.html
+
+	/* Made because ctype_ gives strange results using mb Strings*/ 
+ 	private function _validate_alalnum($input){
+	# alphanumerical string that starts whith a letter charakter 
+		if (preg_match('/^[a-zA-Z][0-9a-zA-Z]+$/u', $input))
+			{return false;}
+	
+	return "The given input is not an alphanumeric string.";
+	} 
+
+ 	private function _is04($input){
+	# integer value between 0-4
+		if (preg_match('/^[0-4]$/', $input)) {return false;}
+	
+	return "The given input is not an alphanumeric string.";
+	} 
+
+
+	private function _getip($ipblocks=4){
+	/*
+	Just a function to get User ip even if hes behind a proxy
+	*/
+		$ip    	=   ""; //Ip address result
+		$cutip	=   ""; //Ip address cut to limit
+	
+		# mabe user is behind a Proxy but we need his real ip address if we got a nice Proxyserver, 
+		# it sends us the "HTTP_X_FORWARDED_FOR" Header. Sometimes there is more than one Proxy.
+		# !!!!!! THIS PART WAS NEVER TESTED BECAUSE I ONLY GOT A DIRECT INTERNET CONNECTION !!!!!!
+		# long2ip(ip2long($lastip)) makes sure we got nothing else than an ip into our script ;-)
+		# !!!!! WARNING the 'HTTP_X_FORWARDED_FOR' Part is NOT TESTED !!!!!
+		if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND !empty($_SERVER['HTTP_X_FORWARDED_FOR']))
+		{
+			$iplist= explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
+			$lastip = array_pop($iplist);
+			$ip.= long2ip(ip2long($lastip));
+		}
+		
+		/* If theres no other supported info we just use REMOTE_ADDR
+		If we have a fiendly proxy supporting  HTTP_X_FORWARDED_FOR its ok to use the full address.
+		But if there is no HTTP_X_FORWARDED_FOR we can  not be sure if its a proxy or whatever, so we use the 
+		blocklimit for IP address. 
+		*/
+		else 
+		{
+			$ip = long2ip(ip2long($_SERVER['REMOTE_ADDR']));
+	
+			# ipblocks used here defines how many blocks of the ip adress are checked xxx.xxx.xxx.xxx
+			$blocks = explode('.', $ip);
+			for ($i=0; $i<$ipblocks; $i++){
+				$cutip.= $blocks[$i] . '.';
+				}
+			$ip=substr($cutip, 0, -1);
+		}
+		
+	return $ip;
+	}
+	
+	private function _browser_fingerprint($encode=true,$fpsalt="My Fingerprint: "){
+	/*
+	Creates a basic Browser Fingerprint for securing the session and forms.
+	*/
+	
+		$fingerprint=$fpsalt;
+		if (isset($_SERVER['HTTP_USER_AGENT'])){ $fingerprint .= $_SERVER['HTTP_USER_AGENT'];}
+		if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];}
+		if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_ENCODING'];}
+		if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])){ $fingerprint .= $_SERVER['HTTP_ACCEPT_CHARSET'];}
+		
+		$fingerprint.= $this->_getip($this->_useipblocks);
+		
+		if ($encode){$fingerprint=md5($fingerprint);}
+	
+	return $fingerprint;
+	}
+	##
+	## additional Functions END
+	##
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/SecureForm.mtab.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/SecureForm.php
===================================================================
--- tags/2.8.3/wb/framework/SecureForm.php	(nonexistent)
+++ tags/2.8.3/wb/framework/SecureForm.php	(revision 1610)
@@ -0,0 +1,279 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         SecureForm
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+class SecureForm {
+
+	const FRONTEND = 0;
+	const BACKEND  = 1;
+
+
+	private $_FTAN        = '';
+	private $_IDKEYs      = array('0'=>'0');
+	private $_ftan_name   = '';
+	private $_idkey_name  = '';
+	private $_salt        = '';
+	private $_fingerprint = '';
+
+/* Construtor */
+	protected function __construct($mode = self::FRONTEND)
+	{
+		$this->_FTAN  = '';
+		$this->_salt = $this->_generate_salt();
+		$this->_fingerprint = $this->_generate_fingerprint();
+	// generate names for session variables
+		$this->_ftan_name =
+			substr($this->_fingerprint, -(16 + hexdec($this->_fingerprint[0])), 16);
+	// make sure there is a alpha-letter at first position
+		$this->_ftan_name = $this->_makeFirst2Letter($this->_ftan_name);
+		$this->_idkey_name =
+			substr($this->_fingerprint, hexdec($this->_fingerprint[strlen($this->_fingerprint)-1]), 16);
+	// make sure there is a alpha-letter at first position
+		$this->_idkey_name = $this->_makeFirst2Letter($this->_idkey_name);
+	// takeover id_keys from session if available
+		if(isset($_SESSION[$this->_idkey_name]) && is_array($_SESSION[$this->_idkey_name]))
+		{
+			$this->_IDKEYs = $_SESSION[$this->_idkey_name];
+		}else{
+			$this->_IDKEYs = array('0'=>'0');
+			$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		}
+	}
+
+	private function _makeFirst2Letter($string)
+	{
+		$string[0] = dechex(10 + (hexdec($string[0]) % 5));
+		return $string;
+	}
+
+	private function _generate_salt()
+	{
+		if(function_exists('microtime'))
+		{
+			list($usec, $sec) = explode(" ", microtime());
+			$salt = (string)((float)$usec + (float)$sec);
+		}else{
+			$salt = (string)time();
+		}
+		$salt = (string)rand(10000, 99999) . $salt . (string)rand(10000, 99999);
+		return md5($salt);
+	}
+
+	private function _generate_fingerprint()
+	{
+		$usedOctets = ( defined('FINGERPRINT_WITH_IP_OCTETS') ) ? (intval(FINGERPRINT_WITH_IP_OCTETS) % 5) : 2;
+		// server depending values
+		$fingerprint  = '';
+		$fingerprint .= ( isset($_SERVER['SERVER_SIGNATURE']) ) ? $_SERVER['SERVER_SIGNATURE'] : '2';
+		$fingerprint .= ( isset($_SERVER['SERVER_SOFTWARE']) ) ? $_SERVER['SERVER_SOFTWARE'] : '3';
+		$fingerprint .= ( isset($_SERVER['SERVER_NAME']) ) ? $_SERVER['SERVER_NAME'] : '5';
+		$serverIp = ( isset($_SERVER['SERVER_ADDR']) ) ? $_SERVER['SERVER_ADDR'] : '';
+		if(($serverIp != '') && ($usedOctets > 0)){
+			$ip = explode('.', $serverIp);
+			while(sizeof($ip) > $usedOctets) { array_pop($ip); }
+			$fingerprint .= implode('.', $ip);
+		}else {
+			$fingerprint .= '7';
+		}
+		$fingerprint .= ( isset($_SERVER['SERVER_PORT']) ) ? $_SERVER['SERVER_PORT'] : '11';
+		$fingerprint .= ( isset($_SERVER['SERVER_ADMIN']) ) ? $_SERVER['SERVER_ADMIN'] : '13';
+		$fingerprint .= __FILE__;
+		$fingerprint .= PHP_VERSION;
+		// client depending values
+		$fingerprint .= ( isset($_SERVER['HTTP_USER_AGENT']) ) ? $_SERVER['HTTP_USER_AGENT'] : '19';
+		// $usedOctets = ( defined('FINGERPRINT_WITH_IP_OCTETS') ) ? (intval(FINGERPRINT_WITH_IP_OCTETS) % 5) : 2;
+		$clientIp = ( isset($_SERVER['REMOTE_ADDR'])  ? $_SERVER['REMOTE_ADDR'] : '' );
+		if(($clientIp != '') && ($usedOctets > 0)){
+			$ip = explode('.', $clientIp);
+			while(sizeof($ip) > $usedOctets) { array_pop($ip); }
+			$clientIp = implode('.', $ip);
+		}else {
+			$clientIp = '23';
+		}
+		$fingerprint = md5($fingerprint.$clientIp);
+		$lastDigit = hexdec($fingerprint[strlen($fingerprint)-1]);
+		if ((hexdec($fingerprint[0]) + $lastDigit) == 16) {
+			$fingerprint[strlen($fingerprint)-1] = dechex(($lastDigit + 6) % 16);
+		}
+		return $fingerprint;
+	}
+
+	private function _calcFtan($tanPart)
+	{
+		$ftan = md5($tanPart . $this->_fingerprint);
+		$name = substr($ftan, -(16 + hexdec($ftan[0])), 16);
+		$name = $this->_makeFirst2Letter($name);
+		$value = substr($ftan, hexdec($ftan[strlen($ftan)-1]), 16);
+		return array( $name, $value);
+	}
+/**
+ * creates Formular transactionnumbers for unique use
+ *
+ * @return void
+ * requirements: an active session must be available
+ */
+	final protected function createFTAN()
+	{
+		if( $this->_FTAN == '')
+		{ // if no FTAN exists, create new one from time and salt
+			$this->_FTAN = md5($this->_fingerprint.$this->_salt);
+			$_SESSION[$this->_ftan_name] = $this->_FTAN; // store FTAN into session
+		}
+	}
+/*
+ * returns the current FTAN
+ * @access public
+ * @param bool $mode: true or POST returns a complete prepared, hidden HTML-Input-Tag (default)
+ *                    false or GET returns an GET argument 'key=value'
+ * @return mixed:     array or string
+ */
+	final public function getFTAN( $mode = 'POST')
+	{
+		$ftan = $this->_calcFtan($this->_FTAN);
+		if((is_string($mode) && strtolower($mode) == 'post') || ($mode === true))
+		{ // by default return a complete, hidden <input>-tag
+			return '<input type="hidden" name="'.$ftan[0].'" value="'.$ftan[1].'" title="" alt="" />';
+		}else{ // return an string with GET params (FTAN0=FTAN1)
+			return $ftan[0].'='.$ftan[1];
+		}
+	}
+
+/*
+ * checks received form-transactionnumbers against session-stored one
+ * @access public
+ * @param string $mode: requestmethode POST(default) or GET
+ * @return bool:    true if numbers matches against stored ones
+ *
+ * requirements: an active session must be available
+ * this check will prevent from multiple sending a form. history.back() also will never work
+ */
+	final public function checkFTAN( $mode = 'POST')
+	{
+		$retval = false;
+		if(isset($_SESSION[$this->_ftan_name]))
+		{
+			if( $_SESSION[$this->_ftan_name] && (strlen($_SESSION[$this->_ftan_name]) == strlen(md5('dummy'))))
+			{
+				$ftan = $this->_calcFtan($_SESSION[$this->_ftan_name]);
+				unset($_SESSION[$this->_ftan_name]);
+				$mode = (strtoupper($mode) != 'POST' ? '_GET' : '_POST');
+				if( isset($GLOBALS[$mode][$ftan[0]]))
+				{
+					$retval = ($GLOBALS[$mode][$ftan[0]] == $ftan[1]);
+					unset($GLOBALS[$mode][$ftan[0]]);
+				}
+			}
+		}
+		return $retval;
+	}
+
+/*
+ * save values in session and returns a ID-key
+ * @access public
+ * @param mixed $value: the value for witch a key shall be generated and memorized
+ * @return string:      a MD5-Key to use instead of the real value
+ *
+ * @requirements: an active session must be available
+ * @description: IDKEY can handle string/numeric/array - vars. Each key is a
+ */
+	final public function getIDKEY($value)
+	{
+		if( is_array($value) == true )
+		{ // serialize value, if it's an array
+			$value = serialize($value);
+		}
+		// crypt value with salt into md5-hash
+		// and return a 16-digit block from random start position
+		$key = substr( md5($this->_salt.(string)$value), rand(0,15), 16);
+		do{ // loop while key/value isn't added
+			if( !array_key_exists($key, $this->_IDKEYs) )
+			{ // the key is unique, so store it in list
+				$this->_IDKEYs[$key] = $value;
+				break;
+			}else {
+				// if key already exist, increment the last five digits until the key is unique
+				$key = substr($key, 0, -5).dechex(('0x'.substr($key, -5)) + 1);
+			}
+		}while(0);
+		// store key/value-pairs into session
+		$_SESSION[$this->_idkey_name] = $this->_IDKEYs;
+		return $key;
+	}
+
+/*
+ * search for key in session and returns the original value
+ * @access public
+ * @param string $fieldname: name of the POST/GET-Field containing the key or hex-key itself
+ * @param mixed $default: returnvalue if key not exist (default 0)
+ * @param string $request: requestmethode can be POST or GET or '' (default POST)
+ * @return mixed: the original value (string, numeric, array) or DEFAULT if request fails
+ *
+ * @requirements: an active session must be available
+ * @description: each IDKEY can be checked only once. Unused Keys stay in list until the
+ *               session is destroyed.
+ */
+ 	final public function checkIDKEY( $fieldname, $default = 0, $request = 'POST' )
+	{
+		$return_value = $default; // set returnvalue to default
+		switch( strtoupper($request) )
+		{
+			case 'POST':
+				$key = isset($_POST[$fieldname]) ? $_POST[$fieldname] : $fieldname;
+				break;
+			case 'GET':
+				$key = isset($_GET[$fieldname]) ? $_GET[$fieldname] : $fieldname;
+				break;
+			default:
+				$key = $fieldname;
+		}
+
+		if( preg_match('/[0-9a-f]{16}$/', $key) )
+		{ // key must be a 16-digit hexvalue
+			if( array_key_exists($key, $this->_IDKEYs))
+			{ // check if key is stored in IDKEYs-list
+				$return_value = $this->_IDKEYs[$key]; // get stored value
+				unset($this->_IDKEYs[$key]);   // remove from list to prevent multiuse
+				$_SESSION[$this->_idkey_name] = $this->_IDKEYs; // save modified list into session again
+				if( preg_match('/.*(?<!\{).*(\d:\{.*;\}).*(?!\}).*/', $return_value) )
+				{ // if value is a serialized array, then deserialize it
+					$return_value = unserialize($return_value);
+				}
+			}
+		}
+		return $return_value;
+	}
+
+/* @access public
+ * @return void
+ *
+ * @requirements: an active session must be available
+ * @description: remove all entries from IDKEY-Array
+ *
+ */
+ 	final public function clearIDKEY()
+	{
+		 $this->_IDKEYs = array('0'=>'0');
+	}
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/SecureForm.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.msg_queue.php
===================================================================
--- tags/2.8.3/wb/framework/class.msg_queue.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.msg_queue.php	(revision 1610)
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Description of class
+ *
+ * @author wkl
+ */
+class msgQueue {
+
+	const RETVAL_ARRAY  = 0;
+	const RETVAL_STRING = 1; // (default)
+
+	private static $_instance;
+
+	private $_error = array();
+	private $_success = array();
+
+	protected function __construct() {
+		$this->_error = array();
+		$this->_success = array();
+	}
+	private function __clone() { throw new Exception('cloning Class '.__CLASS__.' is illegal'); }
+
+    public static function handle()
+    {
+        if (!isset(self::$_instance)) {
+            $c = __CLASS__;
+            self::$_instance = new $c;
+        }
+        return self::$_instance;
+	}
+
+	public static function add($message = '', $type = false)
+	{
+		if($type)
+		{
+			self::handle()->_success[] = $message;
+		}else
+		{
+			self::handle()->_error[] = $message;
+		}
+	}
+
+	public static function clear()
+	{
+		self::handle()->_error = array();
+		self::handle()->_success = array();
+	}
+
+	public static function isEmpty()
+	{
+		return (sizeof(self::handle()->_success) == 0 && sizeof(self::handle()->_error) == 0 );
+	}
+	
+	public static function getError($retval_type = self::RETVAL_STRING)
+	{
+		if(sizeof(self::handle()->_error))
+		{
+			if($retval_type == self::RETVAL_STRING)
+			{
+				return implode('<br />', self::handle()->_error);
+			}else
+			{
+				return self::handle()->_error;
+			}
+		}
+	}
+
+	public static function getSuccess($retval_type = self::RETVAL_STRING)
+	{
+		if(sizeof(self::handle()->_success))
+		{
+			if($retval_type == self::RETVAL_STRING)
+			{
+				return implode('<br />', self::handle()->_success);
+			}else
+			{
+				return self::handle()->_success;
+			}
+		}
+	}
+
+
+}
+?>

Property changes on: tags/2.8.3/wb/framework/class.msg_queue.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.logfile.php
===================================================================
--- tags/2.8.3/wb/framework/class.logfile.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.logfile.php	(revision 1610)
@@ -0,0 +1,240 @@
+<?php
+/**
+ *
+ * @category        event logging
+ * @package         core
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.2
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ * @description     definition of all core constants.
+ */
+
+/**
+ * Description of classlog
+ *
+ * @author wkl
+ */
+class LogFile {
+
+	private $_fh;                  // file-handle for logfile
+	private $_log_path;            // path to logfile
+	private $_log_file;            // name of logfile
+	private $_error = false;       // store internal errors
+/*
+ * class can not be instanciated standalone
+ */
+	protected function __construct( $log_file )
+	{
+		$this->_log_file = $log_file;
+	}
+
+/*
+ * open the logfile for append
+ */
+	private function openLogFile()
+	{
+		$this->_fh = fopen($this->_log_path.$this->_log_file, 'ab');
+		return isset($this->_fh);
+	}
+/*
+ * provide read-only properties
+ */
+	public function __get($property)
+	{
+		switch(strtolower($property)):
+			case 'error':
+				return $this->_error;
+				break;
+			default:
+				return null;
+		endswitch;
+	}
+/*
+ * flush and close logfile
+ */
+	private function closeLogFile()
+	{
+		if( isset($this->_fh) )
+		{
+			fflush($this->_fh);
+			fclose($this->_fh);
+			unset($this->_fh);
+		}
+	}
+
+/*
+ * @param  string $logdir: directory to place the logfile
+ * @return bool: true if directory is valid and writeable
+ * @description:
+ */
+	public function setLogDir( $logdir )
+	{
+		$this->_error = false;
+		$retval = false;
+		if( ($logdir = realpath($logdir)) )
+		{
+			$logdir = rtrim(str_replace('\\', '/', $logdir), '/');
+			if( defined('WB_PATH') )
+			{
+				$sysroot = WB_PATH;
+			}
+			else
+			{
+				$script_filename = str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']);
+				$script_name = str_replace('\\', '/', $_SERVER['SCRIPT_NAME']);
+				$sysroot = str_replace($script_name, '', $script_filename);
+			}
+			if( stripos($logdir, $sysroot) === 0 )
+			{
+				if( is_writable($logdir))
+				{
+					if( file_exists($logdir.'/'.$this->_log_file) )
+					{
+						if( is_writable($logdir.'/'.$this->_log_file) )
+						{
+							$this->_log_path = $logdir.'/';
+							$retval = true;
+						}else
+						{
+							$this->_error = 'existing logfile is not writable! ['.$logdir.$this->_log_file.']';
+						}
+					}
+					else
+					{
+						$this->_log_path = $logdir.'/';
+						$retval = true;
+					}
+				}else
+				{
+					$this->_error = 'access denied for directory ['.$logdir.']';
+				}
+			}else
+			{
+				$this->_error = 'logdir [ '.$logdir.' ] points outside of DOCUMENT_ROOT [ '.$sysroot.' ]';
+			}
+		}else
+		{
+			$this->_error = 'logdir can not be resolved ['.$logdir.']';
+		}
+		return $retval;
+	}
+
+/*
+ * @param string $line: preformatted message to write into the logfile
+ * @return none: an error will throw a exception
+ */
+	protected function writeRaw( $message )
+	{
+		array_unshift( $message, (defined($_SESSION['USER_ID'])?$_SESSION['USER_ID']:0) );
+		array_unshift( $message, (isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'#') );
+		array_unshift( $message, gmdate(DATE_W3C) );
+		if( isset($this->_log_path) ){
+			if($this->openLogFile())
+			{
+				if( fputcsv($this->_fh, $message, ',', '"') !== false )
+				{
+					$this->closeLogFile();
+				}
+				else
+				{
+					throw new Exception('unable to append line ['.$this->_log_path.$this->_log_file.']');
+				}
+			}
+			else
+			{
+				throw new Exception('unable to open logfile ['.$this->_log_path.$this->_log_file.']');
+			}
+		}else
+		{
+			throw new Exception('undefined path for logfile ['.$this->_log_file.']');
+		}
+	}
+
+} // end of class
+
+/*
+ *  Errorlog handler
+ */
+class ErrorLog extends LogFile{
+
+	private static $_instance;
+
+	protected function __construct()
+	{
+		parent::__construct('error.log');
+	}
+
+	private function __clone() {}
+
+    public static function handle()
+    {
+        if (!isset(self::$_instance)) {
+            $c = __CLASS__;
+            self::$_instance = new $c;
+        }
+        return self::$_instance;
+    }
+
+/*
+ * @param string $message: message to write into the logfile
+ * @param string $file: (optional) name of the file where the error occures
+ * @param string $function: (optional) name of the function where the error occures
+ * @param string $line: (optional) number of the line where the error occures
+ * @return none: an error will throw a exception
+ */
+	public function write( $message, $file = '#', $function = '#', $line = '#' )
+	{
+		if( !is_array($message) )
+		{
+			$message = array($file, $function, $line, $message);
+		}
+		self::handle()->writeRaw( $message );
+	}
+} // end of class
+
+/*
+ *  Accesslog handler
+ */
+class AccessLog extends LogFile{
+
+	private static $_instance;
+
+	protected function __construct()
+	{
+		parent::__construct('access.log');
+	}
+
+	private function __clone() {}
+
+    public static function handle()
+    {
+        if (!isset(self::$_instance)) {
+            $c = __CLASS__;
+            self::$_instance = new $c;
+        }
+        return self::$_instance;
+    }
+
+/*
+ * @param string $message: message to write into the logfile
+ * @return none: an error will throw a exception
+ */
+	public function write( $message )
+	{
+		if( !is_array($message) )
+		{
+			$message = array($message);
+		}
+		self::handle()->writeRaw( $message );
+	}
+} // end of class
+
+
+?>

Property changes on: tags/2.8.3/wb/framework/class.logfile.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.wb.php
===================================================================
--- tags/2.8.3/wb/framework/class.wb.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.wb.php	(revision 1610)
@@ -0,0 +1,483 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         frontend 
+ * @author          Ryan Djurovich, WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+// Include PHPLIB template class
+require_once(WB_PATH."/include/phplib/template.inc");
+
+require_once(WB_PATH.'/framework/class.database.php');
+
+// Include new wbmailer class (subclass of PHPmailer)
+require_once(WB_PATH."/framework/class.wbmailer.php");
+
+//require_once(WB_PATH."/framework/SecureForm.php");
+
+class wb extends SecureForm
+{
+
+ 	public $password_chars = 'a-zA-Z0-9\_\-\!\#\*\+\@\$\&\:';	// General initialization function
+	// performed when frontend or backend is loaded.
+
+	public function  __construct($mode = SecureForm::FRONTEND) {
+		parent::__construct($mode);
+	}
+
+/* ****************
+ * check if one or more group_ids are in both group_lists
+ *
+ * @access public
+ * @param mixed $groups_list1: an array or a coma seperated list of group-ids
+ * @param mixed $groups_list2: an array or a coma seperated list of group-ids
+ * @param array &$matches: an array-var whitch will return possible matches
+ * @return bool: true there is a match, otherwise false
+ */
+	function is_group_match( $groups_list1 = '', $groups_list2 = '', &$matches = null )
+	{
+		if( $groups_list1 == '' ) { return false; }
+		if( $groups_list2 == '' ) { return false; }
+		if( !is_array($groups_list1) )
+		{
+			$groups_list1 = explode(',', $groups_list1);
+		}
+		if( !is_array($groups_list2) )
+		{
+			$groups_list2 = explode(',', $groups_list2);
+		}
+		$matches = array_intersect( $groups_list1, $groups_list2);
+		return ( sizeof($matches) != 0 );
+	}
+/* ****************
+ * check if current user is member of at least one of given groups
+ * ADMIN (uid=1) always is treated like a member of any groups
+ *
+ * @access public
+ * @param mixed $groups_list: an array or a coma seperated list of group-ids
+ * @return bool: true if current user is member of one of this groups, otherwise false
+ */
+	function ami_group_member( $groups_list = '' )
+	{
+		if( $this->get_user_id() == 1 ) { return true; }
+		return $this->is_group_match( $groups_list, $this->get_groups_id() );
+	}
+
+	// Check whether a page is visible or not.
+	// This will check page-visibility and user- and group-rights.
+	/* page_is_visible() returns
+		false: if page-visibility is 'none' or 'deleted', or page-vis. is 'registered' or 'private' and user isn't allowed to see the page.
+		true: if page-visibility is 'public' or 'hidden', or page-vis. is 'registered' or 'private' and user _is_ allowed to see the page.
+	*/
+	function page_is_visible($page)
+    {
+		$show_it = false; // shall we show the page?
+		$page_id = $page['page_id'];
+		$visibility = $page['visibility'];
+		$viewing_groups = $page['viewing_groups'];
+		$viewing_users = $page['viewing_users'];
+
+		// First check if visibility is 'none', 'deleted'
+		if($visibility == 'none')
+        {
+			return(false);
+		} elseif($visibility == 'deleted')
+        {
+			return(false);
+		}
+
+		// Now check if visibility is 'hidden', 'private' or 'registered'
+		if($visibility == 'hidden') { // hidden: hide the menu-link, but show the page
+			$show_it = true;
+		} elseif($visibility == 'private' || $visibility == 'registered')
+        {
+			// Check if the user is logged in
+			if($this->is_authenticated() == true)
+            {
+				// Now check if the user has perms to view the page
+				$in_group = false;
+				foreach($this->get_groups_id() as $cur_gid)
+                {
+				    if(in_array($cur_gid, explode(',', $viewing_groups)))
+                    {
+				        $in_group = true;
+				    }
+				}
+				if($in_group || in_array($this->get_user_id(), explode(',', $viewing_users))) {
+					$show_it = true;
+				} else {
+					$show_it = false;
+				}
+			} else {
+				$show_it = false;
+			}
+		} elseif($visibility == 'public') {
+			$show_it = true;
+		} else {
+			$show_it = false;
+		}
+		return($show_it);
+	}
+	// Check if there is at least one active section on this page
+	function page_is_active($page)
+    {
+		global $database;
+		$has_active_sections = false;
+		$page_id = $page['page_id'];
+		$now = time();
+		$sql  = 'SELECT `publ_start`, `publ_end` ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.(int)$page_id;
+		$query_sections = $database->query($sql);
+		if($query_sections->numRows() != 0) {
+			while($section = $query_sections->fetchRow()) {
+				if( $now<$section['publ_end'] &&
+					($now>$section['publ_start'] || $section['publ_start']==0) ||
+					$now>$section['publ_start'] && $section['publ_end']==0)
+				{
+					$has_active_sections = true;
+					break;
+				}
+			}
+		}
+		return($has_active_sections);
+	}
+
+	// Check whether we should show a page or not (for front-end)
+	function show_page($page)
+    {
+		$retval = ($this->page_is_visible($page) && $this->page_is_active($page));
+		return $retval;
+	}
+
+	// Check if the user is already authenticated or not
+	function is_authenticated() {
+		$retval = ( isset($_SESSION['USER_ID']) AND
+		            $_SESSION['USER_ID'] != "" AND
+		            is_numeric($_SESSION['USER_ID']));
+        return $retval;
+	}
+
+	// Modified addslashes function which takes into account magic_quotes
+	function add_slashes($input) {
+		if( get_magic_quotes_gpc() || (!is_string($input)) ) {
+			return $input;
+		}
+		return addslashes($input);
+	}
+
+	// Ditto for stripslashes
+	// Attn: this is _not_ the counterpart to $this->add_slashes() !
+	// Use stripslashes() to undo a preliminarily done $this->add_slashes()
+	// The purpose of $this->strip_slashes() is to undo the effects of magic_quotes_gpc==On
+	function strip_slashes($input) {
+		if ( !get_magic_quotes_gpc() || ( !is_string($input) ) ) {
+			return $input;
+		}
+		return stripslashes($input);
+	}
+
+	// Escape backslashes for use with mySQL LIKE strings
+	function escape_backslashes($input) {
+		return str_replace("\\","\\\\",$input);
+	}
+
+	function page_link($link){
+		// Check for :// in the link (used in URL's) as well as mailto:
+		if(strstr($link, '://') == '' AND substr($link, 0, 7) != 'mailto:') {
+			return WB_URL.PAGES_DIRECTORY.$link.PAGE_EXTENSION;
+		} else {
+			return $link;
+		}
+	}
+	
+	// Get POST data
+	function get_post($field) {
+		return (isset($_POST[$field]) ? $_POST[$field] : null);
+	}
+
+	// Get POST data and escape it
+	function get_post_escaped($field) {
+		$result = $this->get_post($field);
+		return (is_null($result)) ? null : $this->add_slashes($result);
+	}
+	
+	// Get GET data
+	function get_get($field) {
+		return (isset($_GET[$field]) ? $_GET[$field] : null);
+	}
+
+	// Get SESSION data
+	function get_session($field) {
+		return (isset($_SESSION[$field]) ? $_SESSION[$field] : null);
+	}
+
+	// Get SERVER data
+	function get_server($field) {
+		return (isset($_SERVER[$field]) ? $_SERVER[$field] : null);
+	}
+
+	// Get the current users id
+	function get_user_id() {
+		return $this->get_session('USER_ID');
+	}
+
+	// Get the current users group id
+	function get_group_id() {
+		return $this->get_session('GROUP_ID');
+	}
+
+	// Get the current users group ids
+	function get_groups_id() {
+		return explode(",", $this->get_session('GROUPS_ID'));
+	}
+
+	// Get the current users group name
+	function get_group_name() {
+		return implode(",", $this->get_session('GROUP_NAME'));
+	}
+
+	// Get the current users group name
+	function get_groups_name() {
+		return $this->get_session('GROUP_NAME');
+	}
+
+	// Get the current users username
+	function get_username() {
+		return $this->get_session('USERNAME');
+	}
+
+	// Get the current users display name
+	function get_display_name() {
+		return $this->get_session('DISPLAY_NAME');
+	}
+
+	// Get the current users email address
+	function get_email() {
+		return $this->get_session('EMAIL');
+	}
+
+	// Get the current users home folder
+	function get_home_folder() {
+		return $this->get_session('HOME_FOLDER');
+	}
+
+	// Get the current users timezone
+	function get_timezone() {
+		return (isset($_SESSION['USE_DEFAULT_TIMEZONE']) ? '-72000' : $_SESSION['TIMEZONE']);
+	}
+
+	// Validate supplied email address
+	function validate_email($email) {
+		if(function_exists('idn_to_ascii')){ /* use pear if available */
+			$email = idn_to_ascii($email);
+		}else {
+			require_once(WB_PATH.'/include/idna_convert/idna_convert.class.php');
+			$IDN = new idna_convert();
+			$email = $IDN->encode($email);
+			unset($IDN);
+		}
+		// regex from NorHei 2011-01-11
+		$retval = preg_match("/^((([!#$%&'*+\\-\/\=?^_`{|}~\w])|([!#$%&'*+\\-\/\=?^_`{|}~\w][!#$%&'*+\\-\/\=?^_`{|}~\.\w]{0,}[!#$%&'*+\\-\/\=?^_`{|}~\w]))[@]\w+(([-.]|\-\-)\w+)*\.\w+(([-.]|\-\-)\w+)*)$/", $email);
+		return ($retval != false);
+	}
+
+/* ****************
+ * set one or more bit in a integer value
+ *
+ * @access public
+ * @param int $value: reference to the integer, containing the value
+ * @param int $bits2set: the bitmask witch shall be added to value
+ * @return void
+ */
+	function bit_set( &$value, $bits2set )
+	{
+		$value |= $bits2set;
+	}
+
+/* ****************
+ * reset one or more bit from a integer value
+ *
+ * @access public
+ * @param int $value: reference to the integer, containing the value
+ * @param int $bits2reset: the bitmask witch shall be removed from value
+ * @return void
+ */
+	function bit_reset( &$value, $bits2reset)
+	{
+		$value &= ~$bits2reset;
+	}
+
+/* ****************
+ * check if one or more bit in a integer value are set
+ *
+ * @access public
+ * @param int $value: reference to the integer, containing the value
+ * @param int $bits2set: the bitmask witch shall be added to value
+ * @return void
+ */
+	function bit_isset( $value, $bits2test )
+	{
+		return (($value & $bits2test) == $bits2test);
+	}
+
+	// Print a success message which then automatically redirects the user to another page
+	function print_success( $message, $redirect = 'index.php' ) {
+	    global $TEXT;
+        if(is_array($message)) {
+           $message = implode ('<br />',$message);
+        }
+	    // fetch redirect timer for sucess messages from settings table
+	    $redirect_timer = ((defined( 'REDIRECT_TIMER' )) && (REDIRECT_TIMER <= 10000)) ? REDIRECT_TIMER : 0;
+	    // add template variables
+		// Setup template object, parse vars to it, then parse it
+		$ThemePath = realpath(WB_PATH.$this->correct_theme_source('success.htt'));
+		$tpl = new Template($ThemePath);
+	    $tpl->set_file( 'page', 'success.htt' );
+	    $tpl->set_block( 'page', 'main_block', 'main' );
+	    $tpl->set_block( 'main_block', 'show_redirect_block', 'show_redirect' );
+	    $tpl->set_var( 'MESSAGE', $message );
+	    $tpl->set_var( 'REDIRECT', $redirect );
+	    $tpl->set_var( 'REDIRECT_TIMER', $redirect_timer );
+	    $tpl->set_var( 'NEXT', $TEXT['NEXT'] );
+	    $tpl->set_var( 'BACK', $TEXT['BACK'] );
+	    if ($redirect_timer == -1) {
+	        $tpl->set_block( 'show_redirect', '' );
+	    }
+	    else {
+	        $tpl->parse( 'show_redirect', 'show_redirect_block', true );
+	    }
+	    $tpl->parse( 'main', 'main_block', false );
+	    $tpl->pparse( 'output', 'page' );
+	}
+
+	// Print an error message
+	function print_error($message, $link = 'index.php', $auto_footer = true) {
+		global $TEXT;
+        if(is_array($message)) {
+           $message = implode ('<br />',$message);
+        }
+		// Setup template object, parse vars to it, then parse it
+		$ThemePath = realpath(WB_PATH.$this->correct_theme_source('error.htt'));
+		$success_template = new Template($ThemePath);
+		$success_template->set_file('page', 'error.htt');
+		$success_template->set_block('page', 'main_block', 'main');
+		$success_template->set_var('MESSAGE', $message);
+		$success_template->set_var('LINK', $link);
+		$success_template->set_var('BACK', $TEXT['BACK']);
+		$success_template->parse('main', 'main_block', false);
+		$success_template->pparse('output', 'page');
+		if ( $auto_footer == true ) {
+			if ( method_exists($this, "print_footer") ) {
+				$this->print_footer();
+			}
+		}
+		exit();
+	}
+
+	// Validate send email
+	function mail($fromaddress, $toaddress, $subject, $message, $fromname='') {
+/* 
+	INTEGRATED OPEN SOURCE PHPMAILER CLASS FOR SMTP SUPPORT AND MORE
+	SOME SERVICE PROVIDERS DO NOT SUPPORT SENDING MAIL VIA PHP AS IT DOES NOT PROVIDE SMTP AUTHENTICATION
+	NEW WBMAILER CLASS IS ABLE TO SEND OUT MESSAGES USING SMTP WHICH RESOLVE THESE ISSUE (C. Sommer)
+
+	NOTE:
+	To use SMTP for sending out mails, you have to specify the SMTP host of your domain
+	via the Settings panel in the backend of Website Baker
+*/ 
+
+		$fromaddress = preg_replace('/[\r\n]/', '', $fromaddress);
+		$toaddress = preg_replace('/[\r\n]/', '', $toaddress);
+		$subject = preg_replace('/[\r\n]/', '', $subject);
+		// $message_alt = $message;
+		// $message = preg_replace('/[\r\n]/', '<br \>', $message);
+
+		// create PHPMailer object and define default settings
+		$myMail = new wbmailer();
+		// set user defined from address
+		if ($fromaddress!='') {
+			if($fromname!='') $myMail->FromName = $fromname;  // FROM-NAME
+			$myMail->From = $fromaddress;                     // FROM:
+			$myMail->AddReplyTo($fromaddress);                // REPLY TO:
+		}
+		// define recepient and information to send out
+		$myMail->AddAddress($toaddress);                      // TO:
+		$myMail->Subject = $subject;                          // SUBJECT
+		$myMail->Body = nl2br($message);                      // CONTENT (HTML)
+		$myMail->AltBody = strip_tags($message);              // CONTENT (TEXT)
+		// check if there are any send mail errors, otherwise say successful
+		if (!$myMail->Send()) {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	/**
+	 * checks if there is an alternative Theme template
+	 *
+	 * @access public
+	 * @param string : set the template.htt
+	 * @return string: the relative theme path
+	 *
+	 */
+	function correct_theme_source($sThemeFile = 'start.htt'){
+		$sThemePath = ADMIN_URL.'/themes/templates';
+		if ( file_exists( THEME_PATH.'/templates/'.$sThemeFile ) ){
+			$sThemePath = THEME_URL.'/templates';
+	}
+		return str_replace(WB_URL,'',$sThemePath);
+	}
+
+	/**
+	 * Check if a foldername doesn't have invalid characters
+	 *
+	 * @param String $str to check
+	 * @return Bool
+	 */
+	function checkFolderName($str){
+		return !( preg_match('#\^|\\\|\/|\.|\?|\*|"|\'|\<|\>|\:|\|#i', $str) ? TRUE : FALSE );
+	}
+
+	/**
+	 * Check the given path to make sure current path is within given basedir
+	 * normally document root
+	 *
+	 * @param String $sCurrentPath
+	 * @param String $sBaseDir
+	 * @return $sCurrentPath or FALSE
+	 */
+	function checkpath($sCurrentPath, $sBaseDir = WB_PATH){
+		// Clean the cuurent path
+        $sCurrentPath = rawurldecode($sCurrentPath);
+        $sCurrentPath = realpath($sCurrentPath);
+        $sBaseDir = realpath($sBaseDir);
+		// $sBaseDir needs to exist in the $sCurrentPath
+		$pos = stripos ($sCurrentPath, $sBaseDir );
+
+		if ( $pos === FALSE ){
+			return false;
+		} elseif( $pos == 0 ) {
+			return $sCurrentPath;
+		} else {
+			return false;
+		}
+	}
+
+}

Property changes on: tags/2.8.3/wb/framework/class.wb.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.order.php
===================================================================
--- tags/2.8.3/wb/framework/class.order.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.order.php	(revision 1610)
@@ -0,0 +1,150 @@
+<?php
+/**
+ * @category        WebsiteBaker
+ * @package         WebsiteBaker_core
+ * @author          Ryan Djurovich, WebsiteBaker Project, Werner v.d.Decken
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://websitebaker2.org
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * Ordering class
+ * This class will be used to change the order of an item in a table
+ * which contains a special order field (type must be integer)
+ */
+/*******************************************************************************
+ * abstract factory for application
+ */
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+	define('ORDERING_CLASS_LOADED', true);
+// Load the other required class files if they are not already loaded
+	require_once(WB_PATH."/framework/class.database.php");
+
+class order {
+
+	const MOVE_UP   = 0;
+	const MOVE_DOWN = 1;
+
+	private $_Table      = '';
+	private $_FieldOrder = '';
+	private $_FieldId    = '';
+	private $_FieldGroup = '';
+	private $_DB         = null;
+
+	/**
+	 * Constructor
+	 * @param string $Table
+	 * @param string $FieldOrder
+	 * @param string $FieldId
+	 * @param string $FieldGroup
+	 * use $GLOBALS['database']
+	 */
+	public function __construct($Table, $FieldOrder, $FieldId, $FieldGroup) {
+		$this->_DB         = $GLOBALS['database'];
+		$this->_Table      = $Table;
+		$this->_FieldOrder = $FieldOrder;
+		$this->_FieldId    = $FieldId;
+		$this->_FieldGroup = $FieldGroup;
+	}
+	/**
+	 *
+	 * @param string|int $id
+	 * @param int $direction
+	 * @return bool
+	 */
+	public function move($id, $direction = self::MOVE_UP)
+	{
+		$retval = false;
+		$sql  = 'SELECT `'.$this->_FieldOrder.'` `order`, `'.$this->_FieldGroup.'` `group` ';
+		$sql .= 'FROM `'.$this->_Table.'` WHERE `'.$this->_FieldId.'`=\''.$id.'\'';
+		// get Position and Group for Element to move
+		if(($res1 = $this->_DB->query($sql))) {
+			if(($rec1 = $res1->fetchRow())) {
+				$sql  = 'SELECT `'.$this->_FieldId.'` `id`, `'.$this->_FieldOrder.'` `order` ';
+				$sql .= 'FROM `'.$this->_Table.'` ';
+				$sql .= 'WHERE `'.$this->_FieldGroup.'`=\''.$rec1['group'].'\' ';
+				if($direction == self::MOVE_UP) {
+					// search for Element with next lower Position
+					$sql .=     'AND `'.$this->_FieldOrder.'`<\''.$rec1['order'].'\' ';
+					$sql .= 'ORDER BY `'.$this->_FieldOrder.'` DESC';
+				}else {
+					// search for Element with next higher Position
+					$sql .=     'AND `'.$this->_FieldOrder.'`>\''.$rec1['order'].'\' ';
+					$sql .= 'ORDER BY `'.$this->_FieldOrder.'` ASC';
+				}
+				// get Id and Position of the Element to change with
+				if(($res2 = $this->_DB->query($sql))) {
+					if(($rec2 = $res2->fetchRow())) {
+						$sql  = 'UPDATE `'.$this->_Table.'` ';
+						$sql .= 'SET `'.$this->_FieldOrder.'`=\''.$rec1['order'].'\' ';
+						$sql .= 'WHERE `'.$this->_FieldId.'`=\''.$rec2['id'].'\'';
+						// update Position number of target
+						if($this->_DB->query($sql)) {
+							$sql  = 'UPDATE `'.$this->_Table.'` ';
+							$sql .= 'SET `'.$this->_FieldOrder.'`=\''.$rec2['order'].'\' ';
+							$sql .= 'WHERE `'.$this->_FieldId.'`=\''.$id.'\'';
+							// update Position number source
+							$retval = $this->_DB->query($sql);
+						}
+					}
+				}
+			}
+		}
+		return $retval;
+	}
+
+	/**
+	 * Move a row up
+	 * @param string|int $id
+	 * @return bool
+	 */
+	public function move_up($id) {
+		// Get current order
+		return $this->move($id, self::MOVE_UP);
+	}
+
+	/**
+	 * Move a row down
+	 * @param string|int $id
+	 * @return bool
+	 */
+	public function move_down($id) {
+		// Get current order
+		return $this->move($id, self::MOVE_DOWN);
+	}
+	
+	/**
+	 * Get next free number for order
+	 * @param string|int $group
+	 * @return integer
+	 */
+	public function get_new($group) {
+		// Get last order
+		$sql  = 'SELECT MAX(`'.$this->_FieldOrder.'`) FROM `'.$this->_Table.'` ';
+		$sql .= 'WHERE `'.$this->_FieldGroup.'`=\''.$group.'\' ';
+		$max = intval($this->_DB->get_one($sql)) + 1;
+		return $max;
+	}
+	
+	/**
+	 * Renumbering a group from 1 to n (should be called if a row in the middle has been deleted)
+	 * @param string|int $group
+	 * @return bool
+	 */
+	public function clean($group) {
+		// Loop through all records and give new order
+		$sql  = 'SET @c:=0';
+		$this->_DB->query($sql);
+		$sql  = 'UPDATE `'.$this->_Table.'` SET `'.$this->_FieldOrder.'`=(SELECT @c:=@c+1) ';
+		$sql .= 'WHERE `'.$this->_FieldGroup.'`=\''.$group.'\' ';
+		$sql .= 'ORDER BY `'.$this->_FieldOrder.'` ASC;';
+		return $this->_DB->query($sql);
+	}
+
+} // end of class

Property changes on: tags/2.8.3/wb/framework/class.order.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/PasswordHash.php
===================================================================
--- tags/2.8.3/wb/framework/PasswordHash.php	(nonexistent)
+++ tags/2.8.3/wb/framework/PasswordHash.php	(revision 1610)
@@ -0,0 +1,234 @@
+<?php
+/**
+ * @category     Core
+ * @package      Core_security
+ * @author       Werner v.d.Decken
+ * @copyright    ISTeasy-project(http://isteasy.de/)
+ * @license      Creative Commons BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/
+ * @version      $Id$
+ * @filesource   $HeadURL:$
+ * @since        Datei vorhanden seit Release 2.8.2
+ * @lastmodified $Date:$
+ *
+ * this class works with salted md5-hashes with several rounds. 
+ * For backward compatibility it can compare normal md5-hashes also.
+ * Minimum requirements: PHP 5.2.2 or higher
+ *
+ * *****************************************************************************
+ * This class is based on the Portable PHP password hashing framework.
+ * Version 0.3 / genuine. Written by Solar Designer <solar at openwall.com>
+ * in 2004-2006 and placed in the public domain. Revised in subsequent years,
+ * still public domain. There's absolutely no warranty.
+ * The homepage URL for this framework is: http://www.openwall.com/phpass/
+ * *****************************************************************************
+ */
+class PasswordHash {
+
+	const SECURITY_WEAK      = 6;
+	const SECURITY_MEDIUM    = 8;
+	const SECURITY_NORMAL    = 10;
+	const SECURITY_STRONG    = 12;
+	const SECURITY_STRONGER  = 16;
+
+	private $_itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+	private $_iterationCountLog2 = 8;
+	private $_portableHashes = true;
+	private $_randomState = '';
+	
+	/**
+	 * @param int $iterationCountLog2 number of iterations as exponent of 2
+	 * @param bool $portableHashes TRUE = use MD5 only | FALSE = automatic
+	 */
+	public function __construct($iterationCountLog2, $portableHashes = true)
+	{
+
+		if ($iterationCountLog2 < 4 || $iterationCountLog2 > 31) {
+			$iterationCountLog2 = 8;
+		}
+		$this->_iterationCountLog2 = $iterationCountLog2;
+		$this->_portableHashes = $portableHashes;
+		$this->_randomState = microtime();
+		if (function_exists('getmypid')) {
+			$this->_randomState .= getmypid();
+		}
+	}
+
+
+	private function _getRandomBytes($count)
+	{
+		$output = '';
+		if (is_readable('/dev/urandom') && ($fh = @fopen('/dev/urandom', 'rb'))) {
+			$output = fread($fh, $count);
+			fclose($fh);
+		}
+		if (strlen($output) < $count) {
+			$output = '';
+			for ($i = 0; $i < $count; $i += 16) {
+				$this->_randomState = md5(microtime() . $this->_randomState);
+				$output .= pack('H*', md5($this->_randomState));
+			}
+			$output = substr($output, 0, $count);
+		}
+		return $output;
+	}
+
+	private function _Encode64($input, $count)
+	{
+		$output = '';
+		$i = 0;
+		do {
+			$value = ord($input[$i++]);
+			$output .= $this->_itoa64[$value & 0x3f];
+			if ($i < $count) {
+				$value |= ord($input[$i]) << 8;
+			}
+			$output .= $this->_itoa64[($value >> 6) & 0x3f];
+			if ($i++ >= $count) { break; }
+			if ($i < $count) {
+				$value |= ord($input[$i]) << 16;
+			}
+			$output .= $this->_itoa64[($value >> 12) & 0x3f];
+			if ($i++ >= $count) { break; }
+			$output .= $this->_itoa64[($value >> 18) & 0x3f];
+		} while ($i < $count);
+		return $output;
+	}
+
+	private function _GenSaltPrivate($input)
+	{
+		$output = '$P$';
+		$output .= $this->_itoa64[min($this->_iterationCountLog2 + 5, 30)];
+		$output .= $this->_Encode64($input, 6);
+		return $output;
+	}
+
+	private function _CryptPrivate($password, $setting)
+	{
+		$output = '*0';
+		if (substr($setting, 0, 2) == $output) {
+			$output = '*1';
+		}
+		$id = substr($setting, 0, 3);
+		# We use "$P$", phpBB3 uses "$H$" for the same thing
+		if ($id != '$P$' && $id != '$H$') {
+			return $output;
+		}
+		$count_log2 = strpos($this->_itoa64, $setting[3]);
+		if ($count_log2 < 7 || $count_log2 > 30) {
+			return $output;
+		}
+		$count = 1 << $count_log2;
+		$salt = substr($setting, 4, 8);
+		if (strlen($salt) != 8) {
+			return $output;
+		}
+		# We're kind of forced to use MD5 here since it's the only
+		# cryptographic primitive available in all versions of PHP
+		# currently in use.  To implement our own low-level crypto
+		# in PHP would result in much worse performance and
+		# consequently in lower iteration counts and hashes that are
+		# quicker to crack (by non-PHP code).
+		$hash = md5($salt . $password, TRUE);
+		do {
+			$hash = md5($hash . $password, TRUE);
+		} while (--$count);
+		$output = substr($setting, 0, 12);
+		$output .= $this->_Encode64($hash, 16);
+		return $output;
+	}
+
+	/**
+	 * calculate the hash from a given password
+	 * @param string $password password as original string
+	 * @return string generated hash | '*' on error
+	 */
+	public function HashPassword($password, $md5 = false)
+	{
+		if ($md5) { return(md5($password)); }
+		$random = '';
+		if (strlen($random) < 6) {
+			$random = $this->_getRandomBytes(6);
+		}
+		$hash = $this->_CryptPrivate($password, $this->_GenSaltPrivate($random));
+		if (strlen($hash) == 34) {
+			return $hash;
+		}
+		# Returning '*' on error is safe here, but would _not_ be safe
+		# in a crypt(3)-like function used _both_ for generating new
+		# hashes and for validating passwords against existing hashes.
+		return '*';
+	}
+
+	/**
+	 * encodes the password and compare it against the given hash
+	 * @param string $password clear password
+	 * @param string $stored_hash the hash to compare against
+	 * @return bool
+	 */
+	public function CheckPassword($password, $stored_hash)
+	{
+	// compare against a normal, simple md5-hash
+		if(preg_match('/^[0-9a-f]{32}$/i', $stored_hash)) {
+			return md5($password) == $stored_hash;
+		}
+	// compare against a rounded, salted md5-hash
+		$hash = $this->_CryptPrivate($password, $stored_hash);
+		if ($hash[0] == '*') {
+			$hash = crypt($password, $stored_hash);
+		}
+		return $hash == $stored_hash;
+	}
+	/**
+	 * generate a case sensitive mnemonic password including numbers and special chars
+	 * makes no use of lowercase 'l', uppercase 'I', 'O' or number '0'
+	 * @param int $length length of the generated password. default = 8
+	 * @return string
+	 */
+	public static function NewPassword($length = self::SECURITY_MEDIUM)
+	{
+		$chars = array(
+			array('b','c','d','f','g','h','j','k','l','m','n','p','r','s','t','v','w','x','y','z'),
+			array('a','e','i','o','u'),
+			array('!','-','@','_',':','.','+','%','/','*')
+		);
+		if($length < self::SECURITY_WEAK) { $length = self::SECURITY_WEAK; }
+		$length = ceil($length / 2);
+		$Password = array();
+	// at first fill array alternating with vowels and consonants
+		for($x = 0; $x < $length; $x++) {
+			$char = $chars[0][rand(1000, 10000) % sizeof($chars[0])];
+			$Password[] = $char == 'l' ? 'L' : $char;
+			$Password[] = $chars[1][rand(1000, 10000) % sizeof($chars[1])];
+		}
+	// transform some random chars into uppercase
+		$pos = ((rand(1000, 10000) % 3) + 1);
+		while($pos < sizeof($Password)) {
+			$Password[$pos] = ($Password[$pos] == 'i' || $Password[$pos] == 'o')
+			                  ? $Password[$pos] : strtoupper($Password[$pos]);
+			$pos += ((rand(1000, 10000) % 3) + 1);
+		}
+	// insert some numeric chars, between 1 and 9
+		$specialChars = array();
+		$specialCharsCount = floor(sizeof($Password) / 4);
+		while(sizeof($specialChars) < $specialCharsCount) {
+			$key = (rand(1000, 10000) % sizeof($Password));
+			if(!isset($specialChars[$key])) {
+				$specialChars[$key] = (rand(1000, 10000) % 9) + 1;
+			}
+		}
+	// insert some punctuation chars, but not leading or trailing
+		$specialCharsCount += floor((sizeof($Password)-1) / 6);
+		while(sizeof($specialChars) < $specialCharsCount) {
+			$key = (rand(1000, 10000) % (sizeof($Password)-2))+1;
+			if(!isset($specialChars[$key])) {
+				$specialChars[$key] = $chars[2][(rand(1000, 10000) % sizeof($chars[2]))];
+			}
+		}
+		foreach($specialChars as $key=>$val) {
+			$Password[$key] = $val;
+		}
+
+		return implode($Password);
+	}
+
+} // end of class
Index: tags/2.8.3/wb/framework/module.functions.php
===================================================================
--- tags/2.8.3/wb/framework/module.functions.php	(nonexistent)
+++ tags/2.8.3/wb/framework/module.functions.php	(revision 1610)
@@ -0,0 +1,261 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/**
+	This file contains routines to edit the optional module files: frontend.css and backend.css
+	Mechanism was introduced with WB 2.7 to provide a global solution for all modules
+	To use this function, include this file from your module (e.g. from modify.php)
+	Then simply call the function edit_css('your_module_directory') - that�s it
+	NOTE: Some functions were added for module developers to make the creation of own module easier
+*/
+
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+/*
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+ FUNCTIONS REQUIRED TO EDIT THE OPTIONAL MODULE CSS FILES
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+*/ 
+
+// this function checks the validity of the specified module directory
+if(!function_exists('check_module_dir')) {
+	function check_module_dir($mod_dir) {
+		// check if module directory is formal correct (only characters: "a-z,0-9,_,-")
+		if(!preg_match('/^[a-z0-9_-]+$/iD', $mod_dir)) return '';
+		// check if the module folder contains the required info.php file
+		return (file_exists(WB_PATH .'/modules/' .$mod_dir .'/info.php')) ? $mod_dir : '';
+	}
+}
+
+// this function checks if the specified optional module file exists
+if (!function_exists('mod_file_exists')) {
+	function mod_file_exists($mod_dir, $mod_file='frontend.css') {
+  	// check if the module file exists
+		return file_exists(WB_PATH .'/modules/' .$mod_dir .'/' .$mod_file);
+	}
+}
+
+// this function displays the "Edit CSS" button in modify.php 
+if (!function_exists('edit_module_css')) {
+	function edit_module_css($mod_dir) {
+		global $page_id, $section_id;
+
+		// check if the required edit_module_css.php file exists
+		if(!file_exists(WB_PATH .'/modules/edit_module_files.php')) return;
+		
+		// check if specified module directory is valid
+		if(check_module_dir($mod_dir) == '') return;
+		
+		// check if frontend.css or backend.css exist
+		$frontend_css = mod_file_exists($mod_dir, 'frontend.css');
+		$backend_css = mod_file_exists($mod_dir, 'backend.css');
+		
+		// output the edit CSS submtin button if required
+		if($frontend_css || $backend_css) {
+			// default text used for the edit CSS routines if not defined in the WB core language files
+			$edit_css_caption = (isset($GLOBALS['TEXT']['CAP_EDIT_CSS'])) ?$GLOBALS['TEXT']['CAP_EDIT_CSS'] :'Edit CSS';
+			?>
+			<form name="edit_module_file" action="<?php echo WB_URL .'/modules/edit_module_files.php?page_id='.$page_id;?>" 
+				method="post" style="margin: 0; align:right;">
+				<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+				<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+				<input type="hidden" name="mod_dir" value="<?php echo $mod_dir; ?>" />
+				<input type="hidden" name="edit_file" value="<?php echo ($frontend_css) ? 'frontend.css' : 'backend.css';?>" />
+				<input type="hidden" name="action" value="edit" />
+				<input type="submit" value="<?php echo $edit_css_caption;?>" class="mod_<?php echo $mod_dir;?>_edit_css" />
+			</form>
+			<?php
+    }
+  }
+}
+
+// this function displays a button to toggle between CSS files (invoked from edit_css.php)
+if (!function_exists('toggle_css_file')) {
+	function toggle_css_file($mod_dir, $base_css_file = 'frontend.css') {
+		global $page_id, $section_id;
+		// check if the required edit_module_css.php file exists
+		if(!file_exists(WB_PATH .'/modules/edit_module_files.php')) return;
+
+		// check if specified module directory is valid
+		if(check_module_dir($mod_dir) == '') return;
+
+		// do sanity check of specified css file
+		if(!in_array($base_css_file, array('frontend.css', 'backend.css'))) return;
+		
+		// display button to toggle between the two CSS files: frontend.css, backend.css
+		$toggle_file = ($base_css_file == 'frontend.css') ? 'backend.css' : 'frontend.css';
+		if(mod_file_exists($mod_dir, $toggle_file)) {
+			?>
+			<form name="toggle_module_file" action="<?php echo WB_URL .'/modules/edit_module_files.php?page_id='.$page_id;?>" method="post" style="margin: 0; align:right;">
+				<input type="hidden" name="page_id" value="<?php echo $page_id; ?>" />
+				<input type="hidden" name="section_id" value="<?php echo $section_id; ?>" />
+				<input type="hidden" name="mod_dir" value="<?php echo $mod_dir; ?>" />
+				<input type="hidden" name="edit_file" value="<?php echo $toggle_file; ?>" />
+				<input type="hidden" name="action" value="edit" />
+				<input type="submit" value="<?php echo ucwords($toggle_file);?>" class="mod_<?php echo $mod_dir;?>_edit_css" />
+			</form>
+			<?php
+		}
+  }
+}
+
+/*
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+ FUNCTIONS WHICH CAN BE USED BY MODULE DEVELOPERS FOR OWN MODULES (E.G. VIEW.PHP, MODIFY.PHP)
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+*/ 
+
+// function to obtain the module language file depending on the backend language of the current user
+if (!function_exists('get_module_language_file')) {
+	function get_module_language_file($mymod_dir) {
+		$mymod_dir = strip_tags($mymod_dir);
+		if(file_exists(WB_PATH .'/modules/' .$mymod_dir .'/languages/' .LANGUAGE .'.php')) {
+			// a module language file exists for the users backend language
+			return (WB_PATH .'/modules/' .$mymod_dir .'/languages/' .LANGUAGE .'.php');
+		} else {
+			// an English module language file must exist in all multi-lingual modules
+			if(file_exists(WB_PATH .'/modules/' .$mymod_dir .'/languages/EN.php')) {
+				return (WB_PATH .'/modules/' .$mymod_dir .'/languages/EN.php');
+			} else {
+				echo '<p><strong>Error: </strong>';
+				echo 'Default language file (EN.php) of module "' .htmlentities($mymod_dir) .'" does not exist.</p><br />';
+				return false;
+			}
+		}
+	}
+}
+
+// function to include module CSS files in <body> (only if WB < 2.6.7 or register_frontend_modfiles('css') not invoked in template)
+if (!function_exists('include_module_css')) {
+	function include_module_css($mymod_dir, $css_file) {
+		if(!in_array(strtolower($css_file), array('frontend.css', 'backend.css'))) return;
+		
+		if($css_file == 'frontend.css') {
+			// check if frontend.css needs to be included into the <body> section
+			if(!((!function_exists('register_frontend_modfiles') || !defined('MOD_FRONTEND_CSS_REGISTERED')) &&
+					file_exists(WB_PATH .'/modules/' .$mymod_dir .'/frontend.css'))) {
+				return false;
+			} 
+		} else {
+			// check if backend.css needs to be included into the <body> section
+			global $admin;
+			if(!(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH .'/modules/' .$mymod_dir .'/backend.css'))) {
+				return false;
+			}
+		}
+		// include frontend.css or backend.css into the <body> section
+		echo "\n".'<style type="text/css">'."\n";
+  	include(WB_PATH .'/modules/' .$mymod_dir .'/' .$css_file);
+  	echo "\n</style>\n";
+		return true;
+	}
+}
+
+// function to check if the optional module Javascript files are loaded into the <head> section
+if (!function_exists('requires_module_js')) {
+	function requires_module_js($mymod_dir, $js_file) {
+		if(!in_array(strtolower($js_file), array('frontend.js', 'backend.js'))) {
+			echo '<strong>Note: </strong>Javascript file "' .htmlentities($js_file) .'"
+			specified in module "' .htmlentities($mymod_dir) .'" not valid.';
+			return false;
+		}
+
+		if($js_file == 'frontend.js') {
+			// check if frontend.js is included to the <head> section
+			if(!defined('MOD_FRONTEND_JAVASCRIPT_REGISTERED')) {
+				echo '<p><strong>Note:</strong> The module: "' .htmlentities($mymod_dir) .'" requires WB 2.6.7 or higher</p>
+				<p>This module uses Javascript functions contained in frontend.js of the module.<br />
+				Add the code below to the &lt;head&gt; section in the index.php of your template
+				to ensure that module frontend.js files are automatically loaded if required.</p>
+				<code style="color: #800000;">&lt;?php<br />if(function_exists(\'register_frontend_modfiles\')) { <br />
+				&nbsp;&nbsp;register_frontend_modfiles(\'js\');<br />?&gt;</code><br />
+				<p><strong>Tip:</strong> For WB 2.6.7 copy the code above to the index.php of your template.
+				Then open the view.php of the "' .htmlentities($mymod_dir) .'" module and set the variable
+				<code>$requires_frontend_js</code> to false. This may do the trick.</p><p>All WB versions below 2.6.7 needs
+				to be upgraded to work with this module.</p>
+				';
+				return false;
+			}
+		} else {
+			// check if backend.js is included to the <head> section
+			global $admin;
+				if(!method_exists($admin, 'register_backend_modfiles') && file_exists(WB_PATH .'/modules/' .$mymod_dir .'/backend.js')) {
+				echo '<p><strong>Note:</strong> The module: "' .htmlentities($mymod_dir) .'" requires WB 2.6.7 or higher</p>
+				<p>This module uses Javascript functions contained in backend.js of the module.<br />
+				You need WB 2.6.7 or higher to ensure that module backend.js files are automatically loaded if required.</p>
+				<p>Sorry, you can not use this tool with your WB installation, please upgrade to the latest WB version available.</p><br />
+				';
+				return false;
+			}
+		}
+		return true;
+	}
+}
+// function to check if the optional module Javascript files are loaded into the <body> section
+if (!function_exists('requires_module_body_js')) {
+	function requires_module_body_js($mymod_dir, $js_file) {
+		if(!in_array(strtolower($js_file), array('frontend_body.js', 'backend_body.js'))) {
+			echo '<strong>Note: </strong>Javascript file "' .htmlentities($js_file) .'"
+			specified in module "' .htmlentities($mymod_dir) .'" not valid.';
+			return false;
+		}
+
+		if($js_file == 'frontend_body.js') {
+			// check if frontend_body.js is included to the <body> section
+			if(!defined('MOD_FRONTEND_BODY_JAVASCRIPT_REGISTERED')) {
+				echo '<p><strong>Note:</strong> The module: "' .htmlentities($mymod_dir) .'" requires WB 2.6.7 or higher</p>
+				<p>This module uses Javascript functions contained in frontend_body.js of the module.<br />
+				Add the code below before to the &lt;/body&gt; section in the index.php of your template
+				to ensure that module frontend_body.js files are automatically loaded if required.</p>
+				<code style="color: #800000;">&lt;?php<br />if(function_exists(\'register_frontend_modfiles_body\')) { <br />
+				&nbsp;&nbsp;register_frontend_modfiles_body(\'js\');<br />?&gt;</code><br />
+				<p><strong>Tip:</strong> For WB 2.6.7 copy the code above to the index.php of your template.
+				Then open the view.php of the "' .htmlentities($mymod_dir) .'" module and set the variable
+				<code>$requires_frontend_body_js</code> to false. This may do the trick.</p><p>All WB versions below 2.6.7 needs
+				to be upgraded to work with this module.</p>
+				';
+				return false;
+			}
+		} else {
+			// check if backend_body.js is included to the <body> section
+			global $admin;
+				if(!method_exists($admin, 'register_backend_modfiles_body') && file_exists(WB_PATH .'/modules/' .$mymod_dir .'/backend_body.js')) {
+				echo '<p><strong>Note:</strong> The module: "' .htmlentities($mymod_dir) .'" requires WB 2.6.7 or higher</p>
+				<p>This module uses Javascript functions contained in backend_body.js of the module.<br />
+				You need WB 2.6.7 or higher to ensure that module backend_body.js files are automatically loaded if required.</p>
+				<p>Sorry, you can not use this tool with your WB installation, please upgrade to the latest WB version available.</p><br />
+				';
+				return false;
+			}
+		}
+		return true;
+	}
+}

Property changes on: tags/2.8.3/wb/framework/module.functions.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/functions-utf8.php
===================================================================
--- tags/2.8.3/wb/framework/functions-utf8.php	(nonexistent)
+++ tags/2.8.3/wb/framework/functions-utf8.php	(revision 1610)
@@ -0,0 +1,443 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+ * A part of this file is based on 'utf8.php' from the DokuWiki-project.
+ * (http://www.splitbrain.org/projects/dokuwiki):
+ **
+ * UTF8 helper functions
+ * @license    LGPL (http://www.gnu.org/copyleft/lesser.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ **
+ * modified for use with Website Baker
+ * from thorn, Jan. 2008
+ *
+ * most of the original functions appeared to be to slow with large strings, so i replaced them with my own ones
+ * thorn, Mar. 2008
+ */
+
+// Functions we use in Website Baker:
+//   entities_to_7bit()
+//   entities_to_umlauts2()
+//   umlauts_to_entities2()
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+/*
+ * check for mb_string support
+ */
+//define('UTF8_NOMBSTRING',1); // uncomment this to forbid use of mb_string-functions
+if(!defined('UTF8_MBSTRING')){
+  if(function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')){
+    define('UTF8_MBSTRING',1);
+  }else{
+    define('UTF8_MBSTRING',0);
+  }
+}
+
+if(UTF8_MBSTRING){ mb_internal_encoding('UTF-8'); }
+
+require_once(WB_PATH.'/framework/charsets_table.php');
+
+/*
+ * Checks if a string contains 7bit ASCII only
+ *
+ * @author thorn
+ */
+function utf8_isASCII($str){
+	if(preg_match('/[\x80-\xFF]/', $str))
+		return false;
+	else
+		return true;
+}
+
+/*
+ * Tries to detect if a string is in Unicode encoding
+ *
+ * @author <bmorel@ssi.fr>
+ * @link   http://www.php.net/manual/en/function.utf8-encode.php
+ */
+function utf8_check($Str) {
+ for ($i=0; $i<strlen($Str); $i++) {
+  $b = ord($Str[$i]);
+  if ($b < 0x80) continue; # 0bbbbbbb
+  elseif (($b & 0xE0) == 0xC0) $n=1; # 110bbbbb
+  elseif (($b & 0xF0) == 0xE0) $n=2; # 1110bbbb
+  elseif (($b & 0xF8) == 0xF0) $n=3; # 11110bbb
+  elseif (($b & 0xFC) == 0xF8) $n=4; # 111110bb
+  elseif (($b & 0xFE) == 0xFC) $n=5; # 1111110b
+  else return false; # Does not match any model
+  for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
+   if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
+   return false;
+  }
+ }
+ return true;
+}
+
+/*
+ * Romanize a non-latin string
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+function utf8_romanize($string){
+  if(utf8_isASCII($string)) return $string; //nothing to do
+
+  global $UTF8_ROMANIZATION;
+  return strtr($string,$UTF8_ROMANIZATION);
+}
+
+/*
+ * Removes special characters (nonalphanumeric) from a UTF-8 string
+ *
+ * This function adds the controlchars 0x00 to 0x19 to the array of
+ * stripped chars (they are not included in $UTF8_SPECIAL_CHARS2)
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @param  string $string     The UTF8 string to strip of special chars
+ * @param  string $repl       Replace special with this string
+ * @param  string $additional Additional chars to strip (used in regexp char class)
+ */
+function utf8_stripspecials($string,$repl='',$additional=''){
+  global $UTF8_SPECIAL_CHARS2;
+
+  static $specials = null;
+  if(is_null($specials)){
+    $specials = preg_quote($UTF8_SPECIAL_CHARS2, '/');
+  }
+
+  return preg_replace('/['.$additional.'\x00-\x19'.$specials.']/u',$repl,$string);
+}
+
+/*
+ * added functions - thorn
+ */
+
+/*
+ * faster replacement for utf8_entities_to_umlauts()
+ * not all features of utf8_entities_to_umlauts() --> utf8_unhtml() are supported!
+ * @author thorn
+ */
+function utf8_fast_entities_to_umlauts($str) {
+	if(UTF8_MBSTRING) {
+		// we need this for use with mb_convert_encoding
+		$str = str_replace(array('&amp;','&gt;','&lt;','&quot;','&#039;','&nbsp;'), array('&amp;amp;','&amp;gt;','&amp;lt;','&amp;quot;','&amp;#39;','&amp;nbsp;'), $str);
+		// we need two mb_convert_encoding()-calls - is this a bug?
+		// mb_convert_encoding("ö&ouml;", 'UTF-8', 'HTML-ENTITIES'); // with string in utf-8-encoding doesn't work. Result: "Ã¶ö"
+		// Work-around: convert all umlauts to entities first ("ö&ouml;"->"&ouml;&ouml;"), then all entities to umlauts ("&ouml;&ouml;"->"öö")
+		return(mb_convert_encoding(mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8'),'UTF-8', 'HTML-ENTITIES'));
+	} else {
+		global $named_entities;global $numbered_entities;
+		$str = str_replace($named_entities, $numbered_entities, $str);
+		$str = preg_replace("/&#([0-9]+);/e", "code_to_utf8($1)", $str);
+	}
+	return($str);
+}
+// support-function for utf8_fast_entities_to_umlauts()
+function code_to_utf8($num) {
+	if ($num <= 0x7F) {
+		return chr($num);
+	} elseif ($num <= 0x7FF) {
+		return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
+	} elseif ($num <= 0xFFFF) {
+		 return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+	} elseif ($num <= 0x1FFFFF) {
+		return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+	}
+	return "?";
+}
+
+/*
+ * faster replacement for utf8_umlauts_to_entities()
+ * not all features of utf8_umlauts_to_entities() --> utf8_tohtml() are supported!
+ * @author thorn
+ */
+function utf8_fast_umlauts_to_entities($string, $named_entities=true) {
+	if(UTF8_MBSTRING)
+		return(mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8'));
+	else {
+		global $named_entities;global $numbered_entities;
+		$new = "";
+		$i=0;
+		$len=strlen($string);
+		if($len==0) return $string;
+		do {
+			if(ord($string{$i}) <= 127) $ud = $string{$i++};
+			elseif(ord($string{$i}) <= 223) $ud = (ord($string{$i++})-192)*64 + (ord($string{$i++})-128);
+			elseif(ord($string{$i}) <= 239) $ud = (ord($string{$i++})-224)*4096 + (ord($string{$i++})-128)*64 + (ord($string{$i++})-128);
+			elseif(ord($string{$i}) <= 247) $ud = (ord($string{$i++})-240)*262144 + (ord($string{$i++})-128)*4096 + (ord($string{$i++})-128)*64 + (ord($string{$i++})-128);
+			else $ud = ord($string{$i++}); // error!
+			if($ud > 127) {
+				$new .= "&#$ud;";
+			} else {
+				$new .= $ud;
+			}
+		} while($i < $len);
+		$string = $new;
+		if($named_entities)
+			$string = str_replace($numbered_entities, $named_entities, $string);
+	}
+	return($string);
+}
+
+/*
+ * Converts from various charsets to UTF-8
+ *
+ * Will convert a string from various charsets to UTF-8.
+ * HTML-entities may be converted, too.
+ * In case of error the returned string is unchanged, and a message is emitted.
+ * Supported charsets are:
+ * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
+ *         iso_8859_6 iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11
+ * mb_convert_encoding: all wb charsets (except those from 'direct'); but not GB2312
+ * iconv:  all wb charsets (except those from 'direct')
+ *
+ * @param  string  A string in supported encoding
+ * @param  string  The charset to convert from, defaults to DEFAULT_CHARSET
+ * @return string  A string in UTF-8-encoding, with all entities decoded, too.
+ *                 String is unchanged in case of error.
+ * @author thorn
+ */
+function charset_to_utf8($str, $charset_in=DEFAULT_CHARSET, $decode_entities=true) {
+	global $iso_8859_2_to_utf8, $iso_8859_3_to_utf8, $iso_8859_4_to_utf8, $iso_8859_5_to_utf8, $iso_8859_6_to_utf8, $iso_8859_7_to_utf8, $iso_8859_8_to_utf8, $iso_8859_9_to_utf8, $iso_8859_10_to_utf8, $iso_8859_11_to_utf8;
+	$charset_in = strtoupper($charset_in);
+	if ($charset_in == "") { $charset_in = 'UTF-8'; }
+	$wrong_ISO8859 = false;
+	$converted = false;
+
+	if((!function_exists('iconv') && !UTF8_MBSTRING && ($charset_in=='BIG5' || $charset_in=='ISO-2022-JP' || $charset_in=='ISO-2022-KR')) || (!function_exists('iconv') && $charset_in=='GB2312')) {
+		// Nothing we can do here :-(
+		// Charset is one of those obscure ISO-2022... or BIG5, GB2312 or something
+		// and we can't use mb_convert_encoding() or iconv();
+		// Emit an error-message.
+		trigger_error("Can't convert from $charset_in without mb_convert_encoding() or iconv(). Use UTF-8 instead.", E_USER_WARNING);
+		return($str);
+	}
+
+	// check if we have UTF-8 or a plain ASCII string
+	if($charset_in == 'UTF-8' || utf8_isASCII($str)) {
+		// we have utf-8. Just replace HTML-entities and return
+		if($decode_entities && preg_match('/&[#0-9a-zA-Z]+;/',$str))
+			return(utf8_fast_entities_to_umlauts($str));
+		else // nothing to do
+			return($str);
+	}
+	
+	// Convert $str to utf8
+	if(substr($charset_in,0,8) == 'ISO-8859') {
+		switch($charset_in) {
+			case 'ISO-8859-1': $str=utf8_encode($str); break;
+			case 'ISO-8859-2': $str=strtr($str, $iso_8859_2_to_utf8); break;
+			case 'ISO-8859-3': $str=strtr($str, $iso_8859_3_to_utf8); break;
+			case 'ISO-8859-4': $str=strtr($str, $iso_8859_4_to_utf8); break;
+			case 'ISO-8859-5': $str=strtr($str, $iso_8859_5_to_utf8); break;
+			case 'ISO-8859-6': $str=strtr($str, $iso_8859_6_to_utf8); break;
+			case 'ISO-8859-7': $str=strtr($str, $iso_8859_7_to_utf8); break;
+			case 'ISO-8859-8': $str=strtr($str, $iso_8859_8_to_utf8); break;
+			case 'ISO-8859-9': $str=strtr($str, $iso_8859_9_to_utf8); break;
+			case 'ISO-8859-10': $str=strtr($str, $iso_8859_10_to_utf8); break;
+			case 'ISO-8859-11': $str=strtr($str, $iso_8859_11_to_utf8); break;
+			default: $wrong_ISO8859 = true;
+		}
+		if(!$wrong_ISO8859)
+			$converted = true;
+	}
+	if(!$converted && UTF8_MBSTRING && $charset_in != 'GB2312') {
+		// $charset is neither UTF-8 nor a known ISO-8859...
+		// Try mb_convert_encoding() - but there's no GB2312 encoding in php's mb_* functions
+		$str = mb_convert_encoding($str, 'UTF-8', $charset_in);
+		$converted = true;
+	} elseif(!$converted) { // Try iconv
+		if(function_exists('iconv')) {
+			$str = iconv($charset_in, 'UTF-8', $str);
+			$converted = true;
+		}
+	}
+	if($converted) {
+		// we have utf-8, now replace HTML-entities and return
+		if($decode_entities && preg_match('/&[#0-9a-zA-Z]+;/',$str))
+			$str = utf8_fast_entities_to_umlauts($str);
+		return($str);
+	}
+	
+	// Nothing we can do here :-(
+	// Charset is one of those obscure ISO-2022... or BIG5, GB2312 or something
+	// and we can't use mb_convert_encoding() or iconv();
+	// Emit an error-message.
+	trigger_error("Can't convert from $charset_in without mb_convert_encoding() or iconv(). Use UTF-8 instead.", E_USER_WARNING);
+	
+	return $str;
+}
+
+/*
+ * Converts from UTF-8 to various charsets
+ *
+ * Will convert a string from UTF-8 to various charsets.
+ * HTML-entities will not! be converted.
+ * In case of error the returned string is unchanged, and a message is emitted.
+ * Supported charsets are:
+ * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
+ *         iso_8859_6 iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11
+ * mb_convert_encoding: all wb charsets (except those from 'direct'); but not GB2312
+ * iconv:  all wb charsets (except those from 'direct')
+ *
+ * @param  string  An UTF-8 encoded string
+ * @param  string  The charset to convert to, defaults to DEFAULT_CHARSET
+ * @return string  A string in a supported encoding, with all entities decoded, too.
+ *                 String is unchanged in case of error.
+ * @author thorn
+ */
+function utf8_to_charset($str, $charset_out=DEFAULT_CHARSET) {
+	global $utf8_to_iso_8859_2, $utf8_to_iso_8859_3, $utf8_to_iso_8859_4, $utf8_to_iso_8859_5, $utf8_to_iso_8859_6, $utf8_to_iso_8859_7, $utf8_to_iso_8859_8, $utf8_to_iso_8859_9, $utf8_to_iso_8859_10, $utf8_to_iso_8859_11;
+	$charset_out = strtoupper($charset_out);
+	$wrong_ISO8859 = false;
+	$converted = false;
+
+	if((!function_exists('iconv') && !UTF8_MBSTRING && ($charset_out=='BIG5' || $charset_out=='ISO-2022-JP' || $charset_out=='ISO-2022-KR')) || (!function_exists('iconv') && $charset_out=='GB2312')) {
+		// Nothing we can do here :-(
+		// Charset is one of those obscure ISO-2022... or BIG5, GB2312 or something
+		// and we can't use mb_convert_encoding() or iconv();
+		// Emit an error-message.
+		trigger_error("Can't convert into $charset_out without mb_convert_encoding() or iconv(). Use UTF-8 instead.", E_USER_WARNING);
+		return($str);
+	}
+	
+	// the string comes from charset_to_utf8(), so we can skip this
+	// replace HTML-entities first
+	//if(preg_match('/&[#0-9a-zA-Z]+;/',$str))
+	//	$str = utf8_entities_to_umlauts($str);
+	
+	// check if we need to convert
+	if($charset_out == 'UTF-8' || utf8_isASCII($str)) {
+		// Nothing to do. Just return
+			return($str);
+	}
+	
+	// Convert $str to $charset_out
+	if(substr($charset_out,0,8) == 'ISO-8859') {
+		switch($charset_out) {
+			case 'ISO-8859-1': $str=utf8_decode($str); break;
+			case 'ISO-8859-2': $str=strtr($str, $utf8_to_iso_8859_2); break;
+			case 'ISO-8859-3': $str=strtr($str, $utf8_to_iso_8859_3); break;
+			case 'ISO-8859-4': $str=strtr($str, $utf8_to_iso_8859_4); break;
+			case 'ISO-8859-5': $str=strtr($str, $utf8_to_iso_8859_5); break;
+			case 'ISO-8859-6': $str=strtr($str, $utf8_to_iso_8859_6); break;
+			case 'ISO-8859-7': $str=strtr($str, $utf8_to_iso_8859_7); break;
+			case 'ISO-8859-8': $str=strtr($str, $utf8_to_iso_8859_8); break;
+			case 'ISO-8859-9': $str=strtr($str, $utf8_to_iso_8859_9); break;
+			case 'ISO-8859-10': $str=strtr($str, $utf8_to_iso_8859_10); break;
+			case 'ISO-8859-11': $str=strtr($str, $utf8_to_iso_8859_11); break;
+			default: $wrong_ISO8859 = true;
+		}
+		if(!$wrong_ISO8859)
+			$converted = true;
+	}
+	if(!$converted && UTF8_MBSTRING && $charset_out != 'GB2312') {
+		// $charset is neither UTF-8 nor a known ISO-8859...
+		// Try mb_convert_encoding() - but there's no GB2312 encoding in php's mb_* functions
+		$str = mb_convert_encoding($str, $charset_out, 'UTF-8');
+		$converted = true;
+	} elseif(!$converted) { // Try iconv
+		if(function_exists('iconv')) {
+			$str = iconv('UTF-8', $charset_out, $str);
+			$converted = true;
+		}
+	}
+	if($converted) {
+		return($str);
+	}
+	
+	// Nothing we can do here :-(
+	// Charset is one of those obscure ISO-2022... or BIG5, GB2312 or something
+	// and we can't use mb_convert_encoding() or iconv();
+	// Emit an error-message.
+	trigger_error("Can't convert into $charset_out without mb_convert_encoding() or iconv(). Use UTF-8 instead.", E_USER_WARNING);
+	
+	return $str;
+}
+
+/*
+ * convert Filenames to ASCII
+ *
+ * Convert all non-ASCII characters and all HTML-entities to their plain 7bit equivalents
+ * Characters without an equivalent will be converted to hex-values.
+ * The name entities_to_7bit() is somewhat misleading, but kept for compatibility-reasons.
+ *
+ * @param  string  Filename to convert (all encodings from charset_to_utf8() are allowed)
+ * @return string  ASCII encoded string, to use as filename in wb's page_filename() and media_filename
+ * @author thorn
+ */
+function entities_to_7bit($str) {
+	// convert to UTF-8
+	$str = charset_to_utf8($str);
+	if(!utf8_check($str))
+		return($str);
+	// replace some specials
+	$str = utf8_stripspecials($str, '_');
+	// translate non-ASCII characters to ASCII
+	$str = utf8_romanize($str);
+	// missed some? - Many UTF-8-chars can't be romanized
+	// convert to HTML-entities, and replace entites by hex-numbers
+	$str = utf8_fast_umlauts_to_entities($str, false);
+	$str = str_replace('&#039;', '&apos;', $str);
+	$str = preg_replace('/&#([0-9]+);/e', "dechex('$1')",  $str);
+	// maybe there are some &gt; &lt; &apos; &quot; &amp; &nbsp; left, replace them too
+	$str = str_replace(array('&gt;', '&lt;', '&apos;', '\'', '&quot;', '&amp;'), '', $str);
+	$str = str_replace('&amp;', '', $str);
+	
+	return($str);
+}
+
+/*
+ * Convert a string from mixed html-entities/umlauts to pure $charset_out-umlauts
+ * 
+ * Will replace all numeric and named entities except
+ * &gt; &lt; &apos; &quot; &#039; &nbsp;
+ * @author thorn
+ */
+function entities_to_umlauts2($string, $charset_out=DEFAULT_CHARSET) {
+	$string = charset_to_utf8($string, DEFAULT_CHARSET, true);
+	//if(utf8_check($string)) // this check is to much time-consuming (this may fail only if AddDefaultCharset is set)
+		$string = utf8_to_charset($string, $charset_out);
+	return ($string);
+}
+
+/*
+ * Convert a string from mixed html-entities/umlauts to pure ASCII with HTML-entities
+ * 
+ * Will convert a string in $charset_in encoding to a pure ASCII string with HTML-entities.
+ * @author thorn
+ */
+function umlauts_to_entities2($string, $charset_in=DEFAULT_CHARSET) {
+	$string = charset_to_utf8($string, $charset_in, false);
+	//if(utf8_check($string)) // this check is to much time-consuming (this may fail only if AddDefaultCharset is set)
+		$string = utf8_fast_umlauts_to_entities($string, false);
+	return($string);
+}
+

Property changes on: tags/2.8.3/wb/framework/functions-utf8.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/DseTwo.php
===================================================================
--- tags/2.8.3/wb/framework/DseTwo.php	(nonexistent)
+++ tags/2.8.3/wb/framework/DseTwo.php	(revision 1610)
@@ -0,0 +1,321 @@
+<?php
+/**
+ * @category        ISTeasy
+ * @package         DatabaseSearchEngine 1
+ * @author          Werner von der Decken
+ * @copyright       2011, ISTeasy-project
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @description     Searchengine to browse whoole database for text.
+ *                  Black- or whitelist is possible
+ *                  min requirements: PHP 5.2.2, mySQL 5.1
+ *                  this is a authorisised GPL-lizensed derivate from the original
+ *                  ISTeasy class DseOne which is available under a cc-by-sa-3.0 license
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+
+class DseTwo {
+
+	const USE_ALL       = 0;
+	const USE_BLACKLIST = 1;
+	const USE_WHITELIST = 2;
+
+	const RETURN_UNUSED = 0;
+	const RETURN_USED   = 1;
+	/**
+	 *
+	 * @var object database 
+	 */
+	private $_db;
+	/**
+	 *
+	 * @var string prefix of tables to search for
+	 */
+	private $_TablePrefix;
+	/**
+	 *
+	 * @var string name of the database
+	 */
+	private $_db_name;
+	/**
+	 *
+	 * @var array list of unneeded tables.fields
+	 */
+	private $_ControllList;
+	private $_ControllListTyp;
+	private $_ControllListTypen = array('All','BlackList','WhiteList');
+
+	private $_Queries;
+	private $_BasePath = '';
+	private $_CachePath = '';
+	private $_TCacheFile = '';
+	private $_DCachePrefix = '';
+	private $_bUseCache = true;
+	/**
+	 *
+	 * @param object $database global database object
+	 */
+	public function __construct()
+	{
+		$this->_ControllList = array();
+		$this->_TCacheFile = 'Ie'.__CLASS__.'CacheTables';
+		$this->_DCachePrefix = 'Ie'.__CLASS__.'CacheDir';
+		$this->_Queries = array();
+	}
+	/**
+	 *
+	 * @param string $name name of the property
+	 *        (db_handle, db_name, table_prefix, base_dir, cache_dir, use_cache)
+	 * @param mixed $value value of the property
+	 */
+	public function  __set($name, $value) {
+
+		switch(strtolower($name)):
+			case 'db_handle':
+				if($value) { $this->_db = $value; }
+				break;
+			case 'db_name':
+				if($value != '') { $this->_db_name = $value; }
+				break;
+			case 'table_prefix':
+				if($value != '') { $this->_TablePrefix = $value; }
+				break;
+			case 'base_dir':
+				if($value != '') {
+					$this->_BasePath = rtrim(str_replace('\\', '/', $value) , '/');
+				}
+				break;
+			case 'cache_dir':
+				$value = rtrim(str_replace('\\', '/', $value) , '/');
+				if(!is_dir($value)) {
+					if(!mkdir($value, 0777, true)) {
+						$this->_CachePath = '';
+						$this->_bUseCache = false;
+						break;
+					}
+				}
+				if(is_writable($value)) {
+					$this->_CachePath = $value;
+					$this->_bUseCache = true;
+				}else {
+					$this->_CachePath = '';
+					$this->_bUseCache = false;
+				}
+				break;
+			default:
+				throw new InvalidArgumentException( __CLASS__.'::'.$name );
+				break;
+		endswitch;
+	}
+
+	/**
+	 * delete all table cache files
+	 */
+	public function clearCache()
+	{
+		foreach($this->_ControllListTypen as $type) {
+			$cFile = $this->_CachePath.'/'.$this->_TCacheFile.$type;
+			if(file_exists($cFile)) { @unlink($cFile); }
+		}
+	}
+	/**
+	 *
+	 * @param string $blacklist path/filename of the blacklist
+	 * @param int $type const USE_NO_LIST / USE_BLACKLIST / USE_WHITELIST
+	 * @return bool false if no or empty list is available
+	 */
+	public function addControllList($sControllList, $type = self::USE_BLACKLIST)
+	{
+		$this->_ControllList = array();
+		$this->_ControllListTyp = $type;
+		if(is_readable($sControllList)) {
+			if(($list = file($sControllList, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES)) !== false)
+			{
+				$list = preg_grep('/^\s*?[^#;]/', $list);
+				$this->_ControllList = preg_replace('/^\s*?(.*)\s*?$/', $this->_TablePrefix.'$1', $list);
+				unset($list);
+			}
+		}else {
+			$this->_ControllListTyp = self::USE_ALL;
+		}
+		if(($type == self::USE_BLACKLIST) && (sizeof($this->_ControllList) > 0)) {
+			$this->_ControllListTyp = self::USE_ALL;
+		}
+		return (sizeof($this->_ControllList) > 0);
+	}
+	/**
+	 *
+	 * @param string $sDirToSearch directory to scan (relative to base_dir)
+	 * @param integer $bRetunMode select matching or unmatching files
+	 * @return array list of matching files
+	 */
+	public function getMatchesFromDir($sDirToSearch, $bRetunMode = self::RETURN_USED)
+	{
+		$aResultFileList = array();
+		$aNewFileList = array();
+		$sDirToSearch = trim(str_replace('\\', '/', $sDirToSearch) , '/');
+		$sPathToSearch = $this->_BasePath.'/'.$sDirToSearch;
+		$sCacheFile = $this->_DCachePrefix.$bRetunMode.urlencode('/'.$sDirToSearch);
+		$sCacheFile = $this->_CachePath.'/'.$sCacheFile;
+		if(sizeof($this->_Queries) <= 0) { $this->_getTableQueries(); }
+		// read fileList from directory
+		try{
+			foreach( new DirectoryIterator($sPathToSearch) as $fileinfo ) {
+			// at first collect all files from target directory
+				$fileName = $fileinfo->getFilename();
+				if(($fileinfo->isFile()) &&
+				   (!$fileinfo->isDot()) &&
+				   ($fileinfo->getFilename() != 'index.php')) {
+				   $aNewFileList[] = $fileinfo->getFilename();
+				}
+			}
+		}catch(UnexpectedValueException $e) {}
+		// make checksum of current directory
+		$bCacheValid = false;
+		if($this->_bUseCache) {
+			$checkSum = crc32(serialize($aNewFileList));
+			if(is_readable($sCacheFile)){
+			// read cachefile if available
+				$aResultFileList = unserialize(file_get_contents($sCacheFile));
+				if($checkSum == array_shift($aResultFileList)) {
+				// compare new checksum against checksum from cachefile
+					$bCacheValid = true;
+				}
+			}
+		}
+		if(!$bCacheValid) {
+		// skip this loop if valid cache is available
+			$aResultFileList = array();
+			while (list( , $sFilename) = each($aNewFileList)) {
+				// iterate all tables and search for filename
+				if( $this->_getMatch($sDirToSearch.'/'.$sFilename) !== false) {
+					if($bRetunMode == self::RETURN_USED) { $aResultFileList[] = $sFilename; }
+				}else {
+					if($bRetunMode == self::RETURN_UNUSED) { $aResultFileList[] = $sFilename; }
+				}
+			}
+			// calculate new checksum
+			$newCheckSum = crc32(serialize($aResultFileList));
+			// add checksum to array
+			array_unshift($aResultFileList,  $newCheckSum);
+			// try to write serialized array into new cachefile
+			if(file_put_contents($sCacheFile, serialize($aResultFileList)) === false) {
+				throw new RuntimeException();
+			}
+			// remove checksum again
+			array_shift($aResultFileList);
+		}
+		unset($aNewFileList);
+		return $aResultFileList;
+	}
+	/**
+	 *
+	 * @param <type> $sFilename
+	 * @return bool true if file found in db
+	 */
+	private function _getMatch($sFilename)
+	{
+		$result = 0;
+		$sFilename = str_replace('_', '\_', $sFilename);
+		$sSearch = '%'.str_replace('/', '_', $sFilename).'%';
+		while (list( , $sQuery) = each($this->_Queries)) {
+			$sql = sprintf($sQuery, $sSearch);
+			if( ($res = mysql_query($sql, $this->_db)) ) {
+				if( ($result = intval(mysql_fetch_array($res))) > 0 )  { break; }
+			}
+		}
+		return ($result != 0);
+	}
+	/**
+	 *
+	 */
+	private function _getTableQueries()
+	{
+		if($this->_bUseCache) {
+		// try to read queries from cace
+			$sCacheFile = $this->_CachePath.'/'.$this->_TCacheFile.$this->_ControllListTypen[$this->_ControllListTyp];
+			try {
+				if(is_readable($sCacheFile)) {
+					$this->_Queries = unserialize(file_get_contents($sCacheFile));
+				}
+			}catch(Exception $e) {
+				$this->_Queries = array();
+			}
+		}
+		if(sizeof($this->_Queries) > 0) { return; } // queries alreade loaded from cache
+		$TP = str_replace('_','\_', $this->_TablePrefix);
+		$sql  = 'SELECT TABLE_NAME `table`, COLUMN_NAME `column` ';
+		$sql .= 'FROM INFORMATION_SCHEMA.COLUMNS ';
+		$sql .= 'WHERE `table_schema` = \''.$this->_db_name.'\' AND ';
+		$sql .=        '`table_name` LIKE \''.$TP.'%\' AND ';
+		$sql .=        '(`data_type` LIKE \'%text\' OR ';
+		$sql .=           '(`data_type` = \'varchar\' AND `character_maximum_length` > 20)';
+		$sql .=        ')' ;
+		$sql .= 'ORDER BY `table`, `column`';
+		if(($res = mysql_query($sql, $this->_db))) {
+			$lastTable = '';
+			$aOrStatements = array();
+			$sPrefix = '';
+			while($rec = mysql_fetch_assoc($res))
+			{ // loop through all found tables/fields
+				$sTableColumn = $rec['table'].'.'.$rec['column'];
+				switch($this->_ControllListTyp):
+				// test against controll list
+					case self::USE_BLACKLIST:
+						$needRecord = true;
+						if(in_array($rec['table'], $this->_ControllList) ||
+						   in_array($sTableColumn, $this->_ControllList))
+						{
+							$needRecord = false;
+						}
+						break;
+					case self::USE_WHITELIST:
+						$needRecord = false;
+						if(in_array($rec['table'], $this->_ControllList) ||
+						   in_array($sTableColumn, $this->_ControllList))
+						{
+							$needRecord = true;
+						}
+						break;
+					default: // self::USE_ALL
+						$needRecord = true;
+						break;
+				endswitch;
+				if($needRecord) {
+					if($lastTable != $rec['table']) {
+						if(sizeof($aOrStatements)!= 0){
+						// close previous table
+							$this->_Queries[] = $sPrefix.implode(') OR (', $aOrStatements).')';
+						}
+					// start a new table
+						$sPrefix = 'SELECT COUNT(*) `count` FROM `'.$rec['table'].'` WHERE( ';
+						$aOrStatements = array();
+						$lastTable = $rec['table'];
+					}
+					// add table.column to query
+					$aOrStatements[] = '`'.$rec['table'].'`.`'.$rec['column'].'` LIKE \'%1$s\'';
+				}
+			}
+			if(sizeof($aOrStatements)!= 0){
+			// close last table
+				$this->_Queries[] = $sPrefix.implode(') OR (', $aOrStatements).')';
+			}
+			mysql_free_result($res);
+		}
+		if($this->_bUseCache) {
+		// try to write queries into the cache
+			if(file_put_contents($sCacheFile, serialize($this->_Queries)) === false) {
+				throw new RuntimeException('unable to write file ['.$sCacheFile.']');
+			}
+		}
+	}
+
+}
+?>

Property changes on: tags/2.8.3/wb/framework/DseTwo.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/class.wbmailer.php
===================================================================
--- tags/2.8.3/wb/framework/class.wbmailer.php	(nonexistent)
+++ tags/2.8.3/wb/framework/class.wbmailer.php	(revision 1610)
@@ -0,0 +1,111 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+// Include PHPMailer class
+require_once(WB_PATH."/include/phpmailer/class.phpmailer.php");
+
+class wbmailer extends PHPMailer 
+{
+	// new websitebaker mailer class (subset of PHPMailer class)
+	// setting default values 
+
+	function wbmailer() {
+		global $database;
+		// set mailer defaults (PHP mail function)
+		$db_wbmailer_routine = "phpmail";
+		$db_wbmailer_smtp_host = "";
+		$db_wbmailer_default_sendername = "WB Mailer";
+		$db_server_email = SERVER_EMAIL;
+
+		// get mailer settings from database
+		// $database = new database();
+		$query = "SELECT * FROM " .TABLE_PREFIX. "settings";
+		$results = $database->query($query);
+		while($setting = $results->fetchRow()) {
+			if ($setting['name'] == "wbmailer_routine") { $db_wbmailer_routine = $setting['value']; }
+			if ($setting['name'] == "wbmailer_smtp_host") { $db_wbmailer_smtp_host = $setting['value']; }
+			if ($setting['name'] == "wbmailer_smtp_auth") { $db_wbmailer_smtp_auth = (bool)$setting['value']; }
+			if ($setting['name'] == "wbmailer_smtp_username") { $db_wbmailer_smtp_username = $setting['value']; }
+			if ($setting['name'] == "wbmailer_smtp_password") { $db_wbmailer_smtp_password = $setting['value']; }
+			if ($setting['name'] == "wbmailer_default_sendername") { $db_wbmailer_default_sendername = $setting['value']; }
+			if ($setting['name'] == "server_email") { $db_server_email = $setting['value']; }
+		}
+
+		// set method to send out emails
+		if($db_wbmailer_routine == "smtp" AND strlen($db_wbmailer_smtp_host) > 5) {
+			// use SMTP for all outgoing mails send by Website Baker
+			$this->IsSMTP();                                            
+			$this->Host = $db_wbmailer_smtp_host;
+			// check if SMTP authentification is required
+			if ($db_wbmailer_smtp_auth == "true" && strlen($db_wbmailer_smtp_username) > 1 && strlen($db_wbmailer_smtp_password) > 1) {
+				// use SMTP authentification
+				$this->SMTPAuth = true;     	  								// enable SMTP authentification
+				$this->Username = $db_wbmailer_smtp_username;  	// set SMTP username
+				$this->Password = $db_wbmailer_smtp_password;	  // set SMTP password
+			}
+		} else {
+			// use PHP mail() function for outgoing mails send by Website Baker
+			$this->IsMail();
+		}
+
+		// set language file for PHPMailer error messages
+		if(defined("LANGUAGE")) {
+			$this->SetLanguage(strtolower(LANGUAGE),"language");    // english default (also used if file is missing)
+		}
+
+		// set default charset
+		if(defined('DEFAULT_CHARSET')) { 
+			$this->CharSet = DEFAULT_CHARSET; 
+		} else {
+			$this->CharSet='utf-8';
+		}
+
+		// set default sender name
+		if($this->FromName == 'Root User') {
+			if(isset($_SESSION['DISPLAY_NAME'])) {
+				$this->FromName = $_SESSION['DISPLAY_NAME'];            // FROM NAME: display name of user logged in
+			} else {
+				$this->FromName = $db_wbmailer_default_sendername;			// FROM NAME: set default name
+			}
+		}
+
+		/* 
+			some mail provider (lets say mail.com) reject mails send out by foreign mail 
+			relays but using the providers domain in the from mail address (e.g. myname@mail.com)
+		*/
+		$this->From = $db_server_email;                           // FROM MAIL: (server mail)
+
+		// set default mail formats
+		$this->IsHTML(true);                                        
+		$this->WordWrap = 80;                                       
+		$this->Timeout = 30;
+	}
+}

Property changes on: tags/2.8.3/wb/framework/class.wbmailer.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/globalExceptionHandler.php
===================================================================
--- tags/2.8.3/wb/framework/globalExceptionHandler.php	(nonexistent)
+++ tags/2.8.3/wb/framework/globalExceptionHandler.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @category        WebsiteBaker
+ * @package         WebsiteBaker_core
+ * @author          Werner v.d.Decken
+ * @copyright       WebsiteBaker.org e.V.
+ * @link            http://websitebaker2.org
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @version         $Id: class.order.php 1487 2011-08-10 13:20:15Z DarkViper $
+ * @filesource		$HeadURL: http://svn.websitebaker2.org/branches/2.8.x/wb/framework/class.order.php $
+ *
+ * Global exception-handler
+ * This module will activate a global exception handler to catch all thrown exceptions
+ *
+ */
+/**
+ * define several default exceptions directly to prevent from extra loading requests
+ */
+
+/**
+ * define Exception to show error after accessing a forbidden file
+ */
+	class IllegalFileException extends LogicException {
+		public function __toString() {
+			$file = str_replace(dirname(dirname(__FILE__)), '', $this->getFile());
+			$out  = '<div style="color: #ff0000; text-align: center;"><br />';
+			$out .= '<br /><br /><h1>Illegale file access</h1>';
+			$out .= '<h2>'.$file.'</h2></div>';
+			return $out;
+		}
+	} // end of class
+
+/**
+ *
+ * @param Exception $e
+ */
+	function globalExceptionHandler($e) {
+		// hide server internals from filename where the exception was thrown
+		$file = str_replace(dirname(dirname(__FILE__)), '', $e->getFile());
+		// select some exceptions for special handling
+		if ($e instanceof IllegalFileException) {
+			$sResponse  = $_SERVER['SERVER_PROTOCOL'].' 403 Forbidden';
+			header($sResponse);
+			echo $e;
+		}else {
+		// default exception handling
+			$out  = 'There was an unknown exception:'."\n";
+			$out .= $e->getMessage()."\n";
+			$out .= 'in line ('.$e->getLine().') of ('.$file.')'."\n";
+			echo $out;
+		}
+	}
+/**
+ * now activate the new defined handler
+ */
+	set_exception_handler('globalExceptionHandler');
Index: tags/2.8.3/wb/framework/addon.precheck.inc.php
===================================================================
--- tags/2.8.3/wb/framework/addon.precheck.inc.php	(nonexistent)
+++ tags/2.8.3/wb/framework/addon.precheck.inc.php	(revision 1610)
@@ -0,0 +1,335 @@
+<?php
+/**
+ *
+ * @category        module
+ * @package         precheck
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+function getVersion($version, $strip_suffix = true)
+{
+	/**
+	 * This funtion creates a version string following the major.minor.revision convention
+	 * The minor and revision part of the version may not exceed 999 (three digits)
+	 * An optional suffix part can be added after revision (requires $strip_suffix = false)
+	 *
+	 * EXAMPLES: input --> output
+	 *	5 --> 5.000000; 5.0 --> 5.000000; 5.0.0 --> 5.000000
+	 * 	5.2 --> 5.002000; 5.20 --> 5.002000; 5.2.0 --> 5.002000
+	 * 	5.21 --> 5.002001; 5.2.1 --> 5.002001;
+	 * 	5.27.1 --> 5.027001; 5.2.71 --> 5.002071;
+	 * 	5.27.1 rc1 --> 5.027001_RC1 ($strip_suffix:= false)
+	 */
+	// replace comma by decimal point
+	$version = str_replace(',', '.', $version);
+
+	// convert version into major.minor.revision numbering system
+	list($major, $minor, $revision) = explode('.', $version, 3);
+
+	// convert versioning style 5.21 into 5.2.1
+	if ($revision == '' && strlen(intval($minor)) == 2) {
+		$revision = substr($minor, -1);
+		$minor = substr($minor, 0, 1);
+	}
+	
+	// extract possible non numerical suffix from revision part (e.g. Alpha, Beta, RC1)
+	$suffix = strtoupper(trim(substr($revision, strlen(intval($revision)))));
+
+/*
+	return (int)$major . '.' . sprintf('%03d', (int)$minor) . sprintf('%03d', (int)$revision) .
+		(($strip_suffix == false && $suffix != '') ? '_' . $suffix : '');
+*/
+	// return standard version number (minor and revision numbers may not exceed 999)
+    return sprintf('%d.%03d.%03d%s', (int)$major, (int)minor, (int)$revision,
+    (($strip_suffix == false && $suffix != '') ? '_' . $suffix : ''));
+}
+
+/**
+ *	As "version_compare" it self seems only got trouble 
+ *	within words like "Alpha", "Beta" a.s.o. this function
+ *	only modify the version-string in the way that these words are replaced by values/numbers.
+ *
+ *	E.g:	"1.2.3 Beta2" => "1.2.322"
+ *			"0.1.1 ALPHA" => "0.1.11"
+ *
+ *	Notice:	Please keep in mind, that this will not correct the way "version_control" 
+ *			handel "1 < 1.0 < 1.0.0 < 1.0.0.0" and will not correct missformed version-strings
+ *			below 2.7, e.g. "1.002 released candidate 2.3"
+ *			
+ *	@since	2.8.0 RC2
+ *
+ *	@param	string	A versionstring
+ *	@return	string	The modificated versionstring
+ *
+ */
+function getVersion2 ($version="") {
+	
+	$states = array (
+		'1' => "alpha",
+		'2' => "beta",
+		'4' => "rc",
+		'8' => "final"	
+	);
+
+	$version = strtolower($version);
+	
+	foreach($states as $value=>$keys) $version = str_replace($keys, $value, $version);
+
+	$version = str_replace(" ", "", $version);
+
+	return $version;
+}
+
+function versionCompare($version1, $version2, $operator = '>=')
+{
+	/**
+	 * This funtion performs a comparison of two provided version strings
+	 * The versions are first converted into a string following the major.minor.revision 
+	 * convention and performs a version_compare afterwards.
+	 */
+	// return version_compare(getVersion($version1), getVersion($version2), $operator);
+	return version_compare(getVersion2($version1), getVersion2($version2), $operator);
+}
+
+function sortPreCheckArray($precheck_array)
+{
+	/**
+	 * This funtion sorts the precheck array to a common format
+	 */
+	// define desired precheck order
+	$key_order = array('WB_VERSION', 'WB_ADDONS', 'PHP_VERSION', 'PHP_EXTENSIONS', 'PHP_SETTINGS', 'CUSTOM_CHECKS');
+
+	$temp_array = array();
+	foreach($key_order as $key) {
+		if (!isset($precheck_array[$key])) continue;
+		$temp_array[$key] = $precheck_array[$key];
+	}
+	return $temp_array;
+}
+
+function preCheckAddon($temp_addon_file)
+{
+	/**
+	 * This funtion performs pretest upfront of the Add-On installation process.
+	 * The requirements can be specified via the array $PRECHECK which needs to
+	 * be defined in the optional Add-on file precheck.php.
+	 */
+	global $database, $admin, $TEXT, $HEADING, $MESSAGE;
+	
+	// path to the temporary Add-on folder
+	$temp_path = WB_PATH . '/temp/unzip';
+	
+	// check if file precheck.php exists for the Add-On uploaded via WB installation routine
+	if (!file_exists($temp_path . '/precheck.php')) return;
+	
+	// unset any previous declared PRECHECK array
+	unset($PRECHECK);
+
+	// include Add-On precheck.php file
+	include($temp_path . '/precheck.php');
+	
+	// check if there are any Add-On requirements to check for
+	if (!(isset($PRECHECK) && count($PRECHECK) > 0)) return;
+	
+	// sort precheck array
+	$PRECHECK = sortPreCheckArray($PRECHECK);
+	
+	$failed_checks = 0;
+	$msg = array();
+	// check if specified addon requirements are fullfilled
+	foreach ($PRECHECK as $key => $value) {
+		switch ($key) {
+			case 'WB_VERSION':
+				if (isset($value['VERSION'])) {
+					// obtain operator for string comparison if exist
+					$operator = (isset($value['OPERATOR']) &&  trim($value['OPERATOR']) != '') ? $value['OPERATOR'] : '>=';
+				
+					// compare versions and extract actual status
+					$status = versionCompare(WB_VERSION, $value['VERSION'], $operator);
+					$msg[] = array(
+						'check'		=> 'WB-' . $TEXT['VERSION'] .': ',
+						'required'	=> htmlentities($operator) . $value['VERSION'],
+						'actual'	=> WB_VERSION,
+						'status'	=> $status
+					);
+
+					// increase counter if required
+					if (!$status) $failed_checks++;
+				}
+				break;
+
+			case 'WB_ADDONS':
+				if (is_array($PRECHECK['WB_ADDONS'])) {
+					foreach($PRECHECK['WB_ADDONS'] as $addon => $values) {
+						if (is_array($values)) {
+							// extract module version and operator
+							$version = (isset($values['VERSION']) &&  trim($values['VERSION']) != '') ? $values['VERSION'] : '';
+							$operator = (isset($values['OPERATOR']) &&  trim($values['OPERATOR']) != '') ? $values['OPERATOR'] : '>=';
+						} else {
+							// no version and operator specified (only check if addon exists)
+							$addon = strip_tags($values);
+							$version = ''; $operator = '';
+						}
+					
+						// check if addon is listed in WB database
+						$table = TABLE_PREFIX . 'addons';
+						$sql = "SELECT * FROM `$table` WHERE `directory` = '" . addslashes($addon) . "'";
+						$results = $database->query($sql);
+					
+						$status = false; $addon_status = $TEXT['NOT_INSTALLED'];
+						if ($results && $row = $results->fetchRow()) {
+							$status = true; 
+							$addon_status = $TEXT['INSTALLED'];
+						
+							// compare version if required
+							if ($version != '') {
+								$status = versionCompare($row['version'], $version, $operator);
+								$addon_status = $row['version'];
+							}
+						}
+					
+						// provide addon status
+						$msg[] = array(
+							'check'		=> '&nbsp; ' . $TEXT['ADDON'] . ': ' . htmlentities($addon),
+							'required'	=> ($version != '') ? $operator . '&nbsp;' . $version : $TEXT['INSTALLED'],
+							'actual'	=> $addon_status,
+							'status'	=> $status
+						);
+						
+						// increase counter if required
+						if (!$status) $failed_checks++;
+					}
+				}
+				break;
+
+			case 'PHP_VERSION':
+				if (isset($value['VERSION'])) {
+					// obtain operator for string comparison if exist
+					$operator = (isset($value['OPERATOR']) &&  trim($value['OPERATOR']) != '') ? $value['OPERATOR'] : '>=';
+				
+					// compare versions and extract actual status
+					$status = versionCompare(PHP_VERSION, $value['VERSION'], $operator);
+					$msg[] = array(
+						'check'		=> 'PHP-' . $TEXT['VERSION'] .': ',
+						'required'	=> htmlentities($operator) . '&nbsp;' . $value['VERSION'],
+						'actual'	=> PHP_VERSION,
+						'status'	=> $status
+					);
+
+					// increase counter if required
+					if (!$status) $failed_checks++;
+
+				}
+				break;
+
+			case 'PHP_EXTENSIONS':
+				if (is_array($PRECHECK['PHP_EXTENSIONS'])) {
+					foreach($PRECHECK['PHP_EXTENSIONS'] as $extension) {
+						$status = extension_loaded(strtolower($extension));
+						$msg[] = array(
+							'check'		=> '&nbsp; ' . $TEXT['EXTENSION'] . ': ' . htmlentities($extension),
+							'required'	=> $TEXT['INSTALLED'],
+							'actual'	=> ($status) ? $TEXT['INSTALLED'] : $TEXT['NOT_INSTALLED'],
+							'status'	=> $status
+						);
+
+						// increase counter if required
+						if (!$status) $failed_checks++;
+					}
+				}
+				break;
+
+			case 'PHP_SETTINGS':
+				if (is_array($PRECHECK['PHP_SETTINGS'])) {
+					foreach($PRECHECK['PHP_SETTINGS'] as $setting => $value) {
+						$actual_setting = ($temp = ini_get($setting)) ? $temp : 0;
+						$status = ($actual_setting == $value);
+					
+						$msg[] = array(
+							'check'		=> '&nbsp; '. ($setting),
+							'required'	=> $value,
+							'actual'	=> $actual_setting,
+							'status'	=> $status
+						);
+
+						// increase counter if required
+						if (!$status) $failed_checks++;
+					}
+				}
+				break;
+
+			case 'CUSTOM_CHECKS':
+				if (is_array($PRECHECK['CUSTOM_CHECKS'])) {
+					foreach($PRECHECK['CUSTOM_CHECKS'] as $key => $values) {
+						$status = (true === array_key_exists('STATUS', $values )) ? $values['STATUS'] : false;
+						$msg[] = array(
+							'check'		=> $key,
+							'required'	=> $values['REQUIRED'],
+							'actual'	=> $values['ACTUAL'],
+							'status'	=> $status
+						);
+					}
+
+					// increase counter if required
+					if (!$status) $failed_checks++;
+				}
+				break;
+		}
+	}
+
+	// leave if all requirements are fullfilled
+	if ($failed_checks == 0) return;
+	
+	// output summary table with requirements not fullfilled
+	echo <<< EOT
+	<h2>{$HEADING['ADDON_PRECHECK_FAILED']}</h2>
+	<p>{$MESSAGE['ADDON']['PRECHECK_FAILED']}</p> 
+
+	<table width="700px" cellpadding="4" border="0" style="margin: 0.5em; border-collapse: collapse; border: 1px solid silver;">
+	<tr>
+		<th>{$TEXT['REQUIREMENT']}:</th>
+		<th>{$TEXT['REQUIRED']}:</th>
+		<th>{$TEXT['CURRENT']}:</th>
+	</tr>
+EOT;
+
+	foreach($msg as $check) {
+		echo '<tr>';
+		$style = $check['status'] ? 'color: #46882B;' : 'color: #C00;';
+		foreach($check as $key => $value) {
+			if ($key == 'status') continue;
+			
+			echo '<td style="' . $style . '">' . $value . '</td>';
+		}
+		echo '</tr>';
+	}
+	echo '</table>';
+
+	// delete the temp unzip directory
+	rm_full_dir($temp_path);	
+
+	// delete the temporary zip file of the Add-on
+	if(file_exists($temp_addon_file)) { unlink($temp_addon_file); }	
+	
+	// output status message and die
+	$admin->print_error('');
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/framework/addon.precheck.inc.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/charsets_table.php
===================================================================
--- tags/2.8.3/wb/framework/charsets_table.php	(nonexistent)
+++ tags/2.8.3/wb/framework/charsets_table.php	(revision 1610)
@@ -0,0 +1,1022 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+/* -------------------------------------------------------- */
+// Must include code to stop this file being accessed directly
+if(!defined('WB_PATH')) {
+	require_once(dirname(__FILE__).'/globalExceptionHandler.php');
+	throw new IllegalFileException();
+}
+/* -------------------------------------------------------- */
+global $iso_8859_2_to_utf8;
+$iso_8859_2_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xc4\x84","\xa2"=>"\xcb\x98","\xa3"=>"\xc5\x81","\xa4"=>"\xc2\xa4","\xa5"=>"\xc4\xbd","\xa6"=>"\xc5\x9a","\xa7"=>"\xc2\xa7",
+	"\xa8"=>"\xc2\xa8","\xa9"=>"\xc5\xa0","\xaa"=>"\xc5\x9e","\xab"=>"\xc5\xa4","\xac"=>"\xc5\xb9","\xad"=>"\xc2\xad","\xae"=>"\xc5\xbd","\xaf"=>"\xc5\xbb",
+	"\xb0"=>"\xc2\xb0","\xb1"=>"\xc4\x85","\xb2"=>"\xcb\x9b","\xb3"=>"\xc5\x82","\xb4"=>"\xc2\xb4","\xb5"=>"\xc4\xbe","\xb6"=>"\xc5\x9b","\xb7"=>"\xcb\x87",
+	"\xb8"=>"\xc2\xb8","\xb9"=>"\xc5\xa1","\xba"=>"\xc5\x9f","\xbb"=>"\xc5\xa5","\xbc"=>"\xc5\xba","\xbd"=>"\xcb\x9d","\xbe"=>"\xc5\xbe","\xbf"=>"\xc5\xbc",
+	"\xc0"=>"\xc5\x94","\xc1"=>"\xc3\x81","\xc2"=>"\xc3\x82","\xc3"=>"\xc4\x82","\xc4"=>"\xc3\x84","\xc5"=>"\xc4\xb9","\xc6"=>"\xc4\x86","\xc7"=>"\xc3\x87",
+	"\xc8"=>"\xc4\x8c","\xc9"=>"\xc3\x89","\xca"=>"\xc4\x98","\xcb"=>"\xc3\x8b","\xcc"=>"\xc4\x9a","\xcd"=>"\xc3\x8d","\xce"=>"\xc3\x8e","\xcf"=>"\xc4\x8e",
+	"\xd0"=>"\xc4\x90","\xd1"=>"\xc5\x83","\xd2"=>"\xc5\x87","\xd3"=>"\xc3\x93","\xd4"=>"\xc3\x94","\xd5"=>"\xc5\x90","\xd6"=>"\xc3\x96","\xd7"=>"\xc3\x97",
+	"\xd8"=>"\xc5\x98","\xd9"=>"\xc5\xae","\xda"=>"\xc3\x9a","\xdb"=>"\xc5\xb0","\xdc"=>"\xc3\x9c","\xdd"=>"\xc3\x9d","\xde"=>"\xc5\xa2","\xdf"=>"\xc3\x9f",
+	"\xe0"=>"\xc5\x95","\xe1"=>"\xc3\xa1","\xe2"=>"\xc3\xa2","\xe3"=>"\xc4\x83","\xe4"=>"\xc3\xa4","\xe5"=>"\xc4\xba","\xe6"=>"\xc4\x87","\xe7"=>"\xc3\xa7",
+	"\xe8"=>"\xc4\x8d","\xe9"=>"\xc3\xa9","\xea"=>"\xc4\x99","\xeb"=>"\xc3\xab","\xec"=>"\xc4\x9b","\xed"=>"\xc3\xad","\xee"=>"\xc3\xae","\xef"=>"\xc4\x8f",
+	"\xf0"=>"\xc4\x91","\xf1"=>"\xc5\x84","\xf2"=>"\xc5\x88","\xf3"=>"\xc3\xb3","\xf4"=>"\xc3\xb4","\xf5"=>"\xc5\x91","\xf6"=>"\xc3\xb6","\xf7"=>"\xc3\xb7",
+	"\xf8"=>"\xc5\x99","\xf9"=>"\xc5\xaf","\xfa"=>"\xc3\xba","\xfb"=>"\xc5\xb1","\xfc"=>"\xc3\xbc","\xfd"=>"\xc3\xbd","\xfe"=>"\xc5\xa3","\xff"=>"\xcb\x99"
+);
+global $utf8_to_iso_8859_2;
+$utf8_to_iso_8859_2 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc4\x84"=>"\xa1","\xcb\x98"=>"\xa2","\xc5\x81"=>"\xa3","\xc2\xa4"=>"\xa4","\xc4\xbd"=>"\xa5","\xc5\x9a"=>"\xa6","\xc2\xa7"=>"\xa7",
+	"\xc2\xa8"=>"\xa8","\xc5\xa0"=>"\xa9","\xc5\x9e"=>"\xaa","\xc5\xa4"=>"\xab","\xc5\xb9"=>"\xac","\xc2\xad"=>"\xad","\xc5\xbd"=>"\xae","\xc5\xbb"=>"\xaf",
+	"\xc2\xb0"=>"\xb0","\xc4\x85"=>"\xb1","\xcb\x9b"=>"\xb2","\xc5\x82"=>"\xb3","\xc2\xb4"=>"\xb4","\xc4\xbe"=>"\xb5","\xc5\x9b"=>"\xb6","\xcb\x87"=>"\xb7",
+	"\xc2\xb8"=>"\xb8","\xc5\xa1"=>"\xb9","\xc5\x9f"=>"\xba","\xc5\xa5"=>"\xbb","\xc5\xba"=>"\xbc","\xcb\x9d"=>"\xbd","\xc5\xbe"=>"\xbe","\xc5\xbc"=>"\xbf",
+	"\xc5\x94"=>"\xc0","\xc3\x81"=>"\xc1","\xc3\x82"=>"\xc2","\xc4\x82"=>"\xc3","\xc3\x84"=>"\xc4","\xc4\xb9"=>"\xc5","\xc4\x86"=>"\xc6","\xc3\x87"=>"\xc7",
+	"\xc4\x8c"=>"\xc8","\xc3\x89"=>"\xc9","\xc4\x98"=>"\xca","\xc3\x8b"=>"\xcb","\xc4\x9a"=>"\xcc","\xc3\x8d"=>"\xcd","\xc3\x8e"=>"\xce","\xc4\x8e"=>"\xcf",
+	"\xc4\x90"=>"\xd0","\xc5\x83"=>"\xd1","\xc5\x87"=>"\xd2","\xc3\x93"=>"\xd3","\xc3\x94"=>"\xd4","\xc5\x90"=>"\xd5","\xc3\x96"=>"\xd6","\xc3\x97"=>"\xd7",
+	"\xc5\x98"=>"\xd8","\xc5\xae"=>"\xd9","\xc3\x9a"=>"\xda","\xc5\xb0"=>"\xdb","\xc3\x9c"=>"\xdc","\xc3\x9d"=>"\xdd","\xc5\xa2"=>"\xde","\xc3\x9f"=>"\xdf",
+	"\xc5\x95"=>"\xe0","\xc3\xa1"=>"\xe1","\xc3\xa2"=>"\xe2","\xc4\x83"=>"\xe3","\xc3\xa4"=>"\xe4","\xc4\xba"=>"\xe5","\xc4\x87"=>"\xe6","\xc3\xa7"=>"\xe7",
+	"\xc4\x8d"=>"\xe8","\xc3\xa9"=>"\xe9","\xc4\x99"=>"\xea","\xc3\xab"=>"\xeb","\xc4\x9b"=>"\xec","\xc3\xad"=>"\xed","\xc3\xae"=>"\xee","\xc4\x8f"=>"\xef",
+	"\xc4\x91"=>"\xf0","\xc5\x84"=>"\xf1","\xc5\x88"=>"\xf2","\xc3\xb3"=>"\xf3","\xc3\xb4"=>"\xf4","\xc5\x91"=>"\xf5","\xc3\xb6"=>"\xf6","\xc3\xb7"=>"\xf7",
+	"\xc5\x99"=>"\xf8","\xc5\xaf"=>"\xf9","\xc3\xba"=>"\xfa","\xc5\xb1"=>"\xfb","\xc3\xbc"=>"\xfc","\xc3\xbd"=>"\xfd","\xc5\xa3"=>"\xfe","\xcb\x99"=>"\xff"
+);
+global $iso_8859_3_to_utf8;
+$iso_8859_3_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xc4\xa6","\xa2"=>"\xcb\x98","\xa3"=>"\xc2\xa3","\xa4"=>"\xc2\xa4","\xa5"=>"\xc4\xa8","\xa6"=>"\xc4\xa4","\xa7"=>"\xc2\xa7",
+	"\xa8"=>"\xc2\xa8","\xa9"=>"\xc4\xb0","\xaa"=>"\xc5\x9e","\xab"=>"\xc4\x9e","\xac"=>"\xc4\xb4","\xad"=>"\xc2\xad","\xaf"=>"\xc5\xbb","\xb0"=>"\xc2\xb0",
+	"\xb1"=>"\xc4\xa7","\xb2"=>"\xc2\xb2","\xb3"=>"\xc2\xb3","\xb4"=>"\xc2\xb4","\xb5"=>"\xc2\xb5","\xb6"=>"\xc4\xa5","\xb7"=>"\xc2\xb7","\xb8"=>"\xc2\xb8",
+	"\xb9"=>"\xc4\xb1","\xba"=>"\xc5\x9f","\xbb"=>"\xc4\x9f","\xbc"=>"\xc4\xb5","\xbd"=>"\xc2\xbd","\xbf"=>"\xc5\xbc","\xc0"=>"\xc3\x80","\xc1"=>"\xc3\x81",
+	"\xc2"=>"\xc3\x82","\xc4"=>"\xc3\x84","\xc5"=>"\xc4\x8a","\xc6"=>"\xc4\x88","\xc7"=>"\xc3\x87","\xc8"=>"\xc3\x88","\xc9"=>"\xc3\x89","\xca"=>"\xc3\x8a",
+	"\xcb"=>"\xc3\x8b","\xcc"=>"\xc3\x8c","\xcd"=>"\xc3\x8d","\xce"=>"\xc3\x8e","\xcf"=>"\xc3\x8f","\xd1"=>"\xc3\x91","\xd2"=>"\xc3\x92","\xd3"=>"\xc3\x93",
+	"\xd4"=>"\xc3\x94","\xd5"=>"\xc4\xa0","\xd6"=>"\xc3\x96","\xd7"=>"\xc3\x97","\xd8"=>"\xc4\x9c","\xd9"=>"\xc3\x99","\xda"=>"\xc3\x9a","\xdb"=>"\xc3\x9b",
+	"\xdc"=>"\xc3\x9c","\xdd"=>"\xc5\xac","\xde"=>"\xc5\x9c","\xdf"=>"\xc3\x9f","\xe0"=>"\xc3\xa0","\xe1"=>"\xc3\xa1","\xe2"=>"\xc3\xa2","\xe4"=>"\xc3\xa4",
+	"\xe5"=>"\xc4\x8b","\xe6"=>"\xc4\x89","\xe7"=>"\xc3\xa7","\xe8"=>"\xc3\xa8","\xe9"=>"\xc3\xa9","\xea"=>"\xc3\xaa","\xeb"=>"\xc3\xab","\xec"=>"\xc3\xac",
+	"\xed"=>"\xc3\xad","\xee"=>"\xc3\xae","\xef"=>"\xc3\xaf","\xf1"=>"\xc3\xb1","\xf2"=>"\xc3\xb2","\xf3"=>"\xc3\xb3","\xf4"=>"\xc3\xb4","\xf5"=>"\xc4\xa1",
+	"\xf6"=>"\xc3\xb6","\xf7"=>"\xc3\xb7","\xf8"=>"\xc4\x9d","\xf9"=>"\xc3\xb9","\xfa"=>"\xc3\xba","\xfb"=>"\xc3\xbb","\xfc"=>"\xc3\xbc","\xfd"=>"\xc5\xad",
+	"\xfe"=>"\xc5\x9d","\xff"=>"\xcb\x99"
+);
+global $utf8_to_iso_8859_3;
+$utf8_to_iso_8859_3 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc4\xa6"=>"\xa1","\xcb\x98"=>"\xa2","\xc2\xa3"=>"\xa3","\xc2\xa4"=>"\xa4","\xc4\xa8"=>"\xa5","\xc4\xa4"=>"\xa6","\xc2\xa7"=>"\xa7",
+	"\xc2\xa8"=>"\xa8","\xc4\xb0"=>"\xa9","\xc5\x9e"=>"\xaa","\xc4\x9e"=>"\xab","\xc4\xb4"=>"\xac","\xc2\xad"=>"\xad","\xc5\xbb"=>"\xaf","\xc2\xb0"=>"\xb0",
+	"\xc4\xa7"=>"\xb1","\xc2\xb2"=>"\xb2","\xc2\xb3"=>"\xb3","\xc2\xb4"=>"\xb4","\xc2\xb5"=>"\xb5","\xc4\xa5"=>"\xb6","\xc2\xb7"=>"\xb7","\xc2\xb8"=>"\xb8",
+	"\xc4\xb1"=>"\xb9","\xc5\x9f"=>"\xba","\xc4\x9f"=>"\xbb","\xc4\xb5"=>"\xbc","\xc2\xbd"=>"\xbd","\xc5\xbc"=>"\xbf","\xc3\x80"=>"\xc0","\xc3\x81"=>"\xc1",
+	"\xc3\x82"=>"\xc2","\xc3\x84"=>"\xc4","\xc4\x8a"=>"\xc5","\xc4\x88"=>"\xc6","\xc3\x87"=>"\xc7","\xc3\x88"=>"\xc8","\xc3\x89"=>"\xc9","\xc3\x8a"=>"\xca",
+	"\xc3\x8b"=>"\xcb","\xc3\x8c"=>"\xcc","\xc3\x8d"=>"\xcd","\xc3\x8e"=>"\xce","\xc3\x8f"=>"\xcf","\xc3\x91"=>"\xd1","\xc3\x92"=>"\xd2","\xc3\x93"=>"\xd3",
+	"\xc3\x94"=>"\xd4","\xc4\xa0"=>"\xd5","\xc3\x96"=>"\xd6","\xc3\x97"=>"\xd7","\xc4\x9c"=>"\xd8","\xc3\x99"=>"\xd9","\xc3\x9a"=>"\xda","\xc3\x9b"=>"\xdb",
+	"\xc3\x9c"=>"\xdc","\xc5\xac"=>"\xdd","\xc5\x9c"=>"\xde","\xc3\x9f"=>"\xdf","\xc3\xa0"=>"\xe0","\xc3\xa1"=>"\xe1","\xc3\xa2"=>"\xe2","\xc3\xa4"=>"\xe4",
+	"\xc4\x8b"=>"\xe5","\xc4\x89"=>"\xe6","\xc3\xa7"=>"\xe7","\xc3\xa8"=>"\xe8","\xc3\xa9"=>"\xe9","\xc3\xaa"=>"\xea","\xc3\xab"=>"\xeb","\xc3\xac"=>"\xec",
+	"\xc3\xad"=>"\xed","\xc3\xae"=>"\xee","\xc3\xaf"=>"\xef","\xc3\xb1"=>"\xf1","\xc3\xb2"=>"\xf2","\xc3\xb3"=>"\xf3","\xc3\xb4"=>"\xf4","\xc4\xa1"=>"\xf5",
+	"\xc3\xb6"=>"\xf6","\xc3\xb7"=>"\xf7","\xc4\x9d"=>"\xf8","\xc3\xb9"=>"\xf9","\xc3\xba"=>"\xfa","\xc3\xbb"=>"\xfb","\xc3\xbc"=>"\xfc","\xc5\xad"=>"\xfd",
+	"\xc5\x9d"=>"\xfe","\xcb\x99"=>"\xff"
+);
+global $iso_8859_4_to_utf8;
+$iso_8859_4_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xc4\x84","\xa2"=>"\xc4\xb8","\xa3"=>"\xc5\x96","\xa4"=>"\xc2\xa4","\xa5"=>"\xc4\xa8","\xa6"=>"\xc4\xbb","\xa7"=>"\xc2\xa7",
+	"\xa8"=>"\xc2\xa8","\xa9"=>"\xc5\xa0","\xaa"=>"\xc4\x92","\xab"=>"\xc4\xa2","\xac"=>"\xc5\xa6","\xad"=>"\xc2\xad","\xae"=>"\xc5\xbd","\xaf"=>"\xc2\xaf",
+	"\xb0"=>"\xc2\xb0","\xb1"=>"\xc4\x85","\xb2"=>"\xcb\x9b","\xb3"=>"\xc5\x97","\xb4"=>"\xc2\xb4","\xb5"=>"\xc4\xa9","\xb6"=>"\xc4\xbc","\xb7"=>"\xcb\x87",
+	"\xb8"=>"\xc2\xb8","\xb9"=>"\xc5\xa1","\xba"=>"\xc4\x93","\xbb"=>"\xc4\xa3","\xbc"=>"\xc5\xa7","\xbd"=>"\xc5\x8a","\xbe"=>"\xc5\xbe","\xbf"=>"\xc5\x8b",
+	"\xc0"=>"\xc4\x80","\xc1"=>"\xc3\x81","\xc2"=>"\xc3\x82","\xc3"=>"\xc3\x83","\xc4"=>"\xc3\x84","\xc5"=>"\xc3\x85","\xc6"=>"\xc3\x86","\xc7"=>"\xc4\xae",
+	"\xc8"=>"\xc4\x8c","\xc9"=>"\xc3\x89","\xca"=>"\xc4\x98","\xcb"=>"\xc3\x8b","\xcc"=>"\xc4\x96","\xcd"=>"\xc3\x8d","\xce"=>"\xc3\x8e","\xcf"=>"\xc4\xaa",
+	"\xd0"=>"\xc4\x90","\xd1"=>"\xc5\x85","\xd2"=>"\xc5\x8c","\xd3"=>"\xc4\xb6","\xd4"=>"\xc3\x94","\xd5"=>"\xc3\x95","\xd6"=>"\xc3\x96","\xd7"=>"\xc3\x97",
+	"\xd8"=>"\xc3\x98","\xd9"=>"\xc5\xb2","\xda"=>"\xc3\x9a","\xdb"=>"\xc3\x9b","\xdc"=>"\xc3\x9c","\xdd"=>"\xc5\xa8","\xde"=>"\xc5\xaa","\xdf"=>"\xc3\x9f",
+	"\xe0"=>"\xc4\x81","\xe1"=>"\xc3\xa1","\xe2"=>"\xc3\xa2","\xe3"=>"\xc3\xa3","\xe4"=>"\xc3\xa4","\xe5"=>"\xc3\xa5","\xe6"=>"\xc3\xa6","\xe7"=>"\xc4\xaf",
+	"\xe8"=>"\xc4\x8d","\xe9"=>"\xc3\xa9","\xea"=>"\xc4\x99","\xeb"=>"\xc3\xab","\xec"=>"\xc4\x97","\xed"=>"\xc3\xad","\xee"=>"\xc3\xae","\xef"=>"\xc4\xab",
+	"\xf0"=>"\xc4\x91","\xf1"=>"\xc5\x86","\xf2"=>"\xc5\x8d","\xf3"=>"\xc4\xb7","\xf4"=>"\xc3\xb4","\xf5"=>"\xc3\xb5","\xf6"=>"\xc3\xb6","\xf7"=>"\xc3\xb7",
+	"\xf8"=>"\xc3\xb8","\xf9"=>"\xc5\xb3","\xfa"=>"\xc3\xba","\xfb"=>"\xc3\xbb","\xfc"=>"\xc3\xbc","\xfd"=>"\xc5\xa9","\xfe"=>"\xc5\xab","\xff"=>"\xcb\x99"
+);
+global $utf8_to_iso_8859_4;
+$utf8_to_iso_8859_4 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc4\x84"=>"\xa1","\xc4\xb8"=>"\xa2","\xc5\x96"=>"\xa3","\xc2\xa4"=>"\xa4","\xc4\xa8"=>"\xa5","\xc4\xbb"=>"\xa6","\xc2\xa7"=>"\xa7",
+	"\xc2\xa8"=>"\xa8","\xc5\xa0"=>"\xa9","\xc4\x92"=>"\xaa","\xc4\xa2"=>"\xab","\xc5\xa6"=>"\xac","\xc2\xad"=>"\xad","\xc5\xbd"=>"\xae","\xc2\xaf"=>"\xaf",
+	"\xc2\xb0"=>"\xb0","\xc4\x85"=>"\xb1","\xcb\x9b"=>"\xb2","\xc5\x97"=>"\xb3","\xc2\xb4"=>"\xb4","\xc4\xa9"=>"\xb5","\xc4\xbc"=>"\xb6","\xcb\x87"=>"\xb7",
+	"\xc2\xb8"=>"\xb8","\xc5\xa1"=>"\xb9","\xc4\x93"=>"\xba","\xc4\xa3"=>"\xbb","\xc5\xa7"=>"\xbc","\xc5\x8a"=>"\xbd","\xc5\xbe"=>"\xbe","\xc5\x8b"=>"\xbf",
+	"\xc4\x80"=>"\xc0","\xc3\x81"=>"\xc1","\xc3\x82"=>"\xc2","\xc3\x83"=>"\xc3","\xc3\x84"=>"\xc4","\xc3\x85"=>"\xc5","\xc3\x86"=>"\xc6","\xc4\xae"=>"\xc7",
+	"\xc4\x8c"=>"\xc8","\xc3\x89"=>"\xc9","\xc4\x98"=>"\xca","\xc3\x8b"=>"\xcb","\xc4\x96"=>"\xcc","\xc3\x8d"=>"\xcd","\xc3\x8e"=>"\xce","\xc4\xaa"=>"\xcf",
+	"\xc4\x90"=>"\xd0","\xc5\x85"=>"\xd1","\xc5\x8c"=>"\xd2","\xc4\xb6"=>"\xd3","\xc3\x94"=>"\xd4","\xc3\x95"=>"\xd5","\xc3\x96"=>"\xd6","\xc3\x97"=>"\xd7",
+	"\xc3\x98"=>"\xd8","\xc5\xb2"=>"\xd9","\xc3\x9a"=>"\xda","\xc3\x9b"=>"\xdb","\xc3\x9c"=>"\xdc","\xc5\xa8"=>"\xdd","\xc5\xaa"=>"\xde","\xc3\x9f"=>"\xdf",
+	"\xc4\x81"=>"\xe0","\xc3\xa1"=>"\xe1","\xc3\xa2"=>"\xe2","\xc3\xa3"=>"\xe3","\xc3\xa4"=>"\xe4","\xc3\xa5"=>"\xe5","\xc3\xa6"=>"\xe6","\xc4\xaf"=>"\xe7",
+	"\xc4\x8d"=>"\xe8","\xc3\xa9"=>"\xe9","\xc4\x99"=>"\xea","\xc3\xab"=>"\xeb","\xc4\x97"=>"\xec","\xc3\xad"=>"\xed","\xc3\xae"=>"\xee","\xc4\xab"=>"\xef",
+	"\xc4\x91"=>"\xf0","\xc5\x86"=>"\xf1","\xc5\x8d"=>"\xf2","\xc4\xb7"=>"\xf3","\xc3\xb4"=>"\xf4","\xc3\xb5"=>"\xf5","\xc3\xb6"=>"\xf6","\xc3\xb7"=>"\xf7",
+	"\xc3\xb8"=>"\xf8","\xc5\xb3"=>"\xf9","\xc3\xba"=>"\xfa","\xc3\xbb"=>"\xfb","\xc3\xbc"=>"\xfc","\xc5\xa9"=>"\xfd","\xc5\xab"=>"\xfe","\xcb\x99"=>"\xff"
+);
+
+global $iso_8859_5_to_utf8;
+$iso_8859_5_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xd0\x81","\xa2"=>"\xd0\x82","\xa3"=>"\xd0\x83","\xa4"=>"\xd0\x84","\xa5"=>"\xd0\x85","\xa6"=>"\xd0\x86","\xa7"=>"\xd0\x87",
+	"\xa8"=>"\xd0\x88","\xa9"=>"\xd0\x89","\xaa"=>"\xd0\x8a","\xab"=>"\xd0\x8b","\xac"=>"\xd0\x8c","\xad"=>"\xc2\xad","\xae"=>"\xd0\x8e","\xaf"=>"\xd0\x8f",
+	"\xb0"=>"\xd0\x90","\xb1"=>"\xd0\x91","\xb2"=>"\xd0\x92","\xb3"=>"\xd0\x93","\xb4"=>"\xd0\x94","\xb5"=>"\xd0\x95","\xb6"=>"\xd0\x96","\xb7"=>"\xd0\x97",
+	"\xb8"=>"\xd0\x98","\xb9"=>"\xd0\x99","\xba"=>"\xd0\x9a","\xbb"=>"\xd0\x9b","\xbc"=>"\xd0\x9c","\xbd"=>"\xd0\x9d","\xbe"=>"\xd0\x9e","\xbf"=>"\xd0\x9f",
+	"\xc0"=>"\xd0\xa0","\xc1"=>"\xd0\xa1","\xc2"=>"\xd0\xa2","\xc3"=>"\xd0\xa3","\xc4"=>"\xd0\xa4","\xc5"=>"\xd0\xa5","\xc6"=>"\xd0\xa6","\xc7"=>"\xd0\xa7",
+	"\xc8"=>"\xd0\xa8","\xc9"=>"\xd0\xa9","\xca"=>"\xd0\xaa","\xcb"=>"\xd0\xab","\xcc"=>"\xd0\xac","\xcd"=>"\xd0\xad","\xce"=>"\xd0\xae","\xcf"=>"\xd0\xaf",
+	"\xd0"=>"\xd0\xb0","\xd1"=>"\xd0\xb1","\xd2"=>"\xd0\xb2","\xd3"=>"\xd0\xb3","\xd4"=>"\xd0\xb4","\xd5"=>"\xd0\xb5","\xd6"=>"\xd0\xb6","\xd7"=>"\xd0\xb7",
+	"\xd8"=>"\xd0\xb8","\xd9"=>"\xd0\xb9","\xda"=>"\xd0\xba","\xdb"=>"\xd0\xbb","\xdc"=>"\xd0\xbc","\xdd"=>"\xd0\xbd","\xde"=>"\xd0\xbe","\xdf"=>"\xd0\xbf",
+	"\xe0"=>"\xd1\x80","\xe1"=>"\xd1\x81","\xe2"=>"\xd1\x82","\xe3"=>"\xd1\x83","\xe4"=>"\xd1\x84","\xe5"=>"\xd1\x85","\xe6"=>"\xd1\x86","\xe7"=>"\xd1\x87",
+	"\xe8"=>"\xd1\x88","\xe9"=>"\xd1\x89","\xea"=>"\xd1\x8a","\xeb"=>"\xd1\x8b","\xec"=>"\xd1\x8c","\xed"=>"\xd1\x8d","\xee"=>"\xd1\x8e","\xef"=>"\xd1\x8f",
+	"\xf0"=>"\xe2\x84\x96","\xf1"=>"\xd1\x91","\xf2"=>"\xd1\x92","\xf3"=>"\xd1\x93","\xf4"=>"\xd1\x94","\xf5"=>"\xd1\x95","\xf6"=>"\xd1\x96","\xf7"=>"\xd1\x97",
+	"\xf8"=>"\xd1\x98","\xf9"=>"\xd1\x99","\xfa"=>"\xd1\x9a","\xfb"=>"\xd1\x9b","\xfc"=>"\xd1\x9c","\xfd"=>"\xc2\xa7","\xfe"=>"\xd1\x9e","\xff"=>"\xd1\x9f"
+);
+
+global $utf8_to_iso_8859_5;
+$utf8_to_iso_8859_5 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xd0\x81"=>"\xa1","\xd0\x82"=>"\xa2","\xd0\x83"=>"\xa3","\xd0\x84"=>"\xa4","\xd0\x85"=>"\xa5","\xd0\x86"=>"\xa6","\xd0\x87"=>"\xa7",
+	"\xd0\x88"=>"\xa8","\xd0\x89"=>"\xa9","\xd0\x8a"=>"\xaa","\xd0\x8b"=>"\xab","\xd0\x8c"=>"\xac","\xc2\xad"=>"\xad","\xd0\x8e"=>"\xae","\xd0\x8f"=>"\xaf",
+	"\xd0\x90"=>"\xb0","\xd0\x91"=>"\xb1","\xd0\x92"=>"\xb2","\xd0\x93"=>"\xb3","\xd0\x94"=>"\xb4","\xd0\x95"=>"\xb5","\xd0\x96"=>"\xb6","\xd0\x97"=>"\xb7",
+	"\xd0\x98"=>"\xb8","\xd0\x99"=>"\xb9","\xd0\x9a"=>"\xba","\xd0\x9b"=>"\xbb","\xd0\x9c"=>"\xbc","\xd0\x9d"=>"\xbd","\xd0\x9e"=>"\xbe","\xd0\x9f"=>"\xbf",
+	"\xd0\xa0"=>"\xc0","\xd0\xa1"=>"\xc1","\xd0\xa2"=>"\xc2","\xd0\xa3"=>"\xc3","\xd0\xa4"=>"\xc4","\xd0\xa5"=>"\xc5","\xd0\xa6"=>"\xc6","\xd0\xa7"=>"\xc7",
+	"\xd0\xa8"=>"\xc8","\xd0\xa9"=>"\xc9","\xd0\xaa"=>"\xca","\xd0\xab"=>"\xcb","\xd0\xac"=>"\xcc","\xd0\xad"=>"\xcd","\xd0\xae"=>"\xce","\xd0\xaf"=>"\xcf",
+	"\xd0\xb0"=>"\xd0","\xd0\xb1"=>"\xd1","\xd0\xb2"=>"\xd2","\xd0\xb3"=>"\xd3","\xd0\xb4"=>"\xd4","\xd0\xb5"=>"\xd5","\xd0\xb6"=>"\xd6","\xd0\xb7"=>"\xd7",
+	"\xd0\xb8"=>"\xd8","\xd0\xb9"=>"\xd9","\xd0\xba"=>"\xda","\xd0\xbb"=>"\xdb","\xd0\xbc"=>"\xdc","\xd0\xbd"=>"\xdd","\xd0\xbe"=>"\xde","\xd0\xbf"=>"\xdf",
+	"\xd1\x80"=>"\xe0","\xd1\x81"=>"\xe1","\xd1\x82"=>"\xe2","\xd1\x83"=>"\xe3","\xd1\x84"=>"\xe4","\xd1\x85"=>"\xe5","\xd1\x86"=>"\xe6","\xd1\x87"=>"\xe7",
+	"\xd1\x88"=>"\xe8","\xd1\x89"=>"\xe9","\xd1\x8a"=>"\xea","\xd1\x8b"=>"\xeb","\xd1\x8c"=>"\xec","\xd1\x8d"=>"\xed","\xd1\x8e"=>"\xee","\xd1\x8f"=>"\xef",
+	"\xe2\x84\x96"=>"\xf0","\xd1\x91"=>"\xf1","\xd1\x92"=>"\xf2","\xd1\x93"=>"\xf3","\xd1\x94"=>"\xf4","\xd1\x95"=>"\xf5","\xd1\x96"=>"\xf6","\xd1\x97"=>"\xf7",
+	"\xd1\x98"=>"\xf8","\xd1\x99"=>"\xf9","\xd1\x9a"=>"\xfa","\xd1\x9b"=>"\xfb","\xd1\x9c"=>"\xfc","\xc2\xa7"=>"\xfd","\xd1\x9e"=>"\xfe","\xd1\x9f"=>"\xff"
+);
+global $iso_8859_6_to_utf8;
+$iso_8859_6_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa4"=>"\xc2\xa4","\xac"=>"\xd8\x8c","\xad"=>"\xc2\xad","\xbb"=>"\xd8\x9b","\xbf"=>"\xd8\x9f","\xc1"=>"\xd8\xa1","\xc2"=>"\xd8\xa2",
+	"\xc3"=>"\xd8\xa3","\xc4"=>"\xd8\xa4","\xc5"=>"\xd8\xa5","\xc6"=>"\xd8\xa6","\xc7"=>"\xd8\xa7","\xc8"=>"\xd8\xa8","\xc9"=>"\xd8\xa9","\xca"=>"\xd8\xaa",
+	"\xcb"=>"\xd8\xab","\xcc"=>"\xd8\xac","\xcd"=>"\xd8\xad","\xce"=>"\xd8\xae","\xcf"=>"\xd8\xaf","\xd0"=>"\xd8\xb0","\xd1"=>"\xd8\xb1","\xd2"=>"\xd8\xb2",
+	"\xd3"=>"\xd8\xb3","\xd4"=>"\xd8\xb4","\xd5"=>"\xd8\xb5","\xd6"=>"\xd8\xb6","\xd7"=>"\xd8\xb7","\xd8"=>"\xd8\xb8","\xd9"=>"\xd8\xb9","\xda"=>"\xd8\xba",
+	"\xe0"=>"\xd9\x80","\xe1"=>"\xd9\x81","\xe2"=>"\xd9\x82","\xe3"=>"\xd9\x83","\xe4"=>"\xd9\x84","\xe5"=>"\xd9\x85","\xe6"=>"\xd9\x86","\xe7"=>"\xd9\x87",
+	"\xe8"=>"\xd9\x88","\xe9"=>"\xd9\x89","\xea"=>"\xd9\x8a","\xeb"=>"\xd9\x8b","\xec"=>"\xd9\x8c","\xed"=>"\xd9\x8d","\xee"=>"\xd9\x8e","\xef"=>"\xd9\x8f",
+	"\xf0"=>"\xd9\x90","\xf1"=>"\xd9\x91","\xf2"=>"\xd9\x92"
+);
+global $utf8_to_iso_8859_6;
+$utf8_to_iso_8859_6 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc2\xa4"=>"\xa4","\xd8\x8c"=>"\xac","\xc2\xad"=>"\xad","\xd8\x9b"=>"\xbb","\xd8\x9f"=>"\xbf","\xd8\xa1"=>"\xc1","\xd8\xa2"=>"\xc2",
+	"\xd8\xa3"=>"\xc3","\xd8\xa4"=>"\xc4","\xd8\xa5"=>"\xc5","\xd8\xa6"=>"\xc6","\xd8\xa7"=>"\xc7","\xd8\xa8"=>"\xc8","\xd8\xa9"=>"\xc9","\xd8\xaa"=>"\xca",
+	"\xd8\xab"=>"\xcb","\xd8\xac"=>"\xcc","\xd8\xad"=>"\xcd","\xd8\xae"=>"\xce","\xd8\xaf"=>"\xcf","\xd8\xb0"=>"\xd0","\xd8\xb1"=>"\xd1","\xd8\xb2"=>"\xd2",
+	"\xd8\xb3"=>"\xd3","\xd8\xb4"=>"\xd4","\xd8\xb5"=>"\xd5","\xd8\xb6"=>"\xd6","\xd8\xb7"=>"\xd7","\xd8\xb8"=>"\xd8","\xd8\xb9"=>"\xd9","\xd8\xba"=>"\xda",
+	"\xd9\x80"=>"\xe0","\xd9\x81"=>"\xe1","\xd9\x82"=>"\xe2","\xd9\x83"=>"\xe3","\xd9\x84"=>"\xe4","\xd9\x85"=>"\xe5","\xd9\x86"=>"\xe6","\xd9\x87"=>"\xe7",
+	"\xd9\x88"=>"\xe8","\xd9\x89"=>"\xe9","\xd9\x8a"=>"\xea","\xd9\x8b"=>"\xeb","\xd9\x8c"=>"\xec","\xd9\x8d"=>"\xed","\xd9\x8e"=>"\xee","\xd9\x8f"=>"\xef",
+	"\xd9\x90"=>"\xf0","\xd9\x91"=>"\xf1","\xd9\x92"=>"\xf2"
+);
+global $iso_8859_7_to_utf8;
+$iso_8859_7_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xe2\x80\x98","\xa2"=>"\xe2\x80\x99","\xa3"=>"\xc2\xa3","\xa6"=>"\xc2\xa6","\xa7"=>"\xc2\xa7","\xa8"=>"\xc2\xa8","\xa9"=>"\xc2\xa9",
+	"\xab"=>"\xc2\xab","\xac"=>"\xc2\xac","\xad"=>"\xc2\xad","\xaf"=>"\xe2\x80\x95","\xb0"=>"\xc2\xb0","\xb1"=>"\xc2\xb1","\xb2"=>"\xc2\xb2","\xb3"=>"\xc2\xb3",
+	"\xb4"=>"\xce\x84","\xb5"=>"\xce\x85","\xb6"=>"\xce\x86","\xb7"=>"\xc2\xb7","\xb8"=>"\xce\x88","\xb9"=>"\xce\x89","\xba"=>"\xce\x8a","\xbb"=>"\xc2\xbb",
+	"\xbc"=>"\xce\x8c","\xbd"=>"\xc2\xbd","\xbe"=>"\xce\x8e","\xbf"=>"\xce\x8f","\xc0"=>"\xce\x90","\xc1"=>"\xce\x91","\xc2"=>"\xce\x92","\xc3"=>"\xce\x93",
+	"\xc4"=>"\xce\x94","\xc5"=>"\xce\x95","\xc6"=>"\xce\x96","\xc7"=>"\xce\x97","\xc8"=>"\xce\x98","\xc9"=>"\xce\x99","\xca"=>"\xce\x9a","\xcb"=>"\xce\x9b",
+	"\xcc"=>"\xce\x9c","\xcd"=>"\xce\x9d","\xce"=>"\xce\x9e","\xcf"=>"\xce\x9f","\xd0"=>"\xce\xa0","\xd1"=>"\xce\xa1","\xd3"=>"\xce\xa3","\xd4"=>"\xce\xa4",
+	"\xd5"=>"\xce\xa5","\xd6"=>"\xce\xa6","\xd7"=>"\xce\xa7","\xd8"=>"\xce\xa8","\xd9"=>"\xce\xa9","\xda"=>"\xce\xaa","\xdb"=>"\xce\xab","\xdc"=>"\xce\xac",
+	"\xdd"=>"\xce\xad","\xde"=>"\xce\xae","\xdf"=>"\xce\xaf","\xe0"=>"\xce\xb0","\xe1"=>"\xce\xb1","\xe2"=>"\xce\xb2","\xe3"=>"\xce\xb3","\xe4"=>"\xce\xb4",
+	"\xe5"=>"\xce\xb5","\xe6"=>"\xce\xb6","\xe7"=>"\xce\xb7","\xe8"=>"\xce\xb8","\xe9"=>"\xce\xb9","\xea"=>"\xce\xba","\xeb"=>"\xce\xbb","\xec"=>"\xce\xbc",
+	"\xed"=>"\xce\xbd","\xee"=>"\xce\xbe","\xef"=>"\xce\xbf","\xf0"=>"\xcf\x80","\xf1"=>"\xcf\x81","\xf2"=>"\xcf\x82","\xf3"=>"\xcf\x83","\xf4"=>"\xcf\x84",
+	"\xf5"=>"\xcf\x85","\xf6"=>"\xcf\x86","\xf7"=>"\xcf\x87","\xf8"=>"\xcf\x88","\xf9"=>"\xcf\x89","\xfa"=>"\xcf\x8a","\xfb"=>"\xcf\x8b","\xfc"=>"\xcf\x8c",
+	"\xfd"=>"\xcf\x8d","\xfe"=>"\xcf\x8e"
+);
+global $utf8_to_iso_8859_7;
+$utf8_to_iso_8859_7 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xe2\x80\x98"=>"\xa1","\xe2\x80\x99"=>"\xa2","\xc2\xa3"=>"\xa3","\xc2\xa6"=>"\xa6","\xc2\xa7"=>"\xa7","\xc2\xa8"=>"\xa8","\xc2\xa9"=>"\xa9",
+	"\xc2\xab"=>"\xab","\xc2\xac"=>"\xac","\xc2\xad"=>"\xad","\xe2\x80\x95"=>"\xaf","\xc2\xb0"=>"\xb0","\xc2\xb1"=>"\xb1","\xc2\xb2"=>"\xb2","\xc2\xb3"=>"\xb3",
+	"\xce\x84"=>"\xb4","\xce\x85"=>"\xb5","\xce\x86"=>"\xb6","\xc2\xb7"=>"\xb7","\xce\x88"=>"\xb8","\xce\x89"=>"\xb9","\xce\x8a"=>"\xba","\xc2\xbb"=>"\xbb",
+	"\xce\x8c"=>"\xbc","\xc2\xbd"=>"\xbd","\xce\x8e"=>"\xbe","\xce\x8f"=>"\xbf","\xce\x90"=>"\xc0","\xce\x91"=>"\xc1","\xce\x92"=>"\xc2","\xce\x93"=>"\xc3",
+	"\xce\x94"=>"\xc4","\xce\x95"=>"\xc5","\xce\x96"=>"\xc6","\xce\x97"=>"\xc7","\xce\x98"=>"\xc8","\xce\x99"=>"\xc9","\xce\x9a"=>"\xca","\xce\x9b"=>"\xcb",
+	"\xce\x9c"=>"\xcc","\xce\x9d"=>"\xcd","\xce\x9e"=>"\xce","\xce\x9f"=>"\xcf","\xce\xa0"=>"\xd0","\xce\xa1"=>"\xd1","\xce\xa3"=>"\xd3","\xce\xa4"=>"\xd4",
+	"\xce\xa5"=>"\xd5","\xce\xa6"=>"\xd6","\xce\xa7"=>"\xd7","\xce\xa8"=>"\xd8","\xce\xa9"=>"\xd9","\xce\xaa"=>"\xda","\xce\xab"=>"\xdb","\xce\xac"=>"\xdc",
+	"\xce\xad"=>"\xdd","\xce\xae"=>"\xde","\xce\xaf"=>"\xdf","\xce\xb0"=>"\xe0","\xce\xb1"=>"\xe1","\xce\xb2"=>"\xe2","\xce\xb3"=>"\xe3","\xce\xb4"=>"\xe4",
+	"\xce\xb5"=>"\xe5","\xce\xb6"=>"\xe6","\xce\xb7"=>"\xe7","\xce\xb8"=>"\xe8","\xce\xb9"=>"\xe9","\xce\xba"=>"\xea","\xce\xbb"=>"\xeb","\xce\xbc"=>"\xec",
+	"\xce\xbd"=>"\xed","\xce\xbe"=>"\xee","\xce\xbf"=>"\xef","\xcf\x80"=>"\xf0","\xcf\x81"=>"\xf1","\xcf\x82"=>"\xf2","\xcf\x83"=>"\xf3","\xcf\x84"=>"\xf4",
+	"\xcf\x85"=>"\xf5","\xcf\x86"=>"\xf6","\xcf\x87"=>"\xf7","\xcf\x88"=>"\xf8","\xcf\x89"=>"\xf9","\xcf\x8a"=>"\xfa","\xcf\x8b"=>"\xfb","\xcf\x8c"=>"\xfc",
+	"\xcf\x8d"=>"\xfd","\xcf\x8e"=>"\xfe"
+);
+global $iso_8859_8_to_utf8;
+$iso_8859_8_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa2"=>"\xc2\xa2","\xa3"=>"\xc2\xa3","\xa4"=>"\xc2\xa4","\xa5"=>"\xc2\xa5","\xa6"=>"\xc2\xa6","\xa7"=>"\xc2\xa7","\xa8"=>"\xc2\xa8",
+	"\xa9"=>"\xc2\xa9","\xaa"=>"\xc3\x97","\xab"=>"\xc2\xab","\xac"=>"\xc2\xac","\xad"=>"\xc2\xad","\xae"=>"\xc2\xae","\xaf"=>"\xc2\xaf","\xb0"=>"\xc2\xb0",
+	"\xb1"=>"\xc2\xb1","\xb2"=>"\xc2\xb2","\xb3"=>"\xc2\xb3","\xb4"=>"\xc2\xb4","\xb5"=>"\xc2\xb5","\xb6"=>"\xc2\xb6","\xb7"=>"\xc2\xb7","\xb8"=>"\xc2\xb8",
+	"\xb9"=>"\xc2\xb9","\xba"=>"\xc3\xb7","\xbb"=>"\xc2\xbb","\xbc"=>"\xc2\xbc","\xbd"=>"\xc2\xbd","\xbe"=>"\xc2\xbe","\xdf"=>"\xe2\x80\x97","\xe0"=>"\xd7\x90",
+	"\xe1"=>"\xd7\x91","\xe2"=>"\xd7\x92","\xe3"=>"\xd7\x93","\xe4"=>"\xd7\x94","\xe5"=>"\xd7\x95","\xe6"=>"\xd7\x96","\xe7"=>"\xd7\x97","\xe8"=>"\xd7\x98",
+	"\xe9"=>"\xd7\x99","\xea"=>"\xd7\x9a","\xeb"=>"\xd7\x9b","\xec"=>"\xd7\x9c","\xed"=>"\xd7\x9d","\xee"=>"\xd7\x9e","\xef"=>"\xd7\x9f","\xf0"=>"\xd7\xa0",
+	"\xf1"=>"\xd7\xa1","\xf2"=>"\xd7\xa2","\xf3"=>"\xd7\xa3","\xf4"=>"\xd7\xa4","\xf5"=>"\xd7\xa5","\xf6"=>"\xd7\xa6","\xf7"=>"\xd7\xa7","\xf8"=>"\xd7\xa8",
+	"\xf9"=>"\xd7\xa9","\xfa"=>"\xd7\xaa","\xfd"=>"\xe2\x80\x8e","\xfe"=>"\xe2\x80\x8f"
+);
+global $utf8_to_iso_8859_8;
+$utf8_to_iso_8859_8 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc2\xa2"=>"\xa2","\xc2\xa3"=>"\xa3","\xc2\xa4"=>"\xa4","\xc2\xa5"=>"\xa5","\xc2\xa6"=>"\xa6","\xc2\xa7"=>"\xa7","\xc2\xa8"=>"\xa8",
+	"\xc2\xa9"=>"\xa9","\xc3\x97"=>"\xaa","\xc2\xab"=>"\xab","\xc2\xac"=>"\xac","\xc2\xad"=>"\xad","\xc2\xae"=>"\xae","\xc2\xaf"=>"\xaf","\xc2\xb0"=>"\xb0",
+	"\xc2\xb1"=>"\xb1","\xc2\xb2"=>"\xb2","\xc2\xb3"=>"\xb3","\xc2\xb4"=>"\xb4","\xc2\xb5"=>"\xb5","\xc2\xb6"=>"\xb6","\xc2\xb7"=>"\xb7","\xc2\xb8"=>"\xb8",
+	"\xc2\xb9"=>"\xb9","\xc3\xb7"=>"\xba","\xc2\xbb"=>"\xbb","\xc2\xbc"=>"\xbc","\xc2\xbd"=>"\xbd","\xc2\xbe"=>"\xbe","\xe2\x80\x97"=>"\xdf","\xd7\x90"=>"\xe0",
+	"\xd7\x91"=>"\xe1","\xd7\x92"=>"\xe2","\xd7\x93"=>"\xe3","\xd7\x94"=>"\xe4","\xd7\x95"=>"\xe5","\xd7\x96"=>"\xe6","\xd7\x97"=>"\xe7","\xd7\x98"=>"\xe8",
+	"\xd7\x99"=>"\xe9","\xd7\x9a"=>"\xea","\xd7\x9b"=>"\xeb","\xd7\x9c"=>"\xec","\xd7\x9d"=>"\xed","\xd7\x9e"=>"\xee","\xd7\x9f"=>"\xef","\xd7\xa0"=>"\xf0",
+	"\xd7\xa1"=>"\xf1","\xd7\xa2"=>"\xf2","\xd7\xa3"=>"\xf3","\xd7\xa4"=>"\xf4","\xd7\xa5"=>"\xf5","\xd7\xa6"=>"\xf6","\xd7\xa7"=>"\xf7","\xd7\xa8"=>"\xf8",
+	"\xd7\xa9"=>"\xf9","\xd7\xaa"=>"\xfa","\xe2\x80\x8e"=>"\xfd","\xe2\x80\x8f"=>"\xfe"
+);
+global $iso_8859_9_to_utf8;
+$iso_8859_9_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xc2\xa1","\xa2"=>"\xc2\xa2","\xa3"=>"\xc2\xa3","\xa4"=>"\xc2\xa4","\xa5"=>"\xc2\xa5","\xa6"=>"\xc2\xa6","\xa7"=>"\xc2\xa7",
+	"\xa8"=>"\xc2\xa8","\xa9"=>"\xc2\xa9","\xaa"=>"\xc2\xaa","\xab"=>"\xc2\xab","\xac"=>"\xc2\xac","\xad"=>"\xc2\xad","\xae"=>"\xc2\xae","\xaf"=>"\xc2\xaf",
+	"\xb0"=>"\xc2\xb0","\xb1"=>"\xc2\xb1","\xb2"=>"\xc2\xb2","\xb3"=>"\xc2\xb3","\xb4"=>"\xc2\xb4","\xb5"=>"\xc2\xb5","\xb6"=>"\xc2\xb6","\xb7"=>"\xc2\xb7",
+	"\xb8"=>"\xc2\xb8","\xb9"=>"\xc2\xb9","\xba"=>"\xc2\xba","\xbb"=>"\xc2\xbb","\xbc"=>"\xc2\xbc","\xbd"=>"\xc2\xbd","\xbe"=>"\xc2\xbe","\xbf"=>"\xc2\xbf",
+	"\xc0"=>"\xc3\x80","\xc1"=>"\xc3\x81","\xc2"=>"\xc3\x82","\xc3"=>"\xc3\x83","\xc4"=>"\xc3\x84","\xc5"=>"\xc3\x85","\xc6"=>"\xc3\x86","\xc7"=>"\xc3\x87",
+	"\xc8"=>"\xc3\x88","\xc9"=>"\xc3\x89","\xca"=>"\xc3\x8a","\xcb"=>"\xc3\x8b","\xcc"=>"\xc3\x8c","\xcd"=>"\xc3\x8d","\xce"=>"\xc3\x8e","\xcf"=>"\xc3\x8f",
+	"\xd0"=>"\xc4\x9e","\xd1"=>"\xc3\x91","\xd2"=>"\xc3\x92","\xd3"=>"\xc3\x93","\xd4"=>"\xc3\x94","\xd5"=>"\xc3\x95","\xd6"=>"\xc3\x96","\xd7"=>"\xc3\x97",
+	"\xd8"=>"\xc3\x98","\xd9"=>"\xc3\x99","\xda"=>"\xc3\x9a","\xdb"=>"\xc3\x9b","\xdc"=>"\xc3\x9c","\xdd"=>"\xc4\xb0","\xde"=>"\xc5\x9e","\xdf"=>"\xc3\x9f",
+	"\xe0"=>"\xc3\xa0","\xe1"=>"\xc3\xa1","\xe2"=>"\xc3\xa2","\xe3"=>"\xc3\xa3","\xe4"=>"\xc3\xa4","\xe5"=>"\xc3\xa5","\xe6"=>"\xc3\xa6","\xe7"=>"\xc3\xa7",
+	"\xe8"=>"\xc3\xa8","\xe9"=>"\xc3\xa9","\xea"=>"\xc3\xaa","\xeb"=>"\xc3\xab","\xec"=>"\xc3\xac","\xed"=>"\xc3\xad","\xee"=>"\xc3\xae","\xef"=>"\xc3\xaf",
+	"\xf0"=>"\xc4\x9f","\xf1"=>"\xc3\xb1","\xf2"=>"\xc3\xb2","\xf3"=>"\xc3\xb3","\xf4"=>"\xc3\xb4","\xf5"=>"\xc3\xb5","\xf6"=>"\xc3\xb6","\xf7"=>"\xc3\xb7",
+	"\xf8"=>"\xc3\xb8","\xf9"=>"\xc3\xb9","\xfa"=>"\xc3\xba","\xfb"=>"\xc3\xbb","\xfc"=>"\xc3\xbc","\xfd"=>"\xc4\xb1","\xfe"=>"\xc5\x9f","\xff"=>"\xc3\xbf"
+);
+global $utf8_to_iso_8859_9;
+$utf8_to_iso_8859_9 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc2\xa1"=>"\xa1","\xc2\xa2"=>"\xa2","\xc2\xa3"=>"\xa3","\xc2\xa4"=>"\xa4","\xc2\xa5"=>"\xa5","\xc2\xa6"=>"\xa6","\xc2\xa7"=>"\xa7",
+	"\xc2\xa8"=>"\xa8","\xc2\xa9"=>"\xa9","\xc2\xaa"=>"\xaa","\xc2\xab"=>"\xab","\xc2\xac"=>"\xac","\xc2\xad"=>"\xad","\xc2\xae"=>"\xae","\xc2\xaf"=>"\xaf",
+	"\xc2\xb0"=>"\xb0","\xc2\xb1"=>"\xb1","\xc2\xb2"=>"\xb2","\xc2\xb3"=>"\xb3","\xc2\xb4"=>"\xb4","\xc2\xb5"=>"\xb5","\xc2\xb6"=>"\xb6","\xc2\xb7"=>"\xb7",
+	"\xc2\xb8"=>"\xb8","\xc2\xb9"=>"\xb9","\xc2\xba"=>"\xba","\xc2\xbb"=>"\xbb","\xc2\xbc"=>"\xbc","\xc2\xbd"=>"\xbd","\xc2\xbe"=>"\xbe","\xc2\xbf"=>"\xbf",
+	"\xc3\x80"=>"\xc0","\xc3\x81"=>"\xc1","\xc3\x82"=>"\xc2","\xc3\x83"=>"\xc3","\xc3\x84"=>"\xc4","\xc3\x85"=>"\xc5","\xc3\x86"=>"\xc6","\xc3\x87"=>"\xc7",
+	"\xc3\x88"=>"\xc8","\xc3\x89"=>"\xc9","\xc3\x8a"=>"\xca","\xc3\x8b"=>"\xcb","\xc3\x8c"=>"\xcc","\xc3\x8d"=>"\xcd","\xc3\x8e"=>"\xce","\xc3\x8f"=>"\xcf",
+	"\xc4\x9e"=>"\xd0","\xc3\x91"=>"\xd1","\xc3\x92"=>"\xd2","\xc3\x93"=>"\xd3","\xc3\x94"=>"\xd4","\xc3\x95"=>"\xd5","\xc3\x96"=>"\xd6","\xc3\x97"=>"\xd7",
+	"\xc3\x98"=>"\xd8","\xc3\x99"=>"\xd9","\xc3\x9a"=>"\xda","\xc3\x9b"=>"\xdb","\xc3\x9c"=>"\xdc","\xc4\xb0"=>"\xdd","\xc5\x9e"=>"\xde","\xc3\x9f"=>"\xdf",
+	"\xc3\xa0"=>"\xe0","\xc3\xa1"=>"\xe1","\xc3\xa2"=>"\xe2","\xc3\xa3"=>"\xe3","\xc3\xa4"=>"\xe4","\xc3\xa5"=>"\xe5","\xc3\xa6"=>"\xe6","\xc3\xa7"=>"\xe7",
+	"\xc3\xa8"=>"\xe8","\xc3\xa9"=>"\xe9","\xc3\xaa"=>"\xea","\xc3\xab"=>"\xeb","\xc3\xac"=>"\xec","\xc3\xad"=>"\xed","\xc3\xae"=>"\xee","\xc3\xaf"=>"\xef",
+	"\xc4\x9f"=>"\xf0","\xc3\xb1"=>"\xf1","\xc3\xb2"=>"\xf2","\xc3\xb3"=>"\xf3","\xc3\xb4"=>"\xf4","\xc3\xb5"=>"\xf5","\xc3\xb6"=>"\xf6","\xc3\xb7"=>"\xf7",
+	"\xc3\xb8"=>"\xf8","\xc3\xb9"=>"\xf9","\xc3\xba"=>"\xfa","\xc3\xbb"=>"\xfb","\xc3\xbc"=>"\xfc","\xc4\xb1"=>"\xfd","\xc5\x9f"=>"\xfe","\xc3\xbf"=>"\xff"
+);
+global $iso_8859_10_to_utf8;
+$iso_8859_10_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xc4\x84","\xa2"=>"\xc4\x92","\xa3"=>"\xc4\xa2","\xa4"=>"\xc4\xaa","\xa5"=>"\xc4\xa8","\xa6"=>"\xc4\xb6","\xa7"=>"\xc2\xa7",
+	"\xa8"=>"\xc4\xbb","\xa9"=>"\xc4\x90","\xaa"=>"\xc5\xa0","\xab"=>"\xc5\xa6","\xac"=>"\xc5\xbd","\xad"=>"\xc2\xad","\xae"=>"\xc5\xaa","\xaf"=>"\xc5\x8a",
+	"\xb0"=>"\xc2\xb0","\xb1"=>"\xc4\x85","\xb2"=>"\xc4\x93","\xb3"=>"\xc4\xa3","\xb4"=>"\xc4\xab","\xb5"=>"\xc4\xa9","\xb6"=>"\xc4\xb7","\xb7"=>"\xc2\xb7",
+	"\xb8"=>"\xc4\xbc","\xb9"=>"\xc4\x91","\xba"=>"\xc5\xa1","\xbb"=>"\xc5\xa7","\xbc"=>"\xc5\xbe","\xbd"=>"\xe2\x80\x95","\xbe"=>"\xc5\xab","\xbf"=>"\xc5\x8b",
+	"\xc0"=>"\xc4\x80","\xc1"=>"\xc3\x81","\xc2"=>"\xc3\x82","\xc3"=>"\xc3\x83","\xc4"=>"\xc3\x84","\xc5"=>"\xc3\x85","\xc6"=>"\xc3\x86","\xc7"=>"\xc4\xae",
+	"\xc8"=>"\xc4\x8c","\xc9"=>"\xc3\x89","\xca"=>"\xc4\x98","\xcb"=>"\xc3\x8b","\xcc"=>"\xc4\x96","\xcd"=>"\xc3\x8d","\xce"=>"\xc3\x8e","\xcf"=>"\xc3\x8f",
+	"\xd0"=>"\xc3\x90","\xd1"=>"\xc5\x85","\xd2"=>"\xc5\x8c","\xd3"=>"\xc3\x93","\xd4"=>"\xc3\x94","\xd5"=>"\xc3\x95","\xd6"=>"\xc3\x96","\xd7"=>"\xc5\xa8",
+	"\xd8"=>"\xc3\x98","\xd9"=>"\xc5\xb2","\xda"=>"\xc3\x9a","\xdb"=>"\xc3\x9b","\xdc"=>"\xc3\x9c","\xdd"=>"\xc3\x9d","\xde"=>"\xc3\x9e","\xdf"=>"\xc3\x9f",
+	"\xe0"=>"\xc4\x81","\xe1"=>"\xc3\xa1","\xe2"=>"\xc3\xa2","\xe3"=>"\xc3\xa3","\xe4"=>"\xc3\xa4","\xe5"=>"\xc3\xa5","\xe6"=>"\xc3\xa6","\xe7"=>"\xc4\xaf",
+	"\xe8"=>"\xc4\x8d","\xe9"=>"\xc3\xa9","\xea"=>"\xc4\x99","\xeb"=>"\xc3\xab","\xec"=>"\xc4\x97","\xed"=>"\xc3\xad","\xee"=>"\xc3\xae","\xef"=>"\xc3\xaf",
+	"\xf0"=>"\xc3\xb0","\xf1"=>"\xc5\x86","\xf2"=>"\xc5\x8d","\xf3"=>"\xc3\xb3","\xf4"=>"\xc3\xb4","\xf5"=>"\xc3\xb5","\xf6"=>"\xc3\xb6","\xf7"=>"\xc5\xa9",
+	"\xf8"=>"\xc3\xb8","\xf9"=>"\xc5\xb3","\xfa"=>"\xc3\xba","\xfb"=>"\xc3\xbb","\xfc"=>"\xc3\xbc","\xfd"=>"\xc3\xbd","\xfe"=>"\xc3\xbe","\xff"=>"\xc4\xb8"
+);
+global $utf8_to_iso_8859_10;
+$utf8_to_iso_8859_10 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xc4\x84"=>"\xa1","\xc4\x92"=>"\xa2","\xc4\xa2"=>"\xa3","\xc4\xaa"=>"\xa4","\xc4\xa8"=>"\xa5","\xc4\xb6"=>"\xa6","\xc2\xa7"=>"\xa7",
+	"\xc4\xbb"=>"\xa8","\xc4\x90"=>"\xa9","\xc5\xa0"=>"\xaa","\xc5\xa6"=>"\xab","\xc5\xbd"=>"\xac","\xc2\xad"=>"\xad","\xc5\xaa"=>"\xae","\xc5\x8a"=>"\xaf",
+	"\xc2\xb0"=>"\xb0","\xc4\x85"=>"\xb1","\xc4\x93"=>"\xb2","\xc4\xa3"=>"\xb3","\xc4\xab"=>"\xb4","\xc4\xa9"=>"\xb5","\xc4\xb7"=>"\xb6","\xc2\xb7"=>"\xb7",
+	"\xc4\xbc"=>"\xb8","\xc4\x91"=>"\xb9","\xc5\xa1"=>"\xba","\xc5\xa7"=>"\xbb","\xc5\xbe"=>"\xbc","\xe2\x80\x95"=>"\xbd","\xc5\xab"=>"\xbe","\xc5\x8b"=>"\xbf",
+	"\xc4\x80"=>"\xc0","\xc3\x81"=>"\xc1","\xc3\x82"=>"\xc2","\xc3\x83"=>"\xc3","\xc3\x84"=>"\xc4","\xc3\x85"=>"\xc5","\xc3\x86"=>"\xc6","\xc4\xae"=>"\xc7",
+	"\xc4\x8c"=>"\xc8","\xc3\x89"=>"\xc9","\xc4\x98"=>"\xca","\xc3\x8b"=>"\xcb","\xc4\x96"=>"\xcc","\xc3\x8d"=>"\xcd","\xc3\x8e"=>"\xce","\xc3\x8f"=>"\xcf",
+	"\xc3\x90"=>"\xd0","\xc5\x85"=>"\xd1","\xc5\x8c"=>"\xd2","\xc3\x93"=>"\xd3","\xc3\x94"=>"\xd4","\xc3\x95"=>"\xd5","\xc3\x96"=>"\xd6","\xc5\xa8"=>"\xd7",
+	"\xc3\x98"=>"\xd8","\xc5\xb2"=>"\xd9","\xc3\x9a"=>"\xda","\xc3\x9b"=>"\xdb","\xc3\x9c"=>"\xdc","\xc3\x9d"=>"\xdd","\xc3\x9e"=>"\xde","\xc3\x9f"=>"\xdf",
+	"\xc4\x81"=>"\xe0","\xc3\xa1"=>"\xe1","\xc3\xa2"=>"\xe2","\xc3\xa3"=>"\xe3","\xc3\xa4"=>"\xe4","\xc3\xa5"=>"\xe5","\xc3\xa6"=>"\xe6","\xc4\xaf"=>"\xe7",
+	"\xc4\x8d"=>"\xe8","\xc3\xa9"=>"\xe9","\xc4\x99"=>"\xea","\xc3\xab"=>"\xeb","\xc4\x97"=>"\xec","\xc3\xad"=>"\xed","\xc3\xae"=>"\xee","\xc3\xaf"=>"\xef",
+	"\xc3\xb0"=>"\xf0","\xc5\x86"=>"\xf1","\xc5\x8d"=>"\xf2","\xc3\xb3"=>"\xf3","\xc3\xb4"=>"\xf4","\xc3\xb5"=>"\xf5","\xc3\xb6"=>"\xf6","\xc5\xa9"=>"\xf7",
+	"\xc3\xb8"=>"\xf8","\xc5\xb3"=>"\xf9","\xc3\xba"=>"\xfa","\xc3\xbb"=>"\xfb","\xc3\xbc"=>"\xfc","\xc3\xbd"=>"\xfd","\xc3\xbe"=>"\xfe","\xc4\xb8"=>"\xff"
+);
+global $iso_8859_11_to_utf8;
+$iso_8859_11_to_utf8 = array(
+	"\x80"=>"\xc2\x80","\x81"=>"\xc2\x81","\x82"=>"\xc2\x82","\x83"=>"\xc2\x83","\x84"=>"\xc2\x84","\x85"=>"\xc2\x85","\x86"=>"\xc2\x86","\x87"=>"\xc2\x87",
+	"\x88"=>"\xc2\x88","\x89"=>"\xc2\x89","\x8a"=>"\xc2\x8a","\x8b"=>"\xc2\x8b","\x8c"=>"\xc2\x8c","\x8d"=>"\xc2\x8d","\x8e"=>"\xc2\x8e","\x8f"=>"\xc2\x8f",
+	"\x90"=>"\xc2\x90","\x91"=>"\xc2\x91","\x92"=>"\xc2\x92","\x93"=>"\xc2\x93","\x94"=>"\xc2\x94","\x95"=>"\xc2\x95","\x96"=>"\xc2\x96","\x97"=>"\xc2\x97",
+	"\x98"=>"\xc2\x98","\x99"=>"\xc2\x99","\x9a"=>"\xc2\x9a","\x9b"=>"\xc2\x9b","\x9c"=>"\xc2\x9c","\x9d"=>"\xc2\x9d","\x9e"=>"\xc2\x9e","\x9f"=>"\xc2\x9f",
+	"\xa0"=>"\xc2\xa0","\xa1"=>"\xe0\xb8\x81","\xa2"=>"\xe0\xb8\x82","\xa3"=>"\xe0\xb8\x83","\xa4"=>"\xe0\xb8\x84","\xa5"=>"\xe0\xb8\x85","\xa6"=>"\xe0\xb8\x86","\xa7"=>"\xe0\xb8\x87",
+	"\xa8"=>"\xe0\xb8\x88","\xa9"=>"\xe0\xb8\x89","\xaa"=>"\xe0\xb8\x8a","\xab"=>"\xe0\xb8\x8b","\xac"=>"\xe0\xb8\x8c","\xad"=>"\xe0\xb8\x8d","\xae"=>"\xe0\xb8\x8e","\xaf"=>"\xe0\xb8\x8f",
+	"\xb0"=>"\xe0\xb8\x90","\xb1"=>"\xe0\xb8\x91","\xb2"=>"\xe0\xb8\x92","\xb3"=>"\xe0\xb8\x93","\xb4"=>"\xe0\xb8\x94","\xb5"=>"\xe0\xb8\x95","\xb6"=>"\xe0\xb8\x96","\xb7"=>"\xe0\xb8\x97",
+	"\xb8"=>"\xe0\xb8\x98","\xb9"=>"\xe0\xb8\x99","\xba"=>"\xe0\xb8\x9a","\xbb"=>"\xe0\xb8\x9b","\xbc"=>"\xe0\xb8\x9c","\xbd"=>"\xe0\xb8\x9d","\xbe"=>"\xe0\xb8\x9e","\xbf"=>"\xe0\xb8\x9f",
+	"\xc0"=>"\xe0\xb8\xa0","\xc1"=>"\xe0\xb8\xa1","\xc2"=>"\xe0\xb8\xa2","\xc3"=>"\xe0\xb8\xa3","\xc4"=>"\xe0\xb8\xa4","\xc5"=>"\xe0\xb8\xa5","\xc6"=>"\xe0\xb8\xa6","\xc7"=>"\xe0\xb8\xa7",
+	"\xc8"=>"\xe0\xb8\xa8","\xc9"=>"\xe0\xb8\xa9","\xca"=>"\xe0\xb8\xaa","\xcb"=>"\xe0\xb8\xab","\xcc"=>"\xe0\xb8\xac","\xcd"=>"\xe0\xb8\xad","\xce"=>"\xe0\xb8\xae","\xcf"=>"\xe0\xb8\xaf",
+	"\xd0"=>"\xe0\xb8\xb0","\xd1"=>"\xe0\xb8\xb1","\xd2"=>"\xe0\xb8\xb2","\xd3"=>"\xe0\xb8\xb3","\xd4"=>"\xe0\xb8\xb4","\xd5"=>"\xe0\xb8\xb5","\xd6"=>"\xe0\xb8\xb6","\xd7"=>"\xe0\xb8\xb7",
+	"\xd8"=>"\xe0\xb8\xb8","\xd9"=>"\xe0\xb8\xb9","\xda"=>"\xe0\xb8\xba","\xdf"=>"\xe0\xb8\xbf","\xe0"=>"\xe0\xb9\x80","\xe1"=>"\xe0\xb9\x81","\xe2"=>"\xe0\xb9\x82","\xe3"=>"\xe0\xb9\x83",
+	"\xe4"=>"\xe0\xb9\x84","\xe5"=>"\xe0\xb9\x85","\xe6"=>"\xe0\xb9\x86","\xe7"=>"\xe0\xb9\x87","\xe8"=>"\xe0\xb9\x88","\xe9"=>"\xe0\xb9\x89","\xea"=>"\xe0\xb9\x8a","\xeb"=>"\xe0\xb9\x8b",
+	"\xec"=>"\xe0\xb9\x8c","\xed"=>"\xe0\xb9\x8d","\xee"=>"\xe0\xb9\x8e","\xef"=>"\xe0\xb9\x8f","\xf0"=>"\xe0\xb9\x90","\xf1"=>"\xe0\xb9\x91","\xf2"=>"\xe0\xb9\x92","\xf3"=>"\xe0\xb9\x93",
+	"\xf4"=>"\xe0\xb9\x94","\xf5"=>"\xe0\xb9\x95","\xf6"=>"\xe0\xb9\x96","\xf7"=>"\xe0\xb9\x97","\xf8"=>"\xe0\xb9\x98","\xf9"=>"\xe0\xb9\x99","\xfa"=>"\xe0\xb9\x9a","\xfb"=>"\xe0\xb9\x9b"
+);
+global $utf8_to_iso_8859_11;
+$utf8_to_iso_8859_11 = array(
+	"\xc2\x80"=>"\x80","\xc2\x81"=>"\x81","\xc2\x82"=>"\x82","\xc2\x83"=>"\x83","\xc2\x84"=>"\x84","\xc2\x85"=>"\x85","\xc2\x86"=>"\x86","\xc2\x87"=>"\x87",
+	"\xc2\x88"=>"\x88","\xc2\x89"=>"\x89","\xc2\x8a"=>"\x8a","\xc2\x8b"=>"\x8b","\xc2\x8c"=>"\x8c","\xc2\x8d"=>"\x8d","\xc2\x8e"=>"\x8e","\xc2\x8f"=>"\x8f",
+	"\xc2\x90"=>"\x90","\xc2\x91"=>"\x91","\xc2\x92"=>"\x92","\xc2\x93"=>"\x93","\xc2\x94"=>"\x94","\xc2\x95"=>"\x95","\xc2\x96"=>"\x96","\xc2\x97"=>"\x97",
+	"\xc2\x98"=>"\x98","\xc2\x99"=>"\x99","\xc2\x9a"=>"\x9a","\xc2\x9b"=>"\x9b","\xc2\x9c"=>"\x9c","\xc2\x9d"=>"\x9d","\xc2\x9e"=>"\x9e","\xc2\x9f"=>"\x9f",
+	"\xc2\xa0"=>"\xa0","\xe0\xb8\x81"=>"\xa1","\xe0\xb8\x82"=>"\xa2","\xe0\xb8\x83"=>"\xa3","\xe0\xb8\x84"=>"\xa4","\xe0\xb8\x85"=>"\xa5","\xe0\xb8\x86"=>"\xa6","\xe0\xb8\x87"=>"\xa7",
+	"\xe0\xb8\x88"=>"\xa8","\xe0\xb8\x89"=>"\xa9","\xe0\xb8\x8a"=>"\xaa","\xe0\xb8\x8b"=>"\xab","\xe0\xb8\x8c"=>"\xac","\xe0\xb8\x8d"=>"\xad","\xe0\xb8\x8e"=>"\xae","\xe0\xb8\x8f"=>"\xaf",
+	"\xe0\xb8\x90"=>"\xb0","\xe0\xb8\x91"=>"\xb1","\xe0\xb8\x92"=>"\xb2","\xe0\xb8\x93"=>"\xb3","\xe0\xb8\x94"=>"\xb4","\xe0\xb8\x95"=>"\xb5","\xe0\xb8\x96"=>"\xb6","\xe0\xb8\x97"=>"\xb7",
+	"\xe0\xb8\x98"=>"\xb8","\xe0\xb8\x99"=>"\xb9","\xe0\xb8\x9a"=>"\xba","\xe0\xb8\x9b"=>"\xbb","\xe0\xb8\x9c"=>"\xbc","\xe0\xb8\x9d"=>"\xbd","\xe0\xb8\x9e"=>"\xbe","\xe0\xb8\x9f"=>"\xbf",
+	"\xe0\xb8\xa0"=>"\xc0","\xe0\xb8\xa1"=>"\xc1","\xe0\xb8\xa2"=>"\xc2","\xe0\xb8\xa3"=>"\xc3","\xe0\xb8\xa4"=>"\xc4","\xe0\xb8\xa5"=>"\xc5","\xe0\xb8\xa6"=>"\xc6","\xe0\xb8\xa7"=>"\xc7",
+	"\xe0\xb8\xa8"=>"\xc8","\xe0\xb8\xa9"=>"\xc9","\xe0\xb8\xaa"=>"\xca","\xe0\xb8\xab"=>"\xcb","\xe0\xb8\xac"=>"\xcc","\xe0\xb8\xad"=>"\xcd","\xe0\xb8\xae"=>"\xce","\xe0\xb8\xaf"=>"\xcf",
+	"\xe0\xb8\xb0"=>"\xd0","\xe0\xb8\xb1"=>"\xd1","\xe0\xb8\xb2"=>"\xd2","\xe0\xb8\xb3"=>"\xd3","\xe0\xb8\xb4"=>"\xd4","\xe0\xb8\xb5"=>"\xd5","\xe0\xb8\xb6"=>"\xd6","\xe0\xb8\xb7"=>"\xd7",
+	"\xe0\xb8\xb8"=>"\xd8","\xe0\xb8\xb9"=>"\xd9","\xe0\xb8\xba"=>"\xda","\xe0\xb8\xbf"=>"\xdf","\xe0\xb9\x80"=>"\xe0","\xe0\xb9\x81"=>"\xe1","\xe0\xb9\x82"=>"\xe2","\xe0\xb9\x83"=>"\xe3",
+	"\xe0\xb9\x84"=>"\xe4","\xe0\xb9\x85"=>"\xe5","\xe0\xb9\x86"=>"\xe6","\xe0\xb9\x87"=>"\xe7","\xe0\xb9\x88"=>"\xe8","\xe0\xb9\x89"=>"\xe9","\xe0\xb9\x8a"=>"\xea","\xe0\xb9\x8b"=>"\xeb",
+	"\xe0\xb9\x8c"=>"\xec","\xe0\xb9\x8d"=>"\xed","\xe0\xb9\x8e"=>"\xee","\xe0\xb9\x8f"=>"\xef","\xe0\xb9\x90"=>"\xf0","\xe0\xb9\x91"=>"\xf1","\xe0\xb9\x92"=>"\xf2","\xe0\xb9\x93"=>"\xf3",
+	"\xe0\xb9\x94"=>"\xf4","\xe0\xb9\x95"=>"\xf5","\xe0\xb9\x96"=>"\xf6","\xe0\xb9\x97"=>"\xf7","\xe0\xb9\x98"=>"\xf8","\xe0\xb9\x99"=>"\xf9","\xe0\xb9\x9a"=>"\xfa","\xe0\xb9\x9b"=>"\xfb"
+);
+
+// nicht enthalten &gt; &lt; &apos; &#039; &quot; &amp; &nbsp;
+global $named_entities;
+$named_entities=array(
+'&Aacute;','&aacute;','&Acirc;','&acirc;','&acute;','&AElig;','&aelig;','&Agrave;','&agrave;','&alefsym;',
+'&Alpha;','&alpha;','&and;','&ang;','&Aring;','&aring;','&asymp;','&Atilde;','&atilde;','&Auml;',
+'&auml;','&bdquo;','&Beta;','&beta;','&brvbar;','&bull;','&cap;','&Ccedil;','&ccedil;','&cedil;',
+'&cent;','&Chi;','&chi;','&circ;','&clubs;','&cong;','&copy;','&crarr;','&cup;','&curren;',
+'&Dagger;','&dagger;','&dArr;','&darr;','&deg;','&Delta;','&delta;','&diams;','&divide;','&Eacute;',
+'&eacute;','&Ecirc;','&ecirc;','&Egrave;','&egrave;','&empty;','&emsp;','&ensp;','&Epsilon;','&epsilon;',
+'&equiv;','&Eta;','&eta;','&ETH;','&eth;','&Euml;','&euml;','&euro;','&exist;','&fnof;',
+'&forall;','&frac12;','&frac14;','&frac34;','&frasl;','&Gamma;','&gamma;','&ge;','&hArr;','&harr;',
+'&hearts;','&hellip;','&Iacute;','&iacute;','&Icirc;','&icirc;','&iexcl;','&Igrave;','&igrave;','&image;',
+'&infin;','&int;','&Iota;','&iota;','&iquest;','&isin;','&Iuml;','&iuml;','&Kappa;','&kappa;',
+'&Lambda;','&lambda;','&lang;','&laquo;','&lArr;','&larr;','&lceil;','&ldquo;','&le;','&lfloor;',
+'&lowast;','&loz;','&lrm;','&lsaquo;','&lsquo;','&macr;','&mdash;','&micro;','&middot;','&minus;',
+'&Mu;','&mu;','&nabla;','&ndash;','&ne;','&ni;','&not;','&notin;','&nsub;','&Ntilde;',
+'&ntilde;','&Nu;','&nu;','&Oacute;','&oacute;','&Ocirc;','&ocirc;','&OElig;','&oelig;','&Ograve;',
+'&ograve;','&oline;','&Omega;','&omega;','&Omicron;','&omicron;','&oplus;','&or;','&ordf;','&ordm;',
+'&Oslash;','&oslash;','&Otilde;','&otilde;','&otimes;','&Ouml;','&ouml;','&para;','&part;','&permil;',
+'&perp;','&Phi;','&phi;','&Pi;','&pi;','&piv;','&plusmn;','&pound;','&Prime;','&prime;',
+'&prod;','&prop;','&Psi;','&psi;','&radic;','&rang;','&raquo;','&rArr;','&rarr;','&rceil;',
+'&rdquo;','&real;','&reg;','&rfloor;','&Rho;','&rho;','&rlm;','&rsaquo;','&rsquo;','&sbquo;',
+'&Scaron;','&scaron;','&sdot;','&sect;','&shy;','&Sigma;','&sigma;','&sigmaf;','&sim;','&spades;',
+'&sub;','&sube;','&sum;','&sup;','&sup1;','&sup2;','&sup3;','&supe;','&szlig;','&Tau;',
+'&tau;','&there4;','&Theta;','&theta;','&thetasym;','&thinsp;','&THORN;','&thorn;','&tilde;','&times;',
+'&trade;','&Uacute;','&uacute;','&uArr;','&uarr;','&Ucirc;','&ucirc;','&Ugrave;','&ugrave;','&uml;',
+'&upsih;','&Upsilon;','&upsilon;','&Uuml;','&uuml;','&weierp;','&Xi;','&xi;','&Yacute;','&yacute;',
+'&yen;','&Yuml;','&yuml;','&Zeta;','&zeta;','&zwj;','&zwnj;'
+);
+
+// nicht enthalten &gt; &lt; &apos; &#039; &quot; &amp; &nbsp;
+global $numbered_entities;
+$numbered_entities=array(
+'&#193;','&#225;','&#194;','&#226;','&#180;','&#198;','&#230;','&#192;','&#224;','&#8501;',
+'&#913;','&#945;','&#8743;','&#8736;','&#197;','&#229;','&#8776;','&#195;','&#227;','&#196;',
+'&#228;','&#8222;','&#914;','&#946;','&#166;','&#8226;','&#8745;','&#199;','&#231;','&#184;',
+'&#162;','&#935;','&#967;','&#710;','&#9827;','&#8773;','&#169;','&#8629;','&#8746;','&#164;',
+'&#8225;','&#8224;','&#8659;','&#8595;','&#176;','&#916;','&#948;','&#9830;','&#247;','&#201;',
+'&#233;','&#202;','&#234;','&#200;','&#232;','&#8709;','&#8195;','&#8194;','&#917;','&#949;',
+'&#8801;','&#919;','&#951;','&#208;','&#240;','&#203;','&#235;','&#8364;','&#8707;','&#402;',
+'&#8704;','&#189;','&#188;','&#190;','&#8260;','&#915;','&#947;','&#8805;','&#8660;','&#8596;',
+'&#9829;','&#8230;','&#205;','&#237;','&#206;','&#238;','&#161;','&#204;','&#236;','&#8465;',
+'&#8734;','&#8747;','&#921;','&#953;','&#191;','&#8712;','&#207;','&#239;','&#922;','&#954;',
+'&#923;','&#955;','&#9001;','&#171;','&#8656;','&#8592;','&#8968;','&#8220;','&#8804;','&#8970;',
+'&#8727;','&#9674;','&#8206;','&#8249;','&#8216;','&#175;','&#8212;','&#181;','&#183;','&#8722;',
+'&#924;','&#956;','&#8711;','&#8211;','&#8800;','&#8715;','&#172;','&#8713;','&#8836;','&#209;',
+'&#241;','&#925;','&#957;','&#211;','&#243;','&#212;','&#244;','&#338;','&#339;','&#210;','&#242;',
+'&#8254;','&#937;','&#969;','&#927;','&#959;','&#8853;','&#8744;','&#170;','&#186;','&#216;','&#248;',
+'&#213;','&#245;','&#8855;','&#214;','&#246;','&#182;','&#8706;','&#8240;','&#8869;','&#934;','&#966;',
+'&#928;','&#960;','&#982;','&#177;','&#163;','&#8243;','&#8242;','&#8719;','&#8733;','&#936;','&#968;',
+'&#8730;','&#9002;','&#187;','&#8658;','&#8594;','&#8969;','&#8221;','&#8476;','&#174;','&#8971;','&#929;',
+'&#961;','&#8207;','&#8250;','&#8217;','&#8218;','&#352;','&#353;','&#8901;','&#167;','&#173;','&#931;',
+'&#963;','&#962;','&#8764;','&#9824;','&#8834;','&#8838;','&#8721;','&#8835;','&#185;','&#178;','&#179;',
+'&#8839;','&#223;','&#932;','&#964;','&#8756;','&#920;','&#952;','&#977;','&#8201;','&#222;','&#254;',
+'&#732;','&#215;','&#8482;','&#218;','&#250;','&#8657;','&#8593;','&#219;','&#251;','&#217;','&#249;',
+'&#168;','&#978;','&#933;','&#965;','&#220;','&#252;','&#8472;','&#926;','&#958;','&#221;','&#253;',
+'&#165;','&#376;','&#255;','&#918;','&#950;','&#8205;','&#8204;'
+);
+
+/*
+ * The following part of this file is based on 'utf8.php' from the DokuWiki-project.
+ * (http://www.splitbrain.org/projects/dokuwiki):
+ **
+ * UTF8 helper functions
+ * @license    LGPL (http://www.gnu.org/copyleft/lesser.html)
+ * @author     Andreas Gohr <andi@splitbrain.org>
+ **
+ * modified for use with Website Baker
+ * from thorn, Jan. 2008
+ */
+
+/**
+ * UTF-8 array of common special characters
+ *
+ * This array should contain all special characters (not a letter or digit)
+ * defined in the various local charsets - it's not a complete list of non-alphanum
+ * characters in UTF-8. It's not perfect but should match most cases of special
+ * chars.
+ *
+ * The controlchars 0x00 to 0x19 are _not_ included in this array. The space 0x20 is!
+ * These chars are _not_ in the array either:  _ (0x5f), : 0x3a, . 0x2e, - 0x2d, * 0x2a
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @see    utf8_stripspecials()
+ */
+$UTF8_SPECIAL_CHARS2="\x1A\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2b\x2c\x2f\x3b".
+	"\x3c\x3d\x3e\x3f\x40\x5b\x5c\x5d\x5e\x60\x7b\x7c\x7d\x7e\x7f\xc2\x80\xc2\x81\xc2".
+	"\x82\xc2\x83\xc2\x84\xc2\x85\xc2\x86\xc2\x87\xc2\x88\xc2\x89\xc2\x8a\xc2\x8b\xc2".
+	"\x8c\xc2\x8d\xc2\x8e\xc2\x8f\xc2\x90\xc2\x91\xc2\x92\xc2\x93\xc2\x94\xc2\x95\xef".
+	"\xbf\xbd\xef\xbf\xbd\xc2\x97\xc2\x98\xc2\x99\xc2\x9a\xc2\x9b\xc2\x9c\xc2\x9d\xc2".
+	"\x9e\xc2\x9f\x20\xc2\xa1\xc2\xa2\xc2\xa3\xc2\xa4\xc2\xa5\xc2\xa6\xc2\xa7\xc2\xa8".
+	"\xc2\xa9\xc2\xaa\xc2\xab\xc2\xac\xc2\xad\xc2\xae\xc2\xaf\xc2\xb0\xc2\xb1\xc2\xb2".
+	"\xc2\xb3\xc2\xb4\xc2\xb5\xc2\xb6\xc2\xb7\xc2\xb8\xc2\xb9\xc2\xba\xc2\xbb\xc2\xbc".
+	"\xc2\xbd\xef\xbf\xbd\xef\xbf\xbd\xc2\xbf\xc3\x97\xc3\xb7\xcb\x87\xcb\x98\xcb\x99".
+	"\xcb\x9a\xcb\x9b\xcb\x9c\xcb\x9d\xcc\x80\xcc\x81\xcc\x83\xcc\x89\xcc\xa3\xce\x84".
+	"\xce\x85\xce\x87\xce\xb2\xcf\x86\xcf\x91\xcf\x92\xcf\x95\xcf\x96\xd6\xb0\xd6\xb1".
+	"\xd6\xb2\xd6\xb3\xd6\xb4\xd6\xb5\xd6\xb6\xd6\xb7\xd6\xb8\xd6\xb9\xd6\xbb\xd6\xbc".
+	"\xd6\xbd\xd6\xbe\xd6\xbf\xef\xbf\xbd\xef\xbf\xbd\xd7\x81\xd7\x82\xd7\x83\xd7\xb3".
+	"\xd7\xb4\xd8\x8c\xd8\x9b\xd8\x9f\xd9\x80\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f".
+	"\xd9\x90\xd9\x91\xd9\x92\xd9\xaa\xe0\xb8\xbf\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e".
+	"\xe2\x80\x8f\xe2\x80\x93\xe2\x80\x94\xe2\x80\x95\xe2\x80\x97\xe2\x80\x98\xe2\x80".
+	"\x99\xe2\x80\x9a\xe2\x80\x9c\xe2\x80\x9d\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2".
+	"\x80\xa0\xe2\x80\xa1\xe2\x80\xa2\xe2\x80\xa6\xe2\x80\xb0\xe2\x80\xb2\xe2\x80\xb3".
+	"\xe2\x80\xb9\xe2\x80\xba\xe2\x81\x84\xe2\x82\xa7\xe2\x82\xaa\xe2\x82\xab\xe2\x82".
+	"\xac\xe2\x84\x96\xe2\x84\x98\xe2\x84\xa2\xe2\x84\xa6\xe2\x84\xb5\xe2\x86\x90\xe2".
+	"\x86\x91\xe2\x86\x92\xe2\x86\x93\xe2\x86\x94\xe2\x86\x95\xe2\x86\xb5\xe2\x87\x90".
+	"\xe2\x87\x91\xe2\x87\x92\xe2\x87\x93\xe2\x87\x94\xe2\x88\x80\xe2\x88\x82\xe2\x88".
+	"\x83\xe2\x88\x85\xe2\x88\x86\xe2\x88\x87\xe2\x88\x88\xe2\x88\x89\xe2\x88\x8b\xe2".
+	"\x88\x8f\xe2\x88\x91\xe2\x88\x92\xe2\x88\x95\xe2\x88\x97\xe2\x88\x99\xe2\x88\x9a".
+	"\xe2\x88\x9d\xe2\x88\x9e\xe2\x88\xa0\xe2\x88\xa7\xe2\x88\xa8\xef\xbf\xbd\xef\xbf".
+	"\xbd\xe2\x88\xaa\xe2\x88\xab\xe2\x88\xb4\xe2\x88\xbc\xe2\x89\x85\xe2\x89\x88\xe2".
+	"\x89\xa0\xe2\x89\xa1\xe2\x89\xa4\xe2\x89\xa5\xe2\x8a\x82\xe2\x8a\x83\xe2\x8a\x84".
+	"\xe2\x8a\x86\xe2\x8a\x87\xe2\x8a\x95\xe2\x8a\x97\xe2\x8a\xa5\xe2\x8b\x85\xe2\x8c".
+	"\x90\xe2\x8c\xa0\xe2\x8c\xa1\xe2\x8c\xa9\xe2\x8c\xaa\xe2\x91\xa9\xe2\x94\x80\xef".
+	"\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2\x94\x8c\xe2\x94\x90\xe2\x94\x94\xe2\x94\x98".
+	"\xe2\x94\x9c\xe2\x94\xa4\xe2\x94\xac\xe2\x94\xb4\xe2\x94\xbc\xe2\x95\x90\xe2\x95".
+	"\x91\xe2\x95\x92\xe2\x95\x93\xe2\x95\x94\xe2\x95\x95\xe2\x95\x96\xe2\x95\x97\xe2".
+	"\x95\x98\xe2\x95\x99\xe2\x95\x9a\xe2\x95\x9b\xe2\x95\x9c\xe2\x95\x9d\xe2\x95\x9e".
+	"\xe2\x95\x9f\xe2\x95\xa0\xe2\x95\xa1\xe2\x95\xa2\xe2\x95\xa3\xe2\x95\xa4\xe2\x95".
+	"\xa5\xe2\x95\xa6\xe2\x95\xa7\xe2\x95\xa8\xe2\x95\xa9\xe2\x95\xaa\xe2\x95\xab\xe2".
+	"\x95\xac\xe2\x96\x80\xe2\x96\x84\xe2\x96\x88\xe2\x96\x8c\xe2\x96\x90\xe2\x96\x91".
+	"\xe2\x96\x92\xe2\x96\x93\xe2\x96\xa0\xe2\x96\xb2\xe2\x96\xbc\xe2\x97\x86\xe2\x97".
+	"\x8a\xe2\x97\x8f\xef\xbf\xbd\xef\xbf\xbd\xe2\x98\x85\xe2\x98\x8e\xe2\x98\x9b\xe2".
+	"\x98\x9e\xe2\x99\xa0\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6\xe2\x9c\x81\xe2\x9c\x82".
+	"\xe2\x9c\x83\xe2\x9c\x84\xe2\x9c\x86\xe2\x9c\x87\xe2\x9c\x88\xe2\x9c\x89\xe2\x9c".
+	"\x8c\xe2\x9c\x8d\xe2\x9c\x8e\xe2\x9c\x8f\xe2\x9c\x90\xe2\x9c\x91\xe2\x9c\x92\xe2".
+	"\x9c\x93\xe2\x9c\x94\xe2\x9c\x95\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xe2\x9c\x97".
+	"\xe2\x9c\x98\xe2\x9c\x99\xe2\x9c\x9a\xe2\x9c\x9b\xe2\x9c\x9c\xe2\x9c\x9d\xe2\x9c".
+	"\x9e\xe2\x9c\x9f\xe2\x9c\xa0\xe2\x9c\xa1\xe2\x9c\xa2\xe2\x9c\xa3\xe2\x9c\xa4\xe2".
+	"\x9c\xa5\xe2\x9c\xa6\xe2\x9c\xa7\xe2\x9c\xa9\xe2\x9c\xaa\xe2\x9c\xab\xe2\x9c\xac".
+	"\xe2\x9c\xad\xe2\x9c\xae\xe2\x9c\xaf\xe2\x9c\xb0\xe2\x9c\xb1\xe2\x9c\xb2\xe2\x9c".
+	"\xb3\xe2\x9c\xb4\xe2\x9c\xb5\xe2\x9c\xb6\xe2\x9c\xb7\xe2\x9c\xb8\xe2\x9c\xb9\xe2".
+	"\x9c\xba\xe2\x9c\xbb\xe2\x9c\xbc\xe2\x9c\xbd\xe2\x9c\xbe\xe2\x9c\xbf\xe2\x9d\x80".
+	"\xe2\x9d\x81\xe2\x9d\x82\xe2\x9d\x83\xe2\x9d\x84\xe2\x9d\x85\xe2\x9d\x86\xe2\x9d".
+	"\x87\xe2\x9d\x88\xe2\x9d\x89\xe2\x9d\x8a\xe2\x9d\x8b\xef\xbf\xbd\xef\xbf\xbd\xe2".
+	"\x9d\x8f\xe2\x9d\x90\xe2\x9d\x91\xe2\x9d\x92\xe2\x9d\x96\xe2\x9d\x98\xe2\x9d\x99".
+	"\xe2\x9d\x9a\xe2\x9d\x9b\xe2\x9d\x9c\xe2\x9d\x9d\xe2\x9d\x9e\xe2\x9d\xa1\xe2\x9d".
+	"\xa2\xe2\x9d\xa3\xe2\x9d\xa4\xe2\x9d\xa5\xe2\x9d\xa6\xe2\x9d\xa7\xe2\x9d\xbf\xe2".
+	"\x9e\x89\xe2\x9e\x93\xe2\x9e\x94\xe2\x9e\x98\xe2\x9e\x99\xe2\x9e\x9a\xef\xbf\xbd".
+	"\xef\xbf\xbd\xef\xbf\xbd\xe2\x9e\x9c\xe2\x9e\x9d\xe2\x9e\x9e\xe2\x9e\x9f\xe2\x9e".
+	"\xa0\xe2\x9e\xa1\xe2\x9e\xa2\xe2\x9e\xa3\xe2\x9e\xa4\xe2\x9e\xa5\xe2\x9e\xa6\xe2".
+	"\x9e\xa7\xe2\x9e\xa8\xe2\x9e\xa9\xe2\x9e\xaa\xe2\x9e\xab\xe2\x9e\xac\xe2\x9e\xad".
+	"\xe2\x9e\xae\xe2\x9e\xaf\xe2\x9e\xb1\xe2\x9e\xb2\xe2\x9e\xb3\xe2\x9e\xb4\xe2\x9e".
+	"\xb5\xe2\x9e\xb6\xe2\x9e\xb7\xe2\x9e\xb8\xe2\x9e\xb9\xe2\x9e\xba\xe2\x9e\xbb\xe2".
+	"\x9e\xbc\xe2\x9e\xbd\xe2\x9e\xbe\xe3\x80\x80\xe3\x80\x81\xe3\x80\x82\xe3\x80\x83".
+	"\xe3\x80\x88\xe3\x80\x89\xe3\x80\x8a\xe3\x80\x8b\xe3\x80\x8c\xe3\x80\x8d\xe3\x80".
+	"\x8e\xe3\x80\x8f\xe3\x80\x90\xe3\x80\x91\xe3\x80\x92\xe3\x80\x94\xe3\x80\x95\xe3".
+	"\x80\x96\xe3\x80\x97\xe3\x80\x98\xe3\x80\x99\xe3\x80\x9a\xe3\x80\x9b\xe3\x80\xb6".
+	"\xef\x9b\x99\xef\x9b\x9a\xef\x9b\x9b\xef\xa3\x97\xef\xa3\x98\xef\xa3\x99\xef\xa3".
+	"\x9a\xef\xa3\x9b\xef\xa3\x9c\xef\xa3\x9d\xef\xa3\x9e\xef\xa3\x9f\xef\xa3\xa0\xef".
+	"\xa3\xa1\xef\xa3\xa2\xef\xa3\xa3\xef\xa3\xa4\xef\xa3\xa5\xef\xbf\xbd\xef\xbf\xbd".
+	"\xef\xa3\xa7\xef\xa3\xa8\xef\xa3\xa9\xef\xa3\xaa\xef\xa3\xab\xef\xa3\xac\xef\xa3".
+	"\xad\xef\xa3\xae\xef\xa3\xaf\xef\xa3\xb0\xef\xa3\xb1\xef\xa3\xb2\xef\xa3\xb3\xef".
+	"\xa3\xb4\xef\xa3\xb5\xef\xa3\xb6\xef\xa3\xb7\xef\xa3\xb8\xef\xa3\xb9\xef\xa3\xba".
+	"\xef\xa3\xbb\xef\xa3\xbc\xef\xa3\xbd\xef\xa3\xbe\xef\xb9\xbc\xef\xb9\xbd\xef\xbc".
+	"\x81\xef\xbc\x82\xef\xbc\x83\xef\xbc\x84\xef\xbc\x85\xef\xbc\x86\xef\xbc\x87\xef".
+	"\xbc\x88\xef\xbc\x89\xef\xbc\x8a\xef\xbc\x8b\xef\xbc\x8c\xef\xbc\x8d\xef\xbc\x8e".
+	"\xef\xbc\x8f\xef\xbc\x9a\xef\xbc\x9b\xef\xbc\x9c\xef\xbc\x9d\xef\xbc\x9e\xef\xbc".
+	"\x9f\xef\xbc\xa0\xef\xbc\xbb\xef\xbc\xbc\xef\xbc\xbd\xef\xbc\xbe\xef\xbd\x80\xef".
+	"\xbd\x9b\xef\xbd\x9c\xef\xbd\x9d\xef\xbd\x9e\xef\xbd\x9f\xef\xbd\xa0\xef\xbd\xa1".
+	"\xef\xbd\xa2\xef\xbd\xa3\xef\xbd\xa4\xef\xbd\xa5\xef\xbf\xa0\xef\xbf\xa1\xef\xbf".
+	"\xa2\xef\xbf\xa3\xef\xbf\xa4\xef\xbf\xa5\xef\xbf\xa6\xef\xbf\xa8\xef\xbf\xa9\xef".
+	"\xbf\xaa\xef\xbf\xab\xef\xbf\xac\xef\xbf\xad\xef\xbf\xae";
+
+/**
+ * Romanization lookup table
+ *
+ * This lookup tables provides a way to transform strings written in a language
+ * different from the ones based upon latin letters into plain ASCII.
+ *
+ * Please note: this is not a scientific transliteration table. It only works
+ * oneway from nonlatin to ASCII and it works by simple character replacement
+ * only. Specialities of each language are not supported.
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Vitaly Blokhin <vitinfo@vitn.com>
+ * @link   http://www.uconv.com/translit.htm
+ * @author Bisqwit <bisqwit@iki.fi>
+ * @link   http://kanjidict.stc.cx/hiragana.php?src=2
+ * @link   http://www.translatum.gr/converter/greek-transliteration.htm
+ * @link   http://en.wikipedia.org/wiki/Royal_Thai_General_System_of_Transcription
+ * @link   http://www.btranslations.com/resources/romanization/korean.asp
+ * @author Arthit Suriyawongkul <arthit@gmail.com>
+ * @author thorn <thorn@nettest.thekk.de>
+ */
+global $UTF8_ROMANIZATION;
+$UTF8_ROMANIZATION = array(
+	// Latin
+	"\xc3\x81"=>"A","\xc3\xa1"=>"a","\xc3\x82"=>"A",
+	"\xc3\xa2"=>"a","\xc3\x86"=>"Ae","\xc3\xa6"=>"ae","\xc3\x80"=>"A",
+	"\xc3\xa0"=>"a","\xc3\x85"=>"A","\xc3\xa5"=>"a","\xc3\x83"=>"A",
+	"\xc3\xa3"=>"a","\xc3\x84"=>"Ae","\xc3\xa4"=>"ae","\xc3\x87"=>"C",
+	"\xc3\xa7"=>"c","\xc3\x89"=>"E","\xc3\xa9"=>"e","\xc3\x8a"=>"E",
+	"\xc3\xaa"=>"e","\xc3\x88"=>"E","\xc3\xa8"=>"e","\xc3\x8b"=>"E",
+	"\xc3\xab"=>"e","\xc3\x8d"=>"I","\xc3\xad"=>"i","\xc3\x8e"=>"I",
+	"\xc3\xae"=>"i","\xc3\x8c"=>"I","\xc3\xac"=>"i","\xc3\x8f"=>"I",
+	"\xc3\xaf"=>"i","\xc3\x91"=>"N","\xc3\xb1"=>"n","\xc3\x93"=>"O",
+	"\xc3\xb3"=>"o","\xc3\x94"=>"O","\xc3\xb4"=>"o","\xc5\x92"=>"Oe",
+	"\xc5\x93"=>"oe","\xc3\x92"=>"O","\xc3\xb2"=>"o","\xc3\x95"=>"O",
+	"\xc3\xb5"=>"o","\xc3\x96"=>"Oe","\xc3\xb6"=>"oe","\xc5\xa0"=>"S",
+	"\xc5\xa1"=>"s","\xc3\x9f"=>"ss","\xc3\x9a"=>"U","\xc3\xba"=>"u",
+	"\xc3\x9b"=>"U","\xc3\xbb"=>"u","\xc3\x99"=>"U","\xc3\xb9"=>"u",
+	"\xc3\x9c"=>"Ue","\xc3\xbc"=>"ue","\xc3\x9d"=>"Y","\xc3\xbd"=>"y",
+	"\xc5\xb8"=>"Y","\xc3\xbf"=>"y","\xc2\xa9"=>"(c)","\xc2\xae"=>"(r)",
+	"\xc3\x90"=>"D","\xc3\x97"=>"x","\xc3\x98"=>"O","\xc3\x9e"=>"Th",
+	"\xc3\xb0"=>"d","\xc3\xb8"=>"o","\xc3\xbe"=>"th","\x27"=>"-",
+	"\x22"=>"-","\xc4\x80"=>"A","\xc4\x81"=>"a","\xc4\x82"=>"A",
+	"\xc4\x83"=>"a","\xc4\x84"=>"A","\xc4\x85"=>"a","\xc4\x86"=>"C",
+	"\xc4\x87"=>"c","\xc4\x88"=>"C","\xc4\x89"=>"c","\xc4\x8d"=>"c",
+	"\xc4\x8c"=>"C","\xc4\x8b"=>"c","\xc4\x8a"=>"C","\xc4\x91"=>"d",
+	"\xc4\x90"=>"D","\xc4\x8f"=>"d","\xc4\x8e"=>"D","\xc4\x93"=>"e",
+	"\xc4\x92"=>"E","\xc4\x94"=>"E","\xc4\x95"=>"e","\xc4\x96"=>"E",
+	"\xc4\x97"=>"e","\xc4\x98"=>"E","\xc4\x99"=>"e","\xc4\x9a"=>"E",
+	"\xc4\x9b"=>"e","\xc4\x9c"=>"G","\xc4\x9d"=>"g","\xc4\x9e"=>"G",
+	"\xc4\x9f"=>"g","\xc4\xa0"=>"G","\xc4\xa1"=>"g","\xc4\xa2"=>"G",
+	"\xc4\xa3"=>"g","\xc4\xa4"=>"H","\xc4\xa5"=>"h","\xc4\xa6"=>"H",
+	"\xc4\xa7"=>"h","\xc4\xa8"=>"I","\xc4\xa9"=>"i","\xc4\xaa"=>"I",
+	"\xc4\xab"=>"i","\xc4\xac"=>"I","\xc4\xad"=>"i","\xc4\xae"=>"I",
+	"\xc4\xaf"=>"i","\xc4\xb0"=>"I","\xc4\xb1"=>"i","\xc4\xb2"=>"IJ",
+	"\xc4\xb3"=>"ij","\xc4\xb4"=>"J","\xc4\xb5"=>"j","\xc4\xb6"=>"K",
+	"\xc4\xb7"=>"k","\xc4\xb8"=>"k","\xc4\xb9"=>"L","\xc4\xba"=>"l",
+	"\xc4\xbb"=>"L","\xc4\xbc"=>"l","\xc4\xbd"=>"L","\xc4\xbe"=>"l",
+	"\xc4\xbf"=>"L","\xc5\x80"=>"l","\xc5\x81"=>"L","\xc5\x82"=>"l",
+	"\xc5\x83"=>"N","\xc5\x84"=>"n","\xc5\x85"=>"N","\xc5\x86"=>"n",
+	"\xc5\x87"=>"N","\xc5\x88"=>"n","\xc5\x89"=>"n","\xc5\x8a"=>"N",
+	"\xc5\x8b"=>"n","\xc5\x8c"=>"O","\xc5\x8d"=>"o","\xc5\x8e"=>"O",
+	"\xc5\x8f"=>"o","\xc5\x90"=>"O","\xc5\x91"=>"o","\xc5\x94"=>"R",
+	"\xc5\x95"=>"r","\xc5\x96"=>"R","\xc5\x97"=>"r","\xc5\x98"=>"R",
+	"\xc5\x99"=>"r","\xc5\x9a"=>"S","\xc5\x9b"=>"s","\xc5\x9c"=>"S",
+	"\xc5\x9d"=>"s","\xc5\x9e"=>"S","\xc5\x9f"=>"s","\xc5\xa2"=>"T",
+	"\xc5\xa3"=>"t","\xc5\xa4"=>"T","\xc5\xa5"=>"t","\xc5\xa6"=>"T",
+	"\xc5\xa7"=>"t","\xc5\xa8"=>"U","\xc5\xa9"=>"u","\xc5\xaa"=>"U",
+	"\xc5\xab"=>"u","\xc5\xac"=>"U","\xc5\xad"=>"u","\xc5\xae"=>"U",
+	"\xc5\xaf"=>"u","\xc5\xb0"=>"U","\xc5\xb1"=>"u","\xc5\xb2"=>"U",
+	"\xc5\xb3"=>"u","\xc5\xb4"=>"W","\xc5\xb5"=>"w","\xc5\xb6"=>"Y",
+	"\xc5\xb7"=>"y","\xc5\xb9"=>"Z","\xc5\xba"=>"z","\xc5\xbb"=>"Z",
+	"\xc5\xbc"=>"z","\xc5\xbd"=>"Z","\xc5\xbe"=>"z","\xc5\xbf"=>"s",
+	"\xef\xac\x80"=>"ff","\xef\xac\x81"=>"fi","\xef\xac\x82"=>"fl","\xef\xac\x83"=>"ffi",
+	"\xef\xac\x84"=>"ffl","\xef\xac\x85"=>"st","\xef\xac\x86"=>"st","\xc6\x80"=>"b",
+	"\xc6\x81"=>"B","\xc6\x82"=>"B","\xc6\x83"=>"b","\xc6\x84"=>"6",
+	"\xc6\x85"=>"6","\xc6\x86"=>"O","\xc6\x87"=>"C","\xc6\x88"=>"c",
+	"\xc6\x89"=>"D","\xc6\x8a"=>"D","\xc6\x8b"=>"D","\xc6\x8c"=>"d",
+	"\xc6\x8d"=>"d","\xc6\x8e"=>"E","\xc6\x8f"=>"e","\xc6\x90"=>"E",
+	"\xc6\x91"=>"F","\xc6\x92"=>"f","\xc6\x93"=>"G","\xc6\x94"=>"G",
+	"\xc6\x95"=>"hw","\xc6\x96"=>"I","\xc6\x97"=>"I","\xc6\x98"=>"K",
+	"\xc6\x99"=>"k","\xc6\x9a"=>"l","\xc6\x9b"=>"l","\xc6\x9c"=>"M",
+	"\xc6\x9d"=>"N","\xc6\x9e"=>"n","\xc6\x9f"=>"O","\xc6\xa0"=>"O",
+	"\xc6\xa1"=>"o","\xc6\xa2"=>"OI","\xc6\xa3"=>"oi","\xc6\xa4"=>"P",
+	"\xc6\xa5"=>"p","\xc6\xa6"=>"YR","\xc6\xa7"=>"2","\xc6\xa8"=>"2",
+	"\xc6\xa9"=>"ESH","\xc6\xaa"=>"esh","\xc6\xab"=>"t","\xc6\xac"=>"T",
+	"\xc6\xad"=>"t","\xc6\xae"=>"T","\xc6\xaf"=>"U","\xc6\xb0"=>"u",
+	"\xc6\xb1"=>"V","\xc6\xb2"=>"v","\xc6\xb3"=>"Y","\xc6\xb4"=>"y",
+	"\xc6\xb5"=>"Z","\xc6\xb6"=>"z","\xc6\xb7"=>"EZH","\xc6\xb8"=>"EZH",
+	"\xc6\xb9"=>"ezh","\xc6\xba"=>"ezh","\xc6\xbb"=>"2","\xc6\xbc"=>"5",
+	"\xc6\xbd"=>"5","\xc6\xbe"=>"-","\xc6\xbf"=>"w","\xc7\x80"=>"-",
+	"\xc7\x81"=>"-","\xc7\x82"=>"-","\xc7\x83"=>"-","\xc7\x84"=>"DZ",
+	"\xc7\x85"=>"DZ","\xc7\x86"=>"dz","\xc7\x87"=>"LJ","\xc7\x88"=>"Lj",
+	"\xc7\x89"=>"lj","\xc7\x8a"=>"NJ","\xc7\x8b"=>"Nj","\xc7\x8c"=>"nj",
+	"\xc7\x8d"=>"A","\xc7\x8e"=>"a","\xc7\x8f"=>"I","\xc7\x90"=>"i",
+	"\xc7\x91"=>"O","\xc7\x92"=>"o","\xc7\x93"=>"U","\xc7\x94"=>"u",
+	"\xc7\x95"=>"U","\xc7\x96"=>"u","\xc7\x97"=>"U","\xc7\x98"=>"u",
+	"\xc7\x99"=>"U","\xc7\x9a"=>"u","\xc7\x9b"=>"U","\xc7\x9c"=>"u",
+	"\xc7\x9d"=>"e","\xc7\x9e"=>"A","\xc7\x9f"=>"a","\xc7\xa0"=>"A",
+	"\xc7\xa1"=>"a","\xc7\xa2"=>"AE","\xc7\xa3"=>"ae","\xc7\xa4"=>"G",
+	"\xc7\xa5"=>"g","\xc7\xa6"=>"G","\xc7\xa7"=>"g","\xc7\xa8"=>"K",
+	"\xc7\xa9"=>"k","\xc7\xaa"=>"O","\xc7\xab"=>"o","\xc7\xac"=>"O",
+	"\xc7\xad"=>"o","\xc7\xae"=>"EZH","\xc7\xaf"=>"ezh","\xc7\xb0"=>"j",
+	"\xc7\xb1"=>"DZ","\xc7\xb2"=>"Dz","\xc7\xb3"=>"dz","\xc7\xb4"=>"G",
+	"\xc7\xb5"=>"g","\xc7\xb6"=>"HW","\xc7\xb7"=>"W","\xc7\xb8"=>"N",
+	"\xc7\xb9"=>"n","\xc7\xba"=>"A","\xc7\xbb"=>"a","\xc7\xbc"=>"AE",
+	"\xc7\xbd"=>"ae","\xc7\xbe"=>"O","\xc7\xbf"=>"o","\xc8\x80"=>"A",
+	"\xc8\x81"=>"a","\xc8\x82"=>"A","\xc8\x83"=>"a","\xc8\x84"=>"E",
+	"\xc8\x85"=>"e","\xc8\x86"=>"E","\xc8\x87"=>"e","\xc8\x88"=>"I",
+	"\xc8\x89"=>"i","\xc8\x8a"=>"I","\xc8\x8b"=>"i","\xc8\x8c"=>"O",
+	"\xc8\x8d"=>"o","\xc8\x8e"=>"O","\xc8\x8f"=>"o","\xc8\x90"=>"R",
+	"\xc8\x91"=>"r","\xc8\x92"=>"R","\xc8\x93"=>"r","\xc8\x94"=>"U",
+	"\xc8\x95"=>"u","\xc8\x96"=>"U","\xc8\x97"=>"u","\xc8\x98"=>"S",
+	"\xc8\x99"=>"s","\xc8\x9a"=>"T","\xc8\x9b"=>"t","\xc8\x9c"=>"Y",
+	"\xc8\x9d"=>"y","\xc8\x9e"=>"H","\xc8\x9f"=>"h","\xc8\xa0"=>"n",
+	"\xc8\xa1"=>"d","\xc8\xa2"=>"OU","\xc8\xa3"=>"ou","\xc8\xa4"=>"Z",
+	"\xc8\xa5"=>"z","\xc8\xa6"=>"A","\xc8\xa7"=>"a","\xc8\xa8"=>"E",
+	"\xc8\xa9"=>"e","\xc8\xaa"=>"O","\xc8\xab"=>"o","\xc8\xac"=>"O",
+	"\xc8\xad"=>"o","\xc8\xae"=>"O","\xc8\xaf"=>"o","\xc8\xb0"=>"O",
+	"\xc8\xb1"=>"o","\xc8\xb2"=>"Y","\xc8\xb3"=>"y","\xc8\xb4"=>"l",
+	"\xc8\xb5"=>"n","\xc8\xb6"=>"t","\xc8\xb7"=>"j","\xc8\xb8"=>"db",
+	"\xc8\xb9"=>"qp","\xc8\xba"=>"A","\xc8\xbb"=>"C","\xc8\xbc"=>"c",
+	"\xc8\xbd"=>"L","\xc8\xbe"=>"T","\xc8\xbf"=>"s","\xc9\x80"=>"z",
+	"\xc9\x81"=>"-","\xe1\xb8\x80"=>"A","\xe1\xb8\x81"=>"a","\xe1\xb8\x82"=>"B",
+	"\xe1\xb8\x83"=>"b","\xe1\xb8\x84"=>"B","\xe1\xb8\x85"=>"b","\xe1\xb8\x86"=>"B",
+	"\xe1\xb8\x87"=>"b","\xe1\xb8\x88"=>"C","\xe1\xb8\x89"=>"c","\xe1\xb8\x8a"=>"D",
+	"\xe1\xb8\x8b"=>"d","\xe1\xb8\x8c"=>"D","\xe1\xb8\x8d"=>"d","\xe1\xb8\x8e"=>"D",
+	"\xe1\xb8\x8f"=>"d","\xe1\xb8\x90"=>"D","\xe1\xb8\x91"=>"d","\xe1\xb8\x92"=>"D",
+	"\xe1\xb8\x93"=>"d","\xe1\xb8\x94"=>"E","\xe1\xb8\x95"=>"e","\xe1\xb8\x96"=>"E",
+	"\xe1\xb8\x97"=>"e","\xe1\xb8\x98"=>"E","\xe1\xb8\x99"=>"e","\xe1\xb8\x9a"=>"E",
+	"\xe1\xb8\x9b"=>"e","\xe1\xb8\x9c"=>"E","\xe1\xb8\x9d"=>"e","\xe1\xb8\x9e"=>"F",
+	"\xe1\xb8\x9f"=>"f","\xe1\xb8\xa0"=>"G","\xe1\xb8\xa1"=>"g","\xe1\xb8\xa2"=>"H",
+	"\xe1\xb8\xa3"=>"h","\xe1\xb8\xa4"=>"H","\xe1\xb8\xa5"=>"h","\xe1\xb8\xa6"=>"H",
+	"\xe1\xb8\xa7"=>"h","\xe1\xb8\xa8"=>"H","\xe1\xb8\xa9"=>"h","\xe1\xb8\xaa"=>"H",
+	"\xe1\xb8\xab"=>"h","\xe1\xb8\xac"=>"I","\xe1\xb8\xad"=>"i","\xe1\xb8\xae"=>"I",
+	"\xe1\xb8\xaf"=>"i","\xe1\xb8\xb0"=>"K","\xe1\xb8\xb1"=>"k","\xe1\xb8\xb2"=>"K",
+	"\xe1\xb8\xb3"=>"k","\xe1\xb8\xb4"=>"K","\xe1\xb8\xb5"=>"k","\xe1\xb8\xb6"=>"L",
+	"\xe1\xb8\xb7"=>"l","\xe1\xb8\xb8"=>"L","\xe1\xb8\xb9"=>"l","\xe1\xb8\xba"=>"L",
+	"\xe1\xb8\xbb"=>"l","\xe1\xb8\xbc"=>"L","\xe1\xb8\xbd"=>"l","\xe1\xb8\xbe"=>"M",
+	"\xe1\xb8\xbf"=>"m","\xe1\xb9\x80"=>"M","\xe1\xb9\x81"=>"m","\xe1\xb9\x82"=>"M",
+	"\xe1\xb9\x83"=>"m","\xe1\xb9\x84"=>"N","\xe1\xb9\x85"=>"n","\xe1\xb9\x86"=>"N",
+	"\xe1\xb9\x87"=>"n","\xe1\xb9\x88"=>"N","\xe1\xb9\x89"=>"n","\xe1\xb9\x8a"=>"N",
+	"\xe1\xb9\x8b"=>"n","\xe1\xb9\x8c"=>"O","\xe1\xb9\x8d"=>"o","\xe1\xb9\x8e"=>"O",
+	"\xe1\xb9\x8f"=>"o","\xe1\xb9\x90"=>"O","\xe1\xb9\x91"=>"o","\xe1\xb9\x92"=>"O",
+	"\xe1\xb9\x93"=>"o","\xe1\xb9\x94"=>"P","\xe1\xb9\x95"=>"p","\xe1\xb9\x96"=>"P",
+	"\xe1\xb9\x97"=>"p","\xe1\xb9\x98"=>"R","\xe1\xb9\x99"=>"r","\xe1\xb9\x9a"=>"R",
+	"\xe1\xb9\x9b"=>"r","\xe1\xb9\x9c"=>"R","\xe1\xb9\x9d"=>"r","\xe1\xb9\x9e"=>"R",
+	"\xe1\xb9\x9f"=>"r","\xe1\xb9\xa0"=>"S","\xe1\xb9\xa1"=>"s","\xe1\xb9\xa2"=>"S",
+	"\xe1\xb9\xa3"=>"s","\xe1\xb9\xa4"=>"S","\xe1\xb9\xa5"=>"s","\xe1\xb9\xa6"=>"S",
+	"\xe1\xb9\xa7"=>"s","\xe1\xb9\xa8"=>"S","\xe1\xb9\xa9"=>"s","\xe1\xb9\xaa"=>"T",
+	"\xe1\xb9\xab"=>"t","\xe1\xb9\xac"=>"T","\xe1\xb9\xad"=>"t","\xe1\xb9\xae"=>"T",
+	"\xe1\xb9\xaf"=>"t","\xe1\xb9\xb0"=>"T","\xe1\xb9\xb1"=>"t","\xe1\xb9\xb2"=>"U",
+	"\xe1\xb9\xb3"=>"u","\xe1\xb9\xb4"=>"U","\xe1\xb9\xb5"=>"u","\xe1\xb9\xb6"=>"U",
+	"\xe1\xb9\xb7"=>"u","\xe1\xb9\xb8"=>"U","\xe1\xb9\xb9"=>"u","\xe1\xb9\xba"=>"U",
+	"\xe1\xb9\xbb"=>"u","\xe1\xb9\xbc"=>"V","\xe1\xb9\xbd"=>"v","\xe1\xb9\xbe"=>"V",
+	"\xe1\xb9\xbf"=>"v","\xe1\xba\x80"=>"W","\xe1\xba\x81"=>"w","\xe1\xba\x82"=>"W",
+	"\xe1\xba\x83"=>"w","\xe1\xba\x84"=>"W","\xe1\xba\x85"=>"w","\xe1\xba\x86"=>"W",
+	"\xe1\xba\x87"=>"w","\xe1\xba\x88"=>"W","\xe1\xba\x89"=>"w","\xe1\xba\x8a"=>"X",
+	"\xe1\xba\x8b"=>"x","\xe1\xba\x8c"=>"X","\xe1\xba\x8d"=>"x","\xe1\xba\x8e"=>"Y",
+	"\xe1\xba\x8f"=>"y","\xe1\xba\x90"=>"Z","\xe1\xba\x91"=>"z","\xe1\xba\x92"=>"Z",
+	"\xe1\xba\x93"=>"z","\xe1\xba\x94"=>"Z","\xe1\xba\x95"=>"z","\xe1\xba\x96"=>"h",
+	"\xe1\xba\x97"=>"t","\xe1\xba\x98"=>"w","\xe1\xba\x99"=>"y","\xe1\xba\x9a"=>"a",
+	"\xe1\xba\x9b"=>"s","\xe1\xba\xa0"=>"A","\xe1\xba\xa1"=>"a","\xe1\xba\xa2"=>"A",
+	"\xe1\xba\xa3"=>"a","\xe1\xba\xa4"=>"A","\xe1\xba\xa5"=>"a","\xe1\xba\xa6"=>"A",
+	"\xe1\xba\xa7"=>"a","\xe1\xba\xa8"=>"A","\xe1\xba\xa9"=>"a","\xe1\xba\xaa"=>"A",
+	"\xe1\xba\xab"=>"a","\xe1\xba\xac"=>"A","\xe1\xba\xad"=>"a","\xe1\xba\xae"=>"A",
+	"\xe1\xba\xaf"=>"a","\xe1\xba\xb0"=>"A","\xe1\xba\xb1"=>"a","\xe1\xba\xb2"=>"A",
+	"\xe1\xba\xb3"=>"a","\xe1\xba\xb4"=>"A","\xe1\xba\xb5"=>"a","\xe1\xba\xb6"=>"A",
+	"\xe1\xba\xb7"=>"a","\xe1\xba\xb8"=>"E","\xe1\xba\xb9"=>"e","\xe1\xba\xba"=>"E",
+	"\xe1\xba\xbb"=>"e","\xe1\xba\xbc"=>"E","\xe1\xba\xbd"=>"e","\xe1\xba\xbe"=>"E",
+	"\xe1\xba\xbf"=>"e","\xe1\xbb\x80"=>"E","\xe1\xbb\x81"=>"e","\xe1\xbb\x82"=>"E",
+	"\xe1\xbb\x83"=>"e","\xe1\xbb\x84"=>"E","\xe1\xbb\x85"=>"e","\xe1\xbb\x86"=>"E",
+	"\xe1\xbb\x87"=>"e","\xe1\xbb\x88"=>"I","\xe1\xbb\x89"=>"i","\xe1\xbb\x8a"=>"I",
+	"\xe1\xbb\x8b"=>"i","\xe1\xbb\x8c"=>"O","\xe1\xbb\x8d"=>"o","\xe1\xbb\x8e"=>"O",
+	"\xe1\xbb\x8f"=>"o","\xe1\xbb\x90"=>"O","\xe1\xbb\x91"=>"o","\xe1\xbb\x92"=>"O",
+	"\xe1\xbb\x93"=>"o","\xe1\xbb\x94"=>"O","\xe1\xbb\x95"=>"o","\xe1\xbb\x96"=>"O",
+	"\xe1\xbb\x97"=>"o","\xe1\xbb\x98"=>"O","\xe1\xbb\x99"=>"o","\xe1\xbb\x9a"=>"O",
+	"\xe1\xbb\x9b"=>"o","\xe1\xbb\x9c"=>"O","\xe1\xbb\x9d"=>"o","\xe1\xbb\x9e"=>"O",
+	"\xe1\xbb\x9f"=>"o","\xe1\xbb\xa0"=>"O","\xe1\xbb\xa1"=>"o","\xe1\xbb\xa2"=>"O",
+	"\xe1\xbb\xa3"=>"o","\xe1\xbb\xa4"=>"U","\xe1\xbb\xa5"=>"u","\xe1\xbb\xa6"=>"U",
+	"\xe1\xbb\xa7"=>"u","\xe1\xbb\xa8"=>"U","\xe1\xbb\xa9"=>"u","\xe1\xbb\xaa"=>"U",
+	"\xe1\xbb\xab"=>"u","\xe1\xbb\xac"=>"U","\xe1\xbb\xad"=>"u","\xe1\xbb\xae"=>"U",
+	"\xe1\xbb\xaf"=>"u","\xe1\xbb\xb0"=>"U","\xe1\xbb\xb1"=>"u","\xe1\xbb\xb2"=>"Y",
+	"\xe1\xbb\xb3"=>"y","\xe1\xbb\xb4"=>"Y","\xe1\xbb\xb5"=>"y","\xe1\xbb\xb6"=>"Y",
+	"\xe1\xbb\xb7"=>"y","\xe1\xbb\xb8"=>"Y","\xe1\xbb\xb9"=>"y",
+	// Cyrilic
+	"\xd0\x90"=>"A","\xd0\xb0"=>"a","\xd3\x90"=>"A","\xd3\x91"=>"a",
+	"\xd3\x92"=>"A","\xd3\x93"=>"a","\xd3\x94"=>"A","\xd3\x95"=>"a",
+	"\xd3\x98"=>"A","\xd3\x99"=>"a","\xd3\x9a"=>"A","\xd3\x9b"=>"a",
+	"\xd0\x91"=>"B","\xd0\xb1"=>"b","\xd0\x92"=>"V","\xd0\xb2"=>"v",
+	"\xd0\x93"=>"G","\xd0\xb3"=>"g","\xd2\x90"=>"Gh","\xd2\x91"=>"gh",
+	"\xd2\x94"=>"G","\xd2\x95"=>"g","\xd2\x92"=>"G","\xd2\x93"=>"g",
+	"\xd3\xb6"=>"G","\xd3\xb7"=>"g","\xd0\x94"=>"D","\xd0\xb4"=>"d",
+	"\xd0\x82"=>"D","\xd1\x92"=>"d","\xd0\x83"=>"G","\xd1\x93"=>"g",
+	"\xd0\x80"=>"E","\xd1\x90"=>"e","\xd0\x95"=>"E","\xd0\xb5"=>"e",
+	"\xd0\x81"=>"Jo","\xd1\x91"=>"jo","\xd3\x96"=>"E","\xd3\x97"=>"e",
+	"\xd0\x84"=>"Je","\xd1\x94"=>"je","\xd2\xbc"=>"C","\xd2\xbd"=>"c",
+	"\xd2\xbe"=>"C","\xd2\xbf"=>"c","\xd0\x96"=>"Zh","\xd0\xb6"=>"zh",
+	"\xd3\x81"=>"Z","\xd3\x82"=>"z","\xd3\x9c"=>"Z","\xd3\x9d"=>"z",
+	"\xd2\x96"=>"Z","\xd2\x97"=>"z","\xd0\x97"=>"Z","\xd0\xb7"=>"z",
+	"\xd3\x9e"=>"Z","\xd3\x9f"=>"z","\xd0\x85"=>"Z","\xd1\x95"=>"z",
+	"\xd3\xa0"=>"Z","\xd3\xa1"=>"z","\xd0\x8d"=>"I","\xd1\x9d"=>"i",
+	"\xd0\x98"=>"I","\xd0\xb8"=>"i","\xd3\xa2"=>"I","\xd3\xa3"=>"i",
+	"\xd3\xa4"=>"I","\xd3\xa5"=>"i","\xd0\x86"=>"I","\xd1\x96"=>"i",
+	"\xd0\x87"=>"Ji","\xd1\x97"=>"ji","\xd0\x99"=>"J","\xd0\xb9"=>"j",
+	"\xd0\x88"=>"J","\xd1\x98"=>"j","\xd0\x9a"=>"K","\xd0\xba"=>"k",
+	"\xd2\x9a"=>"K","\xd2\x9b"=>"k","\xd2\x9c"=>"K","\xd2\x9d"=>"k",
+	"\xd2\x9e"=>"K","\xd2\x9f"=>"k","\xd2\xa0"=>"K","\xd2\xa1"=>"k",
+	"\xd0\x9b"=>"L","\xd0\xbb"=>"l","\xd0\x89"=>"L","\xd1\x99"=>"l",
+	"\xd0\x9c"=>"M","\xd0\xbc"=>"m","\xd0\x9d"=>"N","\xd0\xbd"=>"n",
+	"\xd0\x8a"=>"N","\xd1\x9a"=>"n","\xd2\xa4"=>"N","\xd2\xa5"=>"n",
+	"\xd2\xa2"=>"N","\xd2\xa3"=>"n","\xd0\x9e"=>"O","\xd0\xbe"=>"o",
+	"\xd3\xa6"=>"O","\xd3\xa7"=>"o","\xd3\xa8"=>"O","\xd3\xa9"=>"o",
+	"\xd3\xaa"=>"O","\xd3\xab"=>"o","\xd0\x9f"=>"P","\xd0\xbf"=>"p",
+	"\xd2\xa6"=>"P","\xd2\xa7"=>"p","\xd0\xa0"=>"R","\xd1\x80"=>"r",
+	"\xd0\xa1"=>"S","\xd1\x81"=>"s","\xd2\xaa"=>"C","\xd2\xab"=>"c",
+	"\xd0\xa2"=>"T","\xd1\x82"=>"t","\xd2\xac"=>"T","\xd2\xad"=>"t",
+	"\xd0\x8b"=>"C","\xd1\x9b"=>"c","\xd0\x8c"=>"K","\xd1\x9c"=>"k",
+	"\xd0\xa3"=>"U","\xd1\x83"=>"u","\xd0\x8e"=>"U","\xd1\x9e"=>"u",
+	"\xd3\xae"=>"U","\xd3\xaf"=>"u","\xd3\xb0"=>"U","\xd3\xb1"=>"u",
+	"\xd3\xb2"=>"U","\xd3\xb3"=>"u","\xd2\xae"=>"U","\xd2\xaf"=>"u",
+	"\xd2\xb0"=>"U","\xd2\xb1"=>"u","\xd0\xa4"=>"F","\xd1\x84"=>"f",
+	"\xd0\xa5"=>"X","\xd1\x85"=>"x","\xd2\xb2"=>"H","\xd2\xb3"=>"h",
+	"\xd2\xba"=>"H","\xd2\xbb"=>"h","\xd0\xa6"=>"C","\xd1\x86"=>"c",
+	"\xd2\xb4"=>"C","\xd2\xb5"=>"c","\xd0\xa7"=>"Ch","\xd1\x87"=>"ch",
+	"\xd3\xb4"=>"C","\xd3\xb5"=>"c","\xd2\xb6"=>"C","\xd2\xb7"=>"c",
+	"\xd2\xb8"=>"C","\xd2\xb9"=>"c","\xd0\x8f"=>"D","\xd1\x9f"=>"d",
+	"\xd0\xa8"=>"Sh","\xd1\x88"=>"sh","\xd0\xa9"=>"Sch","\xd1\x89"=>"sch",
+	"\xd0\xab"=>"Y","\xd1\x8b"=>"y","\xd3\xb8"=>"Y","\xd3\xb9"=>"y",
+	"\xd0\xad"=>"Eh","\xd1\x8d"=>"eh","\xd3\xac"=>"E","\xd3\xad"=>"e",
+	"\xd0\xae"=>"Ju","\xd1\x8e"=>"ju","\xd0\xaf"=>"Ja","\xd1\x8f"=>"ja",
+	"\xd1\xa2"=>"E","\xd1\xa3"=>"e","\xd1\xaa"=>"A","\xd1\xab"=>"a",
+	"\xd1\xb2"=>"F","\xd1\xb3"=>"f","\xd1\xb4"=>"Y","\xd1\xb5"=>"y",
+	"\xd1\xb6"=>"Y","\xd1\xb7"=>"y","\xd2\xa8"=>"O","\xd2\xa9"=>"o",
+	"\xd1\xa0"=>"O","\xd1\xa1"=>"o","\xd1\xa4"=>"E","\xd1\xa5"=>"e",
+	"\xd1\xa6"=>"U","\xd1\xa7"=>"u","\xd1\xa8"=>"U","\xd1\xa9"=>"u",
+	"\xd1\xac"=>"U","\xd1\xad"=>"u","\xd1\xae"=>"K","\xd1\xaf"=>"k",
+	"\xd1\xb0"=>"P","\xd1\xb1"=>"p","\xd1\xb8"=>"U","\xd1\xb9"=>"u",
+	"\xd1\xba"=>"O","\xd1\xbb"=>"o","\xd1\xbc"=>"O","\xd1\xbd"=>"o",
+	"\xd1\xbe"=>"O","\xd1\xbf"=>"o","\xd2\x80"=>"K","\xd2\x81"=>"k",
+	"\xd2\x8a"=>"J","\xd2\x8b"=>"j","\xd2\x8e"=>"r","\xd2\x98"=>"Z",
+	"\xd2\x99"=>"z","\xd3\x83"=>"K","\xd3\x84"=>"k","\xd3\x85"=>"L",
+	"\xd3\x86"=>"l","\xd3\x87"=>"N","\xd3\x88"=>"n","\xd3\x89"=>"N",
+	"\xd3\x8a"=>"n","\xd3\x8b"=>"C","\xd3\x8c"=>"c","\xd3\x8d"=>"M",
+	"\xd3\x8e"=>"m","\xd1\x8a"=>"","\xd0\xaa"=>"","\xd0\xac"=>"",
+	"\xd1\x8c"=>"","\xd2\x8c"=>"-","\xd3\x80"=>"-","\xcc\x81"=>"",
+	// Greek
+	"\xce\xb1\xce\xb9"=>"e","\xce\x91\xce\xb9"=>"E","\xce\xb5\xce\xb9"=>"i",
+	"\xce\x95\xce\xb9"=>"I","\xce\xbf\xce\xb9"=>"i","\xce\x9f\xce\xb9"=>"I","\xce\xbf\xcf\x85"=>"ou",
+	"\xce\x9f\xcf\x85"=>"Ou","\xce\xb1\xcf\x85"=>"av","\xce\x91\xcf\x85"=>"Av","\xce\xb5\xcf\x85"=>"ev",
+	"\xce\x95\xcf\x85"=>"Ev","\xce\xb7\xcf\x85"=>"iv","\xce\x97\xcf\x85"=>"Iv","\xce\xbc\xcf\x80"=>"mp",
+	"\xce\x9c\xcf\x80"=>"B","\xce\xbd\xcf\x84"=>"nt","\xce\x9d\xcf\x84"=>"D","\xcf\x84\xce\xb6"=>"tz",
+	"\xce\xa4\xce\xb6"=>"Tz","\xce\xb3\xce\xba"=>"ng","\xce\x93\xce\xba"=>"G","\xce\xb3\xce\xb3"=>"ng",
+	"\xce\x93\xce\xb3"=>"Ng","\xce\x86"=>"A","\xce\x88"=>"E","\xce\x89"=>"I",
+	"\xce\x8a"=>"I","\xce\x8c"=>"O","\xce\x8e"=>"Y","\xce\x8f"=>"O",
+	"\xce\x90"=>"i","\xce\x91"=>"A","\xce\x92"=>"V","\xce\x93"=>"G",
+	"\xce\x94"=>"D","\xce\x95"=>"E","\xce\x96"=>"Z","\xce\x97"=>"I",
+	"\xce\x98"=>"Th","\xce\x99"=>"I","\xce\x9a"=>"K","\xce\x9b"=>"L",
+	"\xce\x9c"=>"M","\xce\x9d"=>"N","\xce\x9e"=>"X","\xce\x9f"=>"O",
+	"\xce\xa0"=>"P","\xce\xa1"=>"R","\xce\xa3"=>"S","\xce\xa4"=>"T",
+	"\xce\xa5"=>"Y","\xce\xa6"=>"F","\xce\xa7"=>"Ch","\xce\xa8"=>"Ps",
+	"\xce\xa9"=>"O","\xce\xaa"=>"I","\xce\xab"=>"Y","\xce\xac"=>"a",
+	"\xce\xad"=>"e","\xce\xae"=>"i","\xce\xaf"=>"i","\xce\xb0"=>"y",
+	"\xce\xb1"=>"a","\xce\xb2"=>"v","\xce\xb3"=>"g","\xce\xb4"=>"d",
+	"\xce\xb5"=>"e","\xce\xb6"=>"z","\xce\xb7"=>"i","\xce\xb8"=>"th",
+	"\xce\xb9"=>"i","\xce\xba"=>"k","\xce\xbb"=>"l","\xce\xbc"=>"m",
+	"\xce\xbd"=>"n","\xce\xbe"=>"x","\xce\xbf"=>"o","\xcf\x80"=>"p",
+	"\xcf\x81"=>"r","\xcf\x82"=>"s","\xcf\x83"=>"s","\xcf\x84"=>"t",
+	"\xcf\x85"=>"y","\xcf\x86"=>"f","\xcf\x87"=>"ch","\xcf\x88"=>"ps",
+	"\xcf\x89"=>"o","\xcf\x8a"=>"i","\xcf\x8b"=>"y","\xcf\x8c"=>"o",
+	"\xcf\x8d"=>"y","\xcf\x8e"=>"o","\xcf\x90"=>"b","\xcf\x91"=>"th",
+	"\xcf\x92"=>"y","\xcf\x93"=>"y","\xcf\x94"=>"y",
+	// Georgian
+	"\xe1\x83\x90"=>"a","\xe1\x83\x91"=>"b","\xe1\x83\x92"=>"g","\xe1\x83\x93"=>"d",
+	"\xe1\x83\x94"=>"e","\xe1\x83\x95"=>"v","\xe1\x83\x96"=>"z","\xe1\x83\x97"=>"th",
+	"\xe1\x83\x98"=>"i","\xe1\x83\x99"=>"p","\xe1\x83\x9a"=>"l","\xe1\x83\x9b"=>"m",
+	"\xe1\x83\x9c"=>"n","\xe1\x83\x9d"=>"o","\xe1\x83\x9e"=>"p","\xe1\x83\x9f"=>"zh",
+	"\xe1\x83\xa0"=>"r","\xe1\x83\xa1"=>"s","\xe1\x83\xa2"=>"t","\xe1\x83\xa3"=>"u",
+	"\xe1\x83\xa4"=>"ph","\xe1\x83\xa5"=>"kh","\xe1\x83\xa6"=>"gh","\xe1\x83\xa7"=>"q",
+	"\xe1\x83\xa8"=>"sh","\xe1\x83\xa9"=>"ch","\xe1\x83\xaa"=>"c","\xe1\x83\xab"=>"dh",
+	"\xe1\x83\xac"=>"w","\xe1\x83\xad"=>"j","\xe1\x83\xae"=>"x","\xe1\x83\xaf"=>"jh",
+	"\xe1\x83\xb0"=>"xh",
+	// Sanskrit
+	"\xe0\xa4\x85\xe0\xa4\x82"=>"amh","\xe0\xa4\x85\xe0\xa4\x83"=>"aq","\xe0\xa4\x95"=>"k","\xe0\xa4\x96"=>"kh",
+	"\xe0\xa4\x85"=>"a","\xe0\xa4\x86"=>"ah",
+	"\xe0\xa4\x87"=>"i","\xe0\xa4\x88"=>"ih","\xe0\xa4\x89"=>"u","\xe0\xa4\x8a"=>"uh",
+	"\xe0\xa4\x8b"=>"ry","\xe0\xa5\xa0"=>"ryh","\xe0\xa4\x8c"=>"ly","\xe0\xa5\xa1"=>"lyh",
+	"\xe0\xa4\x8f"=>"e","\xe0\xa4\x90"=>"ay","\xe0\xa4\x93"=>"o","\xe0\xa4\x94"=>"aw",
+	"\xe0\xa4\x97"=>"g","\xe0\xa4\x98"=>"gh","\xe0\xa4\x99"=>"nh","\xe0\xa4\x9a"=>"c",
+	"\xe0\xa4\x9b"=>"ch","\xe0\xa4\x9c"=>"j","\xe0\xa4\x9d"=>"jh","\xe0\xa4\x9e"=>"ny",
+	"\xe0\xa4\x9f"=>"tq","\xe0\xa4\xa0"=>"tqh","\xe0\xa4\xa1"=>"dq","\xe0\xa4\xa2"=>"dqh",
+	"\xe0\xa4\xa3"=>"nq","\xe0\xa4\xa4"=>"t","\xe0\xa4\xa5"=>"th","\xe0\xa4\xa6"=>"d",
+	"\xe0\xa4\xa7"=>"dh","\xe0\xa4\xa8"=>"n","\xe0\xa4\xaa"=>"p","\xe0\xa4\xab"=>"ph",
+	"\xe0\xa4\xac"=>"b","\xe0\xa4\xad"=>"bh","\xe0\xa4\xae"=>"m","\xe0\xa4\xaf"=>"z",
+	"\xe0\xa4\xb0"=>"r","\xe0\xa4\xb2"=>"l","\xe0\xa4\xb5"=>"v","\xe0\xa4\xb6"=>"sh",
+	"\xe0\xa4\xb7"=>"sqh","\xe0\xa4\xb8"=>"s","\xe0\xa4\xb9"=>"x",
+	// Hebrew - thanks to forum-member iti
+	"\xd7\x90\xd7\x95"=>"ao", "\xd7\x91\xd7\x95"=>"bo",
+   "\xd7\x92\xd7\x95"=>"go", "\xd7\x93\xd7\x95"=>"do",
+   "\xd7\x94\xd7\x95"=>"ho", "\xd7\x95\xd7\x95"=>"v",
+   "\xd7\x96\xd7\x95"=>"zo", "\xd7\x97\xd7\x95"=>"cho",
+   "\xd7\x98\xd7\x95"=>"to", "\xd7\x95\xd7\x99\xd7\x99"=>"vyi",
+   "\xd7\x99\xd7\x95"=>"io", "\xd7\x9a\xd7\x95"=>"kho",
+   "\xd7\x9b\xd7\x95"=>"ko", "\xd7\x9c\xd7\x95"=>"lo",
+   "\xd7\x9e\xd7\x95"=>"mo", "\xd7\xa0\xd7\x95"=>"no",
+   "\xd7\xa1\xd7\x95"=>"so", "\xd7\xa2\xd7\x95"=>"ao",
+   "\xd7\xa4\xd7\x95"=>"po", "\xd7\xa6\xd7\x95"=>"tzo",
+   "\xd7\xa7\xd7\x95"=>"qo", "\xd7\xa8\xd7\x95"=>"ro",
+   "\xd7\xa9\xd7\x95"=>"sho", "\xd7\xaa\xd7\x95"=>"to",
+   "\xd7\x99\xd7\x99"=>"yi", "\xd7\x99\xd7\x95" =>"yo",
+   "\xd7\x90"=>"a", "\xd7\x91"=>"b", "\xd7\x92"=>"g", "\xd7\x93"=>"d",
+   "\xd7\x94"=>"h", "\xd7\x95"=>"v", "\xd7\x96"=>"z", "\xd7\x97"=>"ch",
+   "\xd7\x98"=>"t", "\xd7\x99"=>"i", "\xd7\x9a"=>"kh", "\xd7\x9b"=>"k",
+   "\xd7\x9c"=>"l", "\xd7\x9d"=>"m", "\xd7\x9e"=>"m", "\xd7\x9f"=>"n",
+   "\xd7\xa0"=>"n", "\xd7\xa1"=>"s", "\xd7\xa2"=>"a", "\xd7\xa3"=>"f",
+   "\xd7\xa4"=>"p", "\xd7\xa5"=>"tz", "\xd7\xa6"=>"tz", "\xd7\xa7"=>"q",
+   "\xd7\xa8"=>"r", "\xd7\xa9"=>"sh", "\xd7\xaa"=>"t",
+	// Arabic
+	"\xd8\xa7"=>"a","\xd8\xa8"=>"b","\xd8\xaa"=>"t","\xd8\xab"=>"th",
+	"\xd8\xac"=>"g","\xd8\xad"=>"xh","\xd8\xae"=>"x","\xd8\xaf"=>"d",
+	"\xd8\xb0"=>"dh","\xd8\xb1"=>"r","\xd8\xb2"=>"z","\xd8\xb3"=>"s",
+	"\xd8\xb4"=>"sh","\xd8\xb5"=>"s_","\xd8\xb6"=>"d_","\xd8\xb7"=>"t_",
+	"\xd8\xb8"=>"z_","\xd8\xb9"=>"y","\xd8\xba"=>"gh","\xd9\x81"=>"f",
+	"\xd9\x82"=>"q","\xd9\x83"=>"k","\xd9\x84"=>"l","\xd9\x85"=>"m",
+	"\xd9\x86"=>"n","\xd9\x87"=>"x_","\xd9\x88"=>"u","\xd9\x8a"=>"i",
+	// Japanese hiragana
+	"\xe3\x81\xb3\xe3\x82\x83"=>"bya","\xe3\x81\xb3\xe3\x81\x87"=>"bye","\xe3\x81\xb3\xe3\x81\x83"=>"byi",
+	"\xe3\x81\xb3\xe3\x82\x87"=>"byo","\xe3\x81\xb3\xe3\x82\x85"=>"byu","\xe3\x81\xa1\xe3\x82\x83"=>"tya","\xe3\x81\xa1\xe3\x81\x87"=>"tye",
+	"\xe3\x81\xa1\xe3\x82\x87"=>"tyo","\xe3\x81\xa1\xe3\x82\x85"=>"tyu","\xe3\x81\xa1\xe3\x81\x83"=>"tyi",
+	"\xe3\x81\xa7\xe3\x82\x83"=>"dha","\xe3\x81\xa7\xe3\x81\x87"=>"dhe","\xe3\x81\xa7\xe3\x81\x83"=>"dhi","\xe3\x81\xa7\xe3\x82\x87"=>"dho",
+	"\xe3\x81\xa7\xe3\x82\x85"=>"dhu","\xe3\x81\xa9\xe3\x81\x81"=>"dwa","\xe3\x81\xa9\xe3\x81\x87"=>"dwe","\xe3\x81\xa9\xe3\x81\x83"=>"dwi",
+	"\xe3\x81\xa9\xe3\x81\x89"=>"dwo","\xe3\x81\xa9\xe3\x81\x85"=>"dwu","\xe3\x81\xa2\xe3\x82\x83"=>"dya","\xe3\x81\xa2\xe3\x81\x87"=>"dye",
+	"\xe3\x81\xa2\xe3\x81\x83"=>"dyi","\xe3\x81\xa2\xe3\x82\x87"=>"dyo","\xe3\x81\xa2\xe3\x82\x85"=>"dyu","\xe3\x81\xa2"=>"di",
+	"\xe3\x81\xb5\xe3\x81\x81"=>"fa","\xe3\x81\xb5\xe3\x81\x87"=>"fe","\xe3\x81\xb5\xe3\x81\x83"=>"fi","\xe3\x81\xb5\xe3\x81\x89"=>"fo",
+	"\xe3\x81\xb5\xe3\x81\x85"=>"fwu","\xe3\x81\xb5\xe3\x82\x83"=>"fya","\xe3\x81\xb5\xe3\x82\x87"=>"fyo","\xe3\x81\xb5\xe3\x82\x85"=>"fyu",
+	"\xe3\x81\x8e\xe3\x82\x83"=>"gya","\xe3\x81\x8e\xe3\x81\x87"=>"gye","\xe3\x81\x8e\xe3\x81\x83"=>"gyi","\xe3\x81\x8e\xe3\x82\x87"=>"gyo",
+	"\xe3\x81\x8e\xe3\x82\x85"=>"gyu","\xe3\x81\xb2\xe3\x82\x83"=>"hya","\xe3\x81\xb2\xe3\x81\x87"=>"hye","\xe3\x81\xb2\xe3\x81\x83"=>"hyi",
+	"\xe3\x81\xb2\xe3\x82\x87"=>"hyo","\xe3\x81\xb2\xe3\x82\x85"=>"hyu","\xe3\x81\x98\xe3\x82\x83"=>"ja","\xe3\x81\x98\xe3\x81\x87"=>"je",
+	"\xe3\x81\x98\xe3\x81\x83"=>"zyi","\xe3\x81\x98\xe3\x82\x87"=>"jo","\xe3\x81\x98\xe3\x82\x85"=>"ju","\xe3\x81\x8d\xe3\x82\x83"=>"kya",
+	"\xe3\x81\x8d\xe3\x81\x87"=>"kye","\xe3\x81\x8d\xe3\x81\x83"=>"kyi","\xe3\x81\x8d\xe3\x82\x87"=>"kyo","\xe3\x81\x8d\xe3\x82\x85"=>"kyu",
+	"\xe3\x82\x8a\xe3\x82\x83"=>"rya","\xe3\x82\x8a\xe3\x81\x87"=>"rye","\xe3\x82\x8a\xe3\x81\x83"=>"ryi","\xe3\x82\x8a\xe3\x82\x87"=>"ryo",
+	"\xe3\x82\x8a\xe3\x82\x85"=>"ryu","\xe3\x81\xbf\xe3\x82\x83"=>"mya","\xe3\x81\xbf\xe3\x81\x87"=>"mye","\xe3\x81\xbf\xe3\x81\x83"=>"myi",
+	"\xe3\x81\xbf\xe3\x82\x87"=>"myo","\xe3\x81\xbf\xe3\x82\x85"=>"myu","\xe3\x81\xab\xe3\x82\x83"=>"nya",
+	"\xe3\x81\xab\xe3\x81\x87"=>"nye","\xe3\x81\xab\xe3\x81\x83"=>"nyi","\xe3\x81\xab\xe3\x82\x87"=>"nyo","\xe3\x81\xab\xe3\x82\x85"=>"nyu",
+	"\xe3\x81\xb4\xe3\x82\x83"=>"pya","\xe3\x81\xb4\xe3\x81\x87"=>"pye","\xe3\x81\xb4\xe3\x81\x83"=>"pyi","\xe3\x81\xb4\xe3\x82\x87"=>"pyo",
+	"\xe3\x81\xb4\xe3\x82\x85"=>"pyu","\xe3\x81\x97\xe3\x82\x83"=>"sya","\xe3\x81\x97\xe3\x81\x87"=>"sye","\xe3\x81\x97"=>"si",
+	"\xe3\x81\x97\xe3\x82\x87"=>"syo","\xe3\x81\x97\xe3\x82\x85"=>"syu","\xe3\x81\x99\xe3\x81\x81"=>"swa","\xe3\x81\x99\xe3\x81\x87"=>"swe",
+	"\xe3\x81\x99\xe3\x81\x83"=>"swi","\xe3\x81\x99\xe3\x81\x89"=>"swo","\xe3\x81\x99\xe3\x81\x85"=>"swu","\xe3\x81\x97\xe3\x81\x83"=>"syi",
+	"\xe3\x81\xa6\xe3\x82\x83"=>"tha","\xe3\x81\xa6\xe3\x81\x87"=>"the","\xe3\x81\xa6\xe3\x81\x83"=>"thi","\xe3\x81\xa6\xe3\x82\x87"=>"tho",
+	"\xe3\x81\xa6\xe3\x82\x85"=>"thu","\xe3\x81\xa4\xe3\x82\x83"=>"tsa","\xe3\x81\xa4\xe3\x81\x87"=>"tse","\xe3\x81\xa4\xe3\x81\x83"=>"tsi",
+	"\xe3\x81\xa4\xe3\x82\x87"=>"tso","\xe3\x81\xa4"=>"tu","\xe3\x81\xa8\xe3\x81\x81"=>"twa","\xe3\x81\xa8\xe3\x81\x87"=>"twe",
+	"\xe3\x81\xa8\xe3\x81\x83"=>"twi","\xe3\x81\xa8\xe3\x81\x89"=>"two","\xe3\x81\xa8\xe3\x81\x85"=>"twu","\xe3\x83\xb4\xe3\x82\x83"=>"vya",
+	"\xe3\x83\xb4\xe3\x81\x87"=>"ve","\xe3\x83\xb4\xe3\x81\x83"=>"vi","\xe3\x83\xb4\xe3\x82\x87"=>"vyo","\xe3\x83\xb4\xe3\x82\x85"=>"vyu",
+	"\xe3\x81\x86\xe3\x81\x81"=>"wha","\xe3\x81\x86\xe3\x81\x87"=>"we","\xe3\x81\x86\xe3\x81\x83"=>"wi","\xe3\x81\x86\xe3\x81\x89"=>"who",
+	"\xe3\x81\x86\xe3\x81\x85"=>"whu","\xe3\x82\x91"=>"wye","\xe3\x82\x90"=>"wyi","\xe3\x81\x84\xe3\x81\x87"=>"ye",
+	"\xe3\x82\x93"=>"n","\xe3\x81\x82"=>"a",
+	"\xe3\x81\x88"=>"e","\xe3\x81\x84"=>"yi","\xe3\x81\x8a"=>"o","\xe3\x81\x86"=>"u",
+	"\xe3\x81\xb0"=>"ba","\xe3\x81\xb9"=>"be","\xe3\x81\xb3"=>"bi","\xe3\x81\xbc"=>"bo",
+	"\xe3\x81\xb6"=>"bu","\xe3\x81\xa0"=>"da","\xe3\x81\xa7"=>"de","\xe3\x81\xa9"=>"do",
+	"\xe3\x81\xa5"=>"du","\xe3\x81\xb5"=>"hu","\xe3\x81\x8c"=>"ga","\xe3\x81\x92"=>"ge",
+	"\xe3\x81\x8e"=>"gi","\xe3\x81\x94"=>"go","\xe3\x81\x90"=>"gu","\xe3\x81\xaf"=>"ha",
+	"\xe3\x81\xb8"=>"he","\xe3\x81\xb2"=>"hi","\xe3\x81\xbb"=>"ho","\xe3\x81\x98"=>"zi",
+	"\xe3\x81\x8b"=>"ka","\xe3\x81\x91"=>"ke","\xe3\x81\x8d"=>"ki","\xe3\x81\x93"=>"ko",
+	"\xe3\x81\x8f"=>"ku","\xe3\x82\x89"=>"ra","\xe3\x82\x8c"=>"re","\xe3\x82\x8a"=>"ri",
+	"\xe3\x82\x8d"=>"ro","\xe3\x82\x8b"=>"ru","\xe3\x81\xbe"=>"ma","\xe3\x82\x81"=>"me",
+	"\xe3\x81\xbf"=>"mi","\xe3\x82\x82"=>"mo","\xe3\x82\x80"=>"mu","\xe3\x81\xaa"=>"na",
+	"\xe3\x81\xad"=>"ne","\xe3\x81\xab"=>"ni","\xe3\x81\xae"=>"no","\xe3\x81\xac"=>"nu",
+	"\xe3\x81\xb1"=>"pa","\xe3\x81\xba"=>"pe","\xe3\x81\xb4"=>"pi","\xe3\x81\xbd"=>"po",
+	"\xe3\x81\xb7"=>"pu","\xe3\x81\x95"=>"sa","\xe3\x81\x9b"=>"se","\xe3\x81\x9d"=>"so",
+	"\xe3\x81\x99"=>"su","\xe3\x81\x9f"=>"ta","\xe3\x81\xa6"=>"te","\xe3\x81\xa8"=>"to","\xe3\x81\xa1"=>"ti",
+	"\xe3\x83\xb4\xe3\x81\x81"=>"va","\xe3\x83\xb4\xe3\x81\x89"=>"vo","\xe3\x83\xb4"=>"vu","\xe3\x82\x8f"=>"wa",
+	"\xe3\x82\x92"=>"wo","\xe3\x82\x84"=>"ya","\xe3\x82\x88"=>"yo",
+	"\xe3\x82\x86"=>"yu","\xe3\x81\x96"=>"za","\xe3\x81\x9c"=>"ze","\xe3\x81\x9e"=>"zo",
+	"\xe3\x81\x9a"=>"zu",
+	// Japanese katakana
+	"\xe3\x83\x93\xe3\x83\xa3"=>"bya","\xe3\x83\x93\xe3\x82\xa7"=>"bye",
+	"\xe3\x83\x93\xe3\x82\xa3"=>"byi","\xe3\x83\x93\xe3\x83\xa7"=>"byo","\xe3\x83\x93\xe3\x83\xa5"=>"byu","\xe3\x83\x81\xe3\x83\xa3"=>"tya",
+	"\xe3\x83\x81\xe3\x82\xa7"=>"tye","\xe3\x83\x81"=>"ti","\xe3\x83\x81\xe3\x83\xa7"=>"tyo","\xe3\x83\x81\xe3\x83\xa5"=>"tyu",
+	"\xe3\x83\x81\xe3\x82\xa3"=>"tyi","\xe3\x83\x87\xe3\x83\xa3"=>"dha","\xe3\x83\x87\xe3\x82\xa7"=>"dhe","\xe3\x83\x87\xe3\x82\xa3"=>"dhi",
+	"\xe3\x83\x87\xe3\x83\xa7"=>"dho","\xe3\x83\x87\xe3\x83\xa5"=>"dhu","\xe3\x83\x89\xe3\x82\xa1"=>"dwa","\xe3\x83\x89\xe3\x82\xa7"=>"dwe",
+	"\xe3\x83\x89\xe3\x82\xa3"=>"dwi","\xe3\x83\x89\xe3\x82\xa9"=>"dwo","\xe3\x83\x89\xe3\x82\xa5"=>"dwu","\xe3\x83\x82\xe3\x83\xa3"=>"dya",
+	"\xe3\x83\x82\xe3\x82\xa7"=>"dye","\xe3\x83\x82\xe3\x82\xa3"=>"dyi","\xe3\x83\x82\xe3\x83\xa7"=>"dyo","\xe3\x83\x82\xe3\x83\xa5"=>"dyu",
+	"\xe3\x83\x95\xe3\x82\xa1"=>"fa","\xe3\x83\x95\xe3\x82\xa7"=>"fe","\xe3\x83\x95\xe3\x82\xa3"=>"fi",
+	"\xe3\x83\x95\xe3\x82\xa9"=>"fo","\xe3\x83\x95\xe3\x82\xa5"=>"fwu","\xe3\x83\x95\xe3\x83\xa3"=>"fya","\xe3\x83\x95\xe3\x83\xa7"=>"fyo",
+	"\xe3\x83\x95\xe3\x83\xa5"=>"fyu","\xe3\x82\xae\xe3\x83\xa3"=>"gya","\xe3\x82\xae\xe3\x82\xa7"=>"gye","\xe3\x82\xae\xe3\x82\xa3"=>"gyi",
+	"\xe3\x82\xae\xe3\x83\xa7"=>"gyo","\xe3\x82\xae\xe3\x83\xa5"=>"gyu","\xe3\x83\x92\xe3\x83\xa3"=>"hya","\xe3\x83\x92\xe3\x82\xa7"=>"hye",
+	"\xe3\x83\x92\xe3\x82\xa3"=>"hyi","\xe3\x83\x92\xe3\x83\xa7"=>"hyo","\xe3\x83\x92\xe3\x83\xa5"=>"hyu","\xe3\x82\xb8\xe3\x83\xa3"=>"ja",
+	"\xe3\x82\xb8\xe3\x82\xa7"=>"je","\xe3\x82\xb8\xe3\x82\xa3"=>"zyi","\xe3\x82\xb8\xe3\x83\xa7"=>"jo","\xe3\x82\xb8\xe3\x83\xa5"=>"ju",
+	"\xe3\x82\xad\xe3\x83\xa3"=>"kya","\xe3\x82\xad\xe3\x82\xa7"=>"kye","\xe3\x82\xad\xe3\x82\xa3"=>"kyi","\xe3\x82\xad\xe3\x83\xa7"=>"kyo",
+	"\xe3\x82\xad\xe3\x83\xa5"=>"kyu","\xe3\x83\xaa\xe3\x83\xa3"=>"rya","\xe3\x83\xaa\xe3\x82\xa7"=>"rye","\xe3\x83\xaa\xe3\x82\xa3"=>"ryi",
+	"\xe3\x83\xaa\xe3\x83\xa7"=>"ryo","\xe3\x83\xaa\xe3\x83\xa5"=>"ryu","\xe3\x83\x9f\xe3\x83\xa3"=>"mya","\xe3\x83\x9f\xe3\x82\xa7"=>"mye",
+	"\xe3\x83\x9f\xe3\x82\xa3"=>"myi","\xe3\x83\x9f\xe3\x83\xa7"=>"myo","\xe3\x83\x9f\xe3\x83\xa5"=>"myu","\xe3\x83\xb3"=>"n",
+	"\xe3\x83\x8b\xe3\x83\xa3"=>"nya","\xe3\x83\x8b\xe3\x82\xa7"=>"nye","\xe3\x83\x8b\xe3\x82\xa3"=>"nyi","\xe3\x83\x8b\xe3\x83\xa7"=>"nyo",
+	"\xe3\x83\x8b\xe3\x83\xa5"=>"nyu","\xe3\x83\x94\xe3\x83\xa3"=>"pya","\xe3\x83\x94\xe3\x82\xa7"=>"pye","\xe3\x83\x94\xe3\x82\xa3"=>"pyi",
+	"\xe3\x83\x94\xe3\x83\xa7"=>"pyo","\xe3\x83\x94\xe3\x83\xa5"=>"pyu","\xe3\x82\xb7\xe3\x83\xa3"=>"sya","\xe3\x82\xb7\xe3\x82\xa7"=>"sye",
+	"\xe3\x82\xb7\xe3\x83\xa7"=>"syo","\xe3\x82\xb7\xe3\x83\xa5"=>"syu","\xe3\x82\xb9\xe3\x82\xa1"=>"swa",
+	"\xe3\x82\xb9\xe3\x82\xa7"=>"swe","\xe3\x82\xb9\xe3\x82\xa3"=>"swi","\xe3\x82\xb9\xe3\x82\xa9"=>"swo","\xe3\x82\xb9\xe3\x82\xa5"=>"swu",
+	"\xe3\x82\xb7\xe3\x82\xa3"=>"syi","\xe3\x83\x86\xe3\x83\xa3"=>"tha","\xe3\x83\x86\xe3\x82\xa7"=>"the","\xe3\x83\x86\xe3\x82\xa3"=>"thi",
+	"\xe3\x83\x86\xe3\x83\xa7"=>"tho","\xe3\x83\x86\xe3\x83\xa5"=>"thu","\xe3\x83\x84\xe3\x83\xa3"=>"tsa","\xe3\x83\x84\xe3\x82\xa7"=>"tse",
+	"\xe3\x83\x84\xe3\x82\xa3"=>"tsi","\xe3\x83\x84\xe3\x83\xa7"=>"tso","\xe3\x83\x84"=>"tu","\xe3\x83\x88\xe3\x82\xa1"=>"twa",
+	"\xe3\x83\x88\xe3\x82\xa7"=>"twe","\xe3\x83\x88\xe3\x82\xa3"=>"twi","\xe3\x83\x88\xe3\x82\xa9"=>"two","\xe3\x83\x88\xe3\x82\xa5"=>"twu",
+	"\xe3\x83\xb4\xe3\x83\xa3"=>"vya","\xe3\x83\xb4\xe3\x82\xa7"=>"ve","\xe3\x83\xb4\xe3\x82\xa3"=>"vi","\xe3\x83\xb4\xe3\x83\xa7"=>"vyo",
+	"\xe3\x83\xb4\xe3\x83\xa5"=>"vyu","\xe3\x82\xa6\xe3\x82\xa1"=>"wha","\xe3\x82\xa6\xe3\x82\xa7"=>"we","\xe3\x82\xa6\xe3\x82\xa3"=>"wi",
+	"\xe3\x82\xa6\xe3\x82\xa9"=>"who","\xe3\x82\xa6\xe3\x82\xa5"=>"whu","\xe3\x83\xb1"=>"wye","\xe3\x83\xb0"=>"wyi",
+	"\xe3\x83\x82"=>"di","\xe3\x82\xb7"=>"si",
+	"\xe3\x82\xa2"=>"a","\xe3\x82\xa8"=>"e","\xe3\x82\xa4"=>"yi","\xe3\x82\xaa"=>"o",
+	"\xe3\x82\xa6"=>"u","\xe3\x83\x90"=>"ba","\xe3\x83\x99"=>"be","\xe3\x83\x93"=>"bi",
+	"\xe3\x83\x9c"=>"bo","\xe3\x83\x96"=>"bu","\xe3\x83\x80"=>"da","\xe3\x83\x87"=>"de",
+	"\xe3\x83\x89"=>"do","\xe3\x83\x85"=>"du","\xe3\x83\x95"=>"hu","\xe3\x82\xac"=>"ga",
+	"\xe3\x82\xb2"=>"ge","\xe3\x82\xae"=>"gi","\xe3\x82\xb4"=>"go","\xe3\x82\xb0"=>"gu",
+	"\xe3\x83\x8f"=>"ha","\xe3\x83\x98"=>"he","\xe3\x83\x92"=>"hi","\xe3\x83\x9b"=>"ho",
+	"\xe3\x82\xb8"=>"zi","\xe3\x82\xab"=>"ka","\xe3\x82\xb1"=>"ke","\xe3\x82\xad"=>"ki",
+	"\xe3\x82\xb3"=>"ko","\xe3\x82\xaf"=>"ku","\xe3\x83\xa9"=>"ra","\xe3\x83\xac"=>"re",
+	"\xe3\x83\xaa"=>"ri","\xe3\x83\xad"=>"ro","\xe3\x83\xab"=>"ru","\xe3\x83\x9e"=>"ma",
+	"\xe3\x83\xa1"=>"me","\xe3\x83\x9f"=>"mi","\xe3\x83\xa2"=>"mo","\xe3\x83\xa0"=>"mu",
+	"\xe3\x83\x8a"=>"na","\xe3\x83\x8d"=>"ne","\xe3\x83\x8b"=>"ni","\xe3\x83\x8e"=>"no",
+	"\xe3\x83\x8c"=>"nu","\xe3\x83\x91"=>"pa","\xe3\x83\x9a"=>"pe","\xe3\x83\x94"=>"pi",
+	"\xe3\x83\x9d"=>"po","\xe3\x83\x97"=>"pu","\xe3\x82\xb5"=>"sa","\xe3\x82\xbb"=>"se",
+	"\xe3\x82\xbd"=>"so","\xe3\x82\xb9"=>"su","\xe3\x82\xbf"=>"ta","\xe3\x83\x86"=>"te",
+	"\xe3\x83\x88"=>"to","\xe3\x83\xb4\xe3\x82\xa1"=>"va","\xe3\x83\xb4\xe3\x82\xa9"=>"vo","\xe3\x83\xaf"=>"wa",
+	"\xe3\x83\xb2"=>"wo","\xe3\x83\xa4"=>"ya","\xe3\x82\xa4\xe3\x82\xa7"=>"ye","\xe3\x83\xa8"=>"yo",
+	"\xe3\x83\xa6"=>"yu","\xe3\x82\xb6"=>"za","\xe3\x82\xbc"=>"ze","\xe3\x82\xbe"=>"zo",
+	"\xe3\x82\xba"=>"zu","\xe3\x83\xbc"=>"-",
+	// Thai
+	"\xe0\xb8\xb5\xe0\xb8\xa2\xe0\xb8\xb0"=>"ia",
+	"\xe0\xb8\xb5\xe0\xb8\xa2"=>"ia","\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb8\xb0"=>"uea","\xe0\xb8\xb7\xe0\xb8\xad"=>"uea","\xe0\xb8\xb1\xe0\xb8\xa7\xe0\xb8\xb0"=>"ua",
+	"\xe0\xb8\xb1\xe0\xb8\xa7"=>"ua","\xe0\xb8\xa3\xe0\xb8\xa3"=>"a","\xe0\xb8\xa6\xe0\xb9\x85"=>"lue","\xe0\xb9\x83"=>"ai",
+	"\xe0\xb9\x84"=>"ai","\xe0\xb8\xb1\xe0\xb8\xa2"=>"ai","\xe0\xb8\xb2\xe0\xb8\xa2"=>"ai","\xe0\xb8\xb2\xe0\xb8\xa7"=>"ao",
+	"\xe0\xb8\xb8\xe0\xb8\xa2"=>"ui","\xe0\xb8\xad\xe0\xb8\xa2"=>"oi","\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb8\xa2"=>"ueai","\xe0\xb8\xa7\xe0\xb8\xa2"=>"uai",
+	"\xe0\xb8\x81"=>"k","\xe0\xb8\x82"=>"kh","\xe0\xb8\x83"=>"kh","\xe0\xb8\x84"=>"kh",
+	"\xe0\xb8\x85"=>"kh","\xe0\xb8\x86"=>"kh","\xe0\xb8\x87"=>"ng","\xe0\xb8\x88"=>"ch",
+	"\xe0\xb8\x89"=>"ch","\xe0\xb8\x8a"=>"ch","\xe0\xb8\x8b"=>"s","\xe0\xb8\x8c"=>"ch",
+	"\xe0\xb8\x8d"=>"y","\xe0\xb8\x8e"=>"d","\xe0\xb8\x8f"=>"t","\xe0\xb8\x90"=>"th",
+	"\xe0\xb8\x91"=>"d","\xe0\xb8\x92"=>"th","\xe0\xb8\x93"=>"n","\xe0\xb8\x94"=>"d",
+	"\xe0\xb8\x95"=>"t","\xe0\xb8\x96"=>"th","\xe0\xb8\x97"=>"th","\xe0\xb8\x98"=>"th",
+	"\xe0\xb8\x99"=>"n","\xe0\xb8\x9a"=>"b","\xe0\xb8\x9b"=>"p","\xe0\xb8\x9c"=>"ph",
+	"\xe0\xb8\x9d"=>"f","\xe0\xb8\x9e"=>"ph","\xe0\xb8\x9f"=>"f","\xe0\xb8\xa0"=>"ph",
+	"\xe0\xb8\xa1"=>"m","\xe0\xb8\xa2"=>"y","\xe0\xb8\xa3"=>"r","\xe0\xb8\xa4"=>"rue",
+	"\xe0\xb8\xa4\xe0\xb9\x85"=>"rue","\xe0\xb8\xa5"=>"l","\xe0\xb8\xa6"=>"lue","\xe0\xb8\xa7"=>"w",
+	"\xe0\xb8\xa8"=>"s","\xe0\xb8\xa9"=>"s","\xe0\xb8\xaa"=>"s","\xe0\xb8\xab"=>"h",
+	"\xe0\xb8\xac"=>"l","\xe0\xb8\xae"=>"h","\xe0\xb8\xb0"=>"a","\xe0\xb8\xb1"=>"a",
+	"\xe0\xb8\xb2"=>"a","\xe0\xb9\x85"=>"a","\xe0\xb8\xb3"=>"am","\xe0\xb9\x8d\xe0\xb8\xb2"=>"am",
+	"\xe0\xb8\xb4"=>"i","\xe0\xb8\xb5"=>"ue","\xe0\xb8\xb6"=>"ue","\xe0\xb8\xb8"=>"u",
+	"\xe0\xb8\xb9"=>"u","\xe0\xb9\x80"=>"e","\xe0\xb9\x81"=>"ae","\xe0\xb9\x82"=>"o",
+	"\xe0\xb8\xad"=>"o","\xe0\xb8\xb4\xe0\xb8\xa7"=>"io","\xe0\xb9\x87\xe0\xb8\xa7"=>"eo","\xe0\xb8\xb5\xe0\xb8\xa2\xe0\xb8\xa7"=>"iao",
+	"\xe0\xb9\x88"=>"","\xe0\xb9\x89"=>"","\xe0\xb9\x8a"=>"","\xe0\xb9\x8b"=>"",
+	"\xe0\xb9\x87"=>"","\xe0\xb9\x8c"=>"","\xe0\xb9\x8e"=>"","\xe0\xb9\x8d"=>"",
+	"\xe0\xb8\xba"=>"","\xe0\xb9\x86"=>"2","\xe0\xb9\x8f"=>"o","\xe0\xb8\xaf"=>"-",
+	"\xe0\xb9\x9a"=>"-","\xe0\xb9\x9b"=>"-","\xe0\xb9\x90"=>"0","\xe0\xb9\x91"=>"1",
+	"\xe0\xb9\x92"=>"2","\xe0\xb9\x93"=>"3","\xe0\xb9\x94"=>"4","\xe0\xb9\x95"=>"5",
+	"\xe0\xb9\x96"=>"6","\xe0\xb9\x97"=>"7","\xe0\xb9\x98"=>"8","\xe0\xb9\x99"=>"9",
+	// Korean
+	"\xe3\x84\xb1"=>"k","\xe3\x85\x8b"=>"kh","\xe3\x84\xb2"=>"kk",
+	"\xe3\x84\xb7"=>"t","\xe3\x85\x8c"=>"th","\xe3\x84\xb8"=>"tt","\xe3\x85\x82"=>"p",
+	"\xe3\x85\x8d"=>"ph","\xe3\x85\x83"=>"pp","\xe3\x85\x88"=>"c","\xe3\x85\x8a"=>"ch",
+	"\xe3\x85\x89"=>"cc","\xe3\x85\x85"=>"s","\xe3\x85\x86"=>"ss","\xe3\x85\x8e"=>"h",
+	"\xe3\x85\x87"=>"ng","\xe3\x84\xb4"=>"n","\xe3\x84\xb9"=>"l","\xe3\x85\x81"=>"m",
+	"\xe3\x85\x8f"=>"a","\xe3\x85\x93"=>"e","\xe3\x85\x97"=>"o","\xe3\x85\x9c"=>"wu",
+	"\xe3\x85\xa1"=>"u","\xe3\x85\xa3"=>"i","\xe3\x85\x90"=>"ay","\xe3\x85\x94"=>"ey",
+	"\xe3\x85\x9a"=>"oy","\xe3\x85\x98"=>"wa","\xe3\x85\x9d"=>"we","\xe3\x85\x9f"=>"wi",
+	"\xe3\x85\x99"=>"way","\xe3\x85\x9e"=>"wey","\xe3\x85\xa2"=>"uy","\xe3\x85\x91"=>"ya",
+	"\xe3\x85\x95"=>"ye","\xe3\x85\x9b"=>"oy","\xe3\x85\xa0"=>"yu","\xe3\x85\x92"=>"yay",
+	"\xe3\x85\x96"=>"yey"
+);

Property changes on: tags/2.8.3/wb/framework/charsets_table.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework/index.php
===================================================================
--- tags/2.8.3/wb/framework/index.php	(nonexistent)
+++ tags/2.8.3/wb/framework/index.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");

Property changes on: tags/2.8.3/wb/framework/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/framework
===================================================================
--- tags/2.8.3/wb/framework	(nonexistent)
+++ tags/2.8.3/wb/framework	(revision 1610)

Property changes on: tags/2.8.3/wb/framework
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,2 ##
+JSIncluder.php
+SecFormNt.php
Index: tags/2.8.3/wb/upgrade-script.php
===================================================================
--- tags/2.8.3/wb/upgrade-script.php	(nonexistent)
+++ tags/2.8.3/wb/upgrade-script.php	(revision 1610)
@@ -0,0 +1,707 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         installation
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+@require_once('config.php');
+
+require_once(WB_PATH.'/framework/functions.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+$admin = new admin('Addons', 'modules', false, false);
+
+/* display a status message on the screen **************************************
+ * @param string $message: the message to show
+ * @param string $class:   kind of message as a css-class
+ * @param string $element: witch HTML-tag use to cover the message
+ * @return void
+ */
+function status_msg($message, $class='check', $element='span')
+{
+	// returns a status message
+	$msg  = '<'.$element.' class="'.$class.'">';
+	$msg .= '<strong>'.strtoupper(strtok($class, ' ')).'</strong>';
+	$msg .= $message.'</'.$element.'>';
+	echo $msg;
+}
+
+// database tables including in WB package
+$table_list = array (
+    'settings','groups','addons','pages','sections','search','users',
+    'mod_captcha_control','mod_code','mod_droplets','mod_form_fields',
+    'mod_form_settings','mod_form_submissions','mod_jsadmin','mod_menu_link',
+    'mod_news_comments','mod_news_groups','mod_news_posts','mod_news_settings',
+    'mod_output_filter','mod_wrapper','mod_wysiwyg'
+);
+
+$OK            = ' <span class="ok">OK</span> ';
+$FAIL          = ' <span class="error">FAILED</span> ';
+$DEFAULT_THEME = 'wb_theme';
+$stepID = 1;
+$dirRemove = array(
+/*
+			'[TEMPLATE]/allcss/',
+			'[TEMPLATE]/blank/',
+			'[TEMPLATE]/round/',
+			'[TEMPLATE]/simple/',
+*/
+		 );
+
+$filesRemove['0'] = array(
+
+			'[ADMIN]/preferences/details.php',
+			'[ADMIN]/preferences/email.php',
+			'[ADMIN]/preferences/password.php'
+
+		 );
+
+$filesRemove['1'] = array(
+
+			'[TEMPLATE]/argos_theme/templates/access.htt',
+			'[TEMPLATE]/argos_theme/templates/addons.htt',
+			'[TEMPLATE]/argos_theme/templates/admintools.htt',
+			'[TEMPLATE]/argos_theme/templates/error.htt',
+			'[TEMPLATE]/argos_theme/templates/groups.htt',
+			'[TEMPLATE]/argos_theme/templates/groups_form.htt',
+			'[TEMPLATE]/argos_theme/templates/languages.htt',
+			'[TEMPLATE]/argos_theme/templates/languages_details.htt',
+			'[TEMPLATE]/argos_theme/templates/login.htt',
+			'[TEMPLATE]/argos_theme/templates/login_forgot.htt',
+			'[TEMPLATE]/argos_theme/templates/media.htt',
+			'[TEMPLATE]/argos_theme/templates/media_browse.htt',
+			'[TEMPLATE]/argos_theme/templates/media_rename.htt',
+			'[TEMPLATE]/argos_theme/templates/modules.htt',
+			'[TEMPLATE]/argos_theme/templates/modules_details.htt',
+			'[TEMPLATE]/argos_theme/templates/pages.htt',
+			'[TEMPLATE]/argos_theme/templates/pages_modify.htt',
+			'[TEMPLATE]/argos_theme/templates/pages_sections.htt',
+			'[TEMPLATE]/argos_theme/templates/pages_settings.htt',
+			'[TEMPLATE]/argos_theme/templates/preferences.htt',
+			'[TEMPLATE]/argos_theme/templates/setparameter.htt',
+			'[TEMPLATE]/argos_theme/templates/settings.htt',
+			'[TEMPLATE]/argos_theme/templates/start.htt',
+			'[TEMPLATE]/argos_theme/templates/success.htt',
+			'[TEMPLATE]/argos_theme/templates/templates.htt',
+			'[TEMPLATE]/argos_theme/templates/templates_details.htt',
+			'[TEMPLATE]/argos_theme/templates/users.htt',
+			'[TEMPLATE]/argos_theme/templates/users_form.htt',
+
+			'[TEMPLATE]/wb_theme/templates/access.htt',
+			'[TEMPLATE]/wb_theme/templates/addons.htt',
+			'[TEMPLATE]/wb_theme/templates/admintools.htt',
+			'[TEMPLATE]/wb_theme/templates/error.htt',
+			'[TEMPLATE]/wb_theme/templates/groups.htt',
+			'[TEMPLATE]/wb_theme/templates/groups_form.htt',
+			'[TEMPLATE]/wb_theme/templates/languages.htt',
+			'[TEMPLATE]/wb_theme/templates/languages_details.htt',
+			'[TEMPLATE]/wb_theme/templates/login.htt',
+			'[TEMPLATE]/wb_theme/templates/login_forgot.htt',
+			'[TEMPLATE]/wb_theme/templates/media.htt',
+			'[TEMPLATE]/wb_theme/templates/media_browse.htt',
+			'[TEMPLATE]/wb_theme/templates/media_rename.htt',
+			'[TEMPLATE]/wb_theme/templates/modules.htt',
+			'[TEMPLATE]/wb_theme/templates/modules_details.htt',
+			'[TEMPLATE]/wb_theme/templates/pages.htt',
+			'[TEMPLATE]/wb_theme/templates/pages_modify.htt',
+			'[TEMPLATE]/wb_theme/templates/pages_sections.htt',
+			'[TEMPLATE]/wb_theme/templates/pages_settings.htt',
+			'[TEMPLATE]/wb_theme/templates/preferences.htt',
+			'[TEMPLATE]/wb_theme/templates/setparameter.htt',
+			'[TEMPLATE]/wb_theme/templates/settings.htt',
+			'[TEMPLATE]/wb_theme/templates/start.htt',
+			'[TEMPLATE]/wb_theme/templates/success.htt',
+			'[TEMPLATE]/wb_theme/templates/templates.htt',
+			'[TEMPLATE]/wb_theme/templates/templates_details.htt',
+			'[TEMPLATE]/wb_theme/templates/users.htt',
+			'[TEMPLATE]/wb_theme/templates/users_form.htt',
+
+		 );
+
+// analyze/check database tables
+function mysqlCheckTables( $dbName )
+{
+    global $table_list;
+    $table_prefix = TABLE_PREFIX;
+    $sql = "SHOW TABLES FROM " . $dbName;
+    $result = @mysql_query( $sql );
+    $data = array();
+    $x = 0;
+
+    while( ( $row = @mysql_fetch_array( $result, MYSQL_NUM ) ) == true )
+    {
+        $tmp = str_replace($table_prefix, '', $row[0]);
+
+        if( stristr( $row[0], $table_prefix )&& in_array($tmp,$table_list) )
+        {
+            $sql = "CHECK TABLE " . $dbName . '.' . $row[0];
+            $analyze = @mysql_query( $sql );
+            $rowFetch = @mysql_fetch_array( $analyze, MYSQL_ASSOC );
+            $data[$x]['Op'] = $rowFetch["Op"];
+            $data[$x]['Msg_type'] = $rowFetch["Msg_type"];
+            $msgColor = '<span class="error">';
+            $data[$x]['Table'] = $row[0];
+           // print  " ";
+            $msgColor = ($rowFetch["Msg_text"] == 'OK') ? '<span class="ok">' : '<span class="error">';
+            $data[$x]['Msg_text'] = $msgColor.$rowFetch["Msg_text"].'</span>';
+           // print  "<br />";
+            $x++;
+        }
+    }
+    return $data;
+}
+
+// check existings tables for upgrade or install
+function check_wb_tables()
+{
+    global $database,$table_list;
+
+ // if prefix inludes '_' or '%'
+ $search_for = addcslashes ( TABLE_PREFIX, '%_' );
+ $get_result = $database->query( 'SHOW TABLES LIKE "'.$search_for.'%"');
+
+        // $get_result = $database->query( "SHOW TABLES FROM ".DB_NAME);
+        $all_tables = array();
+        if($get_result->numRows() > 0)
+        {
+            while ($data = $get_result->fetchRow())
+            {
+                $tmp = str_replace(TABLE_PREFIX, '', $data[0]);
+                if(in_array($tmp,$table_list))
+                {
+                    $all_tables[] = $tmp;
+                }
+            }
+        }
+     return $all_tables;
+}
+
+// check existing tables
+$all_tables = check_wb_tables();
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>Upgrade script</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<style type="text/css">
+html { overflow: -moz-scrollbars-vertical; /* Force firefox to always show room for a vertical scrollbar */ }
+
+body {
+	margin:0;
+	padding:0;
+	border:0;
+	background: #EBF7FC;
+	color:#000;
+	font-family: 'Trebuchet MS', Verdana, Arial, Helvetica, Sans-Serif;
+	font-size: small;
+	height:101%;
+}
+
+#container {
+	width:85%;
+	background: #A8BCCB url(templates/wb_theme/images/background.png) repeat-x;
+	border:1px solid #000;
+	color:#000;
+	margin:2em auto;
+	padding:0 15px;
+	min-height: 500px;
+	text-align:left;
+}
+
+p { line-height:1.5em; }
+
+form {
+	display: inline-block;
+	line-height: 20px;
+	vertical-align: baseline;
+}
+input[type="submit"].restart {
+	background-color: #FFDBDB;
+	font-weight: bold;
+}
+
+h1,h2,h3,h4,h5,h6 {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	color: #369;
+	margin-top: 1.0em;
+	margin-bottom: 0.1em;
+}
+
+h1 { font-size:150%; }
+h2 { font-size: 130%; border-bottom: 1px #CCC solid; }
+h3 { font-size: 120%; }
+
+.ok, .error { font-weight:bold; }
+.ok { color:green; }
+.error { color:red; }
+.check { color:#555; }
+
+.warning {
+	width: 98%;
+	background:#FFDBDB;
+	padding:0.2em;
+	margin-top:0.5em;
+	border: 1px solid black;
+}
+.info {
+	width: 98%;
+	background:#99CC99;
+	padding:0.2em;
+	margin-top:0.5em;
+	border: 1px solid black;
+}
+
+</style>
+</head>
+<body>
+<div id="container">
+<img src="templates/wb_theme/images/logo.png" alt="WebsiteBaker Project" />
+<h1>WebsiteBaker Upgrade</h1>
+<?php
+	if( version_compare( WB_VERSION, '2.7', '<' )) {
+		status_msg('<strong>Warning:</strong><br />It is not possible to upgrade from WebsiteBaker Versions before 2.7.<br />For upgrading to version '.VERSION.' you must upgrade first to v.2.7 at least!!!', 'warning', 'div');
+		echo '<br /><br />';
+		echo "</div>
+		</body>
+		</html>
+		";
+		exit();
+	}
+
+$oldVersion  = 'Version '.WB_VERSION;
+$oldVersion .= (defined('WB_SP') ? ' '.WB_SP : '');
+$oldVersion .= (defined('WB_REVISION') ? ' Revision ['.WB_REVISION.'] ' : '') ;
+$newVersion  = 'Version '.VERSION;
+$newVersion .= (defined('SP') ? ' '.SP : '');
+$newVersion .= (defined('REVISION') ? ' Revision ['.REVISION.'] ' : '');
+// set addition settings if not exists, otherwise upgrade will be breaks
+if(!defined('WB_SP')) { define('WB_SP',''); }
+if(!defined('WB_REVISION')) { define('WB_REVISION',''); }
+
+?>
+<p>This script upgrades an existing WebsiteBaker <strong> <?php echo $oldVersion; ?></strong> installation to the <strong> <?php echo $newVersion ?> </strong>.<br />The upgrade script alters the existing WB database to reflect the changes introduced with WB 2.8.x</p>
+
+<?php
+/**
+ * Check if disclaimer was accepted
+ */
+if (!(isset($_POST['backup_confirmed']) && $_POST['backup_confirmed'] == 'confirmed')) { ?>
+<h2>Step 1: Backup your files</h2>
+<p>It is highly recommended to <strong>create a manual backup</strong> of the entire <strong>/pages folder</strong> and the <strong>MySQL database</strong> before proceeding.<br /><strong class="error">Note: </strong>The upgrade script alters some settings of your existing database!!! You need to confirm the disclaimer before proceeding.</p>
+
+<form name="send" action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="post">
+<textarea cols="80" rows="5">DISCLAIMER: The WebsiteBaker upgrade script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. One needs to confirm that a manual backup of the /pages folder (including all files and subfolders contained in it) and backup of the entire WebsiteBaker MySQL database was created before you can proceed.</textarea>
+<br /><br /><input name="backup_confirmed" type="checkbox" value="confirmed" />&nbsp;I confirm that a manual backup of the /pages folder and the MySQL database was created.
+<br /><br /><input name="send" type="submit" value="Start upgrade script" />
+</form>
+<br />
+
+<?php
+	status_msg('<strong>Notice:</strong><br />You need to confirm that you have created a manual backup of the /pages directory and the MySQL database before you can proceed.', 'warning', 'div');
+	echo '<br /><br />';
+    echo "</div>
+    </body>
+    </html>
+    ";
+	exit();
+}
+
+echo '<h2>Step '.(++$stepID).' : Updating database entries</h2>';
+
+// function to add a var/value-pair into settings-table
+function db_add_key_value($key, $value) {
+	global $database; global $OK; global $FAIL;
+	$table = TABLE_PREFIX.'settings';
+	$query = $database->query("SELECT value FROM $table WHERE name = '$key' LIMIT 1");
+	if($query->numRows() > 0) {
+		echo "$key: already exists. $OK.<br />";
+		return true;
+	} else {
+		$database->query("INSERT INTO $table (name,value) VALUES ('$key', '$value')");
+		echo (mysql_error()?mysql_error().'<br />':'');
+		$query = $database->query("SELECT value FROM $table WHERE name = '$key' LIMIT 1");
+		if($query->numRows() > 0) {
+			echo "$key: $OK.<br />";
+			return true;
+		} else {
+			echo "$key: $FAIL!<br />";
+			return false;
+		}
+	}
+}
+
+// function to add a new field into a table
+function db_add_field($field, $table, $desc) {
+	global $database; global $OK; global $FAIL;
+	$table = TABLE_PREFIX.$table;
+	$query = $database->query("DESCRIBE $table '$field'");
+	if($query->numRows() == 0) { // add field
+		$query = $database->query("ALTER TABLE $table ADD $field $desc");
+		echo (mysql_error()?mysql_error().'<br />':'');
+		$query = $database->query("DESCRIBE $table '$field'");
+		echo (mysql_error()?mysql_error().'<br />':'');
+		if($query->numRows() > 0) {
+			echo "'$field' added. $OK.<br />";
+		} else {
+			echo "adding '$field' $FAIL!<br />";
+		}
+	} else {
+		echo "'$field' already exists. $OK.<br />";
+	}
+}
+
+/**********************************************************
+ *  - Adding field default_theme to settings table
+ */
+echo "<br />Adding default_theme to settings table<br />";
+db_update_key_value('settings', 'default_theme', $DEFAULT_THEME);
+/**********************************************************
+ *  - install droplets
+ */
+    $drops = (!in_array ( "mod_droplets", $all_tables)) ? "<br />Install droplets<br />" : "<br />Upgrade droplets<br />";
+    echo $drops;
+
+     $file_name = (!in_array ( "mod_droplets", $all_tables) ? "install.php" : "upgrade.php");
+     require_once (WB_PATH."/modules/droplets/".$file_name);
+
+// check again all tables, to get a new array
+ if(sizeof($all_tables) < 22) { $all_tables = check_wb_tables(); }
+/**********************************************************
+ *  - check tables comin with WebsiteBaker
+ */
+    $check_text = 'total ';
+    // $check_tables = mysqlCheckTables( DB_NAME ) ;
+
+    if(sizeof($all_tables) == 22)
+    {
+        echo '<h4>NOTICE: Your database '.DB_NAME.' has '.sizeof($all_tables).' '.$check_text.' tables from '.sizeof($table_list).' included in package '.$OK.'</h4>';
+    }
+    else
+    {
+        status_msg('<strong>WARNING:</strong><br />can\'t run Upgrade, missing tables', 'warning', 'div');
+    	echo '<h4>Missing required tables. You can install them in backend->addons->modules->advanced. Then again run upgrade-script.php</h4>';
+        $result = array_diff ( $table_list, $all_tables );
+        echo '<h4 class="warning"><br />';
+        while ( list ( $key, $val ) = each ( $result ) )
+        {
+            echo TABLE_PREFIX.$val.' '.$FAIL.'<br>';
+        }
+        echo '<br /></h4>';
+    	echo '<br /><form action="'. $_SERVER['PHP_SELF'] .'">';
+    	echo '<input type="submit" value="kick me back" style="float:left;" />';
+    	echo '</form>';
+        if(defined('ADMIN_URL'))
+        {
+        	echo '<form action="'.ADMIN_URL.'" target="_self">';
+        	echo '&nbsp;<input type="submit" value="kick me to the Backend" />';
+        	echo '</form>';
+        }
+        echo "<br /><br /></div>
+        </body>
+        </html>
+        ";
+        exit();
+    }
+
+/**********************************************************
+ *  - Adding field sec_anchor to settings table
+ */
+echo "<br />Adding sec_anchor to settings table<br />";
+$cfg = array(
+	'sec_anchor' => 'wb_'
+);
+foreach($cfg as $key=>$value) {
+	db_add_key_value($key, $value);
+}
+
+/**********************************************************
+ *  - Adding redirect timer to settings table
+ */
+echo "<br />Adding redirect timer to settings table<br />";
+$cfg = array(
+	'redirect_timer' => '1500'
+);
+foreach($cfg as $key=>$value) {
+	db_add_key_value($key, $value);
+}
+
+/**********************************************************
+ *  - Adding rename_files_on_upload to settings table
+ */
+echo "<br />Updating rename_files_on_upload to settings table<br />";
+$cfg = array(
+	'rename_files_on_upload' => 'ph.*?,cgi,pl,pm,exe,com,bat,pif,cmd,src,asp,aspx,js'
+);
+db_update_key_value('settings', 'rename_files_on_upload', $cfg['rename_files_on_upload']);
+
+/**********************************************************
+ *  - Adding mediasettings to settings table
+ */
+echo "<br />Adding mediasettings to settings table<br />";
+$cfg = array(
+	'mediasettings' => '',
+);
+
+foreach($cfg as $key=>$value) {
+	db_add_key_value($key, $value);
+}
+
+/**********************************************************
+ *  - Adding fingerprint_with_ip_octets to settings table
+ */
+echo "<br />Adding fingerprint_with_ip_octets to settings table<br />";
+$cfg = array(
+	'fingerprint_with_ip_octets' => '2',
+	'secure_form_module' => ''
+);
+foreach($cfg as $key=>$value) {
+	db_add_key_value($key, $value);
+}
+
+/**********************************************************
+ *  - Add field "redirect_type" to table "mod_menu_link"
+ */
+echo "<br />Adding field redirect_type to mod_menu_link table<br />";
+db_add_field('redirect_type', 'mod_menu_link', "INT NOT NULL DEFAULT '302' AFTER `target_page_id`");
+
+/**********************************************************
+ *  - Update search no results database filed to create
+ *  valid XHTML if search is empty
+ */
+if (version_compare(WB_VERSION, '2.8', '<'))
+{
+    echo "<br />Updating database field `no_results` of search table: ";
+    $search_no_results = addslashes('<tr><td><p>[TEXT_NO_RESULTS]</p></td></tr>');
+    $sql  = 'UPDATE `'.TABLE_PREFIX.'search` ';
+	$sql .= 'SET `value`=\''.$search_no_results.'\' ';
+	$sql .= 'WHERE `name`=\'no_results\'';
+    echo ($database->query($sql)) ? ' $OK<br />' : ' $FAIL<br />';
+}
+/**********************************************************
+ * upgrade media folder index protect files
+ */
+	$dir = (WB_PATH.MEDIA_DIRECTORY);
+	echo '<h4>Upgrade '.MEDIA_DIRECTORY.'/ index.php protect files</h4><br />';
+	$array = rebuildFolderProtectFile($dir);
+	if( sizeof( $array ) ){
+		print '<br /><strong>Upgrade '.sizeof( $array ).' '.MEDIA_DIRECTORY.'/ protect files</strong>'." $OK<br />";
+	} else {
+		print '<br /><strong>Upgrade '.MEDIA_DIRECTORY.'/ protect files</strong>'." $FAIL!<br />";
+		print implode ('<br />',$array);
+	}
+/**********************************************************
+ * upgrade posts folder index protect files
+ */
+	$sPostsPath = WB_PATH.PAGES_DIRECTORY.'/posts';
+	echo '<h4>Upgrade /posts/ index.php protect files</h4><br />';
+	$array = rebuildFolderProtectFile($sPostsPath);
+	if( sizeof( $array ) ){
+		print '<br /><strong>Upgrade '.sizeof( $array ).' /posts/ protect files</strong>'." $OK<br />";
+	} else {
+		print '<br /><strong>Upgrade /posts/ protect files</strong>'." $FAIL!<br />";
+		print implode ('<br />',$array);
+	}
+/* *****************************************************************************
+ * - check for deprecated / never needed files
+ */
+	if(sizeof($filesRemove)) {
+		echo '<h2>Step '.(++$stepID).': Remove deprecated and old files</h2>';
+	}
+	$searches = array(
+		'[ADMIN]',
+		'[MEDIA]',
+		'[PAGES]',
+		'[FRAMEWORK]',
+		'[MODULES]',
+		'[TEMPLATE]'
+	);
+	$replacements = array(
+		substr(ADMIN_PATH, strlen(WB_PATH)+1),
+		MEDIA_DIRECTORY,
+		PAGES_DIRECTORY,
+		'/framework',
+		'/modules',
+		'/templates'
+	);
+
+	foreach( $filesRemove as $filesId )
+	{
+		$msg = '';
+		foreach( $filesId as $file )
+		{
+			$file = str_replace($searches, $replacements, $file);
+			$file = WB_PATH.'/'.$file;
+			if( file_exists($file) ) {
+				// try to unlink file
+				if(!is_writable( $file ) || !unlink($file)) {
+					// save in err-list, if failed
+					$msg .= $file.'<br />';
+				}
+			}
+		}
+
+		if($msg != '')
+		{
+			$msg = '<br /><br />Following files are deprecated, outdated or a security risk and
+				    can not be removed automatically.<br /><br />Please delete them
+					using FTP and restart upgrade-script!<br /><br />'.$msg.'<br />';
+	        status_msg($msg, 'error warning', 'div');
+			echo '<p style="font-size:120%;"><strong>WARNING: The upgrade script failed ...</strong></p>';
+
+			echo '<form action="'.$_SERVER['SCRIPT_NAME'].'">';
+			echo '&nbsp;<input name="send" type="submit" value="Restart upgrade script" />';
+			echo '</form>';
+			echo '<br /><br /></div></body></html>';
+			exit;
+		}
+	}
+
+
+/**********************************************************
+ * - check for deprecated / never needed files
+ */
+	if(sizeof($dirRemove)) {
+		echo '<h2>Step  '.(++$stepID).': Remove deprecated and old folders</h2>';
+		$searches = array(
+			'[ADMIN]',
+			'[MEDIA]',
+			'[PAGES]',
+			'[TEMPLATE]'
+		);
+		$replacements = array(
+			substr(ADMIN_PATH, strlen(WB_PATH)+1),
+			MEDIA_DIRECTORY,
+			PAGES_DIRECTORY,
+			'/templates',
+		);
+		$msg = '';
+		foreach( $dirRemove as $dir ) {
+			$dir = str_replace($searches, $replacements, $dir);
+			$dir = WB_PATH.'/'.$dir;
+			if( is_dir( $dir )) {
+			// try to delete dir
+				if(!rm_full_dir($dir)) {
+				// save in err-list, if failed
+					$msg .= $dir.'<br />';
+				}
+			}
+		}
+		if($msg != '') {
+			$msg = '<br /><br />Following files are deprecated, outdated or a security risk and
+					can not be removed automatically.<br /><br />Please delete them
+					using FTP and restart upgrade-script!<br /><br />'.$msg.'<br />';
+			status_msg($msg, 'error warning', 'div');
+			echo '<p style="font-size:120%;"><strong>WARNING: The upgrade script failed ...</strong></p>';
+			echo '<form action="'.$_SERVER['SCRIPT_NAME'].'">';
+			echo '&nbsp;<input name="send" type="submit" value="Restart upgrade script" />';
+			echo '</form>';
+			echo '<br /><br /></div></body></html>';
+			exit;
+		}
+	}
+
+/**********************************************************
+ * upgrade modules if newer version is available
+ */
+	$aModuleList = array('news');
+	foreach($aModuleList as $sModul) {
+		if(file_exists(WB_PATH.'/modules/'.$sModul.'/upgrade.php')) {
+			$currModulVersion = get_modul_version ($sModul, false);
+			$newModulVersion =  get_modul_version ($sModul, true);
+			if((version_compare($currModulVersion, $newModulVersion) <= 0)) {
+				echo '<h2>Step '.(++$stepID).' : Upgrade module \''.$sModul.'\' to version '.$newModulVersion.'</h2>';
+				require_once(WB_PATH.'/modules/'.$sModul.'/upgrade.php');
+			}
+		}
+	}
+/**********************************************************
+ *  - Reload all addons
+ */
+
+	echo '<h2>Step '.(++$stepID).' : Reload all addons database entry (no upgrade)</h2>';
+	////delete modules
+	//$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE type = 'module'");
+	// Load all modules
+	if( ($handle = opendir(WB_PATH.'/modules/')) ) {
+		while(false !== ($file = readdir($handle))) {
+			if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'admin.php' AND $file != 'index.php') {
+				load_module(WB_PATH.'/modules/'.$file );
+			   // 	upgrade_module($file, true);
+			}
+		}
+		closedir($handle);
+	}
+	echo '<br />Modules reloaded<br />';
+
+	////delete templates
+	//$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE type = 'template'");
+	// Load all templates
+	if( ($handle = opendir(WB_PATH.'/templates/')) ) {
+		while(false !== ($file = readdir($handle))) {
+			if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'index.php') {
+				load_template(WB_PATH.'/templates/'.$file);
+			}
+		}
+		closedir($handle);
+	}
+	echo '<br />Templates reloaded<br />';
+
+	////delete languages
+	//$database->query("DELETE FROM ".TABLE_PREFIX."addons WHERE type = 'language'");
+	// Load all languages
+	if( ($handle = opendir(WB_PATH.'/languages/')) ) {
+		while(false !== ($file = readdir($handle))) {
+			if($file != '' AND substr($file, 0, 1) != '.' AND $file != 'index.php') {
+				load_language(WB_PATH.'/languages/'.$file);
+			}
+		}
+		closedir($handle);
+	}
+	echo '<br />Languages reloaded<br />';
+
+/**********************************************************
+ *  - End of upgrade script
+ */
+
+// require(WB_PATH.'/framework/initialize.php');
+
+	if(!defined('DEFAULT_THEME')) { define('DEFAULT_THEME', $DEFAULT_THEME); }
+	if(!defined('THEME_PATH')) { define('THEME_PATH', WB_PATH.'/templates/'.DEFAULT_THEME);}
+/**********************************************************
+ *  - Set Version to new Version
+ */
+	echo '<br />Update database version number to '.VERSION.' '.SP.' '.' Revision ['.REVISION.'] : ';
+	// echo ($database->query("UPDATE `".TABLE_PREFIX."settings` SET `value`='".VERSION."' WHERE `name` = 'wb_version'")) ? " $OK<br />" : " $FAIL<br />";
+	db_update_key_value('settings', 'wb_version', VERSION);
+	db_update_key_value('settings', 'wb_revision', REVISION);
+	db_update_key_value('settings', 'wb_sp', SP);
+
+	echo '<p style="font-size:120%;"><strong>Congratulations: The upgrade script is finished ...</strong></p>';
+	status_msg('<strong>Warning:</strong><br />Please delete the file <strong>upgrade-script.php</strong> via FTP before proceeding.', 'warning', 'div');
+	// show buttons to go to the backend or frontend
+	echo '<br />';
+
+	if(defined('WB_URL')) {
+		echo '<form action="'.WB_URL.'/">';
+		echo '&nbsp;<input type="submit" value="kick me to the Frontend" />';
+		echo '</form>';
+	}
+	if(defined('ADMIN_URL')) {
+		echo '<form action="'.ADMIN_URL.'/">';
+		echo '&nbsp;<input type="submit" value="kick me to the Backend" />';
+		echo '</form>';
+	}
+
+	echo '<br /><br /></div></body></html>';
\ No newline at end of file

Property changes on: tags/2.8.3/wb/upgrade-script.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eo.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eo.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eo.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Esperanto initialisation for the jQuery UI date picker plugin. */
+/* Written by Olivier M. (olivierweb@ifrance.com). */
+jQuery(function($){
+	$.datepicker.regional['eo'] = {
+		closeText: 'Fermi',
+		prevText: '&lt;Anta',
+		nextText: 'Sekv&gt;',
+		currentText: 'Nuna',
+		monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',
+		'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aŭg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],
+		weekHeader: 'Sb',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eo']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eo.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fo.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fo.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fo.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Faroese initialisation for the jQuery UI date picker plugin */
+/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
+jQuery(function($){
+	$.datepicker.regional['fo'] = {
+		closeText: 'Lat aftur',
+		prevText: '&#x3c;Fyrra',
+		nextText: 'Næsta&#x3e;',
+		currentText: 'Í dag',
+		monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',
+		'Juli','August','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Des'],
+		dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],
+		dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],
+		dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fo']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fo.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bs.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bs.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bs.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Bosnian i18n for the jQuery UI date picker plugin. */
+/* Written by Kenan Konjo. */
+jQuery(function($){
+	$.datepicker.regional['bs'] = {
+		closeText: 'Zatvori', 
+		prevText: '&#x3c;', 
+		nextText: '&#x3e;', 
+		currentText: 'Danas', 
+		monthNames: ['Januar','Februar','Mart','April','Maj','Juni',
+		'Juli','August','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bs']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bs.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ta.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ta.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ta.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by S A Sureshkumar (saskumar@live.com). */
+jQuery(function($){
+	$.datepicker.regional['ta'] = {
+		closeText: 'மூடு',
+		prevText: 'முன்னையது',
+		nextText: 'அடுத்தது',
+		currentText: 'இன்று',
+		monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',
+		'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],
+		monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',
+		'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],
+		dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],
+		dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],
+		dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],
+		weekHeader: 'Не',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ta']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ta.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-cs.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-cs.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-cs.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Czech initialisation for the jQuery UI date picker plugin. */
+/* Written by Tomas Muller (tomas@tomas-muller.net). */
+jQuery(function($){
+	$.datepicker.regional['cs'] = {
+		closeText: 'Zavřít',
+		prevText: '&#x3c;Dříve',
+		nextText: 'Později&#x3e;',
+		currentText: 'Nyní',
+		monthNames: ['leden','únor','březen','duben','květen','červen',
+        'červenec','srpen','září','říjen','listopad','prosinec'],
+		monthNamesShort: ['led','úno','bře','dub','kvě','čer',
+		'čvc','srp','zář','říj','lis','pro'],
+		dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+		dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+		dayNamesMin: ['ne','po','út','st','čt','pá','so'],
+		weekHeader: 'Týd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cs']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-cs.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eu.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eu.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eu.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */
+/* Karrikas-ek itzulia (karrikas@karrikas.com) */
+jQuery(function($){
+	$.datepicker.regional['eu'] = {
+		closeText: 'Egina',
+		prevText: '&#x3c;Aur',
+		nextText: 'Hur&#x3e;',
+		currentText: 'Gaur',
+		monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina',
+		'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
+		monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka',
+		'Uzt','Abu','Ira','Urr','Aza','Abe'],
+		dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],
+		dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],
+		dayNamesMin: ['Ig','As','As','As','Os','Os','La'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eu']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-eu.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hu.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hu.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hu.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Hungarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
+jQuery(function($){
+	$.datepicker.regional['hu'] = {
+		closeText: 'bezár',
+		prevText: 'vissza',
+		nextText: 'előre',
+		currentText: 'ma',
+		monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
+		'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
+		monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
+		'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
+		dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+		dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
+		dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+		weekHeader: 'Hét',
+		dateFormat: 'yy.mm.dd.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hu']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hu.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sk.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sk.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sk.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Slovak initialisation for the jQuery UI date picker plugin. */
+/* Written by Vojtech Rinik (vojto@hmm.sk). */
+jQuery(function($){
+	$.datepicker.regional['sk'] = {
+		closeText: 'Zavrieť',
+		prevText: '&#x3c;Predchádzajúci',
+		nextText: 'Nasledujúci&#x3e;',
+		currentText: 'Dnes',
+		monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
+		'Júl','August','September','Október','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
+		'Júl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
+		dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
+		dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
+		weekHeader: 'Ty',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sk']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-vi.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-vi.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-vi.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Vietnamese initialisation for the jQuery UI date picker plugin. */
+/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
+jQuery(function($){
+	$.datepicker.regional['vi'] = {
+		closeText: 'Đóng',
+		prevText: '&#x3c;Trước',
+		nextText: 'Tiếp&#x3e;',
+		currentText: 'Hôm nay',
+		monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',
+		'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],
+		monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
+		'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
+		dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
+		dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		weekHeader: 'Tu',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['vi']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-vi.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-uk.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-uk.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-uk.js	(revision 1610)
@@ -0,0 +1,24 @@
+/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
+/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['uk'] = {
+		closeText: 'Закрити',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Сьогодні',
+		monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
+		'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
+		monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
+		'Лип','Сер','Вер','Жов','Лис','Гру'],
+		dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],
+		dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Тиж',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['uk']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-uk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ro.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ro.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ro.js	(revision 1610)
@@ -0,0 +1,26 @@
+/* Romanian initialisation for the jQuery UI date picker plugin.
+ *
+ * Written by Edmond L. (ll_edmond@walla.com)
+ * and Ionut G. Stan (ionut.g.stan@gmail.com)
+ */
+jQuery(function($){
+	$.datepicker.regional['ro'] = {
+		closeText: 'Închide',
+		prevText: '&laquo; Luna precedentă',
+		nextText: 'Luna următoare &raquo;',
+		currentText: 'Azi',
+		monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',
+		'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
+		monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
+		'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
+		dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+		dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],
+		weekHeader: 'Săpt',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ro']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ro.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sq.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sq.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sq.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Albanian initialisation for the jQuery UI date picker plugin. */
+/* Written by Flakron Bytyqi (flakron@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['sq'] = {
+		closeText: 'mbylle',
+		prevText: '&#x3c;mbrapa',
+		nextText: 'Përpara&#x3e;',
+		currentText: 'sot',
+		monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',
+		'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
+		monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
+		'Kor','Gus','Sht','Tet','Nën','Dhj'],
+		dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
+		dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		weekHeader: 'Ja',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sq']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sq.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-af.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-af.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-af.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Afrikaans initialisation for the jQuery UI date picker plugin. */
+/* Written by Renier Pretorius. */
+jQuery(function($){
+	$.datepicker.regional['af'] = {
+		closeText: 'Selekteer',
+		prevText: 'Vorige',
+		nextText: 'Volgende',
+		currentText: 'Vandag',
+		monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
+		'Julie','Augustus','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+		dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+		dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+		dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['af']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-af.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr-CH.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr-CH.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr-CH.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Swiss-French initialisation for the jQuery UI date picker plugin. */
+/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
+jQuery(function($){
+	$.datepicker.regional['fr-CH'] = {
+		closeText: 'Fermer',
+		prevText: '&#x3c;Préc',
+		nextText: 'Suiv&#x3e;',
+		currentText: 'Courant',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
+		'Jul','Aoû','Sep','Oct','Nov','Déc'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr-CH']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr-CH.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-el.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-el.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-el.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Greek (el) initialisation for the jQuery UI date picker plugin. */
+/* Written by Alex Cicovic (http://www.alexcicovic.com) */
+jQuery(function($){
+	$.datepicker.regional['el'] = {
+		closeText: 'Κλείσιμο',
+		prevText: 'Προηγούμενος',
+		nextText: 'Επόμενος',
+		currentText: 'Τρέχων Μήνας',
+		monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',
+		'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],
+		monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',
+		'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],
+		dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],
+		dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],
+		dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],
+		weekHeader: 'Εβδ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['el']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-el.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Arabic Translation for jQuery UI date picker plugin. */
+/* Khaled Alhourani -- me@khaledalhourani.com */
+/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
+jQuery(function($){
+	$.datepicker.regional['ar'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3c;السابق',
+		nextText: 'التالي&#x3e;',
+		currentText: 'اليوم',
+		monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
+		'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery-ui-i18n.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery-ui-i18n.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery-ui-i18n.js	(revision 1610)
@@ -0,0 +1,1470 @@
+/* Afrikaans initialisation for the jQuery UI date picker plugin. */
+/* Written by Renier Pretorius. */
+jQuery(function($){
+	$.datepicker.regional['af'] = {
+		closeText: 'Selekteer',
+		prevText: 'Vorige',
+		nextText: 'Volgende',
+		currentText: 'Vandag',
+		monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
+		'Julie','Augustus','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+		dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+		dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+		dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['af']);
+});
+/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/
+/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
+
+jQuery(function($){
+	$.datepicker.regional['ar-DZ'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3c;السابق',
+		nextText: 'التالي&#x3e;',
+		currentText: 'اليوم',
+		monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',
+		'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);
+});
+/* Arabic Translation for jQuery UI date picker plugin. */
+/* Khaled Alhourani -- me@khaledalhourani.com */
+/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
+jQuery(function($){
+	$.datepicker.regional['ar'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3c;السابق',
+		nextText: 'التالي&#x3e;',
+		currentText: 'اليوم',
+		monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران',
+		'تموز', 'آب', 'أيلول',	'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar']);
+});/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Jamil Najafov (necefov33@gmail.com). */
+jQuery(function($) {
+	$.datepicker.regional['az'] = {
+		closeText: 'Bağla',
+		prevText: '&#x3c;Geri',
+		nextText: 'İrəli&#x3e;',
+		currentText: 'Bugün',
+		monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
+		'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
+		monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
+		'İyul','Avq','Sen','Okt','Noy','Dek'],
+		dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
+		dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
+		dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['az']);
+});/* Bulgarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Stoyan Kyosev (http://svest.org). */
+jQuery(function($){
+    $.datepicker.regional['bg'] = {
+        closeText: 'затвори',
+        prevText: '&#x3c;назад',
+        nextText: 'напред&#x3e;',
+		nextBigText: '&#x3e;&#x3e;',
+        currentText: 'днес',
+        monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
+        'Юли','Август','Септември','Октомври','Ноември','Декември'],
+        monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
+        'Юли','Авг','Сеп','Окт','Нов','Дек'],
+        dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
+        dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
+        dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
+		weekHeader: 'Wk',
+        dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+        isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['bg']);
+});
+/* Bosnian i18n for the jQuery UI date picker plugin. */
+/* Written by Kenan Konjo. */
+jQuery(function($){
+	$.datepicker.regional['bs'] = {
+		closeText: 'Zatvori', 
+		prevText: '&#x3c;', 
+		nextText: '&#x3e;', 
+		currentText: 'Danas', 
+		monthNames: ['Januar','Februar','Mart','April','Maj','Juni',
+		'Juli','August','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['bs']);
+});/* Inicialització en català per a l'extenció 'calendar' per jQuery. */
+/* Writers: (joan.leon@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ca'] = {
+		closeText: 'Tancar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Seg&#x3e;',
+		currentText: 'Avui',
+		monthNames: ['Gener','Febrer','Mar&ccedil;','Abril','Maig','Juny',
+		'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Oct','Nov','Des'],
+		dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],
+		dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'],
+		dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ca']);
+});/* Czech initialisation for the jQuery UI date picker plugin. */
+/* Written by Tomas Muller (tomas@tomas-muller.net). */
+jQuery(function($){
+	$.datepicker.regional['cs'] = {
+		closeText: 'Zavřít',
+		prevText: '&#x3c;Dříve',
+		nextText: 'Později&#x3e;',
+		currentText: 'Nyní',
+		monthNames: ['leden','únor','březen','duben','květen','červen',
+        'červenec','srpen','září','říjen','listopad','prosinec'],
+		monthNamesShort: ['led','úno','bře','dub','kvě','čer',
+		'čvc','srp','zář','říj','lis','pro'],
+		dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+		dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+		dayNamesMin: ['ne','po','út','st','čt','pá','so'],
+		weekHeader: 'Týd',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cs']);
+});
+/* Welsh/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by William Griffiths. */
+jQuery(function($){
+	$.datepicker.regional['cy-GB'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['Ionawr','Chwefror','Mawrth','Ebrill','Mai','Mehefin',
+		'Gorffennaf','Awst','Medi','Hydref','Tachwedd','Rhagfyr'],
+		monthNamesShort: ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh',
+		'Gor', 'Aws', 'Med', 'Hyd', 'Tac', 'Rha'],
+		dayNames: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
+		dayNamesShort: ['Sul', 'Llu', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
+		dayNamesMin: ['Su','Ll','Ma','Me','Ia','Gw','Sa'],
+		weekHeader: 'Wy',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['cy-GB']);
+});/* Danish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jan Christensen ( deletestuff@gmail.com). */
+jQuery(function($){
+    $.datepicker.regional['da'] = {
+		closeText: 'Luk',
+        prevText: '&#x3c;Forrige',
+		nextText: 'Næste&#x3e;',
+		currentText: 'Idag',
+        monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
+        'Juli','August','September','Oktober','November','December'],
+        monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+        'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+		dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+		dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+		weekHeader: 'Uge',
+        dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['da']);
+});
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+	$.datepicker.regional['de'] = {
+		closeText: 'schließen',
+		prevText: '&#x3c;zurück',
+		nextText: 'Vor&#x3e;',
+		currentText: 'heute',
+		monthNames: ['Januar','Februar','März','April','Mai','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dez'],
+		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		weekHeader: 'Wo',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['de']);
+});
+/* Greek (el) initialisation for the jQuery UI date picker plugin. */
+/* Written by Alex Cicovic (http://www.alexcicovic.com) */
+jQuery(function($){
+	$.datepicker.regional['el'] = {
+		closeText: 'Κλείσιμο',
+		prevText: 'Προηγούμενος',
+		nextText: 'Επόμενος',
+		currentText: 'Τρέχων Μήνας',
+		monthNames: ['Ιανουάριος','Φεβρουάριος','Μάρτιος','Απρίλιος','Μάιος','Ιούνιος',
+		'Ιούλιος','Αύγουστος','Σεπτέμβριος','Οκτώβριος','Νοέμβριος','Δεκέμβριος'],
+		monthNamesShort: ['Ιαν','Φεβ','Μαρ','Απρ','Μαι','Ιουν',
+		'Ιουλ','Αυγ','Σεπ','Οκτ','Νοε','Δεκ'],
+		dayNames: ['Κυριακή','Δευτέρα','Τρίτη','Τετάρτη','Πέμπτη','Παρασκευή','Σάββατο'],
+		dayNamesShort: ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'],
+		dayNamesMin: ['Κυ','Δε','Τρ','Τε','Πε','Πα','Σα'],
+		weekHeader: 'Εβδ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['el']);
+});/* English/Australia initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-AU'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-AU']);
+});
+/* English/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by Stuart. */
+jQuery(function($){
+	$.datepicker.regional['en-GB'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-GB']);
+});
+/* English/New Zealand initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-NZ'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-NZ']);
+});
+/* Esperanto initialisation for the jQuery UI date picker plugin. */
+/* Written by Olivier M. (olivierweb@ifrance.com). */
+jQuery(function($){
+	$.datepicker.regional['eo'] = {
+		closeText: 'Fermi',
+		prevText: '&lt;Anta',
+		nextText: 'Sekv&gt;',
+		currentText: 'Nuna',
+		monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio',
+		'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Aŭg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'],
+		weekHeader: 'Sb',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eo']);
+});
+/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
+/* Traducido por Vester (xvester@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['es'] = {
+		closeText: 'Cerrar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Sig&#x3e;',
+		currentText: 'Hoy',
+		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
+		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
+		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
+		'Jul','Ago','Sep','Oct','Nov','Dic'],
+		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
+		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['es']);
+});/* Estonian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
+jQuery(function($){
+	$.datepicker.regional['et'] = {
+		closeText: 'Sulge',
+		prevText: 'Eelnev',
+		nextText: 'Järgnev',
+		currentText: 'Täna',
+		monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',
+		'Juuli','August','September','Oktoober','November','Detsember'],
+		monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',
+		'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
+		dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],
+		dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],
+		dayNamesMin: ['P','E','T','K','N','R','L'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['et']);
+}); /* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */
+/* Karrikas-ek itzulia (karrikas@karrikas.com) */
+jQuery(function($){
+	$.datepicker.regional['eu'] = {
+		closeText: 'Egina',
+		prevText: '&#x3c;Aur',
+		nextText: 'Hur&#x3e;',
+		currentText: 'Gaur',
+		monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina',
+		'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
+		monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka',
+		'Uzt','Abu','Ira','Urr','Aza','Abe'],
+		dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],
+		dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],
+		dayNamesMin: ['Ig','As','As','As','Os','Os','La'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['eu']);
+});/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
+/* Javad Mowlanezhad -- jmowla@gmail.com */
+/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
+jQuery(function($) {
+	$.datepicker.regional['fa'] = {
+		closeText: 'بستن',
+		prevText: '&#x3c;قبلي',
+		nextText: 'بعدي&#x3e;',
+		currentText: 'امروز',
+		monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور',
+		'مهر','آبان','آذر','دي','بهمن','اسفند'],
+		monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
+		dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'],
+		dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'],
+		dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'],
+		weekHeader: 'هف',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 6,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fa']);
+});/* Finnish initialisation for the jQuery UI date picker plugin. */
+/* Written by Harri Kilpi� (harrikilpio@gmail.com). */
+jQuery(function($){
+    $.datepicker.regional['fi'] = {
+		closeText: 'Sulje',
+		prevText: '&laquo;Edellinen',
+		nextText: 'Seuraava&raquo;',
+		currentText: 'T&auml;n&auml;&auml;n',
+        monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kes&auml;kuu',
+        'Hein&auml;kuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
+        monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kes&auml;',
+        'Hein&auml;','Elo','Syys','Loka','Marras','Joulu'],
+		dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'],
+		dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
+		dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		weekHeader: 'Vk',
+        dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['fi']);
+});
+/* Faroese initialisation for the jQuery UI date picker plugin */
+/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
+jQuery(function($){
+	$.datepicker.regional['fo'] = {
+		closeText: 'Lat aftur',
+		prevText: '&#x3c;Fyrra',
+		nextText: 'Næsta&#x3e;',
+		currentText: 'Í dag',
+		monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni',
+		'Juli','August','September','Oktober','November','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Des'],
+		dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],
+		dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],
+		dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'],
+		weekHeader: 'Vk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fo']);
+});
+/* Swiss-French initialisation for the jQuery UI date picker plugin. */
+/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
+jQuery(function($){
+	$.datepicker.regional['fr-CH'] = {
+		closeText: 'Fermer',
+		prevText: '&#x3c;Préc',
+		nextText: 'Suiv&#x3e;',
+		currentText: 'Courant',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
+		'Jul','Aoû','Sep','Oct','Nov','Déc'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
+		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr-CH']);
+});/* French initialisation for the jQuery UI date picker plugin. */
+/* Written by Keith Wood (kbwood{at}iinet.com.au),
+              Stéphane Nahmani (sholby@sholby.net),
+              Stéphane Raimbault <stephane.raimbault@gmail.com> */
+jQuery(function($){
+	$.datepicker.regional['fr'] = {
+		closeText: 'Fermer',
+		prevText: 'Précédent',
+		nextText: 'Suivant',
+		currentText: 'Aujourd\'hui',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',
+		'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
+		dayNamesMin: ['D','L','M','M','J','V','S'],
+		weekHeader: 'Sem.',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr']);
+});
+/* Galician localization for 'UI date picker' jQuery extension. */
+/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
+jQuery(function($){
+	$.datepicker.regional['gl'] = {
+		closeText: 'Pechar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Seg&#x3e;',
+		currentText: 'Hoxe',
+		monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',
+		'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],
+		monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',
+		'Xul','Ago','Set','Out','Nov','Dec'],
+		dayNames: ['Domingo','Luns','Martes','M&eacute;rcores','Xoves','Venres','S&aacute;bado'],
+		dayNamesShort: ['Dom','Lun','Mar','M&eacute;r','Xov','Ven','S&aacute;b'],
+		dayNamesMin: ['Do','Lu','Ma','M&eacute;','Xo','Ve','S&aacute;'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['gl']);
+});/* Hebrew initialisation for the UI Datepicker extension. */
+/* Written by Amir Hardon (ahardon at gmail dot com). */
+jQuery(function($){
+	$.datepicker.regional['he'] = {
+		closeText: 'סגור',
+		prevText: '&#x3c;הקודם',
+		nextText: 'הבא&#x3e;',
+		currentText: 'היום',
+		monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
+		'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
+		monthNamesShort: ['1','2','3','4','5','6',
+		'7','8','9','10','11','12'],
+		dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
+		dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['he']);
+});
+/* Croatian i18n for the jQuery UI date picker plugin. */
+/* Written by Vjekoslav Nesek. */
+jQuery(function($){
+	$.datepicker.regional['hr'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Danas',
+		monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
+		'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
+		monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
+		'Srp','Kol','Ruj','Lis','Stu','Pro'],
+		dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Tje',
+		dateFormat: 'dd.mm.yy.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hr']);
+});/* Hungarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
+jQuery(function($){
+	$.datepicker.regional['hu'] = {
+		closeText: 'bezár',
+		prevText: 'vissza',
+		nextText: 'előre',
+		currentText: 'ma',
+		monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
+		'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
+		monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
+		'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
+		dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
+		dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
+		dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+		weekHeader: 'Hét',
+		dateFormat: 'yy.mm.dd.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hu']);
+});
+/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
+jQuery(function($){
+	$.datepicker.regional['hy'] = {
+		closeText: 'Փակել',
+		prevText: '&#x3c;Նախ.',
+		nextText: 'Հաջ.&#x3e;',
+		currentText: 'Այսօր',
+		monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',
+		'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],
+		monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',
+		'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],
+		dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],
+		dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		weekHeader: 'ՇԲՏ',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hy']);
+});/* Indonesian initialisation for the jQuery UI date picker plugin. */
+/* Written by Deden Fathurahman (dedenf@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['id'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3c;mundur',
+		nextText: 'maju&#x3e;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
+		'Juli','Agustus','September','Oktober','Nopember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Agus','Sep','Okt','Nop','Des'],
+		dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
+		dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
+		dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['id']);
+});/* Icelandic initialisation for the jQuery UI date picker plugin. */
+/* Written by Haukur H. Thorsson (haukur@eskill.is). */
+jQuery(function($){
+	$.datepicker.regional['is'] = {
+		closeText: 'Loka',
+		prevText: '&#x3c; Fyrri',
+		nextText: 'N&aelig;sti &#x3e;',
+		currentText: '&Iacute; dag',
+		monthNames: ['Jan&uacute;ar','Febr&uacute;ar','Mars','Apr&iacute;l','Ma&iacute','J&uacute;n&iacute;',
+		'J&uacute;l&iacute;','&Aacute;g&uacute;st','September','Okt&oacute;ber','N&oacute;vember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Ma&iacute;','J&uacute;n',
+		'J&uacute;l','&Aacute;g&uacute;','Sep','Okt','N&oacute;v','Des'],
+		dayNames: ['Sunnudagur','M&aacute;nudagur','&THORN;ri&eth;judagur','Mi&eth;vikudagur','Fimmtudagur','F&ouml;studagur','Laugardagur'],
+		dayNamesShort: ['Sun','M&aacute;n','&THORN;ri','Mi&eth;','Fim','F&ouml;s','Lau'],
+		dayNamesMin: ['Su','M&aacute;','&THORN;r','Mi','Fi','F&ouml;','La'],
+		weekHeader: 'Vika',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['is']);
+});/* Italian initialisation for the jQuery UI date picker plugin. */
+/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['it'] = {
+		closeText: 'Chiudi',
+		prevText: '&#x3c;Prec',
+		nextText: 'Succ&#x3e;',
+		currentText: 'Oggi',
+		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
+			'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
+			'Lug','Ago','Set','Ott','Nov','Dic'],
+		dayNames: ['Domenica','Luned&#236','Marted&#236','Mercoled&#236','Gioved&#236','Venerd&#236','Sabato'],
+		dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
+		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['it']);
+});
+/* Japanese initialisation for the jQuery UI date picker plugin. */
+/* Written by Kentaro SATO (kentaro@ranvis.com). */
+jQuery(function($){
+	$.datepicker.regional['ja'] = {
+		closeText: '閉じる',
+		prevText: '&#x3c;前',
+		nextText: '次&#x3e;',
+		currentText: '今日',
+		monthNames: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		monthNamesShort: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
+		dayNamesShort: ['日','月','火','水','木','金','土'],
+		dayNamesMin: ['日','月','火','水','木','金','土'],
+		weekHeader: '週',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['ja']);
+});/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['kk'] = {
+		closeText: 'Жабу',
+		prevText: '&#x3c;Алдыңғы',
+		nextText: 'Келесі&#x3e;',
+		currentText: 'Бүгін',
+		monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',
+		'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],
+		monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',
+		'Шіл','Там','Қыр','Қаз','Қар','Жел'],
+		dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],
+		dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],
+		dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],
+		weekHeader: 'Не',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['kk']);
+});
+/* Korean initialisation for the jQuery calendar extension. */
+/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ko'] = {
+		closeText: '닫기',
+		prevText: '이전달',
+		nextText: '다음달',
+		currentText: '오늘',
+		monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
+		'7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
+		monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
+		'7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
+		dayNames: ['일','월','화','수','목','금','토'],
+		dayNamesShort: ['일','월','화','수','목','금','토'],
+		dayNamesMin: ['일','월','화','수','목','금','토'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: '년'};
+	$.datepicker.setDefaults($.datepicker.regional['ko']);
+});/* Luxembourgish initialisation for the jQuery UI date picker plugin. */
+/* Written by Michel Weimerskirch <michel@weimerskirch.net> */
+jQuery(function($){
+	$.datepicker.regional['lb'] = {
+		closeText: 'Fäerdeg',
+		prevText: 'Zréck',
+		nextText: 'Weider',
+		currentText: 'Haut',
+		monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+		dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
+		dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
+		dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'],
+		weekHeader: 'W',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lb']);
+});
+/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas@avalon.lt> */
+jQuery(function($){
+	$.datepicker.regional['lt'] = {
+		closeText: 'Uždaryti',
+		prevText: '&#x3c;Atgal',
+		nextText: 'Pirmyn&#x3e;',
+		currentText: 'Šiandien',
+		monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
+		'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
+		monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
+		'Lie','Rugp','Rugs','Spa','Lap','Gru'],
+		dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
+		dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
+		dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lt']);
+});/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
+jQuery(function($){
+	$.datepicker.regional['lv'] = {
+		closeText: 'Aizvērt',
+		prevText: 'Iepr',
+		nextText: 'Nāka',
+		currentText: 'Šodien',
+		monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
+		'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
+		'Jūl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
+		dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
+		dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
+		weekHeader: 'Nav',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lv']);
+});/* Macedonian i18n for the jQuery UI date picker plugin. */
+/* Written by Stojce Slavkovski. */
+jQuery(function($){
+	$.datepicker.regional['mk'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3C;',
+		nextText: '&#x3E;',
+		currentText: 'Денес',
+		monthNames: ['Јануари','Фебруари','Март','Април','Мај','Јуни',
+		'Јули','Август','Септември','Октомври','Ноември','Декември'],
+		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Ное','Дек'],
+		dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'],
+		dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'],
+		dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['mk']);
+});
+/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Saji Nediyanchath (saji89@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ml'] = {
+		closeText: 'ശരി',
+		prevText: 'മുന്നത്തെ',  
+		nextText: 'അടുത്തത് ',
+		currentText: 'ഇന്ന്',
+		monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',
+		'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],
+		monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',
+		'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],
+		dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],
+		weekHeader: 'ആ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ml']);
+});
+/* Malaysian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
+jQuery(function($){
+	$.datepicker.regional['ms'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3c;Sebelum',
+		nextText: 'Selepas&#x3e;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Mac','April','Mei','Jun',
+		'Julai','Ogos','September','Oktober','November','Disember'],
+		monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',
+		'Jul','Ogo','Sep','Okt','Nov','Dis'],
+		dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],
+		dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],
+		dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ms']);
+});﻿/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */
+/* David De Sloovere @DavidDeSloovere */
+jQuery(function($){
+	$.datepicker.regional['nl-BE'] = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['nl-BE']);
+});/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Mathias Bynens <http://mathiasbynens.be/> */
+jQuery(function($){
+	$.datepicker.regional.nl = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional.nl);
+});/* Norwegian initialisation for the jQuery UI date picker plugin. */
+/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
+
+jQuery(function($){
+  $.datepicker.regional['no'] = {
+    closeText: 'Lukk',
+    prevText: '&laquo;Forrige',
+    nextText: 'Neste&raquo;',
+    currentText: 'I dag',
+    monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+    monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+    dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+    dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+    dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+    weekHeader: 'Uke',
+    dateFormat: 'dd.mm.yy',
+    firstDay: 1,
+    isRTL: false,
+    showMonthAfterYear: false,
+    yearSuffix: ''
+  };
+  $.datepicker.setDefaults($.datepicker.regional['no']);
+});
+/* Polish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pl'] = {
+		closeText: 'Zamknij',
+		prevText: '&#x3c;Poprzedni',
+		nextText: 'Następny&#x3e;',
+		currentText: 'Dziś',
+		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
+		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
+		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
+		'Lip','Sie','Wrz','Pa','Lis','Gru'],
+		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
+		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
+		dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
+		weekHeader: 'Tydz',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pl']);
+});
+/* Brazilian initialisation for the jQuery UI date picker plugin. */
+/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pt-BR'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3c;Anterior',
+		nextText: 'Pr&oacute;ximo&#x3e;',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','S&aacute;bado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt-BR']);
+});/* Portuguese initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+	$.datepicker.regional['pt'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3c;Anterior',
+		nextText: 'Seguinte',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','S&aacute;bado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		weekHeader: 'Sem',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt']);
+});/* Romansh initialisation for the jQuery UI date picker plugin. */
+/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */
+jQuery(function($){
+	$.datepicker.regional['rm'] = {
+		closeText: 'Serrar',
+		prevText: '&#x3c;Suandant',
+		nextText: 'Precedent&#x3e;',
+		currentText: 'Actual',
+		monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],
+		monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],
+		dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],
+		dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],
+		dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],
+		weekHeader: 'emna',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['rm']);
+});
+/* Romanian initialisation for the jQuery UI date picker plugin.
+ *
+ * Written by Edmond L. (ll_edmond@walla.com)
+ * and Ionut G. Stan (ionut.g.stan@gmail.com)
+ */
+jQuery(function($){
+	$.datepicker.regional['ro'] = {
+		closeText: 'Închide',
+		prevText: '&laquo; Luna precedentă',
+		nextText: 'Luna următoare &raquo;',
+		currentText: 'Azi',
+		monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie',
+		'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
+		monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
+		'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
+		dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
+		dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],
+		weekHeader: 'Săpt',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ro']);
+});
+/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Andrew Stromnov (stromnov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ru'] = {
+		closeText: 'Закрыть',
+		prevText: '&#x3c;Пред',
+		nextText: 'След&#x3e;',
+		currentText: 'Сегодня',
+		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Нед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ru']);
+});/* Slovak initialisation for the jQuery UI date picker plugin. */
+/* Written by Vojtech Rinik (vojto@hmm.sk). */
+jQuery(function($){
+	$.datepicker.regional['sk'] = {
+		closeText: 'Zavrieť',
+		prevText: '&#x3c;Predchádzajúci',
+		nextText: 'Nasledujúci&#x3e;',
+		currentText: 'Dnes',
+		monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
+		'Júl','August','September','Október','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
+		'Júl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
+		dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
+		dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
+		weekHeader: 'Ty',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sk']);
+});
+/* Slovenian initialisation for the jQuery UI date picker plugin. */
+/* Written by Jaka Jancar (jaka@kubje.org). */
+/* c = &#x10D;, s = &#x161; z = &#x17E; C = &#x10C; S = &#x160; Z = &#x17D; */
+jQuery(function($){
+	$.datepicker.regional['sl'] = {
+		closeText: 'Zapri',
+		prevText: '&lt;Prej&#x161;nji',
+		nextText: 'Naslednji&gt;',
+		currentText: 'Trenutni',
+		monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
+		'Julij','Avgust','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','&#x10C;etrtek','Petek','Sobota'],
+		dayNamesShort: ['Ned','Pon','Tor','Sre','&#x10C;et','Pet','Sob'],
+		dayNamesMin: ['Ne','Po','To','Sr','&#x10C;e','Pe','So'],
+		weekHeader: 'Teden',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sl']);
+});
+/* Albanian initialisation for the jQuery UI date picker plugin. */
+/* Written by Flakron Bytyqi (flakron@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['sq'] = {
+		closeText: 'mbylle',
+		prevText: '&#x3c;mbrapa',
+		nextText: 'Përpara&#x3e;',
+		currentText: 'sot',
+		monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor',
+		'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],
+		monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer',
+		'Kor','Gus','Sht','Tet','Nën','Dhj'],
+		dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],
+		dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'],
+		weekHeader: 'Ja',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sq']);
+});
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr-SR'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Jun',
+		'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Sed',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr-SR']);
+});
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Данас',
+		monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',
+		'Јул','Август','Септембар','Октобар','Новембар','Децембар'],
+		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Нов','Дец'],
+		dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
+		dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
+		dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr']);
+});
+/* Swedish initialisation for the jQuery UI date picker plugin. */
+/* Written by Anders Ekdahl ( anders@nomadiz.se). */
+jQuery(function($){
+    $.datepicker.regional['sv'] = {
+		closeText: 'Stäng',
+        prevText: '&laquo;Förra',
+		nextText: 'Nästa&raquo;',
+		currentText: 'Idag',
+        monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
+        'Juli','Augusti','September','Oktober','November','December'],
+        monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+        'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
+		dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
+		dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
+		weekHeader: 'Ve',
+        dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['sv']);
+});
+/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by S A Sureshkumar (saskumar@live.com). */
+jQuery(function($){
+	$.datepicker.regional['ta'] = {
+		closeText: 'மூடு',
+		prevText: 'முன்னையது',
+		nextText: 'அடுத்தது',
+		currentText: 'இன்று',
+		monthNames: ['தை','மாசி','பங்குனி','சித்திரை','வைகாசி','ஆனி',
+		'ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி'],
+		monthNamesShort: ['தை','மாசி','பங்','சித்','வைகா','ஆனி',
+		'ஆடி','ஆவ','புர','ஐப்','கார்','மார்'],
+		dayNames: ['ஞாயிற்றுக்கிழமை','திங்கட்கிழமை','செவ்வாய்க்கிழமை','புதன்கிழமை','வியாழக்கிழமை','வெள்ளிக்கிழமை','சனிக்கிழமை'],
+		dayNamesShort: ['ஞாயிறு','திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி'],
+		dayNamesMin: ['ஞா','தி','செ','பு','வி','வெ','ச'],
+		weekHeader: 'Не',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ta']);
+});
+/* Thai initialisation for the jQuery UI date picker plugin. */
+/* Written by pipo (pipo@sixhead.com). */
+jQuery(function($){
+	$.datepicker.regional['th'] = {
+		closeText: 'ปิด',
+		prevText: '&laquo;&nbsp;ย้อน',
+		nextText: 'ถัดไป&nbsp;&raquo;',
+		currentText: 'วันนี้',
+		monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
+		'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
+		monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
+		'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
+		dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
+		dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['th']);
+});/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Abdurahmon Saidov (saidovab@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['tj'] = {
+		closeText: 'Идома',
+		prevText: '&#x3c;Қафо',
+		nextText: 'Пеш&#x3e;',
+		currentText: 'Имрӯз',
+		monthNames: ['Январ','Феврал','Март','Апрел','Май','Июн',
+		'Июл','Август','Сентябр','Октябр','Ноябр','Декабр'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['якшанбе','душанбе','сешанбе','чоршанбе','панҷшанбе','ҷумъа','шанбе'],
+		dayNamesShort: ['якш','душ','сеш','чор','пан','ҷум','шан'],
+		dayNamesMin: ['Як','Дш','Сш','Чш','Пш','Ҷм','Шн'],
+		weekHeader: 'Хф',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tj']);
+});/* Turkish initialisation for the jQuery UI date picker plugin. */
+/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
+jQuery(function($){
+	$.datepicker.regional['tr'] = {
+		closeText: 'kapat',
+		prevText: '&#x3c;geri',
+		nextText: 'ileri&#x3e',
+		currentText: 'bugün',
+		monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
+		'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
+		monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
+		'Tem','Ağu','Eyl','Eki','Kas','Ara'],
+		dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
+		dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tr']);
+});/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
+/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['uk'] = {
+		closeText: 'Закрити',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Сьогодні',
+		monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
+		'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
+		monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
+		'Лип','Сер','Вер','Жов','Лис','Гру'],
+		dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'],
+		dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Тиж',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['uk']);
+});/* Vietnamese initialisation for the jQuery UI date picker plugin. */
+/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
+jQuery(function($){
+	$.datepicker.regional['vi'] = {
+		closeText: 'Đóng',
+		prevText: '&#x3c;Trước',
+		nextText: 'Tiếp&#x3e;',
+		currentText: 'Hôm nay',
+		monthNames: ['Tháng Một', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu',
+		'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mười', 'Tháng Mười Một', 'Tháng Mười Hai'],
+		monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6',
+		'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
+		dayNames: ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'],
+		dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+		weekHeader: 'Tu',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['vi']);
+});
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Cloudream (cloudream@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-CN'] = {
+		closeText: '关闭',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by SCCY (samuelcychan@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-HK'] = {
+		closeText: '關閉',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-HK']);
+});
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Ressol (ressol@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-TW'] = {
+		closeText: '關閉',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery-ui-i18n.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr-SR.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr-SR.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr-SR.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr-SR'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Danas',
+		monthNames: ['Januar','Februar','Mart','April','Maj','Jun',
+		'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sre','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Sed',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr-SR']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr-SR.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr.js	(revision 1610)
@@ -0,0 +1,25 @@
+/* French initialisation for the jQuery UI date picker plugin. */
+/* Written by Keith Wood (kbwood{at}iinet.com.au),
+              Stéphane Nahmani (sholby@sholby.net),
+              Stéphane Raimbault <stephane.raimbault@gmail.com> */
+jQuery(function($){
+	$.datepicker.regional['fr'] = {
+		closeText: 'Fermer',
+		prevText: 'Précédent',
+		nextText: 'Suivant',
+		currentText: 'Aujourd\'hui',
+		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
+		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
+		monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',
+		'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],
+		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
+		dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
+		dayNamesMin: ['D','L','M','M','J','V','S'],
+		weekHeader: 'Sem.',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fr']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-et.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-et.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-et.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Estonian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
+jQuery(function($){
+	$.datepicker.regional['et'] = {
+		closeText: 'Sulge',
+		prevText: 'Eelnev',
+		nextText: 'Järgnev',
+		currentText: 'Täna',
+		monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni',
+		'Juuli','August','September','Oktoober','November','Detsember'],
+		monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni',
+		'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
+		dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'],
+		dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'],
+		dayNamesMin: ['P','E','T','K','N','R','L'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['et']);
+}); 
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-et.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ml.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ml.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ml.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Saji Nediyanchath (saji89@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ml'] = {
+		closeText: 'ശരി',
+		prevText: 'മുന്നത്തെ',  
+		nextText: 'അടുത്തത് ',
+		currentText: 'ഇന്ന്',
+		monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍',
+		'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'],
+		monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍',
+		'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],
+		dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+		dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],
+		weekHeader: 'ആ',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ml']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ml.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hr.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hr.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Croatian i18n for the jQuery UI date picker plugin. */
+/* Written by Vjekoslav Nesek. */
+jQuery(function($){
+	$.datepicker.regional['hr'] = {
+		closeText: 'Zatvori',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Danas',
+		monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
+		'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
+		monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
+		'Srp','Kol','Ruj','Lis','Stu','Pro'],
+		dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
+		dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
+		dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
+		weekHeader: 'Tje',
+		dateFormat: 'dd.mm.yy.',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hr']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-nl.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-nl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-nl.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Mathias Bynens <http://mathiasbynens.be/> */
+jQuery(function($){
+	$.datepicker.regional.nl = {
+		closeText: 'Sluiten',
+		prevText: '←',
+		nextText: '→',
+		currentText: 'Vandaag',
+		monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
+		'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+		monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun',
+		'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+		dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+		dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+		dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional.nl);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-nl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-TW.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-TW.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-TW.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Ressol (ressol@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-TW'] = {
+		closeText: '關閉',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-TW']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-TW.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-az.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-az.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-az.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Jamil Najafov (necefov33@gmail.com). */
+jQuery(function($) {
+	$.datepicker.regional['az'] = {
+		closeText: 'Bağla',
+		prevText: '&#x3c;Geri',
+		nextText: 'İrəli&#x3e;',
+		currentText: 'Bugün',
+		monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
+		'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
+		monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
+		'İyul','Avq','Sen','Okt','Noy','Dek'],
+		dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
+		dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
+		dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['az']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-az.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-th.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-th.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-th.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Thai initialisation for the jQuery UI date picker plugin. */
+/* Written by pipo (pipo@sixhead.com). */
+jQuery(function($){
+	$.datepicker.regional['th'] = {
+		closeText: 'ปิด',
+		prevText: '&laquo;&nbsp;ย้อน',
+		nextText: 'ถัดไป&nbsp;&raquo;',
+		currentText: 'วันนี้',
+		monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
+		'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
+		monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
+		'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
+		dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
+		dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['th']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-th.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-da.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-da.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-da.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Danish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jan Christensen ( deletestuff@gmail.com). */
+jQuery(function($){
+    $.datepicker.regional['da'] = {
+		closeText: 'Luk',
+        prevText: '&#x3c;Forrige',
+		nextText: 'Næste&#x3e;',
+		currentText: 'Idag',
+        monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
+        'Juli','August','September','Oktober','November','December'],
+        monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+        'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
+		dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
+		dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
+		weekHeader: 'Uge',
+        dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['da']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-da.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Serbian i18n for the jQuery UI date picker plugin. */
+/* Written by Dejan Dimić. */
+jQuery(function($){
+	$.datepicker.regional['sr'] = {
+		closeText: 'Затвори',
+		prevText: '&#x3c;',
+		nextText: '&#x3e;',
+		currentText: 'Данас',
+		monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун',
+		'Јул','Август','Септембар','Октобар','Новембар','Децембар'],
+		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун',
+		'Јул','Авг','Сеп','Окт','Нов','Дец'],
+		dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
+		dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
+		dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
+		weekHeader: 'Сед',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sr']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fa.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fa.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fa.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
+/* Javad Mowlanezhad -- jmowla@gmail.com */
+/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
+jQuery(function($) {
+	$.datepicker.regional['fa'] = {
+		closeText: 'بستن',
+		prevText: '&#x3c;قبلي',
+		nextText: 'بعدي&#x3e;',
+		currentText: 'امروز',
+		monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور',
+		'مهر','آبان','آذر','دي','بهمن','اسفند'],
+		monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
+		dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'],
+		dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'],
+		dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'],
+		weekHeader: 'هف',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 6,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['fa']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fa.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bg.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bg.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bg.js	(revision 1610)
@@ -0,0 +1,24 @@
+/* Bulgarian initialisation for the jQuery UI date picker plugin. */
+/* Written by Stoyan Kyosev (http://svest.org). */
+jQuery(function($){
+    $.datepicker.regional['bg'] = {
+        closeText: 'затвори',
+        prevText: '&#x3c;назад',
+        nextText: 'напред&#x3e;',
+		nextBigText: '&#x3e;&#x3e;',
+        currentText: 'днес',
+        monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
+        'Юли','Август','Септември','Октомври','Ноември','Декември'],
+        monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
+        'Юли','Авг','Сеп','Окт','Нов','Дек'],
+        dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
+        dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
+        dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
+		weekHeader: 'Wk',
+        dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+        isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['bg']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-bg.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-de.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-de.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-de.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* German initialisation for the jQuery UI date picker plugin. */
+/* Written by Milian Wolff (mail@milianw.de). */
+jQuery(function($){
+	$.datepicker.regional['de'] = {
+		closeText: 'schließen',
+		prevText: '&#x3c;zurück',
+		nextText: 'Vor&#x3e;',
+		currentText: 'heute',
+		monthNames: ['Januar','Februar','März','April','Mai','Juni',
+		'Juli','August','September','Oktober','November','Dezember'],
+		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+		'Jul','Aug','Sep','Okt','Nov','Dez'],
+		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+		weekHeader: 'Wo',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['de']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-de.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-GB.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-GB.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-GB.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* English/UK initialisation for the jQuery UI date picker plugin. */
+/* Written by Stuart. */
+jQuery(function($){
+	$.datepicker.regional['en-GB'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-GB']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-GB.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sv.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sv.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sv.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Swedish initialisation for the jQuery UI date picker plugin. */
+/* Written by Anders Ekdahl ( anders@nomadiz.se). */
+jQuery(function($){
+    $.datepicker.regional['sv'] = {
+		closeText: 'Stäng',
+        prevText: '&laquo;Förra',
+		nextText: 'Nästa&raquo;',
+		currentText: 'Idag',
+        monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
+        'Juli','Augusti','September','Oktober','November','December'],
+        monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+        'Jul','Aug','Sep','Okt','Nov','Dec'],
+		dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
+		dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
+		dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
+		weekHeader: 'Ve',
+        dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['sv']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sv.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ja.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ja.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ja.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Japanese initialisation for the jQuery UI date picker plugin. */
+/* Written by Kentaro SATO (kentaro@ranvis.com). */
+jQuery(function($){
+	$.datepicker.regional['ja'] = {
+		closeText: '閉じる',
+		prevText: '&#x3c;前',
+		nextText: '次&#x3e;',
+		currentText: '今日',
+		monthNames: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		monthNamesShort: ['1月','2月','3月','4月','5月','6月',
+		'7月','8月','9月','10月','11月','12月'],
+		dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
+		dayNamesShort: ['日','月','火','水','木','金','土'],
+		dayNamesMin: ['日','月','火','水','木','金','土'],
+		weekHeader: '週',
+		dateFormat: 'yy/mm/dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['ja']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ja.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-he.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-he.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-he.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Hebrew initialisation for the UI Datepicker extension. */
+/* Written by Amir Hardon (ahardon at gmail dot com). */
+jQuery(function($){
+	$.datepicker.regional['he'] = {
+		closeText: 'סגור',
+		prevText: '&#x3c;הקודם',
+		nextText: 'הבא&#x3e;',
+		currentText: 'היום',
+		monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
+		'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
+		monthNamesShort: ['1','2','3','4','5','6',
+		'7','8','9','10','11','12'],
+		dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
+		dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['he']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-he.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-no.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-no.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-no.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Norwegian initialisation for the jQuery UI date picker plugin. */
+/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
+
+jQuery(function($){
+  $.datepicker.regional['no'] = {
+    closeText: 'Lukk',
+    prevText: '&laquo;Forrige',
+    nextText: 'Neste&raquo;',
+    currentText: 'I dag',
+    monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'],
+    monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'],
+    dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'],
+    dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'],
+    dayNamesMin: ['sø','ma','ti','on','to','fr','lø'],
+    weekHeader: 'Uke',
+    dateFormat: 'dd.mm.yy',
+    firstDay: 1,
+    isRTL: false,
+    showMonthAfterYear: false,
+    yearSuffix: ''
+  };
+  $.datepicker.setDefaults($.datepicker.regional['no']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-no.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar-DZ.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar-DZ.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar-DZ.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Algerian Arabic Translation for jQuery UI date picker plugin. (can be used for Tunisia)*/
+/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
+
+jQuery(function($){
+	$.datepicker.regional['ar-DZ'] = {
+		closeText: 'إغلاق',
+		prevText: '&#x3c;السابق',
+		nextText: 'التالي&#x3e;',
+		currentText: 'اليوم',
+		monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',
+		'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],
+		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+		dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+		weekHeader: 'أسبوع',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 6,
+  		isRTL: true,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ar-DZ']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ar-DZ.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-rm.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-rm.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-rm.js	(revision 1610)
@@ -0,0 +1,21 @@
+/* Romansh initialisation for the jQuery UI date picker plugin. */
+/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */
+jQuery(function($){
+	$.datepicker.regional['rm'] = {
+		closeText: 'Serrar',
+		prevText: '&#x3c;Suandant',
+		nextText: 'Precedent&#x3e;',
+		currentText: 'Actual',
+		monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'],
+		monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'],
+		dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'],
+		dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'],
+		dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'],
+		weekHeader: 'emna',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['rm']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-rm.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ru.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ru.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ru.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Andrew Stromnov (stromnov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ru'] = {
+		closeText: 'Закрыть',
+		prevText: '&#x3c;Пред',
+		nextText: 'След&#x3e;',
+		currentText: 'Сегодня',
+		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+		'Июл','Авг','Сен','Окт','Ноя','Дек'],
+		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+		weekHeader: 'Нед',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ru']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ru.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-NZ.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-NZ.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-NZ.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* English/New Zealand initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-NZ'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-NZ']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-NZ.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-gl.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-gl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-gl.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Galician localization for 'UI date picker' jQuery extension. */
+/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
+jQuery(function($){
+	$.datepicker.regional['gl'] = {
+		closeText: 'Pechar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Seg&#x3e;',
+		currentText: 'Hoxe',
+		monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño',
+		'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'],
+		monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ',
+		'Xul','Ago','Set','Out','Nov','Dec'],
+		dayNames: ['Domingo','Luns','Martes','M&eacute;rcores','Xoves','Venres','S&aacute;bado'],
+		dayNamesShort: ['Dom','Lun','Mar','M&eacute;r','Xov','Ven','S&aacute;b'],
+		dayNamesMin: ['Do','Lu','Ma','M&eacute;','Xo','Ve','S&aacute;'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['gl']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-gl.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-AU.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-AU.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-AU.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* English/Australia initialisation for the jQuery UI date picker plugin. */
+/* Based on the en-GB initialisation. */
+jQuery(function($){
+	$.datepicker.regional['en-AU'] = {
+		closeText: 'Done',
+		prevText: 'Prev',
+		nextText: 'Next',
+		currentText: 'Today',
+		monthNames: ['January','February','March','April','May','June',
+		'July','August','September','October','November','December'],
+		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+		weekHeader: 'Wk',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['en-AU']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-en-AU.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pl.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pl.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Polish initialisation for the jQuery UI date picker plugin. */
+/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pl'] = {
+		closeText: 'Zamknij',
+		prevText: '&#x3c;Poprzedni',
+		nextText: 'Następny&#x3e;',
+		currentText: 'Dziś',
+		monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
+		'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
+		monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
+		'Lip','Sie','Wrz','Pa','Lis','Gru'],
+		dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
+		dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
+		dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
+		weekHeader: 'Tydz',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pl']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt.js	(revision 1610)
@@ -0,0 +1,22 @@
+/* Portuguese initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+	$.datepicker.regional['pt'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3c;Anterior',
+		nextText: 'Seguinte',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','S&aacute;bado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		weekHeader: 'Sem',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt-BR.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt-BR.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt-BR.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Brazilian initialisation for the jQuery UI date picker plugin. */
+/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['pt-BR'] = {
+		closeText: 'Fechar',
+		prevText: '&#x3c;Anterior',
+		nextText: 'Pr&oacute;ximo&#x3e;',
+		currentText: 'Hoje',
+		monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
+		'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
+		monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Out','Nov','Dez'],
+		dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','S&aacute;bado'],
+		dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','S&aacute;b'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['pt-BR']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-pt-BR.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-kz.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-kz.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-kz.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['kz'] = {
+		closeText: 'Жабу',
+		prevText: '&#x3c;Алдыңғы',
+		nextText: 'Келесі&#x3e;',
+		currentText: 'Бүгін',
+		monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым',
+		'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'],
+		monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау',
+		'Шіл','Там','Қыр','Қаз','Қар','Жел'],
+		dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'],
+		dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'],
+		dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'],
+		weekHeader: 'Не',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['kz']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-kz.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-es.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-es.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-es.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
+/* Traducido por Vester (xvester@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['es'] = {
+		closeText: 'Cerrar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Sig&#x3e;',
+		currentText: 'Hoy',
+		monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
+		'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
+		monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
+		'Jul','Ago','Sep','Oct','Nov','Dic'],
+		dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
+		dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
+		dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['es']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-es.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ko.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ko.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ko.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Korean initialisation for the jQuery calendar extension. */
+/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ko'] = {
+		closeText: '닫기',
+		prevText: '이전달',
+		nextText: '다음달',
+		currentText: '오늘',
+		monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
+		'7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
+		monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
+		'7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
+		dayNames: ['일','월','화','수','목','금','토'],
+		dayNamesShort: ['일','월','화','수','목','금','토'],
+		dayNamesMin: ['일','월','화','수','목','금','토'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: '년'};
+	$.datepicker.setDefaults($.datepicker.regional['ko']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ko.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-is.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-is.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-is.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Icelandic initialisation for the jQuery UI date picker plugin. */
+/* Written by Haukur H. Thorsson (haukur@eskill.is). */
+jQuery(function($){
+	$.datepicker.regional['is'] = {
+		closeText: 'Loka',
+		prevText: '&#x3c; Fyrri',
+		nextText: 'N&aelig;sti &#x3e;',
+		currentText: '&Iacute; dag',
+		monthNames: ['Jan&uacute;ar','Febr&uacute;ar','Mars','Apr&iacute;l','Ma&iacute','J&uacute;n&iacute;',
+		'J&uacute;l&iacute;','&Aacute;g&uacute;st','September','Okt&oacute;ber','N&oacute;vember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Ma&iacute;','J&uacute;n',
+		'J&uacute;l','&Aacute;g&uacute;','Sep','Okt','N&oacute;v','Des'],
+		dayNames: ['Sunnudagur','M&aacute;nudagur','&THORN;ri&eth;judagur','Mi&eth;vikudagur','Fimmtudagur','F&ouml;studagur','Laugardagur'],
+		dayNamesShort: ['Sun','M&aacute;n','&THORN;ri','Mi&eth;','Fim','F&ouml;s','Lau'],
+		dayNamesMin: ['Su','M&aacute;','&THORN;r','Mi','Fi','F&ouml;','La'],
+		weekHeader: 'Vika',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['is']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-is.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ms.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ms.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ms.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Malaysian initialisation for the jQuery UI date picker plugin. */
+/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
+jQuery(function($){
+	$.datepicker.regional['ms'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3c;Sebelum',
+		nextText: 'Selepas&#x3e;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Mac','April','Mei','Jun',
+		'Julai','Ogos','September','Oktober','November','Disember'],
+		monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun',
+		'Jul','Ogo','Sep','Okt','Nov','Dis'],
+		dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'],
+		dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'],
+		dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ms']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ms.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hy.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hy.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hy.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
+jQuery(function($){
+	$.datepicker.regional['hy'] = {
+		closeText: 'Փակել',
+		prevText: '&#x3c;Նախ.',
+		nextText: 'Հաջ.&#x3e;',
+		currentText: 'Այսօր',
+		monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',
+		'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],
+		monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',
+		'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],
+		dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],
+		dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
+		weekHeader: 'ՇԲՏ',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['hy']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-hy.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-HK.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-HK.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-HK.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by SCCY (samuelcychan@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-HK'] = {
+		closeText: '關閉',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-HK']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-HK.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-id.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-id.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-id.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Indonesian initialisation for the jQuery UI date picker plugin. */
+/* Written by Deden Fathurahman (dedenf@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['id'] = {
+		closeText: 'Tutup',
+		prevText: '&#x3c;mundur',
+		nextText: 'maju&#x3e;',
+		currentText: 'hari ini',
+		monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
+		'Juli','Agustus','September','Oktober','Nopember','Desember'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
+		'Jul','Agus','Sep','Okt','Nop','Des'],
+		dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
+		dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
+		dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
+		weekHeader: 'Mg',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 0,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['id']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-id.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-it.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-it.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-it.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Italian initialisation for the jQuery UI date picker plugin. */
+/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['it'] = {
+		closeText: 'Chiudi',
+		prevText: '&#x3c;Prec',
+		nextText: 'Succ&#x3e;',
+		currentText: 'Oggi',
+		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
+			'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
+			'Lug','Ago','Set','Ott','Nov','Dic'],
+		dayNames: ['Domenica','Luned&#236','Marted&#236','Mercoled&#236','Gioved&#236','Venerd&#236','Sabato'],
+		dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
+		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['it']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-it.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sl.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sl.js	(revision 1610)
@@ -0,0 +1,24 @@
+/* Slovenian initialisation for the jQuery UI date picker plugin. */
+/* Written by Jaka Jancar (jaka@kubje.org). */
+/* c = &#x10D;, s = &#x161; z = &#x17E; C = &#x10C; S = &#x160; Z = &#x17D; */
+jQuery(function($){
+	$.datepicker.regional['sl'] = {
+		closeText: 'Zapri',
+		prevText: '&lt;Prej&#x161;nji',
+		nextText: 'Naslednji&gt;',
+		currentText: 'Trenutni',
+		monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
+		'Julij','Avgust','September','Oktober','November','December'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
+		'Jul','Avg','Sep','Okt','Nov','Dec'],
+		dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','&#x10C;etrtek','Petek','Sobota'],
+		dayNamesShort: ['Ned','Pon','Tor','Sre','&#x10C;et','Pet','Sob'],
+		dayNamesMin: ['Ne','Po','To','Sr','&#x10C;e','Pe','So'],
+		weekHeader: 'Teden',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['sl']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-sl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lt.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lt.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lt.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas@avalon.lt> */
+jQuery(function($){
+	$.datepicker.regional['lt'] = {
+		closeText: 'Uždaryti',
+		prevText: '&#x3c;Atgal',
+		nextText: 'Pirmyn&#x3e;',
+		currentText: 'Šiandien',
+		monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
+		'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
+		monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
+		'Lie','Rugp','Rugs','Spa','Lap','Gru'],
+		dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
+		dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
+		dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
+		weekHeader: 'Wk',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lt']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lt.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-CN.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-CN.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-CN.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Chinese initialisation for the jQuery UI date picker plugin. */
+/* Written by Cloudream (cloudream@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['zh-CN'] = {
+		closeText: '关闭',
+		prevText: '&#x3c;上月',
+		nextText: '下月&#x3e;',
+		currentText: '今天',
+		monthNames: ['一月','二月','三月','四月','五月','六月',
+		'七月','八月','九月','十月','十一月','十二月'],
+		monthNamesShort: ['一','二','三','四','五','六',
+		'七','八','九','十','十一','十二'],
+		dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+		dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+		dayNamesMin: ['日','一','二','三','四','五','六'],
+		weekHeader: '周',
+		dateFormat: 'yy-mm-dd',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: true,
+		yearSuffix: '年'};
+	$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-zh-CN.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lv.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lv.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lv.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
+jQuery(function($){
+	$.datepicker.regional['lv'] = {
+		closeText: 'Aizvērt',
+		prevText: 'Iepr',
+		nextText: 'Nāka',
+		currentText: 'Šodien',
+		monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
+		'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
+		monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
+		'Jūl','Aug','Sep','Okt','Nov','Dec'],
+		dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
+		dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
+		dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
+		weekHeader: 'Nav',
+		dateFormat: 'dd-mm-yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['lv']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-lv.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ca.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ca.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ca.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Inicialització en català per a l'extenció 'calendar' per jQuery. */
+/* Writers: (joan.leon@gmail.com). */
+jQuery(function($){
+	$.datepicker.regional['ca'] = {
+		closeText: 'Tancar',
+		prevText: '&#x3c;Ant',
+		nextText: 'Seg&#x3e;',
+		currentText: 'Avui',
+		monthNames: ['Gener','Febrer','Mar&ccedil;','Abril','Maig','Juny',
+		'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'],
+		monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun',
+		'Jul','Ago','Set','Oct','Nov','Des'],
+		dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],
+		dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'],
+		dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'],
+		weekHeader: 'Sm',
+		dateFormat: 'dd/mm/yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['ca']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-ca.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-tr.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-tr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-tr.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Turkish initialisation for the jQuery UI date picker plugin. */
+/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
+jQuery(function($){
+	$.datepicker.regional['tr'] = {
+		closeText: 'kapat',
+		prevText: '&#x3c;geri',
+		nextText: 'ileri&#x3e',
+		currentText: 'bugün',
+		monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
+		'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
+		monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
+		'Tem','Ağu','Eyl','Eki','Kas','Ara'],
+		dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
+		dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
+		weekHeader: 'Hf',
+		dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+	$.datepicker.setDefaults($.datepicker.regional['tr']);
+});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-tr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fi.js
===================================================================
--- tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fi.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fi.js	(revision 1610)
@@ -0,0 +1,23 @@
+/* Finnish initialisation for the jQuery UI date picker plugin. */
+/* Written by Harri Kilpi� (harrikilpio@gmail.com). */
+jQuery(function($){
+    $.datepicker.regional['fi'] = {
+		closeText: 'Sulje',
+		prevText: '&laquo;Edellinen',
+		nextText: 'Seuraava&raquo;',
+		currentText: 'T&auml;n&auml;&auml;n',
+        monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kes&auml;kuu',
+        'Hein&auml;kuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
+        monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kes&auml;',
+        'Hein&auml;','Elo','Syys','Loka','Marras','Joulu'],
+		dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'],
+		dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
+		dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
+		weekHeader: 'Vk',
+        dateFormat: 'dd.mm.yy',
+		firstDay: 1,
+		isRTL: false,
+		showMonthAfterYear: false,
+		yearSuffix: ''};
+    $.datepicker.setDefaults($.datepicker.regional['fi']);
+});

Property changes on: tags/2.8.3/wb/include/jquery/i18n/jquery.ui.datepicker-fi.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/GPL-LICENSE.txt
===================================================================
--- tags/2.8.3/wb/include/jquery/GPL-LICENSE.txt	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/GPL-LICENSE.txt	(revision 1610)
@@ -0,0 +1,278 @@
+        GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.

Property changes on: tags/2.8.3/wb/include/jquery/GPL-LICENSE.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-ui.css
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-ui.css	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-ui.css	(revision 1610)
@@ -0,0 +1,565 @@
+/*
+ * jQuery UI CSS Framework 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.17
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
Index: tags/2.8.3/wb/include/jquery/jquery-ui-min.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-ui-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-ui-min.js	(revision 1610)
@@ -0,0 +1,356 @@
+/*!
+ * jQuery UI 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.17",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!
+ * jQuery UI Widget 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
+ * jQuery UI Position 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&jQuery.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);/*
+ * jQuery UI Draggable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.17"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*
+ * jQuery UI Droppable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Droppables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.draggable.js
+ */(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.17"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);/*
+ * jQuery UI Resizable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(/relative/.test(this.element.css("position"))&&a.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"}),this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),a.browser.opera&&/relative/.test(f.css("position"))&&f.css({position:"relative",top:"auto",left:"auto"}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.17"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10),position:b.css("position")})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,e){a(b).each(function(){var b=a(this),f=a(this).data("resizable-alsoresize"),g={},i=e&&e.length?e:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(i,function(a,b){var c=(f[b]||0)+(h[b]||0);c&&c>=0&&(g[b]=c||null)}),a.browser.opera&&/relative/.test(b.css("position"))&&(d._revertToRelativePosition=!0,b.css({position:"absolute",top:"auto",left:"auto"})),b.css(g)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};d._revertToRelativePosition&&(d._revertToRelativePosition=!1,typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)),a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/*
+ * jQuery UI Selectable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.17"})})(jQuery);/*
+ * jQuery UI Sortable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Sortables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.17"})})(jQuery);/*
+ * jQuery UI Accordion 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(b.autoHeight||b.fillHeight)&&c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(!(this.options.disabled||b.altKey||b.ctrlKey)){var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}if(f){a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus();return!1}return!0}},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];this._clickHandler({target:b},b);return this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(!d.disabled){if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return}},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!!g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}}),a.extend(a.ui.accordion,{version:"1.8.17",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size())b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);else{if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})}},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);/*
+ * jQuery UI Autocomplete 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *	jquery.ui.position.js
+ */(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!b.options.disabled&&!b.element.propAttr("readOnly")){d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",autocompleteRequest:++c,success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==!1)return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);/*
+ * jQuery UI Button 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form}));return e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"&&(this.options.disabled=this.element.propAttr("disabled")),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.element.is(":disabled")&&(h.disabled=!0),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){h.disabled||(a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active"))}).bind("mouseleave.button",function(){h.disabled||a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){f||b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){h.disabled||(f=!1,d=a.pageX,e=a.pageY)}).bind("mouseup.button",function(a){!h.disabled&&(d!==a.pageX||e!==a.pageY)&&(f=!0)})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);b==="disabled"?c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1):this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);/*
+ * jQuery UI Dialog 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *	jquery.ui.draggable.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.position.js
+ *	jquery.ui.resizable.js
+ */(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||"&#160;",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){b.close(a);return!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('<button type="button"></button>').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){a!=="click"&&(a in f?e[a](b):e.attr(a,b))}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||"&#160;"))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.17",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");b||(this.uuid+=1,b=this.uuid);return"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&c.bgiframe(),this.instances.push(c);return c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;if(a.browser.msie&&a.browser.version<7){b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return b<c?a(window).height()+"px":b+"px"}return a(document).height()+"px"},width:function(){var b,c;if(a.browser.msie){b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return b<c?a(window).width()+"px":b+"px"}return a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);/*
+ * jQuery UI Slider 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=!0,f=a(this).data("index.ui-slider-handle"),g,h,i,j;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:e=!1;if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),g=b._start(d,f);if(g===!1)return}}j=b.options.step,b.options.values&&b.options.values.length?h=i=b.values(f):h=i=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:i=b._valueMin();break;case a.ui.keyCode.END:i=b._valueMax();break;case a.ui.keyCode.PAGE_UP:i=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:i=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(h===b._valueMax())return;i=b._trimAlignValue(h+j);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(h===b._valueMin())return;i=b._trimAlignValue(h-j)}b._slide(d,f,i);return e}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.17"})})(jQuery);/*
+ * jQuery UI Tabs 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */(function(a,b){function f(){return++d}function e(){return++c}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.17"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){t=d.selected,e()}:function(a){a.clientX&&c.rotate(null)});a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate);return this}})})(jQuery);/*
+ * jQuery UI Datepicker 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ */(function($,undefined){function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);!c.length||c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);!$.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])&&!!d.length&&(d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover"))})}function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}$.extend($.ui,{datepicker:{version:"1.8.17"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);c&&!c.inline&&this._setDateFromField(c,b);return c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;c&&s++;return c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;r+=f[0].length;return parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase()){f=c[0],r+=d.length;return!1}});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;c&&m++;return c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;c&&e++;return c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0));return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this
+._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;e=d&&e>d?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.17",window["DP_jQuery_"+dpuuid]=$})(jQuery);/*
+ * jQuery UI Progressbar 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===b)return this._value();this._setOption("value",a);return this},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;typeof a!="number"&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.17"})})(jQuery);/*
+ * jQuery UI Effects 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/
+ */jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.17",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);if((c/=f/2)<1)return e/2*c*c*(((g*=1.525)+1)*c-g)+d;return e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){if(c<f/2)return a.easing.easeInBounce(b,c*2,0,e,f)*.5+d;return a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);/*
+ * jQuery UI Effects Blind 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Blind
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
+ * jQuery UI Effects Bounce 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Bounce
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Clip 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Clip
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Drop 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Drop
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Explode 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Explode
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/*
+ * jQuery UI Effects Fade 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fade
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Fold 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Fold
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
+ * jQuery UI Effects Highlight 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Highlight
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Pulsate 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Pulsate
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show");times=(b.options.times||5)*2-1,duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=c.is(":visible"),animateTo=0,isVisible||(c.css("opacity",0).show(),animateTo=1),(d=="hide"&&isVisible||d=="show"&&!isVisible)&&times--;for(var e=0;e<times;e++)c.animate({opacity:animateTo},duration,b.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,b.options.easing,function(){animateTo==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Scale 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Scale
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){child=a(this),k&&a.effects.save(child,f);var c={height:child.height(),width:child.width()};child.from={height:c.height*q.from.y,width:c.width*q.from.x},child.to={height:c.height*q.to.y,width:c.width*q.to.x},q.from.y!=q.to.y&&(child.from=a.effects.setTransition(child,h,q.from.y,child.from),child.to=a.effects.setTransition(child,h,q.to.y,child.to)),q.from.x!=q.to.x&&(child.from=a.effects.setTransition(child,i,q.from.x,child.from),child.to=a.effects.setTransition(child,i,q.to.x,child.to)),child.css(child.from),child.animate(child.to,b.duration,b.options.easing,function(){k&&a.effects.restore(child,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Shake 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Shake
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Slide 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Slide
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Transfer 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Effects/Transfer
+ *
+ * Depends:
+ *	jquery.effects.core.js
+ */(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/jquery-ui-min.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/MIT-LICENSE.txt
===================================================================
--- tags/2.8.3/wb/include/jquery/MIT-LICENSE.txt	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/MIT-LICENSE.txt	(revision 1610)
@@ -0,0 +1,25 @@
+Copyright (c) 2011 Paul Bakaus, http://jqueryui.com/
+
+This software consists of voluntary contributions made by many
+individuals (AUTHORS.txt, http://jqueryui.com/about) For exact
+contribution history, see the revision history and logs, available
+at http://jquery-ui.googlecode.com/svn/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Property changes on: tags/2.8.3/wb/include/jquery/MIT-LICENSE.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-min170.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-min170.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-min170.js	(revision 1610)
@@ -0,0 +1,4 @@
+/*! jQuery v1.7 jquery.com | jquery.org/license */
+(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cd(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function cc(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bG.test(a)?d(a,e):cc(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)cc(a+"["+e+"]",b[e],c,d);else d(a,b)}function cb(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function ca(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bV,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=ca(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=ca(a,c,d,e,"*",g));return l}function b_(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bR),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bE(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bz:bA;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bl(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a){var b=Y.split(" "),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(I)return I.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())}),typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return e});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){return i.done.apply(i,arguments).fail.apply(i,arguments)},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h<g;h++)e=d[h].toLowerCase(),c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1)}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return b;h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&&
+(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k<c.length;k++){l=E.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,namespace:n.join(".")},p),g&&(o.quick=J(g),!o.quick&&f.expr.match.POS.test(g)&&(o.isPositional=!0)),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d){var e=f.hasData(a)&&f._data(a),g,h,i,j,k,l,m,n,o,p,q;if(!!e&&!!(m=e.events)){b=L(b||"").split(" ");for(g=0;g<b.length;g++){h=E.exec(b[g])||[],i=h[1],j=h[2];if(!i){j=j?"."+j:"";for(l in m)f.event.remove(a,l+j,c,d);return}n=f.event.special[i]||{},i=(d?n.delegateType:n.bindType)||i,p=m[i]||[],k=p.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;if(c||j||d||n.remove)for(l=0;l<p.length;l++){q=p[l];if(!c||c.guid===q.guid)if(!j||j.test(q.namespace))if(!d||d===q.selector||d==="**"&&q.selector)p.splice(l--,1),q.selector&&p.delegateCount--,n.remove&&n.remove.call(a,q)}else p.length=0;p.length===0&&k!==p.length&&((!n.teardown||n.teardown.call(a,j)===!1)&&f.removeEvent(a,i,e.handle),delete m[i])}f.isEmptyObject(m)&&(o=e.handle,o&&(o.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length;l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d);if(c.isPropagationStopped())break}c.type=h,c.isDefaultPrevented()||(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=(f.event.special[c.type]||{}).handle,j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click"))for(m=c.target;m!=this;m=m.parentNode||this){o={},q=[];for(k=0;k<e;k++)r=d[k],s=r.selector,t=o[s],r.isPositional?t=(t||(o[s]=f(s))).index(m)>=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){p=j[k],c.currentTarget=p.elem;for(l=0;l<p.matches.length&&!c.isImmediatePropagationStopped();l++){r=p.matches[l];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=(i||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},focus:{delegateType:"focusin",noBubble:!0},blur:{delegateType:"focusout",noBubble:!0},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?N:M):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=N;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=N;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=N,this.stopPropagation()},isDefaultPrevented:M,isPropagationStopped:M,isImmediatePropagationStopped:M},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]=f.event.special[b]={delegateType:b,bindType:b,handle:function(a){var b=this,c=a.relatedTarget,d=a.handleObj,e=d.selector,g,h;if(!c||d.origType===a.type||c!==b&&!f.contains(b,c))g=a.type,a.type=d.origType,h=d.handler.apply(this,arguments),a.type=g;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(A.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;A.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return A.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=M;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=M);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw"Syntax error, unrecognized expression: "+a};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?T.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/<tbody/i,bc=/<|&#?\w+;/,bd=/<(?:script|style)/i,be=/<(?:script|object|embed|option|style)/i,bf=new RegExp("<(?:"+Y.replace(" ","|")+")","i"),bg=/checked\s*(?:[^=]|=\s*.checked.)/i,bh=/\/(java|ecma)script/i,bi=/^\s*<!(?:\[CDATA\[|\-\-)/,bj={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after"
+,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bg.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bl(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,br)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!be.test(j)&&(f.support.checkClone||!bg.test(j))&&!f.support.unknownElems&&bf.test(j)&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1></$2>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bq(k[i]);else bq(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bh.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bs=/alpha\([^)]*\)/i,bt=/opacity=([^)]*)/,bu=/([A-Z]|^ms)/g,bv=/^-?\d+(?:px)?$/i,bw=/^-?\d/,bx=/^([\-+])=([\-+.\de]+)/,by={position:"absolute",visibility:"hidden",display:"block"},bz=["Left","Right"],bA=["Top","Bottom"],bB,bC,bD;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bB(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bx.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bB)return bB(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bE(a,b,d);f.swap(a,by,function(){e=bE(a,b,d)});return e}},set:function(a,b){if(!bv.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cx(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cw("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cw("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cx(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cp.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=cq.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cw("show",1),slideUp:cw("hide",1),slideToggle:cw("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=ct||cu(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cr&&(cr=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=ct||cu(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cr),cr=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now))}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cy=/^t(?:able|d|h)$/i,cz=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cA(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cy.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/jquery-min170.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/version.txt
===================================================================
--- tags/2.8.3/wb/include/jquery/version.txt	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/version.txt	(revision 1610)
@@ -0,0 +1,2 @@
+jQuery 1.7.1
+jQuery UI 1.8.17
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/version.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/AUTHORS.txt
===================================================================
--- tags/2.8.3/wb/include/jquery/AUTHORS.txt	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/AUTHORS.txt	(revision 1610)
@@ -0,0 +1,30 @@
+﻿jQuery UI Authors (http://jqueryui.com/about)
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+and logs, available at http://github.com/jquery/jquery-ui
+
+Brandon Aaron
+Paul Bakaus (paulbakaus.com)
+David Bolter
+Rich Caloggero
+Chi Cheng (cloudream@gmail.com)
+Colin Clark (http://colin.atrc.utoronto.ca/)
+Michelle D'Souza
+Aaron Eisenberger (aaronchi@gmail.com)
+Ariel Flesler
+Bohdan Ganicky
+Scott González
+Marc Grabanski (m@marcgrabanski.com)
+Klaus Hartl (stilbuero.de)
+Scott Jehl
+Cody Lindley
+Eduardo Lundgren (eduardolundgren@gmail.com)
+Todd Parker
+John Resig
+Patty Toland
+Ca-Phun Ung (yelotofu.com)
+Keith Wood (kbwood@virginbroadband.com.au)
+Maggie Costello Wachs
+Richard D. Worth (rdworth.org)
+Jörn Zaefferer (bassistance.de)

Property changes on: tags/2.8.3/wb/include/jquery/AUTHORS.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-icons_2e83ff_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-icons_2e83ff_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-icons_888888_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-icons_888888_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-icons_cd0a0a_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-icons_cd0a0a_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-icons_454545_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-icons_454545_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-icons_222222_256x240.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-icons_222222_256x240.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-anim_basic_16x16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-anim_basic_16x16.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_95_fef1ec_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_95_fef1ec_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_75_dadada_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_75_dadada_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_flat_75_ffffff_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_flat_75_ffffff_40x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_65_ffffff_1x400.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_glass_65_ffffff_1x400.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-min.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-min.js	(revision 1610)
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/jquery-min.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-min164.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-min164.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-min164.js	(revision 1610)
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete 
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/jquery-min164.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-min161.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-min161.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-min161.js	(revision 1610)
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
+shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
+)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/jquery-min161.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery-include.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-include.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-include.js	(revision 1610)
@@ -0,0 +1,116 @@
+(function($){
+/*
+ * includeMany 1.2.2
+ *
+ * Copyright (c) 2009 Arash Karimzadeh (arashkarimzadeh.com)
+ * Licensed under the MIT (MIT-LICENSE.txt)
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Date: Dec 03 2009
+ */
+$.chainclude = function(urls,finaly){
+	var onload = function(callback,data){
+						if(typeof urls.length!='undefined'){
+							if(urls.length==0)
+								return $.isFunction(finaly)
+											?finaly(data)
+											:null;
+							urls.shift();
+							return $.chainclude.load(urls,onload);
+						}
+						for(var item in urls){
+							urls[item](data);
+							delete urls[item];
+							var count = 0;
+							for(var i in urls)
+								count++;
+							return (count==0)
+										?$.isFunction(finaly)?finaly(data):null
+										:$.chainclude.load(urls,onload);
+						}
+					}
+	$.chainclude.load(urls,onload);
+};
+$.chainclude.load = function(urls,onload){
+	if(typeof urls=='object' && typeof urls.length=='undefined')
+		for(var item in urls)
+			return $.include.load(item,onload,urls[item].callback);
+	urls = $.makeArray(urls);
+	$.include.load(urls[0],onload,null);
+};
+$.include = function(urls,finaly){
+	var luid = $.include.luid++;
+	var onload = function(callback,data){
+						if($.isFunction(callback))
+							callback(data);
+						if(--$.include.counter[luid]==0&&$.isFunction(finaly))
+							finaly();
+					}
+	if(typeof urls=='object' && typeof urls.length=='undefined'){
+		$.include.counter[luid] = 0;
+		for(var item in urls)
+			$.include.counter[luid]++;
+		return $.each(urls,function(url,callback){$.include.load(url,onload,callback);});
+	}
+	urls = $.makeArray(urls);
+	$.include.counter[luid] = urls.length;
+	$.each(urls,function(){$.include.load(this,onload,null);});
+}
+$.extend(
+	$.include,
+	{
+		luid: 0,
+		counter: [],
+		load: function(url,onload,callback){
+			url = url.toString();
+			if($.include.exist(url))
+				return onload(callback);
+			if(/.css$/.test(url))
+				$.include.loadCSS(url,onload,callback);
+			else if(/.js$/.test(url))
+				$.include.loadJS(url,onload,callback);
+			else
+				$.get(url,function(data){onload(callback,data)});
+		},
+		loadCSS: function(url,onload,callback){
+			var css=document.createElement('link');
+			css.setAttribute('type','text/css');
+			css.setAttribute('rel','stylesheet');
+			css.setAttribute('href',''+url);
+			$('head').get(0).appendChild(css);
+			$.browser.msie
+				?$.include.IEonload(css,onload,callback)
+				:onload(callback);//other browsers do not support it
+		},
+		loadJS: function(url,onload,callback){
+			var js=document.createElement('script');
+			js.setAttribute('type','text/javascript');
+			js.setAttribute('src',''+url);
+			$.browser.msie
+				?$.include.IEonload(js,onload,callback)
+				:js.onload = function(){onload(callback)};
+			$('head').get(0).appendChild(js);
+		},
+		IEonload: function(elm,onload,callback){
+			elm.onreadystatechange = 
+					function(){
+						if(this.readyState=='loaded'||this.readyState=='complete')
+							onload(callback);
+					}
+		},
+		exist: function(url){
+			var fresh = false;
+			$('head script').each(
+								function(){
+									if(/.css$/.test(url)&&this.href==url)
+											return fresh=true;
+									else if(/.js$/.test(url)&&this.src==url)
+											return fresh=true;
+								}
+							);
+			return fresh;
+		}
+	}
+);
+//
+})(jQuery);

Property changes on: tags/2.8.3/wb/include/jquery/jquery-include.js
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery/jquery_theme.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery_theme.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery_theme.js	(revision 1610)
@@ -0,0 +1,6 @@
+var JQUERY_THEME = WB_URL+'/include/jquery';
+
+$(document).ready(function() {
+        $.insert(JQUERY_THEME+'/jquery-ui.css');
+        $.insert(JQUERY_THEME+'/jquery-ui-min.js');
+});
Index: tags/2.8.3/wb/include/jquery/jquery-pngFix.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-pngFix.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-pngFix.js	(revision 1610)
@@ -0,0 +1,11 @@
+/**
+ * --------------------------------------------------------------------
+ * jQuery-Plugin "pngFix"
+ * Version: 1.1, 11.09.2007
+ * by Andreas Eberhard, andreas.eberhard@gmail.com
+ *                      http://jquery.andreaseberhard.de/
+ *
+ * Copyright (c) 2007 Andreas Eberhard
+ * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
+ */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(s($){3.1s.1k=s(j){j=3.1a({12:\'1m.1j\'},j);8 k=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 5.5")!=-1);8 l=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 6.0")!=-1);o(3.17.16&&(k||l)){3(2).L("1r[@m$=.M]").z(s(){3(2).7(\'q\',3(2).q());3(2).7(\'p\',3(2).p());8 a=\'\';8 b=\'\';8 c=(3(2).7(\'K\'))?\'K="\'+3(2).7(\'K\')+\'" \':\'\';8 d=(3(2).7(\'A\'))?\'A="\'+3(2).7(\'A\')+\'" \':\'\';8 e=(3(2).7(\'C\'))?\'C="\'+3(2).7(\'C\')+\'" \':\'\';8 f=(3(2).7(\'B\'))?\'B="\'+3(2).7(\'B\')+\'" \':\'\';8 g=(3(2).7(\'R\'))?\'1d:\'+3(2).7(\'R\')+\';\':\'\';8 h=(3(2).1c().7(\'1b\'))?\'19:18;\':\'\';o(2.9.y){a+=\'y:\'+2.9.y+\';\';2.9.y=\'\'}o(2.9.t){a+=\'t:\'+2.9.t+\';\';2.9.t=\'\'}o(2.9.w){a+=\'w:\'+2.9.w+\';\';2.9.w=\'\'}8 i=(2.9.15);b+=\'<x \'+c+d+e+f;b+=\'9="13:11;1q-1p:1o-1n;O:W-V;N:1l;\'+g+h;b+=\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2).p()+\'u;\';b+=\'J:I:H.r.G\'+\'(m=\\\'\'+3(2).7(\'m\')+\'\\\', D=\\\'F\\\');\';b+=i+\'"></x>\';o(a!=\'\'){b=\'<x 9="13:11;O:W-V;\'+a+h+\'q:\'+3(2).q()+\'u;\'+\'p:\'+3(2).p()+\'u;\'+\'">\'+b+\'</x>\'}3(2).1i();3(2).1h(b)});3(2).L("*").z(s(){8 a=3(2).T(\'N-S\');o(a.E(".M")!=-1){8 b=a.X(\'1g("\')[1].X(\'")\')[0];3(2).T(\'N-S\',\'1f\');3(2).Q(0).Y.J="I:H.r.G(m=\'"+b+"\',D=\'F\')"}});3(2).L("1e[@m$=.M]").z(s(){8 a=3(2).7(\'m\');3(2).Q(0).Y.J=\'I:H.r.G\'+\'(m=\\\'\'+a+\'\\\', D=\\\'F\\\');\';3(2).7(\'m\',j.12)})}1t 3}})(3);',62,92,'||this|jQuery||||attr|var|style|||||||||||||src|navigator|if|height|width|Microsoft|function|padding|px|appVersion|margin|span|border|each|class|alt|title|sizingMethod|indexOf|scale|AlphaImageLoader|DXImageTransform|progid|filter|id|find|png|background|display|appName|get|align|image|css|parseInt|block|inline|split|runtimeStyle|Explorer|Internet|relative|blankgif|position|MSIE|cssText|msie|browser|hand|cursor|extend|href|parent|float|input|none|url|after|hide|gif|pngFix|transparent|blank|line|pre|space|white|img|fn|return'.split('|'),0,{}))
\ No newline at end of file
Index: tags/2.8.3/wb/include/jquery/jquery-min132.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-min132.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-min132.js	(revision 1610)
@@ -0,0 +1,19 @@
+/*
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
+/*
+ * Sizzle CSS Selector Engine - v0.9.3
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
\ No newline at end of file
Index: tags/2.8.3/wb/include/jquery/jquery-insert.js
===================================================================
--- tags/2.8.3/wb/include/jquery/jquery-insert.js	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/jquery-insert.js	(revision 1610)
@@ -0,0 +1,74 @@
+/* Insert Script Plugin
+ *
+ *
+ * Copyright (c) 2008 Kevin Martin (http://synarchydesign.com/insert)
+ * Licensed under the GPL license:
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+jQuery.insert = function(file)
+{
+	var data	= [];
+	var data2	= [];
+
+	if (typeof file == 'object')
+	{
+		data = file;
+		file = data.src !== undefined ? data.src : false;
+		file = file === false && data.href !== undefined ? data.href : file;
+		file = file === false ? file2 : false;
+	}
+
+	if (typeof file == 'string' && file.length)
+	{
+		var index	= file.lastIndexOf('.');
+		var index2	= file.replace('\\', '/').lastIndexOf('/') + 1;
+		var ext		= file.substring(index + 1, file.length);
+	}
+
+	switch(ext)
+	{
+		case 'js':
+			data2 = {
+				elm:	'script',
+				type:	'text/javascript',
+				src:	file
+			};
+		break;
+
+		case 'css':
+			data2 = {
+				elm:	'link',
+				rel:	'stylesheet',
+				type:	'text/css',
+				href:	file
+			};
+		break;
+
+		default:
+			data2 = {elm: 'link'};
+		break;
+	}
+
+	data2.id = 'script-' + (typeof file == 'string' && file.length ?
+		file.substring(index2, index) : Math.round(Math.rand() * 100));
+
+	for (var i in data)
+	{
+		data2[i] = data[i];
+	}
+
+	data	= data2;
+	var tag	= document.createElement(data.elm);
+
+	delete data.elm;
+
+	for (i in data)
+	{
+		tag.setAttribute(i, data[i]);
+	}
+
+	jQuery('head').append(tag);
+
+	return jQuery('#' + data.id);
+};
\ No newline at end of file
Index: tags/2.8.3/wb/include/jquery/index.php
===================================================================
--- tags/2.8.3/wb/include/jquery/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/jquery/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jquery/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jquery
===================================================================
--- tags/2.8.3/wb/include/jquery	(nonexistent)
+++ tags/2.8.3/wb/include/jquery	(revision 1610)

Property changes on: tags/2.8.3/wb/include/jquery
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+jquery-1.7.js
Index: tags/2.8.3/wb/include/quickSkin_alpha/wb_quickSkin_28.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/wb_quickSkin_28.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/wb_quickSkin_28.php	(revision 1610)
@@ -0,0 +1,111 @@
+<?php
+/* -------------------------------------------------------- */
+if(defined('WB_PATH') == false)
+{
+	// Stop this file being access directly
+		die('<head><title>Access denied</title></head><body><h2 style="color:red;margin:3em auto;text-align:center;">Cannot access this file directly</h2></body></html>');
+}
+/* -------------------------------------------------------- */
+
+// use Debug Mode?
+$debugmode = false;
+// make directory changes more flexible
+$module_name = 'quickSkin';
+$module_directory = basename(dirname(__FILE__));
+
+$aMsg = array();
+require_once(WB_PATH.'/framework/functions.php');
+// COMPILED TEMPLATES
+$_CONFIG['quickskin_compiled'] = WB_PATH.'/temp/'.$module_name.'/_skins_tmp/';
+if(!is_dir($_CONFIG['quickskin_compiled'])) {
+	$msg = createFolderProtectFile($_CONFIG['quickskin_compiled']);
+	if(sizeof($msg)) {
+		// $admin->print_error($MESSAGE['GENERIC_BAD_PERMISSIONS'],$module_overview_link );
+		$aMsg[] = $msg;
+	}
+}
+
+// CACHED FILES
+$_CONFIG['quickskin_cache'] = WB_PATH.'/temp/'.$module_name.'/_skins_cache/';
+if(!is_dir($_CONFIG['quickskin_cache'])) {
+	$msg = createFolderProtectFile($_CONFIG['quickskin_cache']);
+	if(sizeof($msg)) {
+		//$admin->print_error($MESSAGE['GENERIC_BAD_PERMISSIONS'],$module_overview_link );
+		$aMsg[] = $msg;
+	}
+}
+$_CONFIG['cache_lifetime'] = 600;
+
+// EXTENTSIONS DIR
+$_CONFIG['extensions_dir'] = str_replace('\\','/', dirname(__FILE__).'/_lib/qx'); 
+
+require_once (WB_PATH.'/include/'.$module_directory.'/_lib/quickSkin_28/class.quickskin.php');
+
+
+/**
+	Comment out : will not work on all clients
+	Must be also made dependent from the client browser
+
+	SET UP COMPRESSION
+
+if ( ini_get( 'zlib.output_compression' )  && ini_get( 'zlib.output_compression_level' ) != 5 ) {
+  ini_set( 'zlib.output_compression_level', '5' );
+  ob_start();
+}
+*/
+
+/**
+ * use_common_placeholders DEPRICATED
+ * 
+ * This function is for QuickSkins internal use.
+ * It will replace common placeholders to ease the work 
+ * and the creation of modules and its templates
+ * This function is called in the class.quickskin.php
+ *
+ */
+
+function use_common_placeholders($text) {  //  DEPRICATED
+
+	/**
+		This function makes possible to use the following PLACEHOLDERS within your modules.
+		Works good in PAGE Type and ADMIN TOOL Type modules.
+		As of date 12-18-2011, SNIPPET Type Modules weren't tested
+		[MODULE_NAME]
+		[MODULE_URL]
+
+		[WB_URL]
+		[ADMIN_URL]
+		[THEME_URL]
+		[MEDIA_DIRECTORY]
+			
+		[TEMPLATE_DIR]
+		[TEMPLATE_NAME]
+		[TEMPLATE]
+
+	*/
+	switch (TRUE){
+		case isset($GLOBALS['tool']): $MOD_NAME = $GLOBALS['tool']; break;  // AdminTool
+		case isset($GLOBALS['section']['module']): $MOD_NAME = $GLOBALS['section']['module']; break;  // PageType Module
+		case isset($GLOBALS['module_dir']): $MOD_NAME = $GLOBALS['module_dir']; break;  // SnippetType Module
+		default: $MOD_NAME = FALSE;
+	
+	}
+	
+	if(isset($MOD_NAME)) {
+		$text = str_replace('[MODULE_NAME]', $MOD_NAME, $text);
+		$text = str_replace('[MODULE_URL]', WB_URL.'/modules/'.$MOD_NAME, $text);
+	}	
+	
+	// WB CONSTANTS (frontend only)
+	if(defined('TEMPLATE_DIR'))	 $text = str_replace('[TEMPLATE_DIR]', TEMPLATE_DIR, $text);
+	if(defined('TEMPLATE_NAME')) $text = str_replace('[TEMPLATE_NAME]', TEMPLATE_NAME, $text);
+	if(defined('TEMPLATE'))	     $text = str_replace('[TEMPLATE]', TEMPLATE, $text);	
+	
+	// WB CONSTANTS (always accessible) 
+	$text = str_replace('[WB_URL]', WB_URL, $text);	
+	$text = str_replace('[ADMIN_URL]', ADMIN_URL, $text);
+	$text = str_replace('[MEDIA_DIRECTORY]', MEDIA_DIRECTORY, $text);
+	$text = str_replace('[THEME_URL]', THEME_URL, $text);
+		
+	return $text;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/wb_quickSkin_28.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_layoutfield.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_layoutfield.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_layoutfield.php	(revision 1610)
@@ -0,0 +1,19 @@
+<?php
+  /**
+  * QuickSkin Extension layoutfield
+  * This function is to be used with WebsiteBakers Layout-Fields
+  * Layout-Fields are mostly <textarea> fields, where the modules Frontend Template is specified
+  *
+  * Usage Example:
+  * Content:  $template->assign('loop_template', $settings['loop']);  
+  * Template: <textarea name="loop" rows="10" cols="1">{layoutfield:loop_template}</textarea>
+  *
+  * @author WebsiteBaker Org e.V.
+  */
+  function qx_layoutfield( $db_string ) {
+  // Set raw html <'s and >'s to be replaced by friendly html code to be used in Layout Fields
+	$raw = array('<', '>');
+	$friendly = array('&lt;', '&gt;');
+	
+    return str_replace( $raw, $friendly, $db_string );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_layoutfield.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_date.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_date.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_date.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+  /**
+  * QuickSkin Extension db_date
+  * Convert Oracle Date (British Format) to Local Formatted Date
+  *
+  * Usage Example:
+  * Content:  $template->assign('UPDATE', $result['LAST_UPDATE_DATE_TIME']);
+  * Template: Last update: {db_date:UPDATE}
+  * Result:   Last update: 30.01.2003
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_db_date ( $param ) {
+    global $configuration;
+
+    if (preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/', $param)) {
+      return date( $configuration['date_format'],  strtotime($param) );
+    } else {
+      return 'Invalid date format!';
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_date.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_substr.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_substr.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_substr.php	(revision 1610)
@@ -0,0 +1,19 @@
+<?php
+  /**
+  * QuickSkin Extension substr
+  * Insert specific part of a string
+  *
+  * Usage Example:
+  * Content:  $template->assign('HEADLINE', 'My Title');
+  * Template: <font size=4>{substr:HEADLINE,0,1}</font>{substr:HEADLINE,1}
+  * Result:   <font size=4>M</font>y Title
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_substr ( $param, $lim0 = 0, $lim1 = 0 ) {
+    if ($lim1) {
+      return substr( $param, $lim0, $lim1 );
+    } else {
+      return substr( $param, $lim0 );
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_substr.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lowercase.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lowercase.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lowercase.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension lowercase
+  * Converts String to lowercase
+  *
+  * Usage Example:
+  * Content:  $template->assign('NAME', 'John Doe');
+  * Template: Username: {lowercase:NAME}
+  * Result:   Username: john doe
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_lowercase ( $param ) {
+    return strtolower( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lowercase.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailto.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailto.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailto.php	(revision 1610)
@@ -0,0 +1,46 @@
+<?php
+  /**
+  * QuickSkin Extension mailto
+  * creates Mailto-Link from email address
+  *
+  * Usage Example:
+  * Content:  $template->assign('CONTACT', 'philipp@criegern.de' );
+  * Template: Mail to Webmaster: {mailto:CONTACT}
+  * Result:   Mail to Webmaster: <a href="mailto:philipp@criegern.de">philipp@criegern.de</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+  function qx_mailto ( $param,$name='',$encode=false ) {
+    if ($encode === false) {
+      if ( $name != '' ) {
+        return '<a href="mailto:' . $param . '">' . $name . '</a>';
+      } else {
+        return '<a href="mailto:' . $param . '">' . $param . '</a>';
+      }
+    } else {
+      $obfuscatedMailTo = '';
+      $mailto = "mailto:";
+      $length = strlen($mailto);
+      for ($i = 0; $i < $length; $i++) {
+        $obfuscatedMailTo .= "&#" . ord($mailto[$i]);
+      }
+      $mailto = $param;
+      $length = strlen($mailto);
+      $param  = '';
+      for ($i = 0; $i < $length; $i++) {
+        $param .= "&#" . ord($mailto[$i]);
+      }
+      if ( $name != '' ) {
+        $mailto = $name;
+        $length = strlen($mailto);
+        $name  = '';
+        for ($i = 0; $i < $length; $i++) {
+          $name .= "&#" . ord($mailto[$i]);
+        }
+        return '<a href="' . $obfuscatedMailTo . ':' . $param . '">' . $name . '</a>';
+      } else {
+        return '<a href="' . $obfuscatedMailTo . ':' . $param . '">' . $param . '</a>';
+      }
+
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailto.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_HEADING.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_HEADING.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_HEADING.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+  /**
+  * QuickSkin Extension WB_HEADING
+  * This function will replace the string with the value of WebsiteBaker CMS's $HEADING[] array 
+  *
+  * Usage Example:
+  * in Template use:{WB_HEADING:"GENERAL_SETTINGS"}
+  *	returns the translated string
+  *
+  * @author WebsiteBaker Org e.V.
+  *
+  */
+function qx_WB_HEADING ( $var ) {
+	$LANG_ARRAY = $GLOBALS['HEADING'];		
+	$ret_val = isset($LANG_ARRAY[$var]) ? $LANG_ARRAY[$var] : ('<span style="color:#777">'.$var.'</span>');
+	return $ret_val;	
+}

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_HEADING.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_number.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_number.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_number.php	(revision 1610)
@@ -0,0 +1,30 @@
+<?php
+  /**
+  * QuickSkin Extension number
+  * Format a number with grouped thousands
+  *
+  * Usage Example:
+  * Content:  $template->assign('SUM', 2500000);
+  * Template: Current balance: {number:SUM}
+  * Result:   Current balance: 2.500.000,00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_number ( $param ) {
+    global $_CONFIG;
+
+    $decimalChar = ',';
+    if ( !empty($_CONFIG['decimal_char']) ) {
+      $decimalChar = $_CONFIG['decimal_char'];
+    }
+    $decimalPlaces = 2;
+    if ( !empty($_CONFIG['decimal_places']) ) {
+      $decimalPlaces = $_CONFIG['decimal_places'];
+    }
+    $thousandsSep = '.';
+    if ( !empty($_CONFIG['thousands_sep']) ) {
+      $thousandsSep = $_CONFIG['thousands_sep'];
+    }
+
+    return number_format( $param, $decimalChar, $decimalPlaces, $thousandsSep );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_number.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_count.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_count.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_count.php	(revision 1610)
@@ -0,0 +1,16 @@
+<?php
+  /**
+  * QuickSkin Extension count
+  * count element of an array
+  *
+  * Usage Example:
+  * Content:  $template->assign('list', array('a','b'));
+  * Template: count: {count:list}
+  * Result:   count: 2
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_count ( $param ) {
+    $temp = count( $param );
+    return $temp;
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_count.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_datetime.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_datetime.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_datetime.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+  /**
+  * QuickSkin Extension current_datetime
+  * Print Current Date and Time
+  *
+  * Usage Example:
+  * Template: Time: {current_datetime:}
+  * Result:   Time: 01.01.2009 - 12:46:00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_current_datetime () {
+    global $_CONFIG;
+
+    $datetimeFormat = 'F j, Y H:i:s';
+    if ( !empty($_CONFIG['datetime_format']) ) {
+      $datetimeFormat = $_CONFIG['datetime_format'];
+    }
+    return date( $datetimeFormat );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_datetime.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_nvl.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_nvl.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_nvl.php	(revision 1610)
@@ -0,0 +1,19 @@
+<?php
+  /**
+  * QuickSkin Extension nvl
+  * Insert a default value if variable is empty
+  *
+  * Usage Example:
+  * Content:  $template->assign('PREVIEW1', 'picture_21.gif');
+  * Template: <img src="{nvl:PREVIEW1,'not_available.gif'}"> / <img src="{nvl:PREVIEW2,'not_available.gif'}">
+  * Result:   <img src="picture_21.gif"> / <img src="not_available.gif">
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_nvl ( $param, $default ) {
+    if (strlen($param)) {
+      return ( $param );
+    } else {
+      return ( $default );
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_nvl.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_datetime.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_datetime.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_datetime.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+  /**
+  * QuickSkin Extension db_datetime
+  * Convert Oracle Date (British Format) to Local Formatted Date and Time
+  *
+  * Usage Example:
+  * Content:  $template->assign('UPDATE', $result['LAST_UPDATE_DATE_TIME']);
+  * Template: Last update: {db_datetime:UPDATE}
+  * Result:   Last update: 30.01.2003 - 12:46:00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_db_datetime ( $param ) {
+    global $configuration;
+
+    if (preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/', $param)) {
+      return date( $configuration['datetime_format'],  strtotime($param) );
+    } else {
+      return 'Invalid date format!';
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_datetime.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_specialchars.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_specialchars.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_specialchars.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension specialchars
+  * Converts  HTML Entities 2 Special Characters
+  *
+  * Usage Example:
+  * Content:  $template->assign('NEXT', 'Next Page &gt;&gt;');
+  * Template: <a href="next.php">{specialchars:NEXT}</a>
+  * Result:   <a href="next.php">Next Page >></a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_specialchars ( $param ) {
+    return htmlspecialchars( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_specialchars.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_config.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_config.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_config.php	(revision 1610)
@@ -0,0 +1,54 @@
+<?php
+  /**
+  * QuickSkin Extension load_config
+  * Reads an INI-Style configuration file into an array
+  *
+  * Usage Example:
+  * Configuration File (parameter.ini):
+  *
+  *     PAGETITLE   =  Default Page Title
+  *     [colors]
+  *     BACKGROUND  =  #FFFFFF
+  *     TEXT        =  #000000
+  *
+  * Template:
+  *
+  *     {load_config:"parameter.ini","config"}
+  *     <title>{config.PAGETITLE}</title>
+  *     <body bgcolor="{config.colors.BACKGROUND}" text="{config.colors.TEXT}">
+  *
+  * Result:
+  *
+  *     <title>Default Page Title</title>
+  *     <body bgcolor="#FFFFFF" text="#000000">
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_load_config ( $filename,  $name = 'config' ) {
+    global $_top;
+
+    $section  =  null;
+    if (is_file($filename)) {
+      $cfgfile  =  file($filename);
+      if (is_array($cfgfile)) {
+        foreach ($cfgfile as $line) {
+          if (substr($line, 0, 1) != '#') {
+            if (substr($line, 0, 1) == '[') {
+              if ($rbr = strpos($line, ']')) {
+                $section  =  substr($line, 1, $rbr -1);
+              }
+            }
+            if ($tr = strpos($line, '=')) {
+              $k  =  trim(substr($line, 0, $tr));
+              $v  =  trim(substr($line, $tr+1));
+              if (isset($section)) {
+                $_top[$name][$section][$k]  =  $v;
+              } else {
+                $_top[$name][$k]  =  $v;
+              }
+            }
+          }
+        }
+      }
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_config.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_regex.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_regex.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_regex.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension regex
+  * Regular Expression String Replace
+  *
+  * Usage Example:
+  * Content:  $template->assign('NAME', '*My Document*');
+  * Template: Document Name: {regex:NAME,'/[^a-z0-9]/i','_'}
+  * Result:   Document Name: _My_Document_
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_regex ( $param, $pattern, $replace ) {
+    return preg_replace( $pattern, $replace, $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_regex.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_replace.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_replace.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_replace.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension replace
+  * String Replace
+  *
+  * Usage Example:
+  * Content:  $template->assign('PATH', $path_tranlated);  //  C:\Apache\htdocs\php\test.php
+  * Template: Script Name: {replace:PATH,'\\','/'}
+  * Result:   Script Name: C:/Apache/htdocs/php/test.php
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_replace ( $param, $pattern, $replace ) {
+    return str_replace( $pattern, $replace, $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_replace.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_trim.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_trim.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_trim.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension trim
+  * Removes leading and trailing Whitespaces and Line Feeds
+  *
+  * Usage Example:
+  * Content:  $template->assign('LINK', ' Click Here  ');
+  * Template: <a href="/">{trim:LINK}</a>
+  * Result:   <a href="/">Click Here</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_trim ( $param ) {
+    return trim( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_trim.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_stringformat.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_stringformat.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_stringformat.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension stringformat
+  * Inserts a formatted String
+  *
+  * Usage Example:
+  * Content:  $template->assign('SUM', 25);
+  * Template: Current balance: {stringformat:SUM,'$ %01.2f'}
+  * Result:   Current balance: $ 25.00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_stringformat ( $param, $format ) {
+    return sprintf( $format,  $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_stringformat.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lang.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lang.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lang.php	(revision 1610)
@@ -0,0 +1,13 @@
+<?php
+
+function qx_lang($var) {
+	$retval = '{'.$var.'}';
+	$arr = explode('_', $var);
+	$var0 = array_shift($arr);
+	while( sizeof($arr) > 0 ) {
+		$var1 = implode('_', $arr);
+		$retval = ( isset($GLOBALS[$var0][$var1]) ? $GLOBALS[$var0][$var1] : $retval );
+		$var0 .= '_'.array_shift($arr);
+	}
+	return $retval;
+}

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_lang.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_globals.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_globals.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_globals.php	(revision 1610)
@@ -0,0 +1,6 @@
+<?php
+function qx_globals($var) {
+	$retval = '{'.$var.'}';
+	$retval = (array_key_exists ( $var, $GLOBALS ) ? $GLOBALS[$var] : $retval);
+	return $retval;
+}

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_globals.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_session.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_session.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_session.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension session
+  * Print Content of Session variables
+  *
+  * Usage Example:
+  * Content:  $_SESSION['userName']  =  'Philipp von Criegern';
+  * Template: Current User: {session:"userName"}
+  * Result:   Current User: Philipp von Criegern
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_session ( $param ) {
+    return $_SESSION[$param];
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_session.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_truncate.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_truncate.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_truncate.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension truncate
+  * Restricts a String to a specific number characters
+  *
+  * Usage Example:
+  * Content:  $template->assign('TEASER', 'PHP 4.3.0RC1 has been released. This is the first release candidate');
+  * Template: News: {truncate:TEASER,50} ... [more]
+  * Result:   News: QuickSkin version 5.0 has been released. This is the first ... [more]
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_truncate ( $param, $size ) {
+    return substr( $param, 0, $size );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_truncate.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_const.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_const.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_const.php	(revision 1610)
@@ -0,0 +1,9 @@
+<?php
+
+function qx_const($const) {
+        $retval = '{'.$const.'}';
+        if(defined($const)) {
+                $retval = constant($const);
+        }
+        return $retval;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_const.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_uppercase.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_uppercase.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_uppercase.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension uppercase
+  * Converts String to uppercase
+  *
+  * Usage Example:
+  * Content:  $template->assign('NAME', 'John Doe');
+  * Template: Username: {uppercase:NAME}
+  * Result:   Username: JOHN DOE
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_uppercase ( $param ) {
+    return strtoupper( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_uppercase.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_header.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_header.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_header.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+  /**
+  * QuickSkin Extension header
+  * Sends HTTP Header
+  *
+  * Usage Example:
+  * Content:  $template->assign( 'TITLE', 'SVG Template Demo:' );
+  *
+  * Template:
+  *     {header:"Content-type: image/svg+xml"}<?xml version="1.0" ?>
+  *     <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+  *     <svg width="300px" height="150px" style="shape-rendering:optimizeQuality;text-rendering:optimizeQuality">
+  *       <circle id="ball" cx="150" cy="75" r="50" style="fill:rgb(200,200,255)" />
+  *       <text x="70" y="80" id="title" style="font-face:Courier;font-size:12pt">{TITLE}</text>
+  *     </svg>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_header ( $param ) {
+    header($param);
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_header.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetstart.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetstart.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetstart.php	(revision 1610)
@@ -0,0 +1,24 @@
+<?php
+  /**
+  * QuickSkin Extension codesnippetstart
+  * required for the start of a code snippet
+  *
+  * Usage Example:
+  * Template: Code Snippet<br />{codesnippetstart:}
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+  function qx_codesnippetstart ( $param='' ) {
+    /*
+    nogutter = no line numbers
+    nocontrols = no menu at top
+    collapse = = display nothing, menu at top will display '+ expand source'
+    firstline[value] = starting number to start count
+    showcolumns = shows "ruler" at top
+    */
+    if ( $param = '' ) {
+      return '<pre name="code" class="php">';
+    } else {
+      return '<pre name="code" class="php:' . $param . '">';
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetstart.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_options.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_options.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_options.php	(revision 1610)
@@ -0,0 +1,32 @@
+<?php
+  /**
+  * QuickSkin Extension options
+  * Creates HTML DropDown Option list from an array
+  *
+  * Usage Example I:
+  * Content:  $template->assign('pick', array( "on", "off" ) );
+  * Template: Choose: <select name="onoff"> {options:pick} </select>
+  * Result:   Choose: <select name="onoff"> <option>on</option><option>off</option> </select>
+  *
+  * Usage Example II:
+  * Content:  $template->assign('color',   array( "FF0000" => "Red", "00FF00" => "Green", "0000FF" => "Blue" ) );
+  *           $template->assign('default', "00FF00" );
+  * Template: Color: <select name="col"> {options:color,default} </select>
+  * Result:   Color: <select name="col"> <option value="FF0000">Red</option><option value="00FF00" selected>Green</option><option value="0000FF">Blue</option> </select>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_options ( $param,  $default = '_DEFAULT_' ) {
+    $output  =  '';
+    if (is_array($param)) {
+      $keyindex  =  0;
+      foreach ($param as $key => $value) {
+        if ($key==$keyindex++ && is_numeric($key)) {
+          $output  .=  '<option' . (($value == $default) ? '  selected="selected"' : '') . '>' . $value . '</option>';
+        } else {
+          $output  .=  '<option value="' . $key . '"' . (($key == $default) ? '  selected="selected"' : '') . '>' . $value . '</option>';
+        }
+      }
+    }
+    return $output;
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_options.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_dateformatgrid.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_dateformatgrid.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_dateformatgrid.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+  /**
+  * QuickSkin Extension dateformatgrid
+  * Changes Dateformat
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_dateformatgrid ( $param, $format = 'F j, Y' ) {
+    list($month,$day,$year,$hour,$minute,$second) = split("[-:T\.]", $param);
+
+    // handle empty values
+    if (! $hour) { $hour = '00'; }
+    if (! $minute) { $minute = '00'; }
+    if (! $second) { $second = '00'; }
+
+    return date( $format, mktime($hour, $minute, $second, $month, $day, $year));
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_dateformatgrid.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_encode.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_encode.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_encode.php	(revision 1610)
@@ -0,0 +1,16 @@
+<?php
+  /**
+  * QuickSkin Extension encode
+  * Encodes String (md5)
+  *
+  * Usage Example:
+  * Content:  $template->assign('ID', 123);
+  * Template: <a href="delete.php?id={encode:ID}">delete</a>
+  * Result:   <a href="delete.php?id=7B600B6476167773626A">delete</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+
+  function qx_encode ( $param ) {
+    return md5( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_encode.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_time.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_time.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_time.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+  /**
+  * QuickSkin Extension current_time
+  * Print Current Time
+  *
+  * Usage Example:
+  * Template: Time: {current_time:}
+  * Result:   Time: 12:46:00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_current_time ($meridiem='A') {
+    global $_CONFIG;
+
+    $timeFormat = 'g:i:s ' . $meridiem;
+    if ( !empty($_CONFIG['time_format']) ) {
+      $timeFormat = $_CONFIG['time_format'];
+    }
+    return date( $timeFormat );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_time.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_time.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_time.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_time.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+  /**
+  * QuickSkin Extension db_time
+  * Convert Oracle Date (British Format) to Local Formatted Time
+  *
+  * Usage Example:
+  * Content:  $template->assign('UPDATE', $result['LAST_UPDATE_DATE_TIME']);
+  * Template: Last update: {db_time:UPDATE}
+  * Result:   Last update: 12:46:00
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_db_time ( $param ) {
+    global $configuration;
+
+    if (preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/', $param)) {
+      return date( $configuration['time_format'],  strtotime($param) );
+    } else {
+      return 'Invalid date format!';
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_db_time.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailtoencode.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailtoencode.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailtoencode.php	(revision 1610)
@@ -0,0 +1,104 @@
+<?php
+  /**
+  * QuickSkin Extension mailtoencode
+  * Protects email address from being scanned by spam bots
+  * and optionally builds full mailto: link
+  *
+  * Usage Example 1:
+  * Content:  $template->assign('AUTHOR', 'yourname@yourdomain.com' );
+  * Template: Author: {mailtoencode:AUTHOR}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;">yourname&#64;yourdomain&#46;com</a>
+  *
+  * Usage Example 2 (Email address only):
+  * Template: Author: {mailtoencode:"yourname@yourdomain.com"}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;">yourname&#64;yourdomain&#46;com</a>
+  *
+  * Usage Example 3 (Email address and name):
+  * Template: Author: {mailtoencode:"yourname@yourdomain.com","Your Name"}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;">Your Name</a>
+  *
+  * Usage Example 4 (Email address and name, encode set to true, and class name):
+  * Template: Author: {mailtoencode:"yourname@yourdomain.com","Your Name",true,'white'}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;" class="white">Your Name</a>
+  *
+  * Usage Example 5 (Email address and name, encode set to true, class name and style defined):
+  * Template: Author: {mailtoencode:"yourname@yourdomain.com","Your Name",true,'white','font-size:18px;'}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;" class="white" style="font-size:18px;">Your Name</a>
+  *
+  * Usage Example 6 (Email address and name, encode set to true, no class name and style defined):
+  * Template: Author: {mailtoencode:"yourname@yourdomain.com","Your Name",true,'','font-size:18px;'}
+  * Result:   Author: <a href="&#109&#97&#105&#108&#116&#111&#58&#121;&#111;&#117;&#114;&#110;&#97;&#109;&#101;&#64;&#121;&#111;&#117;&#114;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;" style="font-size:18px;">Your Name</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+
+  if(!function_exists('str_split')){
+    function str_split($text, $split = 1){
+      $array = array();
+      for($i=0; $i < strlen($text); $i++){
+        $key = NULL;
+        for ($j = 0; $j < $split; $j++){
+          $key .= $text[$i];
+        }
+        array_push($array, $key);
+      }
+        return $array;
+    }
+  }
+
+  function qx_mailtoencode ($emailAddy,$text='',$buildLink=true,$class='',$style='') {
+    if ( $buildLink ) {
+      // mailto: portion
+      $obfuscatedMailTo = '';
+      $mailto           = "mailto:";
+      $length           = strlen($mailto);
+      for ($i = 0; $i < $length; $i++) {
+        $obfuscatedMailTo .= "&#" . ord($mailto[$i]);
+      }
+      // END - mailto: portion
+      $emailLink  = '<a href="';
+      $emailLink .= $obfuscatedMailTo;
+    }
+    $emailLink .= obfuscate($emailAddy);
+    if ( $buildLink ) {
+      $emailLink .= '"';
+      if ( trim($class) != '' ) {
+        $emailLink .= ' class="' . $class . '"';
+      }
+      if ( trim($style) != '' ) {
+        $emailLink .= ' style="' . $style . '"';
+      }
+      $emailLink .= '>';
+      if ( trim($text) != '' ) {
+        $newText    = trim($text);
+        $newText    = str_replace('@','&#64;',$newText);
+        $newText    = str_replace('.','&#46;',$newText);
+        $emailLink .= $newText;
+      } else {
+        $newText    = trim($emailAddy);
+        $newText    = str_replace('@','&#64;',$newText);
+        $newText    = str_replace('.','&#46;',$newText);
+        $emailLink .= $newText;
+      }
+      $emailLink .= "</a>";
+    }
+    return $emailLink;
+  }
+
+  function obfuscate($text) { // NOTE: Uses function str_split
+    preg_match_all("/[-a-z0-9\._]+@[-a-z0-9\._]+\.[a-z]{2,4}/", $text, $emails);
+    $patterns = array();
+    $replacements = array();
+    foreach($emails[0] as $email) {
+      if(!in_array("/$email/", $patterns)) {
+        $obfuscated = '';
+        foreach(str_split($email) as $char) {
+          $obfuscated .= '&#'.ord($char).';';
+        }
+        $patterns[] = "/$email/";
+        $replacements[] = $obfuscated;
+      }
+    }
+    $text = preg_replace($patterns, $replacements, $text);
+    return $text;
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_mailtoencode.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetend.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetend.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetend.php	(revision 1610)
@@ -0,0 +1,13 @@
+<?php
+  /**
+  * QuickSkin Extension codesnippetend
+  * required for the end of a code snippet
+  *
+  * Usage Example:
+  * Template: Code Snippet<br />{codesnippetend:}
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+  function qx_codesnippetend () {
+    return '</pre>';
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_codesnippetend.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_config.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_config.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_config.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+  /**
+  * QuickSkin Extension config
+  * Print Content of Configuration Parameters
+  *
+  * Usage Example:
+  * Content:  $_CONFIG['webmaster']  =  'philipp@criegern.de';
+  * Template: Please Contact Webmaster: {config:"webmaster"}
+  * Result:   Please Contact Webmaster: philipp@criegern.de
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_config ( $param ) {
+    global $_CONFIG;
+
+    return $_CONFIG[$param];
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_config.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_htmlentities.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_htmlentities.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_htmlentities.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+  /**
+  * QuickSkin Extension htmlentities
+  * Converts Special Characters to HTML Entities
+  *
+  * Usage Example:
+  * Content:  $template->assign('NEXT', 'Next Page >>');
+  * Template: <a href="next.php">{htmlentities:NEXT}</a>
+  * Result:   <a href="next.php">Next Page &gt;&gt;</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_htmlentities ( $param ) {
+    return htmlentities( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_htmlentities.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_hidemail.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_hidemail.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_hidemail.php	(revision 1610)
@@ -0,0 +1,16 @@
+<?php
+  /**
+  * QuickSkin Extension hidemail
+  * Protects email address from being scanned by spam bots
+  *
+  * Usage Example:
+  * Content:  $template->assign('AUTHOR', 'andy@codeworxtech.com' );
+  * Template: Author: {hidemail:AUTHOR}
+  * Result Source:   Author: andy&#64;codeworxtech&#46;com
+  * Result Display:  Author: andy@codeworxtech.com
+  *
+  * @author Andy Prevost andy@codeworxtech.com
+  */
+  function qx_hidemail ( $param ) {
+    return str_replace('@', '&#64;', str_replace('.', '&#46;', $param));
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_hidemail.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_file.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_file.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_file.php	(revision 1610)
@@ -0,0 +1,29 @@
+<?php
+  /**
+  * QuickSkin Extension load_file
+  * Print out file content
+  *
+  * Usage Example:
+  * External Content Source (counter.txt):
+  *
+  *     1234
+  *
+  * Template:
+  *
+  *     You are visitor No: {load_file:"counter.txt"}
+  *
+  * Result:
+  *
+  *     You are visitor No: 1234
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_load_file ( $filename ) {
+    if (is_file($filename)) {
+      if($hd = @fopen($filename, 'r')) {
+        $content  =  fread($hd, filesize($filename));
+        fclose($hd);
+        return $content;
+      }
+    }
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_load_file.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_vardump.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_vardump.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_vardump.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+  /**
+  * QuickSkin Extension vardump
+  * Prints variable content for debug purpose
+  *
+  * Usage Example I:
+  * Content:  $template->assign('test', array( "name1", "value1",  "name2", "value2" ) );
+  *
+  * Template: DEBUG: {vardump:test}
+  *
+  * Result:   DEBUG: Array
+  *                  (
+  *                      [name1] => value1
+  *                      [name2] => value2
+  *                  )
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_vardump ( $param ) {
+    return '<pre>' . print_r($param, true) . '</pre>';
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_vardump.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_entity_decode.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_entity_decode.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_entity_decode.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+  /**
+  * QuickSkin Extension entity_decode
+  * Convert all HTML entities to their applicable characters
+  *
+  * Usage Example:
+  * Content:  $template->assign('MESSAGE', 'Nicht m&ouml;glich!');
+  * Template: <a href="alert('{entity_decode:MESSAGE}');">Alert</a>
+  * Result:   <a href="alert('Nicht m?lich!');">Alert</a>
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_entity_decode ( $param ) {
+    $param  =  strtr($param, array_flip(get_html_translation_table(HTML_ENTITIES)));
+    $param  =  preg_replace("/&#([0-9]+);/me", "chr('\\1')", $param);
+    return $param;
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_entity_decode.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_date.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_date.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_date.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+  /**
+  * QuickSkin Extension current_date
+  * Print Current Date
+  *
+  * Usage Example:
+  * Template: Today: {current_date:}
+  * Result:   Today: 30.01.2003
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_current_date () {
+    global $_CONFIG;
+
+    $dateFormat = 'F j, Y';
+    if ( !empty($_CONFIG['date_format']) ) {
+      $dateFormat = $_CONFIG['date_format'];
+    }
+    return date( $dateFormat );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_current_date.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_urlencode.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_urlencode.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_urlencode.php	(revision 1610)
@@ -0,0 +1,15 @@
+<?php
+ /**
+  * QuickSkin Extension urlencode
+  * Inserts URL-encoded String
+  *
+  * Usage Example:
+  * Content:  $template->assign('PARAM', 'Delete User!');
+  * Template: go.php?param={urlencode:PARAM}
+  * Result:   go.php?param=Delete+User%21
+  *
+  * @author Andy Prevost andy@codeworxtech.com - original by Philipp v. Criegern philipp@criegern.de
+  */
+  function qx_urlencode ( $param ) {
+    return urlencode( $param );
+  }

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_urlencode.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/index.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        Security
+ * @package         FolderProtectFile
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('HTTP/1.1 301 Moved Permanently');
+header("Location: ../../../index.php");
+

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_TXT.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_TXT.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_TXT.php	(revision 1610)
@@ -0,0 +1,17 @@
+<?php
+  /**
+  * QuickSkin Extension WB_TXT
+  * This function will replace the string with the value of WebsiteBaker CMS's $TEXT[] array 
+  *
+  * Usage Example:
+  * in Template use:{WB_TXT:"SAVE"}
+  *	returns the translated string
+  *
+  * @author WebsiteBaker Org e.V.
+  *
+  */
+function qx_WB_TXT ( $var ) {
+	$LANG_ARRAY = $GLOBALS['TEXT'];		
+	$ret_val = isset($LANG_ARRAY[$var]) ? $LANG_ARRAY[$var] : ('<span style="color:#777">'.$var.'</span>');
+	return $ret_val;	
+}

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_WB_TXT.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_TXT.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_TXT.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_TXT.php	(revision 1610)
@@ -0,0 +1,43 @@
+<?php
+  /**
+  * QuickSkin Extension TXT
+  * This function will replace the string with the value of  language array of the module
+  *
+  * Usage Example:
+  * in Template use:{TXT:"OPEN_FILE"}
+  *	returns the translated string
+  *  
+  * 
+  * Important Note:
+  * ===============
+  * In order to use this function, you will need to follow the standard Naming Convention of WebsiteBaker CMS
+  * It is: if your Module has the name "myModule", your language array needs to be named "$MOD_MYMODULE[]"
+  * If you follow this rule, you can use this function (this extension) flawlessly
+  *
+  * @author WebsiteBaker Org e.V.
+  *
+  */
+function qx_TXT ( $var ) {
+	
+	$ret_val = '';
+	switch (TRUE)
+	{
+		// retrieve the MODULE_NAME
+		case isset($GLOBALS['tool']): $MODULE_NAME = $GLOBALS['tool']; break;				// AdminTool
+		case isset($GLOBALS['section']['module']): $MODULE_NAME = $GLOBALS['section']['module']; break;     // PageType Module
+		case isset($GLOBALS['module_dir']): $MODULE_NAME = $GLOBALS['module_dir']; break;	// SnippetType Module
+		default: $MODULE_NAME = FALSE;	
+	}
+	
+	if(!isset($MODULE_NAME))
+	{
+		$ret_val = 'A problem occured. <br />(QuickSkin Extension) qx_TXT issue.';		
+	} 
+	else 
+	{	
+		$MODULE_NAME = strtoupper($MODULE_NAME);
+		$LANG_ARRAY = $GLOBALS['MOD_'.$MODULE_NAME];
+		$ret_val = isset($LANG_ARRAY[$var]) ? $LANG_ARRAY[$var] : ('<span style="color:#777">'.$var.'</span>');
+	}	
+	return $ret_val;
+}

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/qx/qx_TXT.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/class.quickskin.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/class.quickskin.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/class.quickskin.php	(revision 1610)
@@ -0,0 +1,1015 @@
+<?php
+//error_reporting(E_ALL ^ E_NOTICE);
+/*~ class.quickskin.php
+.---------------------------------------------------------------------------.
+|  Software: QuickSkin Class                                                |
+|   Version: 5.0                                                            |
+|   Contact: andy.prevost@worxteam.com,andy@codeworx.ca                     |
+|      Info: http://quickskin.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/quickskin/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost andy.prevost@worxteam.com (admin)                 |
+|    Author: Manuel 'EndelWar' Dalla Lana endelwar@aregar.it (former admin) |
+|    Author: Philipp v. Criegern philipp@criegern.com (original founder)    |
+| Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.               |
+|    * NOTE: QuickSkin is the SmartTemplate project renamed. SmartTemplate  |
+|            information and downloads can still be accessed at the         |
+|            smarttemplate.sourceforge.net site                             |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services:                                       |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+Last modified: January 01 2009 ~*/
+
+/* designed to work with PHP5 - will NOT work with PHP4 */
+
+/* PURPOSE: 'Compiles' HTML-Templates to PHP Code
+ *
+ * Usage Example I:
+ *
+ * $page = new QuickSkin( "template.html" );
+ * $page->assign( 'TITLE',  'TemplateDemo - Userlist' );
+ * $page->assign( 'user',   DB_read_all( 'select * from ris_user' ) );
+ * $page->output();
+ *
+ * Usage Example II:
+ *
+ * $data = array(
+ *             'TITLE' => 'TemplateDemo - Userlist',
+ *             'user'  => DB_read_all( 'select * from ris_user' )
+ *         );
+ * $page = new QuickSkin( "template.html" );
+ * $page->output( $data );
+ *
+ */
+
+class QuickSkin {
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PUBLIC
+  /////////////////////////////////////////////////
+
+  /**
+   * Reuse Code
+   * Whether to use stored compiled php code or not (for debug purpose)
+   * @var bool
+   */
+  public $reuse_code       = false;
+
+  /**
+   * Template Directory
+   * Directory where all templates are stored, can be overwritten by
+   * global configuration array $_CONFIG['template_dir']
+   * @var string
+   */
+  public $template_dir     = '_skins/';
+
+  /**
+   * Temp Directory
+   * Where to store compiled templates, can be overwritten by
+   * global configuration array $_CONFIG['quickskin_compiled']
+   * @var string
+   */
+  public $temp_dir         = '_skins_tmp/';
+
+  /**
+   * Cache Directory
+   * Temporary folder for output cache storage, can be overwritten by
+   * global configuration array $_CONFIG['quickskin_cache']
+   * Note: typically set the same as the Temp Directory, but can be unique
+   * @var string
+   */
+  public $cache_dir         = '_skins_tmp/';
+
+  /**
+   * Cache Lifetime
+   * Default Output Cache Lifetime in Seconds, can be overwritten by
+   * global configuration array $_CONFIG['cache_lifetime']
+   * @var int
+   */
+  public $cache_lifetime    = 600; // seconds
+
+  /**
+   * Extensions Directory
+   * Directory where all extensions are stored
+   * @var string
+   */
+  public $extensions_dir    = '_lib/qx';      /* Directory where all extensions are stored */
+
+  /**
+   * Extension Prefix
+   * Filename prefix on all the extensions files
+   * @var string
+   */
+  public $extension_prefix  = 'qx_';
+
+  /**
+   * Left Delimiter
+   * Default Left delimiter, can be overwritten by
+   * global configuration array $_CONFIG['left_delimiter']
+   * @var string
+   */
+  public $left_delimiter    = '{';
+
+  /**
+   * Right Delimiter
+   * Default Right delimiter, can be overwritten by
+   * global configuration array $_CONFIG['right_delimiter']
+   * @var string
+   */
+  public $right_delimiter   = '}';
+
+  /**
+   * Extension Tagged
+   * List of used QuickSkin Extensions
+   * @var array
+   */
+  public $extension_tagged  = array();
+
+  /**
+   * QuickSkin Version Number
+   * List of used QuickSkin Extensions
+   * @var string
+   */
+  public $version           = '5.0';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE
+  /////////////////////////////////////////////////
+
+  private $cache_filename; /* Temporary file for output cache storage */
+  private $tpl_file;       /* The template filename */
+  private $cpl_file;       /* The compiled template filename */
+  private $data = array(); /* Template content array */
+  private $parser;         /* Parser Class */
+  private $debugger;       /* Debugger Class */
+  private $skins_sub_dir;  /* temporary variable to hold the subdirectory of the main template */
+  private $supp_templates = '';   /* supplementary templates */
+  private $supptemplate   = '';   /* supplementary template */
+
+  /* QuickSkin Constructor
+   * @access public
+   * @param string $template_filename Template Filename
+   */
+  function __construct( $template_filename = '' ) {
+    global $_CONFIG;
+	// make extension directory setting
+	if (!empty($_CONFIG['extensions_dir'])) {
+      $this->extensions_dir  =  $_CONFIG['extensions_dir'];
+    }
+    if (!empty($_CONFIG['quickskin_compiled'])) {
+      $this->temp_dir  =  $_CONFIG['quickskin_compiled'];
+    }
+    if (!empty($_CONFIG['quickskin_cache'])) {
+      $this->cache_dir  =  $_CONFIG['quickskin_cache'];
+    }
+    if (is_numeric($_CONFIG['cache_lifetime'])) {
+      $this->cache_lifetime  =  $_CONFIG['cache_lifetime'];
+    }
+    if (!empty($_CONFIG['template_dir'])  &&  is_file($_CONFIG['template_dir'] . '/' . $template_filename)) {
+      $this->template_dir  =  $_CONFIG['template_dir'];
+    }
+    $this->tpl_file  =  $template_filename;
+    if ( dirname($this->tpl_file) != "") {
+      $this->skins_sub_dir = dirname($this->tpl_file);
+    }
+  }
+
+  /* DEPRECATED METHODS */
+  /* Methods used in older parser versions, soon will be removed */
+  function set_templatefile ($template_filename)  { $this->tpl_file  =  $template_filename; }
+  function add_value ($name, $value )       { $this->assign($name, $value); }
+  function add_array ($name, $value )       { $this->append($name, $value); }
+
+  /* Process file or contents to strip out the <body tag (inclusive)
+   * and the </body tag to the end
+   *
+   * Usage Example:
+   * $page->getContents( '', '/contents.htm' );
+   * or
+   * $page->getContents( 'start of data .... end of data' );
+   *
+   * @access public
+   * @param string $contents Parameter contents
+   * @param string $filename Parameter filename (fully qualified)
+   * @desc strip out body tags and return only page data
+   */
+  function getContents($contents, $filename="") {
+    if ( $contents == '' && $filename != '' && file_exists($filename) ) {
+      $contents = file_get_contents($filename);
+    }
+
+    // START process any PHP code
+    ob_start();
+    eval("?>".$contents."<?php ");
+    $contents = ob_get_contents();
+    ob_end_clean();
+    // END process any PHP code
+    $lower_contents = strtolower($contents);
+    // determine if a <body tag exists and process if necessary
+    $bodytag_start = strpos($lower_contents, "<body");
+    if ( $bodytag_start !== false ) {
+      $bodytag_end    = strpos($lower_contents, ">", $bodytag_start) + 1;
+      // get contents with <body tag removed
+      $contents       = substr($contents, $bodytag_end);
+      $lower_contents = strtolower($contents);
+      // work on </body closing tag
+      $end_start      = strpos($lower_contents, "</body");
+      $end_end        = strpos($lower_contents, ">", $bodytag_start) + 1;
+      // return stripped out <body and </body tags
+      return $this->getExtensions( substr($contents, 0, $end_start) );
+    } else {
+      // body tags not found, so return data
+      return $this->getExtensions( $contents );
+    }
+  }
+
+  /* Determine Contents Command from Variable Name
+   * {variable}             :  array( "echo",              "variable" )  ->  echo $_obj['variable']
+   * {variable > new_name}  :  array( "_obj['new_name']=", "variable" )  ->  $_obj['new_name']= $_obj['variable']
+   * @param string $tag Variale Name used in Template
+   * @return array  Array Command, Variable
+   * @access private
+   * @desc Determine Contents Command from Variable Name
+   */
+  function processCmd($tag) {
+    if (preg_match('/^(.+) > ([a-zA-Z0-9_.]+)$/', $tag, $tagvar)) {
+      $tag  =  $tagvar[1];
+      list($newblock, $newskalar)  =  $this->var_name($tagvar[2]);
+      $cmd  =  "\$$newblock"."['$newskalar']=";
+    } else {
+      $cmd  =  'echo';
+    }
+    $ret = array($cmd, $tag);
+    return $ret;
+  }
+
+  /* Load and process the Extensions that may be used in the Contents
+   *
+   * Usage Example:
+   * $tcnt = $this->getExtensions( $param );
+   *
+   * @access public
+   * @param string $param (content to process)
+   * @return string
+   * @desc Load and process the Extensions that may be used in the Contents
+   */
+  function getExtensions($contents) {
+    $header = '';
+    /* Include Extensions */
+    if (preg_match_all('/'.$this->left_delimiter.'([a-zA-Z0-9_]+):([^}]*)'.$this->right_delimiter.'/', $contents, $var)) {
+      foreach ($var[2] as $cnt => $tag) {
+        /* Determine Command (echo / $obj[n]=) */
+        list($cmd, $tag)  =  $this->processCmd($tag);
+
+        $extension  =  $var[1][$cnt];
+        //if (!isset($this->extension_tagged[$extension])) {
+          $header .= 'include_once "'.$this->extensions_dir."/".$this->extension_prefix."$extension.php\";\n";
+        //  $this->extension_tagged[$extension]  =  true;
+        //}
+        if (!strlen($tag)) {
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension();\n?>\n";
+        } elseif (substr($tag, 0, 1) == '"') {
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension($tag);\n?>\n";
+        } elseif (strpos($tag, ',')) {
+          list($tag, $addparam)  =  explode(',', $tag, 2);
+          list($block, $skalar)  =  $this->var_name($tag);
+          if (preg_match('/^([a-zA-Z_]+)/', $addparam, $match)) {
+            $nexttag   =  $match[1];
+            list($nextblock, $nextskalar)  =  $this->var_name($nexttag);
+            $addparam  =  substr($addparam, strlen($nexttag));
+            $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar'],\$$nextblock"."['$nextskalar']"."$addparam);\n?>\n";
+          } else {
+            $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar'],$addparam);\n?>\n";
+          }
+        } else {
+          list($block, $skalar) = $this->var_name($tag);
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar']);\n?>\n";
+        }
+        $contents  =  str_replace($var[0][$cnt],  $code,  $contents);
+      }
+    }
+    // START process any PHP code
+    ob_start();
+    eval($header);
+    eval("?>".$contents."<?php ");
+    $contents = ob_get_contents();
+    ob_end_clean();
+    // END process any PHP code
+    return $contents;
+  }
+
+  /* Assign Supplementary Template
+   *
+   * Usage Example:
+   * $page->addtpl( 'sponsors', 'default/poweredby.htm' );
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param string $value Parameter Value
+   * @desc Assign Supplementary Template
+   */
+  function addtpl ( $name, $value = '' ) {
+    if (is_array($name)) {
+      foreach ($name as $k => $v) {
+        $this->supptemplate[$k]  =  $v;
+      }
+    } else {
+      $this->supptemplate[$name]  =  $value;
+    }
+  }
+
+  /* Assign Template Content
+   *
+   * Usage Example:
+   * $page->assign( 'TITLE',     'My Document Title' );
+   * $page->assign( 'userlist',  array(
+   *                               array( 'ID' => 123,  'NAME' => 'John Doe' ),
+   *                               array( 'ID' => 124,  'NAME' => 'Jack Doe' ),
+   *                             );
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param mixed $value Parameter Value
+   * @desc Assign Template Content
+   */
+  function assign ( $name, $value = '' ) {
+    if (is_array($name)) {
+      foreach ($name as $k => $v) {
+        $this->data[$k]  =  $v;
+      }
+    } else {
+      $this->data[$name]  =  $value;
+    }
+  }
+
+  /* Assign Template Content
+   *
+   * Usage Example:
+   * $page->append( 'userlist',  array( 'ID' => 123,  'NAME' => 'John Doe' ) );
+   * $page->append( 'userlist',  array( 'ID' => 124,  'NAME' => 'Jack Doe' ) );
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param mixed $value Parameter Value
+   * @desc Assign Template Content
+   */
+  function append ( $name, $value ) {
+    if (is_array($value)) {
+      $this->data[$name][]  =  $value;
+    } elseif (!is_array($this->data[$name])) {
+      $this->data[$name]  .=  $value;
+    }
+  }
+
+  /* Parser Wrapper
+   * Returns Template Output as a String
+   *
+   * @access public
+   * @param array $_top Content Array
+   * @return string  Parsed Template
+   * @desc Output Buffer Parser Wrapper
+   */
+  function result ( $_top = '' ) {
+    ob_start();
+    $this->output( $_top );
+    $result  =  ob_get_contents();
+    ob_end_clean();
+    return $result;
+  }
+
+  /* Execute parsed Template
+   * Prints Parsing Results to Standard Output
+   *
+   * @access public
+   * @param array $_top Content Array
+   * @desc Execute parsed Template
+   */
+  function output ( $_top = '' ) {
+    global $_top;
+
+    $data   = $this->data;
+    /* Process supplementary templates */
+    if ( is_array($this->supptemplate) && !empty($this->supptemplate) ) { // passed by addtpl functionality
+      foreach ($this->supptemplate as $key => $value) {
+        $supp_templates[$key] = file_get_contents($value);
+      }
+    }
+
+    /* Make sure that folder names have a trailing '/' */
+    if (strlen($this->template_dir)  &&  substr($this->template_dir, -1) != '/') {
+      $this->template_dir  .=  '/';
+    }
+    if (strlen($this->temp_dir)  &&  substr($this->temp_dir, -1) != '/') {
+      $this->temp_dir  .=  '/';
+    }
+
+    /* Prepare Template Content*/
+    if (!is_array($_top)) {
+      if (strlen($_top)) {
+        $this->tpl_file  =  $_top;
+      }
+      $_top  =  $this->data;
+    }
+    $_obj  =  &$_top;
+    $_stack_cnt  =  0;
+    $_stack[$_stack_cnt++]  =  $_obj;
+
+    /* Check if template is already compiled */
+    $queryString = $_SERVER['QUERY_STRING'];
+    $cpl_file_name = preg_replace('/[:\/.\\\\]/', '_', $this->tpl_file . '?' . $queryString);
+    if (strlen($cpl_file_name) > 0) {
+      $cpl_file_name = 'qs_' . md5($cpl_file_name);
+      $this->cpl_file  =  $this->temp_dir . $cpl_file_name . '.php';
+      $compile_template  =  true;
+      if ($this->reuse_code) {
+        if (is_file($this->cpl_file)) {
+          if ($this->mtime($this->cpl_file) > $this->mtime($this->template_dir . $this->tpl_file)) {
+            $compile_template  =  false;
+          }
+        }
+      }
+      if ($compile_template) {
+        $this->parser = new QuickSkinParser();
+        $this->parser->template_dir     = $this->template_dir;
+        $this->parser->skins_sub_dir    = $this->skins_sub_dir;
+        $this->parser->tpl_file         = $this->tpl_file;
+        $this->parser->left_delimiter   = $this->left_delimiter;
+        $this->parser->right_delimiter  = $this->right_delimiter;
+        $this->parser->extensions_dir   = $this->extensions_dir;
+        $this->parser->extension_prefix = $this->extension_prefix;
+        $this->parser->supp_templates   = $this->supp_templates;
+
+        if (!$this->parser->compile($this->cpl_file,$data,$this->supp_templates,$this->extensions_dir)) {
+          exit('QuickSkin Parser Error: ' . $this->parser->error);
+        }
+      }
+      /* Execute Compiled Template */
+      include($this->cpl_file);
+    } else {
+      exit('QuickSkin Error: You must set a template file name');
+    }
+    /* Delete Global Content Array in order to allow multiple use of QuickSkin class in one script */
+    unset ($GLOBALS['_top']);
+  }
+
+  /* Debug Template
+   *
+   * @access public
+   * @param array $_top Content Array
+   * @desc Debug Template
+   */
+  function debug ( $_top = '' ) {
+    /* Prepare Template Content */
+    if (!$_top) {
+      $_top  =  $this->data;
+    }
+    if (@include_once('class.quickskindebugger.php')) {
+      $this->debugger = new QuickSkinDebugger($this->template_dir . $this->tpl_file, $this->right_delimiter, $this->left_delimiter);
+      $this->debugger->start($_top);
+    } else {
+      exit( 'QuickSkin Error: Cannot find class.quickskindebugger.php; check QuickSkin installation');
+    }
+  }
+
+  /* Start Ouput Content Buffering
+   *
+   * Usage Example:
+   * $page = new QuickSkin('template.html');
+   * $page->use_cache();
+   * ...
+   *
+   * @access public
+   * @desc Output Cache
+   */
+  function use_cache ( $key = '' ) {
+    if (empty($_POST)) {
+      $this->cache_filename  =  $this->cache_dir . 'cache_' . md5($_SERVER['REQUEST_URI'] . serialize($key)) . '.ser';
+      if (($_SERVER['HTTP_CACHE_CONTROL'] != 'no-cache')  &&  ($_SERVER['HTTP_PRAGMA'] != 'no-cache')  &&  @is_file($this->cache_filename)) {
+        if ((time() - filemtime($this->cache_filename)) < $this->cache_lifetime) {
+          readfile($this->cache_filename);
+          exit;
+        }
+      }
+      ob_start( array( &$this, 'cache_callback' ) );
+    }
+  }
+
+  /* Output Buffer Callback Function
+   *
+   * @access private
+   * @param string $output
+   * @return string $output
+   */
+  function cache_callback ( $output ) {
+    if ($hd = @fopen($this->cache_filename, 'w')) {
+      fwrite($hd,  $output);
+      fclose($hd);
+    } else {
+      $output = 'QuickSkin Error: failed to open cache file "' . $this->cache_filename . '"';
+    }
+    return $output;
+  }
+
+  /* Determine Last Filechange Date (if File exists)
+   *
+   * @access private
+   * @param string $filename
+   * @return mixed
+   * @desc Determine Last Filechange Date
+   */
+  function mtime ( $filename ) {
+    if (@is_file($filename)) {
+      $ret = filemtime($filename);
+      return $ret;
+    }
+  }
+
+  /* Set (or reset) Properties (variables)
+   *
+   * Usage Example:
+   * $page->set('reuse_code', true);
+   *
+   * @access public
+   * @param string $name Parameter Name
+   * @param mixed $value Parameter Value
+   * NOTE: will not work with arrays, there are no arrays to set/reset */
+  function set ( $name, $value = '' ) {
+    if ( isset($this->$name) ) {
+      $this->$name = $value;
+    } else {
+      exit( 'QuickSkin Error: Attempt to set a non-existant class property: ' . $name);
+    }
+  }
+
+}
+
+/*~
+.---------------------------------------------------------------------------.
+|  Software: QuickSkinParser Class * Used by QuickSkin Class                |
+|   Version: 5.0                                                            |
+|   Contact: andy.prevost@worxteam.com,andy@codeworx.ca                     |
+|      Info: http://quickskin.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/quickskin/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost andy.prevost@worxteam.com (admin)                 |
+|    Author: Manuel 'EndelWar' Dalla Lana endelwar@aregar.it (former admin) |
+|    Author: Philipp v. Criegern philipp@criegern.com (original founder)    |
+| Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.               |
+|    * NOTE: QuickSkin is the SmartTemplate project renamed. SmartTemplate  |
+|            information and downloads can still be accessed at the         |
+|            smarttemplate.sourceforge.net site                             |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services:                                       |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+Last modified: January 01 2009 ~*/
+
+class QuickSkinParser {
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PUBLIC
+  /////////////////////////////////////////////////
+
+  public $error;               /* Error messages */
+  public $template;            /* The template itself */
+  public $tpl_file;            /* The template filename */
+  public $template_dir;        /* The template filename used to extract the dirname for subtemplates */
+  public $skins_sub_dir;       /* The template subdirectory, passed by main class */
+  public $extensions_dir;      /* The extension directory */
+  public $extension_tagged = array(); /* List of used QuickSkin Extensions */
+  public $left_delimiter;      /* Default Left delimiter */
+  public $right_delimiter;     /* Default Right delimiter */
+  public $supp_templates = ''; /* Contains array or single supplementary template(s) */
+  public $extension_prefix;    /* filename prefix on all the extensions files */
+
+  /* QuickSkinParser Constructor */
+  /*
+  function __construct() {
+  }
+  */
+
+  /* Replace template logical expression in IF..ENDIF (|| or &&) with php logical expression
+   * @access private
+   * @desc replace template logical expression (|| or &&) with php logical expression
+   * @author Bruce Huang (msn: huang_x_c@163.com)
+   * @param string $src_page source page intended to be replaced
+   */
+  function replace_logic_expression( &$src_page ) {
+    /* cannot find '||' or '&&' */
+    if(!strpos($src_page, '||') && !strpos($src_page, '&&')) {
+      return;
+    }
+    /* match 'ELSE' and the last sub expression */
+    if (preg_match_all('/<!-- (ELSE)?IF \s*(\(*).*[|&]{2}\s*\(*\s*([a-zA-Z0-9_.]+)\s*([!=<>]+)\s*(["]?[^"]*?["]?)\s*(\)*)\s* -->/', $src_page, $var)) {
+      foreach ($var[3] as $cnt => $tag) {
+        list($parent, $block)  =  $this->var_name($tag);
+        $cmp   =  $var[4][$cnt];
+        $val   =  $var[5][$cnt];
+        $else  =  ($var[1][$cnt] == 'ELSE') ? '} else' : '';
+        if ($cmp == '=') {
+          $cmp  =  '==';
+        }
+        if (preg_match('/"([^"]*)"/',$val,$matches)) {
+          $code_suffix  =  "\$$parent"."['$block'] $cmp \"".$matches[1].$var[6][$cnt]."\"){\n?>";
+        } elseif (preg_match('/([^"]*)/',$val,$matches)) {
+          list($parent_right, $block_right)  =  $this->var_name($matches[1]);
+          $code_suffix  =  "\$$parent"."['$block'] $cmp \$$parent_right"."['$block_right']".$var[6][$cnt]."){\?>";
+        }
+
+        /* match other sub expressions */
+        if (preg_match_all('/([a-zA-Z0-9_.]+)\s*([!=<>]+)\s*(["]?[^"]*?["]?)\s*(\)*\s*[|&]{2}\s*\(*)\s*/', $var[0][$cnt], $sub_var)) {
+          $code_mid = '';
+          foreach($sub_var[1] as $sub_cnt => $sub_tag) {
+            list($sub_parent, $sub_block) = $this->var_name($sub_tag);
+            $cmp = $sub_var[2][$sub_cnt];
+            $val = $sub_var[3][$sub_cnt];
+            $logic_exp  =  $sub_var[4][$sub_cnt];
+            if ($cmp == '=') {
+              $cmp  =  '==';
+            }
+            if (preg_match('/"([^"]*)"/',$val,$matches)) {
+              $code_mid  =  $code_mid."\$$sub_parent"."['$sub_block'] $cmp \"".$matches[1]."\"".$logic_exp;
+            } elseif (preg_match('/([^"]*)/',$val,$matches)) {
+              list($sub_parent_right, $sub_block_right)  =  $this->var_name($matches[1]);
+              $code_mid  =  $code_mid."\$$sub_parent"."['$sub_block'] $cmp \$$sub_parent_right"."['$sub_block_right']".$logic_exp;
+            }
+          }
+        }
+        $code = "<?php\n".$else.'if ('.$var[2][$cnt].$code_mid.$code_suffix;
+        $src_page = str_replace($var[0][$cnt],  $code,  $src_page);
+      }
+    }
+  }
+
+  /* Main Template Parser
+   * @param string $compiled_template_filename Compiled Template Filename
+   * @desc Creates Compiled PHP Template
+   */
+  function compile( $compiled_template_filename = '', $data='', $supp_templates='', $extensions_dir='' ) {
+
+    $this->extension_prefix = preg_quote($this->extension_prefix);
+
+    /* Load Template */
+    $template_filename = $this->template_dir . $this->tpl_file;
+    if ($hd = @fopen($template_filename, 'r')) {
+      if (filesize($template_filename)) {
+        $this->template = fread($hd, filesize($template_filename));
+        $this->left_delimiter = preg_quote($this->left_delimiter);
+        $this->right_delimiter = preg_quote($this->right_delimiter);
+      } else {
+        $this->template = 'QuickSkin Parser Error: File size is zero byte: ' .$template_filename;
+      }
+      fclose($hd);
+    } else {
+      $this->template = 'QuickSkin Parser Error: File not found: ' .$template_filename;
+    }
+
+    if (empty($this->template)) {
+      return;
+    }
+
+    /* Do the variable substitution for paths, urls, subtemplates */
+    $this->template = $this->worx_var_swap($this->template, $data, $supp_templates);
+
+    $header = '';
+
+    /* Code to allow subtemplates */
+    if(preg_match("/<!-- INCLUDE/is", $this->template)) {
+      while ($this->count_subtemplates() > 0) {
+        preg_match_all('/<!-- INCLUDE ([a-zA-Z0-9\-_.]+) -->/', $this->template, $tvar);
+        foreach($tvar[1] as $subfile) {
+          if(file_exists($this->template_dir . '/' . $this->skins_sub_dir . '/' .$subfile)) {
+            $subst = implode('',file($this->template_dir . '/' . $this->skins_sub_dir . '/' .$subfile));
+          } else {
+            $subst = 'QuickSkin Parser Error: Subtemplate not found: \''.$subfile.'\'';
+          }
+          $this->template = str_replace("<!-- INCLUDE $subfile -->", $subst, $this->template);
+        }
+      }
+    }
+    /* END, ELSE Blocks */
+    $page  =  preg_replace("/<!-- ENDIF.+?-->/", "<?php\n}\n?>", $this->template);
+    $page  =  preg_replace("/<!-- END[ a-zA-Z0-9_.]* -->/",  "<?php\n}\n\$_obj=\$_stack[--\$_stack_cnt];}\n?>", $page);
+    $page  =  preg_replace("/<!-- ENDLOOP[ a-zA-Z0-9_.]* -->/",  "<?php\n}\n\$_obj=\$_stack[--\$_stack_cnt];}\n?>", $page);
+    $page  =  str_replace("<!-- ELSE -->", "<?php\n} else {\n?>", $page);
+
+    /* 'BEGIN - END' Blocks */
+    if (preg_match_all('/<!-- LOOP ([a-zA-Z0-9_.]+) -->/', $page, $var)) {
+      foreach ($var[1] as $tag) {
+        list($parent, $block)  =  $this->var_name($tag);
+        $code  =  "<?php\n"
+            . "if (!empty(\$$parent"."['$block'])){\n"
+            . "if (!is_array(\$$parent"."['$block']))\n"
+            . "\$$parent"."['$block']=array(array('$block'=>\$$parent"."['$block']));\n"
+            . "\$_stack[\$_stack_cnt++]=\$_obj;\n"
+            . "\$rowcounter = 0;\n"
+            . "foreach (\$$parent"."['$block'] as \$rowcnt=>\$$block) {\n"
+              . "\$$block"."['ROWCNT']=(\$rowcounter);\n"
+              . "\$$block"."['ALTROW']=\$rowcounter%2;\n"
+              . "\$$block"."['ROWBIT']=\$rowcounter%2;\n"
+              . "\$rowcounter++;"
+              . "\$_obj=&\$$block;\n?>";
+        $page  =  str_replace("<!-- LOOP $tag -->",  $code,  $page);
+      }
+    }
+
+    /* replace logical operator in [ELSE]IF */
+    $this->replace_logic_expression($page);
+
+    /* 'IF nnn=mmm' Blocks */
+    if (preg_match_all('/<!-- (ELSE)?IF ([a-zA-Z0-9_.]+)\s*([!=<>]+)\s*(["]?[^"]*["]?) -->/', $page, $var)) {
+      foreach ($var[2] as $cnt => $tag) {
+        list($parent, $block)  =  $this->var_name($tag);
+        $cmp   =  $var[3][$cnt];
+        $val   =  $var[4][$cnt];
+        $else  =  ($var[1][$cnt] == 'ELSE') ? '} else' : '';
+        if ($cmp == '=') {
+          $cmp  =  '==';
+        }
+
+        if (preg_match('/"([^"]*)"/',$val,$matches)) {
+          $code  =  "<?php\n$else"."if (\$$parent"."['$block'] $cmp \"".$matches[1]."\"){\n?>";
+        } elseif (preg_match('/([^"]*)/',$val,$matches)) {
+          list($parent_right, $block_right)  =  $this->var_name($matches[1]);
+          $code  =  "<?php\n$else"."if (\$$parent"."['$block'] $cmp \$$parent_right"."['$block_right']){\n?>";
+        }
+
+        $page  =  str_replace($var[0][$cnt],  $code,  $page);
+      }
+    }
+
+    /* 'IF nnn' Blocks */
+    if (preg_match_all('/<!-- (ELSE)?IF ([a-zA-Z0-9_.]+) -->/', $page, $var)) {
+      foreach ($var[2] as $cnt => $tag) {
+        $else  =  ($var[1][$cnt] == 'ELSE') ? '} else' : '';
+        list($parent, $block)  =  $this->var_name($tag);
+        $code  =  "<?php\n$else"."if (!empty(\$$parent"."['$block'])){\n?>";
+        $page  =  str_replace($var[0][$cnt],  $code,  $page);
+      }
+    }
+
+    /* 'IF {extension:variable}'=mmm Blocks
+     * e.g.
+     * <!-- IF {count:list} > 0 -->
+     * List populated
+     * <!-- ELSE -->
+     * List is empty
+     * <!-- ENDIF -->
+     * thanks to Khary Sharpe (ksharpe [at] kharysharpe [dot] com) for the initial code
+     */
+    if (preg_match_all('/<!-- (ELSE)?IF {([a-zA-Z0-9_]+):([^}]*)}\s*([!=<>]+)\s*(["]?[^"]*["]?) -->/', $page, $var)) {
+      foreach ($var[2] as $cnt => $tag) {
+        list($parent, $block)  =  $this->var_name($tag);
+        $cmp   =  $var[4][$cnt];
+        $val   =  $var[5][$cnt];
+        $else  =  ($var[1][$cnt] == 'ELSE') ? '} else' : '';
+        if ($cmp == '=') {
+          $cmp  =  '==';
+        }
+
+        $extension = $var[2][$cnt];
+        $extension_var = $var[3][$cnt];
+        if (!isset($this->extension_tagged[$extension])) {
+          $header .= 'include_once  "'.$this->extensions_dir."/".$this->extension_prefix."$extension.php\";\n";
+          $this->extension_tagged[$extension] = true;
+        }
+        if (!strlen($extension_var)) {
+          $code = "<?php\n$else"."if (".$this->extension_prefix."$extension() $cmp $val) {\n?>\n";
+        } elseif (substr($extension_var, 0, 1) == '"') {
+          $code = "<?php\n$else"."if (".$this->extension_prefix."$extension($extension_var) $cmp $val) {\n?>\n";
+        } elseif (strpos($extension_var, ',')) {
+          list($tag, $addparam) = explode(',', $extension_var, 2);
+          list($block, $skalar) = $this->var_name($extension_var);
+          if (preg_match('/^([a-zA-Z_]+)/', $addparam, $match)) {
+            $nexttag = $match[1];
+            list($nextblock, $nextskalar) = $this->var_name($nexttag);
+            $addparam = substr($addparam, strlen($nexttag));
+            $code = "<?php\n$else"."if (".$this->extension_prefix."$extension(\$$block"."['$skalar'],\$$nextblock"."['$nextskalar']"."$addparam) $cmp $val) {\n?>\n";
+          } else {
+            $code = "<?php\n$else"."if (".$this->extension_prefix."$extension(\$$block"."['$skalar'],$addparam) $cmp $val) {\n?>\n";
+          }
+        } else {
+          list($block, $skalar) = $this->var_name($extension_var);
+          $code = "<?php\n$else"."if (".$this->extension_prefix."$extension(\$$block"."['$skalar']) $cmp $val) {\n?>\n";
+        }
+        $page = str_replace($var[0][$cnt], $code, $page);
+      }
+    }
+
+    /* Replace Scalars */
+    if (preg_match_all('/'.$this->left_delimiter.'([a-zA-Z0-9_. >]+)'.$this->right_delimiter.'/', $page, $var)) {
+      foreach ($var[1] as $fulltag) {
+        /* Determine Command (echo / $obj[n]=) */
+        list($cmd, $tag)  =  $this->cmd_name($fulltag);
+        list($block, $skalar)  =  $this->var_name($tag);
+        $code  =  "<?php\n$cmd \$$block"."['$skalar'];\n?>\n";
+        $page  =  str_replace(stripslashes($this->left_delimiter).$fulltag.stripslashes($this->right_delimiter), $code, $page);
+      }
+    }
+
+    /* Replace Translations */
+    if (preg_match_all('/<"([a-zA-Z0-9_.]+)">/', $page, $var)) {
+      foreach ($var[1] as $tag) {
+        list($block, $skalar)  =  $this->var_name($tag);
+        $code  =  "<?php\necho gettext('$skalar');\n?>\n";
+        $page  =  str_replace('<"'.$tag.'">',  $code,  $page);
+      }
+    }
+
+    /* Include Extensions */
+    if (preg_match_all('/'.$this->left_delimiter.'([a-zA-Z0-9_]+):([^}]*)'.$this->right_delimiter.'/', $page, $var)) {
+      foreach ($var[2] as $cnt => $tag) {
+        /* Determine Command (echo / $obj[n]=) */
+        list($cmd, $tag)  =  $this->cmd_name($tag);
+
+        $extension  =  $var[1][$cnt];
+        if (!isset($this->extension_tagged[$extension])) {
+          $header .= 'include_once "'.$this->extensions_dir."/".$this->extension_prefix."$extension.php\";\n";
+          $this->extension_tagged[$extension]  =  true;
+        }
+        if (!strlen($tag)) {
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension();\n?>\n";
+        } elseif (substr($tag, 0, 1) == '"') {
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension($tag);\n?>\n";
+        } elseif (strpos($tag, ',')) {
+          list($tag, $addparam)  =  explode(',', $tag, 2);
+          list($block, $skalar)  =  $this->var_name($tag);
+          if (preg_match('/^([a-zA-Z_]+)/', $addparam, $match)) {
+            $nexttag   =  $match[1];
+            list($nextblock, $nextskalar)  =  $this->var_name($nexttag);
+            $addparam  =  substr($addparam, strlen($nexttag));
+            $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar'],\$$nextblock"."['$nextskalar']"."$addparam);\n?>\n";
+          } else {
+            $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar'],$addparam);\n?>\n";
+          }
+        } else {
+          list($block, $skalar) = $this->var_name($tag);
+          $code  =  "<?php\n$cmd ".$this->extension_prefix."$extension(\$$block"."['$skalar']);\n?>\n";
+        }
+        $page  =  str_replace($var[0][$cnt],  $code,  $page);
+      }
+    }
+
+    /* Add Include Header */
+    if (isset($header) && !empty($header)) {
+      $page  =  "<?php\n$header\n?>$page";
+    }
+
+	/* use_common_placeholders */
+	if(function_exists('use_common_placeholders')){
+		$page = use_common_placeholders($page);
+	}
+	
+    /* do substitutions on included supplementary templates */
+    $page = $this->worx_tpl_swap($page, $data, $supp_templates);
+
+    /* Store Code to Temp Dir */
+    if (strlen($compiled_template_filename)) {
+      if ($hd  =  fopen($compiled_template_filename,  'w')) {
+        fwrite($hd,  $page);
+        fclose($hd);
+        return true;
+      } else {
+        $this->error  =  'Could not write compiled file.';
+        return false;
+      }
+    } else {
+      return $page;
+    }
+  }
+
+  /* Splits Template-Style Variable Names into an Array-Name/Key-Name Components
+   * {example}               :  array( "_obj",                   "example" )  ->  $_obj['example']
+   * {example.value}         :  array( "_obj['example']",        "value" )    ->  $_obj['example']['value']
+   * {example.0.value}       :  array( "_obj['example'][0]",     "value" )    ->  $_obj['example'][0]['value']
+   * {top.example}           :  array( "_stack[0]",              "example" )  ->  $_stack[0]['example']
+   * {parent.example}        :  array( "_stack[$_stack_cnt-1]",  "example" )  ->  $_stack[$_stack_cnt-1]['example']
+   * {parent.parent.example} :  array( "_stack[$_stack_cnt-2]",  "example" )  ->  $_stack[$_stack_cnt-2]['example']
+   * @param string $tag Variale Name used in Template
+   * @return array  Array Name, Key Name
+   * @access private
+   * @desc Splits Template-Style Variable Names into an Array-Name/Key-Name Components
+   */
+  function var_name($tag) {
+    $parent_level  =  0;
+    while (substr($tag, 0, 7) == 'parent.') {
+      $tag  =  substr($tag, 7);
+      $parent_level++;
+    }
+    if (substr($tag, 0, 4) == 'top.') {
+      $obj  =  '_stack[0]';
+      $tag  =  substr($tag,4);
+    } elseif ($parent_level) {
+      $obj  =  '_stack[$_stack_cnt-'.$parent_level.']';
+    } else {
+      $obj  =  '_obj';
+    }
+    while (is_int(strpos($tag, '.'))) {
+      list($parent, $tag)  =  explode('.', $tag, 2);
+      if (is_numeric($parent)) {
+        $obj  .=  "[" . $parent . "]";
+      } else {
+        $obj  .=  "['" . $parent . "']";
+      }
+    }
+    $ret = array($obj, $tag);
+    return $ret;
+  }
+
+  /* Determine Template Command from Variable Name
+   * {variable}             :  array( "echo",              "variable" )  ->  echo $_obj['variable']
+   * {variable > new_name}  :  array( "_obj['new_name']=", "variable" )  ->  $_obj['new_name']= $_obj['variable']
+   * @param string $tag Variale Name used in Template
+   * @return array  Array Command, Variable
+   * @access private
+   * @desc Determine Template Command from Variable Name
+   */
+  function cmd_name($tag) {
+    if (preg_match('/^(.+) > ([a-zA-Z0-9_.]+)$/', $tag, $tagvar)) {
+      $tag  =  $tagvar[1];
+      list($newblock, $newskalar)  =  $this->var_name($tagvar[2]);
+      $cmd  =  "\$$newblock"."['$newskalar']=";
+    } else {
+      $cmd  =  'echo';
+    }
+    $ret = array($cmd, $tag);
+    return $ret;
+  }
+
+  /* @return int Number of subtemplate included
+   * @access private
+   * @desc Count number of subtemplates included in current template
+   */
+  function count_subtemplates() {
+    $ret = preg_match_all('/<!-- INCLUDE ([a-zA-Z0-9_.]+) -->/', $this->template, $tvar);
+    unset($tvar);
+    return $ret;
+  }
+
+  function worx_var_swap($tpldata, $data, $supp_templates) { /* do the substitution of the variables here */
+
+    /* replace all the template elements (sub templates) */
+    if ( is_array($supp_templates) && !empty($supp_templates) ) {
+      foreach ($supp_templates as $key => $val) {
+        $tpldata = str_replace("\{$key}", $val, $tpldata);
+      }
+    }
+    /* do the substitution of the directory names here */
+
+    return $tpldata;
+
+  }
+
+  function worx_tpl_swap($tpldata, $data, $supp_templates) { // do the substitution of the sub templates here 
+
+	// do the substitution of the directory names here
+	/*/
+    // do image link substitution 
+    if ( $data['tpl_img'] != '' && $data['url_img'] != '' ) {
+      $tpldata = str_replace($data['tpl_img'],$data['url_img'],$tpldata);
+      unset($data['tpl_img']);
+      unset($data['url_img']);
+    } elseif (defined(_URL_USRIMG)) {
+      $tpldata = str_replace('tplimgs/',_URL_USRIMG,$tpldata);
+    }
+    // do javascript link substitution
+    if ( $data['tpl_js'] != '' && $data['url_js'] != '' ) {
+      $tpldata = str_replace($data['tpl_js'],$data['url_js'],$tpldata);
+      unset($data['img_tpl']);
+      unset($data['url_js']);
+    } elseif (defined(_URL_USRJS)) {
+      $tpldata = str_replace('tpljs/',_URL_USRJS,$tpldata);
+    }
+    // do css link substitution
+    if ( $data['tpl_css'] != '' && $data['url_css'] != '' ) {
+      $tpldata = str_replace($data['tpl_css'],$data['url_css'],$tpldata);
+      unset($data['tpl_css']);
+      unset($data['url_css']);
+    } elseif (defined(_URL_USRCSS)) {
+      $tpldata = str_replace('url_css/',_URL_USRCSS,$tpldata);
+    }
+	/*/
+    return $tpldata;
+	
+  }
+
+}
+
+?>

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/class.quickskin.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/index.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        Security
+ * @package         FolderProtectFile
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('HTTP/1.1 301 Moved Permanently');
+header("Location: ../../index.php");
+

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/_lib/quickSkin_28/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/control_structures.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/control_structures.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/control_structures.txt	(revision 1610)
@@ -0,0 +1,122 @@
+QuickSkin Control Structures (Used within templates)
+
+Control Structure - IF
+
+  The if ... endif construct facilitates the conditional presentation of template fragments.
+
+  The syntax can be one of the following:
+
+  <!-- IF var --> var is not empty! <!-- ENDIF var -->
+  <!-- IF name=='John Doe' --> Your name is John Doe! <!-- ENDIF name -->
+  <!-- IF name!='John Doe' --> Your name is not John Doe! <!-- ENDIF name -->
+
+  A variable can be used as right part of the IF clause using the folloging syntax:
+
+  <!-- IF name=variablename --> Your name match with {variablename} <!-- ENDIF name -->
+  <!-- IF name!=top.variablename --> Your name doesn't match with {top.variablename} <!-- ENDIF name -->
+
+  * (var after ENDIF is optional)
+  * the 'var' comes from your PHP code
+  * IF/ELSE/ELSEIF control structures can be nested in other IF or LOOP control structures
+
+Control Structure - ELSE
+
+  The else construct extends an if construct to display a template fragment in case the
+  expression in the if statement evaluates to FALSE.
+
+  <!-- IF usergroup="ADMIN" -->
+  <a href="admin.php"> ADMIN Login </a><br />
+  <!-- ELSE -->
+  You are in guest mode!<br />
+  <!-- ENDIF usergroup -->
+
+  * (var after ENDIF is optional)
+  * the 'var' comes from your PHP code
+  * IF/ELSE/ELSEIF control structures can be nested in other IF or LOOP control structures
+
+Control Structure - ELSEIF
+
+  The elseif construct is a combination of an else and if construct.
+
+  <!-- IF usergroup="ADMIN" -->
+  <a href="admin.php"> Admin Staff Login </a><br />
+  <!-- ELSEIF usergroup="SUPPORT" -->
+  <a href="support.php"> Support Staff Login </a><br />
+  <!-- ELSEIF usergroup -->
+  <a href="other.php"> Standard Login </a><br />
+  <!-- ELSE -->
+  You don't even have a usergroup!
+  <!-- ENDIF -->
+
+  * (var after ENDIF is optional)
+  * the 'var' comes from your PHP code
+  * IF/ELSE/ELSEIF control structures can be nested in other IF or LOOP control structures
+
+Control Structure - LOOP ... ENDLOOP
+
+  The loop ... endloop construct facilitates a way to iterate through numeric arrays.
+  Each element of the numeric array is expected to be an associative array and is used
+  to parse the template fragment that is embedded between the
+  <!-- LOOP --> and <!-- ENDLOOP -->
+  tags like it was a small template itself.
+  
+  Each associative array is expanded by the following two additional elements:
+  
+  ROWCNT : The actual position of this element within the parent array. (0,1,2,3,...n)
+  ROWBIT : The least significant bit of ROWCNT. (0,1,0,1,0,1,...)
+  
+  loop ... endloop blocks can easily be nested and parsed recursivly.
+  
+  Example, assuming this code precedes in your PHP:
+  
+  $users = array(
+             array( 'NAME' => 'John Doe',   'GROUP' => 'ADMIN' ),
+             array( 'NAME' => 'Jack Doe',   'GROUP' => 'SUPPORT' ),
+             array( 'NAME' => 'James Doe',  'GROUP' => 'GUEST' ),
+             array( 'NAME' => 'Jane Doe',   'GROUP' => 'GUEST' ),
+           );
+  $page->assign( 'users',  $users );
+  
+  The template, then, would contain:
+
+  <style type="text/css">
+    .col0 { background-color: #D0D0D0; }
+    .col1 { background-color: #F0F0F0; }
+  </style>
+  <table border="1" cellpadding="2" cellspacing="0">
+    <tr>
+      <th>No.</th>
+      <th>Username</th>
+      <th>Usergroup</th>
+    </tr>
+    <!-- LOOP users -->
+    <tr class="col{ROWBIT}">
+      <td>{ROWCNT}</td>
+      <td>{NAME}</td>
+      <td>{GROUP}</td>
+    </tr>
+    <!-- ENDLOOP users -->
+  </table>
+
+  * (var after ENDLOOP is optional)
+  * the 'var' comes from your PHP code
+  * IF/ELSE/ELSEIF control structures can be nested in other IF or LOOP control structures
+  * LOOP/ENDLOOP control structures can be nested in other IF or LOOP control structures
+
+Control Structure - INCLUDE
+
+  While not a true Control Structure, the INCLUDE directive loads external data, in place, in your template.
+
+  Templates can be included in other templates by using the INCLUDE statement.
+  All functionality available to the main template is also available to the sub template
+  (variable substitution, etc.). This permit the use of subtemplating.
+
+  The syntax is:
+
+  <!-- INCLUDE templatename.html --> 
+  
+  * file to include is in the template directory (default '_skins/')
+  * similar to the method $page->addtpl() ... difference is that 'addtpl' stores the data 
+    in a variable that then gets assigned ('$page->assign()') within the main template
+
+  
\ No newline at end of file
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/methods.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/methods.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/methods.txt	(revision 1610)
@@ -0,0 +1,49 @@
+QuickSkin Methods:
+
+QuickSkin::set( $property, $value )
+  Assigns content to a template property. Can be strings, no arrays.
+  (Please read the properties.txt document for examples).
+
+QuickSkin::addtpl()
+  Loads a supplementary template to the main template. Primarily used for
+  advertising banners, right columns, login boxes or member menus, etc. All
+  functionality available to the main template is also available to the sub
+  template (variable substitution, etc.). 
+
+QuickSkin::assign()
+  Assigns content to a template placeholder or a list. Can be used on associative
+  arrays and scalars.
+
+QuickSkin::append()
+  Appends content to a template placeholder. Can be used on associative arrays and
+  scalars.
+
+QuickSkin::use_cache()
+  Activates the built in output cache. Checks if the executed script
+  (ref. $_SERVER[REQUEST URI]) has produced any output whithin a certain period of
+  time. If so, use_cache sends the cached page to the standard output (Browser) and
+  terminates any further script execution.  
+  If no valid output is available, use_cache activates the PHP output buffer and returns
+  to the script form which it was called. During the following script execution, use_cache
+  captures all output that is send to the browser and stores it in a temporary cache file.
+  The filename of this cach file is a unique key that is created by modulating the current
+  script filename, its GET-parameters (REQUEST_URI) and the optional key parameter.  
+  If any important logging is done by this script, this has to be done before use_cache
+  is called. 
+
+QuickSkin::result()
+  Parses template and returns result page (usually to a variable).
+
+QuickSkin::output()
+  Parses template and sends to standard output (Browser). 
+
+QuickSkin::debug()
+  Activates the built in template debugger. Debug can be called instead of or in addition
+  to output. It prints a detailed list of all assigned variables and their content, the
+  compiled template and a the structured source template.
+  Debug can be very helpful for locating and removing errors in your template. 
+
+$contents = QuickSkin::getContents($param)
+  $param can be either a variable containing the contents, or a filename with full path.
+  Does some basic substitutions in advance of the class parsing the template and contents.
+  
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/install.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/install.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/install.txt	(revision 1610)
@@ -0,0 +1,109 @@
+/*~ install.txt
+.---------------------------------------------------------------------------.
+|  Software: QuickSkin                                                      |
+|   Version: 5.0                                                            |
+|   Contact: andy.prevost@worxteam.com                                      |
+|      Info: http://sourceforge.net/projects/quickskin                      |
+|   Support: http://sourceforge.net/projects/quickskin                      |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost andy.prevost@worxteam.com (admin)                 |
+|    Author: Manuel 'EndelWar' Dalla Lana endelwar@aregar.it (former admin) |
+|    Author: Philipp v. Criegern philipp@criegern.com (original founder)    |
+| Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.               |
+|    * NOTE: QuickSkin is the SmartTemplate project renamed. SmartTemplate  |
+|            information and downloads can still be accessed at the         |
+|            smarttemplate.sourceforge.net site                             |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services:                                       |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+Last modified: January 01 2009 ~*/
+
+To install and use QuickSkin:
+
+1. Uncompress the ZIP file to your local computer
+
+-- FULL INSTALLATION
+
+   Copy the files to your webserver. We recommend that you put those in a 
+   directory structure that resembles:
+   
+   /_lib/class.quickskin.php
+   /_lib/class.quickskindebugger.php
+   /_lib/qx/{all files that start with qx_}
+   
+-- MINIMAL INSTALLATION
+   
+   If you want to install the absolutely bare-bones installation, copy only
+   the base class file to your webserver. We recommend that you put that file in
+   the following directory structure:
+   
+   /_lib/class.quickskin.php
+   
+2. Create a directory for your compiled/cached files. We recommend:
+
+   /_skins_tmp/
+   
+3. If you are using QuickSkin as part of a framework or plan to reuse your
+   code often, we recommend that you create a template structure such as:
+   
+   /_skins/
+   /_skins/default/         (to store your template HTML files)
+   /_skins/default/tplimgs/ (to store your template images and CSS files)
+   /_skins/default/tpljs/   (to store your template Javascript files)
+   /_skins_tmp/             (to store all compiled and cached files)
+   
+   With this kind of structure, you are able to create/edit your HTML 
+   files with any HTML editor (MS FrontPage, MS Expression Web, Macromedia
+   Dreamweaver, etc.). All of your references to locations of Javascript
+   files, images, and CSS files will reference the directory under the
+   HTML template file (ie. <img src="tplimgs/yourimage.jpg>). This 
+   is simple and convenient for both you and your users. Continue reading
+   for examples on how to take advantage of this directory structure.
+   
+4. All you need to use QuickSkin, is to instantiate it inside of your
+   script. If you used the directory structure we recommended, that looks like:
+   
+   include_once('/_lib/class.quickskin.php');
+   
+   $page = new QuickSkin( "default/yourtemplate.htm" );
+   
+   $page->assign( 'title',  'TemplateDemo' );
+   $page->assign( 'welcome', 'My Welcome' );
+   
+   $page->assign('welcome', 'My Welcome');
+   
+   $page->set('template_dir', '_skins/');
+   $page->set('temp_dir', '_skins_tmp/');
+   $page->set('cache_dir', '_skins_tmp/');
+   
+   // do substitute of template image directory
+   $page->assign('tpl_img', 'tplimgs/');
+   $page->assign('url_img', 'http://www.yourdomain.com/_skins/default/tplimgs/');
+   
+   // do substitute of template javascript directory
+   $page->assign('tpl_js', 'tpljs/');
+   $page->assign('url_js', 'http://www.yourdomain.com/_skins/default/tpljs/');
+   
+   $page->addtpl('sponsors', '_skins/default/sponsors.htm');
+   
+   //$page->debug();
+
+   $page->output();
+   
+Experiment. It is pretty simple to work the system and the scripts are
+well documented.
+
+If you are a previous user of SmartTemplate, the new version is completely code
+compatible with version 1.2.1 - with ONE EXCEPTION. The default for 'reuse_code'
+is now FALSE. There's quite a few enhancements that you will want to explore.
+
+Andy Prevost.
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/changelog.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/changelog.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/changelog.txt	(revision 1610)
@@ -0,0 +1,67 @@
+Version 5.0.1 - November 01 2010
+- fixed last ereg-deprecatements
+- rename block command ( BEGIN - END  into LOOP - ENDLOOP)
+
+Version 5.0 - January 01 2009
+- First version designed specifically for PHP5
+- Changed default for 'reuse_code' to false
+- Added LPGL script dp.SyntaxHighlighter 
+- Added Extension 'codesnippetstart'
+- Added Extension 'codesnippetend'
+- changed behavior of all extensions - they no longer set the $_CONFIG array variales
+- added new default template
+- added code for Syntax Highlighter
+
+using Syntax Highlighter:
+In your HTML code, add:
+{codesnippetstart:}
+... your php code
+{codesnippetend:}
+Everything else is done for you.
+Please note that if you want to include the PHP start tag (ie. <?php ) and the PHP end tag (ie. ?> )
+in the code snippeg, you must use them like this:
+&lt;?php
+and
+?&gt;
+... the reason for this is that using the PHP start tag and end tag would process the code as a
+php script prior to the code snippet display and would mess up the page.
+
+---------------------------------------------------------------------------------------
+Version 2.2 - July 20 2008 (for PHP4)
+- renamed extensions directory to 'qx'
+- renamed all extension prefixes to 'qx_'
+- fixed auto-loading of extensions
+- added sample application
+- added ability to read file and strip all unnecessary header and footer HTML code
+- added ability to process QuickSkin Extensions in dynamic data
+
+Version 2.1.0rc1 - October 31 2007
+- Fixed INCLUDE issue where template files in subdirectories were not being called properly
+- Tested and works with PHP4 and PHP5 (5.2.4) ... will not work with E_STRICT
+
+Version 2.0.0rc1 - October 2007
+- Changed project name from SmartTemplate to QuickCache
+  - modified all file names and function names to conform to new product name
+- Added class property for template directory and modified logic in code to support this new property
+- Added class method "set" to set class properties (can be explicitly set vs, use of assumptive $_CONFIG variable)
+- Added class method "addtpl" to add a supplmentary template (banner ad, etc) that loads at same time as main template
+- Added properties to both the parser and debugger to facilitate passing of variables between classes
+- Changed all " (double quotes) to ' (single quotes) where possible to enhance performance
+- Modified compiled and cached files names to a maximum of 35 characters, plus extension
+- Added support for QUERY STRING - particularly important to large scale projects where the query string is widely used
+- Merged class.quickskin.php and class.quickskinparser.php into one single file (both are dependent on each other)
+- QuickSkin now compatible with CodeIgniter with a simple file name change
+  - change filename from class.quickskin.php to Quickskin.php and add to your /system/application/libraries directory
+*Note: next version will focus on compatibility with PHP4 and PHP5
+
+Version 1.2.1 - codename Betelgeuse
+- A variable can be used as right part of an IF clause
+- Added space recognition in IF clauses
+
+Version 1.2.0 - codename Orion
+- added subtemplate system
+- better error reporting
+- some bugfixing
+
+
+Version 1.0.2 - original developed by Philipp v. Criegern
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/properties.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/properties.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/properties.txt	(revision 1610)
@@ -0,0 +1,34 @@
+QuickSkin Properties:
+
+Please note: if you do not want to modify the default, the respective property code is not required.
+
+$page->set('reuse_code', false);
+  defines whether or not to use the compiled PHP code or not, default is false
+  * note: if you have dynamic data (ie. from a database), set to false
+
+$page->set('template_dir', '_skins/');
+  defines the directory where the skins are stored, default is '_skins/'
+  (can also be set using the $_CONFIG['template_dir'] variable)
+
+$page->set('temp_dir', '_skins_tmp/');
+  defines the directory where the compiled code is stored, default is '_skins_tmp/'
+  (can also be set using the $_CONFIG['quickskin_compiled'] variable)
+
+$page->set('cache_dir', '_skins_tmp/');
+  defines the directory where the temporary compiled code is stored, default is '_skins_tmp/'
+  (can also be set using the $_CONFIG['quickskin_cache'] variable)
+
+$page->set('cache_lifetime', 600);
+  defines the Output Cache Lifetime in seconds, default is 600 seconds (10 minutes)
+  (can also be set using the $_CONFIG['cache_lifetime'] variable)
+
+$page->set('extensions_dir', '_lib/qx');
+  defines the directory where the QuickSkin Extensions are stored, default is '_lib/qx'
+  (QuickSkin Extensions are code that can be used in your templates - but not in dynamic data)
+  
+$page->set('extension_prefix', 'qx_');
+  defines the prefix used on all QuickSkin Extensions, default is 'qx_' (not usually changed)
+
+$page->set('extensions_dir', '_skins/');
+  defines the directory where the skins are stored, default is '_skins/'
+
Index: tags/2.8.3/wb/include/quickSkin_alpha/DOCS/readme.txt
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/DOCS/readme.txt	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/DOCS/readme.txt	(revision 1610)
@@ -0,0 +1,86 @@
+/*~ readme.txt
+.---------------------------------------------------------------------------.
+|  Software: QuickSkin                                                      |
+|   Version: 5.0                                                            |
+|   Contact: andy.prevost@worxteam.com                                      |
+|      Info: http://sourceforge.net/projects/quickskin                      |
+|   Support: http://sourceforge.net/projects/quickskin                      |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost andy.prevost@worxteam.com (admin)                 |
+|    Author: Manuel 'EndelWar' Dalla Lana endelwar@aregar.it (former admin) |
+|    Author: Philipp v. Criegern philipp@criegern.com (original founder)    |
+| Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.               |
+|    * NOTE: QuickSkin is the SmartTemplate project renamed. SmartTemplate  |
+|            information and downloads can still be accessed at the         |
+|            smarttemplate.sourceforge.net site                             |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services:                                       |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+Last modified: January 01 2009 ~*/
+
+For documentation, please see the 'DOCS' folder.
+
+QuickSkin v5.0
+http://sourceforge.net/projects/quickskin 
+
+Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.
+
+QuickSkin is a Template Engine that was designed to support web based 
+applications of any size. It is particularly suited to large scale applications
+like Content Management Systems. The project was originally started by 
+Philipp v. Criegern and named "SmartTemplate". The project was then taken over
+by Manuel 'EndelWar' Dalla Lana and HonestQiao. The name of the project back
+then led to confusion with Smarty Templating. Despite its advantages over other
+templating systems (speed, small footprint, ease of use, power), SmartTemplate
+has not been updated and had many outstanding bugs. Codeworx Technologies has
+been using SmartTemplate on a variety of projects for several years. Over that
+time we have become very familiar with the code. We have now taken over the
+project. Our first task was to rename the project to make it less confusing,
+fix the bugs, and extend its capabilities -- while maintaining its core 
+simplicity and ease of use.
+
+What's so special about it?
+
+Common template engines work like the following: Your PHP script specifies an 
+HTML template and assigns some dynamic content to display. The template parser
+replaces all placeholders within the template with the assigned content and
+displays it to the user. This means a lot of string processing and regular
+expression work each time you want to display some content.
+
+QuickSkin works like a 'template compiler' that converts templates into executable
+PHP code and stores it for later reuse. The first time a new template is processed,
+all placeholders in the template are replaced by small PHP code elements that
+print the assigned content. The HTML template fragment <H3>{TITLE}</H3>, for
+example, is converted into something like <H3><?php echo $TITLE; ?></H3>. If you
+have assigned your content to the right variables, there is no need for any
+template parsing anymore. The only thing that has to be done is to include and
+execute the compiled template. This usually increases the execution time of the
+template engine dramatically.
+
+QuickSkin supports:
+
+- Simple Scalar Substitution (Strings, etc.)
+- Block Iterations (nested Arrays / LOOP..ENDLOOP)
+- Basic Control Structures (IF..ELSEIF..ELSE)
+- Custom Extension (Output filters, uppercase, sprintf, etc.)
+- Template Compilation (HTML templates are converted to executable PHP Code)
+- Output Caching (Accelerates your applications by reusing page output) 
+- Tested and works with PHP4 and PHP5 (5.2.4)
+
+If you successfully deploy QuickSkin with your applications, please add text
+link or link the QuickSkin button back to
+http://sourceforge.net/projects/quickskin/.
+
+Please let us know about your usage, so we can keep track of the sites using
+QuickSkin.
+     
+Andy Prevost.
Index: tags/2.8.3/wb/include/quickSkin_alpha/README
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/README	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/README	(revision 1610)
@@ -0,0 +1,11 @@
+===============================================================================
+Please note: This version of QuickSkin is still in ALPHA-State
+
+It's for testing and learning purposes only !!!!!
+
+The original class is under work and will be published soon.
+
+!! Do not use this library for live systems please !!
+===============================================================================
+
+
Index: tags/2.8.3/wb/include/quickSkin_alpha/index.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/index.php	(revision 1610)
@@ -0,0 +1,20 @@
+<?php
+/**
+ *
+ * @category        Security
+ * @package         FolderProtectFile
+ * @author          WebsiteBaker Project
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link            http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource      $HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header('HTTP/1.1 301 Moved Permanently');
+header("Location: ../../index.php");
+

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/quickSkin_alpha/class.quickskindebugger.php
===================================================================
--- tags/2.8.3/wb/include/quickSkin_alpha/class.quickskindebugger.php	(nonexistent)
+++ tags/2.8.3/wb/include/quickSkin_alpha/class.quickskindebugger.php	(revision 1610)
@@ -0,0 +1,384 @@
+<?php
+/*~ class.quickskindebugger.php
+.---------------------------------------------------------------------------.
+|  Software: QuickSkinDebugger Class * Used by QuickSkin Class              |
+|   Version: 5.0                                                            |
+|   Contact: andy.prevost@worxteam.com,andy@codeworx.ca                     |
+|      Info: http://quickskin.sourceforge.net                               |
+|   Support: http://sourceforge.net/projects/quickskin/                     |
+| ------------------------------------------------------------------------- |
+|    Author: Andy Prevost andy.prevost@worxteam.com (admin)                 |
+|    Author: Manuel 'EndelWar' Dalla Lana endelwar@aregar.it (former admin) |
+|    Author: Philipp v. Criegern philipp@criegern.com (original founder)    |
+| Copyright (c) 2002-2009, Andy Prevost. All Rights Reserved.               |
+|    * NOTE: QuickSkin is the SmartTemplate project renamed. SmartTemplate  |
+|            information and downloads can still be accessed at the         |
+|            smarttemplate.sourceforge.net site                             |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+| ------------------------------------------------------------------------- |
+| We offer a number of paid services:                                       |
+| - Web Hosting on highly optimized fast and secure servers                 |
+| - Technology Consulting                                                   |
+| - Oursourcing (highly qualified programmers and graphic designers)        |
+'---------------------------------------------------------------------------'
+Last modified: January 01 2009 ~*/
+
+/* designed to work with PHP5 - will NOT work with PHP4 */
+
+class QuickSkinDebugger {
+
+  /* The template Filename
+   * @access private
+   */
+  private $filename;
+
+  /* The template itself
+   * @access private
+   */
+  private $template;
+
+  /* Default Left delimiter
+   * Can be overwritten by global configuration array $_CONFIG['left_delimiter']
+   * @access public
+   */
+  private $left_delimiter =  '{';
+
+  /* Default Right delimiter
+   * Can be overwritten by global configuration array $_CONFIG['right_delimiter']
+   * @access public
+   */
+  private $right_delimiter =  '}';
+
+  /* QuickSkinDebugger Constructor
+   * @param string $template_filename HTML Template Filename
+   */
+  function __construct( $template_filename, $right_delimiter = '}', $left_delimiter = '{' ) {
+    $this->filename  =  $template_filename;
+
+    /* Load Template */
+    if ($hd  =  @fopen($template_filename,  'r')) {
+      $this->template  =  fread($hd,  filesize($template_filename));
+      fclose($hd);
+    } else {
+      $this->template  =  'QuickSkin Debugger Error: File not found: ' . $template_filename;
+    }
+    $this->tab[0]  =  '';
+    for ($i=1;  $i < 10;  $i++) {
+      $this->tab[$i]  =  str_repeat('    ', $i);
+    }
+    $this->right_delimiter = $right_delimiter;
+    $this->left_delimiter = $left_delimiter;
+  }
+
+  /* Main Template Parser
+   * @param string $compiled_template_filename Compiled Template Filename
+   * @desc Creates Compiled PHP Template
+   */
+  function start ( $vars ) {
+    $page  =  $this->template;
+
+    $page  =  preg_replace("/(<!-- BEGIN [ a-zA-Z0-9_.]* -->)/",  "\n$1\n",  $page);
+    $page  =  preg_replace("/(<!-- IF .+? -->)/",  "\n$1\n",  $page);
+    $page  =  preg_replace("/(<!-- END.*? -->)/",  "\n$1\n",  $page);
+    $page  =  preg_replace("/(<!-- ELSEIF .+? -->)/",  "\n$1\n",  $page);
+    $page  =  preg_replace("/(<!-- ELSE [ a-zA-Z0-9_.]*-->)/",  "\n$1\n",  $page);
+
+    $page  =  $this->highlight_html($page);
+
+    $rows      =  explode("\n",  $page);
+    $page_arr  =  array();
+    $level     =  0;
+    $blocklvl  =  0;
+    $rowcnt    =  0;
+    $spancnt   =  0;
+    $offset    =  22;
+    $lvl_block =  array();
+    $lvl_row   =  array();
+    $lvl_typ   =  array();
+    foreach ($rows as $row) {
+      if ($row  =  trim($row)) {
+        $closespan  =  false;
+        if (substr($row, $offset, 12) == '&lt;!-- END ') {
+          if ($level < 1) {
+            $level++;
+            $error[$rowcnt]  =  'END Without BEGIN';
+          } elseif ($lvl_typ[$level] != 'BEGIN') {
+            $error[$lvl_row[$level]]  =  'IF without ENDIF';
+            $error[$rowcnt]  =  'END Without BEGIN';
+          }
+          $blocklvl--;
+          $level--;
+          $closespan  =  true;
+        }
+        if (substr($row, $offset, 14) == '&lt;!-- ENDIF ') {
+          if ($level < 1) {
+            $level++;
+            $error[$rowcnt]  =  'ENDIF Without IF';
+          } elseif ($lvl_typ[$level] != 'IF') {
+            $error[$lvl_row[$level]]  =  'BEGIN without END';
+            $error[$rowcnt]  =  'ENDIF Without IF';
+          }
+          $closespan  =  true;
+          $level--;
+        }
+        if ($closespan) {
+          $page_arr[$rowcnt-1]  .=  '</span>';
+        }
+        $this_row  =  $this->tab[$level] . $row;
+        if (substr($row, $offset, 12) == '&lt;!-- ELSE') {
+          if ($level < 1) {
+            $error[$rowcnt]  =  'ELSE Without IF';
+          } elseif ($lvl_typ[$level] != 'IF') {
+            $error[$rowcnt]  =  'ELSE Without IF';
+          } else {
+            $this_row  =  $this->tab[$level-1] . $row;
+          }
+        }
+        if (substr($row, $offset, 14) == '&lt;!-- BEGIN ') {
+          if ($blocklvl == 0) {
+            if ($lp = strpos($row, '--&gt;')) {
+              if ($blockname  =  trim(substr($row, $offset + 14, $lp -$offset -14))) {
+                if ($nr = count($vars[$blockname])) {
+                  $this_row  .=  $this->toggleview($nr . ' Entries');
+                } else {
+                  $this_row  .=  $this->toggleview('Emtpy');
+                }
+              }
+            }
+          } else {
+            $this_row  .=  $this->toggleview('[');
+          }
+          $blocklvl++;
+          $level++;
+          $lvl_row[$level]  =  $rowcnt;
+          $lvl_typ[$level]  =  'BEGIN';
+        } elseif (substr($row, $offset, 11) == '&lt;!-- IF ') {
+          $level++;
+          $lvl_row[$level]  =  $rowcnt;
+          $lvl_typ[$level]  =  'IF';
+          $this_row  .=  $this->toggleview();
+        }
+        $page_arr[]  =  $this_row;
+        $lvl_block[$rowcnt]  =  $blocklvl;
+        $rowcnt++;
+      }
+    }
+    if ($level > 0) {
+      $error[$lvl_row[$level]]  =  'Block not closed';
+    }
+
+    $page  =  join("\n", $page_arr);
+    $rows  =  explode("\n",  $page);
+    $cnt   =  count($rows);
+
+    for ($i = 0;  $i < $cnt;  $i++) {
+      /* Add Errortext */
+      if (isset($error)) {
+        if ($err = $error[$i]) {
+          $rows[$i]  =  '<b>' . $rows[$i] . '        ERROR: ' . $err . '!</b>';
+        }
+      }
+
+      /* Replace Scalars */
+      $right_delimiter = preg_quote($this->right_delimiter);
+      $left_delimiter = preg_quote($this->left_delimiter);
+      if (preg_match_all("/$left_delimiter([a-zA-Z0-9_. &;]+)$right_delimiter/", $rows[$i], $var)) {
+        foreach ($var[1] as $tag) {
+          $fulltag  =  $tag;
+          if ($delim = strpos($tag, ' &gt; ')) {
+            $tag  =  substr($tag, 0, $delim);
+          }
+          if (substr($tag, 0, 4) == 'top.') {
+            $title  =  $this->tip($vars[substr($tag, 4)]);
+          } elseif ($lvl_block[$i] == 0) {
+            $title  =  $this->tip($vars[$tag]);
+          } else {
+            $title  =  '[BLOCK?]';
+          }
+          $code  =  '<b title="' . $title . '">' . $left_delimiter . $fulltag . $right_delimiter . '</b>';
+          $rows[$i]  =  str_replace('{'.$fulltag.'}',  $code,  $rows[$i]);
+        }
+      }
+
+      /* Replace Extensions */
+      if (preg_match_all("/$left_delimiter([a-zA-Z0-9_]+):([^}]*)$right_delimiter/", $rows[$i], $var)) {
+        foreach ($var[2] as $tmpcnt => $tag) {
+          $fulltag  =  $tag;
+          if ($delim = strpos($tag, ' &gt; ')) {
+            $tag  =  substr($tag, 0, $delim);
+          }
+          if (strpos($tag, ',')) {
+            list($tag, $addparam)  =  explode(',', $tag, 2);
+          }
+          $extension  =  $var[1][$tmpcnt];
+
+          if (substr($tag, 0, 4) == 'top.') {
+            $title  =  $this->tip($vars[substr($tag, 4)]);
+          } elseif ($lvl_block[$i] == 0) {
+            $title  =  $this->tip($vars[$tag]);
+          } else {
+            $title  =  '[BLOCK?]';
+          }
+          $code  =  '<b title="' . $title . '">' . $this->left_delimiter . $extension . ':' . $fulltag . $this->right_delimiter . '</b>';
+          $rows[$i]  =  str_replace($this->left_delimiter . $extension . ':' . $fulltag . $this->right_delimiter,  $code,  $rows[$i]);
+        }
+      }
+
+      /* 'IF nnn' Blocks */
+      if (preg_match_all('/&lt;!-- IF ([a-zA-Z0-9_.]+) --&gt;/', $rows[$i], $var)) {
+        foreach ($var[1] as $tag) {
+          if (substr($tag, 0, 4) == 'top.') {
+            $title  =  $this->tip($vars[substr($tag, 4)]);
+          } elseif ($lvl_block[$i] == 0) {
+            $title  =  $this->tip($vars[$tag]);
+          } else {
+            $title  =  '[BLOCK?]';
+          }
+          $code  =  '<span title="' . $title . '">&lt;!-- IF ' . $tag . ' --&gt;</span>';
+          $rows[$i]  =  str_replace("&lt;!-- IF $tag --&gt;",  $code,  $rows[$i]);
+          if ($title == '[NULL]') {
+            $rows[$i]  =  str_replace('Hide',  'Show',  $rows[$i]);
+            $rows[$i]  =  str_replace('block',  'none',  $rows[$i]);
+          }
+        }
+      }
+    }
+    $page  =  join('<br>', $rows);
+
+    /* Print Header */
+    echo '<html><head><script type="text/javascript">
+        function toggleVisibility(el, src) {
+        var v = el.style.display == "block";
+        var str = src.innerHTML;
+        el.style.display = v ? "none" : "block";
+        src.innerHTML = v ? str.replace(/Hide/, "Show") : str.replace(/Show/, "Hide");}
+        </script></head><body>';
+
+    /* Print Index */
+    echo '<font face="Arial" Size="3"><b>';
+    echo 'QuickSkin Debugger<br>';
+    echo '<font size="2"><li>PHP-Script: ' . $_SERVER['SCRIPT_FILENAME'] . '</li><li>Template: ' . $this->filename . '</li></font><hr>';
+    echo '<li><a href="#template_code">Template</a></li>';
+    echo '<li><a href="#compiled_code">Compiled Template</a></li>';
+    echo '<li><a href="#data_code">Data</a></li>';
+    echo '</b></font><hr>';
+
+    /* Print Template */
+    echo '<a name="template_code"><br><font face="Arial" Size="3"><b>Template:</b>&nbsp;[<a href="javascript:void(\'\');" onclick="toggleVisibility(document.getElementById(\'Template\'), this); return false">Hide Ouptut</a>]</font><br>';
+    echo '<table border="0" cellpadding="4" cellspacing="1" width="100%" bgcolor="#C6D3EF"><tr><td bgcolor="#F0F0F0"><pre id="Template" style="display:block">';
+    echo $page;
+    echo '</pre></td></tr></table>';
+
+    /* Print Compiled Template */
+    if (@include_once ("class.quickskinparser.php")) {
+      $parser = new QuickSkinParser($this->filename);
+      $compiled  =  $parser->compile();
+      echo '<a name="compiled_code"><br><br><font face="Arial" Size="3"><b>Compiled Template:</b>&nbsp;[<a href="javascript:void(\'\');" onclick="toggleVisibility(document.getElementById(\'Compiled\'), this); return false">Hide Ouptut</a>]</font><br>';
+      echo '<table border="0" cellpadding="4" cellspacing="1" width="100%" bgcolor="#C6D3EF"><tr><td bgcolor="#F0F0F0"><pre id="Compiled" style="display:block">';
+      highlight_string($compiled);
+      echo '</pre></td></tr></table>';
+    } else {
+      exit( "QuickSkin Error: Cannot find class.quickskinparser.php; check QuickSkin installation");
+    }
+
+    /* Print Data */
+    echo '<a name="data_code"><br><br><font face="Arial" Size="3"><b>Data:</b>&nbsp;[<a href="javascript:void(\'\');" onclick="toggleVisibility(document.getElementById(\'Data\'), this); return false">Hide Ouptut</a>]</font><br>';
+    echo '<table border="0" cellpadding="4" cellspacing="1" width="100%" bgcolor="#C6D3EF"><tr><td bgcolor="#F0F0F0"><pre id="Data" style="display:block">';
+    echo $this->vardump($vars);
+    echo '</pre></td></tr></table></body></html>';
+  }
+
+  /* Insert Hide/Show Layer Switch
+   * @param string $suffix Additional Text
+   * @desc Insert Hide/Show Layer Switch
+   */
+  function toggleview ( $suffix = '') {
+    global $spancnt;
+
+    $spancnt++;
+    if ($suffix) {
+      $suffix  .=  ':';
+    }
+    $ret =  '[' . $suffix . '<a href="javascript:void(\'\');" onclick="toggleVisibility(document.getElementById(\'Block' . $spancnt . '\'), this); return false">Hide Block</a>]<span id="Block' . $spancnt . '" style="display:block">';
+    return $ret;
+  }
+
+  /* Create Title Text
+   * @param string $value Content
+   * @desc Create Title Text
+   */
+  function tip ( $value ) {
+    if (empty($value)) {
+      return '[NULL]';
+    } else {
+      $ret = htmlentities(substr($value,0,200));
+      return $ret;
+    }
+  }
+
+  /* Recursive Variable Display Output
+   * @param mixed $var Content
+   * @param int $depth Incremented Indent Counter for Recursive Calls
+   * @return string Variable Content
+   * @access private
+   * @desc Recursive Variable Display Output
+   */
+    function vardump($var, $depth = 0) {
+      if (is_array($var)) {
+        $result  =  "Array (" . count($var) . ")<BR>";
+        foreach(array_keys($var) as $key) {
+          $result  .=  $this->tab[$depth] . "<B>$key</B>: " . $this->vardump($var[$key],  $depth+1);
+        }
+        return $result;
+      } else {
+        $ret =  htmlentities($var) . '<BR>';
+        return $ret;
+      }
+    }
+
+  /* Splits Template-Style Variable Names into an Array-Name/Key-Name Components
+   * @param string $tag Variale Name used in Template
+   * @return array  Array Name, Key Name
+   * @access private
+   * @desc Splits Template-Style Variable Names into an Array-Name/Key-Name Components
+   */
+  function var_name($tag) {
+    $parent_level  =  0;
+    while (substr($tag, 0, 7) == 'parent.') {
+      $tag  =  substr($tag, 7);
+      $parent_level++;
+    }
+    if (substr($tag, 0, 4) == 'top.') {
+      $ret = array('_stack[0]', substr($tag,4));
+      return $ret;
+    } elseif ($parent_level) {
+      $ret = array('_stack[$_stack_cnt-'.$parent_level.']', $tag);
+      return $ret;
+    } else {
+      $ret = array('_obj', $tag);
+      return $ret;
+    }
+  }
+
+  /* Highlight HTML Source
+   * @param string $code HTML Source
+   * @return string Hightlighte HTML Source
+   * @access private
+   * @desc Highlight HTML Source
+   */
+  function highlight_html ( $code ) {
+    $code  =  htmlentities($code);
+    $code  =  preg_replace('/([a-zA-Z_]+)=/',  '<font color="#FF0000">$1=</font>',  $code);
+    $code  =  preg_replace('/(&lt;[\/a-zA-Z0-9&;]+)/',  '<font color="#0000FF">$1</font>',  $code);
+    $code  =  str_replace('&lt;!--',  '<font color="#008080">&lt;!--',  $code);
+    $code  =  str_replace('--&gt;',  '--&gt;</font>',  $code);
+    $code  =  preg_replace('/[\r\n]+/',  "\n",  $code);
+    return $code;
+  }
+}
+?>

Property changes on: tags/2.8.3/wb/include/quickSkin_alpha/class.quickskindebugger.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/LICENSE
===================================================================
--- tags/2.8.3/wb/include/phpmailer/LICENSE	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/LICENSE	(revision 1610)
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

Property changes on: tags/2.8.3/wb/include/phpmailer/LICENSE
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ja.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ja.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ja.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Japanese Version
+* By Mitsuhiro Yoshida - http://mitstek.com/
+*/
+
+$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。';
+$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。';
+$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: ';
+$PHPMAILER_LANG['execute'] = '実行できませんでした: ';
+$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: ';
+$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: ';
+$PHPMAILER_LANG['from_failed'] = '次のFromアドレスに間違いがあります: ';
+$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。';
+$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。';
+$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ja.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-dk.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-dk.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-dk.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Danish Version
+* Author: Mikael Stokkebro <info@stokkebro.dk>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP fejl: Kunne ikke logge på.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP fejl: Data kunne ikke accepteres.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Ukendt encode-format: ';
+$PHPMAILER_LANG['execute']              = 'Kunne ikke køre: ';
+$PHPMAILER_LANG['file_access']          = 'Ingen adgang til fil: ';
+$PHPMAILER_LANG['file_open']            = 'Fil fejl: Kunne ikke åbne filen: ';
+$PHPMAILER_LANG['from_failed']          = 'Følgende afsenderadresse er forkert: ';
+$PHPMAILER_LANG['instantiate']          = 'Kunne ikke initialisere email funktionen.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
+$PHPMAILER_LANG['provide_address']      = 'Du skal indtaste mindst en modtagers emailadresse.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP fejl: Følgende modtagere er forkerte: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-dk.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fi.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fi.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fi.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Finnish Version
+* By Jyry Kuukanen
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP-virhe: käyttäjätunnistus epäonnistui.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP-virhe: yhteys palvelimeen ei onnistu.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP-virhe: data on virheellinen.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Tuntematon koodaustyyppi: ';
+$PHPMAILER_LANG['execute']              = 'Suoritus epäonnistui: ';
+$PHPMAILER_LANG['file_access']          = 'Seuraavaan tiedostoon ei ole oikeuksia: ';
+$PHPMAILER_LANG['file_open']            = 'Tiedostovirhe: Ei voida avata tiedostoa: ';
+$PHPMAILER_LANG['from_failed']          = 'Seuraava lähettäjän osoite on virheellinen: ';
+$PHPMAILER_LANG['instantiate']          = 'mail-funktion luonti epäonnistui.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.';
+$PHPMAILER_LANG['provide_address']      = 'Aseta vähintään yksi vastaanottajan sähk&ouml;postiosoite.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.';
+$PHPMAILER_LANG['encoding']             = 'Tuntematon koodaustyyppi: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fi.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-br.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-br.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-br.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Portuguese Version
+* By Paulo Henrique Garcia - paulo@controllerweb.com.br
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Erro de SMTP: Não foi possível autenticar.';
+$PHPMAILER_LANG['connect_host']         = 'Erro de SMTP: Não foi possível conectar com o servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erro de SMTP: Dados não aceitos.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Codificação desconhecida: ';
+$PHPMAILER_LANG['execute']              = 'Não foi possível executar: ';
+$PHPMAILER_LANG['file_access']          = 'Não foi possível acessar o arquivo: ';
+$PHPMAILER_LANG['file_open']            = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
+$PHPMAILER_LANG['from_failed']          = 'Os endereços de rementente a seguir falharam: ';
+$PHPMAILER_LANG['instantiate']          = 'Não foi possível instanciar a função mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não suportado.';
+$PHPMAILER_LANG['provide_address']      = 'Você deve fornecer pelo menos um endereço de destinatário de email.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erro de SMTP: Os endereços de destinatário a seguir falharam: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-br.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fo.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fo.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fo.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Faroese Version [language of the Faroe Islands, a Danish dominion]
+* This file created: 11-06-2004
+* Supplied by Dávur Sørensen [www.profo-webdesign.dk]
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP feilur: Kundi ikki góðkenna.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP feilur: Data ikki góðkent.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Ókend encoding: ';
+$PHPMAILER_LANG['execute']              = 'Kundi ikki útføra: ';
+$PHPMAILER_LANG['file_access']          = 'Kundi ikki tilganga fílu: ';
+$PHPMAILER_LANG['file_open']            = 'Fílu feilur: Kundi ikki opna fílu: ';
+$PHPMAILER_LANG['from_failed']          = 'fylgjandi Frá/From adressa miseydnaðist: ';
+$PHPMAILER_LANG['instantiate']          = 'Kuni ikki instantiera mail funktión.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.';
+$PHPMAILER_LANG['provide_address']      = 'Tú skal uppgeva minst móttakara-emailadressu(r).';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fo.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-se.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-se.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-se.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Swedish Version
+* Author: Johan Linnér <johan@linner.biz>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP fel: Kunde inte autentisera.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP fel: Data accepterades inte.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Okänt encode-format: ';
+$PHPMAILER_LANG['execute']              = 'Kunde inte köra: ';
+$PHPMAILER_LANG['file_access']          = 'Ingen åtkomst till fil: ';
+$PHPMAILER_LANG['file_open']            = 'Fil fel: Kunde inte öppna fil: ';
+$PHPMAILER_LANG['from_failed']          = 'Följande avsändaradress är felaktig: ';
+$PHPMAILER_LANG['instantiate']          = 'Kunde inte initiera e-postfunktion.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Du måste ange minst en mottagares e-postadress.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP fel: Följande mottagare är felaktig: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-se.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-es.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-es.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-es.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Spanish version
+* Versión en español
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Error SMTP: No se pudo autentificar.';
+$PHPMAILER_LANG['connect_host']         = 'Error SMTP: No puedo conectar al servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Error SMTP: Datos no aceptados.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Codificación desconocida: ';
+$PHPMAILER_LANG['execute']              = 'No puedo ejecutar: ';
+$PHPMAILER_LANG['file_access']          = 'No puedo acceder al archivo: ';
+$PHPMAILER_LANG['file_open']            = 'Error de Archivo: No puede abrir el archivo: ';
+$PHPMAILER_LANG['from_failed']          = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
+$PHPMAILER_LANG['instantiate']          = 'No pude crear una instancia de la función Mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.';
+$PHPMAILER_LANG['provide_address']      = 'Debe proveer al menos una dirección de email como destinatario.';
+$PHPMAILER_LANG['recipients_failed']    = 'Error SMTP: Los siguientes destinatarios fallaron: ';
+$PHPMAILER_LANG['signing']              = 'Error al firmar: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-es.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fr.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fr.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fr.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* French Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Erreur SMTP : Echec de l\'authentification.';
+$PHPMAILER_LANG['connect_host']         = 'Erreur SMTP : Impossible de se connecter au serveur SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erreur SMTP : Données incorrects.';
+$PHPMAILER_LANG['empty_message']        = 'Corps de message vide';
+$PHPMAILER_LANG['encoding']             = 'Encodage inconnu : ';
+$PHPMAILER_LANG['execute']              = 'Impossible de lancer l\'exécution : ';
+$PHPMAILER_LANG['file_access']          = 'Impossible d\'accéder au fichier : ';
+$PHPMAILER_LANG['file_open']            = 'Erreur Fichier : ouverture impossible : ';
+$PHPMAILER_LANG['from_failed']          = 'L\'adresse d\'expéditeur suivante a échouée : ';
+$PHPMAILER_LANG['instantiate']          = 'Impossible d\'instancier la fonction mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
+$PHPMAILER_LANG['provide_address']      = 'Vous devez fournir au moins une adresse de destinataire.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erreur SMTP : Les destinataires suivants sont en erreur : ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-fr.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-nl.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-nl.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-nl.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Dutch Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Fout: authenticatie mislukt.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Fout: Kon niet verbinden met SMTP host.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Fout: Data niet geaccepteerd.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Onbekende codering: ';
+$PHPMAILER_LANG['execute']              = 'Kon niet uitvoeren: ';
+$PHPMAILER_LANG['file_access']          = 'Kreeg geen toegang tot bestand: ';
+$PHPMAILER_LANG['file_open']            = 'Bestandsfout: Kon bestand niet openen: ';
+$PHPMAILER_LANG['from_failed']          = 'De volgende afzender adressen zijn mislukt: ';
+$PHPMAILER_LANG['instantiate']          = 'Kon mail functie niet initialiseren.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Er moet tenmiste één ontvanger emailadres opgegeven worden.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Fout: De volgende ontvangers zijn mislukt: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-nl.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-pl.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-pl.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-pl.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Polish Version
+*/
+
+$PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzić autentykacji.';
+$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.';
+$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: ';
+$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: ';
+$PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: ';
+$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: ';
+$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest jest nieprawidłowy: ';
+$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
+$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-pl.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-it.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-it.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-it.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Italian version
+* @package PHPMailer
+* @author Ilias Bartolini <brain79@inwind.it>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Impossibile autenticarsi.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Impossibile connettersi all\'host SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Data non accettati dal server.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Encoding set dei caratteri sconosciuto: ';
+$PHPMAILER_LANG['execute']              = 'Impossibile eseguire l\'operazione: ';
+$PHPMAILER_LANG['file_access']          = 'Impossibile accedere al file: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Impossibile aprire il file: ';
+$PHPMAILER_LANG['from_failed']          = 'I seguenti indirizzi mittenti hanno generato errore: ';
+$PHPMAILER_LANG['instantiate']          = 'Impossibile istanziare la funzione mail';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Deve essere fornito almeno un indirizzo ricevente';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: I seguenti indirizzi destinatari hanno generato errore: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-it.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-hu.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-hu.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-hu.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Hungarian Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Hiba: Sikertelen autentikáció.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Hiba: Nem tudtam csatlakozni az SMTP host-hoz.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Hiba: Nem elfogadható adat.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Ismeretlen kódolás: ';
+$PHPMAILER_LANG['execute']              = 'Nem tudtam végrehajtani: ';
+$PHPMAILER_LANG['file_access']          = 'Nem sikerült elérni a következõ fájlt: ';
+$PHPMAILER_LANG['file_open']            = 'Fájl Hiba: Nem sikerült megnyitni a következõ fájlt: ';
+$PHPMAILER_LANG['from_failed']          = 'Az alábbi Feladó cím hibás: ';
+$PHPMAILER_LANG['instantiate']          = 'Nem sikerült példányosítani a mail funkciót.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Meg kell adnod legalább egy címzett email címet.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' levelezõ nem támogatott.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Hiba: Az alábbi címzettek hibásak: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-hu.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-cz.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-cz.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-cz.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Czech Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Chyba autentikace.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Nelze navázat spojení se SMTP serverem.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Data nebyla pøijata';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Neznámé kódování: ';
+$PHPMAILER_LANG['execute']              = 'Nelze provést: ';
+$PHPMAILER_LANG['file_access']          = 'Soubor nenalezen: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Nelze otevøít soubor pro ètení: ';
+$PHPMAILER_LANG['from_failed']          = 'Následující adresa From je nesprávná: ';
+$PHPMAILER_LANG['instantiate']          = 'Nelze vytvoøit instanci emailové funkce.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailový klient není podporován.';
+$PHPMAILER_LANG['provide_address']      = 'Musíte zadat alespoò jednu emailovou adresu pøíjemce.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: Adresy pøíjemcù nejsou správné ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-cz.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-no.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-no.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-no.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Norwegian Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Feil: Kunne ikke authentisere.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Feil: Kunne ikke koble til SMTP host.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Feil: Data ble ikke akseptert.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Ukjent encoding: ';
+$PHPMAILER_LANG['execute']              = 'Kunne ikke utføre: ';
+$PHPMAILER_LANG['file_access']          = 'Kunne ikke få tilgang til filen: ';
+$PHPMAILER_LANG['file_open']            = 'Fil feil: Kunne ikke åpne filen: ';
+$PHPMAILER_LANG['from_failed']          = 'Følgende Fra feilet: ';
+$PHPMAILER_LANG['instantiate']          = 'Kunne ikke instantiate mail funksjonen.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Du må ha med minst en mottager adresse.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer er ikke supportert.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Feil: Følgende mottagere feilet: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-no.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ro.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ro.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ro.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Romanian Version
+* @package PHPMailer
+* @author Catalin Constantin <catalin@dazoot.ro>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Eroare SMTP: Nu a functionat autentificarea.';
+$PHPMAILER_LANG['connect_host']         = 'Eroare SMTP: Nu m-am putut conecta la adresa SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Eroare SMTP: Continutul mailului nu a fost acceptat.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Encodare necunoscuta: ';
+$PHPMAILER_LANG['execute']              = 'Nu pot executa:  ';
+$PHPMAILER_LANG['file_access']          = 'Nu pot accesa fisierul: ';
+$PHPMAILER_LANG['file_open']            = 'Eroare de fisier: Nu pot deschide fisierul: ';
+$PHPMAILER_LANG['from_failed']          = 'Urmatoarele adrese From au dat eroare: ';
+$PHPMAILER_LANG['instantiate']          = 'Nu am putut instantia functia mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
+$PHPMAILER_LANG['provide_address']      = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).';
+$PHPMAILER_LANG['recipients_failed']    = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ro.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ca.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ca.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ca.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Catalan Version
+* By Ivan: web AT microstudi DOT com
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Error SMTP: No s\'hapogut autenticar.';
+$PHPMAILER_LANG['connect_host']         = 'Error SMTP: No es pot connectar al servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Error SMTP: Dades no acceptades.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Codificació desconeguda: ';
+$PHPMAILER_LANG['execute']              = 'No es pot executar: ';
+$PHPMAILER_LANG['file_access']          = 'No es pot accedir a l\'arxiu: ';
+$PHPMAILER_LANG['file_open']            = 'Error d\'Arxiu: No es pot obrir l\'arxiu: ';
+$PHPMAILER_LANG['from_failed']          = 'La(s) següent(s) adreces de remitent han fallat: ';
+$PHPMAILER_LANG['instantiate']          = 'No s\'ha pogut crear una instància de la funció Mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat';
+$PHPMAILER_LANG['provide_address']      = 'S\'ha de proveir almenys una adreça d\'email com a destinatari.';
+$PHPMAILER_LANG['recipients_failed']    = 'Error SMTP: Els següents destinataris han fallat: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ca.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-tr.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-tr.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-tr.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Turkish version
+* Türkçe Versiyonu
+* ÝZYAZILIM - Elçin Özel - Can Yýlmaz - Mehmet Benlioðlu
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Hatasý: Doðrulanamýyor.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Hatasý: SMTP hosta baðlanýlamýyor.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Hatasý: Veri kabul edilmedi.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Bilinmeyen þifreleme: ';
+$PHPMAILER_LANG['execute']              = 'Çalýþtýrýlamýyor: ';
+$PHPMAILER_LANG['file_access']          = 'Dosyaya eriþilemiyor: ';
+$PHPMAILER_LANG['file_open']            = 'Dosya Hatasý: Dosya açýlamýyor: ';
+$PHPMAILER_LANG['from_failed']          = 'Baþarýsýz olan gönderici adresi: ';
+$PHPMAILER_LANG['instantiate']          = 'Örnek mail fonksiyonu yaratýlamadý.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'En az bir tane mail adresi belirtmek zorundasýnýz alýcýnýn email adresi.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailler desteklenmemektedir.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Hatasý: alýcýlara ulaþmadý: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-tr.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ru.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ru.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ru.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Russian Version by Alexey Chumakov <alex@chumakov.ru>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'Ошибка SMTP: ошибка авторизации.';
+$PHPMAILER_LANG['connect_host']         = 'Ошибка SMTP: не удается подключиться к серверу SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Ошибка SMTP: данные не приняты.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Неизвестный вид кодировки: ';
+$PHPMAILER_LANG['execute']              = 'Невозможно выполнить команду: ';
+$PHPMAILER_LANG['file_access']          = 'Нет доступа к файлу: ';
+$PHPMAILER_LANG['file_open']            = 'Файловая ошибка: не удается открыть файл: ';
+$PHPMAILER_LANG['from_failed']          = 'Неверный адрес отправителя: ';
+$PHPMAILER_LANG['instantiate']          = 'Невозможно запустить функцию mail.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - почтовый сервер не поддерживается.';
+$PHPMAILER_LANG['recipients_failed']    = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ru.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-de.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-de.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-de.php	(revision 1610)
@@ -0,0 +1,25 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* German Version
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Fehler: Authentifizierung fehlgeschlagen.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Fehler: Daten werden nicht akzeptiert.';
+$PHPMAILER_LANG['empty_message']        = 'E-Mail Inhalt ist leer.';
+$PHPMAILER_LANG['encoding']             = 'Unbekanntes Encoding-Format: ';
+$PHPMAILER_LANG['execute']              = 'Konnte folgenden Befehl nicht ausführen: ';
+$PHPMAILER_LANG['file_access']          = 'Zugriff auf folgende Datei fehlgeschlagen: ';
+$PHPMAILER_LANG['file_open']            = 'Datei Fehler: konnte folgende Datei nicht öffnen: ';
+$PHPMAILER_LANG['from_failed']          = 'Die folgende Absenderadresse ist nicht korrekt: ';
+$PHPMAILER_LANG['instantiate']          = 'Mail Funktion konnte nicht initialisiert werden.';
+$PHPMAILER_LANG['invalid_email']        = 'E-Mail wird nicht gesendet, die Adresse ist ungültig.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
+$PHPMAILER_LANG['provide_address']      = 'Bitte geben Sie mindestens eine Empfänger E-Mailadresse an.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Fehler: Die folgenden Empfänger sind nicht korrekt: ';
+$PHPMAILER_LANG['signing']              = 'Fehler beim Signieren: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Verbindung zu SMTP Server fehlgeschlagen.';
+$PHPMAILER_LANG['smtp_error']           = 'Fehler vom SMTP Server: ';
+$PHPMAILER_LANG['variable_set']         = 'Kann Variable nicht setzen oder zurücksetzen: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-de.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ch.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ch.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ch.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Chinese Version
+* By LiuXin: www.80x86.cn/blog/
+*/
+
+$PHPMAILER_LANG['authenticate'] = 'SMTP 错误：身份验证失败。';
+$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: 不能连接SMTP主机。';
+$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: 数据不可接受。';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding'] = '未知编码：';
+$PHPMAILER_LANG['execute'] = '不能执行: ';
+$PHPMAILER_LANG['file_access'] = '不能访问文件：';
+$PHPMAILER_LANG['file_open'] = '文件错误：不能打开文件：';
+$PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了： ';
+$PHPMAILER_LANG['instantiate'] = '不能实现mail方法。';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。';
+$PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。';
+$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误： 下面的 收件人失败了： ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh_cn.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh_cn.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh_cn.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Simplified Chinese Version
+* @author liqwei <liqwei@liqwei.com>
+*/
+
+$PHPMAILER_LANG['authenticate'] = 'SMTP 错误：登录失败。';
+$PHPMAILER_LANG['connect_host'] = 'SMTP 错误：无法连接到 SMTP 主机。';
+$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误：数据不被接受。';
+//$P$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding'] = '未知编码: ';
+$PHPMAILER_LANG['execute'] = '无法执行：';
+$PHPMAILER_LANG['file_access'] = '无法访问文件：';
+$PHPMAILER_LANG['file_open'] = '文件错误：无法打开文件：';
+$PHPMAILER_LANG['from_failed'] = '发送地址错误：';
+$PHPMAILER_LANG['instantiate'] = '未知函数调用。';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。';
+$PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。';
+$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误：收件人地址错误：';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ar.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ar.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-ar.php	(revision 1610)
@@ -0,0 +1,27 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Arabic Version, UTF-8
+* by : bahjat al mostafa <bahjat983@hotmail.com>
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: لم نستطع تأكيد الهوية.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: لم نستطع الاتصال بمخدم SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: لم يتم قبول المعلومات .';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'ترميز غير معروف: ';
+$PHPMAILER_LANG['execute']              = 'لم أستطع تنفيذ : ';
+$PHPMAILER_LANG['file_access']          = 'لم نستطع الوصول للملف: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: لم نستطع فتح الملف: ';
+$PHPMAILER_LANG['from_failed']          = 'البريد التالي لم نستطع ارسال البريد له : ';
+$PHPMAILER_LANG['instantiate']          = 'لم نستطع توفير خدمة البريد.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer غير مدعوم.';
+//$PHPMAILER_LANG['provide_address']      = 'You must provide at least one recipient email address.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: الأخطاء التالية ' .
+                                          'فشل في الارسال لكل من : ';
+$PHPMAILER_LANG['signing']              = 'خطأ في التوقيع: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-et.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-et.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-et.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Estonian Version
+* By Indrek Päri
+*/
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Viga: Autoriseerimise viga.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Viga: Vigased andmed.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Tundmatu Unknown kodeering: ';
+$PHPMAILER_LANG['execute']              = 'Tegevus ebaõnnestus: ';
+$PHPMAILER_LANG['file_access']          = 'Pole piisavalt õiguseid järgneva faili avamiseks: ';
+$PHPMAILER_LANG['file_open']            = 'Faili Viga: Faili avamine ebaõnnestus: ';
+$PHPMAILER_LANG['from_failed']          = 'Järgnev saatja e-posti aadress on vigane: ';
+$PHPMAILER_LANG['instantiate']          = 'mail funktiooni käivitamine ebaõnnestus.';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address']      = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-et.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-zh.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+/**
+* PHPMailer language file: refer to English translation for definitive list
+* Traditional Chinese Version
+* @author liqwei <liqwei@liqwei.com>
+*/
+
+$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤：登錄失敗。';
+$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤：無法連接到 SMTP 主機。';
+$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤：數據不被接受。';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding'] = '未知編碼: ';
+$PHPMAILER_LANG['file_access'] = '無法訪問文件：';
+$PHPMAILER_LANG['file_open'] = '文件錯誤：無法打開文件：';
+$PHPMAILER_LANG['from_failed'] = '發送地址錯誤：';
+$PHPMAILER_LANG['execute'] = '無法執行：';
+$PHPMAILER_LANG['instantiate'] = '未知函數調用。';
+//$PHPMAILER_LANG['invalid_email']        = 'Not sending, email address is invalid: ';
+$PHPMAILER_LANG['provide_address'] = '必須提供至少一個收件人地址。';
+$PHPMAILER_LANG['mailer_not_supported'] = '發信客戶端不被支持。';
+$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤：收件人地址錯誤：';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+?>
\ No newline at end of file
Index: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-en.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-en.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-en.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.
+ * English Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG['provide_address']      = 'You must provide at least one recipient email address.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer is not supported.';
+$PHPMAILER_LANG['execute']              = 'Could not execute: ';
+$PHPMAILER_LANG['instantiate']          = 'Could not instantiate mail function.';
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Could not authenticate.';
+$PHPMAILER_LANG['from_failed']          = 'The following From address failed: ';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: The following recipients failed: ';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Data not accepted.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Could not connect to SMTP host.';
+$PHPMAILER_LANG['file_access']          = 'Could not access file: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Could not open file: ';
+$PHPMAILER_LANG['encoding']             = 'Unknown encoding: ';
+$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/phpmailer.lang-en.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/language/index.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/language/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/language/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/language/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/ChangeLog.txt
===================================================================
--- tags/2.8.3/wb/include/phpmailer/ChangeLog.txt	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/ChangeLog.txt	(revision 1610)
@@ -0,0 +1,415 @@
+ChangeLog
+
+NOTE: THIS VERSION OF PHPMAILER IS DESIGNED FOR PHP5/PHP6.
+      IT WILL NOT WORK WITH PHP4.
+
+Version 5.2 (July 19, 2011)
+* protected MIME body and header
+* better DKIM DNS Resource Record support
+* better aly handling
+* htmlfilter class added to extras
+* moved to Apache Extras
+
+Version 5.1 (October 20, 2009)
+* fixed filename issue with AddStringAttachment (thanks to Tony)
+* fixed "SingleTo" property, now works with Senmail, Qmail, and SMTP in
+  addition to PHP mail()
+* added DKIM digital signing functionality
+  New properties:
+  - DKIM_domain (sets the domain name)
+  - DKIM_private (holds DKIM private key)
+  - DKIM_passphrase (holds your DKIM passphrase)
+  - DKIM_selector (holds the DKIM "selector")
+  - DKIM_identity (holds the identifying email address)
+* added callback function support
+  - callback function parameters include:
+    result, to, cc, bcc, subject and body
+  * see the test/test_callback.php file for usage.
+* added "auto" identity functionality
+  - can automatically add:
+    - Return-path (if Sender not set)
+    - Reply-To (if ReplyTo not set)
+  - can be disabled:
+    - $mail->SetFrom('yourname@yourdomain.com','First Last',false);
+    - or by adding the $mail->Sender and/or $mail->ReplyTo properties
+  Note: "auto" identity added to help with emails ending up in spam
+  or junk boxes because of missing headers
+
+Version 5.0.2 (May 24, 2009)
+* Fix for missing attachments when inline graphics are present
+* Fix for missing Cc in header when using SMTP (mail was sent,
+  but not displayed in header -- Cc receiver only saw email To: 
+  line and no Cc line, but did get the email (To receiver
+  saw same)
+
+Version 5.0.1 (April 05, 2009)
+* Temporary fix for missing attachments
+
+Version 5.0.0 (April 02, 2009)
+
+* With the release of this version, we are initiating a new version numbering
+  system to differentiate from the PHP4 version of PHPMailer.
+* Most notable in this release is fully object oriented code.
+class.smtp.php:
+* Refactored class.smtp.php to support new exception handling
+  code size reduced from 29.2 Kb to 25.6 Kb
+* Removed unnecessary functions from class.smtp.php:
+  public function Expand($name) {
+  public function Help($keyword="") {
+  public function Noop() {
+  public function Send($from) {
+  public function SendOrMail($from) {
+  public function Verify($name) {
+class.phpmailer.php:
+* Refactored class.phpmailer.php with new exception handling
+* Changed processing functionality of Sendmail and Qmail so they cannot be
+  inadvertently used
+* removed getFile() function, just became a simple wrapper for
+  file_get_contents()
+* added check for PHP version (will gracefully exit if not at least PHP 5.0)
+class.phpmailer.php enhancements
+* enhanced code to check if an attachment source is the same as an embedded or
+  inline graphic source to eliminate duplicate attachments
+New /test_script
+* We have written a test script you can use to test the script as part of your
+  installation. Once you press submit, the test script will send a multi-mime
+  email with either the message you type in or an HTML email with an inline
+  graphic. Two attachments are included in the email (one of the attachments
+  is also the inline graphic so you can see that only one copy of the graphic
+  is sent in the email). The test script will also display the functional
+  script that you can copy/paste to your editor to duplicate the functionality.
+New examples
+* All new examples in both basic and advanced modes. Advanced examples show
+  Exception handling.
+PHPDocumentator (phpdocs) documentation for PHPMailer version 5.0.0
+* all new documentation
+
+Please note: the website has been updated to reflect the changes in PHPMailer
+version 5.0.0. http://phpmailer.codeworxtech.com/
+
+Version 2.3 (November 06, 2008)
+
+* added Arabic language (many thanks to Bahjat Al Mostafa)
+* removed English language from language files and made it a default within
+  class.phpmailer.php - if no language is found, it will default to use
+  the english language translation
+* fixed public/private declarations
+* corrected line 1728, $basedir to $directory
+* added $sign_cert_file to avoid improper duplicate use of $sign_key_file
+* corrected $this->Hello on line 612 to $this->Helo
+* changed default of $LE to "\r\n" to comply with RFC 2822. Can be set by the user
+  if default is not acceptable
+* removed trim() from return results in EncodeQP
+* /test and three files it contained are removed from version 2.3
+* fixed phpunit.php for compliance with PHP5
+* changed $this->AltBody = $textMsg; to $this->AltBody = html_entity_decode($textMsg);
+* We have removed the /phpdoc from the downloads. All documentation is now on
+  the http://phpmailer.codeworxtech.com website.
+
+Version 2.2.1 () July 19 2008
+
+* fixed line 1092 in class.smtp.php (my apologies, error on my part)
+
+Version 2.2 () July 15 2008
+
+* Fixed redirect issue (display of UTF-8 in thank you redirect)
+* fixed error in getResponse function declaration (class.pop3.php)
+* PHPMailer now PHP6 compliant
+* fixed line 1092 in class.smtp.php (endless loop from missing = sign)
+
+Version 2.1 (Wed, June 04 2008)
+
+** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS.
+   IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE
+   APPRECIATED.
+
+* added S/MIME functionality (ability to digitally sign emails)
+  BIG THANKS TO "sergiocambra" for posting this patch back in November 2007.
+  The "Signed Emails" functionality adds the Sign method to pass the private key
+  filename and the password to read it, and then email will be sent with
+  content-type multipart/signed and with the digital signature attached.
+* fully compatible with E_STRICT error level
+  - Please note:
+    In about half the test environments this development version was subjected
+    to, an error was thrown for the date() functions used (line 1565 and 1569).
+    This is NOT a PHPMailer error, it is the result of an incorrectly configured
+    PHP5 installation. The fix is to modify your 'php.ini' file and include the
+    date.timezone = America/New York
+    directive, to your own server timezone
+  - If you do get this error, and are unable to access your php.ini file:
+    In your PHP script, add
+    date_default_timezone_set('America/Toronto');
+    - do not try to use
+    $myVar = date_default_timezone_get();
+    as a test, it will throw an error.
+* added ability to define path (mainly for embedded images)
+  function MsgHTML($message,$basedir='') ... where:
+  $basedir is the fully qualified path
+* fixed MsgHTML() function:
+  - Embedded Images where images are specified by <protocol>:// will not be altered or embedded
+* fixed the return value of SMTP exit code ( pclose )
+* addressed issue of multibyte characters in subject line and truncating
+* added ability to have user specified Message ID
+  (default is still that PHPMailer create a unique Message ID)
+* corrected unidentified message type to 'application/octet-stream'
+* fixed chunk_split() multibyte issue (thanks to Colin Brown, et al).
+* added check for added attachments
+* enhanced conversion of HTML to text in MsgHTML (thanks to "brunny")
+
+Version 2.1.0beta2 (Sun, Dec 02 2007)
+* implemented updated EncodeQP (thanks to coolbru, aka Marcus Bointon)
+* finished all testing, all known bugs corrected, enhancements tested
+- note: will NOT work with PHP4.
+
+please note, this is BETA software
+** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS
+INTENDED STRICTLY FOR TESTING
+
+Version 2.1.0beta1
+please note, this is BETA software
+** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS
+INTENDED STRICTLY FOR TESTING
+
+Version 2.0.0 rc2 (Fri, Nov 16 2007), interim release
+* implements new property to control VERP in class.smtp.php
+  example (requires instantiating class.smtp.php):
+  $mail->do_verp = true;
+* POP-before-SMTP functionality included, thanks to Richard Davey
+  (see class.pop3.php & pop3_before_smtp_test.php for examples)
+* included example showing how to use PHPMailer with GMAIL
+* fixed the missing Cc in SendMail() and Mail()
+
+******************
+A note on sending bulk emails:
+
+If the email you are sending is not personalized, consider using the
+"undisclosed-recipient:;" strategy. That is, put all of your recipients
+in the Bcc field and set the To field to "undisclosed-recipients:;".
+It's a lot faster (only one send) and saves quite a bit on resources.
+Contrary to some opinions, this will not get you listed in spam engines -
+it's a legitimate way for you to send emails.
+
+A partial example for use with PHPMailer:
+
+$mail->AddAddress("undisclosed-recipients:;");
+$mail->AddBCC("email1@anydomain.com,email2@anyotherdomain.com,email3@anyalternatedomain.com");
+
+Many email service providers restrict the number of emails that can be sent
+in any given time period. Often that is between 50 - 60 emails maximum
+per hour or per send session.
+
+If that's the case, then break up your Bcc lists into chunks that are one
+less than your limit, and put a pause in your script.
+*******************
+
+Version 2.0.0 rc1 (Thu, Nov 08 2007), interim release
+* dramatically simplified using inline graphics ... it's fully automated and requires no user input
+* added automatic document type detection for attachments and pictures
+* added MsgHTML() function to replace Body tag for HTML emails
+* fixed the SendMail security issues (input validation vulnerability)
+* enhanced the AddAddresses functionality so that the "Name" portion is used in the email address
+* removed the need to use the AltBody method (set from the HTML, or default text used)
+* set the PHP Mail() function as the default (still support SendMail, SMTP Mail)
+* removed the need to set the IsHTML property (set automatically)
+* added Estonian language file by Indrek P&auml;ri
+* added header injection patch
+* added "set" method to permit users to create their own pseudo-properties like 'X-Headers', etc.
+  example of use:
+  $mail->set('X-Priority', '3');
+  $mail->set('X-MSMail-Priority', 'Normal');
+* fixed warning message in SMTP get_lines method
+* added TLS/SSL SMTP support
+  example of use:
+  $mail = new PHPMailer();
+  $mail->Mailer = "smtp";
+  $mail->Host = "smtp.example.com";
+  $mail->SMTPSecure   = "tls"; // option
+  //$mail->SMTPSecure   = "ssl";  // option
+  ...
+  $mail->Send();
+* PHPMailer has been tested with PHP4 (4.4.7) and PHP5 (5.2.7)
+* Works with PHP installed as a module or as CGI-PHP
+- NOTE: will NOT work with PHP5 in E_STRICT error mode
+
+Version 1.73 (Sun, Jun 10 2005)
+* Fixed denial of service bug: http://www.cybsec.com/vuln/PHPMailer-DOS.pdf
+* Now has a total of 20 translations
+* Fixed alt attachments bug: http://tinyurl.com/98u9k
+
+Version 1.72 (Wed, May 25 2004)
+* Added Dutch, Swedish, Czech, Norwegian, and Turkish translations.
+* Received: Removed this method because spam filter programs like
+SpamAssassin reject this header.
+* Fixed error count bug.
+* SetLanguage default is now "language/".
+* Fixed magic_quotes_runtime bug.
+
+Version 1.71 (Tue, Jul 28 2003)
+* Made several speed enhancements
+* Added German and Italian translation files
+* Fixed HELO/AUTH bugs on keep-alive connects
+* Now provides an error message if language file does not load
+* Fixed attachment EOL bug
+* Updated some unclear documentation
+* Added additional tests and improved others
+
+Version 1.70 (Mon, Jun 20 2003)
+* Added SMTP keep-alive support
+* Added IsError method for error detection
+* Added error message translation support (SetLanguage)
+* Refactored many methods to increase library performance
+* Hello now sends the newer EHLO message before HELO as per RFC 2821
+* Removed the boundary class and replaced it with GetBoundary
+* Removed queue support methods
+* New $Hostname variable
+* New Message-ID header
+* Received header reformat
+* Helo variable default changed to $Hostname
+* Removed extra spaces in Content-Type definition (#667182)
+* Return-Path should be set to Sender when set
+* Adds Q or B encoding to headers when necessary
+* quoted-encoding should now encode NULs \000
+* Fixed encoding of body/AltBody (#553370)
+* Adds "To: undisclosed-recipients:;" when all recipients are hidden (BCC)
+* Multiple bug fixes
+
+Version 1.65 (Fri, Aug 09 2002)
+* Fixed non-visible attachment bug (#585097) for Outlook
+* SMTP connections are now closed after each transaction
+* Fixed SMTP::Expand return value
+* Converted SMTP class documentation to phpDocumentor format
+
+Version 1.62 (Wed, Jun 26 2002)
+* Fixed multi-attach bug
+* Set proper word wrapping
+* Reduced memory use with attachments
+* Added more debugging
+* Changed documentation to phpDocumentor format
+
+Version 1.60 (Sat, Mar 30 2002)
+* Sendmail pipe and address patch (Christian Holtje)
+* Added embedded image and read confirmation support (A. Ognio)
+* Added unit tests
+* Added SMTP timeout support (*nix only)
+* Added possibly temporary PluginDir variable for SMTP class
+* Added LE message line ending variable
+* Refactored boundary and attachment code
+* Eliminated SMTP class warnings
+* Added SendToQueue method for future queuing support
+
+Version 1.54 (Wed, Dec 19 2001)
+* Add some queuing support code
+* Fixed a pesky multi/alt bug
+* Messages are no longer forced to have "To" addresses
+
+Version 1.50 (Thu, Nov 08 2001)
+* Fix extra lines when not using SMTP mailer
+* Set WordWrap variable to int with a zero default
+
+Version 1.47 (Tue, Oct 16 2001)
+* Fixed Received header code format
+* Fixed AltBody order error
+* Fixed alternate port warning
+
+Version 1.45 (Tue, Sep 25 2001)
+* Added enhanced SMTP debug support
+* Added support for multiple ports on SMTP
+* Added Received header for tracing
+* Fixed AddStringAttachment encoding
+* Fixed possible header name quote bug
+* Fixed wordwrap() trim bug
+* Couple other small bug fixes
+
+Version 1.41 (Wed, Aug 22 2001)
+* Fixed AltBody bug w/o attachments
+* Fixed rfc_date() for certain mail servers
+
+Version 1.40 (Sun, Aug 12 2001)
+* Added multipart/alternative support (AltBody)
+* Documentation update
+* Fixed bug in Mercury MTA
+
+Version 1.29 (Fri, Aug 03 2001)
+* Added AddStringAttachment() method
+* Added SMTP authentication support
+
+Version 1.28 (Mon, Jul 30 2001)
+* Fixed a typo in SMTP class
+* Fixed header issue with Imail (win32) SMTP server
+* Made fopen() calls for attachments use "rb" to fix win32 error
+
+Version 1.25 (Mon, Jul 02 2001)
+* Added RFC 822 date fix (Patrice)
+* Added improved error handling by adding a $ErrorInfo variable
+* Removed MailerDebug variable (obsolete with new error handler)
+
+Version 1.20 (Mon, Jun 25 2001)
+* Added quoted-printable encoding (Patrice)
+* Set Version as public and removed PrintVersion()
+* Changed phpdoc to only display public variables and methods
+
+Version 1.19 (Thu, Jun 21 2001)
+* Fixed MS Mail header bug
+* Added fix for Bcc problem with mail(). *Does not work on Win32*
+  (See PHP bug report: http://www.php.net/bugs.php?id=11616)
+* mail() no longer passes a fifth parameter when not needed
+
+Version 1.15 (Fri, Jun 15 2001)
+[Note: these changes contributed by Patrice Fournier]
+* Changed all remaining \n to \r\n
+* Bcc: header no longer writen to message except
+when sent directly to sendmail
+* Added a small message to non-MIME compliant mail reader
+* Added Sender variable to change the Sender email
+used in -f for sendmail/mail and in 'MAIL FROM' for smtp mode
+* Changed boundary setting to a place it will be set only once
+* Removed transfer encoding for whole message when using multipart
+* Message body now uses Encoding in multipart messages
+* Can set encoding and type to attachments 7bit, 8bit
+and binary attachment are sent as is, base64 are encoded
+* Can set Encoding to base64 to send 8 bits body
+through 7 bits servers
+
+Version 1.10 (Tue, Jun 12 2001)
+* Fixed win32 mail header bug (printed out headers in message body)
+
+Version 1.09 (Fri, Jun 08 2001)
+* Changed date header to work with Netscape mail programs
+* Altered phpdoc documentation
+
+Version 1.08 (Tue, Jun 05 2001)
+* Added enhanced error-checking
+* Added phpdoc documentation to source
+
+Version 1.06 (Fri, Jun 01 2001)
+* Added optional name for file attachments
+
+Version 1.05 (Tue, May 29 2001)
+* Code cleanup
+* Eliminated sendmail header warning message
+* Fixed possible SMTP error
+
+Version 1.03 (Thu, May 24 2001)
+* Fixed problem where qmail sends out duplicate messages
+
+Version 1.02 (Wed, May 23 2001)
+* Added multiple recipient and attachment Clear* methods
+* Added Sendmail public variable
+* Fixed problem with loading SMTP library multiple times
+
+Version 0.98 (Tue, May 22 2001)
+* Fixed problem with redundant mail hosts sending out multiple messages
+* Added additional error handler code
+* Added AddCustomHeader() function
+* Added support for Microsoft mail client headers (affects priority)
+* Fixed small bug with Mailer variable
+* Added PrintVersion() function
+
+Version 0.92 (Tue, May 15 2001)
+* Changed file names to class.phpmailer.php and class.smtp.php to match
+  current PHP class trend.
+* Fixed problem where body not being printed when a message is attached
+* Several small bug fixes
+
+Version 0.90 (Tue, April 17 2001)
+* Intial public release

Property changes on: tags/2.8.3/wb/include/phpmailer/ChangeLog.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/class.phpmailer.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/class.phpmailer.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/class.phpmailer.php	(revision 1610)
@@ -0,0 +1,2473 @@
+<?php
+/*~ class.phpmailer.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 5.2                                                            |
+|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
+| ------------------------------------------------------------------------- |
+|     Admin: Jim Jagielski (project admininistrator)                        |
+|   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
+|          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
+|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
+|   Founder: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved.               |
+| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+'---------------------------------------------------------------------------'
+*/
+
+/**
+ * PHPMailer - PHP email transport class
+ * NOTE: Requires PHP version 5 or later
+ * @package PHPMailer
+ * @author Andy Prevost
+ * @author Marcus Bointon
+ * @author Jim Jagielski
+ * @copyright 2010 - 2011 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @version $Id: class.phpmailer.php 450 2010-06-23 16:46:33Z coolbru $
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
+
+if (version_compare(PHP_VERSION, '5.0.0', '<') ) exit("Sorry, this version of PHPMailer will only run on PHP version 5 or greater!\n");
+
+class PHPMailer {
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PUBLIC
+  /////////////////////////////////////////////////
+
+  /**
+   * Email priority (1 = High, 3 = Normal, 5 = low).
+   * @var int
+   */
+  public $Priority          = 3;
+
+  /**
+   * Sets the CharSet of the message.
+   * @var string
+   */
+  public $CharSet           = 'iso-8859-1';
+
+  /**
+   * Sets the Content-type of the message.
+   * @var string
+   */
+  public $ContentType       = 'text/plain';
+
+  /**
+   * Sets the Encoding of the message. Options for this are
+   *  "8bit", "7bit", "binary", "base64", and "quoted-printable".
+   * @var string
+   */
+  public $Encoding          = '8bit';
+
+  /**
+   * Holds the most recent mailer error message.
+   * @var string
+   */
+  public $ErrorInfo         = '';
+
+  /**
+   * Sets the From email address for the message.
+   * @var string
+   */
+  public $From              = 'root@localhost';
+
+  /**
+   * Sets the From name of the message.
+   * @var string
+   */
+  public $FromName          = 'Root User';
+
+  /**
+   * Sets the Sender email (Return-Path) of the message.  If not empty,
+   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
+   * @var string
+   */
+  public $Sender            = '';
+
+  /**
+   * Sets the Subject of the message.
+   * @var string
+   */
+  public $Subject           = '';
+
+  /**
+   * Sets the Body of the message.  This can be either an HTML or text body.
+   * If HTML then run IsHTML(true).
+   * @var string
+   */
+  public $Body              = '';
+
+  /**
+   * Sets the text-only body of the message.  This automatically sets the
+   * email to multipart/alternative.  This body can be read by mail
+   * clients that do not have HTML email capability such as mutt. Clients
+   * that can read HTML will view the normal Body.
+   * @var string
+   */
+  public $AltBody           = '';
+
+  /**
+   * Stores the complete compiled MIME message body.
+   * @var string
+   * @access protected
+   */
+  protected $MIMEBody       = '';
+
+  /**
+   * Stores the complete compiled MIME message headers.
+   * @var string
+   * @access protected
+   */
+  protected $MIMEHeader     = '';
+
+  /**
+   * Sets word wrapping on the body of the message to a given number of
+   * characters.
+   * @var int
+   */
+  public $WordWrap          = 0;
+
+  /**
+   * Method to send mail: ("mail", "sendmail", or "smtp").
+   * @var string
+   */
+  public $Mailer            = 'mail';
+
+  /**
+   * Sets the path of the sendmail program.
+   * @var string
+   */
+  public $Sendmail          = '/usr/sbin/sendmail';
+
+  /**
+   * Path to PHPMailer plugins.  Useful if the SMTP class
+   * is in a different directory than the PHP include path.
+   * @var string
+   */
+  public $PluginDir         = '';
+
+  /**
+   * Sets the email address that a reading confirmation will be sent.
+   * @var string
+   */
+  public $ConfirmReadingTo  = '';
+
+  /**
+   * Sets the hostname to use in Message-Id and Received headers
+   * and as default HELO string. If empty, the value returned
+   * by SERVER_NAME is used or 'localhost.localdomain'.
+   * @var string
+   */
+  public $Hostname          = '';
+
+  /**
+   * Sets the message ID to be used in the Message-Id header.
+   * If empty, a unique id will be generated.
+   * @var string
+   */
+  public $MessageID         = '';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES FOR SMTP
+  /////////////////////////////////////////////////
+
+  /**
+   * Sets the SMTP hosts.  All hosts must be separated by a
+   * semicolon.  You can also specify a different port
+   * for each host by using this format: [hostname:port]
+   * (e.g. "smtp1.example.com:25;smtp2.example.com").
+   * Hosts will be tried in order.
+   * @var string
+   */
+  public $Host          = 'localhost';
+
+  /**
+   * Sets the default SMTP server port.
+   * @var int
+   */
+  public $Port          = 25;
+
+  /**
+   * Sets the SMTP HELO of the message (Default is $Hostname).
+   * @var string
+   */
+  public $Helo          = '';
+
+  /**
+   * Sets connection prefix.
+   * Options are "", "ssl" or "tls"
+   * @var string
+   */
+  public $SMTPSecure    = '';
+
+  /**
+   * Sets SMTP authentication. Utilizes the Username and Password variables.
+   * @var bool
+   */
+  public $SMTPAuth      = false;
+
+  /**
+   * Sets SMTP username.
+   * @var string
+   */
+  public $Username      = '';
+
+  /**
+   * Sets SMTP password.
+   * @var string
+   */
+  public $Password      = '';
+
+  /**
+   * Sets the SMTP server timeout in seconds.
+   * This function will not work with the win32 version.
+   * @var int
+   */
+  public $Timeout       = 10;
+
+  /**
+   * Sets SMTP class debugging on or off.
+   * @var bool
+   */
+  public $SMTPDebug     = false;
+
+  /**
+   * Prevents the SMTP connection from being closed after each mail
+   * sending.  If this is set to true then to close the connection
+   * requires an explicit call to SmtpClose().
+   * @var bool
+   */
+  public $SMTPKeepAlive = false;
+
+  /**
+   * Provides the ability to have the TO field process individual
+   * emails, instead of sending to entire TO addresses
+   * @var bool
+   */
+  public $SingleTo      = false;
+
+   /**
+   * If SingleTo is true, this provides the array to hold the email addresses
+   * @var bool
+   */
+  public $SingleToArray = array();
+
+ /**
+   * Provides the ability to change the line ending
+   * @var string
+   */
+  public $LE              = "\n";
+
+  /**
+   * Used with DKIM DNS Resource Record
+   * @var string
+   */
+  public $DKIM_selector   = 'phpmailer';
+
+  /**
+   * Used with DKIM DNS Resource Record
+   * optional, in format of email address 'you@yourdomain.com'
+   * @var string
+   */
+  public $DKIM_identity   = '';
+
+  /**
+   * Used with DKIM DNS Resource Record
+   * @var string
+   */
+  public $DKIM_passphrase   = '';
+
+  /**
+   * Used with DKIM DNS Resource Record
+   * optional, in format of email address 'you@yourdomain.com'
+   * @var string
+   */
+  public $DKIM_domain     = '';
+
+  /**
+   * Used with DKIM DNS Resource Record
+   * optional, in format of email address 'you@yourdomain.com'
+   * @var string
+   */
+  public $DKIM_private    = '';
+
+  /**
+   * Callback Action function name
+   * the function that handles the result of the send email action. Parameters:
+   *   bool    $result        result of the send action
+   *   string  $to            email address of the recipient
+   *   string  $cc            cc email addresses
+   *   string  $bcc           bcc email addresses
+   *   string  $subject       the subject
+   *   string  $body          the email body
+   * @var string
+   */
+  public $action_function = ''; //'callbackAction';
+
+  /**
+   * Sets the PHPMailer Version number
+   * @var string
+   */
+  public $Version         = '5.2';
+
+  /**
+   * What to use in the X-Mailer header
+   * @var string
+   */
+  public $XMailer         = '';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE AND PROTECTED
+  /////////////////////////////////////////////////
+
+  protected   $smtp           = NULL;
+  protected   $to             = array();
+  protected   $cc             = array();
+  protected   $bcc            = array();
+  protected   $ReplyTo        = array();
+  protected   $all_recipients = array();
+  protected   $attachment     = array();
+  protected   $CustomHeader   = array();
+  protected   $message_type   = '';
+  protected   $boundary       = array();
+  protected   $language       = array();
+  protected   $error_count    = 0;
+  protected   $sign_cert_file = '';
+  protected   $sign_key_file  = '';
+  protected   $sign_key_pass  = '';
+  protected   $exceptions     = false;
+
+  /////////////////////////////////////////////////
+  // CONSTANTS
+  /////////////////////////////////////////////////
+
+  const STOP_MESSAGE  = 0; // message only, continue processing
+  const STOP_CONTINUE = 1; // message?, likely ok to continue processing
+  const STOP_CRITICAL = 2; // message, plus full stop, critical error reached
+
+  /////////////////////////////////////////////////
+  // METHODS, VARIABLES
+  /////////////////////////////////////////////////
+
+  /**
+   * Constructor
+   * @param boolean $exceptions Should we throw external exceptions?
+   */
+  public function __construct($exceptions = false) {
+    $this->exceptions = ($exceptions == true);
+  }
+
+  /**
+   * Sets message type to HTML.
+   * @param bool $ishtml
+   * @return void
+   */
+  public function IsHTML($ishtml = true) {
+    if ($ishtml) {
+      $this->ContentType = 'text/html';
+    } else {
+      $this->ContentType = 'text/plain';
+    }
+  }
+
+  /**
+   * Sets Mailer to send message using SMTP.
+   * @return void
+   */
+  public function IsSMTP() {
+    $this->Mailer = 'smtp';
+  }
+
+  /**
+   * Sets Mailer to send message using PHP mail() function.
+   * @return void
+   */
+  public function IsMail() {
+    $this->Mailer = 'mail';
+  }
+
+  /**
+   * Sets Mailer to send message using the $Sendmail program.
+   * @return void
+   */
+  public function IsSendmail() {
+    if (!stristr(ini_get('sendmail_path'), 'sendmail')) {
+      $this->Sendmail = '/var/qmail/bin/sendmail';
+    }
+    $this->Mailer = 'sendmail';
+  }
+
+  /**
+   * Sets Mailer to send message using the qmail MTA.
+   * @return void
+   */
+  public function IsQmail() {
+    if (stristr(ini_get('sendmail_path'), 'qmail')) {
+      $this->Sendmail = '/var/qmail/bin/sendmail';
+    }
+    $this->Mailer = 'sendmail';
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, RECIPIENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds a "To" address.
+   * @param string $address
+   * @param string $name
+   * @return boolean true on success, false if address already used
+   */
+  public function AddAddress($address, $name = '') {
+    return $this->AddAnAddress('to', $address, $name);
+  }
+
+  /**
+   * Adds a "Cc" address.
+   * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer.
+   * @param string $address
+   * @param string $name
+   * @return boolean true on success, false if address already used
+   */
+  public function AddCC($address, $name = '') {
+    return $this->AddAnAddress('cc', $address, $name);
+  }
+
+  /**
+   * Adds a "Bcc" address.
+   * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer.
+   * @param string $address
+   * @param string $name
+   * @return boolean true on success, false if address already used
+   */
+  public function AddBCC($address, $name = '') {
+    return $this->AddAnAddress('bcc', $address, $name);
+  }
+
+  /**
+   * Adds a "Reply-to" address.
+   * @param string $address
+   * @param string $name
+   * @return boolean
+   */
+  public function AddReplyTo($address, $name = '') {
+    return $this->AddAnAddress('ReplyTo', $address, $name);
+  }
+
+  /**
+   * Adds an address to one of the recipient arrays
+   * Addresses that have been added already return false, but do not throw exceptions
+   * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo'
+   * @param string $address The email address to send to
+   * @param string $name
+   * @return boolean true on success, false if address already used or invalid in some way
+   * @access protected
+   */
+  protected function AddAnAddress($kind, $address, $name = '') {
+    if (!preg_match('/^(to|cc|bcc|ReplyTo)$/', $kind)) {
+      $this->SetError($this->Lang('Invalid recipient array').': '.$kind);
+      if ($this->exceptions) {
+        throw new phpmailerException('Invalid recipient array: ' . $kind);
+      }
+      echo $this->Lang('Invalid recipient array').': '.$kind;
+      return false;
+    }
+    $address = trim($address);
+    $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+    if (!self::ValidateAddress($address)) {
+      $this->SetError($this->Lang('invalid_address').': '. $address);
+      if ($this->exceptions) {
+        throw new phpmailerException($this->Lang('invalid_address').': '.$address);
+      }
+      echo $this->Lang('invalid_address').': '.$address;
+      return false;
+    }
+    if ($kind != 'ReplyTo') {
+      if (!isset($this->all_recipients[strtolower($address)])) {
+        array_push($this->$kind, array($address, $name));
+        $this->all_recipients[strtolower($address)] = true;
+        return true;
+      }
+    } else {
+      if (!array_key_exists(strtolower($address), $this->ReplyTo)) {
+        $this->ReplyTo[strtolower($address)] = array($address, $name);
+      return true;
+    }
+  }
+  return false;
+}
+
+/**
+ * Set the From and FromName properties
+ * @param string $address
+ * @param string $name
+ * @return boolean
+ */
+  public function SetFrom($address, $name = '', $auto = 1) {
+    $address = trim($address);
+    $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+    if (!self::ValidateAddress($address)) {
+      $this->SetError($this->Lang('invalid_address').': '. $address);
+      if ($this->exceptions) {
+        throw new phpmailerException($this->Lang('invalid_address').': '.$address);
+      }
+      echo $this->Lang('invalid_address').': '.$address;
+      return false;
+    }
+    $this->From = $address;
+    $this->FromName = $name;
+    if ($auto) {
+      if (empty($this->ReplyTo)) {
+        $this->AddAnAddress('ReplyTo', $address, $name);
+      }
+      if (empty($this->Sender)) {
+        $this->Sender = $address;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Check that a string looks roughly like an email address should
+   * Static so it can be used without instantiation
+   * Tries to use PHP built-in validator in the filter extension (from PHP 5.2), falls back to a reasonably competent regex validator
+   * Conforms approximately to RFC2822
+   * @link http://www.hexillion.com/samples/#Regex Original pattern found here
+   * @param string $address The email address to check
+   * @return boolean
+   * @static
+   * @access public
+   */
+  public static function ValidateAddress($address) {
+    if (function_exists('filter_var')) { //Introduced in PHP 5.2
+      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
+        return false;
+      } else {
+        return true;
+      }
+    } else {
+      return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
+    }
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MAIL SENDING
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates message and assigns Mailer. If the message is
+   * not sent successfully then it returns false.  Use the ErrorInfo
+   * variable to view description of the error.
+   * @return bool
+   */
+  public function Send() {
+    try {
+      if(!$this->PreSend()) return false;
+      return $this->PostSend();
+    } catch (phpmailerException $e) {
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      return false;
+    }
+  }
+
+  protected function PreSend() {
+    try {
+      if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
+        throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
+      }
+
+      // Set whether the message is multipart/alternative
+      if(!empty($this->AltBody)) {
+        $this->ContentType = 'multipart/alternative';
+      }
+
+      $this->error_count = 0; // reset errors
+      $this->SetMessageType();
+      //Refuse to send an empty message
+      if (empty($this->Body)) {
+        throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL);
+      }
+
+      $this->MIMEHeader = $this->CreateHeader();
+      $this->MIMEBody = $this->CreateBody();
+
+
+      // digitally sign with DKIM if enabled
+      if ($this->DKIM_domain && $this->DKIM_private) {
+        $header_dkim = $this->DKIM_Add($this->MIMEHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody);
+        $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader;
+      }
+
+      return true;
+    } catch (phpmailerException $e) {
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      return false;
+    }
+  }
+
+  protected function PostSend() {
+    try {
+      // Choose the mailer and send through it
+      switch($this->Mailer) {
+        case 'sendmail':
+          return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody);
+        case 'smtp':
+          return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody);
+        default:
+          return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
+      }
+
+    } catch (phpmailerException $e) {
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      echo $e->getMessage()."\n";
+      return false;
+    }
+  }
+
+  /**
+   * Sends mail using the $Sendmail program.
+   * @param string $header The message headers
+   * @param string $body The message body
+   * @access protected
+   * @return bool
+   */
+  protected function SendmailSend($header, $body) {
+    if ($this->Sender != '') {
+      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
+    } else {
+      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
+    }
+    if ($this->SingleTo === true) {
+      foreach ($this->SingleToArray as $key => $val) {
+        if(!@$mail = popen($sendmail, 'w')) {
+          throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+        }
+        fputs($mail, "To: " . $val . "\n");
+        fputs($mail, $header);
+        fputs($mail, $body);
+        $result = pclose($mail);
+        // implement call back function if it exists
+        $isSent = ($result == 0) ? 1 : 0;
+        $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
+        if($result != 0) {
+          throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+        }
+      }
+    } else {
+      if(!@$mail = popen($sendmail, 'w')) {
+        throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+      }
+      fputs($mail, $header);
+      fputs($mail, $body);
+      $result = pclose($mail);
+      // implement call back function if it exists
+      $isSent = ($result == 0) ? 1 : 0;
+      $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body);
+      if($result != 0) {
+        throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Sends mail using the PHP mail() function.
+   * @param string $header The message headers
+   * @param string $body The message body
+   * @access protected
+   * @return bool
+   */
+  protected function MailSend($header, $body) {
+    $toArr = array();
+    foreach($this->to as $t) {
+      $toArr[] = $this->AddrFormat($t);
+    }
+    $to = implode(', ', $toArr);
+
+    if (empty($this->Sender)) {
+      $params = "-oi -f %s";
+    } else {
+      $params = sprintf("-oi -f %s", $this->Sender);
+    }
+    if ($this->Sender != '' and !ini_get('safe_mode')) {
+      $old_from = ini_get('sendmail_from');
+      ini_set('sendmail_from', $this->Sender);
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+          // implement call back function if it exists
+          $isSent = ($rt == 1) ? 1 : 0;
+          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
+        }
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+        // implement call back function if it exists
+        $isSent = ($rt == 1) ? 1 : 0;
+        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
+      }
+    } else {
+      if ($this->SingleTo === true && count($toArr) > 1) {
+        foreach ($toArr as $key => $val) {
+          $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
+          // implement call back function if it exists
+          $isSent = ($rt == 1) ? 1 : 0;
+          $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body);
+        }
+      } else {
+        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
+        // implement call back function if it exists
+        $isSent = ($rt == 1) ? 1 : 0;
+        $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body);
+      }
+    }
+    if (isset($old_from)) {
+      ini_set('sendmail_from', $old_from);
+    }
+    if(!$rt) {
+      throw new phpmailerException($this->Lang('instantiate'), self::STOP_CRITICAL);
+    }
+    return true;
+  }
+
+  /**
+   * Sends mail via SMTP using PhpSMTP
+   * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
+   * @param string $header The message headers
+   * @param string $body The message body
+   * @uses SMTP
+   * @access protected
+   * @return bool
+   */
+  protected function SmtpSend($header, $body) {
+    require_once $this->PluginDir . 'class.smtp.php';
+    $bad_rcpt = array();
+
+    if(!$this->SmtpConnect()) {
+      throw new phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL);
+    }
+    $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
+    if(!$this->smtp->Mail($smtp_from)) {
+      throw new phpmailerException($this->Lang('from_failed') . $smtp_from, self::STOP_CRITICAL);
+    }
+
+    // Attempt to send attach all recipients
+    foreach($this->to as $to) {
+      if (!$this->smtp->Recipient($to[0])) {
+        $bad_rcpt[] = $to[0];
+        // implement call back function if it exists
+        $isSent = 0;
+        $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
+      } else {
+        // implement call back function if it exists
+        $isSent = 1;
+        $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body);
+      }
+    }
+    foreach($this->cc as $cc) {
+      if (!$this->smtp->Recipient($cc[0])) {
+        $bad_rcpt[] = $cc[0];
+        // implement call back function if it exists
+        $isSent = 0;
+        $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
+      } else {
+        // implement call back function if it exists
+        $isSent = 1;
+        $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body);
+      }
+    }
+    foreach($this->bcc as $bcc) {
+      if (!$this->smtp->Recipient($bcc[0])) {
+        $bad_rcpt[] = $bcc[0];
+        // implement call back function if it exists
+        $isSent = 0;
+        $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
+      } else {
+        // implement call back function if it exists
+        $isSent = 1;
+        $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body);
+      }
+    }
+
+
+    if (count($bad_rcpt) > 0 ) { //Create error message for any bad addresses
+      $badaddresses = implode(', ', $bad_rcpt);
+      throw new phpmailerException($this->Lang('recipients_failed') . $badaddresses);
+    }
+    if(!$this->smtp->Data($header . $body)) {
+      throw new phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL);
+    }
+    if($this->SMTPKeepAlive == true) {
+      $this->smtp->Reset();
+    }
+    return true;
+  }
+
+  /**
+   * Initiates a connection to an SMTP server.
+   * Returns false if the operation failed.
+   * @uses SMTP
+   * @access public
+   * @return bool
+   */
+  public function SmtpConnect() {
+    if(is_null($this->smtp)) {
+      $this->smtp = new SMTP();
+    }
+
+    $this->smtp->do_debug = $this->SMTPDebug;
+    $hosts = explode(';', $this->Host);
+    $index = 0;
+    $connection = $this->smtp->Connected();
+
+    // Retry while there is no connection
+    try {
+      while($index < count($hosts) && !$connection) {
+        $hostinfo = array();
+        if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) {
+          $host = $hostinfo[1];
+          $port = $hostinfo[2];
+        } else {
+          $host = $hosts[$index];
+          $port = $this->Port;
+        }
+
+        $tls = ($this->SMTPSecure == 'tls');
+        $ssl = ($this->SMTPSecure == 'ssl');
+
+        if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout)) {
+
+          $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname());
+          $this->smtp->Hello($hello);
+
+          if ($tls) {
+            if (!$this->smtp->StartTLS()) {
+              throw new phpmailerException($this->Lang('tls'));
+            }
+
+            //We must resend HELO after tls negotiation
+            $this->smtp->Hello($hello);
+          }
+
+          $connection = true;
+          if ($this->SMTPAuth) {
+            if (!$this->smtp->Authenticate($this->Username, $this->Password)) {
+              throw new phpmailerException($this->Lang('authenticate'));
+            }
+          }
+        }
+        $index++;
+        if (!$connection) {
+          throw new phpmailerException($this->Lang('connect_host'));
+        }
+      }
+    } catch (phpmailerException $e) {
+      $this->smtp->Reset();
+      throw $e;
+    }
+    return true;
+  }
+
+  /**
+   * Closes the active SMTP session if one exists.
+   * @return void
+   */
+  public function SmtpClose() {
+    if(!is_null($this->smtp)) {
+      if($this->smtp->Connected()) {
+        $this->smtp->Quit();
+        $this->smtp->Close();
+      }
+    }
+  }
+
+  /**
+  * Sets the language for all class error messages.
+  * Returns false if it cannot load the language file.  The default language is English.
+  * @param string $langcode ISO 639-1 2-character language code (e.g. Portuguese: "br")
+  * @param string $lang_path Path to the language file directory
+  * @access public
+  */
+  function SetLanguage($langcode = 'en', $lang_path = 'language/') {
+    //Define full set of translatable strings
+    $PHPMAILER_LANG = array(
+      'provide_address' => 'You must provide at least one recipient email address.',
+      'mailer_not_supported' => ' mailer is not supported.',
+      'execute' => 'Could not execute: ',
+      'instantiate' => 'Could not instantiate mail function.',
+      'authenticate' => 'SMTP Error: Could not authenticate.',
+      'from_failed' => 'The following From address failed: ',
+      'recipients_failed' => 'SMTP Error: The following recipients failed: ',
+      'data_not_accepted' => 'SMTP Error: Data not accepted.',
+      'connect_host' => 'SMTP Error: Could not connect to SMTP host.',
+      'file_access' => 'Could not access file: ',
+      'file_open' => 'File Error: Could not open file: ',
+      'encoding' => 'Unknown encoding: ',
+      'signing' => 'Signing Error: ',
+      'smtp_error' => 'SMTP server error: ',
+      'empty_message' => 'Message body empty',
+      'invalid_address' => 'Invalid address',
+      'variable_set' => 'Cannot set or reset variable: '
+    );
+    //Overwrite language-specific strings. This way we'll never have missing translations - no more "language string failed to load"!
+    $l = true;
+    if ($langcode != 'en') { //There is no English translation file
+      $l = @include $lang_path.'phpmailer.lang-'.$langcode.'.php';
+    }
+    $this->language = $PHPMAILER_LANG;
+    return ($l == true); //Returns false if language not found
+  }
+
+  /**
+  * Return the current array of language strings
+  * @return array
+  */
+  public function GetTranslations() {
+    return $this->language;
+  }
+
+  /////////////////////////////////////////////////
+  // METHODS, MESSAGE CREATION
+  /////////////////////////////////////////////////
+
+  /**
+   * Creates recipient headers.
+   * @access public
+   * @return string
+   */
+  public function AddrAppend($type, $addr) {
+    $addr_str = $type . ': ';
+    $addresses = array();
+    foreach ($addr as $a) {
+      $addresses[] = $this->AddrFormat($a);
+    }
+    $addr_str .= implode(', ', $addresses);
+    $addr_str .= $this->LE;
+
+    return $addr_str;
+  }
+
+  /**
+   * Formats an address correctly.
+   * @access public
+   * @return string
+   */
+  public function AddrFormat($addr) {
+    if (empty($addr[1])) {
+      return $this->SecureHeader($addr[0]);
+    } else {
+      return $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
+    }
+  }
+
+  /**
+   * Wraps message for use with mailers that do not
+   * automatically perform wrapping and for quoted-printable.
+   * Original written by philippe.
+   * @param string $message The message to wrap
+   * @param integer $length The line length to wrap to
+   * @param boolean $qp_mode Whether to run in Quoted-Printable mode
+   * @access public
+   * @return string
+   */
+  public function WrapText($message, $length, $qp_mode = false) {
+    $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
+    // If utf-8 encoding is used, we will need to make sure we don't
+    // split multibyte characters when we wrap
+    $is_utf8 = (strtolower($this->CharSet) == "utf-8");
+
+    $message = $this->FixEOL($message);
+    if (substr($message, -1) == $this->LE) {
+      $message = substr($message, 0, -1);
+    }
+
+    $line = explode($this->LE, $message);
+    $message = '';
+    for ($i = 0 ;$i < count($line); $i++) {
+      $line_part = explode(' ', $line[$i]);
+      $buf = '';
+      for ($e = 0; $e<count($line_part); $e++) {
+        $word = $line_part[$e];
+        if ($qp_mode and (strlen($word) > $length)) {
+          $space_left = $length - strlen($buf) - 1;
+          if ($e != 0) {
+            if ($space_left > 20) {
+              $len = $space_left;
+              if ($is_utf8) {
+                $len = $this->UTF8CharBoundary($word, $len);
+              } elseif (substr($word, $len - 1, 1) == "=") {
+                $len--;
+              } elseif (substr($word, $len - 2, 1) == "=") {
+                $len -= 2;
+              }
+              $part = substr($word, 0, $len);
+              $word = substr($word, $len);
+              $buf .= ' ' . $part;
+              $message .= $buf . sprintf("=%s", $this->LE);
+            } else {
+              $message .= $buf . $soft_break;
+            }
+            $buf = '';
+          }
+          while (strlen($word) > 0) {
+            $len = $length;
+            if ($is_utf8) {
+              $len = $this->UTF8CharBoundary($word, $len);
+            } elseif (substr($word, $len - 1, 1) == "=") {
+              $len--;
+            } elseif (substr($word, $len - 2, 1) == "=") {
+              $len -= 2;
+            }
+            $part = substr($word, 0, $len);
+            $word = substr($word, $len);
+
+            if (strlen($word) > 0) {
+              $message .= $part . sprintf("=%s", $this->LE);
+            } else {
+              $buf = $part;
+            }
+          }
+        } else {
+          $buf_o = $buf;
+          $buf .= ($e == 0) ? $word : (' ' . $word);
+
+          if (strlen($buf) > $length and $buf_o != '') {
+            $message .= $buf_o . $soft_break;
+            $buf = $word;
+          }
+        }
+      }
+      $message .= $buf . $this->LE;
+    }
+
+    return $message;
+  }
+
+  /**
+   * Finds last character boundary prior to maxLength in a utf-8
+   * quoted (printable) encoded string.
+   * Original written by Colin Brown.
+   * @access public
+   * @param string $encodedText utf-8 QP text
+   * @param int    $maxLength   find last character boundary prior to this length
+   * @return int
+   */
+  public function UTF8CharBoundary($encodedText, $maxLength) {
+    $foundSplitPos = false;
+    $lookBack = 3;
+    while (!$foundSplitPos) {
+      $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
+      $encodedCharPos = strpos($lastChunk, "=");
+      if ($encodedCharPos !== false) {
+        // Found start of encoded character byte within $lookBack block.
+        // Check the encoded byte value (the 2 chars after the '=')
+        $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
+        $dec = hexdec($hex);
+        if ($dec < 128) { // Single byte character.
+          // If the encoded char was found at pos 0, it will fit
+          // otherwise reduce maxLength to start of the encoded char
+          $maxLength = ($encodedCharPos == 0) ? $maxLength :
+          $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec >= 192) { // First byte of a multi byte character
+          // Reduce maxLength to split at start of character
+          $maxLength = $maxLength - ($lookBack - $encodedCharPos);
+          $foundSplitPos = true;
+        } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
+          $lookBack += 3;
+        }
+      } else {
+        // No encoded character found
+        $foundSplitPos = true;
+      }
+    }
+    return $maxLength;
+  }
+
+
+  /**
+   * Set the body wrapping.
+   * @access public
+   * @return void
+   */
+  public function SetWordWrap() {
+    if($this->WordWrap < 1) {
+      return;
+    }
+
+    switch($this->message_type) {
+      case 'alt':
+      case 'alt_inline':
+      case 'alt_attach':
+      case 'alt_inline_attach':
+        $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
+        break;
+      default:
+        $this->Body = $this->WrapText($this->Body, $this->WordWrap);
+        break;
+    }
+  }
+
+  /**
+   * Assembles message header.
+   * @access public
+   * @return string The assembled header
+   */
+  public function CreateHeader() {
+    $result = '';
+
+    // Set the boundaries
+    $uniq_id = md5(uniqid(time()));
+    $this->boundary[1] = 'b1_' . $uniq_id;
+    $this->boundary[2] = 'b2_' . $uniq_id;
+    $this->boundary[3] = 'b3_' . $uniq_id;
+
+    $result .= $this->HeaderLine('Date', self::RFCDate());
+    if($this->Sender == '') {
+      $result .= $this->HeaderLine('Return-Path', trim($this->From));
+    } else {
+      $result .= $this->HeaderLine('Return-Path', trim($this->Sender));
+    }
+
+    // To be created automatically by mail()
+    if($this->Mailer != 'mail') {
+      if ($this->SingleTo === true) {
+        foreach($this->to as $t) {
+          $this->SingleToArray[] = $this->AddrFormat($t);
+        }
+      } else {
+        if(count($this->to) > 0) {
+          $result .= $this->AddrAppend('To', $this->to);
+        } elseif (count($this->cc) == 0) {
+          $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
+        }
+      }
+    }
+
+    $from = array();
+    $from[0][0] = trim($this->From);
+    $from[0][1] = $this->FromName;
+    $result .= $this->AddrAppend('From', $from);
+
+    // sendmail and mail() extract Cc from the header before sending
+    if(count($this->cc) > 0) {
+      $result .= $this->AddrAppend('Cc', $this->cc);
+    }
+
+    // sendmail and mail() extract Bcc from the header before sending
+    if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
+      $result .= $this->AddrAppend('Bcc', $this->bcc);
+    }
+
+    if(count($this->ReplyTo) > 0) {
+      $result .= $this->AddrAppend('Reply-to', $this->ReplyTo);
+    }
+
+    // mail() sets the subject itself
+    if($this->Mailer != 'mail') {
+      $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject)));
+    }
+
+    if($this->MessageID != '') {
+      $result .= $this->HeaderLine('Message-ID', $this->MessageID);
+    } else {
+      $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
+    }
+    $result .= $this->HeaderLine('X-Priority', $this->Priority);
+    if($this->XMailer) {
+      $result .= $this->HeaderLine('X-Mailer', $this->XMailer);
+    } else {
+      $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)');
+    }
+
+    if($this->ConfirmReadingTo != '') {
+      $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
+    }
+
+    // Add custom headers
+    for($index = 0; $index < count($this->CustomHeader); $index++) {
+      $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
+    }
+    if (!$this->sign_key_file) {
+      $result .= $this->HeaderLine('MIME-Version', '1.0');
+      $result .= $this->GetMailMIME();
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns the message MIME.
+   * @access public
+   * @return string
+   */
+  public function GetMailMIME() {
+    $result = '';
+    switch($this->message_type) {
+      case 'plain':
+        $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
+        $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset="'.$this->CharSet.'"');
+        break;
+      case 'inline':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+      case 'attach':
+      case 'inline_attach':
+      case 'alt_attach':
+      case 'alt_inline_attach':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+      case 'alt':
+      case 'alt_inline':
+        $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+        break;
+    }
+
+    if($this->Mailer != 'mail') {
+      $result .= $this->LE.$this->LE;
+    }
+
+    return $result;
+  }
+
+  /**
+   * Assembles the message body.  Returns an empty string on failure.
+   * @access public
+   * @return string The assembled message body
+   */
+  public function CreateBody() {
+    $body = '';
+
+    if ($this->sign_key_file) {
+      $body .= $this->GetMailMIME();
+    }
+
+    $this->SetWordWrap();
+
+    switch($this->message_type) {
+      case 'plain':
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        break;
+      case 'inline':
+        $body .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[1]);
+        break;
+      case 'attach':
+        $body .= $this->GetBoundary($this->boundary[1], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
+      case 'inline_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', '', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
+      case 'alt':
+        $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->GetBoundary($this->boundary[1], '', 'text/html', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->EndBoundary($this->boundary[1]);
+        break;
+      case 'alt_inline':
+        $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->EndBoundary($this->boundary[1]);
+        break;
+      case 'alt_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->EndBoundary($this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
+      case 'alt_inline_attach':
+        $body .= $this->TextLine("--" . $this->boundary[1]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '');
+        $body .= $this->EncodeString($this->AltBody, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->TextLine("--" . $this->boundary[2]);
+        $body .= $this->HeaderLine('Content-Type', 'multipart/related;');
+        $body .= $this->TextLine("\tboundary=\"" . $this->boundary[3] . '"');
+        $body .= $this->LE;
+        $body .= $this->GetBoundary($this->boundary[3], '', 'text/html', '');
+        $body .= $this->EncodeString($this->Body, $this->Encoding);
+        $body .= $this->LE.$this->LE;
+        $body .= $this->AttachAll("inline", $this->boundary[3]);
+        $body .= $this->LE;
+        $body .= $this->EndBoundary($this->boundary[2]);
+        $body .= $this->LE;
+        $body .= $this->AttachAll("attachment", $this->boundary[1]);
+        break;
+    }
+
+    if ($this->IsError()) {
+      $body = '';
+    } elseif ($this->sign_key_file) {
+      try {
+        $file = tempnam('', 'mail');
+        file_put_contents($file, $body); //TODO check this worked
+        $signed = tempnam("", "signed");
+        if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) {
+          @unlink($file);
+          @unlink($signed);
+          $body = file_get_contents($signed);
+        } else {
+          @unlink($file);
+          @unlink($signed);
+          throw new phpmailerException($this->Lang("signing").openssl_error_string());
+        }
+      } catch (phpmailerException $e) {
+        $body = '';
+        if ($this->exceptions) {
+          throw $e;
+        }
+      }
+    }
+
+    return $body;
+  }
+
+  /**
+   * Returns the start of a message boundary.
+   * @access protected
+   * @return string
+   */
+  protected function GetBoundary($boundary, $charSet, $contentType, $encoding) {
+    $result = '';
+    if($charSet == '') {
+      $charSet = $this->CharSet;
+    }
+    if($contentType == '') {
+      $contentType = $this->ContentType;
+    }
+    if($encoding == '') {
+      $encoding = $this->Encoding;
+    }
+    $result .= $this->TextLine('--' . $boundary);
+    $result .= sprintf("Content-Type: %s; charset=\"%s\"", $contentType, $charSet);
+    $result .= $this->LE;
+    $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
+    $result .= $this->LE;
+
+    return $result;
+  }
+
+  /**
+   * Returns the end of a message boundary.
+   * @access protected
+   * @return string
+   */
+  protected function EndBoundary($boundary) {
+    return $this->LE . '--' . $boundary . '--' . $this->LE;
+  }
+
+  /**
+   * Sets the message type.
+   * @access protected
+   * @return void
+   */
+  protected function SetMessageType() {
+    $this->message_type = array();
+    if($this->AlternativeExists()) $this->message_type[] = "alt";
+    if($this->InlineImageExists()) $this->message_type[] = "inline";
+    if($this->AttachmentExists()) $this->message_type[] = "attach";
+    $this->message_type = implode("_", $this->message_type);
+    if($this->message_type == "") $this->message_type = "plain";
+  }
+
+  /**
+   *  Returns a formatted header line.
+   * @access public
+   * @return string
+   */
+  public function HeaderLine($name, $value) {
+    return $name . ': ' . $value . $this->LE;
+  }
+
+  /**
+   * Returns a formatted mail line.
+   * @access public
+   * @return string
+   */
+  public function TextLine($value) {
+    return $value . $this->LE;
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, ATTACHMENTS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds an attachment from a path on the filesystem.
+   * Returns false if the file could not be found
+   * or accessed.
+   * @param string $path Path to the attachment.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+    try {
+      if ( !@is_file($path) ) {
+        throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE);
+      }
+      $filename = basename($path);
+      if ( $name == '' ) {
+        $name = $filename;
+      }
+
+      $this->attachment[] = array(
+        0 => $path,
+        1 => $filename,
+        2 => $name,
+        3 => $encoding,
+        4 => $type,
+        5 => false,  // isStringAttachment
+        6 => 'attachment',
+        7 => 0
+      );
+
+    } catch (phpmailerException $e) {
+      $this->SetError($e->getMessage());
+      if ($this->exceptions) {
+        throw $e;
+      }
+      echo $e->getMessage()."\n";
+      if ( $e->getCode() == self::STOP_CRITICAL ) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+  * Return the current array of attachments
+  * @return array
+  */
+  public function GetAttachments() {
+    return $this->attachment;
+  }
+
+  /**
+   * Attaches all fs, string, and binary attachments to the message.
+   * Returns an empty string on failure.
+   * @access protected
+   * @return string
+   */
+  protected function AttachAll($disposition_type, $boundary) {
+    // Return text of body
+    $mime = array();
+    $cidUniq = array();
+    $incl = array();
+
+    // Add all attachments
+    foreach ($this->attachment as $attachment) {
+      // CHECK IF IT IS A VALID DISPOSITION_FILTER
+      if($attachment[6] == $disposition_type) {
+        // Check for string attachment
+        $bString = $attachment[5];
+        if ($bString) {
+          $string = $attachment[0];
+        } else {
+          $path = $attachment[0];
+        }
+
+        $inclhash = md5(serialize($attachment));
+        if (in_array($inclhash, $incl)) { continue; }
+        $incl[]      = $inclhash;
+        $filename    = $attachment[1];
+        $name        = $attachment[2];
+        $encoding    = $attachment[3];
+        $type        = $attachment[4];
+        $disposition = $attachment[6];
+        $cid         = $attachment[7];
+        if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; }
+        $cidUniq[$cid] = true;
+
+        $mime[] = sprintf("--%s%s", $boundary, $this->LE);
+        $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
+        $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
+
+        if($disposition == 'inline') {
+          $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+        }
+
+        $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
+
+        // Encode as string attachment
+        if($bString) {
+          $mime[] = $this->EncodeString($string, $encoding);
+          if($this->IsError()) {
+            return '';
+          }
+          $mime[] = $this->LE.$this->LE;
+        } else {
+          $mime[] = $this->EncodeFile($path, $encoding);
+          if($this->IsError()) {
+            return '';
+          }
+          $mime[] = $this->LE.$this->LE;
+        }
+      }
+    }
+
+    $mime[] = sprintf("--%s--%s", $boundary, $this->LE);
+
+    return implode("", $mime);
+  }
+
+  /**
+   * Encodes attachment in requested format.
+   * Returns an empty string on failure.
+   * @param string $path The full path to the file
+   * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+   * @see EncodeFile()
+   * @access protected
+   * @return string
+   */
+  protected function EncodeFile($path, $encoding = 'base64') {
+    try {
+      if (!is_readable($path)) {
+        throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE);
+      }
+      if (function_exists('get_magic_quotes')) {
+        function get_magic_quotes() {
+          return false;
+        }
+      }
+      if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+        $magic_quotes = get_magic_quotes_runtime();
+        set_magic_quotes_runtime(0);
+      }
+      $file_buffer  = file_get_contents($path);
+      $file_buffer  = $this->EncodeString($file_buffer, $encoding);
+      if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+        set_magic_quotes_runtime($magic_quotes);
+      }
+      return $file_buffer;
+    } catch (Exception $e) {
+      $this->SetError($e->getMessage());
+      return '';
+    }
+  }
+
+  /**
+   * Encodes string to requested format.
+   * Returns an empty string on failure.
+   * @param string $str The text to encode
+   * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+   * @access public
+   * @return string
+   */
+  public function EncodeString($str, $encoding = 'base64') {
+    $encoded = '';
+    switch(strtolower($encoding)) {
+      case 'base64':
+        $encoded = chunk_split(base64_encode($str), 76, $this->LE);
+        break;
+      case '7bit':
+      case '8bit':
+        $encoded = $this->FixEOL($str);
+        //Make sure it ends with a line break
+        if (substr($encoded, -(strlen($this->LE))) != $this->LE)
+          $encoded .= $this->LE;
+        break;
+      case 'binary':
+        $encoded = $str;
+        break;
+      case 'quoted-printable':
+        $encoded = $this->EncodeQP($str);
+        break;
+      default:
+        $this->SetError($this->Lang('encoding') . $encoding);
+        break;
+    }
+    return $encoded;
+  }
+
+  /**
+   * Encode a header string to best (shortest) of Q, B, quoted or none.
+   * @access public
+   * @return string
+   */
+  public function EncodeHeader($str, $position = 'text') {
+    $x = 0;
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        if (!preg_match('/[\200-\377]/', $str)) {
+          // Can't use addslashes as we don't know what value has magic_quotes_sybase
+          $encoded = addcslashes($str, "\0..\37\177\\\"");
+          if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
+            return ($encoded);
+          } else {
+            return ("\"$encoded\"");
+          }
+        }
+        $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+        break;
+      case 'comment':
+        $x = preg_match_all('/[()"]/', $str, $matches);
+        // Fall-through
+      case 'text':
+      default:
+        $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+        break;
+    }
+
+    if ($x == 0) {
+      return ($str);
+    }
+
+    $maxlen = 75 - 7 - strlen($this->CharSet);
+    // Try to select the encoding which should produce the shortest output
+    if (strlen($str)/3 < $x) {
+      $encoding = 'B';
+      if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
+        // Use a custom function which correctly encodes and wraps long
+        // multibyte strings without breaking lines within a character
+        $encoded = $this->Base64EncodeWrapMB($str);
+      } else {
+        $encoded = base64_encode($str);
+        $maxlen -= $maxlen % 4;
+        $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
+      }
+    } else {
+      $encoding = 'Q';
+      $encoded = $this->EncodeQ($str, $position);
+      $encoded = $this->WrapText($encoded, $maxlen, true);
+      $encoded = str_replace('='.$this->LE, "\n", trim($encoded));
+    }
+
+    $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
+    $encoded = trim(str_replace("\n", $this->LE, $encoded));
+
+    return $encoded;
+  }
+
+  /**
+   * Checks if a string contains multibyte characters.
+   * @access public
+   * @param string $str multi-byte text to wrap encode
+   * @return bool
+   */
+  public function HasMultiBytes($str) {
+    if (function_exists('mb_strlen')) {
+      return (strlen($str) > mb_strlen($str, $this->CharSet));
+    } else { // Assume no multibytes (we can't handle without mbstring functions anyway)
+      return false;
+    }
+  }
+
+  /**
+   * Correctly encodes and wraps long multibyte strings for mail headers
+   * without breaking lines within a character.
+   * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
+   * @access public
+   * @param string $str multi-byte text to wrap encode
+   * @return string
+   */
+  public function Base64EncodeWrapMB($str) {
+    $start = "=?".$this->CharSet."?B?";
+    $end = "?=";
+    $encoded = "";
+
+    $mb_length = mb_strlen($str, $this->CharSet);
+    // Each line must have length <= 75, including $start and $end
+    $length = 75 - strlen($start) - strlen($end);
+    // Average multi-byte ratio
+    $ratio = $mb_length / strlen($str);
+    // Base64 has a 4:3 ratio
+    $offset = $avgLength = floor($length * $ratio * .75);
+
+    for ($i = 0; $i < $mb_length; $i += $offset) {
+      $lookBack = 0;
+
+      do {
+        $offset = $avgLength - $lookBack;
+        $chunk = mb_substr($str, $i, $offset, $this->CharSet);
+        $chunk = base64_encode($chunk);
+        $lookBack++;
+      }
+      while (strlen($chunk) > $length);
+
+      $encoded .= $chunk . $this->LE;
+    }
+
+    // Chomp the last linefeed
+    $encoded = substr($encoded, 0, -strlen($this->LE));
+    return $encoded;
+  }
+
+  /**
+  * Encode string to quoted-printable.
+  * Only uses standard PHP, slow, but will always work
+  * @access public
+  * @param string $string the text to encode
+  * @param integer $line_max Number of chars allowed on a line before wrapping
+  * @return string
+  */
+  public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) {
+    $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
+    $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
+    $eol = "\r\n";
+    $escape = '=';
+    $output = '';
+    while( list(, $line) = each($lines) ) {
+      $linlen = strlen($line);
+      $newline = '';
+      for($i = 0; $i < $linlen; $i++) {
+        $c = substr( $line, $i, 1 );
+        $dec = ord( $c );
+        if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
+          $c = '=2E';
+        }
+        if ( $dec == 32 ) {
+          if ( $i == ( $linlen - 1 ) ) { // convert space at eol only
+            $c = '=20';
+          } else if ( $space_conv ) {
+            $c = '=20';
+          }
+        } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
+          $h2 = floor($dec/16);
+          $h1 = floor($dec%16);
+          $c = $escape.$hex[$h2].$hex[$h1];
+        }
+        if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
+          $output .= $newline.$escape.$eol; //  soft line break; " =\r\n" is okay
+          $newline = '';
+          // check if newline first character will be point or not
+          if ( $dec == 46 ) {
+            $c = '=2E';
+          }
+        }
+        $newline .= $c;
+      } // end of for
+      $output .= $newline.$eol;
+    } // end of while
+    return $output;
+  }
+
+  /**
+  * Encode string to RFC2045 (6.7) quoted-printable format
+  * Uses a PHP5 stream filter to do the encoding about 64x faster than the old version
+  * Also results in same content as you started with after decoding
+  * @see EncodeQPphp()
+  * @access public
+  * @param string $string the text to encode
+  * @param integer $line_max Number of chars allowed on a line before wrapping
+  * @param boolean $space_conv Dummy param for compatibility with existing EncodeQP function
+  * @return string
+  * @author Marcus Bointon
+  */
+  public function EncodeQP($string, $line_max = 76, $space_conv = false) {
+    if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3)
+      return quoted_printable_encode($string);
+    }
+    $filters = stream_get_filters();
+    if (!in_array('convert.*', $filters)) { //Got convert stream filter?
+      return $this->EncodeQPphp($string, $line_max, $space_conv); //Fall back to old implementation
+    }
+    $fp = fopen('php://temp/', 'r+');
+    $string = preg_replace('/\r\n?/', $this->LE, $string); //Normalise line breaks
+    $params = array('line-length' => $line_max, 'line-break-chars' => $this->LE);
+    $s = stream_filter_append($fp, 'convert.quoted-printable-encode', STREAM_FILTER_READ, $params);
+    fputs($fp, $string);
+    rewind($fp);
+    $out = stream_get_contents($fp);
+    stream_filter_remove($s);
+    $out = preg_replace('/^\./m', '=2E', $out); //Encode . if it is first char on a line, workaround for bug in Exchange
+    fclose($fp);
+    return $out;
+  }
+
+  /**
+   * Encode string to q encoding.
+   * @link http://tools.ietf.org/html/rfc2047
+   * @param string $str the text to encode
+   * @param string $position Where the text is going to be used, see the RFC for what that means
+   * @access public
+   * @return string
+   */
+  public function EncodeQ($str, $position = 'text') {
+    // There should not be any EOL in the string
+    $encoded = preg_replace('/[\r\n]*/', '', $str);
+
+    switch (strtolower($position)) {
+      case 'phrase':
+        $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        break;
+      case 'comment':
+        $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+      case 'text':
+      default:
+        // Replace every high ascii, control =, ? and _ characters
+        //TODO using /e (equivalent to eval()) is probably not a good idea
+        $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
+                                "'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded);
+        break;
+    }
+
+    // Replace every spaces to _ (more readable than =20)
+    $encoded = str_replace(' ', '_', $encoded);
+
+    return $encoded;
+  }
+
+  /**
+   * Adds a string or binary attachment (non-filesystem) to the list.
+   * This method can be used to attach ascii or binary data,
+   * such as a BLOB record from a database.
+   * @param string $string String attachment data.
+   * @param string $filename Name of the attachment.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return void
+   */
+  public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {
+    // Append to $attachment array
+    $this->attachment[] = array(
+      0 => $string,
+      1 => $filename,
+      2 => basename($filename),
+      3 => $encoding,
+      4 => $type,
+      5 => true,  // isStringAttachment
+      6 => 'attachment',
+      7 => 0
+    );
+  }
+
+  /**
+   * Adds an embedded attachment.  This can include images, sounds, and
+   * just about any other document.  Make sure to set the $type to an
+   * image type.  For JPEG images use "image/jpeg" and for GIF images
+   * use "image/gif".
+   * @param string $path Path to the attachment.
+   * @param string $cid Content ID of the attachment.  Use this to identify
+   *        the Id for accessing the image in an HTML form.
+   * @param string $name Overrides the attachment name.
+   * @param string $encoding File encoding (see $Encoding).
+   * @param string $type File extension (MIME) type.
+   * @return bool
+   */
+  public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
+
+    if ( !@is_file($path) ) {
+      $this->SetError($this->Lang('file_access') . $path);
+      return false;
+    }
+
+    $filename = basename($path);
+    if ( $name == '' ) {
+      $name = $filename;
+    }
+
+    // Append to $attachment array
+    $this->attachment[] = array(
+      0 => $path,
+      1 => $filename,
+      2 => $name,
+      3 => $encoding,
+      4 => $type,
+      5 => false,  // isStringAttachment
+      6 => 'inline',
+      7 => $cid
+    );
+
+    return true;
+  }
+
+  public function AddStringEmbeddedImage($string, $cid, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') {
+    // Append to $attachment array
+    $this->attachment[] = array(
+      0 => $string,
+      1 => $filename,
+      2 => basename($filename),
+      3 => $encoding,
+      4 => $type,
+      5 => true,  // isStringAttachment
+      6 => 'inline',
+      7 => $cid
+    );
+  }
+
+  /**
+   * Returns true if an inline attachment is present.
+   * @access public
+   * @return bool
+   */
+  public function InlineImageExists() {
+    foreach($this->attachment as $attachment) {
+      if ($attachment[6] == 'inline') {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  public function AttachmentExists() {
+    foreach($this->attachment as $attachment) {
+      if ($attachment[6] == 'attachment') {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  public function AlternativeExists() {
+    return strlen($this->AltBody)>0;
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MESSAGE RESET
+  /////////////////////////////////////////////////
+
+  /**
+   * Clears all recipients assigned in the TO array.  Returns void.
+   * @return void
+   */
+  public function ClearAddresses() {
+    foreach($this->to as $to) {
+      unset($this->all_recipients[strtolower($to[0])]);
+    }
+    $this->to = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the CC array.  Returns void.
+   * @return void
+   */
+  public function ClearCCs() {
+    foreach($this->cc as $cc) {
+      unset($this->all_recipients[strtolower($cc[0])]);
+    }
+    $this->cc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the BCC array.  Returns void.
+   * @return void
+   */
+  public function ClearBCCs() {
+    foreach($this->bcc as $bcc) {
+      unset($this->all_recipients[strtolower($bcc[0])]);
+    }
+    $this->bcc = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the ReplyTo array.  Returns void.
+   * @return void
+   */
+  public function ClearReplyTos() {
+    $this->ReplyTo = array();
+  }
+
+  /**
+   * Clears all recipients assigned in the TO, CC and BCC
+   * array.  Returns void.
+   * @return void
+   */
+  public function ClearAllRecipients() {
+    $this->to = array();
+    $this->cc = array();
+    $this->bcc = array();
+    $this->all_recipients = array();
+  }
+
+  /**
+   * Clears all previously set filesystem, string, and binary
+   * attachments.  Returns void.
+   * @return void
+   */
+  public function ClearAttachments() {
+    $this->attachment = array();
+  }
+
+  /**
+   * Clears all custom headers.  Returns void.
+   * @return void
+   */
+  public function ClearCustomHeaders() {
+    $this->CustomHeader = array();
+  }
+
+  /////////////////////////////////////////////////
+  // CLASS METHODS, MISCELLANEOUS
+  /////////////////////////////////////////////////
+
+  /**
+   * Adds the error message to the error container.
+   * @access protected
+   * @return void
+   */
+  protected function SetError($msg) {
+    $this->error_count++;
+    if ($this->Mailer == 'smtp' and !is_null($this->smtp)) {
+      $lasterror = $this->smtp->getError();
+      if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) {
+        $msg .= '<p>' . $this->Lang('smtp_error') . $lasterror['smtp_msg'] . "</p>\n";
+      }
+    }
+    $this->ErrorInfo = $msg;
+  }
+
+  /**
+   * Returns the proper RFC 822 formatted date.
+   * @access public
+   * @return string
+   * @static
+   */
+  public static function RFCDate() {
+    $tz = date('Z');
+    $tzs = ($tz < 0) ? '-' : '+';
+    $tz = abs($tz);
+    $tz = (int)($tz/3600)*100 + ($tz%3600)/60;
+    $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz);
+
+    return $result;
+  }
+
+  /**
+   * Returns the server hostname or 'localhost.localdomain' if unknown.
+   * @access protected
+   * @return string
+   */
+  protected function ServerHostname() {
+    if (!empty($this->Hostname)) {
+      $result = $this->Hostname;
+    } elseif (isset($_SERVER['SERVER_NAME'])) {
+      $result = $_SERVER['SERVER_NAME'];
+    } else {
+      $result = 'localhost.localdomain';
+    }
+
+    return $result;
+  }
+
+  /**
+   * Returns a message in the appropriate language.
+   * @access protected
+   * @return string
+   */
+  protected function Lang($key) {
+    if(count($this->language) < 1) {
+      $this->SetLanguage('en'); // set the default language
+    }
+
+    if(isset($this->language[$key])) {
+      return $this->language[$key];
+    } else {
+      return 'Language string failed to load: ' . $key;
+    }
+  }
+
+  /**
+   * Returns true if an error occurred.
+   * @access public
+   * @return bool
+   */
+  public function IsError() {
+    return ($this->error_count > 0);
+  }
+
+  /**
+   * Changes every end of line from CR or LF to CRLF.
+   * @access public
+   * @return string
+   */
+  public function FixEOL($str) {
+    $str = str_replace("\r\n", "\n", $str);
+    $str = str_replace("\r", "\n", $str);
+    $str = str_replace("\n", $this->LE, $str);
+    return $str;
+  }
+
+  /**
+   * Adds a custom header.
+   * @access public
+   * @return void
+   */
+  public function AddCustomHeader($custom_header) {
+    $this->CustomHeader[] = explode(':', $custom_header, 2);
+  }
+
+  /**
+   * Evaluates the message and returns modifications for inline images and backgrounds
+   * @access public
+   * @return $message
+   */
+  public function MsgHTML($message, $basedir = '') {
+    preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
+    if(isset($images[2])) {
+      foreach($images[2] as $i => $url) {
+        // do not change urls for absolute images (thanks to corvuscorax)
+        if (!preg_match('#^[A-z]+://#', $url)) {
+          $filename = basename($url);
+          $directory = dirname($url);
+          ($directory == '.') ? $directory='': '';
+          $cid = 'cid:' . md5($filename);
+          $ext = pathinfo($filename, PATHINFO_EXTENSION);
+          $mimeType  = self::_mime_types($ext);
+          if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; }
+          if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; }
+          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) {
+            $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
+          }
+        }
+      }
+    }
+    $this->IsHTML(true);
+    $this->Body = $message;
+    $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
+    if (!empty($textMsg) && empty($this->AltBody)) {
+      $this->AltBody = html_entity_decode($textMsg);
+    }
+    if (empty($this->AltBody)) {
+      $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
+    }
+  }
+
+  /**
+   * Gets the MIME type of the embedded or inline image
+   * @param string File extension
+   * @access public
+   * @return string MIME type of ext
+   * @static
+   */
+  public static function _mime_types($ext = '') {
+    $mimes = array(
+      'hqx'   =>  'application/mac-binhex40',
+      'cpt'   =>  'application/mac-compactpro',
+      'doc'   =>  'application/msword',
+      'bin'   =>  'application/macbinary',
+      'dms'   =>  'application/octet-stream',
+      'lha'   =>  'application/octet-stream',
+      'lzh'   =>  'application/octet-stream',
+      'exe'   =>  'application/octet-stream',
+      'class' =>  'application/octet-stream',
+      'psd'   =>  'application/octet-stream',
+      'so'    =>  'application/octet-stream',
+      'sea'   =>  'application/octet-stream',
+      'dll'   =>  'application/octet-stream',
+      'oda'   =>  'application/oda',
+      'pdf'   =>  'application/pdf',
+      'ai'    =>  'application/postscript',
+      'eps'   =>  'application/postscript',
+      'ps'    =>  'application/postscript',
+      'smi'   =>  'application/smil',
+      'smil'  =>  'application/smil',
+      'mif'   =>  'application/vnd.mif',
+      'xls'   =>  'application/vnd.ms-excel',
+      'ppt'   =>  'application/vnd.ms-powerpoint',
+      'wbxml' =>  'application/vnd.wap.wbxml',
+      'wmlc'  =>  'application/vnd.wap.wmlc',
+      'dcr'   =>  'application/x-director',
+      'dir'   =>  'application/x-director',
+      'dxr'   =>  'application/x-director',
+      'dvi'   =>  'application/x-dvi',
+      'gtar'  =>  'application/x-gtar',
+      'php'   =>  'application/x-httpd-php',
+      'php4'  =>  'application/x-httpd-php',
+      'php3'  =>  'application/x-httpd-php',
+      'phtml' =>  'application/x-httpd-php',
+      'phps'  =>  'application/x-httpd-php-source',
+      'js'    =>  'application/x-javascript',
+      'swf'   =>  'application/x-shockwave-flash',
+      'sit'   =>  'application/x-stuffit',
+      'tar'   =>  'application/x-tar',
+      'tgz'   =>  'application/x-tar',
+      'xhtml' =>  'application/xhtml+xml',
+      'xht'   =>  'application/xhtml+xml',
+      'zip'   =>  'application/zip',
+      'mid'   =>  'audio/midi',
+      'midi'  =>  'audio/midi',
+      'mpga'  =>  'audio/mpeg',
+      'mp2'   =>  'audio/mpeg',
+      'mp3'   =>  'audio/mpeg',
+      'aif'   =>  'audio/x-aiff',
+      'aiff'  =>  'audio/x-aiff',
+      'aifc'  =>  'audio/x-aiff',
+      'ram'   =>  'audio/x-pn-realaudio',
+      'rm'    =>  'audio/x-pn-realaudio',
+      'rpm'   =>  'audio/x-pn-realaudio-plugin',
+      'ra'    =>  'audio/x-realaudio',
+      'rv'    =>  'video/vnd.rn-realvideo',
+      'wav'   =>  'audio/x-wav',
+      'bmp'   =>  'image/bmp',
+      'gif'   =>  'image/gif',
+      'jpeg'  =>  'image/jpeg',
+      'jpg'   =>  'image/jpeg',
+      'jpe'   =>  'image/jpeg',
+      'png'   =>  'image/png',
+      'tiff'  =>  'image/tiff',
+      'tif'   =>  'image/tiff',
+      'css'   =>  'text/css',
+      'html'  =>  'text/html',
+      'htm'   =>  'text/html',
+      'shtml' =>  'text/html',
+      'txt'   =>  'text/plain',
+      'text'  =>  'text/plain',
+      'log'   =>  'text/plain',
+      'rtx'   =>  'text/richtext',
+      'rtf'   =>  'text/rtf',
+      'xml'   =>  'text/xml',
+      'xsl'   =>  'text/xml',
+      'mpeg'  =>  'video/mpeg',
+      'mpg'   =>  'video/mpeg',
+      'mpe'   =>  'video/mpeg',
+      'qt'    =>  'video/quicktime',
+      'mov'   =>  'video/quicktime',
+      'avi'   =>  'video/x-msvideo',
+      'movie' =>  'video/x-sgi-movie',
+      'doc'   =>  'application/msword',
+      'word'  =>  'application/msword',
+      'xl'    =>  'application/excel',
+      'eml'   =>  'message/rfc822'
+    );
+    return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
+  }
+
+  /**
+  * Set (or reset) Class Objects (variables)
+  *
+  * Usage Example:
+  * $page->set('X-Priority', '3');
+  *
+  * @access public
+  * @param string $name Parameter Name
+  * @param mixed $value Parameter Value
+  * NOTE: will not work with arrays, there are no arrays to set/reset
+  * @todo Should this not be using __set() magic function?
+  */
+  public function set($name, $value = '') {
+    try {
+      if (isset($this->$name) ) {
+        $this->$name = $value;
+      } else {
+        throw new phpmailerException($this->Lang('variable_set') . $name, self::STOP_CRITICAL);
+      }
+    } catch (Exception $e) {
+      $this->SetError($e->getMessage());
+      if ($e->getCode() == self::STOP_CRITICAL) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Strips newlines to prevent header injection.
+   * @access public
+   * @param string $str String
+   * @return string
+   */
+  public function SecureHeader($str) {
+    $str = str_replace("\r", '', $str);
+    $str = str_replace("\n", '', $str);
+    return trim($str);
+  }
+
+  /**
+   * Set the private key file and password to sign the message.
+   *
+   * @access public
+   * @param string $key_filename Parameter File Name
+   * @param string $key_pass Password for private key
+   */
+  public function Sign($cert_filename, $key_filename, $key_pass) {
+    $this->sign_cert_file = $cert_filename;
+    $this->sign_key_file = $key_filename;
+    $this->sign_key_pass = $key_pass;
+  }
+
+  /**
+   * Set the private key file and password to sign the message.
+   *
+   * @access public
+   * @param string $key_filename Parameter File Name
+   * @param string $key_pass Password for private key
+   */
+  public function DKIM_QP($txt) {
+    $tmp = '';
+    $line = '';
+    for ($i = 0; $i < strlen($txt); $i++) {
+      $ord = ord($txt[$i]);
+      if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) {
+        $line .= $txt[$i];
+      } else {
+        $line .= "=".sprintf("%02X", $ord);
+      }
+    }
+    return $line;
+  }
+
+  /**
+   * Generate DKIM signature
+   *
+   * @access public
+   * @param string $s Header
+   */
+  public function DKIM_Sign($s) {
+    $privKeyStr = file_get_contents($this->DKIM_private);
+    if ($this->DKIM_passphrase != '') {
+      $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
+    } else {
+      $privKey = $privKeyStr;
+    }
+    if (openssl_sign($s, $signature, $privKey)) {
+      return base64_encode($signature);
+    }
+  }
+
+  /**
+   * Generate DKIM Canonicalization Header
+   *
+   * @access public
+   * @param string $s Header
+   */
+  public function DKIM_HeaderC($s) {
+    $s = preg_replace("/\r\n\s+/", " ", $s);
+    $lines = explode("\r\n", $s);
+    foreach ($lines as $key => $line) {
+      list($heading, $value) = explode(":", $line, 2);
+      $heading = strtolower($heading);
+      $value = preg_replace("/\s+/", " ", $value) ; // Compress useless spaces
+      $lines[$key] = $heading.":".trim($value) ; // Don't forget to remove WSP around the value
+    }
+    $s = implode("\r\n", $lines);
+    return $s;
+  }
+
+  /**
+   * Generate DKIM Canonicalization Body
+   *
+   * @access public
+   * @param string $body Message Body
+   */
+  public function DKIM_BodyC($body) {
+    if ($body == '') return "\r\n";
+    // stabilize line endings
+    $body = str_replace("\r\n", "\n", $body);
+    $body = str_replace("\n", "\r\n", $body);
+    // END stabilize line endings
+    while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
+      $body = substr($body, 0, strlen($body) - 2);
+    }
+    return $body;
+  }
+
+  /**
+   * Create the DKIM header, body, as new header
+   *
+   * @access public
+   * @param string $headers_line Header lines
+   * @param string $subject Subject
+   * @param string $body Body
+   */
+  public function DKIM_Add($headers_line, $subject, $body) {
+    $DKIMsignatureType    = 'rsa-sha1'; // Signature & hash algorithms
+    $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
+    $DKIMquery            = 'dns/txt'; // Query method
+    $DKIMtime             = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
+    $subject_header       = "Subject: $subject";
+    $headers              = explode($this->LE, $headers_line);
+    foreach($headers as $header) {
+      if (strpos($header, 'From:') === 0) {
+        $from_header = $header;
+      } elseif (strpos($header, 'To:') === 0) {
+        $to_header = $header;
+      }
+    }
+    $from     = str_replace('|', '=7C', $this->DKIM_QP($from_header));
+    $to       = str_replace('|', '=7C', $this->DKIM_QP($to_header));
+    $subject  = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable
+    $body     = $this->DKIM_BodyC($body);
+    $DKIMlen  = strlen($body) ; // Length of body
+    $DKIMb64  = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body
+    $ident    = ($this->DKIM_identity == '')? '' : " i=" . $this->DKIM_identity . ";";
+    $dkimhdrs = "DKIM-Signature: v=1; a=" . $DKIMsignatureType . "; q=" . $DKIMquery . "; l=" . $DKIMlen . "; s=" . $this->DKIM_selector . ";\r\n".
+                "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n".
+                "\th=From:To:Subject;\r\n".
+                "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n".
+                "\tz=$from\r\n".
+                "\t|$to\r\n".
+                "\t|$subject;\r\n".
+                "\tbh=" . $DKIMb64 . ";\r\n".
+                "\tb=";
+    $toSign   = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs);
+    $signed   = $this->DKIM_Sign($toSign);
+    return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n";
+  }
+
+  protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body) {
+    if (!empty($this->action_function) && function_exists($this->action_function)) {
+      $params = array($isSent, $to, $cc, $bcc, $subject, $body);
+      call_user_func_array($this->action_function, $params);
+    }
+  }
+}
+
+class phpmailerException extends Exception {
+  public function errorMessage() {
+    $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />\n";
+    return $errorMsg;
+  }
+}
+?>

Property changes on: tags/2.8.3/wb/include/phpmailer/class.phpmailer.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/class.pop3.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/class.pop3.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/class.pop3.php	(revision 1610)
@@ -0,0 +1,410 @@
+<?php
+/*~ class.pop3.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 5.2                                                            |
+|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
+| ------------------------------------------------------------------------- |
+|     Admin: Jim Jagielski (project admininistrator)                        |
+|   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
+|          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
+|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
+|   Founder: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved.               |
+| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+'---------------------------------------------------------------------------'
+*/
+
+/**
+ * PHPMailer - PHP POP Before SMTP Authentication Class
+ * NOTE: Designed for use with PHP version 5 and up
+ * @package PHPMailer
+ * @author Andy Prevost
+ * @author Marcus Bointon
+ * @author Jim Jagielski
+ * @copyright 2010 - 2011 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
+ * @version $Id: class.pop3.php 450 2010-06-23 16:46:33Z coolbru $
+ */
+
+/**
+ * POP Before SMTP Authentication Class
+ * Version 5.2.0
+ *
+ * Author: Richard Davey (rich@corephp.co.uk)
+ * Modifications: Andy Prevost
+ * License: LGPL, see PHPMailer License
+ *
+ * Specifically for PHPMailer to allow POP before SMTP authentication.
+ * Does not yet work with APOP - if you have an APOP account, contact Richard Davey
+ * and we can test changes to this script.
+ *
+ * This class is based on the structure of the SMTP class originally authored by Chris Ryan
+ *
+ * This class is rfc 1939 compliant and implements all the commands
+ * required for POP3 connection, authentication and disconnection.
+ *
+ * @package PHPMailer
+ * @author Richard Davey
+ */
+
+class POP3 {
+  /**
+   * Default POP3 port
+   * @var int
+   */
+  public $POP3_PORT = 110;
+
+  /**
+   * Default Timeout
+   * @var int
+   */
+  public $POP3_TIMEOUT = 30;
+
+  /**
+   * POP3 Carriage Return + Line Feed
+   * @var string
+   */
+  public $CRLF = "\r\n";
+
+  /**
+   * Displaying Debug warnings? (0 = now, 1+ = yes)
+   * @var int
+   */
+  public $do_debug = 2;
+
+  /**
+   * POP3 Mail Server
+   * @var string
+   */
+  public $host;
+
+  /**
+   * POP3 Port
+   * @var int
+   */
+  public $port;
+
+  /**
+   * POP3 Timeout Value
+   * @var int
+   */
+  public $tval;
+
+  /**
+   * POP3 Username
+   * @var string
+   */
+  public $username;
+
+  /**
+   * POP3 Password
+   * @var string
+   */
+  public $password;
+
+  /**
+   * Sets the POP3 PHPMailer Version number
+   * @var string
+   */
+  public $Version         = '5.2';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE AND PROTECTED
+  /////////////////////////////////////////////////
+
+  private $pop_conn;
+  private $connected;
+  private $error;     //  Error log array
+
+  /**
+   * Constructor, sets the initial values
+   * @access public
+   * @return POP3
+   */
+  public function __construct() {
+    $this->pop_conn  = 0;
+    $this->connected = false;
+    $this->error     = null;
+  }
+
+  /**
+   * Combination of public events - connect, login, disconnect
+   * @access public
+   * @param string $host
+   * @param integer $port
+   * @param integer $tval
+   * @param string $username
+   * @param string $password
+   */
+  public function Authorise ($host, $port = false, $tval = false, $username, $password, $debug_level = 0) {
+    $this->host = $host;
+
+    //  If no port value is passed, retrieve it
+    if ($port == false) {
+      $this->port = $this->POP3_PORT;
+    } else {
+      $this->port = $port;
+    }
+
+    //  If no port value is passed, retrieve it
+    if ($tval == false) {
+      $this->tval = $this->POP3_TIMEOUT;
+    } else {
+      $this->tval = $tval;
+    }
+
+    $this->do_debug = $debug_level;
+    $this->username = $username;
+    $this->password = $password;
+
+    //  Refresh the error log
+    $this->error = null;
+
+    //  Connect
+    $result = $this->Connect($this->host, $this->port, $this->tval);
+
+    if ($result) {
+      $login_result = $this->Login($this->username, $this->password);
+
+      if ($login_result) {
+        $this->Disconnect();
+
+        return true;
+      }
+
+    }
+
+    //  We need to disconnect regardless if the login succeeded
+    $this->Disconnect();
+
+    return false;
+  }
+
+  /**
+   * Connect to the POP3 server
+   * @access public
+   * @param string $host
+   * @param integer $port
+   * @param integer $tval
+   * @return boolean
+   */
+  public function Connect ($host, $port = false, $tval = 30) {
+    //  Are we already connected?
+    if ($this->connected) {
+      return true;
+    }
+
+    /*
+    On Windows this will raise a PHP Warning error if the hostname doesn't exist.
+    Rather than supress it with @fsockopen, let's capture it cleanly instead
+    */
+
+    set_error_handler(array(&$this, 'catchWarning'));
+
+    //  Connect to the POP3 server
+    $this->pop_conn = fsockopen($host,    //  POP3 Host
+                  $port,    //  Port #
+                  $errno,   //  Error Number
+                  $errstr,  //  Error Message
+                  $tval);   //  Timeout (seconds)
+
+    //  Restore the error handler
+    restore_error_handler();
+
+    //  Does the Error Log now contain anything?
+    if ($this->error && $this->do_debug >= 1) {
+      $this->displayErrors();
+    }
+
+    //  Did we connect?
+    if ($this->pop_conn == false) {
+      //  It would appear not...
+      $this->error = array(
+        'error' => "Failed to connect to server $host on port $port",
+        'errno' => $errno,
+        'errstr' => $errstr
+      );
+
+      if ($this->do_debug >= 1) {
+        $this->displayErrors();
+      }
+
+      return false;
+    }
+
+    //  Increase the stream time-out
+
+    //  Check for PHP 4.3.0 or later
+    if (version_compare(phpversion(), '5.0.0', 'ge')) {
+      stream_set_timeout($this->pop_conn, $tval, 0);
+    } else {
+      //  Does not work on Windows
+      if (substr(PHP_OS, 0, 3) !== 'WIN') {
+        socket_set_timeout($this->pop_conn, $tval, 0);
+      }
+    }
+
+    //  Get the POP3 server response
+    $pop3_response = $this->getResponse();
+
+    //  Check for the +OK
+    if ($this->checkResponse($pop3_response)) {
+    //  The connection is established and the POP3 server is talking
+    $this->connected = true;
+      return true;
+    }
+
+  }
+
+  /**
+   * Login to the POP3 server (does not support APOP yet)
+   * @access public
+   * @param string $username
+   * @param string $password
+   * @return boolean
+   */
+  public function Login ($username = '', $password = '') {
+    if ($this->connected == false) {
+      $this->error = 'Not connected to POP3 server';
+
+      if ($this->do_debug >= 1) {
+        $this->displayErrors();
+      }
+    }
+
+    if (empty($username)) {
+      $username = $this->username;
+    }
+
+    if (empty($password)) {
+      $password = $this->password;
+    }
+
+    $pop_username = "USER $username" . $this->CRLF;
+    $pop_password = "PASS $password" . $this->CRLF;
+
+    //  Send the Username
+    $this->sendString($pop_username);
+    $pop3_response = $this->getResponse();
+
+    if ($this->checkResponse($pop3_response)) {
+      //  Send the Password
+      $this->sendString($pop_password);
+      $pop3_response = $this->getResponse();
+
+      if ($this->checkResponse($pop3_response)) {
+        return true;
+      } else {
+        return false;
+      }
+    } else {
+      return false;
+    }
+  }
+
+  /**
+   * Disconnect from the POP3 server
+   * @access public
+   */
+  public function Disconnect () {
+    $this->sendString('QUIT');
+
+    fclose($this->pop_conn);
+  }
+
+  /////////////////////////////////////////////////
+  //  Private Methods
+  /////////////////////////////////////////////////
+
+  /**
+   * Get the socket response back.
+   * $size is the maximum number of bytes to retrieve
+   * @access private
+   * @param integer $size
+   * @return string
+   */
+  private function getResponse ($size = 128) {
+    $pop3_response = fgets($this->pop_conn, $size);
+
+    return $pop3_response;
+  }
+
+  /**
+   * Send a string down the open socket connection to the POP3 server
+   * @access private
+   * @param string $string
+   * @return integer
+   */
+  private function sendString ($string) {
+    $bytes_sent = fwrite($this->pop_conn, $string, strlen($string));
+
+    return $bytes_sent;
+  }
+
+  /**
+   * Checks the POP3 server response for +OK or -ERR
+   * @access private
+   * @param string $string
+   * @return boolean
+   */
+  private function checkResponse ($string) {
+    if (substr($string, 0, 3) !== '+OK') {
+      $this->error = array(
+        'error' => "Server reported an error: $string",
+        'errno' => 0,
+        'errstr' => ''
+      );
+
+      if ($this->do_debug >= 1) {
+        $this->displayErrors();
+      }
+
+      return false;
+    } else {
+      return true;
+    }
+
+  }
+
+  /**
+   * If debug is enabled, display the error message array
+   * @access private
+   */
+  private function displayErrors () {
+    echo '<pre>';
+
+    foreach ($this->error as $single_error) {
+      print_r($single_error);
+    }
+
+    echo '</pre>';
+  }
+
+  /**
+   * Takes over from PHP for the socket warning handler
+   * @access private
+   * @param integer $errno
+   * @param string $errstr
+   * @param string $errfile
+   * @param integer $errline
+   */
+  private function catchWarning ($errno, $errstr, $errfile, $errline) {
+    $this->error[] = array(
+      'error' => "Connecting to the POP3 server raised a PHP warning: ",
+      'errno' => $errno,
+      'errstr' => $errstr
+    );
+  }
+
+  //  End of class
+}
+?>
Index: tags/2.8.3/wb/include/phpmailer/README
===================================================================
--- tags/2.8.3/wb/include/phpmailer/README	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/README	(revision 1610)
@@ -0,0 +1,218 @@
+/*******************************************************************
+* The http://phpmailer.codeworxtech.com/ website now carries a few *
+* advertisements through the Google Adsense network. Please visit  *
+* the advertiser sites and help us offset some of our costs.       *
+* Thanks ....                                                      *
+********************************************************************/
+
+PHPMailer
+Full Featured Email Transfer Class for PHP
+==========================================
+
+Version 5.0.0 (April 02, 2009)
+
+With the release of this version, we are initiating a new version numbering
+system to differentiate from the PHP4 version of PHPMailer.
+
+Most notable in this release is fully object oriented code.
+
+We now have available the PHPDocumentor (phpdocs) documentation. This is
+separate from the regular download to keep file sizes down. Please see the
+download area of http://phpmailer.codeworxtech.com.
+
+We also have created a new test script (see /test_script) that you can use
+right out of the box. Copy the /test_script folder directly to your server (in
+the same structure ... with class.phpmailer.php and class.smtp.php in the
+folder above it. Then launch the test script with:
+http://www.yourdomain.com/phpmailer/test_script/index.php
+from this one script, you can test your server settings for mail(), sendmail (or
+qmail), and SMTP. This will email you a sample email (using contents.html for
+the email body) and two attachments. One of the attachments is used as an inline
+image to demonstrate how PHPMailer will automatically detect if attachments are
+the same source as inline graphics and only include one version. Once you click
+the Submit button, the results will be displayed including any SMTP debug
+information and send status. We will also display a version of the script that
+you can cut and paste to include in your projects. Enjoy!
+
+Version 2.3 (November 08, 2008)
+
+We have removed the /phpdoc from the downloads. All documentation is now on
+the http://phpmailer.codeworxtech.com website.
+
+The phpunit.php has been updated to support PHP5.
+
+For all other changes and notes, please see the changelog.
+
+Donations are accepted at PayPal with our id "paypal@worxteam.com".
+
+Version 2.2 (July 15 2008)
+
+- see the changelog.
+
+Version 2.1 (June 04 2008)
+
+With this release, we are announcing that the development of PHPMailer for PHP5
+will be our focus from this date on. We have implemented all the enhancements
+and fixes from the latest release of PHPMailer for PHP4.
+
+Far more important, though, is that this release of PHPMailer (v2.1) is
+fully tested with E_STRICT error checking enabled.
+
+** NOTE: WE HAVE A NEW LANGUAGE VARIABLE FOR DIGITALLY SIGNED S/MIME EMAILS.
+   IF YOU CAN HELP WITH LANGUAGES OTHER THAN ENGLISH AND SPANISH, IT WOULD BE
+   APPRECIATED.
+
+We have now added S/MIME functionality (ability to digitally sign emails).
+BIG THANKS TO "sergiocambra" for posting this patch back in November 2007.
+The "Signed Emails" functionality adds the Sign method to pass the private key
+filename and the password to read it, and then email will be sent with
+content-type multipart/signed and with the digital signature attached.
+
+A quick note on E_STRICT:
+
+- In about half the test environments the development version was subjected
+  to, an error was thrown for the date() functions (used at line 1565 and 1569).
+  This is NOT a PHPMailer error, it is the result of an incorrectly configured
+  PHP5 installation. The fix is to modify your 'php.ini' file and include the
+  date.timezone = America/New York
+  directive, (for your own server timezone)
+- If you do get this error, and are unable to access your php.ini file, there is
+  a workaround. In your PHP script, add
+  date_default_timezone_set('America/Toronto');
+
+  * do NOT try to use
+  $myVar = date_default_timezone_get();
+  as a test, it will throw an error.
+
+We have also included more example files to show the use of "sendmail", "mail()",
+"smtp", and "gmail".
+
+We are also looking for more programmers to join the volunteer development team.
+If you have an interest in this, please let us know.
+
+Enjoy!
+
+
+Version 2.1.0beta1 & beta2
+
+please note, this is BETA software
+** DO NOT USE THIS IN PRODUCTION OR LIVE PROJECTS
+INTENDED STRICTLY FOR TESTING
+
+** NOTE:
+
+As of November 2007, PHPMailer has a new project team headed by industry
+veteran Andy Prevost (codeworxtech). The first release in more than two
+years will focus on fixes, adding ease-of-use enhancements, provide
+basic compatibility with PHP4 and PHP5 using PHP5 backwards compatibility
+features. A new release is planned before year-end 2007 that will provide
+full compatiblity with PHP4 and PHP5, as well as more bug fixes.
+
+We are looking for project developers to assist in restoring PHPMailer to
+its leadership position. Our goals are to simplify use of PHPMailer, provide
+good documentation and examples, and retain backward compatibility to level
+1.7.3 standards.
+
+If you are interested in helping out, visit http://sourceforge.net/projects/phpmailer
+and indicate your interest.
+
+**
+
+http://phpmailer.sourceforge.net/
+
+This software is licenced under the LGPL.  Please read LICENSE for information on the
+software availability and distribution.
+
+Class Features:
+- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs
+- Redundant SMTP servers
+- Multipart/alternative emails for mail clients that do not read HTML email
+- Support for 8bit, base64, binary, and quoted-printable encoding
+- Uses the same methods as the very popular AspEmail active server (COM) component
+- SMTP authentication
+- Native language support
+- Word wrap, and more!
+
+Why you might need it:
+
+Many PHP developers utilize email in their code.  The only PHP function
+that supports this is the mail() function.  However, it does not expose
+any of the popular features that many email clients use nowadays like
+HTML-based emails and attachments. There are two proprietary
+development tools out there that have all the functionality built into
+easy to use classes: AspEmail(tm) and AspMail.  Both of these
+programs are COM components only available on Windows.  They are also a
+little pricey for smaller projects.
+
+Since I do Linux development I�ve missed these tools for my PHP coding.
+So I built a version myself that implements the same methods (object
+calls) that the Windows-based components do. It is open source and the
+LGPL license allows you to place the class in your proprietary PHP
+projects.
+
+
+Installation:
+
+Copy class.phpmailer.php into your php.ini include_path. If you are
+using the SMTP mailer then place class.smtp.php in your path as well.
+In the language directory you will find several files like
+phpmailer.lang-en.php.  If you look right before the .php extension
+that there are two letters.  These represent the language type of the
+translation file.  For instance "en" is the English file and "br" is
+the Portuguese file.  Chose the file that best fits with your language
+and place it in the PHP include path.  If your language is English
+then you have nothing more to do.  If it is a different language then
+you must point PHPMailer to the correct translation.  To do this, call
+the PHPMailer SetLanguage method like so:
+
+// To load the Portuguese version
+$mail->SetLanguage("br", "/optional/path/to/language/directory/");
+
+That's it.  You should now be ready to use PHPMailer!
+
+
+A Simple Example:
+
+<?php
+require("class.phpmailer.php");
+
+$mail = new PHPMailer();
+
+$mail->IsSMTP();                                      // set mailer to use SMTP
+$mail->Host = "smtp1.example.com;smtp2.example.com";  // specify main and backup server
+$mail->SMTPAuth = true;     // turn on SMTP authentication
+$mail->Username = "jswan";  // SMTP username
+$mail->Password = "secret"; // SMTP password
+
+$mail->From = "from@example.com";
+$mail->FromName = "Mailer";
+$mail->AddAddress("josh@example.net", "Josh Adams");
+$mail->AddAddress("ellen@example.com");                  // name is optional
+$mail->AddReplyTo("info@example.com", "Information");
+
+$mail->WordWrap = 50;                                 // set word wrap to 50 characters
+$mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
+$mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
+$mail->IsHTML(true);                                  // set email format to HTML
+
+$mail->Subject = "Here is the subject";
+$mail->Body    = "This is the HTML message body <b>in bold!</b>";
+$mail->AltBody = "This is the body in plain text for non-HTML mail clients";
+
+if(!$mail->Send())
+{
+   echo "Message could not be sent. <p>";
+   echo "Mailer Error: " . $mail->ErrorInfo;
+   exit;
+}
+
+echo "Message has been sent";
+?>
+
+CHANGELOG
+
+See ChangeLog.txt
+
+Download: http://sourceforge.net/project/showfiles.php?group_id=26031
+
+Andy Prevost

Property changes on: tags/2.8.3/wb/include/phpmailer/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/class.smtp.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/class.smtp.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/class.smtp.php	(revision 1610)
@@ -0,0 +1,817 @@
+<?php
+/*~ class.smtp.php
+.---------------------------------------------------------------------------.
+|  Software: PHPMailer - PHP email class                                    |
+|   Version: 5.2                                                            |
+|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
+| ------------------------------------------------------------------------- |
+|     Admin: Jim Jagielski (project admininistrator)                        |
+|   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
+|          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
+|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
+|   Founder: Brent R. Matzelle (original founder)                           |
+| Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved.               |
+| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
+| Copyright (c) 2001-2003, Brent R. Matzelle                                |
+| ------------------------------------------------------------------------- |
+|   License: Distributed under the Lesser General Public License (LGPL)     |
+|            http://www.gnu.org/copyleft/lesser.html                        |
+| This program is distributed in the hope that it will be useful - WITHOUT  |
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
+| FITNESS FOR A PARTICULAR PURPOSE.                                         |
+'---------------------------------------------------------------------------'
+*/
+
+/**
+ * PHPMailer - PHP SMTP email transport class
+ * NOTE: Designed for use with PHP version 5 and up
+ * @package PHPMailer
+ * @author Andy Prevost
+ * @author Marcus Bointon
+ * @copyright 2004 - 2008 Andy Prevost
+ * @author Jim Jagielski
+ * @copyright 2010 - 2011 Jim Jagielski
+ * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
+ * @version $Id: class.smtp.php 450 2010-06-23 16:46:33Z coolbru $
+ */
+
+/**
+ * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP
+ * commands except TURN which will always return a not implemented
+ * error. SMTP also provides some utility methods for sending mail
+ * to an SMTP server.
+ * original author: Chris Ryan
+ */
+
+class SMTP {
+  /**
+   *  SMTP server port
+   *  @var int
+   */
+  public $SMTP_PORT = 25;
+
+  /**
+   *  SMTP reply line ending
+   *  @var string
+   */
+  public $CRLF = "\r\n";
+
+  /**
+   *  Sets whether debugging is turned on
+   *  @var bool
+   */
+  public $do_debug;       // the level of debug to perform
+
+  /**
+   *  Sets VERP use on/off (default is off)
+   *  @var bool
+   */
+  public $do_verp = false;
+
+  /**
+   * Sets the SMTP PHPMailer Version number
+   * @var string
+   */
+  public $Version         = '5.2';
+
+  /////////////////////////////////////////////////
+  // PROPERTIES, PRIVATE AND PROTECTED
+  /////////////////////////////////////////////////
+
+  private $smtp_conn; // the socket to the server
+  private $error;     // error if any on the last call
+  private $helo_rply; // the reply the server sent to us for HELO
+
+  /**
+   * Initialize the class so that the data is in a known state.
+   * @access public
+   * @return void
+   */
+  public function __construct() {
+    $this->smtp_conn = 0;
+    $this->error = null;
+    $this->helo_rply = null;
+
+    $this->do_debug = 0;
+  }
+
+  /////////////////////////////////////////////////
+  // CONNECTION FUNCTIONS
+  /////////////////////////////////////////////////
+
+  /**
+   * Connect to the server specified on the port specified.
+   * If the port is not specified use the default SMTP_PORT.
+   * If tval is specified then a connection will try and be
+   * established with the server for that number of seconds.
+   * If tval is not specified the default is 30 seconds to
+   * try on the connection.
+   *
+   * SMTP CODE SUCCESS: 220
+   * SMTP CODE FAILURE: 421
+   * @access public
+   * @return bool
+   */
+  public function Connect($host, $port = 0, $tval = 30) {
+    // set the error val to null so there is no confusion
+    $this->error = null;
+
+    // make sure we are __not__ connected
+    if($this->connected()) {
+      // already connected, generate error
+      $this->error = array("error" => "Already connected to a server");
+      return false;
+    }
+
+    if(empty($port)) {
+      $port = $this->SMTP_PORT;
+    }
+
+    // connect to the smtp server
+    $this->smtp_conn = @fsockopen($host,    // the host of the server
+                                 $port,    // the port to use
+                                 $errno,   // error number if any
+                                 $errstr,  // error message if any
+                                 $tval);   // give up after ? secs
+    // verify we connected properly
+    if(empty($this->smtp_conn)) {
+      $this->error = array("error" => "Failed to connect to server",
+                           "errno" => $errno,
+                           "errstr" => $errstr);
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    // SMTP server can take longer to respond, give longer timeout for first read
+    // Windows does not have support for this timeout function
+    if(substr(PHP_OS, 0, 3) != "WIN")
+     socket_set_timeout($this->smtp_conn, $tval, 0);
+
+    // get any announcement
+    $announce = $this->get_lines();
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />';
+    }
+
+    return true;
+  }
+
+  /**
+   * Initiate a TLS communication with the server.
+   *
+   * SMTP CODE 220 Ready to start TLS
+   * SMTP CODE 501 Syntax error (no parameters allowed)
+   * SMTP CODE 454 TLS not available due to temporary reason
+   * @access public
+   * @return bool success
+   */
+  public function StartTLS() {
+    $this->error = null; # to avoid confusion
+
+    if(!$this->connected()) {
+      $this->error = array("error" => "Called StartTLS() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"STARTTLS" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 220) {
+      $this->error =
+         array("error"     => "STARTTLS not accepted from server",
+               "smtp_code" => $code,
+               "smtp_msg"  => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    // Begin encrypted connection
+    if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Performs SMTP authentication.  Must be run after running the
+   * Hello() method.  Returns true if successfully authenticated.
+   * @access public
+   * @return bool
+   */
+  public function Authenticate($username, $password) {
+    // Start authentication
+    fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "AUTH not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    // Send encoded username
+    fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 334) {
+      $this->error =
+        array("error" => "Username not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    // Send encoded password
+    fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($code != 235) {
+      $this->error =
+        array("error" => "Password not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Returns true if connected to a server otherwise false
+   * @access public
+   * @return bool
+   */
+  public function Connected() {
+    if(!empty($this->smtp_conn)) {
+      $sock_status = socket_get_status($this->smtp_conn);
+      if($sock_status["eof"]) {
+        // the socket is valid but we are not connected
+        if($this->do_debug >= 1) {
+            echo "SMTP -> NOTICE:" . $this->CRLF . "EOF caught while checking if connected";
+        }
+        $this->Close();
+        return false;
+      }
+      return true; // everything looks good
+    }
+    return false;
+  }
+
+  /**
+   * Closes the socket and cleans up the state of the class.
+   * It is not considered good to use this function without
+   * first trying to use QUIT.
+   * @access public
+   * @return void
+   */
+  public function Close() {
+    $this->error = null; // so there is no confusion
+    $this->helo_rply = null;
+    if(!empty($this->smtp_conn)) {
+      // close the connection and cleanup
+      fclose($this->smtp_conn);
+      $this->smtp_conn = 0;
+    }
+  }
+
+  /////////////////////////////////////////////////
+  // SMTP COMMANDS
+  /////////////////////////////////////////////////
+
+  /**
+   * Issues a data command and sends the msg_data to the server
+   * finializing the mail transaction. $msg_data is the message
+   * that is to be send with the headers. Each header needs to be
+   * on a single line followed by a <CRLF> with the message headers
+   * and the message body being seperated by and additional <CRLF>.
+   *
+   * Implements rfc 821: DATA <CRLF>
+   *
+   * SMTP CODE INTERMEDIATE: 354
+   *     [data]
+   *     <CRLF>.<CRLF>
+   *     SMTP CODE SUCCESS: 250
+   *     SMTP CODE FAILURE: 552,554,451,452
+   * SMTP CODE FAILURE: 451,554
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  public function Data($msg_data) {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Data() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"DATA" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 354) {
+      $this->error =
+        array("error" => "DATA command not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    /* the server is ready to accept data!
+     * according to rfc 821 we should not send more than 1000
+     * including the CRLF
+     * characters on a single line so we will break the data up
+     * into lines by \r and/or \n then if needed we will break
+     * each of those into smaller lines to fit within the limit.
+     * in addition we will be looking for lines that start with
+     * a period '.' and append and additional period '.' to that
+     * line. NOTE: this does not count towards limit.
+     */
+
+    // normalize the line breaks so we know the explode works
+    $msg_data = str_replace("\r\n","\n",$msg_data);
+    $msg_data = str_replace("\r","\n",$msg_data);
+    $lines = explode("\n",$msg_data);
+
+    /* we need to find a good way to determine is headers are
+     * in the msg_data or if it is a straight msg body
+     * currently I am assuming rfc 822 definitions of msg headers
+     * and if the first field of the first line (':' sperated)
+     * does not contain a space then it _should_ be a header
+     * and we can process all lines before a blank "" line as
+     * headers.
+     */
+
+    $field = substr($lines[0],0,strpos($lines[0],":"));
+    $in_headers = false;
+    if(!empty($field) && !strstr($field," ")) {
+      $in_headers = true;
+    }
+
+    $max_line_length = 998; // used below; set here for ease in change
+
+    while(list(,$line) = @each($lines)) {
+      $lines_out = null;
+      if($line == "" && $in_headers) {
+        $in_headers = false;
+      }
+      // ok we need to break this line up into several smaller lines
+      while(strlen($line) > $max_line_length) {
+        $pos = strrpos(substr($line,0,$max_line_length)," ");
+
+        // Patch to fix DOS attack
+        if(!$pos) {
+          $pos = $max_line_length - 1;
+          $lines_out[] = substr($line,0,$pos);
+          $line = substr($line,$pos);
+        } else {
+          $lines_out[] = substr($line,0,$pos);
+          $line = substr($line,$pos + 1);
+        }
+
+        /* if processing headers add a LWSP-char to the front of new line
+         * rfc 822 on long msg headers
+         */
+        if($in_headers) {
+          $line = "\t" . $line;
+        }
+      }
+      $lines_out[] = $line;
+
+      // send the lines to the server
+      while(list(,$line_out) = @each($lines_out)) {
+        if(strlen($line_out) > 0)
+        {
+          if(substr($line_out, 0, 1) == ".") {
+            $line_out = "." . $line_out;
+          }
+        }
+        fputs($this->smtp_conn,$line_out . $this->CRLF);
+      }
+    }
+
+    // message data has been sent
+    fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "DATA not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the HELO command to the smtp server.
+   * This makes sure that we and the server are in
+   * the same known state.
+   *
+   * Implements from rfc 821: HELO <SP> <domain> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500, 501, 504, 421
+   * @access public
+   * @return bool
+   */
+  public function Hello($host = '') {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+            "error" => "Called Hello() without being connected");
+      return false;
+    }
+
+    // if hostname for HELO was not specified send default
+    if(empty($host)) {
+      // determine appropriate default to send to server
+      $host = "localhost";
+    }
+
+    // Send extended hello first (RFC 2821)
+    if(!$this->SendHello("EHLO", $host)) {
+      if(!$this->SendHello("HELO", $host)) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  /**
+   * Sends a HELO/EHLO command.
+   * @access private
+   * @return bool
+   */
+  private function SendHello($hello, $host) {
+    fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER: " . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => $hello . " not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    $this->helo_rply = $rply;
+
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command.
+   *
+   * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,421
+   * @access public
+   * @return bool
+   */
+  public function Mail($from) {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Mail() without being connected");
+      return false;
+    }
+
+    $useVerp = ($this->do_verp ? "XVERP" : "");
+    fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "MAIL not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the quit command to the server and then closes the socket
+   * if there is no error or the $close_on_error argument is true.
+   *
+   * Implements from rfc 821: QUIT <CRLF>
+   *
+   * SMTP CODE SUCCESS: 221
+   * SMTP CODE ERROR  : 500
+   * @access public
+   * @return bool
+   */
+  public function Quit($close_on_error = true) {
+    $this->error = null; // so there is no confusion
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Quit() without being connected");
+      return false;
+    }
+
+    // send the quit command to the server
+    fputs($this->smtp_conn,"quit" . $this->CRLF);
+
+    // get any good-bye messages
+    $byemsg = $this->get_lines();
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $byemsg . $this->CRLF . '<br />';
+    }
+
+    $rval = true;
+    $e = null;
+
+    $code = substr($byemsg,0,3);
+    if($code != 221) {
+      // use e as a tmp var cause Close will overwrite $this->error
+      $e = array("error" => "SMTP server rejected quit command",
+                 "smtp_code" => $code,
+                 "smtp_rply" => substr($byemsg,4));
+      $rval = false;
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $e["error"] . ": " . $byemsg . $this->CRLF . '<br />';
+      }
+    }
+
+    if(empty($e) || $close_on_error) {
+      $this->Close();
+    }
+
+    return $rval;
+  }
+
+  /**
+   * Sends the command RCPT to the SMTP server with the TO: argument of $to.
+   * Returns true if the recipient was accepted false if it was rejected.
+   *
+   * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250,251
+   * SMTP CODE FAILURE: 550,551,552,553,450,451,452
+   * SMTP CODE ERROR  : 500,501,503,421
+   * @access public
+   * @return bool
+   */
+  public function Recipient($to) {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Recipient() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250 && $code != 251) {
+      $this->error =
+        array("error" => "RCPT not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Sends the RSET command to abort and transaction that is
+   * currently in progress. Returns true if successful false
+   * otherwise.
+   *
+   * Implements rfc 821: RSET <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE ERROR  : 500,501,504,421
+   * @access public
+   * @return bool
+   */
+  public function Reset() {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+              "error" => "Called Reset() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"RSET" . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "RSET failed",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
+   * Starts a mail transaction from the email address specified in
+   * $from. Returns true if successful or false otherwise. If True
+   * the mail transaction is started and then one or more Recipient
+   * commands may be called followed by a Data command. This command
+   * will send the message to the users terminal if they are logged
+   * in and send them an email.
+   *
+   * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE SUCCESS: 552,451,452
+   * SMTP CODE SUCCESS: 500,501,502,421
+   * @access public
+   * @return bool
+   */
+  public function SendAndMail($from) {
+    $this->error = null; // so no confusion is caused
+
+    if(!$this->connected()) {
+      $this->error = array(
+          "error" => "Called SendAndMail() without being connected");
+      return false;
+    }
+
+    fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF);
+
+    $rply = $this->get_lines();
+    $code = substr($rply,0,3);
+
+    if($this->do_debug >= 2) {
+      echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />';
+    }
+
+    if($code != 250) {
+      $this->error =
+        array("error" => "SAML not accepted from server",
+              "smtp_code" => $code,
+              "smtp_msg" => substr($rply,4));
+      if($this->do_debug >= 1) {
+        echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
+      }
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * This is an optional command for SMTP that this class does not
+   * support. This method is here to make the RFC821 Definition
+   * complete for this class and __may__ be implimented in the future
+   *
+   * Implements from rfc 821: TURN <CRLF>
+   *
+   * SMTP CODE SUCCESS: 250
+   * SMTP CODE FAILURE: 502
+   * SMTP CODE ERROR  : 500, 503
+   * @access public
+   * @return bool
+   */
+  public function Turn() {
+    $this->error = array("error" => "This method, TURN, of the SMTP ".
+                                    "is not implemented");
+    if($this->do_debug >= 1) {
+      echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF . '<br />';
+    }
+    return false;
+  }
+
+  /**
+  * Get the current error
+  * @access public
+  * @return array
+  */
+  public function getError() {
+    return $this->error;
+  }
+
+  /////////////////////////////////////////////////
+  // INTERNAL FUNCTIONS
+  /////////////////////////////////////////////////
+
+  /**
+   * Read in as many lines as possible
+   * either before eof or socket timeout occurs on the operation.
+   * With SMTP we can tell if we have more lines to read if the
+   * 4th character is '-' symbol. If it is a space then we don't
+   * need to read anything else.
+   * @access private
+   * @return string
+   */
+  private function get_lines() {
+    $data = "";
+    while($str = @fgets($this->smtp_conn,515)) {
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />';
+        echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />';
+      }
+      $data .= $str;
+      if($this->do_debug >= 4) {
+        echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '<br />';
+      }
+      // if 4th character is a space, we are done reading, break the loop
+      if(substr($str,3,1) == " ") { break; }
+    }
+    return $data;
+  }
+
+}
+
+?>

Property changes on: tags/2.8.3/wb/include/phpmailer/class.smtp.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phpmailer/index.php
===================================================================
--- tags/2.8.3/wb/include/phpmailer/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/phpmailer/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phpmailer/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/wb_wrapper_edit_area.php
===================================================================
--- tags/2.8.3/wb/include/editarea/wb_wrapper_edit_area.php	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/wb_wrapper_edit_area.php	(revision 1610)
@@ -0,0 +1,139 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         include
+ * @author		    Christophe Dolivet (EditArea), Christian Sommer (WB wrapper)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+function loader_help()
+{
+
+?>
+<script type="text/javascript">
+/*<![CDATA[*/
+		var url  = '<?php print WB_URL; ?>/include/editarea/edit_area_full.js';
+		try{
+			script = document.createElement("script");
+			script.type = "text/javascript";
+			script.src  = url;
+			script.charset= "UTF-8";
+			head = document.getElementsByTagName("head")[0];
+			head[0].appendChild(script);
+		}catch(e){
+			document.write("<script type='text/javascript' src='" + url + "' charset=\"UTF-8\"><"+"/script>");
+		}
+/*]]>*/
+</script>
+
+<?php
+
+}
+if (!function_exists('registerEditArea')) {
+	function registerEditArea(
+                $id = 'code_area',
+                $syntax = 'php',
+                $syntax_selection = true,
+                $allow_resize = 'both',
+                $allow_toggle = true,
+                $start_highlight = true,
+                $min_width = 600,
+                $min_height = 450,
+                $toolbar = 'default'  )
+	{
+
+		// set default toolbar if no user defined was specified
+		if ($toolbar == 'default') {
+			$toolbar = 'search, fullscreen, |, undo, redo, |, select_font, syntax_selection, |, highlight, reset_highlight, |, help';
+			$toolbar = (!$syntax_selection) ? str_replace('syntax_selection,', '', $toolbar) : $toolbar;
+		}
+
+		// check if used Website Baker backend language is supported by EditArea
+		$language = 'en';
+		if (defined('LANGUAGE') && file_exists(dirname(__FILE__) . '/langs/' . strtolower(LANGUAGE) . '.js'))
+        {
+			$language = strtolower(LANGUAGE);
+		}
+
+		// check if highlight syntax is supported by edit_area
+		$syntax = in_array($syntax, array('css', 'html', 'js', 'php', 'xml')) ? $syntax : 'php';
+
+		// check if resize option is supported by edit_area
+		$allow_resize = in_array($allow_resize, array('no', 'both', 'x', 'y')) ? $allow_resize : 'no';
+
+		if(!defined('LOADER_HELP')) {
+			loader_help();
+	        define('LOADER_HELP', true);
+		}
+
+		// return the Javascript code
+		$result = <<< EOT
+		<script type="text/javascript">
+			editAreaLoader.init({
+				id: 				'$id',
+				start_highlight:	$start_highlight,
+				syntax:			    '$syntax',
+				min_width:			$min_width,
+				min_height:		    $min_height,
+				allow_resize: 		'$allow_resize',
+				allow_toggle: 		'$allow_toggle',
+				toolbar: 			'$toolbar',
+				language:			'$language'
+			});
+		</script>
+EOT;
+		return $result;
+	}
+}
+
+if (!function_exists('getEditAreaSyntax')) {
+	function getEditAreaSyntax($file) 
+	{
+		// returns the highlight scheme for edit_area
+		$syntax = 'php';
+		if (is_readable($file)) {
+			// extract file extension
+			$file_info = pathinfo($file);
+		
+			switch ($file_info['extension']) {
+				case 'htm': case 'html': case 'htt':
+					$syntax = 'html';
+	  				break;
+
+	 			case 'css':
+					$syntax = 'css';
+	  				break;
+
+				case 'js':
+					$syntax = 'js';
+					break;
+
+				case 'xml':
+					$syntax = 'xml';
+					break;
+
+	 			case 'php': case 'php3': case 'php4': case 'php5':
+					$syntax = 'php';
+	  				break;
+
+				default:
+					$syntax = 'php';
+					break;
+			}
+		}
+		return $syntax ;
+	}
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/wb_wrapper_edit_area.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/index.php
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/index.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         include
+ * @author		    Christophe Dolivet (EditArea), Christian Sommer (WB wrapper)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/html.js
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/html.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/html.js	(revision 1610)
@@ -0,0 +1,51 @@
+/*
+* last update: 2006-08-24
+*/
+
+editAreaLoader.load_syntax["html"] = {
+	'DISPLAY_NAME' : 'HTML'
+	,'COMMENT_SINGLE' : {}
+	,'COMMENT_MULTI' : {'<!--' : '-->'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+	}
+	,'OPERATORS' :[
+	]
+	,'DELIMITERS' :[
+	]
+	,'REGEXPS' : {
+		'doctype' : {
+			'search' : '()(<!DOCTYPE[^>]*>)()'
+			,'class' : 'doctype'
+			,'modifiers' : ''
+			,'execute' : 'before' // before or after
+		}
+		,'tags' : {
+			'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'tags'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'attributes' : {
+			'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+			,'class' : 'attributes'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			}
+		,'OPERATORS' : 'color: #E775F0;'
+		,'DELIMITERS' : ''
+		,'REGEXPS' : {
+			'attributes': 'color: #B1AC41;'
+			,'tags': 'color: #E62253;'
+			,'doctype': 'color: #8DCFB5;'
+			,'test': 'color: #00FF00;'
+		}	
+	}		
+};

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/html.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/php.js
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/php.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/php.js	(revision 1610)
@@ -0,0 +1,157 @@
+editAreaLoader.load_syntax["php"] = {
+	'DISPLAY_NAME' : 'Php'
+	,'COMMENT_SINGLE' : {1 : '//', 2 : '#'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'statements' : [
+			'include', 'require', 'include_once', 'require_once',
+			'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+            'endif', 'switch', 'case', 'endswitch',
+			'return', 'break', 'continue'
+		]
+		,'reserved' : [
+			'_GET', '_POST', '_SESSION', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST',
+			'null', '__LINE__', '__FILE__',
+			'false', '&lt;?php', '?&gt;', '&lt;?',
+			'&lt;script language', '&lt;/script&gt;',
+			'true', 'var', 'default',
+			'function', 'class', 'new', '&amp;new', 'this',
+			'__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
+			'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
+			'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
+			'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+			'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
+			'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
+			'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+			
+		]
+		,'functions' : [
+			'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
+			'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+			'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
+			'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+			'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+			'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
+			'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+			'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
+			'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
+			'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
+			'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+			'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+			'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'REGEXPS' : {
+		// highlight all variables ($...)
+		'variables' : {
+			'search' : '()(\\$\\w+)()'
+			,'class' : 'variables'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #879EFA;'
+		,'KEYWORDS' : {
+			'reserved' : 'color: #48BDDF;'
+			,'functions' : 'color: #0040FD;'
+			,'statements' : 'color: #60CA00;'
+			}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #2B60FF;'
+		,'REGEXPS' : {
+			'variables' : 'color: #E0BD54;'
+		}		
+	}
+	,'AUTO_COMPLETION' :  {
+		"default": {	// the name of this definition group. It's posisble to have different rules inside the same definition file
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\-\\>|\\:\\:"
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+					'': [	// the prefix of thoses items
+						/**
+						 * 0 : the keyword the user is typing
+						 * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+						 * 		If empty the keyword will be displayed
+						 * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+						 */
+						 ['$_POST']
+			    		,['$_GET']
+			    		,['$_SESSION']
+			    		,['$_SERVER']
+			    		,['$_FILES']
+			    		,['$_ENV']
+			    		,['$_COOKIE']
+			    		,['$_REQUEST']
+			    		// magic methods
+			    		,['__construct', '§( {@} )']
+			    		,['__destruct', '§( {@} )']
+			    		,['__sleep', '§( {@} )']
+			    		,['__wakeup', '§( {@} )']
+			    		,['__toString', '§( {@} )']
+			    		// include
+			    		,['include', '§ "{@}";']
+			    		,['include_once', '§ "{@}";']
+			    		,['require', '§ "{@}";']
+			    		,['require_once', '§ "{@}";']
+			    		// statements
+			    		,['for', '§( {@} )']
+			    		,['foreach', '§( {@} )']
+			    		,['if', '§( {@} )']
+			    		,['elseif', '§( {@} )']
+			    		,['while', '§( {@} )']
+			    		,['switch', '§( {@} )']
+			    		,['break']
+			    		,['case']
+			    		,['continue']
+			    		,['do']
+			    		,['else']
+			    		,['endif']
+			    		,['endswitch']
+			    		,['endwhile']
+			    		,['return']
+			    		// function
+			    		,['unset', '§( {@} )']
+					]
+				}
+			}
+		,"live": {	
+			
+			// class NAME: /class\W+([a-z]+)\W+/gi
+			// method: /^(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi
+			// static: /^(public|private|protected)?\s+static\s+(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi 
+			// attributes: /(\$this\-\>|(?:var|public|protected|private)\W+\$)([a-z0-9\_]+)(?!\()\b/gi 
+			// 		v1 : /(\$this\-\>|var\W+|public\W+|protected\W+|private\W+)([a-z0-9\_]+)\W*(=|;)/gi 
+			// var type: /(\$(this\-\>)?[a-z0-9\_]+)\s*\=\s*new\s+([a-z0-9\_])+/gi 
+			
+			
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\-\\>"
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+					'$this': [	// the prefix of thoses items
+						['test']
+					]
+				}
+			}
+	}
+};

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/php.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/css.js
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/css.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/css.js	(revision 1610)
@@ -0,0 +1,85 @@
+editAreaLoader.load_syntax["css"] = {
+	'DISPLAY_NAME' : 'CSS'
+	,'COMMENT_SINGLE' : {1 : '@'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : ['"', "'"]
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'attributes' : [
+			'aqua', 'azimuth', 'background-attachment', 'background-color',
+			'background-image', 'background-position', 'background-repeat',
+			'background', 'border-bottom-color', 'border-bottom-style',
+			'border-bottom-width', 'border-left-color', 'border-left-style',
+			'border-left-width', 'border-right', 'border-right-color',
+			'border-right-style', 'border-right-width', 'border-top-color',
+			'border-top-style', 'border-top-width','border-bottom', 'border-collapse',
+			'border-left', 'border-width', 'border-color', 'border-spacing',
+			'border-style', 'border-top', 'border',  'caption-side',
+			'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+			'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+			'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+			'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+			'font-weight', 'font', 'height', 'letter-spacing', 'line-height',
+			'list-style', 'list-style-image', 'list-style-position', 'list-style-type',
+			'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin',
+			'marker-offset', 'marks', 'max-height', 'max-width', 'min-height',
+			'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style',
+			'outline-width', 'overflow', 'padding-bottom', 'padding-left',
+			'padding-right', 'padding-top', 'padding', 'page', 'page-break-after',
+			'page-break-before', 'page-break-inside', 'pause-after', 'pause-before',
+			'pause', 'pitch', 'pitch-range',  'play-during', 'position', 'quotes',
+			'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation',
+			'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration',
+			'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+			'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows',
+			'width', 'word-spacing', 'z-index', 'bottom', 'left'
+		]
+		,'values' : [
+			'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid',
+			'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both',
+			'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', 
+            'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive',
+			'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+			'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded',
+			'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia',
+			'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher',
+			'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline',
+			'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana',
+			'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low',
+			'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace',
+			'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize',
+			'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline',
+			'pointer', 'portrait', 'purple', 'px',
+			'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards',
+			's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square',
+			'static', 'status-bar', 'super', 'sw-resize',
+			'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent',
+			'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url',
+			'visible',
+			'w-resize', 'wait', 'white', 'wider',
+			'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small',
+			'yellow', 'yes'
+		]
+		,'specials' : [
+			'important'
+		]
+	}
+	,'OPERATORS' :[
+		':', ';', '!', '.', '#'
+	]
+	,'DELIMITERS' :[
+		'{', '}'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'attributes' : 'color: #48BDDF;'
+			,'values' : 'color: #2B60FF;'
+			,'specials' : 'color: #FF0000;'
+			}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #60CA00;'
+				
+	}
+};

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/css.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/js.js
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/js.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/js.js	(revision 1610)
@@ -0,0 +1,94 @@
+editAreaLoader.load_syntax["js"] = {
+	'DISPLAY_NAME' : 'Javascript'
+	,'COMMENT_SINGLE' : {1 : '//'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'statements' : [
+			'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+			'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+			'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
+			'while', 'write', 'with'
+		]
+ 		,'keywords' : [
+			'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+			'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+			'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document',		
+			// the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice
+			'Link ', 'outerHeight ', 'Anchor', 'FileUpload', 
+			'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self', 
+			'arguments', 'locationbar', 'pageXoffset', 'Form', 
+			'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status', 
+			'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy', 
+			'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden', 
+			'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents', 
+			'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text', 
+			'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity', 
+			'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed', 
+			'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents', 
+			'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus', 
+			'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document', 
+			'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window', 
+			'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy'			
+		]
+    	,'functions' : [
+			// common functions for Window object
+			'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home',
+			'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+			'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status',
+			'stop' 
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'statements' : 'color: #60CA00;'
+			,'keywords' : 'color: #48BDDF;'
+			,'functions' : 'color: #2B60FF;'
+		}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #0038E1;'
+				
+	}
+	,'AUTO_COMPLETION' :  {
+		"default": {	// the name of this definition group. It's posisble to have different rules inside the same definition file
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\."
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+				'': [	// the prefix of thoses items
+						/**
+						 * 0 : the keyword the user is typing
+						 * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+						 * 		If empty the keyword will be displayed
+						 * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+						 */
+						 ['Array', '§()', '']
+			    		,['alert', '§({@})', 'alert(String message)']
+			    		,['document']
+			    		,['window']
+			    	]
+		    	,'window' : [
+			    		 ['location']
+			    		,['document']
+			    		,['scrollTo', 'scrollTo({@})', 'scrollTo(Int x,Int y)']
+					]
+		    	,'location' : [
+			    		 ['href']
+					]
+			}
+		}
+	}
+};

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/js.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/reg_syntax/xml.js
===================================================================
--- tags/2.8.3/wb/include/editarea/reg_syntax/xml.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/reg_syntax/xml.js	(revision 1610)
@@ -0,0 +1,57 @@
+/*
+* last update: 2006-08-24
+*/
+
+editAreaLoader.load_syntax["xml"] = {
+	'DISPLAY_NAME' : 'XML'
+	,'COMMENT_SINGLE' : {}
+	,'COMMENT_MULTI' : {'<!--' : '-->'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+	}
+	,'OPERATORS' :[
+	]
+	,'DELIMITERS' :[
+	]
+	,'REGEXPS' : {
+		'xml' : {
+			'search' : '()(<\\?[^>]*?\\?>)()'
+			,'class' : 'xml'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+		,'cdatas' : {
+			'search' : '()(<!\\[CDATA\\[.*?\\]\\]>)()'
+			,'class' : 'cdata'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+		,'tags' : {
+			'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'tags'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'attributes' : {
+			'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+			,'class' : 'attributes'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			}
+		,'OPERATORS' : 'color: #E775F0;'
+		,'DELIMITERS' : ''
+		,'REGEXPS' : {
+			'attributes': 'color: #B1AC41;'
+			,'tags': 'color: #E62253;'
+			,'xml': 'color: #8DCFB5;'
+			,'cdata': 'color: #50B020;'
+		}	
+	}		
+};

Property changes on: tags/2.8.3/wb/include/editarea/reg_syntax/xml.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/index.php
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/index.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         include
+ * @author		    Christophe Dolivet (EditArea), Christian Sommer (WB wrapper)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/langs/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/cs.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/cs.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/cs.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["cs"]={
+new_document: "Nový dokument",
+search_button: "Najdi a nahraď",
+search_command: "Hledej další / otevři vyhledávací pole",
+search: "Hledej",
+replace: "Nahraď",
+replace_command: "Nahraď / otevři vyhledávací pole",
+find_next: "Najdi další",
+replace_all: "Nahraď vše",
+reg_exp: "platné výrazy",
+match_case: "vyhodnocené výrazy",
+not_found: "nenalezené.",
+occurrence_replaced: "výskyty nahrazené.",
+search_field_empty: "Pole vyhledávání je prázdné",
+restart_search_at_begin: "Dosažen konec souboru, začínám od začátku.",
+move_popup: "Přesuň vyhledávací okno",
+font_size: "--Velikost textu--",
+go_to_line: "Přejdi na řádek",
+go_to_line_prompt: "Přejdi na řádek:",
+undo: "krok zpět",
+redo: "znovu",
+change_smooth_selection: "Povolit nebo zakázat některé ze zobrazených funkcí (účelnější zobrazení požaduje větší zatížení procesoru)",
+highlight: "Zvýrazňování syntaxe zap./vyp.",
+reset_highlight: "Obnovit zvýraznění (v případě nesrovnalostí)",
+word_wrap: "toggle word wrapping mode",
+help: "O programu",
+save: "Uložit",
+load: "Otevřít",
+line_abbr: "Ř.",
+char_abbr: "S.",
+position: "Pozice",
+total: "Celkem",
+close_popup: "Zavřít okno",
+shortcuts: "Zkratky",
+add_tab: "Přidat tabulování textu",
+remove_tab: "Odtsranit tabulování textu",
+about_notice: "Upozornění! Funkce zvýrazňování textu je k dispozici pouze pro malý text",
+toggle: "Přepnout editor",
+accesskey: "Přístupová klávesa",
+tab: "Záložka",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Zpracovávám ...",
+fullscreen: "Celá obrazovka",
+syntax_selection: "--vyber zvýrazňovač--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/cs.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/es.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/es.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/es.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["es"]={
+new_document: "nuevo documento vacío",
+search_button: "buscar y reemplazar",
+search_command: "buscar siguiente / abrir área de búsqueda",
+search: "buscar",
+replace: "reemplazar",
+replace_command: "reemplazar / abrir área de búsqueda",
+find_next: "encontrar siguiente",
+replace_all: "reemplazar todos",
+reg_exp: "expresiones regulares",
+match_case: "coincidir capitalización",
+not_found: "no encontrado.",
+occurrence_replaced: "ocurrencias reemplazadas.",
+search_field_empty: "Campo de búsqueda vacío",
+restart_search_at_begin: "Se ha llegado al final del área. Se va a seguir desde el principio.",
+move_popup: "mover la ventana de búsqueda",
+font_size: "--Tamaño de la fuente--",
+go_to_line: "ir a la línea",
+go_to_line_prompt: "ir a la línea número:",
+undo: "deshacer",
+redo: "rehacer",
+change_smooth_selection: "activar/desactivar algunas características de visualización (visualización más inteligente pero más carga de CPU)",
+highlight: "intercambiar resaltado de sintaxis",
+reset_highlight: "reinicializar resaltado (si no esta sincronizado con el texto)",
+word_wrap: "toggle word wrapping mode",
+help: "acerca",
+save: "guardar",
+load: "cargar",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Posición",
+total: "Total",
+close_popup: "recuadro de cierre",
+shortcuts: "Atajos",
+add_tab: "añadir tabulado al texto",
+remove_tab: "borrar tabulado del texto",
+about_notice: "Aviso: el resaltado de sintaxis sólo funciona para texto pequeño",
+toggle: "Cambiar editor",
+accesskey: "Tecla de acceso",
+tab: "Tab",
+shift: "Mayúsc",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Procesando...",
+fullscreen: "pantalla completa",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/es.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/fr.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/fr.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/fr.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["fr"]={
+new_document: "nouveau document (efface le contenu)",
+search_button: "rechercher / remplacer",
+search_command: "rechercher suivant / ouvrir la fen&ecirc;tre de recherche",
+search: "rechercher",
+replace: "remplacer",
+replace_command: "remplacer / ouvrir la fen&ecirc;tre de recherche",
+find_next: "rechercher",
+replace_all: "tout remplacer",
+reg_exp: "expr. r&eacute;guli&egrave;re",
+match_case: "respecter la casse",
+not_found: "pas trouv&eacute;.",
+occurrence_replaced: "remplacements &eacute;ffectu&eacute;s.",
+search_field_empty: "Le champ de recherche est vide.",
+restart_search_at_begin: "Fin du texte atteint, poursuite au d&eacute;but.",
+move_popup: "d&eacute;placer la fen&ecirc;tre de recherche",
+font_size: "--Taille police--",
+go_to_line: "aller &agrave; la ligne",
+go_to_line_prompt: "aller a la ligne numero:",
+undo: "annuler",
+redo: "refaire",
+change_smooth_selection: "activer/d&eacute;sactiver des fonctions d'affichage (meilleur affichage mais plus de charge processeur)",
+highlight: "activer/d&eacute;sactiver la coloration syntaxique",
+reset_highlight: "r&eacute;initialiser la coloration syntaxique (si d&eacute;syncronis&eacute;e du texte)",
+word_wrap: "activer/d&eacute;sactiver les retours &agrave; la ligne automatiques",
+help: "&agrave; propos",
+save: "sauvegarder",
+load: "charger",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Position",
+total: "Total",
+close_popup: "fermer le popup",
+shortcuts: "Racourcis clavier",
+add_tab: "ajouter une tabulation dans le texte",
+remove_tab: "retirer une tabulation dans le texte",
+about_notice: "Note: la coloration syntaxique n'est pr&eacute;vue que pour de courts textes.",
+toggle: "basculer l'&eacute;diteur",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Maj",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "chargement...",
+fullscreen: "plein &eacute;cran",
+syntax_selection: "--Syntaxe--",
+close_tab: "Fermer le fichier"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/fr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/mk.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/mk.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/mk.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["mk"]={
+new_document: "Нов документ",
+search_button: "Најди и замени",
+search_command: "Барај следно / Отвори нов прозорец за пребарување",
+search: "Барај",
+replace: "Замени",
+replace_command: "Замени / Отвори прозорец за пребарување",
+find_next: "најди следно",
+replace_all: "Замени ги сите",
+reg_exp: "Регуларни изрази",
+match_case: "Битна е големината на буквите",
+not_found: "не е пронајдено.",
+occurrence_replaced: "замени.",
+search_field_empty: "Полето за пребарување е празно",
+restart_search_at_begin: "Крај на областа. Стартувај од почеток.",
+move_popup: "Помести го прозорецот",
+font_size: "--Големина на текстот--",
+go_to_line: "Оди на линија",
+go_to_line_prompt: "Оди на линија со број:",
+undo: "Врати",
+redo: "Повтори",
+change_smooth_selection: "Вклучи/исклучи некои карактеристики за приказ (попаметен приказ, но поголемо оптеретување за процесорот)",
+highlight: "Вклучи/исклучи осветлување на синтакса",
+reset_highlight: "Ресетирај го осветлувањето на синтакса (доколку е десинхронизиранo со текстот)",
+word_wrap: "toggle word wrapping mode",
+help: "За",
+save: "Зачувај",
+load: "Вчитај",
+line_abbr: "Лн",
+char_abbr: "Зн",
+position: "Позиција",
+total: "Вкупно",
+close_popup: "Затвори го прозорецот",
+shortcuts: "Кратенки",
+add_tab: "Додај табулација на текстот",
+remove_tab: "Отстрани ја табулацијата",
+about_notice: "Напомена: Осветлувањето на синтанса е само за краток текст",
+toggle: "Смени начин на уредување",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Обработувам...",
+fullscreen: "Цел прозорец",
+syntax_selection: "--Синтакса--",
+close_tab: "Избери датотека"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/mk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/hr.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/hr.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/hr.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["hr"]={
+new_document: "Novi dokument",
+search_button: "Traži i izmijeni",
+search_command: "Traži dalje / Otvori prozor za traženje",
+search: "Traži",
+replace: "Izmijeni",
+replace_command: "Izmijeni / Otvori prozor za traženje",
+find_next: "Traži dalje",
+replace_all: "Izmjeni sve",
+reg_exp: "Regularni izrazi",
+match_case: "Bitna vel. slova",
+not_found: "nije naðeno.",
+occurrence_replaced: "izmjenjenih.",
+search_field_empty: "Prazno polje za traženje!",
+restart_search_at_begin: "Došao do kraja. Poèeo od poèetka.",
+move_popup: "Pomakni prozor",
+font_size: "--Velièina teksta--",
+go_to_line: "Odi na redak",
+go_to_line_prompt: "Odi na redak:",
+undo: "Vrati natrag",
+redo: "Napravi ponovo",
+change_smooth_selection: "Ukljuèi/iskljuèi neke moguænosti prikaza (pametniji prikaz, ali zagušeniji CPU)",
+highlight: "Ukljuèi/iskljuèi bojanje sintakse",
+reset_highlight: "Ponovi kolorizaciju (ako je nesinkronizirana s tekstom)",
+word_wrap: "toggle word wrapping mode",
+help: "O edit_area",
+save: "Spremi",
+load: "Uèitaj",
+line_abbr: "Ln",
+char_abbr: "Zn",
+position: "Pozicija",
+total: "Ukupno",
+close_popup: "Zatvori prozor",
+shortcuts: "Kratice",
+add_tab: "Dodaj tabulaciju",
+remove_tab: "Makni tabulaciju",
+about_notice: "Napomena: koloriziranje sintakse je samo za kratke kodove",
+toggle: "Prebaci naèin ureðivanja",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Procesiram...",
+fullscreen: "Cijeli prozor",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/hr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/nl.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/nl.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/nl.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["nl"]={
+new_document: "nieuw leeg document",
+search_button: "zoek en vervang",
+search_command: "zoek volgende / zoekscherm openen",
+search: "zoek",
+replace: "vervang",
+replace_command: "vervang / zoekscherm openen",
+find_next: "volgende vinden",
+replace_all: "alles vervangen",
+reg_exp: "reguliere expressies",
+match_case: "hoofdletter gevoelig",
+not_found: "niet gevonden.",
+occurrence_replaced: "object vervangen.",
+search_field_empty: "Zoek veld leeg",
+restart_search_at_begin: "Niet meer instanties gevonden, begin opnieuw",
+move_popup: "versleep zoek scherm",
+font_size: "--Letter grootte--",
+go_to_line: "Ga naar regel",
+go_to_line_prompt: "Ga naar regel nummer:",
+undo: "Ongedaan maken",
+redo: "Opnieuw doen",
+change_smooth_selection: "zet wat schermopties aan/uit (kan langzamer zijn)",
+highlight: "zet syntax highlight aan/uit",
+reset_highlight: "reset highlight (indien gedesynchronizeerd)",
+word_wrap: "toggle word wrapping mode",
+help: "informatie",
+save: "opslaan",
+load: "laden",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Positie",
+total: "Totaal",
+close_popup: "Popup sluiten",
+shortcuts: "Snelkoppelingen",
+add_tab: "voeg tabs toe in tekst",
+remove_tab: "verwijder tabs uit tekst",
+about_notice: "Notitie: syntax highlight functie is alleen voor kleine tekst",
+toggle: "geavanceerde bewerkingsopties",
+accesskey: "Accessknop",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Verwerken...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/nl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/pl.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/pl.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/pl.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["pl"]={
+new_document: "nowy dokument",
+search_button: "znajdź i zamień",
+search_command: "znajdź następny",
+search: "znajdź",
+replace: "zamień",
+replace_command: "zamień",
+find_next: "następny",
+replace_all: "zamień wszystko",
+reg_exp: "wyrażenie regularne",
+match_case: "uwzględnij wielkość liter<br />",
+not_found: "nie znaleziono.",
+occurrence_replaced: "wystąpień zamieniono.",
+search_field_empty: "Nie wprowadzono tekstu",
+restart_search_at_begin: "Koniec dokumentu. Wyszukiwanie od początku.",
+move_popup: "przesuń okienko wyszukiwania",
+font_size: "Rozmiar",
+go_to_line: "idź do linii",
+go_to_line_prompt: "numer linii:",
+undo: "cofnij",
+redo: "przywróć",
+change_smooth_selection: "włącz/wyłącz niektóre opcje wyglądu (zaawansowane opcje wyglądu obciążają procesor)",
+highlight: "włącz/wyłącz podświetlanie składni",
+reset_highlight: "odśwież podświetlanie składni (jeśli rozsynchronizowało się z tekstem)",
+word_wrap: "toggle word wrapping mode",
+help: "o programie",
+save: "zapisz",
+load: "otwórz",
+line_abbr: "Ln",
+char_abbr: "Zn",
+position: "Pozycja",
+total: "W sumie",
+close_popup: "zamknij okienko",
+shortcuts: "Skróty klawiaturowe",
+add_tab: "dodaj wcięcie do zaznaczonego tekstu",
+remove_tab: "usuń wcięcie",
+about_notice: "Uwaga: podświetlanie składni nie jest zalecane dla długich tekstów",
+toggle: "Włącz/wyłącz edytor",
+accesskey: "Alt+",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Przetwarzanie...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/pl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/it.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/it.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/it.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["it"]={
+new_document: "nuovo documento vuoto",
+search_button: "cerca e sostituisci",
+search_command: "trova successivo / apri finestra di ricerca",
+search: "cerca",
+replace: "sostituisci",
+replace_command: "sostituisci / apri finestra di ricerca",
+find_next: "trova successivo",
+replace_all: "sostituisci tutti",
+reg_exp: "espressioni regolari",
+match_case: "confronta maiuscole/minuscole<br />",
+not_found: "non trovato.",
+occurrence_replaced: "occorrenze sostituite.",
+search_field_empty: "Campo ricerca vuoto",
+restart_search_at_begin: "Fine del testo raggiunta. Ricomincio dall'inizio.",
+move_popup: "sposta popup di ricerca",
+font_size: "-- Dimensione --",
+go_to_line: "vai alla linea",
+go_to_line_prompt: "vai alla linea numero:",
+undo: "annulla",
+redo: "ripeti",
+change_smooth_selection: "abilita/disabilita alcune caratteristiche della visualizzazione",
+highlight: "abilita/disabilita colorazione della sintassi",
+reset_highlight: "aggiorna colorazione (se non sincronizzata)",
+word_wrap: "toggle word wrapping mode",
+help: "informazioni su...",
+save: "salva",
+load: "carica",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Posizione",
+total: "Totale",
+close_popup: "chiudi popup",
+shortcuts: "Scorciatoie",
+add_tab: "aggiungi tabulazione",
+remove_tab: "rimuovi tabulazione",
+about_notice: "Avviso: la colorazione della sintassi vale solo con testo piccolo",
+toggle: "Abilita/disabilita editor",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "In corso...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/it.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/sk.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/sk.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/sk.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["sk"]={
+new_document: "nový prázdy dokument",
+search_button: "vyhľadaj a nahraď",
+search_command: "hľadaj ďalsšie / otvor vyhľadávacie pole",
+search: "hľadaj",
+replace: "nahraď",
+replace_command: "nahraď / otvor vyhľadávacie pole",
+find_next: "nájdi ďalšie",
+replace_all: "nahraď všetko",
+reg_exp: "platné výrazy",
+match_case: "zhodujúce sa výrazy",
+not_found: "nenájdené.",
+occurrence_replaced: "výskyty nahradené.",
+search_field_empty: "Pole vyhľadávanie je prádzne",
+restart_search_at_begin: "End of area reached. Restart at begin.",
+move_popup: "presuň vyhľadávacie okno",
+font_size: "--Veľkosť textu--",
+go_to_line: "prejdi na riadok",
+go_to_line_prompt: "prejdi na riadok:",
+undo: "krok späť",
+redo: "prepracovať",
+change_smooth_selection: "povoliť/zamietnúť niektoré zo zobrazených funkcií (účelnejšie zobrazenie vyžaduje  väčšie zaťaženie procesora CPU)",
+highlight: "prepnúť zvýrazňovanie syntaxe zap/vyp",
+reset_highlight: "zrušiť zvýrazňovanie (ak je nesynchronizované s textom)",
+word_wrap: "toggle word wrapping mode",
+help: "o programe",
+save: "uložiť",
+load: "načítať",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Pozícia",
+total: "Spolu",
+close_popup: "zavrieť okno",
+shortcuts: "Skratky",
+add_tab: "pridať tabulovanie textu",
+remove_tab: "odstrániť tabulovanie textu",
+about_notice: "Upozornenie: funkcia zvýrazňovania syntaxe je dostupná iba pre malý text",
+toggle: "Prepnúť editor",
+accesskey: "Accesskey",
+tab: "Záložka",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Spracúvam...",
+fullscreen: "cel=a obrazovka",
+syntax_selection: "--Vyber Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/sk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/zh.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/zh.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/zh.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["zh"]={
+new_document: "新建空白文档",
+search_button: "查找与替换",
+search_command: "查找下一个 / 打开查找框",
+search: "查找",
+replace: "替换",
+replace_command: "替换 / 打开查找框",
+find_next: "查找下一个",
+replace_all: "全部替换",
+reg_exp: "正则表达式",
+match_case: "匹配大小写",
+not_found: "未找到.",
+occurrence_replaced: "处被替换.",
+search_field_empty: "查找框没有内容",
+restart_search_at_begin: "已到到文档末尾. 从头重新查找.",
+move_popup: "移动查找对话框",
+font_size: "--字体大小--",
+go_to_line: "转到行",
+go_to_line_prompt: "转到行:",
+undo: "恢复",
+redo: "重做",
+change_smooth_selection: "启用/禁止一些显示特性(更好看但更耗费资源)",
+highlight: "启用/禁止语法高亮",
+reset_highlight: "重置语法高亮(当文本显示不同步时)",
+word_wrap: "toggle word wrapping mode",
+help: "关于",
+save: "保存",
+load: "加载",
+line_abbr: "行",
+char_abbr: "字符",
+position: "位置",
+total: "总计",
+close_popup: "关闭对话框",
+shortcuts: "快捷键",
+add_tab: "添加制表符(Tab)",
+remove_tab: "移除制表符(Tab)",
+about_notice: "注意：语法高亮功能仅用于较少内容的文本(文件内容太大会导致浏览器反应慢)",
+toggle: "切换编辑器",
+accesskey: "快捷键",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "正在处理中...",
+fullscreen: "全屏编辑",
+syntax_selection: "--语法--",
+close_tab: "关闭文件"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/zh.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/pt.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/pt.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/pt.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["pt"]={
+new_document: "Novo documento",
+search_button: "Localizar e substituir",
+search_command: "Localizar próximo",
+search: "Localizar",
+replace: "Substituir",
+replace_command: "Substituir",
+find_next: "Localizar",
+replace_all: "Subst. tudo",
+reg_exp: "Expressões regulares",
+match_case: "Diferenciar maiúsculas e minúsculas",
+not_found: "Não encontrado.",
+occurrence_replaced: "Ocorrências substituidas",
+search_field_empty: "Campo localizar vazio.",
+restart_search_at_begin: "Fim das ocorrências. Recomeçar do inicio.",
+move_popup: "Mover janela",
+font_size: "--Tamanho da fonte--",
+go_to_line: "Ir para linha",
+go_to_line_prompt: "Ir para a linha:",
+undo: "Desfazer",
+redo: "Refazer",
+change_smooth_selection: "Opções visuais",
+highlight: "Cores de sintaxe",
+reset_highlight: "Resetar cores (se não sincronizado)",
+word_wrap: "toggle word wrapping mode",
+help: "Sobre",
+save: "Salvar",
+load: "Carregar",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Posição",
+total: "Total",
+close_popup: "Fechar",
+shortcuts: "Shortcuts",
+add_tab: "Adicionar tabulação",
+remove_tab: "Remover tabulação",
+about_notice: "Atenção: Cores de sintaxe são indicados somente para textos pequenos",
+toggle: "Exibir editor",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Processando...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/pt.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/ru.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/ru.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/ru.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["ru"]={
+new_document: "новый пустой документ",
+search_button: "поиск и замена",
+search_command: "искать следующий / открыть панель поиска",
+search: "поиск",
+replace: "замена",
+replace_command: "заменить / открыть панель поиска",
+find_next: "найти следующее",
+replace_all: "заменить все",
+reg_exp: "регулярное выражение",
+match_case: "учитывать регистр",
+not_found: "не найдено.",
+occurrence_replaced: "вхождение заменено.",
+search_field_empty: "Поле поиска пустое",
+restart_search_at_begin: "Достигнут конец документа. Начинаю с начала.",
+move_popup: "переместить окно поиска",
+font_size: "--Размер шрифта--",
+go_to_line: "перейти к строке",
+go_to_line_prompt: "перейти к строке номер:",
+undo: "отменить",
+redo: "вернуть",
+change_smooth_selection: "включить/отключить некоторые функции просмотра (более красиво, но больше использует процессор)",
+highlight: "переключить подсветку синтаксиса включена/выключена",
+reset_highlight: "восстановить подсветку (если разсинхронизирована от текста)",
+word_wrap: "toggle word wrapping mode",
+help: "о программе",
+save: "сохранить",
+load: "загрузить",
+line_abbr: "Стр",
+char_abbr: "Стлб",
+position: "Позиция",
+total: "Всего",
+close_popup: "закрыть всплывающее окно",
+shortcuts: "Горячие клавиши",
+add_tab: "добавить табуляцию в текст",
+remove_tab: "убрать табуляцию из текста",
+about_notice: "Внимание: функция подсветки синтаксиса только для небольших текстов",
+toggle: "Переключить редактор",
+accesskey: "Горячая клавиша",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Обработка...",
+fullscreen: "полный экран",
+syntax_selection: "--Синтакс--",
+close_tab: "Закрыть файл"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/ru.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/bg.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/bg.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/bg.js	(revision 1610)
@@ -0,0 +1,54 @@
+/*
+ *	Bulgarian translation
+ *	Author:		Valentin Hristov
+ *	Company:	SOFTKIT Bulgarian
+ *	Site:		http://www.softkit-bg.com
+ */
+editAreaLoader.lang["bg"]={
+new_document: "нов документ",
+search_button: "търсене и замяна",
+search_command: "търси следващия / отвори прозорец с търсачка",
+search: "търсене",
+replace: "замяна",
+replace_command: "замяна / отвори прозорец с търсачка",
+find_next: "намери следващия",
+replace_all: "замени всички",
+reg_exp: "реголярни изрази",
+match_case: "чуствителен към регистъра",
+not_found: "няма резултат.",
+occurrence_replaced: "замяната е осъществена.",
+search_field_empty: "Полето за търсене е празно",
+restart_search_at_begin: "До края на документа. Почни с началото.",
+move_popup: "премести прозореца с търсачката",
+font_size: "--Размер на шрифта--",
+go_to_line: "премени към реда",
+go_to_line_prompt: "премени към номера на реда:",
+undo: "отмени",
+redo: "върни",
+change_smooth_selection: "включи/изключи някой от функциите за преглед (по красиво, но повече натоварва)",
+highlight: "превключване на оцветяване на синтаксиса включена/изключена",
+reset_highlight: "въстанови оцветяване на синтаксиса (ако не е синхронизиран с текста)",
+word_wrap: "режим на пренасяне на дълги редове",
+help: "за програмата",
+save: "съхрани",
+load: "зареди",
+line_abbr: "Стр",
+char_abbr: "Стлб",
+position: "Позиция",
+total: "Всичко",
+close_popup: "затвори прозореца",
+shortcuts: "Бързи клавиши",
+add_tab: "добави табулация в текста",
+remove_tab: "премахни табулацията в текста",
+about_notice: "Внимание: използвайте функцията оцветяване на синтаксиса само за малки текстове",
+toggle: "Превключи редактор",
+accesskey: "Бърз клавиш",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Зареждане...",
+fullscreen: "на цял екран",
+syntax_selection: "--Синтаксис--",
+close_tab: "Затвори файла"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/bg.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/de.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/de.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/de.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["de"]={
+new_document: "Neues Dokument",
+search_button: "Suchen und Ersetzen",
+search_command: "Weitersuchen / &ouml;ffne Suchfeld",
+search: "Suchen",
+replace: "Ersetzen",
+replace_command: "Ersetzen / &ouml;ffne Suchfeld",
+find_next: "Weitersuchen",
+replace_all: "Ersetze alle Treffer",
+reg_exp: "regul&auml;re Ausdr&uuml;cke",
+match_case: "passt auf den Begriff<br />",
+not_found: "Nicht gefunden.",
+occurrence_replaced: "Die Vorkommen wurden ersetzt.",
+search_field_empty: "Leeres Suchfeld",
+restart_search_at_begin: "Ende des zu durchsuchenden Bereiches erreicht. Es wird die Suche von Anfang an fortgesetzt.", //find a shorter translation
+move_popup: "Suchfenster bewegen",
+font_size: "--Schriftgr&ouml;&szlig;e--",
+go_to_line: "Gehe zu Zeile",
+go_to_line_prompt: "Gehe zu Zeilennummmer:",
+undo: "R&uuml;ckg&auml;ngig",
+redo: "Wiederherstellen",
+change_smooth_selection: "Aktiviere/Deaktiviere einige Features (weniger Bildschirmnutzung aber mehr CPU-Belastung)",
+highlight: "Syntax Highlighting an- und ausschalten",
+reset_highlight: "Highlighting zur&uuml;cksetzen (falls mit Text nicht konform)",
+word_wrap: "Toggle word wrapping mode",
+help: "Info",
+save: "Speichern",
+load: "&Ouml;ffnen",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Position",
+total: "Gesamt",
+close_popup: "Popup schlie&szlig;en",
+shortcuts: "Shortcuts",
+add_tab: "Tab zum Text hinzuf&uuml;gen",
+remove_tab: "Tab aus Text entfernen",
+about_notice: "Bemerkung: Syntax Highlighting ist nur f&uuml;r kurze Texte",
+toggle: "Editor an- und ausschalten",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "In Bearbeitung...",
+fullscreen: "Full-Screen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/de.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/ja.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/ja.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/ja.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["ja"]={
+new_document: "新規作成",
+search_button: "検索・置換",
+search_command: "次を検索 / 検索窓を表示",
+search: "検索",
+replace: "置換",
+replace_command: "置換 / 置換窓を表示",
+find_next: "次を検索",
+replace_all: "全置換",
+reg_exp: "正規表現",
+match_case: "大文字小文字の区別",
+not_found: "見つかりません。",
+occurrence_replaced: "置換しました。",
+search_field_empty: "検索対象文字列が空です。",
+restart_search_at_begin: "終端に達しました、始めに戻ります",
+move_popup: "検索窓を移動",
+font_size: "--フォントサイズ--",
+go_to_line: "指定行へ移動",
+go_to_line_prompt: "指定行へ移動します:",
+undo: "元に戻す",
+redo: "やり直し",
+change_smooth_selection: "スムース表示の切り替え（CPUを使います）",
+highlight: "構文強調表示の切り替え",
+reset_highlight: "構文強調表示のリセット",
+word_wrap: "toggle word wrapping mode",
+help: "ヘルプを表示",
+save: "保存",
+load: "読み込み",
+line_abbr: "行",
+char_abbr: "文字",
+position: "位置",
+total: "合計",
+close_popup: "ポップアップを閉じる",
+shortcuts: "ショートカット",
+add_tab: "タブを挿入する",
+remove_tab: "タブを削除する",
+about_notice: "注意：構文強調表示は短いテキストでしか有効に機能しません。",
+toggle: "テキストエリアとeditAreaの切り替え",
+accesskey: "アクセスキー",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "処理中です...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/ja.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/fi.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/fi.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/fi.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["fi"]={
+new_document: "uusi tyhjä dokumentti",
+search_button: "etsi ja korvaa",
+search_command: "etsi seuraava / avaa etsintävalikko",
+search: "etsi",
+replace: "korvaa",
+replace_command: "korvaa / avaa etsintävalikko",
+find_next: "etsi seuraava",
+replace_all: "korvaa kaikki",
+reg_exp: "säännölliset lausekkeet",
+match_case: "täsmää kirjainkokoon",
+not_found: "ei löytynyt.",
+occurrence_replaced: "esiintymää korvattu.",
+search_field_empty: "Haettava merkkijono on tyhjä",
+restart_search_at_begin: "Alueen loppu saavutettiin. Aloitetaan alusta.",
+move_popup: "siirrä etsintävalikkoa",
+font_size: "--Fontin koko--",
+go_to_line: "siirry riville",
+go_to_line_prompt: "mene riville:",
+undo: "peruuta",
+redo: "tee uudelleen",
+change_smooth_selection: "kytke/sammuta joitakin näyttötoimintoja (Älykkäämpi toiminta, mutta suurempi CPU kuormitus)",
+highlight: "kytke syntaksikorostus päälle/pois",
+reset_highlight: "resetoi syntaksikorostus (jos teksti ei ole synkassa korostuksen kanssa)",
+word_wrap: "toggle word wrapping mode",
+help: "tietoja",
+save: "tallenna",
+load: "lataa",
+line_abbr: "Rv",
+char_abbr: "Pos",
+position: "Paikka",
+total: "Yhteensä",
+close_popup: "sulje valikko",
+shortcuts: "Pikatoiminnot",
+add_tab: "lisää sisennys tekstiin",
+remove_tab: "poista sisennys tekstistä",
+about_notice: "Huomautus: syntaksinkorostus toimii vain pienelle tekstille",
+toggle: "Kytke editori",
+accesskey: "Pikanäppäin",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Odota...",
+fullscreen: "koko ruutu",
+syntax_selection: "--Syntaksi--",
+close_tab: "Sulje tiedosto"
+};
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/langs/fi.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/dk.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/dk.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/dk.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["dk"]={
+new_document: "nyt tomt dokument",
+search_button: "s&oslash;g og erstat",
+search_command: "find n&aelig;ste / &aring;ben s&oslash;gefelt",
+search: "s&oslash;g",
+replace: "erstat",
+replace_command: "erstat / &aring;ben s&oslash;gefelt",
+find_next: "find n&aelig;ste",
+replace_all: "erstat alle",
+reg_exp: "regular expressions",
+match_case: "forskel på store/sm&aring; bogstaver<br />",
+not_found: "not found.",
+occurrence_replaced: "occurences replaced.",
+search_field_empty: "Search field empty",
+restart_search_at_begin: "End of area reached. Restart at begin.",
+move_popup: "flyt søgepopup",
+font_size: "--Skriftstørrelse--",
+go_to_line: "g&aring; til linie",
+go_to_line_prompt: "gå til linienummer:",
+undo: "fortryd",
+redo: "gentag",
+change_smooth_selection: "sl&aring; display funktioner til/fra (smartere display men mere CPU kr&aelig;vende)",
+highlight: "sl&aring; syntax highlight til/fra",
+reset_highlight: "nulstil highlight (hvis den er desynkroniseret fra teksten)",
+word_wrap: "toggle word wrapping mode",
+help: "om",
+save: "gem",
+load: "hent",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Position",
+total: "Total",
+close_popup: "luk popup",
+shortcuts: "Genveje",
+add_tab: "tilf&oslash;j tabulation til tekst",
+remove_tab: "fjern tabulation fra tekst",
+about_notice: "Husk: syntax highlight funktionen b&oslash;r kun bruge til sm&aring; tekster",
+toggle: "Sl&aring; editor til / fra",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Skift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Processing...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/dk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/en.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/en.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/en.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["en"]={
+new_document: "new empty document",
+search_button: "search and replace",
+search_command: "search next / open search area",
+search: "search",
+replace: "replace",
+replace_command: "replace / open search area",
+find_next: "find next",
+replace_all: "replace all",
+reg_exp: "regular expressions",
+match_case: "match case",
+not_found: "not found.",
+occurrence_replaced: "occurences replaced.",
+search_field_empty: "Search field empty",
+restart_search_at_begin: "End of area reached. Restart at begin.",
+move_popup: "move search popup",
+font_size: "--Font size--",
+go_to_line: "go to line",
+go_to_line_prompt: "go to line number:",
+undo: "undo",
+redo: "redo",
+change_smooth_selection: "enable/disable some display features (smarter display but more CPU charge)",
+highlight: "toggle syntax highlight on/off",
+reset_highlight: "reset highlight (if desyncronized from text)",
+word_wrap: "toggle word wrapping mode",
+help: "about",
+save: "save",
+load: "load",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Position",
+total: "Total",
+close_popup: "close popup",
+shortcuts: "Shortcuts",
+add_tab: "add tabulation to text",
+remove_tab: "remove tabulation to text",
+about_notice: "Notice: syntax highlight function is only for small text",
+toggle: "Toggle editor",
+accesskey: "Accesskey",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Processing...",
+fullscreen: "fullscreen",
+syntax_selection: "--Syntax--",
+close_tab: "Close file"
+};

Property changes on: tags/2.8.3/wb/include/editarea/langs/en.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/eo.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/eo.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/eo.js	(revision 1610)
@@ -0,0 +1,48 @@
+editAreaLoader.lang["eo"]={
+new_document: "nova dokumento (vakigas la enhavon)",
+search_button: "ser&#265;i / anstata&#365;igi",
+search_command: "pluser&#265;i / malfermi la ser&#265;o-fenestron",
+search: "ser&#265;i",
+replace: "anstata&#365;igi",
+replace_command: "anstata&#365;igi / malfermi la ser&#265;o-fenestron",
+find_next: "ser&#265;i",
+replace_all: "anstata&#365;igi &#265;ion",
+reg_exp: "regula esprimo",
+match_case: "respekti la usklecon",
+not_found: "ne trovita.",
+occurrence_replaced: "anstata&#365;igoj plenumitaj.",
+search_field_empty: "La kampo estas malplena.",
+restart_search_at_begin: "Fino de teksto &#285;isrirata, &#265;u da&#365;rigi el la komenco?",
+move_popup: "movi la ser&#265;o-fenestron",
+font_size: "--Tipara grando--",
+go_to_line: "iri al la linio",
+go_to_line_prompt: "iri al la linio numero:",
+undo: "rezigni",
+redo: "refari",
+change_smooth_selection: "ebligi/malebligi la funkcioj de vidigo (pli bona vidigo, sed pli da &#349;ar&#285;o de la &#265;eforgano)",
+highlight: "ebligi/malebligi la sintaksan kolorigon",
+reset_highlight: "repravalorizi la sintaksan kolorigon (se malsinkronigon de la teksto)",
+word_wrap: "toggle word wrapping mode",
+help: "pri",
+save: "registri",
+load: "&#349;ar&#285;i",
+line_abbr: "Ln",
+char_abbr: "Sg",
+position: "Pozicio",
+total: "Sumo",
+close_popup: "fermi la &#349;prucfenestron",
+shortcuts: "Fulmoklavo",
+add_tab: "aldoni tabon en la tekston",
+remove_tab: "forigi tablon el la teksto",
+about_notice: "Noto: la sintaksa kolorigo estas nur prikalkulita por mallongaj tekstoj.",
+toggle: "baskuligi la redaktilon",
+accesskey: "Fulmoklavo",
+tab: "Tab",
+shift: "Maj",
+ctrl: "Ktrl",
+esc: "Esk",
+processing: "&#349;argante...",
+fullscreen: "plenekrane",
+syntax_selection: "--Sintakso--",
+close_tab: "Fermi la dosieron"
+};
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/langs/eo.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/langs/no.js
===================================================================
--- tags/2.8.3/wb/include/editarea/langs/no.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/langs/no.js	(revision 1610)
@@ -0,0 +1,65 @@
+editAreaLoader.lang["no"]={
+new_document: "nytt tomt dokument",
+search_button: "s&oslash;k og erstatt",
+search_command: "s&oslash;k etter neste/ &aring;pne s&oslash;ke omr&aring;det",
+search: "s&oslash;k",
+replace: "erstatt",
+replace_command: "erstatt / aring;pne s&oslash;ke omr&aring;det",
+find_next: "finn neste",
+replace_all: "erstatt alle",
+reg_exp: "standard uttrykk",
+match_case: "skill mellom store/ sm&aring; bokstaver",
+not_found: "ikke funnetnot found.",
+occurrence_replaced: "alle forekomstene ble endret.",
+search_field_empty: "Tomt s&oslash;kefelt",
+restart_search_at_begin: "Du er kommet til slutten av s&oslash;keomr&aring;ede. Vil du starte fra begynnelsen.",
+move_popup: "flytt s&oslash;ke vinuet",
+font_size: "--Skrift s&oslash;rrelse--",
+go_to_line: "g&aring; til linje",
+go_to_line_prompt: "g&aring; til linje nummer:",
+undo: "angre",
+redo: "gj&oslash;re igjen",
+change_smooth_selection: "aktivere/ deaktivere visnings alternativer(gj&oslash;r skjermvisningen smartere, men gir h&oslash;yere prosessor belastning)",
+highlight: "skru merking av s&oslash;keord av/ p&aring;",
+reset_highlight: "starte markeringen p&aring; nytt(hvis den er usynkron med deksten)",
+help: "om",
+save: "lagre",
+load: "laste",
+line_abbr: "Ln",
+char_abbr: "Ch",
+position: "Posisjon",
+total: "Total",
+close_popup: "lukk vindu",
+shortcuts: "Snarveier",
+add_tab: "legg til tabulering i teksten",
+remove_tab: "fj&aelig;rn tabulering i teksten",
+about_notice: "OBS!: markering av s&oslash;ketekst er kun for tekst med sm&aring; bokstaver",
+toggle: "skru redigeringsverkt&oslash;yet av/ p&aring;",
+accesskey: "Tillgangsn&oslash;kkel",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Behandler...",
+fullscreen: "full skjerm",
+syntax_selection: "--Sprk--",
+syntax_css: "CSS",
+syntax_html: "HTML",
+syntax_js: "Javascript",
+syntax_php: "Php",
+syntax_python: "Python",
+syntax_vb: "Visual Basic",
+syntax_xml: "Xml",
+syntax_c: "C",
+syntax_cpp: "CPP",
+syntax_basic: "Basic",
+syntax_pas: "Pascal",
+syntax_brainfuck: "Brainfuck",
+syntax_sql: "SQL",
+syntax_ruby: "Ruby",
+syntax_robotstxt: "Robots txt",
+syntax_tsql: "T-SQL",
+syntax_perl: "Perl",
+syntax_coldfusion: "Coldfusion",
+close_tab: "Lukk filen"
+};
Index: tags/2.8.3/wb/include/editarea/images/index.php
===================================================================
--- tags/2.8.3/wb/include/editarea/images/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/images/index.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         include
+ * @author		    Christophe Dolivet (EditArea), Christian Sommer (WB wrapper)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent directory listing
+header('Location: ../../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/images/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/word_wrap.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/word_wrap.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/processing.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/processing.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/spacer.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/spacer.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/smooth_selection.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/smooth_selection.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/go_to_line.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/go_to_line.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/load.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/load.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/opacity.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/opacity.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/help.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/help.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/newdocument.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/newdocument.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/statusbar_resize.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/statusbar_resize.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/redo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/redo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/save.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/save.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/autocompletion.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/autocompletion.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/fullscreen.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/fullscreen.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/close.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/close.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/search.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/search.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/undo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/undo.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/move.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/move.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/highlight.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/highlight.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/images/reset_highlight.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/editarea/images/reset_highlight.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/index.php
===================================================================
--- tags/2.8.3/wb/include/editarea/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/index.php	(revision 1610)
@@ -0,0 +1,23 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         include
+ * @author		    Christophe Dolivet (EditArea), Christian Sommer (WB wrapper)
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent directory listing
+header('Location: ../../index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/edit_area.css
===================================================================
--- tags/2.8.3/wb/include/editarea/edit_area.css	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/edit_area.css	(revision 1610)
@@ -0,0 +1,530 @@
+body, html{
+	margin: 0; 
+	padding: 0;
+	height: 100%;
+	border: none;
+	overflow: hidden;
+	background-color: #FFF;
+}
+
+body, html, table, form, textarea{
+	font: 12px monospace, sans-serif;
+}
+
+#editor{
+	border: solid #888 1px;
+	overflow: hidden;
+}
+
+#result{
+	z-index: 4; 
+	overflow-x: auto;
+	overflow-y: scroll;
+	border-top: solid #888 1px;
+	border-bottom: solid #888 1px;
+	position: relative;
+	clear: both;
+}
+
+#result.empty{
+	overflow: hidden;
+}
+
+#container{
+	overflow: hidden;
+	border: solid blue 0;
+	position: relative; 
+	z-index: 10;
+	padding: 0 5px 0 45px;
+	/*padding-right: 5px;*/ 
+}
+
+#textarea{
+	position: relative; 
+	top: 0; 
+	left: 0;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	height: 100%; 
+	overflow: hidden;  
+	z-index: 7; 
+	border-width: 0;
+	background-color: transparent;
+	resize: none;
+}
+
+#textarea, #textarea:hover{
+	outline: none;	/* safari outline fix */
+}
+
+#content_highlight{
+	white-space: pre;
+	margin: 0;
+	padding: 0;
+	position : absolute; 
+	z-index: 4; 
+	overflow: visible;
+}
+
+
+#selection_field, #selection_field_text{
+	margin: 0; 
+	background-color: #E1F2F9; 
+/*	height: 1px; */  
+	position: absolute;
+	z-index: 5;
+	top: -100px;
+	padding: 0;
+	white-space: pre;
+	overflow: hidden;
+}
+
+#selection_field.show_colors {
+	z-index: 3;
+	background-color:#EDF9FC;
+	
+}
+
+#selection_field strong{
+	font-weight:normal;
+}
+
+#selection_field.show_colors *, #selection_field_text * {
+	visibility: hidden;
+}
+
+#selection_field_text{
+	background-color:transparent;
+}
+
+#selection_field_text strong{
+	font-weight:normal;
+	background-color:#3399FE;
+	color: #FFF;
+	visibility:visible;
+}
+
+#container.word_wrap #content_highlight,
+#container.word_wrap #selection_field,
+#container.word_wrap #selection_field_text,
+#container.word_wrap #test_font_size{
+	white-space: pre-wrap;       /* css-3 */
+	white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+	white-space: -pre-wrap;      /* Opera 4-6 */
+	white-space: -o-pre-wrap;    /* Opera 7 */
+	word-wrap: break-word;       /* Internet Explorer 5.5+ */
+	width: 99%;
+}
+
+#line_number{
+	position: absolute;
+	overflow: hidden;
+	border-right: solid black 1px;
+	z-index:8;
+	width: 38px;
+	padding: 0 5px 0 0;
+	margin: 0 0 0 -45px;
+	text-align: right;
+	color: #AAAAAA;
+}
+
+#test_font_size{
+	padding: 0; 
+	margin: 0; 
+	visibility: hidden;
+	position: absolute;
+	white-space: pre;
+}
+
+pre{
+	margin: 0;
+	padding: 0;
+}
+
+.hidden{
+	opacity: 0.2; 
+	filter:alpha(opacity=20);
+}
+
+#result .edit_area_cursor{
+	position: absolute; 
+	z-index:6; 
+	background-color: #FF6633;
+	top: -100px;
+	margin: 0;
+}
+
+#result .edit_area_selection_field .overline{
+	background-color: #996600;
+}
+
+
+/* area popup */
+.editarea_popup{
+	border: solid 1px #888888;
+	background-color: #ECE9D8; 
+	width: 250px; 
+	padding: 4px; 
+	position: absolute;
+	visibility: hidden; 
+	z-index: 15;
+	top: -500px;
+}
+
+.editarea_popup, .editarea_popup table{
+	font-family: sans-serif;
+	font-size: 10pt;
+}
+
+.editarea_popup img{
+	border: 0;
+}
+
+.editarea_popup .close_popup{
+	float: right; 
+	line-height: 16px; 
+	border: 0; 
+	padding: 0;
+}
+
+.editarea_popup h1,.editarea_popup h2,.editarea_popup h3,.editarea_popup h4,.editarea_popup h5,.editarea_popup h6{
+	margin: 0;
+	padding: 0;
+}
+
+.editarea_popup .copyright{
+	text-align: right;
+}	
+
+/* Area_search */
+div#area_search_replace{
+	/*width: 250px;*/
+}
+
+div#area_search_replace img{
+	border: 0;
+}
+
+div#area_search_replace div.button{
+	text-align: center;
+	line-height: 1.7em;
+}
+
+div#area_search_replace .button a{
+	cursor: pointer;
+	border: solid 1px #888888;
+	background-color: #DEDEDE;
+	text-decoration: none;
+	padding: 0 2px;
+	color: #000000;	
+	white-space: nowrap;
+}
+
+div#area_search_replace a:hover{	
+	/*border: solid 1px #888888;*/
+	background-color: #EDEDED;
+}
+
+div#area_search_replace  #move_area_search_replace{
+	cursor: move; 
+	border: solid 1px #888;
+}
+
+div#area_search_replace  #close_area_search_replace{
+	text-align: right; 
+	vertical-align: top; 
+	white-space: nowrap;
+}
+
+div#area_search_replace  #area_search_msg{
+	height: 18px; 
+	overflow: hidden; 
+	border-top: solid 1px #888; 
+	margin-top: 3px;
+}
+
+/* area help */
+#edit_area_help{
+	width: 350px;
+}
+
+#edit_area_help div.close_popup{
+	float: right;
+}
+
+/* area_toolbar */
+.area_toolbar{
+	/*font: 11px sans-serif;*/
+	width: 100%; 
+	/*height: 21px; */
+	margin: 0; 
+	padding: 0;
+	background-color: #ECE9D8;
+	text-align: center;
+}
+
+.area_toolbar, .area_toolbar table{
+	font: 11px sans-serif;
+}
+
+.area_toolbar img{
+	border: 0;
+	vertical-align: middle;
+}
+
+.area_toolbar input{
+	margin: 0;
+	padding: 0;
+}
+
+.area_toolbar select{
+    font-family: 'MS Sans Serif',sans-serif,Verdana,Arial;
+    font-size: 7pt;
+    font-weight: normal;
+    margin: 2px 0 0 0 ;
+    padding: 0;
+    vertical-align: top;
+    background-color: #F0F0EE;
+}
+
+table.statusbar{
+	width: 100%;
+}
+
+.area_toolbar td.infos{
+	text-align: center;
+	width: 130px;
+	border-right: solid 1px #888;
+	border-width: 0 1px 0 0;
+	padding: 0;
+}
+
+.area_toolbar td.total{
+	text-align: right;
+	width: 50px;
+	padding: 0;
+}
+
+.area_toolbar td.resize{
+	text-align: right;
+}
+/*
+.area_toolbar span{
+	line-height: 1px;
+	padding: 0;
+	margin: 0;
+}*/
+
+.area_toolbar span#resize_area{
+	cursor: nw-resize;
+	visibility: hidden;
+}
+
+/* toolbar buttons */
+.editAreaButtonNormal, .editAreaButtonOver, .editAreaButtonDown, .editAreaSeparator, .editAreaSeparatorLine, .editAreaButtonDisabled, .editAreaButtonSelected {
+	border: 0; margin: 0; padding: 0; background: transparent;
+	margin-top: 0;
+	margin-left: 1px;
+	padding: 0;
+}
+
+.editAreaButtonNormal {
+	border: 1px solid #ECE9D8 !important;
+	cursor: pointer;
+}
+
+.editAreaButtonOver {
+	border: 1px solid #0A246A !important;
+	cursor: pointer;
+	background-color: #B6BDD2;
+}
+
+.editAreaButtonDown {
+	cursor: pointer;
+	border: 1px solid #0A246A !important;
+	background-color: #8592B5;
+}
+
+.editAreaButtonSelected {
+	border: 1px solid #C0C0BB !important;
+	cursor: pointer;
+	background-color: #F4F2E8;
+}
+
+.editAreaButtonDisabled {
+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
+	-moz-opacity:0.3;
+	opacity: 0.3;
+	border: 1px solid #F0F0EE !important;
+	cursor: pointer;
+}
+
+.editAreaSeparatorLine {
+	margin: 1px 2px;
+	background-color: #C0C0BB;
+	width: 2px;
+	height: 18px;
+}
+
+/* waiting screen */
+#processing{
+	display: none; 
+	background-color:#ECE9D8; 
+	border: solid #888 1px;
+	position: absolute; 
+	top: 0; 
+	left: 0;
+	width: 100%; 
+	height: 100%; 
+	z-index: 100; 
+	text-align: center;
+}
+
+#processing_text{
+	position:absolute;
+	left: 50%;
+	top: 50%;
+	width: 200px;
+	height: 20px; 
+	margin-left: -100px;
+	margin-top: -10px;
+	text-align: center;
+}
+/* end */
+
+
+/**** tab browsing area ****/
+#tab_browsing_area{
+	display: none;
+	background-color: #CCC9A8;
+	border-top: 1px solid #888;
+	text-align: left;
+	margin: 0;
+}
+
+#tab_browsing_list {
+	padding: 0; 
+	margin: 0; 
+	list-style-type: none;
+	white-space: nowrap;
+}
+#tab_browsing_list li {
+	float: left;
+	margin: -1px;
+}
+#tab_browsing_list a {
+	position: relative;
+	display: block; 
+	text-decoration: none; 
+	float: left; 
+	cursor: pointer;
+	line-height:14px;
+}
+
+#tab_browsing_list a span {
+	display: block; 
+	color: #000; 
+	background: #ECE9D8; 
+	border:	1px solid #888; 
+	border-width: 1px 1px 0; 
+	text-align: center; 
+	padding: 2px 2px 1px 4px; 
+	position: relative;	/*IE 6 hack */
+}
+
+#tab_browsing_list a b {
+	display: block; 
+	border-bottom: 2px solid #617994;
+}
+
+#tab_browsing_list a .edited {
+	display: none;
+}
+
+#tab_browsing_list a.edited .edited {
+	display: inline;
+}
+
+#tab_browsing_list a img{
+	margin-left: 7px;
+}
+
+#tab_browsing_list a.edited img{
+	margin-left: 3px;
+}
+
+#tab_browsing_list a:hover span {
+	background: #F4F2E8;
+	border-color: #0A246A;
+}
+
+#tab_browsing_list .selected a span{
+	background: #046380;
+	color: #FFF;
+}
+
+
+#no_file_selected{
+	height: 100%;
+	width: 150%; /* Opera need more than 100% */
+	background: #CCC;
+	display: none;
+	z-index: 20;
+	position: absolute;
+}
+
+
+/*** Non-editable mode ***/
+.non_editable #editor
+{
+	border-width: 0 1px;
+}
+
+.non_editable .area_toolbar
+{
+	display: none;
+}
+
+/*** Auto completion ***/
+#auto_completion_area
+{
+	background:	#FFF;
+	border:		solid 1px #888;
+	position:	absolute;
+	z-index:	15;
+	width:	280px;
+	height:	180px;
+	overflow: auto;
+	display:none;
+}
+
+#auto_completion_area a, #auto_completion_area a:visited
+{
+	display:	block;
+	padding:	0 2px 1px;
+	color:		#000;
+	text-decoration:none;
+}
+
+#auto_completion_area a:hover, #auto_completion_area a:focus, #auto_completion_area a.focus
+{
+	background:	#D6E1FE;
+	text-decoration:none;
+}
+
+#auto_completion_area ul
+{
+	margin:	0;
+	padding: 0;
+	list-style: none inside;
+}
+#auto_completion_area li
+{
+	padding:	0;
+}
+#auto_completion_area .prefix
+{
+	font-style: italic;
+	padding: 0 3px;
+}
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/editarea/edit_area.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/edit_area_full.js
===================================================================
--- tags/2.8.3/wb/include/editarea/edit_area_full.js	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/edit_area_full.js	(revision 1610)
@@ -0,0 +1,38 @@
+ function EAL(){var t=this;t.version="0.8.2";date=new Date();t.start_time=date.getTime();t.win="loading";t.error=false;t.baseURL="";t.template="";t.lang={};t.load_syntax={};t.syntax={};t.loadedFiles=[];t.waiting_loading={};t.scripts_to_load=[];t.sub_scripts_to_load=[];t.syntax_display_name={'basic':'Basic','brainfuck':'Brainfuck','c':'C','coldfusion':'Coldfusion','cpp':'CPP','css':'CSS','html':'HTML','java':'Java','js':'Javascript','pas':'Pascal','perl':'Perl','php':'Php','python':'Python','robotstxt':'Robots txt','ruby':'Ruby','sql':'SQL','tsql':'T-SQL','vb':'Visual Basic','xml':'XML'};t.resize=[];t.hidden={};t.default_settings={debug:false,smooth_selection:true,font_size:"10",font_family:"monospace",start_highlight:false,toolbar:"search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,word_wrap,|,help",begin_toolbar:"",end_toolbar:"",is_multi_files:false,allow_resize:"both",show_line_colors:false,min_width:400,min_height:125,replace_tab_by_spaces:false,allow_toggle:true,language:"en",syntax:"",syntax_selection_allow:"css,html,js,php,xml",display:"onload",max_undo:30,browsers:"known",plugins:"",gecko_spellcheck:false,fullscreen:false,is_editable:true,cursor_position:"begin",word_wrap:false,autocompletion:false,load_callback:"",save_callback:"",change_callback:"",submit_callback:"",EA_init_callback:"",EA_delete_callback:"",EA_load_callback:"",EA_unload_callback:"",EA_toggle_on_callback:"",EA_toggle_off_callback:"",EA_file_switch_on_callback:"",EA_file_switch_off_callback:"",EA_file_close_callback:""};t.advanced_buttons=[ ['new_document','newdocument.gif','new_document',false],['search','search.gif','show_search',false],['go_to_line','go_to_line.gif','go_to_line',false],['undo','undo.gif','undo',true],['redo','redo.gif','redo',true],['change_smooth_selection','smooth_selection.gif','change_smooth_selection_mode',true],['reset_highlight','reset_highlight.gif','resync_highlight',true],['highlight','highlight.gif','change_highlight',true],['help','help.gif','show_help',false],['save','save.gif','save',false],['load','load.gif','load',false],['fullscreen','fullscreen.gif','toggle_full_screen',false],['word_wrap','word_wrap.gif','toggle_word_wrap',true],['autocompletion','autocompletion.gif','toggle_autocompletion',true] ];t.set_browser_infos(t);if(t.isIE>=6||t.isGecko||(t.isWebKit&&!t.isSafari<3)||t.isOpera>=9||t.isCamino)t.isValidBrowser=true;
+else t.isValidBrowser=false;t.set_base_url();for(var i=0;i<t.scripts_to_load.length;i++){setTimeout("eAL.load_script('"+t.baseURL+t.scripts_to_load[i]+".js');",1);t.waiting_loading[t.scripts_to_load[i]+".js"]=false;}t.add_event(window,"load",EAL.prototype.window_loaded);};EAL.prototype={has_error:function(){this.error=true;for(var i in EAL.prototype){EAL.prototype[i]=function(){};}},set_browser_infos:function(o){ua=navigator.userAgent;o.isWebKit=/WebKit/.test(ua);o.isGecko=!o.isWebKit&&/Gecko/.test(ua);o.isMac=/Mac/.test(ua);o.isIE=(navigator.appName=="Microsoft Internet Explorer");if(o.isIE){o.isIE=ua.replace(/^.*?MSIE\s+([0-9\.]+).*$/,"$1");if(o.isIE<6)o.has_error();}if(o.isOpera=(ua.indexOf('Opera')!=-1)){o.isOpera=ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i,"$1");if(o.isOpera<9)o.has_error();o.isIE=false;}if(o.isFirefox=(ua.indexOf('Firefox')!=-1))o.isFirefox=ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i,"$1");if(ua.indexOf('Iceweasel')!=-1)o.isFirefox=ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i,"$1");if(ua.indexOf('GranParadiso')!=-1)o.isFirefox=ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i,"$1");if(ua.indexOf('BonEcho')!=-1)o.isFirefox=ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i,"$1");if(ua.indexOf('SeaMonkey')!=-1)o.isFirefox=(ua.replace(/^.*?SeaMonkey.*?([0-9\.]+).*$/i,"$1"))+1;if(o.isCamino=(ua.indexOf('Camino')!=-1))o.isCamino=ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i,"$1");if(o.isSafari=(ua.indexOf('Safari')!=-1))o.isSafari=ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i,"$1");if(o.isChrome=(ua.indexOf('Chrome')!=-1)){o.isChrome=ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i,"$1");o.isSafari=false;}},window_loaded:function(){eAL.win="loaded";if(document.forms){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];form.edit_area_replaced_submit=null;try{form.edit_area_replaced_submit=form.onsubmit;form.onsubmit="";}catch(e){}eAL.add_event(form,"submit",EAL.prototype.submit);eAL.add_event(form,"reset",EAL.prototype.reset);}}eAL.add_event(window,"unload",function(){for(var i in eAs){eAL.delete_instance(i);}});},init_ie_textarea:function(id){var a=document.getElementById(id);try{if(a&&typeof(a.focused)=="undefined"){a.focus();a.focused=true;a.selectionStart=a.selectionEnd=0;get_IE_selection(a);eAL.add_event(a,"focus",IE_textarea_focus);eAL.add_event(a,"blur",IE_textarea_blur);}}catch(ex){}},init:function(settings){var t=this,s=settings,i;if(!s["id"])t.has_error();if(t.error)return;if(eAs[s["id"]])t.delete_instance(s["id"]);for(i in t.default_settings){if(typeof(s[i])=="undefined")s[i]=t.default_settings[i];}if(s["browsers"]=="known"&&t.isValidBrowser==false){return;}if(s["begin_toolbar"].length>0)s["toolbar"]=s["begin_toolbar"]+","+s["toolbar"];if(s["end_toolbar"].length>0)s["toolbar"]=s["toolbar"]+","+s["end_toolbar"];s["tab_toolbar"]=s["toolbar"].replace(/ /g,"").split(",");s["plugins"]=s["plugins"].replace(/ /g,"").split(",");for(i=0;i<s["plugins"].length;i++){if(s["plugins"][i].length==0)s["plugins"].splice(i,1);}t.get_template();t.load_script(t.baseURL+"langs/"+s["language"]+".js");if(s["syntax"].length>0){s["syntax"]=s["syntax"].toLowerCase();t.load_script(t.baseURL+"reg_syntax/"+s["syntax"]+".js");}eAs[s["id"]]={"settings":s};eAs[s["id"]]["displayed"]=false;eAs[s["id"]]["hidden"]=false;t.start(s["id"]);},delete_instance:function(id){var d=document,fs=window.frames,span,iframe;eAL.execCommand(id,"EA_delete");if(fs["frame_"+id]&&fs["frame_"+id].editArea){if(eAs[id]["displayed"])eAL.toggle(id,"off");fs["frame_"+id].editArea.execCommand("EA_unload");}span=d.getElementById("EditAreaArroundInfos_"+id);if(span)span.parentNode.removeChild(span);iframe=d.getElementById("frame_"+id);if(iframe){iframe.parentNode.removeChild(iframe);try{delete fs["frame_"+id];}catch(e){}}delete eAs[id];},start:function(id){var t=this,d=document,f,span,father,next,html='',html_toolbar_content='',template,content,i;if(t.win!="loaded"){setTimeout("eAL.start('"+id+"');",50);return;}for(i in t.waiting_loading){if(t.waiting_loading[i]!="loaded"&&typeof(t.waiting_loading[i])!="function"){setTimeout("eAL.start('"+id+"');",50);return;}}if(!t.lang[eAs[id]["settings"]["language"]]||(eAs[id]["settings"]["syntax"].length>0&&!t.load_syntax[eAs[id]["settings"]["syntax"]])){setTimeout("eAL.start('"+id+"');",50);return;}if(eAs[id]["settings"]["syntax"].length>0)t.init_syntax_regexp();if(!d.getElementById("EditAreaArroundInfos_"+id)&&(eAs[id]["settings"]["debug"]||eAs[id]["settings"]["allow_toggle"])){span=d.createElement("span");span.id="EditAreaArroundInfos_"+id;if(eAs[id]["settings"]["allow_toggle"]){checked=(eAs[id]["settings"]["display"]=="onload")?"checked='checked'":"";html+="<div id='edit_area_toggle_"+i+"'>";html+="<input id='edit_area_toggle_checkbox_"+id+"' class='toggle_"+id+"' type='checkbox' onclick='eAL.toggle(\""+id+"\");' accesskey='e' "+checked+" />";html+="<label for='edit_area_toggle_checkbox_"+id+"'>{$toggle}</label></div>";}if(eAs[id]["settings"]["debug"])html+="<textarea id='edit_area_debug_"+id+"' spellcheck='off' style='z-index:20;width:100%;height:120px;overflow:auto;border:solid black 1px;'></textarea><br />";html=t.translate(html,eAs[id]["settings"]["language"]);span.innerHTML=html;father=d.getElementById(id).parentNode;next=d.getElementById(id).nextSibling;if(next==null)father.appendChild(span);
+else father.insertBefore(span,next);}if(!eAs[id]["initialized"]){t.execCommand(id,"EA_init");if(eAs[id]["settings"]["display"]=="later"){eAs[id]["initialized"]=true;return;}}if(t.isIE){t.init_ie_textarea(id);}var area=eAs[id];for(i=0;i<area["settings"]["tab_toolbar"].length;i++){html_toolbar_content+=t.get_control_html(area["settings"]["tab_toolbar"][i],area["settings"]["language"]);}html_toolbar_content=t.translate(html_toolbar_content,area["settings"]["language"],"template");if(!t.iframe_script){t.iframe_script="";for(i=0;i<t.sub_scripts_to_load.length;i++)t.iframe_script+='<script language="javascript" type="text/javascript" src="'+t.baseURL+t.sub_scripts_to_load[i]+'.js"></script>';}for(i=0;i<area["settings"]["plugins"].length;i++){if(!t.all_plugins_loaded)t.iframe_script+='<script language="javascript" type="text/javascript" src="'+t.baseURL+'plugins/'+area["settings"]["plugins"][i]+'/'+area["settings"]["plugins"][i]+'.js"></script>';t.iframe_script+='<script language="javascript" type="text/javascript" src="'+t.baseURL+'plugins/'+area["settings"]["plugins"][i]+'/langs/'+area["settings"]["language"]+'.js"></script>';}if(!t.iframe_css){t.iframe_css="<link href='"+t.baseURL+"edit_area.css' rel='stylesheet' type='text/css' />";}template=t.template.replace(/\[__BASEURL__\]/g,t.baseURL);template=template.replace("[__TOOLBAR__]",html_toolbar_content);template=t.translate(template,area["settings"]["language"],"template");template=template.replace("[__CSSRULES__]",t.iframe_css);template=template.replace("[__JSCODE__]",t.iframe_script);template=template.replace("[__EA_VERSION__]",t.version);area.textarea=d.getElementById(area["settings"]["id"]);eAs[area["settings"]["id"]]["textarea"]=area.textarea;if(typeof(window.frames["frame_"+area["settings"]["id"]])!='undefined')delete window.frames["frame_"+area["settings"]["id"]];father=area.textarea.parentNode;content=d.createElement("iframe");content.name="frame_"+area["settings"]["id"];content.id="frame_"+area["settings"]["id"];content.style.borderWidth="0px";setAttribute(content,"frameBorder","0");content.style.overflow="hidden";content.style.display="none";next=area.textarea.nextSibling;if(next==null)father.appendChild(content);
+else father.insertBefore(content,next);f=window.frames["frame_"+area["settings"]["id"]];f.document.open();f.eAs=eAs;f.area_id=area["settings"]["id"];f.document.area_id=area["settings"]["id"];f.document.write(template);f.document.close();},toggle:function(id,toggle_to){if(!toggle_to)toggle_to=(eAs[id]["displayed"]==true)?"off":"on";if(eAs[id]["displayed"]==true&&toggle_to=="off"){this.toggle_off(id);}
+else if(eAs[id]["displayed"]==false&&toggle_to=="on"){this.toggle_on(id);}return false;},toggle_off:function(id){var fs=window.frames,f,t,parNod,nxtSib,selStart,selEnd,scrollTop,scrollLeft;if(fs["frame_"+id]){f=fs["frame_"+id];t=eAs[id]["textarea"];if(f.editArea.fullscreen['isFull'])f.editArea.toggle_full_screen(false);eAs[id]["displayed"]=false;t.wrap="off";setAttribute(t,"wrap","off");parNod=t.parentNode;nxtSib=t.nextSibling;parNod.removeChild(t);parNod.insertBefore(t,nxtSib);t.value=f.editArea.textarea.value;selStart=f.editArea.last_selection["selectionStart"];selEnd=f.editArea.last_selection["selectionEnd"];scrollTop=f.document.getElementById("result").scrollTop;scrollLeft=f.document.getElementById("result").scrollLeft;document.getElementById("frame_"+id).style.display='none';t.style.display="inline";try{t.focus();}catch(e){};if(this.isIE){t.selectionStart=selStart;t.selectionEnd=selEnd;t.focused=true;set_IE_selection(t);}
+else{if(this.isOpera&&this.isOpera < 9.6){t.setSelectionRange(0,0);}try{t.setSelectionRange(selStart,selEnd);}catch(e){};}t.scrollTop=scrollTop;t.scrollLeft=scrollLeft;f.editArea.execCommand("toggle_off");}},toggle_on:function(id){var fs=window.frames,f,t,selStart=0,selEnd=0,scrollTop=0,scrollLeft=0,curPos,elem;if(fs["frame_"+id]){f=fs["frame_"+id];t=eAs[id]["textarea"];area=f.editArea;area.textarea.value=t.value;curPos=eAs[id]["settings"]["cursor_position"];if(t.use_last==true){selStart=t.last_selectionStart;selEnd=t.last_selectionEnd;scrollTop=t.last_scrollTop;scrollLeft=t.last_scrollLeft;t.use_last=false;}
+else if(curPos=="auto"){try{selStart=t.selectionStart;selEnd=t.selectionEnd;scrollTop=t.scrollTop;scrollLeft=t.scrollLeft;}catch(ex){}}this.set_editarea_size_from_textarea(id,document.getElementById("frame_"+id));t.style.display="none";document.getElementById("frame_"+id).style.display="inline";area.execCommand("focus");eAs[id]["displayed"]=true;area.execCommand("update_size");f.document.getElementById("result").scrollTop=scrollTop;f.document.getElementById("result").scrollLeft=scrollLeft;area.area_select(selStart,selEnd-selStart);area.execCommand("toggle_on");}
+else{elem=document.getElementById(id);elem.last_selectionStart=elem.selectionStart;elem.last_selectionEnd=elem.selectionEnd;elem.last_scrollTop=elem.scrollTop;elem.last_scrollLeft=elem.scrollLeft;elem.use_last=true;eAL.start(id);}},set_editarea_size_from_textarea:function(id,frame){var elem,width,height;elem=document.getElementById(id);width=Math.max(eAs[id]["settings"]["min_width"],elem.offsetWidth)+"px";height=Math.max(eAs[id]["settings"]["min_height"],elem.offsetHeight)+"px";if(elem.style.width.indexOf("%")!=-1)width=elem.style.width;if(elem.style.height.indexOf("%")!=-1)height=elem.style.height;frame.style.width=width;frame.style.height=height;},set_base_url:function(){var t=this,elems,i,docBasePath;if(!this.baseURL){elems=document.getElementsByTagName('script');for(i=0;i<elems.length;i++){if(elems[i].src&&elems[i].src.match(/edit_area_[^\\\/]*$/i)){var src=unescape(elems[i].src);src=src.substring(0,src.lastIndexOf('/'));this.baseURL=src;this.file_name=elems[i].src.substr(elems[i].src.lastIndexOf("/")+1);break;}}}docBasePath=document.location.href;if(docBasePath.indexOf('?')!=-1)docBasePath=docBasePath.substring(0,docBasePath.indexOf('?'));docBasePath=docBasePath.substring(0,docBasePath.lastIndexOf('/'));if(t.baseURL.indexOf('://')==-1&&t.baseURL.charAt(0)!='/'){t.baseURL=docBasePath+"/"+t.baseURL;}t.baseURL+="/";},get_button_html:function(id,img,exec,isFileSpecific,baseURL){var cmd,html;if(!baseURL)baseURL=this.baseURL;cmd='editArea.execCommand(\''+exec+'\')';html='<a id="a_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+';return false;" onmousedown="return false;" target="_self" fileSpecific="'+(isFileSpecific?'yes':'no')+'">';html+='<img id="'+id+'" src="'+baseURL+'images/'+img+'" title="{$'+id+'}" width="20" height="20" class="editAreaButtonNormal" onmouseover="editArea.switchClass(this,\'editAreaButtonOver\');" onmouseout="editArea.restoreClass(this);" onmousedown="editArea.restoreAndSwitchClass(this,\'editAreaButtonDown\');" /></a>';return html;},get_control_html:function(button_name,lang){var t=this,i,but,html,si;for(i=0;i<t.advanced_buttons.length;i++){but=t.advanced_buttons[i];if(but[0]==button_name){return t.get_button_html(but[0],but[1],but[2],but[3]);}}switch(button_name){case "*":case "return":return "<br />";case "|":case "separator":return '<img src="'+t.baseURL+'images/spacer.gif" width="1" height="15" class="editAreaSeparatorLine">';case "select_font":html="<select id='area_font_size' onchange='javascript:editArea.execCommand(\"change_font_size\")' fileSpecific='yes'>";html+="<option value='-1'>{$font_size}</option>";si=[8,9,10,11,12,14];for(i=0;i<si.length;i++){html+="<option value='"+si[i]+"'>"+si[i]+" pt</option>";}html+="</select>";return html;case "syntax_selection":html="<select id='syntax_selection' onchange='javascript:editArea.execCommand(\"change_syntax\",this.value)' fileSpecific='yes'>";html+="<option value='-1'>{$syntax_selection}</option>";html+="</select>";return html;}return "<span id='tmp_tool_"+button_name+"'>["+button_name+"]</span>";},get_template:function(){if(this.template==""){var xhr_object=null;if(window.XMLHttpRequest)xhr_object=new XMLHttpRequest();
+else if(window.ActiveXObject)xhr_object=new ActiveXObject("Microsoft.XMLHTTP");
+else{alert("XMLHTTPRequest not supported. EditArea not loaded");return;}xhr_object.open("GET",this.baseURL+"template.html",false);xhr_object.send(null);if(xhr_object.readyState==4)this.template=xhr_object.responseText;
+else this.has_error();}},translate:function(text,lang,mode){if(mode=="word")text=eAL.get_word_translation(text,lang);
+else if(mode="template"){eAL.current_language=lang;text=text.replace(/\{\$([^\}]+)\}/gm,eAL.translate_template);}return text;},translate_template:function(){return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1],eAL.current_language);},get_word_translation:function(val,lang){var i;for(i in eAL.lang[lang]){if(i==val)return eAL.lang[lang][i];}return "_"+val;},load_script:function(url){var t=this,d=document,script,head;if(t.loadedFiles[url])return;try{script=d.createElement("script");script.type="text/javascript";script.src=url;script.charset="UTF-8";d.getElementsByTagName("head")[0].appendChild(script);}catch(e){d.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'" charset="UTF-8"></sc'+'ript>');}t.loadedFiles[url]=true;},add_event:function(obj,name,handler){try{if(obj.attachEvent){obj.attachEvent("on"+name,handler);}
+else{obj.addEventListener(name,handler,false);}}catch(e){}},remove_event:function(obj,name,handler){try{if(obj.detachEvent)obj.detachEvent("on"+name,handler);
+else obj.removeEventListener(name,handler,false);}catch(e){}},reset:function(e){var formObj,is_child,i,x;formObj=eAL.isIE ? window.event.srcElement:e.target;if(formObj.tagName!='FORM')formObj=formObj.form;for(i in eAs){is_child=false;for(x=0;x<formObj.elements.length;x++){if(formObj.elements[x].id==i)is_child=true;}if(window.frames["frame_"+i]&&is_child&&eAs[i]["displayed"]==true){var exec='window.frames["frame_'+i+'"].editArea.textarea.value=document.getElementById("'+i+'").value;';exec+='window.frames["frame_'+i+'"].editArea.execCommand("focus");';exec+='window.frames["frame_'+i+'"].editArea.check_line_selection();';exec+='window.frames["frame_'+i+'"].editArea.execCommand("reset");';window.setTimeout(exec,10);}}return;},submit:function(e){var formObj,is_child,fs=window.frames,i,x;formObj=eAL.isIE ? window.event.srcElement:e.target;if(formObj.tagName!='FORM')formObj=formObj.form;for(i in eAs){is_child=false;for(x=0;x<formObj.elements.length;x++){if(formObj.elements[x].id==i)is_child=true;}if(is_child){if(fs["frame_"+i]&&eAs[i]["displayed"]==true)document.getElementById(i).value=fs["frame_"+i].editArea.textarea.value;eAL.execCommand(i,"EA_submit");}}if(typeof(formObj.edit_area_replaced_submit)=="function"){res=formObj.edit_area_replaced_submit();if(res==false){if(eAL.isIE)return false;
+else e.preventDefault();}}return;},getValue:function(id){if(window.frames["frame_"+id]&&eAs[id]["displayed"]==true){return window.frames["frame_"+id].editArea.textarea.value;}
+else if(elem=document.getElementById(id)){return elem.value;}return false;},setValue:function(id,new_val){var fs=window.frames;if((f=fs["frame_"+id])&&eAs[id]["displayed"]==true){f.editArea.textarea.value=new_val;f.editArea.execCommand("focus");f.editArea.check_line_selection(false);f.editArea.execCommand("onchange");}
+else if(elem=document.getElementById(id)){elem.value=new_val;}},getSelectionRange:function(id){var sel,eA,fs=window.frames;sel={"start":0,"end":0};if(fs["frame_"+id]&&eAs[id]["displayed"]==true){eA=fs["frame_"+id].editArea;sel["start"]=eA.textarea.selectionStart;sel["end"]=eA.textarea.selectionEnd;}
+else if(elem=document.getElementById(id)){sel=getSelectionRange(elem);}return sel;},setSelectionRange:function(id,new_start,new_end){var fs=window.frames;if(fs["frame_"+id]&&eAs[id]["displayed"]==true){fs["frame_"+id].editArea.area_select(new_start,new_end-new_start);if(!this.isIE){fs["frame_"+id].editArea.check_line_selection(false);fs["frame_"+id].editArea.scroll_to_view();}}
+else if(elem=document.getElementById(id)){setSelectionRange(elem,new_start,new_end);}},getSelectedText:function(id){var sel=this.getSelectionRange(id);return this.getValue(id).substring(sel["start"],sel["end"]);},setSelectedText:function(id,new_val){var fs=window.frames,d=document,sel,text,scrollTop,scrollLeft,new_sel_end;new_val=new_val.replace(/\r/g,"");sel=this.getSelectionRange(id);text=this.getValue(id);if(fs["frame_"+id]&&eAs[id]["displayed"]==true){scrollTop=fs["frame_"+id].document.getElementById("result").scrollTop;scrollLeft=fs["frame_"+id].document.getElementById("result").scrollLeft;}
+else{scrollTop=d.getElementById(id).scrollTop;scrollLeft=d.getElementById(id).scrollLeft;}text=text.substring(0,sel["start"])+new_val+text.substring(sel["end"]);this.setValue(id,text);new_sel_end=sel["start"]+new_val.length;this.setSelectionRange(id,sel["start"],new_sel_end);if(new_val !=this.getSelectedText(id).replace(/\r/g,"")){this.setSelectionRange(id,sel["start"],new_sel_end+new_val.split("\n").length-1);}if(fs["frame_"+id]&&eAs[id]["displayed"]==true){fs["frame_"+id].document.getElementById("result").scrollTop=scrollTop;fs["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;fs["frame_"+id].editArea.execCommand("onchange");}
+else{d.getElementById(id).scrollTop=scrollTop;d.getElementById(id).scrollLeft=scrollLeft;}},insertTags:function(id,open_tag,close_tag){var old_sel,new_sel;old_sel=this.getSelectionRange(id);text=open_tag+this.getSelectedText(id)+close_tag;eAL.setSelectedText(id,text);new_sel=this.getSelectionRange(id);if(old_sel["end"] > old_sel["start"])this.setSelectionRange(id,new_sel["end"],new_sel["end"]);
+else this.setSelectionRange(id,old_sel["start"]+open_tag.length,old_sel["start"]+open_tag.length);},hide:function(id){var fs=window.frames,d=document,t=this,scrollTop,scrollLeft,span;if(d.getElementById(id)&&!t.hidden[id]){t.hidden[id]={};t.hidden[id]["selectionRange"]=t.getSelectionRange(id);if(d.getElementById(id).style.display!="none"){t.hidden[id]["scrollTop"]=d.getElementById(id).scrollTop;t.hidden[id]["scrollLeft"]=d.getElementById(id).scrollLeft;}if(fs["frame_"+id]){t.hidden[id]["toggle"]=eAs[id]["displayed"];if(fs["frame_"+id]&&eAs[id]["displayed"]==true){scrollTop=fs["frame_"+id].document.getElementById("result").scrollTop;scrollLeft=fs["frame_"+id].document.getElementById("result").scrollLeft;}
+else{scrollTop=d.getElementById(id).scrollTop;scrollLeft=d.getElementById(id).scrollLeft;}t.hidden[id]["scrollTop"]=scrollTop;t.hidden[id]["scrollLeft"]=scrollLeft;if(eAs[id]["displayed"]==true)eAL.toggle_off(id);}span=d.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='none';}d.getElementById(id).style.display="none";}},show:function(id){var fs=window.frames,d=document,t=this,span;if((elem=d.getElementById(id))&&t.hidden[id]){elem.style.display="inline";elem.scrollTop=t.hidden[id]["scrollTop"];elem.scrollLeft=t.hidden[id]["scrollLeft"];span=d.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='inline';}if(fs["frame_"+id]){elem.style.display="inline";if(t.hidden[id]["toggle"]==true)eAL.toggle_on(id);scrollTop=t.hidden[id]["scrollTop"];scrollLeft=t.hidden[id]["scrollLeft"];if(fs["frame_"+id]&&eAs[id]["displayed"]==true){fs["frame_"+id].document.getElementById("result").scrollTop=scrollTop;fs["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;}
+else{elem.scrollTop=scrollTop;elem.scrollLeft=scrollLeft;}}sel=t.hidden[id]["selectionRange"];t.setSelectionRange(id,sel["start"],sel["end"]);delete t.hidden[id];}},getCurrentFile:function(id){return this.execCommand(id,'get_file',this.execCommand(id,'curr_file'));},getFile:function(id,file_id){return this.execCommand(id,'get_file',file_id);},getAllFiles:function(id){return this.execCommand(id,'get_all_files()');},openFile:function(id,file_infos){return this.execCommand(id,'open_file',file_infos);},closeFile:function(id,file_id){return this.execCommand(id,'close_file',file_id);},setFileEditedMode:function(id,file_id,to){var reg1,reg2;reg1=new RegExp('\\\\','g');reg2=new RegExp('"','g');return this.execCommand(id,'set_file_edited_mode("'+file_id.replace(reg1,'\\\\').replace(reg2,'\\"')+'",'+to+')');},execCommand:function(id,cmd,fct_param){switch(cmd){case "EA_init":if(eAs[id]['settings']["EA_init_callback"].length>0)eval(eAs[id]['settings']["EA_init_callback"]+"('"+id+"');");break;case "EA_delete":if(eAs[id]['settings']["EA_delete_callback"].length>0)eval(eAs[id]['settings']["EA_delete_callback"]+"('"+id+"');");break;case "EA_submit":if(eAs[id]['settings']["submit_callback"].length>0)eval(eAs[id]['settings']["submit_callback"]+"('"+id+"');");break;}if(window.frames["frame_"+id]&&window.frames["frame_"+id].editArea){if(fct_param!=undefined)return eval('window.frames["frame_'+id+'"].editArea.'+cmd+'(fct_param);');
+else return eval('window.frames["frame_'+id+'"].editArea.'+cmd+';');}return false;}};var eAL=new EAL();var eAs={}; function getAttribute(elm,aName){var aValue,taName,i;try{aValue=elm.getAttribute(aName);}catch(exept){}if(! aValue){for(i=0;i < elm.attributes.length;i++){taName=elm.attributes[i] .name.toLowerCase();if(taName==aName){aValue=elm.attributes[i] .value;return aValue;}}}return aValue;};function setAttribute(elm,attr,val){if(attr=="class"){elm.setAttribute("className",val);elm.setAttribute("class",val);}
+else{elm.setAttribute(attr,val);}};function getChildren(elem,elem_type,elem_attribute,elem_attribute_match,option,depth){if(!option)var option="single";if(!depth)var depth=-1;if(elem){var children=elem.childNodes;var result=null;var results=[];for(var x=0;x<children.length;x++){strTagName=new String(children[x].tagName);children_class="?";if(strTagName!="undefined"){child_attribute=getAttribute(children[x],elem_attribute);if((strTagName.toLowerCase()==elem_type.toLowerCase()||elem_type=="")&&(elem_attribute==""||child_attribute==elem_attribute_match)){if(option=="all"){results.push(children[x]);}
+else{return children[x];}}if(depth!=0){result=getChildren(children[x],elem_type,elem_attribute,elem_attribute_match,option,depth-1);if(option=="all"){if(result.length>0){results=results.concat(result);}}
+else if(result!=null){return result;}}}}if(option=="all")return results;}return null;};function isChildOf(elem,parent){if(elem){if(elem==parent)return true;while(elem.parentNode !='undefined'){return isChildOf(elem.parentNode,parent);}}return false;};function getMouseX(e){if(e!=null&&typeof(e.pageX)!="undefined"){return e.pageX;}
+else{return(e!=null?e.x:event.x)+document.documentElement.scrollLeft;}};function getMouseY(e){if(e!=null&&typeof(e.pageY)!="undefined"){return e.pageY;}
+else{return(e!=null?e.y:event.y)+document.documentElement.scrollTop;}};function calculeOffsetLeft(r){return calculeOffset(r,"offsetLeft")};function calculeOffsetTop(r){return calculeOffset(r,"offsetTop")};function calculeOffset(element,attr){var offset=0;while(element){offset+=element[attr];element=element.offsetParent}return offset;};function get_css_property(elem,prop){if(document.defaultView){return document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop);}
+else if(elem.currentStyle){var prop=prop.replace(/-\D/gi,function(sMatch){return sMatch.charAt(sMatch.length-1).toUpperCase();});return elem.currentStyle[prop];}
+else return null;}var _mCE;function start_move_element(e,id,frame){var elem_id=(e.target||e.srcElement).id;if(id)elem_id=id;if(!frame)frame=window;if(frame.event)e=frame.event;_mCE=frame.document.getElementById(elem_id);_mCE.frame=frame;frame.document.onmousemove=move_element;frame.document.onmouseup=end_move_element;mouse_x=getMouseX(e);mouse_y=getMouseY(e);_mCE.start_pos_x=mouse_x-(_mCE.style.left.replace("px","")||calculeOffsetLeft(_mCE));_mCE.start_pos_y=mouse_y-(_mCE.style.top.replace("px","")||calculeOffsetTop(_mCE));return false;};function end_move_element(e){_mCE.frame.document.onmousemove="";_mCE.frame.document.onmouseup="";_mCE=null;};function move_element(e){var newTop,newLeft,maxLeft;if(_mCE.frame&&_mCE.frame.event)e=_mCE.frame.event;newTop=getMouseY(e)-_mCE.start_pos_y;newLeft=getMouseX(e)-_mCE.start_pos_x;maxLeft=_mCE.frame.document.body.offsetWidth-_mCE.offsetWidth;max_top=_mCE.frame.document.body.offsetHeight-_mCE.offsetHeight;newTop=Math.min(Math.max(0,newTop),max_top);newLeft=Math.min(Math.max(0,newLeft),maxLeft);_mCE.style.top=newTop+"px";_mCE.style.left=newLeft+"px";return false;};var nav=eAL.nav;function getSelectionRange(textarea){return{"start":textarea.selectionStart,"end":textarea.selectionEnd};};function setSelectionRange(t,start,end){t.focus();start=Math.max(0,Math.min(t.value.length,start));end=Math.max(start,Math.min(t.value.length,end));if(nav.isOpera&&nav.isOpera < 9.6){t.selectionEnd=1;t.selectionStart=0;t.selectionEnd=1;t.selectionStart=0;}t.selectionStart=start;t.selectionEnd=end;if(nav.isIE)set_IE_selection(t);};function get_IE_selection(t){var d=document,div,range,stored_range,elem,scrollTop,relative_top,line_start,line_nb,range_start,range_end,tab;if(t&&t.focused){if(!t.ea_line_height){div=d.createElement("div");div.style.fontFamily=get_css_property(t,"font-family");div.style.fontSize=get_css_property(t,"font-size");div.style.visibility="hidden";div.innerHTML="0";d.body.appendChild(div);t.ea_line_height=div.offsetHeight;d.body.removeChild(div);}range=d.selection.createRange();try{stored_range=range.duplicate();stored_range.moveToElementText(t);stored_range.setEndPoint('EndToEnd',range);if(stored_range.parentElement()==t){elem=t;scrollTop=0;while(elem.parentNode){scrollTop+=elem.scrollTop;elem=elem.parentNode;}relative_top=range.offsetTop-calculeOffsetTop(t)+scrollTop;line_start=Math.round((relative_top / t.ea_line_height)+1);line_nb=Math.round(range.boundingHeight / t.ea_line_height);range_start=stored_range.text.length-range.text.length;tab=t.value.substr(0,range_start).split("\n");range_start+=(line_start-tab.length)*2;t.selectionStart=range_start;range_end=t.selectionStart+range.text.length;tab=t.value.substr(0,range_start+range.text.length).split("\n");range_end+=(line_start+line_nb-1-tab.length)*2;t.selectionEnd=range_end;}}catch(e){}}if(t&&t.id){setTimeout("get_IE_selection(document.getElementById('"+t.id+"'));",50);}};function IE_textarea_focus(){event.srcElement.focused=true;}function IE_textarea_blur(){event.srcElement.focused=false;}function set_IE_selection(t){var nbLineStart,nbLineStart,nbLineEnd,range;if(!window.closed){nbLineStart=t.value.substr(0,t.selectionStart).split("\n").length-1;nbLineEnd=t.value.substr(0,t.selectionEnd).split("\n").length-1;try{range=document.selection.createRange();range.moveToElementText(t);range.setEndPoint('EndToStart',range);range.moveStart('character',t.selectionStart-nbLineStart);range.moveEnd('character',t.selectionEnd-nbLineEnd-(t.selectionStart-nbLineStart));range.select();}catch(e){}}};eAL.waiting_loading["elements_functions.js"]="loaded";
+ EAL.prototype.start_resize_area=function(){var d=document,a,div,width,height,father;d.onmouseup=eAL.end_resize_area;d.onmousemove=eAL.resize_area;eAL.toggle(eAL.resize["id"]);a=eAs[eAL.resize["id"]]["textarea"];div=d.getElementById("edit_area_resize");if(!div){div=d.createElement("div");div.id="edit_area_resize";div.style.border="dashed #888888 1px";}width=a.offsetWidth-2;height=a.offsetHeight-2;div.style.display="block";div.style.width=width+"px";div.style.height=height+"px";father=a.parentNode;father.insertBefore(div,a);a.style.display="none";eAL.resize["start_top"]=calculeOffsetTop(div);eAL.resize["start_left"]=calculeOffsetLeft(div);};EAL.prototype.end_resize_area=function(e){var d=document,div,a,width,height;d.onmouseup="";d.onmousemove="";div=d.getElementById("edit_area_resize");a=eAs[eAL.resize["id"]]["textarea"];width=Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"],div.offsetWidth-4);height=Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"],div.offsetHeight-4);if(eAL.isIE==6){width-=2;height-=2;}a.style.width=width+"px";a.style.height=height+"px";div.style.display="none";a.style.display="inline";a.selectionStart=eAL.resize["selectionStart"];a.selectionEnd=eAL.resize["selectionEnd"];eAL.toggle(eAL.resize["id"]);return false;};EAL.prototype.resize_area=function(e){var allow,newHeight,newWidth;allow=eAs[eAL.resize["id"]]["settings"]["allow_resize"];if(allow=="both"||allow=="y"){newHeight=Math.max(20,getMouseY(e)-eAL.resize["start_top"]);document.getElementById("edit_area_resize").style.height=newHeight+"px";}if(allow=="both"||allow=="x"){newWidth=Math.max(20,getMouseX(e)-eAL.resize["start_left"]);document.getElementById("edit_area_resize").style.width=newWidth+"px";}return false;};eAL.waiting_loading["resize_area.js"]="loaded";
+	EAL.prototype.get_regexp=function(text_array){res="(\\b)(";for(i=0;i<text_array.length;i++){if(i>0)res+="|";res+=this.get_escaped_regexp(text_array[i]);}res+=")(\\b)";reg=new RegExp(res);return res;};EAL.prototype.get_escaped_regexp=function(str){return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g,"\\$1");};EAL.prototype.init_syntax_regexp=function(){var lang_style={};for(var lang in this.load_syntax){if(!this.syntax[lang]){this.syntax[lang]={};this.syntax[lang]["keywords_reg_exp"]={};this.keywords_reg_exp_nb=0;if(this.load_syntax[lang]['KEYWORDS']){param="g";if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)param+="i";for(var i in this.load_syntax[lang]['KEYWORDS']){if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function")continue;this.syntax[lang]["keywords_reg_exp"][i]=new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i]),param);this.keywords_reg_exp_nb++;}}if(this.load_syntax[lang]['OPERATORS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['OPERATORS']){if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);nb++;}if(str.length>0)this.syntax[lang]["operators_reg_exp"]=new RegExp("("+str+")","g");}if(this.load_syntax[lang]['DELIMITERS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['DELIMITERS']){if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function")continue;if(nb>0)str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);nb++;}if(str.length>0)this.syntax[lang]["delimiters_reg_exp"]=new RegExp("("+str+")","g");}var syntax_trace=[];this.syntax[lang]["quotes"]={};var quote_tab=[];if(this.load_syntax[lang]['QUOTEMARKS']){for(var i in this.load_syntax[lang]['QUOTEMARKS']){if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);this.syntax[lang]["quotes"][x]=x;quote_tab[quote_tab.length]="("+x+"(\\\\.|[^"+x+"])*(?:"+x+"|$))";syntax_trace.push(x);}}this.syntax[lang]["comments"]={};if(this.load_syntax[lang]['COMMENT_SINGLE']){for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function")continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";syntax_trace.push(x);this.syntax[lang]["comments"][x]="\n";}}if(this.load_syntax[lang]['COMMENT_MULTI']){for(var i in this.load_syntax[lang]['COMMENT_MULTI']){if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function")continue;var start=this.get_escaped_regexp(i);var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";syntax_trace.push(start);syntax_trace.push(end);this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];}}if(quote_tab.length>0)this.syntax[lang]["comment_or_quote_reg_exp"]=new RegExp("("+quote_tab.join("|")+")","gi");if(syntax_trace.length>0)this.syntax[lang]["syntax_trace_regexp"]=new RegExp("((.|\n)*?)(\\\\*("+syntax_trace.join("|")+"|$))","gmi");if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){this.syntax[lang]["script_delimiters"]={};for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function")continue;this.syntax[lang]["script_delimiters"][i]=this.load_syntax[lang]['SCRIPT_DELIMITERS'];}}this.syntax[lang]["custom_regexp"]={};if(this.load_syntax[lang]['REGEXPS']){for(var i in this.load_syntax[lang]['REGEXPS']){if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function")continue;var val=this.load_syntax[lang]['REGEXPS'][i];if(!this.syntax[lang]["custom_regexp"][val['execute']])this.syntax[lang]["custom_regexp"][val['execute']]={};this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp':new RegExp(val['search'],val['modifiers']),'class':val['class']};}}if(this.load_syntax[lang]['STYLES']){lang_style[lang]={};for(var i in this.load_syntax[lang]['STYLES']){if(typeof(this.load_syntax[lang]['STYLES'][i])=="function")continue;if(typeof(this.load_syntax[lang]['STYLES'][i])!="string"){for(var j in this.load_syntax[lang]['STYLES'][i]){lang_style[lang][j]=this.load_syntax[lang]['STYLES'][i][j];}}
+else{lang_style[lang][i]=this.load_syntax[lang]['STYLES'][i];}}}var style="";for(var i in lang_style[lang]){if(lang_style[lang][i].length>0){style+="."+lang+" ."+i.toLowerCase()+" span{"+lang_style[lang][i]+"}\n";style+="."+lang+" ."+i.toLowerCase()+"{"+lang_style[lang][i]+"}\n";}}this.syntax[lang]["styles"]=style;}}};eAL.waiting_loading["reg_syntax.js"]="loaded";
+var editAreaLoader= eAL;var editAreas=eAs;EditAreaLoader=EAL;editAreaLoader.iframe_script= "<script type='text/javascript'> Ã EA(){var t=Á;t.error=Ì;t.inlinePopup=[{popup_id:\"area_search_replace\",icon_id:\"search\"},{popup_id:\"edit_area_help\",icon_id:\"help\"}];t.plugins={};t.line_number=0;È.eAL.set_browser_infos(t);if(t.isIE >=8)t.isIE=7;t.É={};t.last_text_to_highlight=\"\";t.last_hightlighted_text=\"\";t.syntax_list=[];t.allready_used_syntax={};t.check_line_selection_timer=50;t.ÂFocused=Ì;t.highlight_selection_line=null;t.previous=[];t.next=[];t.last_undo=\"\";t.files={};t.filesIdAssoc={};t.curr_file='';t.assocBracket={};t.revertAssocBracket={};t.assocBracket[\"(\"]=\")\";t.assocBracket[\"{\"]=\"}\";t.assocBracket[\"[\"]=\"]\";for(var index in t.assocBracket){t.revertAssocBracket[t.assocBracket[index]]=index;}t.is_editable=Ë;t.lineHeight=16;t.tab_nb_char=8;if(t.isOpera)t.tab_nb_char=6;t.is_tabbing=Ì;t.fullscreen={'isFull':Ì};t.isResizing=Ì;t.id=area_id;t.Å=eAs[t.id][\"Å\"];if((\"\"+t.Å['replace_tab_by_spaces']).match(/^[0-9]+$/)){t.tab_nb_char=t.Å['replace_tab_by_spaces'];t.tabulation=\"\";for(var i=0;i<t.tab_nb_char;i++)t.tabulation+=\" \";}\nelse{t.tabulation=\"\t\";}if(t.Å[\"syntax_selection_allow\"]&&t.Å[\"syntax_selection_allow\"].Æ>0)t.syntax_list=t.Å[\"syntax_selection_allow\"].replace(/ /g,\"\").split(\",\");if(t.Å['syntax'])t.allready_used_syntax[t.Å['syntax']]=Ë;};EA.Ä.init=Ã(){var t=Á,a,s=t.Å;t.Â=_$(\"Â\");t.container=_$(\"container\");t.result=_$(\"result\");t.content_highlight=_$(\"content_highlight\");t.selection_field=_$(\"selection_field\");t.selection_field_text=_$(\"selection_field_text\");t.processing_screen=_$(\"processing\");t.editor_area=_$(\"editor\");t.tab_browsing_area=_$(\"tab_browsing_area\");t.test_font_size=_$(\"test_font_size\");a=t.Â;if(!s['is_editable'])t.set_editable(Ì);t.set_show_line_colors(s['show_line_colors']);if(syntax_selec=_$(\"syntax_selection\")){for(var i=0;i<t.syntax_list.Æ;i++){var syntax=t.syntax_list[i];var option=document.createElement(\"option\");option.Ê=syntax;if(syntax==s['syntax'])option.selected=\"selected\";dispSyntax=È.eAL.syntax_display_name[ syntax ];option.innerHTML=typeof(dispSyntax)=='undefined' ? syntax.substring(0,1).toUpperCase()+syntax.substring(1):dispSyntax;syntax_selec.appendChild(option);}}spans=È.getChildren(_$(\"toolbar_1\"),\"span\",\"\",\"\",\"all\",-1);for(var i=0;i<spans.Æ;i++){id=spans[i].id.replace(/tmp_tool_(.*)/,\"$1\");if(id!=spans[i].id){for(var j in t.plugins){if(typeof(t.plugins[j].get_control_html)==\"Ã\"){html=t.plugins[j].get_control_html(id);if(html!=Ì){html=t.get_translation(html,\"template\");var new_span=document.createElement(\"span\");new_span.innerHTML=html;var father=spans[i].ÈNode;spans[i].ÈNode.replaceChild(new_span,spans[i]);break;}}}}}if(s[\"debug\"]){t.debug=È.document.getElementById(\"edit_area_debug_\"+t.id);}if(_$(\"redo\")!=null)t.switchClassSticky(_$(\"redo\"),'editAreaButtonDisabled',Ë);if(typeof(È.eAL.syntax[s[\"syntax\"]])!=\"undefined\"){for(var i in È.eAL.syntax){if(typeof(È.eAL.syntax[i][\"Çs\"])!=\"undefined\"){t.add_Ç(È.eAL.syntax[i][\"Çs\"]);}}}if(t.isOpera)_$(\"editor\").onkeypress=keyDown;\nelse _$(\"editor\").onkeydown=keyDown;for(var i=0;i<t.inlinePopup.Æ;i++){if(t.isOpera)_$(t.inlinePopup[i][\"popup_id\"]).onkeypress=keyDown;\nelse _$(t.inlinePopup[i][\"popup_id\"]).onkeydown=keyDown;}if(s[\"allow_resize\"]==\"both\"||s[\"allow_resize\"]==\"x\"||s[\"allow_resize\"]==\"y\")t.allow_resize(Ë);È.eAL.toggle(t.id,\"on\");t.change_smooth_selection_mode(eA.smooth_selection);t.execCommand(\"change_highlight\",s[\"start_highlight\"]);t.set_font(eA.Å[\"font_family\"],eA.Å[\"font_size\"]);children=È.getChildren(document.body,\"\",\"selec\",\"none\",\"all\",-1);for(var i=0;i<children.Æ;i++){if(t.isIE)children[i].unselectable=Ë;\nelse children[i].onmousedown=Ã(){return Ì};}a.spellcheck=s[\"gecko_spellcheck\"];if(t.isFirefox >='3'){t.content_highlight.Ç.paddingLeft=\"1px\";t.selection_field.Ç.paddingLeft=\"1px\";t.selection_field_text.Ç.paddingLeft=\"1px\";}if(t.isIE&&t.isIE < 8){a.Ç.marginTop=\"-1px\";}if(t.isSafari){t.editor_area.Ç.position=\"absolute\";a.Ç.marginLeft=\"-3px\";if(t.isSafari < 3.2)a.Ç.marginTop=\"1px\";}È.eAL.add_event(t.result,\"click\",Ã(e){if((e.target||e.srcElement)==eA.result){eA.area_select(eA.Â.Ê.Æ,0);}});if(s['is_multi_files']!=Ì)t.open_file({'id':t.curr_file,'text':''});t.set_word_wrap(s['word_wrap']);setTimeout(\"eA.focus();eA.manage_size();eA.execCommand('EA_load');\",10);t.check_undo();t.check_line_selection(Ë);t.scroll_to_view();for(var i in t.plugins){if(typeof(t.plugins[i].onload)==\"Ã\")t.plugins[i].onload();}if(s['fullscreen']==Ë)t.toggle_full_screen(Ë);È.eAL.add_event(window,\"resize\",eA.update_size);È.eAL.add_event(È.window,\"resize\",eA.update_size);È.eAL.add_event(top.window,\"resize\",eA.update_size);È.eAL.add_event(window,\"unload\",Ã(){if(È.eAL){È.eAL.remove_event(È.window,\"resize\",eA.update_size);È.eAL.remove_event(top.window,\"resize\",eA.update_size);}if(eAs[eA.id]&&eAs[eA.id][\"displayed\"]){eA.execCommand(\"EA_unload\");}});};EA.Ä.update_size=Ã(){var d=document,pd=È.document,height,width,popup,maxLeft,maxTop;if(typeof eAs !='undefined'&&eAs[eA.id]&&eAs[eA.id][\"displayed\"]==Ë){if(eA.fullscreen['isFull']){pd.getElementById(\"frame_\"+eA.id).Ç.width=pd.getElementsByTagName(\"html\")[0].clientWidth+\"px\";pd.getElementById(\"frame_\"+eA.id).Ç.height=pd.getElementsByTagName(\"html\")[0].clientHeight+\"px\";}if(eA.tab_browsing_area.Ç.display=='block'&&(!eA.isIE||eA.isIE >=8)){eA.tab_browsing_area.Ç.height=\"0px\";eA.tab_browsing_area.Ç.height=(eA.result.offsetTop-eA.tab_browsing_area.offsetTop-1)+\"px\";}height=d.body.offsetHeight-eA.get_all_toolbar_height()-4;eA.result.Ç.height=height+\"px\";width=d.body.offsetWidth-2;eA.result.Ç.width=width+\"px\";for(i=0;i < eA.inlinePopup.Æ;i++){popup=_$(eA.inlinePopup[i][\"popup_id\"]);maxLeft=d.body.offsetWidth-popup.offsetWidth;maxTop=d.body.offsetHeight-popup.offsetHeight;if(popup.offsetTop > maxTop)popup.Ç.top=maxTop+\"px\";if(popup.offsetLeft > maxLeft)popup.Ç.left=maxLeft+\"px\";}eA.manage_size(Ë);eA.fixLinesHeight(eA.Â.Ê,0,-1);}};EA.Ä.manage_size=Ã(onlyOneTime){if(!eAs[Á.id])return Ì;if(eAs[Á.id][\"displayed\"]==Ë&&Á.ÂFocused){var area_height,resized=Ì;if(!Á.Å['word_wrap']){var area_width=Á.Â.scrollWidth;area_height=Á.Â.scrollHeight;if(Á.isOpera&&Á.isOpera < 9.6){area_width=10000;}if(Á.Â.previous_scrollWidth!=area_width){Á.container.Ç.width=area_width+\"px\";Á.Â.Ç.width=area_width+\"px\";Á.content_highlight.Ç.width=area_width+\"px\";Á.Â.previous_scrollWidth=area_width;resized=Ë;}}if(Á.Å['word_wrap']){newW=Á.Â.offsetWidth;if(Á.isFirefox||Á.isIE)newW-=2;if(Á.isSafari)newW-=6;Á.content_highlight.Ç.width=Á.selection_field_text.Ç.width=Á.selection_field.Ç.width=Á.test_font_size.Ç.width=newW+\"px\";}if(Á.isOpera||Á.isFirefox||Á.isSafari){area_height=Á.getLinePosTop(Á.É[\"nb_line\"]+1);}\nelse{area_height=Á.Â.scrollHeight;}if(Á.Â.previous_scrollHeight!=area_height){Á.container.Ç.height=(area_height+2)+\"px\";Á.Â.Ç.height=area_height+\"px\";Á.content_highlight.Ç.height=area_height+\"px\";Á.Â.previous_scrollHeight=area_height;resized=Ë;}if(Á.É[\"nb_line\"] >=Á.line_number){var newLines='',destDiv=_$(\"line_number\"),start=Á.line_number,end=Á.É[\"nb_line\"]+100;for(i=start+1;i < end;i++){newLines+='<div id=\"line_'+i+'\">'+i+\"</div>\";Á.line_number++;}destDiv.innerHTML=destDiv.innerHTML+newLines;if(Á.Å['word_wrap']){Á.fixLinesHeight(Á.Â.Ê,start,-1);}}Á.Â.scrollTop=\"0px\";Á.Â.scrollLeft=\"0px\";if(resized==Ë){Á.scroll_to_view();}}if(!onlyOneTime)setTimeout(\"eA.manage_size();\",100);};EA.Ä.execCommand=Ã(cmd,param){for(var i in Á.plugins){if(typeof(Á.plugins[i].execCommand)==\"Ã\"){if(!Á.plugins[i].execCommand(cmd,param))return;}}switch(cmd){case \"save\":if(Á.Å[\"save_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"save_callback\"]+\"('\"+Á.id+\"',eA.Â.Ê);\");break;case \"load\":if(Á.Å[\"load_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"load_callback\"]+\"('\"+Á.id+\"');\");break;case \"onchange\":if(Á.Å[\"change_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"change_callback\"]+\"('\"+Á.id+\"');\");break;case \"EA_load\":if(Á.Å[\"EA_load_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_load_callback\"]+\"('\"+Á.id+\"');\");break;case \"EA_unload\":if(Á.Å[\"EA_unload_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_unload_callback\"]+\"('\"+Á.id+\"');\");break;case \"toggle_on\":if(Á.Å[\"EA_toggle_on_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_toggle_on_callback\"]+\"('\"+Á.id+\"');\");break;case \"toggle_off\":if(Á.Å[\"EA_toggle_off_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_toggle_off_callback\"]+\"('\"+Á.id+\"');\");break;case \"re_sync\":if(!Á.do_highlight)break;case \"file_switch_on\":if(Á.Å[\"EA_file_switch_on_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_file_switch_on_callback\"]+\"(param);\");break;case \"file_switch_off\":if(Á.Å[\"EA_file_switch_off_callback\"].Æ>0)eval(\"È.\"+Á.Å[\"EA_file_switch_off_callback\"]+\"(param);\");break;case \"file_close\":if(Á.Å[\"EA_file_close_callback\"].Æ>0)return eval(\"È.\"+Á.Å[\"EA_file_close_callback\"]+\"(param);\");break;default:if(typeof(eval(\"eA.\"+cmd))==\"Ã\"){if(Á.Å[\"debug\"])eval(\"eA.\"+cmd+\"(param);\");\nelse try{eval(\"eA.\"+cmd+\"(param);\");}catch(e){};}}};EA.Ä.get_translation=Ã(word,mode){if(mode==\"template\")return È.eAL.translate(word,Á.Å[\"language\"],mode);\nelse return È.eAL.get_word_translation(word,Á.Å[\"language\"]);};EA.Ä.add_plugin=Ã(plug_name,plug_obj){for(var i=0;i<Á.Å[\"plugins\"].Æ;i++){if(Á.Å[\"plugins\"][i]==plug_name){Á.plugins[plug_name]=plug_obj;plug_obj.baseURL=È.eAL.baseURL+\"plugins/\"+plug_name+\"/\";if(typeof(plug_obj.init)==\"Ã\")plug_obj.init();}}};EA.Ä.load_css=Ã(url){try{link=document.createElement(\"link\");link.type=\"text/css\";link.rel=\"Çsheet\";link.media=\"all\";link.href=url;head=document.getElementsByTagName(\"head\");head[0].appendChild(link);}catch(e){document.write(\"<link href='\"+url+\"' rel='Çsheet' type='text/css' />\");}};EA.Ä.load_script=Ã(url){try{script=document.createElement(\"script\");script.type=\"text/javascript\";script.src=url;script.charset=\"UTF-8\";head=document.getElementsByTagName(\"head\");head[0].appendChild(script);}catch(e){document.write(\"<script type='text/javascript' src='\"+url+\"' charset=\\\"UTF-8\\\"><\"+\"/script>\");}};EA.Ä.add_lang=Ã(language,Ês){if(!È.eAL.lang[language])È.eAL.lang[language]={};for(var i in Ês)È.eAL.lang[language][i]=Ês[i];};Ã _$(id){return document.getElementById(id);};var eA=new EA();È.eAL.add_event(window,\"load\",init);Ã init(){setTimeout(\"eA.init();\",10);};	EA.Ä.focus=Ã(){Á.Â.focus();Á.ÂFocused=Ë;};EA.Ä.check_line_selection=Ã(timer_checkup){var changes,infos,new_top,new_width,i;var t1=t2=t2_1=t3=tLines=tend=new Date().getTime();if(!eAs[Á.id])return Ì;if(!Á.smooth_selection&&!Á.do_highlight){}\nelse if(Á.ÂFocused&&eAs[Á.id][\"displayed\"]==Ë&&Á.isResizing==Ì){infos=Á.get_selection_infos();changes=Á.checkTextEvolution(typeof(Á.É['full_text'])=='undefined' ? '':Á.É['full_text'],infos['full_text']);t2=new Date().getTime();if(Á.É[\"line_start\"] !=infos[\"line_start\"]||Á.É[\"line_nb\"] !=infos[\"line_nb\"]||infos[\"full_text\"] !=Á.É[\"full_text\"]||Á.reload_highlight||Á.É[\"selectionStart\"] !=infos[\"selectionStart\"]||Á.É[\"selectionEnd\"] !=infos[\"selectionEnd\"]||!timer_checkup){new_top=Á.getLinePosTop(infos[\"line_start\"]);new_width=Math.max(Á.Â.scrollWidth,Á.container.clientWidth-50);Á.selection_field.Ç.top=Á.selection_field_text.Ç.top=new_top+\"px\";if(!Á.Å['word_wrap']){Á.selection_field.Ç.width=Á.selection_field_text.Ç.width=Á.test_font_size.Ç.width=new_width+\"px\";}if(Á.do_highlight==Ë){var curr_text=infos[\"full_text\"].split(\"\\n\");var content=\"\";var start=Math.max(0,infos[\"line_start\"]-1);var end=Math.min(curr_text.Æ,infos[\"line_start\"]+infos[\"line_nb\"]-1);for(i=start;i< end;i++){content+=curr_text[i]+\"\\n\";}selLength=infos['selectionEnd']-infos['selectionStart'];content=content.substr(0,infos[\"curr_pos\"]-1)+\"\\r\\r\"+content.substr(infos[\"curr_pos\"]-1,selLength)+\"\\r\\r\"+content.substr(infos[\"curr_pos\"]-1+selLength);content='<span>'+content.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(\"\\r\\r\",'</span><strong>').replace(\"\\r\\r\",'</strong><span>')+'</span>';if(Á.isIE||(Á.isOpera&&Á.isOpera < 9.6)){Á.selection_field.innerHTML=\"<pre>\"+content.replace(/^\\r?\\n/,\"<br>\")+\"</pre>\";}\nelse{Á.selection_field.innerHTML=content;}Á.selection_field_text.innerHTML=Á.selection_field.innerHTML;t2_1=new Date().getTime();if(Á.reload_highlight||(infos[\"full_text\"] !=Á.last_text_to_highlight&&(Á.É[\"line_start\"]!=infos[\"line_start\"]||Á.show_line_colors||Á.Å['word_wrap']||Á.É[\"line_nb\"]!=infos[\"line_nb\"]||Á.É[\"nb_line\"]!=infos[\"nb_line\"]))){Á.maj_highlight(infos);}}}t3=new Date().getTime();if(Á.Å['word_wrap']&&infos[\"full_text\"] !=Á.É[\"full_text\"]){if(changes.newText.split(\"\\n\").Æ==1&&Á.É['nb_line']&&infos['nb_line']==Á.É['nb_line']){Á.fixLinesHeight(infos['full_text'],changes.lineStart,changes.lineStart);}\nelse{Á.fixLinesHeight(infos['full_text'],changes.lineStart,-1);}}tLines=new Date().getTime();if(infos[\"line_start\"] !=Á.É[\"line_start\"]||infos[\"curr_pos\"] !=Á.É[\"curr_pos\"]||infos[\"full_text\"].Æ!=Á.É[\"full_text\"].Æ||Á.reload_highlight||!timer_checkup){var selec_char=infos[\"curr_line\"].charAt(infos[\"curr_pos\"]-1);var no_real_move=Ë;if(infos[\"line_nb\"]==1&&(Á.assocBracket[selec_char]||Á.revertAssocBracket[selec_char])){no_real_move=Ì;if(Á.findEndBracket(infos,selec_char)===Ë){_$(\"end_bracket\").Ç.visibility=\"visible\";_$(\"cursor_pos\").Ç.visibility=\"visible\";_$(\"cursor_pos\").innerHTML=selec_char;_$(\"end_bracket\").innerHTML=(Á.assocBracket[selec_char]||Á.revertAssocBracket[selec_char]);}\nelse{_$(\"end_bracket\").Ç.visibility=\"hidden\";_$(\"cursor_pos\").Ç.visibility=\"hidden\";}}\nelse{_$(\"cursor_pos\").Ç.visibility=\"hidden\";_$(\"end_bracket\").Ç.visibility=\"hidden\";}Á.displayToCursorPosition(\"cursor_pos\",infos[\"line_start\"],infos[\"curr_pos\"]-1,infos[\"curr_line\"],no_real_move);if(infos[\"line_nb\"]==1&&infos[\"line_start\"]!=Á.É[\"line_start\"])Á.scroll_to_view();}Á.É=infos;}tend=new Date().getTime();if(timer_checkup){setTimeout(\"eA.check_line_selection(Ë)\",Á.check_line_selection_timer);}};EA.Ä.get_selection_infos=Ã(){var sel={},start,end,len,str;Á.getIESelection();start=Á.Â.selectionStart;end=Á.Â.selectionEnd;if(Á.É[\"selectionStart\"]==start&&Á.É[\"selectionEnd\"]==end&&Á.É[\"full_text\"]==Á.Â.Ê){return Á.É;}if(Á.tabulation!=\"\t\"&&Á.Â.Ê.indexOf(\"\t\")!=-1){len=Á.Â.Ê.Æ;Á.Â.Ê=Á.replace_tab(Á.Â.Ê);start=end=start+(Á.Â.Ê.Æ-len);Á.area_select(start,0);}sel[\"selectionStart\"]=start;sel[\"selectionEnd\"]=end;sel[\"full_text\"]=Á.Â.Ê;sel[\"line_start\"]=1;sel[\"line_nb\"]=1;sel[\"curr_pos\"]=0;sel[\"curr_line\"]=\"\";sel[\"indexOfCursor\"]=0;sel[\"selec_direction\"]=Á.É[\"selec_direction\"];var splitTab=sel[\"full_text\"].split(\"\\n\");var nbLine=Math.max(0,splitTab.Æ);var nbChar=Math.max(0,sel[\"full_text\"].Æ-(nbLine-1));if(sel[\"full_text\"].indexOf(\"\\r\")!=-1)nbChar=nbChar-(nbLine-1);sel[\"nb_line\"]=nbLine;sel[\"nb_char\"]=nbChar;if(start>0){str=sel[\"full_text\"].substr(0,start);sel[\"curr_pos\"]=start-str.lastIndexOf(\"\\n\");sel[\"line_start\"]=Math.max(1,str.split(\"\\n\").Æ);}\nelse{sel[\"curr_pos\"]=1;}if(end>start){sel[\"line_nb\"]=sel[\"full_text\"].substring(start,end).split(\"\\n\").Æ;}sel[\"indexOfCursor\"]=start;sel[\"curr_line\"]=splitTab[Math.max(0,sel[\"line_start\"]-1)];if(sel[\"selectionStart\"]==Á.É[\"selectionStart\"]){if(sel[\"selectionEnd\"]>Á.É[\"selectionEnd\"])sel[\"selec_direction\"]=\"down\";\nelse if(sel[\"selectionEnd\"]==Á.É[\"selectionStart\"])sel[\"selec_direction\"]=Á.É[\"selec_direction\"];}\nelse if(sel[\"selectionStart\"]==Á.É[\"selectionEnd\"]&&sel[\"selectionEnd\"]>Á.É[\"selectionEnd\"]){sel[\"selec_direction\"]=\"down\";}\nelse{sel[\"selec_direction\"]=\"up\";}_$(\"nbLine\").innerHTML=nbLine;_$(\"nbChar\").innerHTML=nbChar;_$(\"linePos\").innerHTML=sel[\"line_start\"];_$(\"currPos\").innerHTML=sel[\"curr_pos\"];return sel;};EA.Ä.getIESelection=Ã(){var selectionStart,selectionEnd,range,stored_range;if(!Á.isIE)return Ì;if(Á.Å['word_wrap'])Á.Â.wrap='off';try{range=document.selection.createRange();stored_range=range.duplicate();stored_range.moveToElementText(Á.Â);stored_range.setEndPoint('EndToEnd',range);if(stored_range.ÈElement()!=Á.Â)throw \"invalid focus\";var scrollTop=Á.result.scrollTop+document.body.scrollTop;var relative_top=range.offsetTop-È.calculeOffsetTop(Á.Â)+scrollTop;var line_start=Math.round((relative_top / Á.lineHeight)+1);var line_nb=Math.round(range.boundingHeight / Á.lineHeight);selectionStart=stored_range.text.Æ-range.text.Æ;selectionStart+=(line_start-Á.Â.Ê.substr(0,selectionStart).split(\"\\n\").Æ)*2;selectionStart-=(line_start-Á.Â.Ê.substr(0,selectionStart).split(\"\\n\").Æ)* 2;selectionEnd=selectionStart+range.text.Æ;selectionEnd+=(line_start+line_nb-1-Á.Â.Ê.substr(0,selectionEnd).split(\"\\n\").Æ)*2;Á.Â.selectionStart=selectionStart;Á.Â.selectionEnd=selectionEnd;}catch(e){}if(Á.Å['word_wrap'])Á.Â.wrap='soft';};EA.Ä.setIESelection=Ã(){var a=Á.Â,nbLineStart,nbLineEnd,range;if(!Á.isIE)return Ì;nbLineStart=a.Ê.substr(0,a.selectionStart).split(\"\\n\").Æ-1;nbLineEnd=a.Ê.substr(0,a.selectionEnd).split(\"\\n\").Æ-1;range=document.selection.createRange();range.moveToElementText(a);range.setEndPoint('EndToStart',range);range.moveStart('character',a.selectionStart-nbLineStart);range.moveEnd('character',a.selectionEnd-nbLineEnd-(a.selectionStart-nbLineStart));range.select();};EA.Ä.checkTextEvolution=Ã(lastText,newText){var ch={},baseStep=200,cpt=0,end,step,tStart=new Date().getTime();end=Math.min(newText.Æ,lastText.Æ);step=baseStep;while(cpt<end&&step>=1){if(lastText.substr(cpt,step)==newText.substr(cpt,step)){cpt+=step;}\nelse{step=Math.floor(step/2);}}ch.posStart=cpt;ch.lineStart=newText.substr(0,ch.posStart).split(\"\\n\").Æ-1;cpt_last=lastText.Æ;cpt=newText.Æ;step=baseStep;while(cpt>=0&&cpt_last>=0&&step>=1){if(lastText.substr(cpt_last-step,step)==newText.substr(cpt-step,step)){cpt-=step;cpt_last-=step;}\nelse{step=Math.floor(step/2);}}ch.posNewEnd=cpt;ch.posLastEnd=cpt_last;if(ch.posNewEnd<=ch.posStart){if(lastText.Æ < newText.Æ){ch.posNewEnd=ch.posStart+newText.Æ-lastText.Æ;ch.posLastEnd=ch.posStart;}\nelse{ch.posLastEnd=ch.posStart+lastText.Æ-newText.Æ;ch.posNewEnd=ch.posStart;}}ch.newText=newText.substring(ch.posStart,ch.posNewEnd);ch.lastText=lastText.substring(ch.posStart,ch.posLastEnd);ch.lineNewEnd=newText.substr(0,ch.posNewEnd).split(\"\\n\").Æ-1;ch.lineLastEnd=lastText.substr(0,ch.posLastEnd).split(\"\\n\").Æ-1;ch.newTextLine=newText.split(\"\\n\").slice(ch.lineStart,ch.lineNewEnd+1).join(\"\\n\");ch.lastTextLine=lastText.split(\"\\n\").slice(ch.lineStart,ch.lineLastEnd+1).join(\"\\n\");return ch;};EA.Ä.tab_selection=Ã(){if(Á.is_tabbing)return;Á.is_tabbing=Ë;Á.getIESelection();var start=Á.Â.selectionStart;var end=Á.Â.selectionEnd;var insText=Á.Â.Ê.substring(start,end);var pos_start=start;var pos_end=end;if(insText.Æ==0){Á.Â.Ê=Á.Â.Ê.substr(0,start)+Á.tabulation+Á.Â.Ê.substr(end);pos_start=start+Á.tabulation.Æ;pos_end=pos_start;}\nelse{start=Math.max(0,Á.Â.Ê.substr(0,start).lastIndexOf(\"\\n\")+1);endText=Á.Â.Ê.substr(end);startText=Á.Â.Ê.substr(0,start);tmp=Á.Â.Ê.substring(start,end).split(\"\\n\");insText=Á.tabulation+tmp.join(\"\\n\"+Á.tabulation);Á.Â.Ê=startText+insText+endText;pos_start=start;pos_end=Á.Â.Ê.indexOf(\"\\n\",startText.Æ+insText.Æ);if(pos_end==-1)pos_end=Á.Â.Ê.Æ;}Á.Â.selectionStart=pos_start;Á.Â.selectionEnd=pos_end;if(Á.isIE){Á.setIESelection();setTimeout(\"eA.is_tabbing=Ì;\",100);}\nelse{Á.is_tabbing=Ì;}};EA.Ä.invert_tab_selection=Ã(){var t=Á,a=Á.Â;if(t.is_tabbing)return;t.is_tabbing=Ë;t.getIESelection();var start=a.selectionStart;var end=a.selectionEnd;var insText=a.Ê.substring(start,end);var pos_start=start;var pos_end=end;if(insText.Æ==0){if(a.Ê.substring(start-t.tabulation.Æ,start)==t.tabulation){a.Ê=a.Ê.substr(0,start-t.tabulation.Æ)+a.Ê.substr(end);pos_start=Math.max(0,start-t.tabulation.Æ);pos_end=pos_start;}}\nelse{start=a.Ê.substr(0,start).lastIndexOf(\"\\n\")+1;endText=a.Ê.substr(end);startText=a.Ê.substr(0,start);tmp=a.Ê.substring(start,end).split(\"\\n\");insText=\"\";for(i=0;i<tmp.Æ;i++){for(j=0;j<t.tab_nb_char;j++){if(tmp[i].charAt(0)==\"\t\"){tmp[i]=tmp[i].substr(1);j=t.tab_nb_char;}\nelse if(tmp[i].charAt(0)==\" \")tmp[i]=tmp[i].substr(1);}insText+=tmp[i];if(i<tmp.Æ-1)insText+=\"\\n\";}a.Ê=startText+insText+endText;pos_start=start;pos_end=a.Ê.indexOf(\"\\n\",startText.Æ+insText.Æ);if(pos_end==-1)pos_end=a.Ê.Æ;}a.selectionStart=pos_start;a.selectionEnd=pos_end;if(t.isIE){t.setIESelection();setTimeout(\"eA.is_tabbing=Ì;\",100);}\nelse t.is_tabbing=Ì;};EA.Ä.press_enter=Ã(){if(!Á.smooth_selection)return Ì;Á.getIESelection();var scrollTop=Á.result.scrollTop;var scrollLeft=Á.result.scrollLeft;var start=Á.Â.selectionStart;var end=Á.Â.selectionEnd;var start_last_line=Math.max(0,Á.Â.Ê.substring(0,start).lastIndexOf(\"\\n\")+1);var begin_line=Á.Â.Ê.substring(start_last_line,start).replace(/^([ \t]*).*/gm,\"$1\");var lineStart=Á.Â.Ê.substring(0,start).split(\"\\n\").Æ;if(begin_line==\"\\n\"||begin_line==\"\\r\"||begin_line.Æ==0){return Ì;}if(Á.isIE||(Á.isOpera&&Á.isOpera < 9.6)){begin_line=\"\\r\\n\"+begin_line;}\nelse{begin_line=\"\\n\"+begin_line;}Á.Â.Ê=Á.Â.Ê.substring(0,start)+begin_line+Á.Â.Ê.substring(end);Á.area_select(start+begin_line.Æ,0);if(Á.isIE){Á.result.scrollTop=scrollTop;Á.result.scrollLeft=scrollLeft;}return Ë;};EA.Ä.findEndBracket=Ã(infos,bracket){var start=infos[\"indexOfCursor\"];var normal_order=Ë;if(Á.assocBracket[bracket])endBracket=Á.assocBracket[bracket];\nelse if(Á.revertAssocBracket[bracket]){endBracket=Á.revertAssocBracket[bracket];normal_order=Ì;}var end=-1;var nbBracketOpen=0;for(var i=start;i<infos[\"full_text\"].Æ&&i>=0;){if(infos[\"full_text\"].charAt(i)==endBracket){nbBracketOpen--;if(nbBracketOpen<=0){end=i;break;}}\nelse if(infos[\"full_text\"].charAt(i)==bracket)nbBracketOpen++;if(normal_order)i++;\nelse i--;}if(end==-1)return Ì;var endLastLine=infos[\"full_text\"].substr(0,end).lastIndexOf(\"\\n\");if(endLastLine==-1)line=1;\nelse line=infos[\"full_text\"].substr(0,endLastLine).split(\"\\n\").Æ+1;var curPos=end-endLastLine-1;var endLineLength=infos[\"full_text\"].substring(end).split(\"\\n\")[0].Æ;Á.displayToCursorPosition(\"end_bracket\",line,curPos,infos[\"full_text\"].substring(endLastLine+1,end+endLineLength));return Ë;};EA.Ä.displayToCursorPosition=Ã(id,start_line,cur_pos,lineContent,no_real_move){var elem,dest,content,posLeft=0,posTop,fixPadding,topOffset,endElem;elem=Á.test_font_size;dest=_$(id);content=\"<span id='test_font_size_inner'>\"+lineContent.substr(0,cur_pos).replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\")+\"</span><span id='endTestFont'>\"+lineContent.substr(cur_pos).replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\")+\"</span>\";if(Á.isIE||(Á.isOpera&&Á.isOpera < 9.6)){elem.innerHTML=\"<pre>\"+content.replace(/^\\r?\\n/,\"<br>\")+\"</pre>\";}\nelse{elem.innerHTML=content;}endElem=_$('endTestFont');topOffset=endElem.offsetTop;fixPadding=parseInt(Á.content_highlight.Ç.paddingLeft.replace(\"px\",\"\"));posLeft=45+endElem.offsetLeft+(!isNaN(fixPadding)&&topOffset > 0 ? fixPadding:0);posTop=Á.getLinePosTop(start_line)+topOffset;if(Á.isIE&&cur_pos > 0&&endElem.offsetLeft==0){posTop+=Á.lineHeight;}if(no_real_move!=Ë){dest.Ç.top=posTop+\"px\";dest.Ç.left=posLeft+\"px\";}dest.cursor_top=posTop;dest.cursor_left=posLeft;};EA.Ä.getLinePosTop=Ã(start_line){var elem=_$('line_'+start_line),posTop=0;if(elem)posTop=elem.offsetTop;\nelse posTop=Á.lineHeight *(start_line-1);return posTop;};EA.Ä.getTextHeight=Ã(text){var t=Á,elem,height;elem=t.test_font_size;content=text.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\");if(t.isIE||(Á.isOpera&&Á.isOpera < 9.6)){elem.innerHTML=\"<pre>\"+content.replace(/^\\r?\\n/,\"<br>\")+\"</pre>\";}\nelse{elem.innerHTML=content;}height=elem.offsetHeight;height=Math.max(1,Math.floor(elem.offsetHeight / Á.lineHeight))* Á.lineHeight;return height;};EA.Ä.fixLinesHeight=Ã(textValue,lineStart,lineEnd){var aText=textValue.split(\"\\n\");if(lineEnd==-1)lineEnd=aText.Æ-1;for(var i=Math.max(0,lineStart);i <=lineEnd;i++){if(elem=_$('line_'+(i+1))){elem.Ç.height=typeof(aText[i])!=\"undefined\" ? Á.getTextHeight(aText[i])+\"px\":Á.lineHeight;}}};EA.Ä.area_select=Ã(start,Æ){Á.Â.focus();start=Math.max(0,Math.min(Á.Â.Ê.Æ,start));end=Math.max(start,Math.min(Á.Â.Ê.Æ,start+Æ));if(Á.isIE){Á.Â.selectionStart=start;Á.Â.selectionEnd=end;Á.setIESelection();}\nelse{if(Á.isOpera&&Á.isOpera < 9.6){Á.Â.setSelectionRange(0,0);}Á.Â.setSelectionRange(start,end);}Á.check_line_selection();};EA.Ä.area_get_selection=Ã(){var text=\"\";if(document.selection){var range=document.selection.createRange();text=range.text;}\nelse{text=Á.Â.Ê.substring(Á.Â.selectionStart,Á.Â.selectionEnd);}return text;}; EA.Ä.replace_tab=Ã(text){return text.replace(/((\\n?)([^\t\\n]*)\t)/gi,eA.smartTab);};EA.Ä.smartTab=Ã(){val=\"                   \";return EA.Ä.smartTab.arguments[2]+EA.Ä.smartTab.arguments[3]+val.substr(0,eA.tab_nb_char-(EA.Ä.smartTab.arguments[3].Æ)%eA.tab_nb_char);};EA.Ä.show_waiting_screen=Ã(){width=Á.editor_area.offsetWidth;height=Á.editor_area.offsetHeight;if(!(Á.isIE&&Á.isIE<6)){width-=2;height-=2;}Á.processing_screen.Ç.display=\"block\";Á.processing_screen.Ç.width=width+\"px\";Á.processing_screen.Ç.height=height+\"px\";Á.waiting_screen_displayed=Ë;};EA.Ä.hide_waiting_screen=Ã(){Á.processing_screen.Ç.display=\"none\";Á.waiting_screen_displayed=Ì;};EA.Ä.add_Ç=Ã(Çs){if(Çs.Æ>0){newcss=document.createElement(\"Ç\");newcss.type=\"text/css\";newcss.media=\"all\";if(newcss.ÇSheet){newcss.ÇSheet.cssText=Çs;}\nelse{newcss.appendChild(document.createTextNode(Çs));}document.getElementsByTagName(\"head\")[0].appendChild(newcss);}};EA.Ä.set_font=Ã(family,size){var t=Á,a=Á.Â,s=Á.Å,elem_font,i,elem;var elems=[\"Â\",\"content_highlight\",\"cursor_pos\",\"end_bracket\",\"selection_field\",\"selection_field_text\",\"line_number\"];if(family&&family!=\"\")s[\"font_family\"]=family;if(size&&size>0)s[\"font_size\"]=size;if(t.isOpera&&t.isOpera < 9.6)s['font_family']=\"monospace\";if(elem_font=_$(\"area_font_size\")){for(i=0;i < elem_font.Æ;i++){if(elem_font.options[i].Ê&&elem_font.options[i].Ê==s[\"font_size\"])elem_font.options[i].selected=Ë;}}if(t.isFirefox){var nbTry=3;do{var div1=document.createElement('div'),text1=document.createElement('Â');var Çs={width:'40px',overflow:'scroll',zIndex:50,visibility:'hidden',fontFamily:s[\"font_family\"],fontSize:s[\"font_size\"]+\"pt\",lineHeight:t.lineHeight+\"px\",padding:'0',margin:'0',border:'none',whiteSpace:'nowrap'};var diff,changed=Ì;for(i in Çs){div1.Ç[ i ]=Çs[i];text1.Ç[ i ]=Çs[i];}text1.wrap='off';text1.setAttribute('wrap','off');t.container.appendChild(div1);t.container.appendChild(text1);div1.innerHTML=text1.Ê='azertyuiopqsdfghjklm';div1.innerHTML=text1.Ê=text1.Ê+'wxcvbn^p*ù$!:;,,';diff=text1.scrollWidth-div1.scrollWidth;if(Math.abs(diff)>=2){s[\"font_size\"]++;changed=Ë;}t.container.removeChild(div1);t.container.removeChild(text1);nbTry--;}while(changed&&nbTry > 0);}elem=t.test_font_size;elem.Ç.fontFamily=\"\"+s[\"font_family\"];elem.Ç.fontSize=s[\"font_size\"]+\"pt\";elem.innerHTML=\"0\";t.lineHeight=elem.offsetHeight;for(i=0;i<elems.Æ;i++){elem=_$(elems[i]);elem.Ç.fontFamily=s[\"font_family\"];elem.Ç.fontSize=s[\"font_size\"]+\"pt\";elem.Ç.lineHeight=t.lineHeight+\"px\";}t.add_Ç(\"pre{font-family:\"+s[\"font_family\"]+\"}\");if((t.isOpera&&t.isOpera < 9.6)||t.isIE >=8){var parNod=a.ÈNode,nxtSib=a.nextSibling,start=a.selectionStart,end=a.selectionEnd;parNod.removeChild(a);parNod.insertBefore(a,nxtSib);t.area_select(start,end-start);}Á.focus();Á.update_size();Á.check_line_selection();};EA.Ä.change_font_size=Ã(){var size=_$(\"area_font_size\").Ê;if(size>0)Á.set_font(\"\",size);};EA.Ä.open_inline_popup=Ã(popup_id){Á.close_all_inline_popup();var popup=_$(popup_id);var editor=_$(\"editor\");for(var i=0;i<Á.inlinePopup.Æ;i++){if(Á.inlinePopup[i][\"popup_id\"]==popup_id){var icon=_$(Á.inlinePopup[i][\"icon_id\"]);if(icon){Á.switchClassSticky(icon,'editAreaButtonSelected',Ë);break;}}}popup.Ç.height=\"auto\";popup.Ç.overflow=\"visible\";if(document.body.offsetHeight< popup.offsetHeight){popup.Ç.height=(document.body.offsetHeight-10)+\"px\";popup.Ç.overflow=\"auto\";}if(!popup.positionned){var new_left=editor.offsetWidth /2-popup.offsetWidth /2;var new_top=editor.offsetHeight /2-popup.offsetHeight /2;popup.Ç.left=new_left+\"px\";popup.Ç.top=new_top+\"px\";popup.positionned=Ë;}popup.Ç.visibility=\"visible\";};EA.Ä.close_inline_popup=Ã(popup_id){var popup=_$(popup_id);for(var i=0;i<Á.inlinePopup.Æ;i++){if(Á.inlinePopup[i][\"popup_id\"]==popup_id){var icon=_$(Á.inlinePopup[i][\"icon_id\"]);if(icon){Á.switchClassSticky(icon,'editAreaButtonNormal',Ì);break;}}}popup.Ç.visibility=\"hidden\";};EA.Ä.close_all_inline_popup=Ã(e){for(var i=0;i<Á.inlinePopup.Æ;i++){Á.close_inline_popup(Á.inlinePopup[i][\"popup_id\"]);}Á.Â.focus();};EA.Ä.show_help=Ã(){Á.open_inline_popup(\"edit_area_help\");};EA.Ä.new_document=Ã(){Á.Â.Ê=\"\";Á.area_select(0,0);};EA.Ä.get_all_toolbar_height=Ã(){var area=_$(\"editor\");var results=È.getChildren(area,\"div\",\"class\",\"area_toolbar\",\"all\",\"0\");var height=0;for(var i=0;i<results.Æ;i++){height+=results[i].offsetHeight;}return height;};EA.Ä.go_to_line=Ã(line){if(!line){var icon=_$(\"go_to_line\");if(icon !=null){Á.restoreClass(icon);Á.switchClassSticky(icon,'editAreaButtonSelected',Ë);}line=prompt(Á.get_translation(\"go_to_line_prompt\"));if(icon !=null)Á.switchClassSticky(icon,'editAreaButtonNormal',Ì);}if(line&&line!=null&&line.search(/^[0-9]+$/)!=-1){var start=0;var lines=Á.Â.Ê.split(\"\\n\");if(line > lines.Æ)start=Á.Â.Ê.Æ;\nelse{for(var i=0;i<Math.min(line-1,lines.Æ);i++)start+=lines[i].Æ+1;}Á.area_select(start,0);}};EA.Ä.change_smooth_selection_mode=Ã(setTo){if(Á.do_highlight)return;if(setTo !=null){if(setTo===Ì)Á.smooth_selection=Ë;\nelse Á.smooth_selection=Ì;}var icon=_$(\"change_smooth_selection\");Á.Â.focus();if(Á.smooth_selection===Ë){Á.switchClassSticky(icon,'editAreaButtonNormal',Ì);Á.smooth_selection=Ì;Á.selection_field.Ç.display=\"none\";_$(\"cursor_pos\").Ç.display=\"none\";_$(\"end_bracket\").Ç.display=\"none\";}\nelse{Á.switchClassSticky(icon,'editAreaButtonSelected',Ì);Á.smooth_selection=Ë;Á.selection_field.Ç.display=\"block\";_$(\"cursor_pos\").Ç.display=\"block\";_$(\"end_bracket\").Ç.display=\"block\";}};EA.Ä.scroll_to_view=Ã(show){var zone,lineElem;if(!Á.smooth_selection)return;zone=_$(\"result\");var cursor_pos_top=_$(\"cursor_pos\").cursor_top;if(show==\"bottom\"){cursor_pos_top+=Á.getLinePosTop(Á.É['line_start']+Á.É['line_nb']-1);}var max_height_visible=zone.clientHeight+zone.scrollTop;var miss_top=cursor_pos_top+Á.lineHeight-max_height_visible;if(miss_top>0){zone.scrollTop=zone.scrollTop+miss_top;}\nelse if(zone.scrollTop > cursor_pos_top){zone.scrollTop=cursor_pos_top;}var cursor_pos_left=_$(\"cursor_pos\").cursor_left;var max_width_visible=zone.clientWidth+zone.scrollLeft;var miss_left=cursor_pos_left+10-max_width_visible;if(miss_left>0){zone.scrollLeft=zone.scrollLeft+miss_left+50;}\nelse if(zone.scrollLeft > cursor_pos_left){zone.scrollLeft=cursor_pos_left;}\nelse if(zone.scrollLeft==45){zone.scrollLeft=0;}};EA.Ä.check_undo=Ã(only_once){if(!eAs[Á.id])return Ì;if(Á.ÂFocused&&eAs[Á.id][\"displayed\"]==Ë){var text=Á.Â.Ê;if(Á.previous.Æ<=1)Á.switchClassSticky(_$(\"undo\"),'editAreaButtonDisabled',Ë);if(!Á.previous[Á.previous.Æ-1]||Á.previous[Á.previous.Æ-1][\"text\"] !=text){Á.previous.push({\"text\":text,\"selStart\":Á.Â.selectionStart,\"selEnd\":Á.Â.selectionEnd});if(Á.previous.Æ > Á.Å[\"max_undo\"]+1)Á.previous.shift();}if(Á.previous.Æ >=2)Á.switchClassSticky(_$(\"undo\"),'editAreaButtonNormal',Ì);}if(!only_once)setTimeout(\"eA.check_undo()\",3000);};EA.Ä.undo=Ã(){if(Á.previous.Æ > 0){Á.getIESelection();Á.next.push({\"text\":Á.Â.Ê,\"selStart\":Á.Â.selectionStart,\"selEnd\":Á.Â.selectionEnd});var prev=Á.previous.pop();if(prev[\"text\"]==Á.Â.Ê&&Á.previous.Æ > 0)prev=Á.previous.pop();Á.Â.Ê=prev[\"text\"];Á.last_undo=prev[\"text\"];Á.area_select(prev[\"selStart\"],prev[\"selEnd\"]-prev[\"selStart\"]);Á.switchClassSticky(_$(\"redo\"),'editAreaButtonNormal',Ì);Á.resync_highlight(Ë);Á.check_file_changes();}};EA.Ä.redo=Ã(){if(Á.next.Æ > 0){var next=Á.next.pop();Á.previous.push(next);Á.Â.Ê=next[\"text\"];Á.last_undo=next[\"text\"];Á.area_select(next[\"selStart\"],next[\"selEnd\"]-next[\"selStart\"]);Á.switchClassSticky(_$(\"undo\"),'editAreaButtonNormal',Ì);Á.resync_highlight(Ë);Á.check_file_changes();}if(Á.next.Æ==0)Á.switchClassSticky(_$(\"redo\"),'editAreaButtonDisabled',Ë);};EA.Ä.check_redo=Ã(){if(eA.next.Æ==0||eA.Â.Ê!=eA.last_undo){eA.next=[];eA.switchClassSticky(_$(\"redo\"),'editAreaButtonDisabled',Ë);}\nelse{Á.switchClassSticky(_$(\"redo\"),'editAreaButtonNormal',Ì);}};EA.Ä.switchClass=Ã(element,class_name,lock_state){var lockChanged=Ì;if(typeof(lock_state)!=\"undefined\"&&element !=null){element.classLock=lock_state;lockChanged=Ë;}if(element !=null&&(lockChanged||!element.classLock)){element.oldClassName=element.className;element.className=class_name;}};EA.Ä.restoreAndSwitchClass=Ã(element,class_name){if(element !=null&&!element.classLock){Á.restoreClass(element);Á.switchClass(element,class_name);}};EA.Ä.restoreClass=Ã(element){if(element !=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}};EA.Ä.setClassLock=Ã(element,lock_state){if(element !=null)element.classLock=lock_state;};EA.Ä.switchClassSticky=Ã(element,class_name,lock_state){var lockChanged=Ì;if(typeof(lock_state)!=\"undefined\"&&element !=null){element.classLock=lock_state;lockChanged=Ë;}if(element !=null&&(lockChanged||!element.classLock)){element.className=class_name;element.oldClassName=class_name;}};EA.Ä.scroll_page=Ã(params){var dir=params[\"dir\"],shift_pressed=params[\"shift\"];var lines=Á.Â.Ê.split(\"\\n\");var new_pos=0,Æ=0,char_left=0,line_nb=0,curLine=0;var toScrollAmount=_$(\"result\").clientHeight-30;var nbLineToScroll=0,diff=0;if(dir==\"up\"){nbLineToScroll=Math.ceil(toScrollAmount / Á.lineHeight);for(i=Á.É[\"line_start\"];i-diff > Á.É[\"line_start\"]-nbLineToScroll;i--){if(elem=_$('line_'+i)){diff+=Math.floor((elem.offsetHeight-1)/ Á.lineHeight);}}nbLineToScroll-=diff;if(Á.É[\"selec_direction\"]==\"up\"){for(line_nb=0;line_nb< Math.min(Á.É[\"line_start\"]-nbLineToScroll,lines.Æ);line_nb++){new_pos+=lines[line_nb].Æ+1;}char_left=Math.min(lines[Math.min(lines.Æ-1,line_nb)].Æ,Á.É[\"curr_pos\"]-1);if(shift_pressed)Æ=Á.É[\"selectionEnd\"]-new_pos-char_left;Á.area_select(new_pos+char_left,Æ);view=\"top\";}\nelse{view=\"bottom\";for(line_nb=0;line_nb< Math.min(Á.É[\"line_start\"]+Á.É[\"line_nb\"]-1-nbLineToScroll,lines.Æ);line_nb++){new_pos+=lines[line_nb].Æ+1;}char_left=Math.min(lines[Math.min(lines.Æ-1,line_nb)].Æ,Á.É[\"curr_pos\"]-1);if(shift_pressed){start=Math.min(Á.É[\"selectionStart\"],new_pos+char_left);Æ=Math.max(new_pos+char_left,Á.É[\"selectionStart\"])-start;if(new_pos+char_left < Á.É[\"selectionStart\"])view=\"top\";}\nelse start=new_pos+char_left;Á.area_select(start,Æ);}}\nelse{var nbLineToScroll=Math.floor(toScrollAmount / Á.lineHeight);for(i=Á.É[\"line_start\"];i+diff < Á.É[\"line_start\"]+nbLineToScroll;i++){if(elem=_$('line_'+i)){diff+=Math.floor((elem.offsetHeight-1)/ Á.lineHeight);}}nbLineToScroll-=diff;if(Á.É[\"selec_direction\"]==\"down\"){view=\"bottom\";for(line_nb=0;line_nb< Math.min(Á.É[\"line_start\"]+Á.É[\"line_nb\"]-2+nbLineToScroll,lines.Æ);line_nb++){if(line_nb==Á.É[\"line_start\"]-1)char_left=Á.É[\"selectionStart\"]-new_pos;new_pos+=lines[line_nb].Æ+1;}if(shift_pressed){Æ=Math.abs(Á.É[\"selectionStart\"]-new_pos);Æ+=Math.min(lines[Math.min(lines.Æ-1,line_nb)].Æ,Á.É[\"curr_pos\"]);Á.area_select(Math.min(Á.É[\"selectionStart\"],new_pos),Æ);}\nelse{Á.area_select(new_pos+char_left,0);}}\nelse{view=\"top\";for(line_nb=0;line_nb< Math.min(Á.É[\"line_start\"]+nbLineToScroll-1,lines.Æ,lines.Æ);line_nb++){if(line_nb==Á.É[\"line_start\"]-1)char_left=Á.É[\"selectionStart\"]-new_pos;new_pos+=lines[line_nb].Æ+1;}if(shift_pressed){Æ=Math.abs(Á.É[\"selectionEnd\"]-new_pos-char_left);Æ+=Math.min(lines[Math.min(lines.Æ-1,line_nb)].Æ,Á.É[\"curr_pos\"])-char_left-1;Á.area_select(Math.min(Á.É[\"selectionEnd\"],new_pos+char_left),Æ);if(new_pos+char_left > Á.É[\"selectionEnd\"])view=\"bottom\";}\nelse{Á.area_select(new_pos+char_left,0);}}}Á.check_line_selection();Á.scroll_to_view(view);};EA.Ä.start_resize=Ã(e){È.eAL.resize[\"id\"]=eA.id;È.eAL.resize[\"start_x\"]=(e)? e.pageX:event.x+document.body.scrollLeft;È.eAL.resize[\"start_y\"]=(e)? e.pageY:event.y+document.body.scrollTop;if(eA.isIE){eA.Â.focus();eA.getIESelection();}È.eAL.resize[\"selectionStart\"]=eA.Â.selectionStart;È.eAL.resize[\"selectionEnd\"]=eA.Â.selectionEnd;È.eAL.start_resize_area();};EA.Ä.toggle_full_screen=Ã(to){var t=Á,p=È,a=t.Â,html,frame,selStart,selEnd,old,icon;if(typeof(to)==\"undefined\")to=!t.fullscreen['isFull'];old=t.fullscreen['isFull'];t.fullscreen['isFull']=to;icon=_$(\"fullscreen\");selStart=t.Â.selectionStart;selEnd=t.Â.selectionEnd;html=p.document.getElementsByTagName(\"html\")[0];frame=p.document.getElementById(\"frame_\"+t.id);if(to&&to!=old){t.fullscreen['old_overflow']=p.get_css_property(html,\"overflow\");t.fullscreen['old_height']=p.get_css_property(html,\"height\");t.fullscreen['old_width']=p.get_css_property(html,\"width\");t.fullscreen['old_scrollTop']=html.scrollTop;t.fullscreen['old_scrollLeft']=html.scrollLeft;t.fullscreen['old_zIndex']=p.get_css_property(frame,\"z-index\");if(t.isOpera){html.Ç.height=\"100%\";html.Ç.width=\"100%\";}html.Ç.overflow=\"hidden\";html.scrollTop=0;html.scrollLeft=0;frame.Ç.position=\"absolute\";frame.Ç.width=html.clientWidth+\"px\";frame.Ç.height=html.clientHeight+\"px\";frame.Ç.display=\"block\";frame.Ç.zIndex=\"999999\";frame.Ç.top=\"0px\";frame.Ç.left=\"0px\";frame.Ç.top=\"-\"+p.calculeOffsetTop(frame)+\"px\";frame.Ç.left=\"-\"+p.calculeOffsetLeft(frame)+\"px\";t.switchClassSticky(icon,'editAreaButtonSelected',Ì);t.fullscreen['allow_resize']=t.resize_allowed;t.allow_resize(Ì);if(t.isFirefox){p.eAL.execCommand(t.id,\"update_size();\");t.area_select(selStart,selEnd-selStart);t.scroll_to_view();t.focus();}\nelse{setTimeout(\"È.eAL.execCommand('\"+t.id+\"','update_size();');eA.focus();\",10);}}\nelse if(to!=old){frame.Ç.position=\"static\";frame.Ç.zIndex=t.fullscreen['old_zIndex'];if(t.isOpera){html.Ç.height=\"auto\";html.Ç.width=\"auto\";html.Ç.overflow=\"auto\";}\nelse if(t.isIE&&p!=top){html.Ç.overflow=\"auto\";}\nelse{html.Ç.overflow=t.fullscreen['old_overflow'];}html.scrollTop=t.fullscreen['old_scrollTop'];html.scrollLeft=t.fullscreen['old_scrollLeft'];p.eAL.hide(t.id);p.eAL.show(t.id);t.switchClassSticky(icon,'editAreaButtonNormal',Ì);if(t.fullscreen['allow_resize'])t.allow_resize(t.fullscreen['allow_resize']);if(t.isFirefox){t.area_select(selStart,selEnd-selStart);setTimeout(\"eA.scroll_to_view();\",10);}}};EA.Ä.allow_resize=Ã(allow){var resize=_$(\"resize_area\");if(allow){resize.Ç.visibility=\"visible\";È.eAL.add_event(resize,\"mouseup\",eA.start_resize);}\nelse{resize.Ç.visibility=\"hidden\";È.eAL.remove_event(resize,\"mouseup\",eA.start_resize);}Á.resize_allowed=allow;};EA.Ä.change_syntax=Ã(new_syntax,is_waiting){if(new_syntax==Á.Å['syntax'])return Ë;var founded=Ì;for(var i=0;i<Á.syntax_list.Æ;i++){if(Á.syntax_list[i]==new_syntax)founded=Ë;}if(founded==Ë){if(!È.eAL.load_syntax[new_syntax]){if(!is_waiting)È.eAL.load_script(È.eAL.baseURL+\"reg_syntax/\"+new_syntax+\".js\");setTimeout(\"eA.change_syntax('\"+new_syntax+\"',Ë);\",100);Á.show_waiting_screen();}\nelse{if(!Á.allready_used_syntax[new_syntax]){È.eAL.init_syntax_regexp();Á.add_Ç(È.eAL.syntax[new_syntax][\"Çs\"]);Á.allready_used_syntax[new_syntax]=Ë;}var sel=_$(\"syntax_selection\");if(sel&&sel.Ê!=new_syntax){for(var i=0;i<sel.Æ;i++){if(sel.options[i].Ê&&sel.options[i].Ê==new_syntax)sel.options[i].selected=Ë;}}Á.Å['syntax']=new_syntax;Á.resync_highlight(Ë);Á.hide_waiting_screen();return Ë;}}return Ì;};EA.Ä.set_editable=Ã(is_editable){if(is_editable){document.body.className=\"\";Á.Â.readOnly=Ì;Á.is_editable=Ë;}\nelse{document.body.className=\"non_editable\";Á.Â.readOnly=Ë;Á.is_editable=Ì;}if(eAs[Á.id][\"displayed\"]==Ë)Á.update_size();};EA.Ä.toggle_word_wrap=Ã(){Á.set_word_wrap(!Á.Å['word_wrap']);};EA.Ä.set_word_wrap=Ã(to){var t=Á,a=t.Â;if(t.isOpera&&t.isOpera < 9.8){Á.Å['word_wrap']=Ì;t.switchClassSticky(_$(\"word_wrap\"),'editAreaButtonDisabled',Ë);return Ì;}if(to){wrap_mode='soft';Á.container.className+=' word_wrap';Á.container.Ç.width=\"\";Á.content_highlight.Ç.width=\"\";a.Ç.width=\"100%\";if(t.isIE&&t.isIE < 7){a.Ç.width=(a.offsetWidth-5)+\"px\";}t.switchClassSticky(_$(\"word_wrap\"),'editAreaButtonSelected',Ì);}\nelse{wrap_mode='off';Á.container.className=Á.container.className.replace(/word_wrap/g,'');t.switchClassSticky(_$(\"word_wrap\"),'editAreaButtonNormal',Ë);}Á.Â.previous_scrollWidth='';Á.Â.previous_scrollHeight='';a.wrap=wrap_mode;a.setAttribute('wrap',wrap_mode);if(!Á.isIE){var start=a.selectionStart,end=a.selectionEnd;var parNod=a.ÈNode,nxtSib=a.nextSibling;parNod.removeChild(a);parNod.insertBefore(a,nxtSib);Á.area_select(start,end-start);}Á.Å['word_wrap']=to;Á.focus();Á.update_size();Á.check_line_selection();};EA.Ä.open_file=Ã(Å){if(Å['id']!=\"undefined\"){var id=Å['id'];var new_file={};new_file['id']=id;new_file['title']=id;new_file['text']=\"\";new_file['É']=\"\";new_file['last_text_to_highlight']=\"\";new_file['last_hightlighted_text']=\"\";new_file['previous']=[];new_file['next']=[];new_file['last_undo']=\"\";new_file['smooth_selection']=Á.Å['smooth_selection'];new_file['do_highlight']=Á.Å['start_highlight'];new_file['syntax']=Á.Å['syntax'];new_file['scroll_top']=0;new_file['scroll_left']=0;new_file['selection_start']=0;new_file['selection_end']=0;new_file['edited']=Ì;new_file['font_size']=Á.Å[\"font_size\"];new_file['font_family']=Á.Å[\"font_family\"];new_file['word_wrap']=Á.Å[\"word_wrap\"];new_file['toolbar']={'links':{},'selects':{}};new_file['compare_edited_text']=new_file['text'];Á.files[id]=new_file;Á.update_file(id,Å);Á.files[id]['compare_edited_text']=Á.files[id]['text'];var html_id='tab_file_'+encodeURIComponent(id);Á.filesIdAssoc[html_id]=id;Á.files[id]['html_id']=html_id;if(!_$(Á.files[id]['html_id'])&&id!=\"\"){Á.tab_browsing_area.Ç.display=\"block\";var elem=document.createElement('li');elem.id=Á.files[id]['html_id'];var close=\"<img src=\\\"\"+È.eAL.baseURL+\"images/close.gif\\\" title=\\\"\"+Á.get_translation('close_tab','word')+\"\\\" onclick=\\\"eA.execCommand('close_file',eA.filesIdAssoc['\"+html_id+\"']);return Ì;\\\" class=\\\"hidden\\\" onmouseover=\\\"Á.className=''\\\" onmouseout=\\\"Á.className='hidden'\\\" />\";elem.innerHTML=\"<a onclick=\\\"javascript:eA.execCommand('switch_to_file',eA.filesIdAssoc['\"+html_id+\"']);\\\" selec=\\\"none\\\"><b><span><strong class=\\\"edited\\\">*</strong>\"+Á.files[id]['title']+close+\"</span></b></a>\";_$('tab_browsing_list').appendChild(elem);var elem=document.createElement('text');Á.update_size();}if(id!=\"\")Á.execCommand('file_open',Á.files[id]);Á.switch_to_file(id,Ë);return Ë;}\nelse return Ì;};EA.Ä.close_file=Ã(id){if(Á.files[id]){Á.save_file(id);if(Á.execCommand('file_close',Á.files[id])!==Ì){var li=_$(Á.files[id]['html_id']);li.ÈNode.removeChild(li);if(id==Á.curr_file){var next_file=\"\";var is_next=Ì;for(var i in Á.files){if(is_next){next_file=i;break;}\nelse if(i==id)is_next=Ë;\nelse next_file=i;}Á.switch_to_file(next_file);}delete(Á.files[id]);Á.update_size();}}};EA.Ä.save_file=Ã(id){var t=Á,save,a_links,a_selects,save_butt,img,i;if(t.files[id]){var save=t.files[id];save['É']=t.É;save['last_text_to_highlight']=t.last_text_to_highlight;save['last_hightlighted_text']=t.last_hightlighted_text;save['previous']=t.previous;save['next']=t.next;save['last_undo']=t.last_undo;save['smooth_selection']=t.smooth_selection;save['do_highlight']=t.do_highlight;save['syntax']=t.Å['syntax'];save['text']=t.Â.Ê;save['scroll_top']=t.result.scrollTop;save['scroll_left']=t.result.scrollLeft;save['selection_start']=t.É[\"selectionStart\"];save['selection_end']=t.É[\"selectionEnd\"];save['font_size']=t.Å[\"font_size\"];save['font_family']=t.Å[\"font_family\"];save['word_wrap']=t.Å[\"word_wrap\"];save['toolbar']={'links':{},'selects':{}};a_links=_$(\"toolbar_1\").getElementsByTagName(\"a\");for(i=0;i<a_links.Æ;i++){if(a_links[i].getAttribute('fileSpecific')=='yes'){save_butt={};img=a_links[i].getElementsByTagName('img')[0];save_butt['classLock']=img.classLock;save_butt['className']=img.className;save_butt['oldClassName']=img.oldClassName;save['toolbar']['links'][a_links[i].id]=save_butt;}}a_selects=_$(\"toolbar_1\").getElementsByTagName(\"select\");for(i=0;i<a_selects.Æ;i++){if(a_selects[i].getAttribute('fileSpecific')=='yes'){save['toolbar']['selects'][a_selects[i].id]=a_selects[i].Ê;}}t.files[id]=save;return save;}return Ì;};EA.Ä.update_file=Ã(id,new_Ês){for(var i in new_Ês){Á.files[id][i]=new_Ês[i];}};EA.Ä.display_file=Ã(id){var t=Á,a=t.Â,new_file,a_lis,a_selects,a_links,a_options,i,j;if(id==''){a.readOnly=Ë;t.tab_browsing_area.Ç.display=\"none\";_$(\"no_file_selected\").Ç.display=\"block\";t.result.className=\"empty\";if(!t.files['']){t.open_file({id:''});}}\nelse if(typeof(t.files[id])=='undefined'){return Ì;}\nelse{t.result.className=\"\";a.readOnly=!t.is_editable;_$(\"no_file_selected\").Ç.display=\"none\";t.tab_browsing_area.Ç.display=\"block\";}t.check_redo(Ë);t.check_undo(Ë);t.curr_file=id;a_lis=t.tab_browsing_area.getElementsByTagName('li');for(i=0;i<a_lis.Æ;i++){if(a_lis[i].id==t.files[id]['html_id'])a_lis[i].className='selected';\nelse a_lis[i].className='';}new_file=t.files[id];a.Ê=new_file['text'];t.set_font(new_file['font_family'],new_file['font_size']);t.area_select(new_file['selection_start'],new_file['selection_end']-new_file['selection_start']);t.manage_size(Ë);t.result.scrollTop=new_file['scroll_top'];t.result.scrollLeft=new_file['scroll_left'];t.previous=new_file['previous'];t.next=new_file['next'];t.last_undo=new_file['last_undo'];t.check_redo(Ë);t.check_undo(Ë);t.execCommand(\"change_highlight\",new_file['do_highlight']);t.execCommand(\"change_syntax\",new_file['syntax']);t.execCommand(\"change_smooth_selection_mode\",new_file['smooth_selection']);t.execCommand(\"set_word_wrap\",new_file['word_wrap']);a_links=new_file['toolbar']['links'];for(i in a_links){if(img=_$(i).getElementsByTagName('img')[0]){img.classLock=a_links[i]['classLock'];img.className=a_links[i]['className'];img.oldClassName=a_links[i]['oldClassName'];}}a_selects=new_file['toolbar']['selects'];for(i in a_selects){a_options=_$(i).options;for(j=0;j<a_options.Æ;j++){if(a_options[j].Ê==a_selects[i])_$(i).options[j].selected=Ë;}}};EA.Ä.switch_to_file=Ã(file_to_show,force_refresh){if(file_to_show!=Á.curr_file||force_refresh){Á.save_file(Á.curr_file);if(Á.curr_file!='')Á.execCommand('file_switch_off',Á.files[Á.curr_file]);Á.display_file(file_to_show);if(file_to_show!='')Á.execCommand('file_switch_on',Á.files[file_to_show]);}};EA.Ä.get_file=Ã(id){if(id==Á.curr_file)Á.save_file(id);return Á.files[id];};EA.Ä.get_all_files=Ã(){tmp_files=Á.files;Á.save_file(Á.curr_file);if(tmp_files[''])delete(Á.files['']);return tmp_files;};EA.Ä.check_file_changes=Ã(){var id=Á.curr_file;if(Á.files[id]&&Á.files[id]['compare_edited_text']!=undefined){if(Á.files[id]['compare_edited_text'].Æ==Á.Â.Ê.Æ&&Á.files[id]['compare_edited_text']==Á.Â.Ê){if(Á.files[id]['edited']!=Ì)Á.set_file_edited_mode(id,Ì);}\nelse{if(Á.files[id]['edited']!=Ë)Á.set_file_edited_mode(id,Ë);}}};EA.Ä.set_file_edited_mode=Ã(id,to){if(Á.files[id]&&_$(Á.files[id]['html_id'])){var link=_$(Á.files[id]['html_id']).getElementsByTagName('a')[0];if(to==Ë){link.className='edited';}\nelse{link.className='';if(id==Á.curr_file)text=Á.Â.Ê;\nelse text=Á.files[id]['text'];Á.files[id]['compare_edited_text']=text;}Á.files[id]['edited']=to;}};EA.Ä.set_show_line_colors=Ã(new_Ê){Á.show_line_colors=new_Ê;if(new_Ê)Á.selection_field.className+=' show_colors';\nelse Á.selection_field.className=Á.selection_field.className.replace(/ show_colors/g,'');};var EA_keys={8:\"Retour arriere\",9:\"Tabulation\",12:\"Milieu(pave numerique)\",13:\"Entrer\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",19:\"Pause\",20:\"Verr Maj\",27:\"Esc\",32:\"Space\",33:\"Page up\",34:\"Page down\",35:\"End\",36:\"Begin\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Impr ecran\",45:\"Inser\",46:\"Suppr\",91:\"Menu Demarrer Windows / touche pomme Mac\",92:\"Menu Demarrer Windows\",93:\"Menu contextuel Windows\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"Verr Num\",145:\"Arret defil\"};Ã keyDown(e){if(!e){e=event;}for(var i in eA.plugins){if(typeof(eA.plugins[i].onkeydown)==\"Ã\"){if(eA.plugins[i].onkeydown(e)===Ì){if(eA.isIE)e.keyCode=0;return Ì;}}}var target_id=(e.target||e.srcElement).id;var use=Ì;if(EA_keys[e.keyCode])letter=EA_keys[e.keyCode];\nelse letter=String.fromCharCode(e.keyCode);var low_letter=letter.toLowerCase();if(letter==\"Page up\"&&!AltPressed(e)&&!eA.isOpera){eA.execCommand(\"scroll_page\",{\"dir\":\"up\",\"shift\":ShiftPressed(e)});use=Ë;}\nelse if(letter==\"Page down\"&&!AltPressed(e)&&!eA.isOpera){eA.execCommand(\"scroll_page\",{\"dir\":\"down\",\"shift\":ShiftPressed(e)});use=Ë;}\nelse if(eA.is_editable==Ì){return Ë;}\nelse if(letter==\"Tabulation\"&&target_id==\"Â\"&&!CtrlPressed(e)&&!AltPressed(e)){if(ShiftPressed(e))eA.execCommand(\"invert_tab_selection\");\nelse eA.execCommand(\"tab_selection\");use=Ë;if(eA.isOpera||(eA.isFirefox&&eA.isMac))setTimeout(\"eA.execCommand('focus');\",1);}\nelse if(letter==\"Entrer\"&&target_id==\"Â\"){if(eA.press_enter())use=Ë;}\nelse if(letter==\"Entrer\"&&target_id==\"area_search\"){eA.execCommand(\"area_search\");use=Ë;}\nelse  if(letter==\"Esc\"){eA.execCommand(\"close_all_inline_popup\",e);use=Ë;}\nelse if(CtrlPressed(e)&&!AltPressed(e)&&!ShiftPressed(e)){switch(low_letter){case \"f\":eA.execCommand(\"area_search\");use=Ë;break;case \"r\":eA.execCommand(\"area_replace\");use=Ë;break;case \"q\":eA.execCommand(\"close_all_inline_popup\",e);use=Ë;break;case \"h\":eA.execCommand(\"change_highlight\");use=Ë;break;case \"g\":setTimeout(\"eA.execCommand('go_to_line');\",5);use=Ë;break;case \"e\":eA.execCommand(\"show_help\");use=Ë;break;case \"z\":use=Ë;eA.execCommand(\"undo\");break;case \"y\":use=Ë;eA.execCommand(\"redo\");break;default:break;}}if(eA.next.Æ > 0){setTimeout(\"eA.check_redo();\",10);}setTimeout(\"eA.check_file_changes();\",10);if(use){if(eA.isIE)e.keyCode=0;return Ì;}return Ë;};Ã AltPressed(e){if(window.event){return(window.event.altKey);}\nelse{if(e.modifiers)return(e.altKey||(e.modifiers % 2));\nelse return e.altKey;}};Ã CtrlPressed(e){if(window.event){return(window.event.ctrlKey);}\nelse{return(e.ctrlKey||(e.modifiers==2)||(e.modifiers==3)||(e.modifiers>5));}};Ã ShiftPressed(e){if(window.event){return(window.event.shiftKey);}\nelse{return(e.shiftKey||(e.modifiers>3));}};	EA.Ä.show_search=Ã(){if(_$(\"area_search_replace\").Ç.visibility==\"visible\"){Á.hidden_search();}\nelse{Á.open_inline_popup(\"area_search_replace\");var text=Á.area_get_selection();var search=text.split(\"\\n\")[0];_$(\"area_search\").Ê=search;_$(\"area_search\").focus();}};EA.Ä.hidden_search=Ã(){Á.close_inline_popup(\"area_search_replace\");};EA.Ä.area_search=Ã(mode){if(!mode)mode=\"search\";_$(\"area_search_msg\").innerHTML=\"\";var search=_$(\"area_search\").Ê;Á.Â.focus();Á.Â.ÂFocused=Ë;var infos=Á.get_selection_infos();var start=infos[\"selectionStart\"];var pos=-1;var pos_begin=-1;var Æ=search.Æ;if(_$(\"area_search_replace\").Ç.visibility!=\"visible\"){Á.show_search();return;}if(search.Æ==0){_$(\"area_search_msg\").innerHTML=Á.get_translation(\"search_field_empty\");return;}if(mode!=\"replace\"){if(_$(\"area_search_reg_exp\").checked)start++;\nelse start+=search.Æ;}if(_$(\"area_search_reg_exp\").checked){var opt=\"m\";if(!_$(\"area_search_match_case\").checked)opt+=\"i\";var reg=new RegExp(search,opt);pos=infos[\"full_text\"].substr(start).search(reg);pos_begin=infos[\"full_text\"].search(reg);if(pos!=-1){pos+=start;Æ=infos[\"full_text\"].substr(start).match(reg)[0].Æ;}\nelse if(pos_begin!=-1){Æ=infos[\"full_text\"].match(reg)[0].Æ;}}\nelse{if(_$(\"area_search_match_case\").checked){pos=infos[\"full_text\"].indexOf(search,start);pos_begin=infos[\"full_text\"].indexOf(search);}\nelse{pos=infos[\"full_text\"].toLowerCase().indexOf(search.toLowerCase(),start);pos_begin=infos[\"full_text\"].toLowerCase().indexOf(search.toLowerCase());}}if(pos==-1&&pos_begin==-1){_$(\"area_search_msg\").innerHTML=\"<strong>\"+search+\"</strong> \"+Á.get_translation(\"not_found\");return;}\nelse if(pos==-1&&pos_begin !=-1){begin=pos_begin;_$(\"area_search_msg\").innerHTML=Á.get_translation(\"restart_search_at_begin\");}\nelse begin=pos;if(mode==\"replace\"&&pos==infos[\"indexOfCursor\"]){var replace=_$(\"area_replace\").Ê;var new_text=\"\";if(_$(\"area_search_reg_exp\").checked){var opt=\"m\";if(!_$(\"area_search_match_case\").checked)opt+=\"i\";var reg=new RegExp(search,opt);new_text=infos[\"full_text\"].substr(0,begin)+infos[\"full_text\"].substr(start).replace(reg,replace);}\nelse{new_text=infos[\"full_text\"].substr(0,begin)+replace+infos[\"full_text\"].substr(begin+Æ);}Á.Â.Ê=new_text;Á.area_select(begin,Æ);Á.area_search();}\nelse Á.area_select(begin,Æ);};EA.Ä.area_replace=Ã(){Á.area_search(\"replace\");};EA.Ä.area_replace_all=Ã(){var base_text=Á.Â.Ê;var search=_$(\"area_search\").Ê;var replace=_$(\"area_replace\").Ê;if(search.Æ==0){_$(\"area_search_msg\").innerHTML=Á.get_translation(\"search_field_empty\");return;}var new_text=\"\";var nb_change=0;if(_$(\"area_search_reg_exp\").checked){var opt=\"mg\";if(!_$(\"area_search_match_case\").checked)opt+=\"i\";var reg=new RegExp(search,opt);nb_change=infos[\"full_text\"].match(reg).Æ;new_text=infos[\"full_text\"].replace(reg,replace);}\nelse{if(_$(\"area_search_match_case\").checked){var tmp_tab=base_text.split(search);nb_change=tmp_tab.Æ-1;new_text=tmp_tab.join(replace);}\nelse{var lower_Ê=base_text.toLowerCase();var lower_search=search.toLowerCase();var start=0;var pos=lower_Ê.indexOf(lower_search);while(pos!=-1){nb_change++;new_text+=Á.Â.Ê.substring(start,pos)+replace;start=pos+search.Æ;pos=lower_Ê.indexOf(lower_search,pos+1);}new_text+=Á.Â.Ê.substring(start);}}if(new_text==base_text){_$(\"area_search_msg\").innerHTML=\"<strong>\"+search+\"</strong> \"+Á.get_translation(\"not_found\");}\nelse{Á.Â.Ê=new_text;_$(\"area_search_msg\").innerHTML=\"<strong>\"+nb_change+\"</strong> \"+Á.get_translation(\"occurrence_replaced\");setTimeout(\"eA.Â.focus();eA.Â.ÂFocused=Ë;\",100);}}; EA.Ä.change_highlight=Ã(change_to){if(Á.Å[\"syntax\"].Æ==0&&change_to==Ì){Á.switchClassSticky(_$(\"highlight\"),'editAreaButtonDisabled',Ë);Á.switchClassSticky(_$(\"reset_highlight\"),'editAreaButtonDisabled',Ë);return Ì;}if(Á.do_highlight==change_to)return Ì;Á.getIESelection();var pos_start=Á.Â.selectionStart;var pos_end=Á.Â.selectionEnd;if(Á.do_highlight===Ë||change_to==Ì)Á.disable_highlight();\nelse Á.enable_highlight();Á.Â.focus();Á.Â.selectionStart=pos_start;Á.Â.selectionEnd=pos_end;Á.setIESelection();};EA.Ä.disable_highlight=Ã(displayOnly){var t=Á,a=t.Â,new_Obj,old_class,new_class;t.selection_field.innerHTML=\"\";t.selection_field_text.innerHTML=\"\";t.content_highlight.Ç.visibility=\"hidden\";new_Obj=t.content_highlight.cloneNode(Ì);new_Obj.innerHTML=\"\";t.content_highlight.ÈNode.insertBefore(new_Obj,t.content_highlight);t.content_highlight.ÈNode.removeChild(t.content_highlight);t.content_highlight=new_Obj;old_class=È.getAttribute(a,\"class\");if(old_class){new_class=old_class.replace(\"hidden\",\"\");È.setAttribute(a,\"class\",new_class);}a.Ç.backgroundColor=\"transÈ\";t.switchClassSticky(_$(\"highlight\"),'editAreaButtonNormal',Ë);t.switchClassSticky(_$(\"reset_highlight\"),'editAreaButtonDisabled',Ë);t.do_highlight=Ì;t.switchClassSticky(_$(\"change_smooth_selection\"),'editAreaButtonSelected',Ë);if(typeof(t.smooth_selection_before_highlight)!=\"undefined\"&&t.smooth_selection_before_highlight===Ì){t.change_smooth_selection_mode(Ì);}};EA.Ä.enable_highlight=Ã(){var t=Á,a=t.Â,new_class;t.show_waiting_screen();t.content_highlight.Ç.visibility=\"visible\";new_class=È.getAttribute(a,\"class\")+\" hidden\";È.setAttribute(a,\"class\",new_class);if(t.isIE)a.Ç.backgroundColor=\"#FFFFFF\";t.switchClassSticky(_$(\"highlight\"),'editAreaButtonSelected',Ì);t.switchClassSticky(_$(\"reset_highlight\"),'editAreaButtonNormal',Ì);t.smooth_selection_before_highlight=t.smooth_selection;if(!t.smooth_selection)t.change_smooth_selection_mode(Ë);t.switchClassSticky(_$(\"change_smooth_selection\"),'editAreaButtonDisabled',Ë);t.do_highlight=Ë;t.resync_highlight();t.hide_waiting_screen();};EA.Ä.maj_highlight=Ã(infos){var debug_opti=\"\",tps_start=new Date().getTime(),tps_middle_opti=new Date().getTime();var t=Á,hightlighted_text,updated_highlight;var textToHighlight=infos[\"full_text\"],doSyntaxOpti=Ì,doHtmlOpti=Ì,stay_begin=\"\",stay_end=\"\",trace_new,trace_last;if(t.last_text_to_highlight==infos[\"full_text\"]&&t.resync_highlight!==Ë)return;if(t.reload_highlight===Ë){t.reload_highlight=Ì;}\nelse if(textToHighlight.Æ==0){textToHighlight=\"\\n \";}\nelse{changes=t.checkTextEvolution(t.last_text_to_highlight,textToHighlight);trace_new=t.get_syntax_trace(changes.newTextLine).replace(/\\r/g,'');trace_last=t.get_syntax_trace(changes.lastTextLine).replace(/\\r/g,'');doSyntaxOpti=(trace_new==trace_last);if(!doSyntaxOpti&&trace_new==\"\\n\"+trace_last&&/^[ \t\s]*\\n[ \t\s]*$/.test(changes.newText.replace(/\\r/g,''))&&changes.lastText==\"\"){doSyntaxOpti=Ë;}if(doSyntaxOpti){tps_middle_opti=new Date().getTime();stay_begin=t.last_hightlighted_text.split(\"\\n\").slice(0,changes.lineStart).join(\"\\n\");if(changes.lineStart>0)stay_begin+=\"\\n\";stay_end=t.last_hightlighted_text.split(\"\\n\").slice(changes.lineLastEnd+1).join(\"\\n\");if(stay_end.Æ>0)stay_end=\"\\n\"+stay_end;if(stay_begin.split('<span').Æ !=stay_begin.split('</span').Æ||stay_end.split('<span').Æ !=stay_end.split('</span').Æ){doSyntaxOpti=Ì;stay_end='';stay_begin='';}\nelse{if(stay_begin.Æ==0&&changes.posLastEnd==-1)changes.newTextLine+=\"\\n\";textToHighlight=changes.newTextLine;}}if(t.Å[\"debug\"]){var ch=changes;debug_opti=(doSyntaxOpti?\"Optimisation\":\"No optimisation\")+\" start:\"+ch.posStart+\"(\"+ch.lineStart+\")\"+\" end_new:\"+ch.posNewEnd+\"(\"+ch.lineNewEnd+\")\"+\" end_last:\"+ch.posLastEnd+\"(\"+ch.lineLastEnd+\")\"+\"\\nchanged_text:\"+ch.newText+\"=> trace:\"+trace_new+\"\\nchanged_last_text:\"+ch.lastText+\"=> trace:\"+trace_last+\"\\nchanged_line:\"+ch.newTextLine+\"\\nlast_changed_line:\"+ch.lastTextLine+\"\\nstay_begin:\"+stay_begin.slice(-100)+\"\\nstay_end:\"+stay_end.substr(0,100);+\"\\n\";}}tps_end_opti=new Date().getTime();updated_highlight=t.colorize_text(textToHighlight);tpsAfterReg=new Date().getTime();doSyntaxOpti=doHtmlOpti=Ì;if(doSyntaxOpti){try{var replacedBloc,i,nbStart='',nbEnd='',newHtml,ÆOld,ÆNew;replacedBloc=t.last_hightlighted_text.substring(stay_begin.Æ,t.last_hightlighted_text.Æ-stay_end.Æ);ÆOld=replacedBloc.Æ;ÆNew=updated_highlight.Æ;for(i=0;i < ÆOld&&i < ÆNew&&replacedBloc.charAt(i)==updated_highlight.charAt(i);i++){}nbStart=i;for(i=0;i+nbStart < ÆOld&&i+nbStart < ÆNew&&replacedBloc.charAt(ÆOld-i-1)==updated_highlight.charAt(ÆNew-i-1);i++){}nbEnd=i;lastHtml=replacedBloc.substring(nbStart,ÆOld-nbEnd);newHtml=updated_highlight.substring(nbStart,ÆNew-nbEnd);if(newHtml.indexOf('<span')==-1&&newHtml.indexOf('</span')==-1&&lastHtml.indexOf('<span')==-1&&lastHtml.indexOf('</span')==-1){var beginStr,nbOpendedSpan,nbClosedSpan,nbUnchangedChars,span,textNode;doHtmlOpti=Ë;beginStr=t.last_hightlighted_text.substr(0,stay_begin.Æ+nbStart);newHtml=newHtml.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');nbOpendedSpan=beginStr.split('<span').Æ-1;nbClosedSpan=beginStr.split('</span').Æ-1;span=t.content_highlight.getElementsByTagName('span')[ nbOpendedSpan ];ÈSpan=span;maxStartOffset=maxEndOffset=0;if(nbOpendedSpan==nbClosedSpan){while(ÈSpan.ÈNode !=t.content_highlight&&ÈSpan.ÈNode.tagName !='PRE'){ÈSpan=ÈSpan.ÈNode;}}\nelse{maxStartOffset=maxEndOffset=beginStr.Æ+1;nbClosed=beginStr.substr(Math.max(0,beginStr.lastIndexOf('<span',maxStartOffset-1))).split('</span').Æ-1;while(nbClosed > 0){nbClosed--;ÈSpan=ÈSpan.ÈNode;}while(ÈSpan.ÈNode !=t.content_highlight&&ÈSpan.ÈNode.tagName !='PRE'&&(tmpMaxStartOffset=Math.max(0,beginStr.lastIndexOf('<span',maxStartOffset-1)))<(tmpMaxEndOffset=Math.max(0,beginStr.lastIndexOf('</span',maxEndOffset-1)))){maxStartOffset=tmpMaxStartOffset;maxEndOffset=tmpMaxEndOffset;}}if(ÈSpan.ÈNode==t.content_highlight||ÈSpan.ÈNode.tagName=='PRE'){maxStartOffset=Math.max(0,beginStr.indexOf('<span'));}if(maxStartOffset==beginStr.Æ){nbSubSpanBefore=0;}\nelse{lastEndPos=Math.max(0,beginStr.lastIndexOf('>',maxStartOffset));nbSubSpanBefore=beginStr.substr(lastEndPos).split('<span').Æ-1;}if(nbSubSpanBefore==0){textNode=ÈSpan.firstChild;}\nelse{lastSubSpan=ÈSpan.getElementsByTagName('span')[ nbSubSpanBefore-1 ];while(lastSubSpan.ÈNode !=ÈSpan){lastSubSpan=lastSubSpan.ÈNode;}if(lastSubSpan.nextSibling==null||lastSubSpan.nextSibling.nodeType !=3){textNode=document.createTextNode('');lastSubSpan.ÈNode.insertBefore(textNode,lastSubSpan.nextSibling);}\nelse{textNode=lastSubSpan.nextSibling;}}if((lastIndex=beginStr.lastIndexOf('>'))==-1){nbUnchangedChars=beginStr.Æ;}\nelse{nbUnchangedChars=beginStr.substr(lastIndex+1).replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&').Æ;}if(t.isIE){nbUnchangedChars-=(beginStr.substr(beginStr.Æ-nbUnchangedChars).split(\"\\n\").Æ-1);textNode.replaceData(nbUnchangedChars,lastHtml.replace(/\\n/g,'').Æ,newHtml.replace(/\\n/g,''));}\nelse{textNode.replaceData(nbUnchangedChars,lastHtml.Æ,newHtml);}}}catch(e){doHtmlOpti=Ì;}}tpsAfterOpti2=new Date().getTime();hightlighted_text=stay_begin+updated_highlight+stay_end;if(!doHtmlOpti){var new_Obj=t.content_highlight.cloneNode(Ì);if((t.isIE&&t.isIE < 8)||(t.isOpera&&t.isOpera < 9.6))new_Obj.innerHTML=\"<pre><span class='\"+t.Å[\"syntax\"]+\"'>\"+hightlighted_text+\"</span></pre>\";\nelse new_Obj.innerHTML=\"<span class='\"+t.Å[\"syntax\"]+\"'>\"+hightlighted_text+\"</span>\";t.content_highlight.ÈNode.replaceChild(new_Obj,t.content_highlight);t.content_highlight=new_Obj;}t.last_text_to_highlight=infos[\"full_text\"];t.last_hightlighted_text=hightlighted_text;tps3=new Date().getTime();if(t.Å[\"debug\"]){t.debug.Ê=\"Tps optimisation \"+(tps_end_opti-tps_start)+\" | tps reg exp:\"+(tpsAfterReg-tps_end_opti)+\" | tps opti HTML:\"+(tpsAfterOpti2-tpsAfterReg)+' '+(doHtmlOpti ? 'yes':'no')+\" | tps update highlight content:\"+(tps3-tpsAfterOpti2)+\" | tpsTotal:\"+(tps3-tps_start)+\"(\"+tps3+\")\\n\"+debug_opti;}};EA.Ä.resync_highlight=Ã(reload_now){Á.reload_highlight=Ë;Á.last_text_to_highlight=\"\";Á.focus();if(reload_now)Á.check_line_selection(Ì);}; EA.Ä.comment_or_quote=Ã(){var new_class=\"\",close_tag=\"\",sy,arg,i;sy=È.eAL.syntax[eA.current_code_lang];arg=EA.Ä.comment_or_quote.arguments[0];for(i in sy[\"quotes\"]){if(arg.indexOf(i)==0){new_class=\"quotesmarks\";close_tag=sy[\"quotes\"][i];}}if(new_class.Æ==0){for(var i in sy[\"comments\"]){if(arg.indexOf(i)==0){new_class=\"comments\";close_tag=sy[\"comments\"][i];}}}if(close_tag==\"\\n\"){return \"µ__\"+new_class+\"__µ\"+arg.replace(/(\\r?\\n)?$/m,\"µ_END_µ$1\");}\nelse{reg=new RegExp(È.eAL.get_escaped_regexp(close_tag)+\"$\",\"m\");if(arg.search(reg)!=-1)return \"µ__\"+new_class+\"__µ\"+arg+\"µ_END_µ\";\nelse return \"µ__\"+new_class+\"__µ\"+arg;}};EA.Ä.get_syntax_trace=Ã(text){if(Á.Å[\"syntax\"].Æ>0&&È.eAL.syntax[Á.Å[\"syntax\"]][\"syntax_trace_regexp\"])return text.replace(È.eAL.syntax[Á.Å[\"syntax\"]][\"syntax_trace_regexp\"],\"$3\");};EA.Ä.colorize_text=Ã(text){text=\" \"+text;if(Á.Å[\"syntax\"].Æ>0)text=Á.apply_syntax(text,Á.Å[\"syntax\"]);return text.substr(1).replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/µ_END_µ/g,\"</span>\").replace(/µ__([a-zA-Z0-9]+)__µ/g,\"<span class='$1'>\");};EA.Ä.apply_syntax=Ã(text,lang){var sy;Á.current_code_lang=lang;if(!È.eAL.syntax[lang])return text;sy=È.eAL.syntax[lang];if(sy[\"custom_regexp\"]['before']){for(var i in sy[\"custom_regexp\"]['before']){var convert=\"$1µ__\"+sy[\"custom_regexp\"]['before'][i]['class']+\"__µ$2µ_END_µ$3\";text=text.replace(sy[\"custom_regexp\"]['before'][i]['regexp'],convert);}}if(sy[\"comment_or_quote_reg_exp\"]){text=text.replace(sy[\"comment_or_quote_reg_exp\"],Á.comment_or_quote);}if(sy[\"keywords_reg_exp\"]){for(var i in sy[\"keywords_reg_exp\"]){text=text.replace(sy[\"keywords_reg_exp\"][i],'µ__'+i+'__µ$2µ_END_µ');}}if(sy[\"delimiters_reg_exp\"]){text=text.replace(sy[\"delimiters_reg_exp\"],'µ__delimiters__µ$1µ_END_µ');}if(sy[\"operators_reg_exp\"]){text=text.replace(sy[\"operators_reg_exp\"],'µ__operators__µ$1µ_END_µ');}if(sy[\"custom_regexp\"]['after']){for(var i in sy[\"custom_regexp\"]['after']){var convert=\"$1µ__\"+sy[\"custom_regexp\"]['after'][i]['class']+\"__µ$2µ_END_µ$3\";text=text.replace(sy[\"custom_regexp\"]['after'][i]['regexp'],convert);}}return text;};var editArea= eA;EditArea=EA;</script>".replace(/Á/g,'this').replace(/Â/g,'textarea').replace(/Ã/g,'function').replace(/Ä/g,'prototype').replace(/Å/g,'settings').replace(/Æ/g,'length').replace(/Ç/g,'style').replace(/È/g,'parent').replace(/É/g,'last_selection').replace(/Ê/g,'value').replace(/Ë/g,'true').replace(/Ì/g,'false');
+editAreaLoader.template= "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" > <head> <title>EditArea</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> <meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\"/> [__CSSRULES__] [__JSCODE__] </head> <body> <div id='editor'> <div class='area_toolbar' id='toolbar_1'>[__TOOLBAR__]</div> <div class='area_toolbar' id='tab_browsing_area'><ul id='tab_browsing_list' class='menu'> <li> </li> </ul></div> <div id='result'> <div id='no_file_selected'></div> <div id='container'> <div id='cursor_pos' class='edit_area_cursor'>&nbsp;</div> <div id='end_bracket' class='edit_area_cursor'>&nbsp;</div> <div id='selection_field'></div> <div id='line_number' selec='none'></div> <div id='content_highlight'></div> <div id='test_font_size'></div> <div id='selection_field_text'></div> <textarea id='textarea' wrap='off' onchange='editArea.execCommand(\"onchange\");' onfocus='javascript:editArea.textareaFocused=true;' onblur='javascript:editArea.textareaFocused=false;'> </textarea> </div> </div> <div class='area_toolbar' id='toolbar_2'> <table class='statusbar' cellspacing='0' cellpadding='0'> <tr> <td class='total' selec='none'>{$position}:</td> <td class='infos' selec='none'> {$line_abbr} <span  id='linePos'>0</span>, {$char_abbr} <span id='currPos'>0</span> </td> <td class='total' selec='none'>{$total}:</td> <td class='infos' selec='none'> {$line_abbr} <span id='nbLine'>0</span>, {$char_abbr} <span id='nbChar'>0</span> </td> <td class='resize'> <span id='resize_area'><img src='[__BASEURL__]images/statusbar_resize.gif' alt='resize' selec='none'></span> </td> </tr> </table> </div> </div> <div id='processing'> <div id='processing_text'> {$processing} </div> </div> <div id='area_search_replace' class='editarea_popup'> <table cellspacing='2' cellpadding='0' style='width: 100%'> <tr> <td selec='none'>{$search}</td> <td><input type='text' id='area_search' /></td> <td id='close_area_search_replace'> <a onclick='Javascript:editArea.execCommand(\"hidden_search\")'><img selec='none' src='[__BASEURL__]images/close.gif' alt='{$close_popup}' title='{$close_popup}' /></a><br /> </tr><tr> <td selec='none'>{$replace}</td> <td><input type='text' id='area_replace' /></td> <td><img id='move_area_search_replace' onmousedown='return parent.start_move_element(event,\"area_search_replace\", parent.frames[\"frame_\"+editArea.id]);'  src='[__BASEURL__]images/move.gif' alt='{$move_popup}' title='{$move_popup}' /></td> </tr> </table> <div class='button'> <input type='checkbox' id='area_search_match_case' /><label for='area_search_match_case' selec='none'>{$match_case}</label> <input type='checkbox' id='area_search_reg_exp' /><label for='area_search_reg_exp' selec='none'>{$reg_exp}</label> <br /> <a onclick='Javascript:editArea.execCommand(\"area_search\")' selec='none'>{$find_next}</a> <a onclick='Javascript:editArea.execCommand(\"area_replace\")' selec='none'>{$replace}</a> <a onclick='Javascript:editArea.execCommand(\"area_replace_all\")' selec='none'>{$replace_all}</a><br /> </div> <div id='area_search_msg' selec='none'></div> </div> <div id='edit_area_help' class='editarea_popup'> <div class='close_popup'> <a onclick='Javascript:editArea.execCommand(\"close_all_inline_popup\")'><img src='[__BASEURL__]images/close.gif' alt='{$close_popup}' title='{$close_popup}' /></a> </div> <div><h2>Editarea [__EA_VERSION__]</h2><br /> <h3>{$shortcuts}:</h3> {$tab}: {$add_tab}<br /> {$shift}+{$tab}: {$remove_tab}<br /> {$ctrl}+f: {$search_command}<br /> {$ctrl}+r: {$replace_command}<br /> {$ctrl}+h: {$highlight}<br /> {$ctrl}+g: {$go_to_line}<br /> {$ctrl}+z: {$undo}<br /> {$ctrl}+y: {$redo}<br /> {$ctrl}+e: {$help}<br /> {$ctrl}+q, {$esc}: {$close_popup}<br /> {$accesskey} E: {$toggle}<br /> <br /> <em>{$about_notice}</em> <br /><div class='copyright'>&copy; Christophe Dolivet 2007-2010</div> </div> </div> </body> </html> ";
+editAreaLoader.iframe_css= "<style>body,html{margin:0;padding:0;height:100%;border:none;overflow:hidden;background-color:#FFF;}body,html,table,form,textarea{font:12px monospace,sans-serif;}#editor{border:solid #888 1px;overflow:hidden;}#result{z-index:4;overflow-x:auto;overflow-y:scroll;border-top:solid #888 1px;border-bottom:solid #888 1px;position:relative;clear:both;}#result.empty{overflow:hidden;}#container{overflow:hidden;border:solid blue 0;position:relative;z-index:10;padding:0 5px 0 45px;}#textarea{position:relative;top:0;left:0;margin:0;padding:0;width:100%;height:100%;overflow:hidden;z-index:7;border-width:0;background-color:transparent;resize:none;}#textarea,#textarea:hover{outline:none;}#content_highlight{white-space:pre;margin:0;padding:0;position:absolute;z-index:4;overflow:visible;}#selection_field,#selection_field_text{margin:0;background-color:#E1F2F9;position:absolute;z-index:5;top:-100px;padding:0;white-space:pre;overflow:hidden;}#selection_field.show_colors {z-index:3;background-color:#EDF9FC;}#selection_field strong{font-weight:normal;}#selection_field.show_colors *,#selection_field_text * {visibility:hidden;}#selection_field_text{background-color:transparent;}#selection_field_text strong{font-weight:normal;background-color:#3399FE;color:#FFF;visibility:visible;}#container.word_wrap #content_highlight,#container.word_wrap #selection_field,#container.word_wrap #selection_field_text,#container.word_wrap #test_font_size{white-space:pre-wrap;white-space:-moz-pre-wrap !important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:99%;}#line_number{position:absolute;overflow:hidden;border-right:solid black 1px;z-index:8;width:38px;padding:0 5px 0 0;margin:0 0 0 -45px;text-align:right;color:#AAAAAA;}#test_font_size{padding:0;margin:0;visibility:hidden;position:absolute;white-space:pre;}pre{margin:0;padding:0;}.hidden{opacity:0.2;filter:alpha(opacity=20);}#result .edit_area_cursor{position:absolute;z-index:6;background-color:#FF6633;top:-100px;margin:0;}#result .edit_area_selection_field .overline{background-color:#996600;}.editarea_popup{border:solid 1px #888888;background-color:#ECE9D8;width:250px;padding:4px;position:absolute;visibility:hidden;z-index:15;top:-500px;}.editarea_popup,.editarea_popup table{font-family:sans-serif;font-size:10pt;}.editarea_popup img{border:0;}.editarea_popup .close_popup{float:right;line-height:16px;border:0;padding:0;}.editarea_popup h1,.editarea_popup h2,.editarea_popup h3,.editarea_popup h4,.editarea_popup h5,.editarea_popup h6{margin:0;padding:0;}.editarea_popup .copyright{text-align:right;}div#area_search_replace{}div#area_search_replace img{border:0;}div#area_search_replace div.button{text-align:center;line-height:1.7em;}div#area_search_replace .button a{cursor:pointer;border:solid 1px #888888;background-color:#DEDEDE;text-decoration:none;padding:0 2px;color:#000000;white-space:nowrap;}div#area_search_replace a:hover{background-color:#EDEDED;}div#area_search_replace  #move_area_search_replace{cursor:move;border:solid 1px #888;}div#area_search_replace  #close_area_search_replace{text-align:right;vertical-align:top;white-space:nowrap;}div#area_search_replace  #area_search_msg{height:18px;overflow:hidden;border-top:solid 1px #888;margin-top:3px;}#edit_area_help{width:350px;}#edit_area_help div.close_popup{float:right;}.area_toolbar{width:100%;margin:0;padding:0;background-color:#ECE9D8;text-align:center;}.area_toolbar,.area_toolbar table{font:11px sans-serif;}.area_toolbar img{border:0;vertical-align:middle;}.area_toolbar input{margin:0;padding:0;}.area_toolbar select{font-family:'MS Sans Serif',sans-serif,Verdana,Arial;font-size:7pt;font-weight:normal;margin:2px 0 0 0 ;padding:0;vertical-align:top;background-color:#F0F0EE;}table.statusbar{width:100%;}.area_toolbar td.infos{text-align:center;width:130px;border-right:solid 1px #888;border-width:0 1px 0 0;padding:0;}.area_toolbar td.total{text-align:right;width:50px;padding:0;}.area_toolbar td.resize{text-align:right;}.area_toolbar span#resize_area{cursor:nw-resize;visibility:hidden;}.editAreaButtonNormal,.editAreaButtonOver,.editAreaButtonDown,.editAreaSeparator,.editAreaSeparatorLine,.editAreaButtonDisabled,.editAreaButtonSelected {border:0; margin:0; padding:0; background:transparent;margin-top:0;margin-left:1px;padding:0;}.editAreaButtonNormal {border:1px solid #ECE9D8 !important;cursor:pointer;}.editAreaButtonOver {border:1px solid #0A246A !important;cursor:pointer;background-color:#B6BDD2;}.editAreaButtonDown {cursor:pointer;border:1px solid #0A246A !important;background-color:#8592B5;}.editAreaButtonSelected {border:1px solid #C0C0BB !important;cursor:pointer;background-color:#F4F2E8;}.editAreaButtonDisabled {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);-moz-opacity:0.3;opacity:0.3;border:1px solid #F0F0EE !important;cursor:pointer;}.editAreaSeparatorLine {margin:1px 2px;background-color:#C0C0BB;width:2px;height:18px;}#processing{display:none;background-color:#ECE9D8;border:solid #888 1px;position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;text-align:center;}#processing_text{position:absolute;left:50%;top:50%;width:200px;height:20px;margin-left:-100px;margin-top:-10px;text-align:center;}#tab_browsing_area{display:none;background-color:#CCC9A8;border-top:1px solid #888;text-align:left;margin:0;}#tab_browsing_list {padding:0;margin:0;list-style-type:none;white-space:nowrap;}#tab_browsing_list li {float:left;margin:-1px;}#tab_browsing_list a {position:relative;display:block;text-decoration:none;float:left;cursor:pointer;line-height:14px;}#tab_browsing_list a span {display:block;color:#000;background:#ECE9D8;border:1px solid #888;border-width:1px 1px 0;text-align:center;padding:2px 2px 1px 4px;position:relative;}#tab_browsing_list a b {display:block;border-bottom:2px solid #617994;}#tab_browsing_list a .edited {display:none;}#tab_browsing_list a.edited .edited {display:inline;}#tab_browsing_list a img{margin-left:7px;}#tab_browsing_list a.edited img{margin-left:3px;}#tab_browsing_list a:hover span {background:#F4F2E8;border-color:#0A246A;}#tab_browsing_list .selected a span{background:#046380;color:#FFF;}#no_file_selected{height:100%;width:150%;background:#CCC;display:none;z-index:20;position:absolute;}.non_editable #editor{border-width:0 1px;}.non_editable .area_toolbar{display:none;}#auto_completion_area{background:#FFF;border:solid 1px #888;position:absolute;z-index:15;width:280px;height:180px;overflow:auto;display:none;}#auto_completion_area a,#auto_completion_area a:visited{display:block;padding:0 2px 1px;color:#000;text-decoration:none;}#auto_completion_area a:hover,#auto_completion_area a:focus,#auto_completion_area a.focus{background:#D6E1FE;text-decoration:none;}#auto_completion_area ul{margin:0;padding:0;list-style:none inside;}#auto_completion_area li{padding:0;}#auto_completion_area .prefix{font-style:italic;padding:0 3px;}</style>";

Property changes on: tags/2.8.3/wb/include/editarea/edit_area_full.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/editarea/license_lgpl.txt
===================================================================
--- tags/2.8.3/wb/include/editarea/license_lgpl.txt	(nonexistent)
+++ tags/2.8.3/wb/include/editarea/license_lgpl.txt	(revision 1610)
@@ -0,0 +1,458 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS

Property changes on: tags/2.8.3/wb/include/editarea/license_lgpl.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captcha.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captcha.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captcha.php	(revision 1610)
@@ -0,0 +1,263 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// displays the image or text inside an <iframe>
+if(!function_exists('display_captcha_real')) {
+	function display_captcha_real($kind='image') {
+		$t = time();
+		$output  = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" ";
+		$output .= "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+		$output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"";
+		$output .= strtolower(LANGUAGE)."\" lang=\"".strtolower(LANGUAGE)."\">\n";
+		$output .= "\t<head>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n";
+		$output .= "\t\t<title>captcha</title>\n\t</head>\n\t<body>\n";
+		$_SESSION['captcha_time'] = $t;
+		if($kind=='image') {
+			$output .= "\t\t<a title=\"reload\" href=\"".WB_URL."/include/captcha/captcha.php?display_captcha_X986E21=2\">";
+			$output .= "<img style=\"border: none;\" src=\"".WB_URL."/include/captcha/captchas/";
+			$output .= CAPTCHA_TYPE.".php?t=".$t."\" alt=\"Captcha\" /></a>\n";
+		} else {
+			$output .= "\t\t<h2>error</h2>";
+		}
+		$output .= "\t</body>\n</html>";
+		echo $output;
+	}
+}
+
+// called from an <iframe>
+if(isset($_GET['display_captcha_X986E21'])) {
+	require('../../config.php');
+	switch(CAPTCHA_TYPE) {
+	case 'calc_image':
+	case 'calc_ttf_image':
+	case 'ttf_image':
+	case 'old_image':
+		display_captcha_real('image');
+		break;
+	}
+	exit(0);
+}
+
+
+// Make sure page cannot be accessed directly
+if(!defined('WB_PATH')) { exit("Cannot access this file directly"); }
+
+// check if module language file exists for the language set by the user (e.g. DE, EN)
+global $MOD_CAPTCHA;
+if(!file_exists(WB_PATH.'/modules/captcha_control/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH.'/modules/captcha_control/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH.'/modules/captcha_control/languages/'.LANGUAGE .'.php');
+}
+
+// output-handler for image-captchas to determine size of image
+if(!function_exists('captcha_header')) {
+	function captcha_header() {
+		header("Expires: Mon, 1 Jan 1990 05:00:00 GMT");
+		header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
+		header("Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate");
+		header("Pragma: no-cache");
+		header("Content-type: image/png");
+		return;
+	}
+}
+
+// get list of available CAPTCHAS for the dropdown-listbox in admin-tools
+if(extension_loaded('gd') && function_exists('imagepng') && function_exists('imagettftext')) {
+	$useable_captchas = array(
+		'calc_text'=>$MOD_CAPTCHA_CONTROL['CALC_TEXT'],
+		'calc_image'=>$MOD_CAPTCHA_CONTROL['CALC_IMAGE'],
+		'calc_ttf_image'=>$MOD_CAPTCHA_CONTROL['CALC_TTF_IMAGE'],
+		'ttf_image'=>$MOD_CAPTCHA_CONTROL['TTF_IMAGE'],
+		'old_image'=>$MOD_CAPTCHA_CONTROL['OLD_IMAGE'],
+		'text'=>$MOD_CAPTCHA_CONTROL['TEXT']
+	);
+} elseif(extension_loaded('gd') && function_exists('imagepng')) {
+	$useable_captchas = array(
+		'calc_text'=>$MOD_CAPTCHA_CONTROL['CALC_TEXT'],
+		'calc_image'=>$MOD_CAPTCHA_CONTROL['CALC_IMAGE'],
+		'old_image'=>$MOD_CAPTCHA_CONTROL['OLD_IMAGE'],
+		'text'=>$MOD_CAPTCHA_CONTROL['TEXT']
+	);
+} else {
+	$useable_captchas = array(
+		'calc_text'=>$MOD_CAPTCHA_CONTROL['CALC_TEXT'],
+		'text'=>$MOD_CAPTCHA_CONTROL['TEXT']
+	);
+}
+
+if(!function_exists('call_captcha')) {
+	function call_captcha($action='all', $style='', $sec_id='') {
+		global $MOD_CAPTCHA;
+		$t = time();
+		$_SESSION['captcha_time'] = $t;
+
+		// get width and height of captcha image for use in <iframe>
+		switch(CAPTCHA_TYPE) {
+		case 'calc_image':
+			$captcha_width = 142;
+			$captcha_height = 30;
+			break;
+		case 'calc_ttf_image':
+			$captcha_width = 162;
+			$captcha_height = 40;
+			break;
+		case 'ttf_image':
+			$captcha_width = 162;
+			$captcha_height = 40;
+			break;
+		case 'old_image':
+			$captcha_width = 142;
+			$captcha_height = 30;
+			break;
+		default:
+			$captcha_width = 250;
+			$captcha_height = 100;
+		}
+
+		if($action=='all') {
+			switch(CAPTCHA_TYPE) {
+				case 'text': // text-captcha
+					?><table class="captcha_table" summary="captcha control"><tr>
+					<td class="text_captcha">
+						<?php include(WB_PATH.'/include/captcha/captchas/'.CAPTCHA_TYPE.'.php'); ?>
+					</td>
+					<td></td>
+					<td><input type="text" name="captcha" maxlength="50"  style="width:150px;" /></td>
+					<td class="captcha_expl"><?php echo $MOD_CAPTCHA['VERIFICATION_INFO_QUEST']; ?></td>
+					</tr></table><?php
+					break;
+				case 'calc_text': // calculation as text
+					?><table class="captcha_table" summary="captcha control"><tr>
+					<td class="text_captcha">
+						<?php include(WB_PATH.'/include/captcha/captchas/'.CAPTCHA_TYPE.'.php'); ?>
+					</td>
+					<td>&nbsp;=&nbsp;</td>
+					<td><input type="text" name="captcha" maxlength="10"  style="width:20px;" /></td>
+					<td class="captcha_expl"><?php echo $MOD_CAPTCHA['VERIFICATION_INFO_RES']; ?></td>
+					</tr></table><?php
+					break;
+				case 'calc_image': // calculation with image (old captcha)
+				case 'calc_ttf_image': // calculation with varying background and ttf-font
+				  ?><table class="captcha_table" summary="captcha control"><tr>
+					<td class="image_captcha">
+						<?php echo "<iframe class=\"captcha_iframe\" width=\"$captcha_width\" height=\"$captcha_height\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" frameborder=\"0\" name=\"captcha_iframe_$sec_id\" src=\"". WB_URL ."/include/captcha/captcha.php?display_captcha_X986E21=1&amp;s=$sec_id"; ?>">
+						<img src="<?php echo WB_URL.'/include/captcha/captchas/'.CAPTCHA_TYPE.".php?t=$t&amp;s=$sec_id"; ?>" alt="Captcha" />
+						</iframe>
+					</td>
+					<td>&nbsp;=&nbsp;</td>
+					<td><input type="text" name="captcha" maxlength="10" style="width:20px;" /></td>
+					<td class="captcha_expl"><?php echo $MOD_CAPTCHA['VERIFICATION_INFO_RES']; ?></td>
+					</tr></table><?php
+					break;
+				// normal images
+				case 'ttf_image': // captcha with varying background and ttf-font
+				case 'old_image': // old captcha
+					?><table class="captcha_table" summary="captcha control"><tr>
+					<td class="image_captcha">
+						<?php echo "<iframe class=\"captcha_iframe\" width=\"$captcha_width\" height=\"$captcha_height\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" frameborder=\"0\" name=\"captcha_iframe_$sec_id\" src=\"". WB_URL ."/include/captcha/captcha.php?display_captcha_X986E21=1&amp;s=$sec_id"; ?>">
+						<img src="<?php echo WB_URL.'/include/captcha/captchas/'.CAPTCHA_TYPE.".php?t=$t&amp;s=$sec_id"; ?>" alt="Captcha" />
+						</iframe>
+					</td>
+					<td></td>
+					<td><input type="text" name="captcha" maxlength="10" style="width:50px;" /></td>
+					<td class="captcha_expl"><?php echo $MOD_CAPTCHA['VERIFICATION_INFO_TEXT']; ?></td>
+					</tr></table><?php
+					break;
+			}
+		} elseif($action=='image') {
+			switch(CAPTCHA_TYPE) {
+				case 'text': // text-captcha
+				case 'calc_text': // calculation as text
+					echo ($style?"<span $style>":'');
+					include(WB_PATH.'/include/captcha/captchas/'.CAPTCHA_TYPE.'.php');
+					echo ($style?'</span>':'');
+					break;
+				case 'calc_image': // calculation with image (old captcha)
+				case 'calc_ttf_image': // calculation with varying background and ttf-font
+				case 'ttf_image': // captcha with varying background and ttf-font
+				case 'old_image': // old captcha
+					echo "<img $style src=\"".WB_URL.'/include/captcha/captchas/'.CAPTCHA_TYPE.".php?t=$t&amp;s=$sec_id\" />";
+					break;
+			}
+		} elseif($action=='image_iframe') {
+			switch(CAPTCHA_TYPE) {
+				case 'text': // text-captcha
+					echo ($style?"<span $style>":'');
+					include(WB_PATH.'/include/captcha/captchas/'.CAPTCHA_TYPE.'.php');
+					echo ($style?'</span>':'');
+					break;
+				case 'calc_text': // calculation as text
+					include(WB_PATH.'/include/captcha/captchas/'.CAPTCHA_TYPE.'.php');
+					break;
+				case 'calc_image': // calculation with image (old captcha)
+				case 'calc_ttf_image': // calculation with varying background and ttf-font
+				case 'ttf_image': // captcha with varying background and ttf-font
+				case 'old_image': // old captcha
+					?>
+					<?php echo "<iframe class=\"captcha_iframe\" width=\"$captcha_width\" height=\"$captcha_height\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" frameborder=\"0\" name=\"captcha_iframe_$sec_id\" src=\"". WB_URL ."/include/captcha/captcha.php?display_captcha_X986E21=1&amp;s=$sec_id"; ?>">
+					<?php
+					echo "<img $style alt=\"Captcha\" src=\"".WB_URL.'/include/captcha/captchas/'.CAPTCHA_TYPE.".php?t=$t\" />";
+					?></iframe><?php
+					break;
+			}
+		} elseif($action=='input') {
+			switch(CAPTCHA_TYPE) {
+				case 'text': // text-captcha
+					echo '<input type="text" name="captcha" '.($style?$style:'style="width:150px;" maxlength="50"').' />';
+					break;
+				case 'calc_text': // calculation as text
+				case 'calc_image': // calculation with image (old captcha)
+				case 'calc_ttf_image': // calculation with varying background and ttf-font
+					echo '<input type="text" name="captcha" '.($style?$style:'style="width:20px;" maxlength="10"').' />';
+					break;
+				case 'ttf_image': // captcha with varying background and ttf-font
+				case 'old_image': // old captcha
+					echo '<input type="text" name="captcha" '.($style?$style:'style="width:50px;" maxlength="10"').' />';
+					break;
+			}
+		} elseif($action=='text') {
+			echo ($style?"<span $style>":'');
+			switch(CAPTCHA_TYPE) {
+				case 'text': // text-captcha
+					echo $MOD_CAPTCHA['VERIFICATION_INFO_QUEST'];
+					break;
+				case 'calc_text': // calculation as text
+				case 'calc_image': // calculation with image (old captcha)
+				case 'calc_ttf_image': // calculation with varying background and ttf-font
+					echo $MOD_CAPTCHA['VERIFICATION_INFO_RES'];
+					break;
+				case 'ttf_image': // captcha with varying background and ttf-font
+				case 'old_image': // old captcha
+					echo $MOD_CAPTCHA['VERIFICATION_INFO_TEXT'];
+					break;
+			}
+			echo ($style?'</span>':'');
+		}
+	}
+}
+

Property changes on: tags/2.8.3/wb/include/captcha/captcha.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/ttf_image.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/ttf_image.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/ttf_image.php	(revision 1610)
@@ -0,0 +1,144 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require_once("../../../config.php");
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+if(!isset($_SESSION['captcha_time']))
+	exit;
+//unset($_SESSION['captcha_time']);
+
+// get lists of fonts and backgrounds
+require_once(WB_PATH.'/framework/functions.php');
+$t_fonts = file_list(WB_PATH.'/include/captcha/fonts');
+$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds');
+$fonts = array();
+$bgs = array();
+foreach($t_fonts as $file) if(eregi('\.ttf$',$file)) $fonts[]=$file;
+foreach($t_bgs as $file) if(eregi('\.png$',$file)) $bgs[]=$file;
+
+// make random string
+if(!function_exists('randomString')) {
+	function randomString($len) {
+		list($usec, $sec) = explode(' ', microtime());
+		mt_srand((float)$sec + ((float)$usec * 100000));
+		//$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghkmnpqrstuvwxyz23456789";
+		$possible="abdfhkrsvwxz23456789";
+		$str="";
+		while(strlen($str)<$len) {
+			$str.=substr($possible,(mt_rand()%(strlen($possible))),1);
+		}
+		return($str);
+	}
+}
+$text = randomString(5); // number of characters
+
+$sec_id = '';
+if(isset($_GET['s'])) $sec_id = $_GET['s'];
+$_SESSION['captcha'.$sec_id] = $text;
+
+// choose a font and background
+$font = $fonts[array_rand($fonts)];
+$bg = $bgs[array_rand($bgs)];
+// get image-dimensions
+list($width, $height, $type, $attr) = getimagesize($bg);
+
+// create reload-image
+$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay
+
+if(mt_rand(0,2)==0) { // 1 out of 3
+
+	// draw each character individualy
+	$image = ImageCreateFromPNG($bg); // background image
+	$grey = mt_rand(0,50);
+	$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
+	$ttf = $font;
+	$ttfsize = 25; // fontsize
+	$count = 0;
+	$image_failed = true;
+	$angle = mt_rand(-15,15);
+	$x = mt_rand(10,25);
+	$y = mt_rand($height-10,$height-2);
+	do {
+		for($i=0;$i<strlen($text);$i++) {
+			$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
+			$angle = mt_rand(-15,15);
+			$x = mt_rand($res[4],$res[4]+10);
+			$y = mt_rand($height-15,$height-5);
+		}
+		if($res[4] > $width) {
+			$image_failed = true;
+		} else {
+			$image_failed = false;
+		}
+		if(++$count > 4) // too many tries! Use the image
+			break;
+	} while($image_failed);
+	
+} else {
+	
+	// draw whole string at once
+	$image_failed = true;
+	$count=0;
+	do {
+		$image = ImageCreateFromPNG($bg); // background image
+		$grey = mt_rand(0,50);
+		$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
+		$ttf = $font;
+		$ttfsize = 25; // fontsize
+		$angle = mt_rand(0,5);
+		$x = mt_rand(5,30);
+		$y = mt_rand($height-10,$height-2);
+		$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text);
+		// check if text fits into the image
+		if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) && 
+			 ($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) && 
+			 ($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) && 
+			 ($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height)
+		) {
+			$image_failed = false;
+		}
+		if(++$count > 4) // too many tries! Use the image
+			break;
+	} while($image_failed);
+	
+}
+
+imagealphablending($reload, TRUE);
+imagesavealpha($reload, TRUE);
+
+// overlay
+imagecopy($reload, $image, 0,0,0,0, 140,40);
+imagedestroy($image);
+$image = $reload;
+
+captcha_header();
+ob_start();
+imagepng($image);
+header("Content-Length: ".ob_get_length()); 
+ob_end_flush();
+imagedestroy($image);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/ttf_image.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/old_image.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/old_image.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/old_image.php	(revision 1610)
@@ -0,0 +1,81 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require_once("../../../config.php");
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+if(!isset($_SESSION['captcha_time']))
+	exit;
+//unset($_SESSION['captcha_time']);
+
+// Captcha
+srand((double)microtime()*100000);
+$sec_id = '';
+if(isset($_GET['s'])) $sec_id = $_GET['s'];
+$_SESSION['captcha'.$sec_id] = rand(10000,99999);
+
+// create reload-image
+$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_120_30.png'); // reload-overlay
+
+$w=120;
+$h=30;
+$image = imagecreate($w, $h);
+$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
+$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
+$darkgray = imagecolorallocate($image, 0x50, 0x50, 0x50);
+
+srand((double)microtime()*1000000);
+for($i = 0; $i < 30; $i++) {
+	$x1 = rand(0,$w);
+	$y1 = rand(0,$h);
+	$x2 = rand(0,$w);
+	$y2 = rand(0,$h);
+	imageline($image, $x1, $y1, $x2, $y2 , $gray);  
+}
+
+$x = 0;
+for($i = 0; $i < 5; $i++) {
+	$fnt = rand(3,5);
+	$x = $x + rand(12 , 20);
+	$y = rand(7 , 12); 
+	imagestring($image, $fnt, $x, $y, substr($_SESSION['captcha'.$sec_id], $i, 1), $darkgray); 
+}
+
+imagealphablending($reload, TRUE);
+imagesavealpha($reload, TRUE);
+
+// overlay
+imagecopy($reload, $image, 0,0,0,0, 120,30);
+imagedestroy($image);
+$image = $reload;
+
+captcha_header();
+ob_start();
+imagepng($image);
+header("Content-Length: ".ob_get_length()); 
+ob_end_flush();
+imagedestroy($image);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/old_image.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.php	(revision 1610)
@@ -0,0 +1,152 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require_once("../../../config.php");
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+if(!isset($_SESSION['captcha_time']))
+	exit;
+//unset($_SESSION['captcha_time']);		// otherwise there can't be 2 captchas on one page!
+
+// get lists of fonts and backgrounds
+require_once(WB_PATH.'/framework/functions.php');
+$t_fonts = file_list(WB_PATH.'/include/captcha/fonts');
+$t_bgs = file_list(WB_PATH.'/include/captcha/backgrounds');
+$fonts = array();
+$bgs = array();
+foreach($t_fonts as $file) if(eregi('\.ttf$',$file)) $fonts[]=$file;
+foreach($t_bgs as $file) if(eregi('\.png$',$file)) $bgs[]=$file;
+
+// Captcha
+$sec_id = '';
+if(isset($_GET['s'])) $sec_id = $_GET['s'];
+$_SESSION['captcha'.$sec_id] = '';
+mt_srand((double)microtime()*1000000);
+$n = mt_rand(1,3);
+switch ($n) {
+	case 1:
+		$x = mt_rand(1,9);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x + $y;
+		$cap = "$x+$y"; 
+		break; 
+	case 2:
+		$x = mt_rand(10,20);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x - $y; 
+		$cap = "$x-$y"; 
+		break;
+	case 3:
+		$x = mt_rand(2,10);
+		$y = mt_rand(2,5);
+		$_SESSION['captcha'.$sec_id] = $x * $y; 
+		$cap = "$x*$y"; 
+		break;
+}
+$text = $cap;
+
+// choose a font and background
+$font = $fonts[array_rand($fonts)];
+$bg = $bgs[array_rand($bgs)];
+// get image-dimensions
+list($width, $height, $type, $attr) = getimagesize($bg);
+
+// create reload-image
+$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_140_40.png'); // reload-overlay
+
+if(mt_rand(0,2)==0) { // 1 out of 3
+
+	// draw each character individualy
+	$image = ImageCreateFromPNG($bg); // background image
+	$grey = mt_rand(0,50);
+	$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
+	$ttf = $font;
+	$ttfsize = 25; // fontsize
+	$count = 0;
+	$image_failed = true;
+	$angle = mt_rand(-10,10);
+	$x = mt_rand(20,35);
+	$y = mt_rand($height-10,$height-2);
+	do {
+		for($i=0;$i<strlen($text);$i++) {
+			$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text{$i});
+			$angle = mt_rand(-10,10);
+			$x = mt_rand($res[4],$res[4]+10);
+			$y = mt_rand($height-12,$height-7);
+		}
+		if($res[4] > $width) {
+			$image_failed = true;
+		} else {
+			$image_failed = false;
+		}
+		if(++$count > 4) // too many tries! Use the image
+			break;
+	} while($image_failed);
+	
+} else {
+	
+	// draw whole string at once
+	$image_failed = true;
+	$count=0;
+	do {
+		$image = ImageCreateFromPNG($bg); // background image
+		$grey = mt_rand(0,50);
+		$color = ImageColorAllocate($image, $grey, $grey, $grey); // font-color
+		$ttf = $font;
+		$ttfsize = 25; // fontsize
+		$angle = mt_rand(0,5);
+		$x = mt_rand(20,35);
+		$y = mt_rand($height-10,$height-2);
+		$res = imagettftext($image, $ttfsize, $angle, $x, $y, $color, $ttf, $text);
+		// check if text fits into the image
+		if(($res[0]>0 && $res[0]<$width) && ($res[1]>0 && $res[1]<$height) && 
+			 ($res[2]>0 && $res[2]<$width) && ($res[3]>0 && $res[3]<$height) && 
+			 ($res[4]>0 && $res[4]<$width) && ($res[5]>0 && $res[5]<$height) && 
+			 ($res[6]>0 && $res[6]<$width) && ($res[7]>0 && $res[7]<$height)
+		) {
+			$image_failed = false;
+		}
+		if(++$count > 4) // too many tries! Use the image
+			break;
+	} while($image_failed);
+	
+}
+
+imagealphablending($reload, TRUE);
+imagesavealpha($reload, TRUE);
+
+// overlay
+imagecopy($reload, $image, 0,0,0,0, 140,40);
+imagedestroy($image);
+$image = $reload;
+
+captcha_header();
+ob_start();
+imagepng($image);
+header("Content-Length: ".ob_get_length()); 
+ob_end_flush();
+imagedestroy($image);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_image.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/calc_image.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/calc_image.php	(revision 1610)
@@ -0,0 +1,98 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+require_once("../../../config.php");
+require_once(WB_PATH.'/include/captcha/captcha.php');
+
+if(!isset($_SESSION['captcha_time']))
+	exit;
+//unset($_SESSION['captcha_time']);
+
+// Captcha
+$sec_id = '';
+if(isset($_GET['s'])) $sec_id = $_GET['s'];
+$_SESSION['captcha'.$sec_id] = '';
+mt_srand((double)microtime()*1000000);
+$n = mt_rand(1,3);
+switch ($n) {
+	case 1:
+		$x = mt_rand(1,9);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x + $y;
+		$cap = "$x+$y"; 
+		break; 
+	case 2:
+		$x = mt_rand(10,20);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x - $y; 
+		$cap = "$x-$y"; 
+		break;
+	case 3:
+		$x = mt_rand(2,10);
+		$y = mt_rand(2,5);
+		$_SESSION['captcha'.$sec_id] = $x * $y; 
+		$cap = "$x*$y"; 
+		break;
+}
+
+// create reload-image
+$reload = ImageCreateFromPNG(WB_PATH.'/include/captcha/reload_120_30.png'); // reload-overlay
+
+$image = imagecreate(120, 30);
+
+$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
+$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
+$darkgray = imagecolorallocate($image, 0x30, 0x30, 0x30);
+
+for($i = 0; $i < 30; $i++) {
+	$x1 = mt_rand(0,120);
+	$y1 = mt_rand(0,30);
+	$x2 = mt_rand(0,120);
+	$y2 = mt_rand(0,30);
+	imageline($image, $x1, $y1, $x2, $y2 , $gray);  
+}
+
+$x = 10;
+$l = strlen($cap);
+for($i = 0; $i < $l; $i++) {
+	$fnt = mt_rand(3,5);
+	$x = $x + mt_rand(12 , 20);
+	$y = mt_rand(7 , 12); 
+	imagestring($image, $fnt, $x, $y, substr($cap, $i, 1), $darkgray); 
+}
+
+imagealphablending($reload, TRUE);
+imagesavealpha($reload, TRUE);
+
+// overlay
+imagecopy($reload, $image, 0,0,0,0, 120,30);
+imagedestroy($image);
+$image = $reload;
+
+captcha_header();
+imagepng($image);
+imagedestroy($image);
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_image.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/text.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/text.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/text.php	(revision 1610)
@@ -0,0 +1,97 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being accessed directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+global $database;
+$name = 'text';
+$file = WB_PATH."/temp/.captcha_$name.php";
+
+srand((double)microtime()*100000);
+$_SESSION['captcha'.$sec_id] = rand(0,99999);
+
+// get questions and answers
+$text_qa='';
+$table = TABLE_PREFIX.'mod_captcha_control';
+if($query = $database->query("SELECT ct_text FROM $table")) {
+	$data = $query->fetchRow();
+	$text_qa = $data['ct_text'];
+}
+$content = explode("\n", $text_qa);
+
+reset($content);
+while($s = current($content)) {
+	// get question
+	$s=trim(rtrim(rtrim($s,"\n"),"\r")); // remove newline
+	if($s=='' OR $s{0}!='?') {
+		next($content);
+		continue;
+	}
+	if(isset($s{3}) && $s{3}==':') {
+		$lang=substr($s,1,2);
+		$q=substr($s,4);
+	}	else {
+		$lang='XX';
+		$q=substr($s,1);
+		if($q=='') {
+			next($content);
+			continue;
+		}
+	}
+	// get answer
+	$s=next($content);
+	$s=trim(rtrim(rtrim($s,"\n"),"\r")); // remove newline
+	if(isset($s{0}) && $s{0}=='!') {
+		$a=substr($s,1);
+		$qa[$lang][$q]=$a;
+		next($content);
+	}
+}
+if(!isset($qa) || $qa == array()) {
+	echo '<b>Error</b>: no text defined! Enter <b>0</b> to solve this captcha';
+	$_SESSION['captcha'] = '0';
+	return;
+}
+
+// choose language to use
+if(defined('LANGUAGE') && isset($qa[LANGUAGE]))
+	$lang = LANGUAGE;
+else
+	$lang = 'XX';
+if(!isset($qa[$lang])) {
+	echo '<b>Error</b>: no text defined! Enter <b>0</b> to solve this captcha';
+	$_SESSION['captcha'] = '0';
+	return;
+}
+
+// choose random question
+$k = array_rand($qa[$lang]);
+
+$_SESSION['captcha'.$sec_id] = $qa[$lang][$k];
+
+echo $k;
+
+?>

Property changes on: tags/2.8.3/wb/include/captcha/captchas/text.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_text.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/calc_text.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/calc_text.php	(revision 1610)
@@ -0,0 +1,61 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+// Must include code to stop this file being accessed directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+if(!file_exists(WB_PATH.'/modules/captcha_control/languages/'.LANGUAGE .'.php')) {
+	// no module language file exists for the language set by the user, include default module language file EN.php
+	require_once(WB_PATH.'/modules/captcha_control/languages/EN.php');
+} else {
+	// a module language file exists for the language defined by the user, load it
+	require_once(WB_PATH.'/modules/captcha_control/languages/'.LANGUAGE .'.php');
+}
+
+$_SESSION['captcha'.$sec_id] = '';
+mt_srand((double)microtime()*1000000);
+$n = mt_rand(1,3);
+switch ($n) {
+	case 1:
+		$x = mt_rand(1,9);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x + $y;
+		$cap = "$x {$MOD_CAPTCHA['ADDITION']} $y"; 
+		break; 
+	case 2:
+		$x = mt_rand(10,20);
+		$y = mt_rand(1,9);
+		$_SESSION['captcha'.$sec_id] = $x - $y; 
+		$cap = "$x {$MOD_CAPTCHA['SUBTRAKTION']} $y"; 
+		break;
+	case 3:
+		$x = mt_rand(2,10);
+		$y = mt_rand(2,5);
+		$_SESSION['captcha'.$sec_id] = $x * $y; 
+		$cap = "$x {$MOD_CAPTCHA['MULTIPLIKATION']} $y"; 
+		break;
+}
+echo $cap;
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_text.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/index.php
===================================================================
--- tags/2.8.3/wb/include/captcha/captchas/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/captchas/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/captchas/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/text.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/text.png
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_ttf_image.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/ttf_image.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/ttf_image.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/old_image.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/old_image.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_image.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_image.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/captchas/calc_text.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/captchas/calc_text.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_14.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_14.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_15.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_15.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_10.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_10.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_11.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_11.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_12.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_12.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/bg_13.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/bg_13.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/backgrounds/index.php
===================================================================
--- tags/2.8.3/wb/include/captcha/backgrounds/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/backgrounds/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>

Property changes on: tags/2.8.3/wb/include/captcha/backgrounds/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/FreeSansWBCaptchaCond.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/FreeSansWBCaptchaCond.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/FreeSerifItalicWBCaptchaCond.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/FreeSerifItalicWBCaptchaCond.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/index.php
===================================================================
--- tags/2.8.3/wb/include/captcha/fonts/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/fonts/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>

Property changes on: tags/2.8.3/wb/include/captcha/fonts/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LL_Readme
===================================================================
--- tags/2.8.3/wb/include/captcha/fonts/LL_Readme	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/fonts/LL_Readme	(revision 1610)
@@ -0,0 +1,31 @@
+These fonts (LLBd.ttf and LLBI.ttf, and cond-variants) are derivated from LinuxLibertine-Font for use with website baker's captcha _only_.
+All chars above pos. 127 has been removed!
+Jan. 2008 - thorn
+
+---------------------------------------------------
+
+LOFP - Libertine Open Fonts Project
+
+1. OPEN FONTS PROJECT'S AIMS
+We work on a serif font-family for practical use in documents. This project aims at creating a free alternative to the standard W*ndows Font (T*mes).
+But neveretheless Libertine is not a clone of any common font! It has been developed from scratch and it goes different ways in typography than the Times. Just the useability and the dimensions shall be similar, Libertine should be even better for typical office use! If you want a Times-clone go elsewhere! If you just need reliable and good typography give this font a chance. If you want to know more about the design of Libertine, have a look at our website.
+
+2. LICENSE AND OPENSOURCE
+We publish our fonts under the terms of the GPL (see GPL.txt) and OFL (OFL.txt) 
+-> see also LICENCE.txt!
+The OpenSource-tool Fontforge is used as font editor (see http://fontforge.sf.net).
+
+3. FONT FORMATS TTF VS. OTF
+The font files are available as TTF (TrueType) and OTF (OpenType) fonts. The TTF-Family is called "LinuxLibertine" and the OTF "LinuxLibertine O" so that both types can be installed and used parallely.
+We recommend TTF for most users. OTF is especially useful for Windows users (Hinting) and *.dfont for Mac-Users. The advanced typographic features like ligature substitution and Small Capitals, ... may be availible in the OTF only.
+
+4. HINTING
+The TrueType-hinting is a complex technique and our editor FontForge doesn't support it quite well (but alot better version by version)... Since version 2.7 also the normal TTFs are hinted. If you don't like this, send me a mail. You may also try the OpenTypes (which contain PS-Hintings which are quite good supported by fontforge).
+
+5. DOWNLOAD AND CONTACT
+We publish our fonts at http://linuxlibertine.sf.net.
+
+6. THE UNDERLINED VARIANT
+Some people liked our idea of a real underlined. The advantage of this font is that g, commas, cedillas... are not overprinted by the line anymore. For technical reasons the space is not underlined but you can use the _ instead. In this font it has the width of the space and the line is at hight of the underline. The underlined variant uses an older font outline! Please keep this in mind!
+
+

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LL_Readme
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LLBI_cond.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LLBI_cond.ttf
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LLBd.ttf_
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LLBd.ttf_
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LLBd_cond.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LLBd_cond.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LLBI.ttf_
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LLBI.ttf_
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LL_OFL.txt
===================================================================
--- tags/2.8.3/wb/include/captcha/fonts/LL_OFL.txt	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/fonts/LL_OFL.txt	(revision 1610)
@@ -0,0 +1,98 @@
+This Font Software is Copyright (c) 2003-2006, Philipp H. Poll (http://linuxlibertine.sf.net/).
+All Rights Reserved.
+
+"Linux Libertine" is a Reserved Font Name for this Font Software.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.0.
+No modification of the license is permitted, only verbatim copy is allowed.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.0 - 22 November 2005
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of cooperative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide an open
+framework in which fonts may be shared and improved in partnership with
+others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and sold with any software provided that the font
+names of derivative works are changed. The fonts and derivatives,
+however, cannot be released under any other type of license.
+
+DEFINITIONS
+"Font Software" refers to any and all of the following:
+	- font files
+	- data files
+	- source code
+	- build scripts
+	- documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by
+users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software
+components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by
+adding to, deleting, or substituting -- in part or in whole --
+any of the components of the Standard Version, by changing formats
+or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled,
+redistributed and sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s), in part or in whole, unless explicit written permission is
+granted by the Copyright Holder. This restriction applies to all 
+references stored in the Font Software, such as the font menu name and
+other font description fields, which are used to differentiate the
+font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed using this license, and may not be distributed
+under any other license.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LL_OFL.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LL_GPL.txt
===================================================================
--- tags/2.8.3/wb/include/captcha/fonts/LL_GPL.txt	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/fonts/LL_GPL.txt	(revision 1610)
@@ -0,0 +1,343 @@
+		    GNU GENERAL PUBLIC LICENSE (with font exception)
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LL_GPL.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/fonts/LL_LICENCE.txt
===================================================================
--- tags/2.8.3/wb/include/captcha/fonts/LL_LICENCE.txt	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/fonts/LL_LICENCE.txt	(revision 1610)
@@ -0,0 +1,7 @@
+- Lizenz / Licence -
+
+Unsere Schriften sind frei im Sinne der GPL, d.h. (stark vereinfacht) dass Veränderungen an der Schriftart erlaubt sind unter der Bedingung, dass diese wieder der Öffentlichkeit unter gleicher Lizenz freigegeben werden. Querdenker behaupten oft, dass bei der Verwendung einer GPL-Schrift eingebettet in beispielsweise eine PDF auch diese freigestellt werden müsse. Deshalb gibt es die sogenannte "Font-exception" der GPL (welche diesem Lizenztext hinzugefügt wurde). Weitere Informationen zur GPL (Lizenztext mit Font-Exzeption im Archiv).
+Zusätzlich stehen die Schriften unter der Open Font License (siehe OFL.txt).
+
+Our fonts are free in the sense of the GPL. Changing the font is allowed as long as the derivative work is published under the same licence again. Pedantics keep claiming that the embedded use of GPL-fonts in i.e. PDFs requires the free publication of the PDF as well. This is why our GPL contains the so called "font exception". Further information about the GPL (Licence text with font exception of the archive).
+Additionally our fonts are licensed under the Open Fonts License (See OFL.txt).
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha/fonts/LL_LICENCE.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/readme.txt
===================================================================
--- tags/2.8.3/wb/include/captcha/readme.txt	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/readme.txt	(revision 1610)
@@ -0,0 +1,78 @@
+// $Id$
+
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+
+One can improve all CAPTCHA-types with varying fonts and backgrounds
+- by adding backgrounds (PNG-images, 140x40 pixels) to backgrounds/
+- and by adding TrueType-fonts to fonts/
+
+
+How to use:
+
+1.)
+put 
+  require_once(WB_PATH.'/include/captcha/captcha.php');
+in your file.
+
+
+2a.)
+put 
+  <?php call_captcha(); ?>
+into your form.
+This will output a table with varying columns (3 or 4) like this example:
+<table class="captcha_table"><tr>
+  <td><img src="http://www.example.org/include/captcha/captchas/ttf.php?t=64241454" alt="Captcha" /></td>
+  <td><input type="text" name="captcha" maxlength="5" style="width:50px" /></td>
+  <td class="captcha_expl">Fill in the result</td>
+</tr></table>
+
+
+2b.)
+If you want to use your own layout, use additional parameters to call_captcha():
+call_captcha('all') will output the whole table as above.
+
+call_captcha('image', $style); will output the <img>-tag for the image only (or the text for an text-style captcha):
+Examples:
+  call_captcha('image', 'style="...; title="captcha"');
+    <img style="...; title="captcha" src="http://www.example.org/include/captcha/captchas/captcha.php?t=46784246" />
+    or
+    <span style="...; title="captcha">4 add 6</span>
+	call_captcha('image');
+    <img src="http://www.example.org/include/captcha/captchas/captcha.php?t=46784246" />
+    or
+    4 add 6
+
+call_captcha('input', $style); will output the input-field:
+  call_captcha('input', 'style"...;"');
+    <input type="text" name="captcha" style="...;" />
+  call_captcha('input');
+    <input type="text" name="captcha" style="width:50px;" maxlength="10" />
+
+call_captcha('text', $style); will output a short "what to do"-text
+  call_captcha('text', 'style="...;"');
+	  <span style="...;">Fill in the result</span>
+  call_captcha('text');
+	  Fill in the result
+
+
+
+The CAPTCHA-code is allways stored in $_SESSION['captcha'] for verification with user-input.
+The user-input is in $_POST['captcha'] (or maybe $_GET['captcha']).

Property changes on: tags/2.8.3/wb/include/captcha/readme.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/index.php
===================================================================
--- tags/2.8.3/wb/include/captcha/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>

Property changes on: tags/2.8.3/wb/include/captcha/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/reload_140_40.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/reload_140_40.png
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha/reload_120_30.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/captcha/reload_120_30.png
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/idna_convert/example.php
===================================================================
--- tags/2.8.3/wb/include/idna_convert/example.php	(nonexistent)
+++ tags/2.8.3/wb/include/idna_convert/example.php	(revision 1610)
@@ -0,0 +1,116 @@
+<?php
+$encoded = $decoded = $add = '';
+header('Content-Type: text/html; charset=utf-8');
+require_once('idna_convert.class.php');
+$IDN = new idna_convert();
+if (isset($_REQUEST['encode'])) {
+    $decoded = isset($_REQUEST['decoded']) ? stripslashes($_REQUEST['decoded']) : '';
+    $encoded = $IDN->encode($decoded);
+}
+if (isset($_REQUEST['decode'])) {
+    $encoded = isset($_REQUEST['encoded']) ? stripslashes($_REQUEST['encoded']) : '';
+    $decoded = $IDN->decode($encoded);
+}
+$lang = 'en';
+if (isset($_REQUEST['lang'])) {
+    if ('de' == $_REQUEST['lang'] || 'en' == $_REQUEST['lang']) $lang = $_REQUEST['lang'];
+    $add .= '<input type="hidden" name="lang" value="'.$_REQUEST['lang'].'" />'."\n";
+}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>phlyLabs Punycode Converter</title>
+<meta name="author" content="phlyLabs" />
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<style type="text/css">
+/*<![CDATA[*/
+body { color:black;background:white;font-size:10pt;font-family:Verdana,Helvetica,Sans-Serif; }
+body, form { margin:0; }
+form { display:inline; }
+input { font-size:8pt;font-family:Verdana,Helvetica,Sans-Serif; }
+#round { width:730px;padding:10px;background-color:rgb(230,230,240);border:1px solid black;text-align:center;vertical-align:middle;margin:auto;margin-top:50px; }
+th { font-size:9pt;font-weight:bold; }
+#copy { font-size:8pt;color:rgb(60,60,80); }
+#subhead { font-size:8pt; }
+#bla { font-size:8pt;text-align:left; }
+h5 {margin:0;font-size:11pt;font-weight:bold;}
+/*]]>*/
+</style>
+</head>
+<body>
+<div id="round">
+ <h5>phlyLabs' pure PHP IDNA Converter</h5><br />
+ <span id="subhead">
+  See <a href="http://faqs.org/rfcs/rfc3490.html" title="IDNA" target="_blank">RFC3490</a>,
+  <a href="http://faqs.org/rfcs/rfc3491.html" title="Nameprep, a Stringprep profile" target="_blank">RFC3491</a>,
+  <a href="http://faqs.org/rfcs/rfc3492.html" title="Punycode" target="_blank">RFC3492</a> and
+  <a href="http://faqs.org/rfcs/rfc3454.html" title="Stringprep" target="_blank">RFC3454</a><br />
+ </span>
+ <br />
+ <div id="bla"><?php if ($lang == 'de') { ?>
+  Dieser Konverter erlaubt die bersetzung von Domainnamen zwischen der Punycode- und der
+  Unicode-Schreibweise.<br />
+  Geben Sie einfach den Domainnamen im entsprechend bezeichneten Feld ein und klicken Sie dann auf den darunter
+  liegenden Button. Sie knnen einfache Domainnamen, komplette URLs (wie http://jrgen-mller.de)
+  oder Emailadressen eingeben.<br />
+  <br />
+  Stellen Sie aber sicher, dass Ihr Browser den Zeichensatz <strong>UTF-8</strong> untersttzt.<br />
+  <br />
+  Wenn Sie Interesse an der zugrundeliegenden PHP-Klasse haben, knnen Sie diese
+  <a href="http://phlymail.com/de/downloads/idna/download/">hier herunterladen</a>.<br />
+  <br />
+  Diese Klasse wird ohne Garantie ihrer Funktionstchtigkeit bereit gestellt. Nutzung auf eigene Gefahr.<br />
+  Um sicher zu stellen, dass eine Zeichenkette korrekt umgewandelt wurde, sollten Sie diese immer zurckwandeln
+  und das Ergebnis mit Ihrer ursprnglichen Eingabe vergleichen.<br />
+  <br />
+  Fehler und Probleme knnen Sie gern an <a href="mailto:team@phlymail.de">team@phlymail.de</a> senden.<br />
+  <?php } else { ?>
+  This converter allows you to transfer domain names between the encoded (Punycode) notation
+  and the decoded (UTF-8) notation.<br />
+  Just enter the domain name in the respective field and click on the button right below it to have
+  it converted. Please note, that you might even enter complete domain names (like j&#xFC;rgen-m&#xFC;ller.de)
+  or a email addresses.<br />
+  <br />
+  Make sure, that your browser is capable of the <strong>UTF-8</strong> character encoding.<br />
+  <br />
+  For those of you interested in the PHP source of the underlying class, you might
+  <a href="http://phlymail.com/en/downloads/idna/download/">download it here</a>.<br />
+  <br />
+  Please be aware, that this class is provided as is and without any liability. Use at your own risk.<br />
+  To ensure, that a certain string has been converted correctly, you should convert it both ways and compare the
+  results.<br />
+  <br />
+  Please feel free to report bugs and problems to: <a href="mailto:team@phlymail.com">team@phlymail.com</a>.<br />
+  <?php } ?>
+  <br />
+ </div>
+ <table border="0" cellpadding="2" cellspacing="2" align="center">
+  <thead>
+   <tr>
+    <th align="left">Original (Unicode)</th>
+    <th align="right">Punycode (ACE)</th>
+   </tr>
+  </thead>
+  <tbody>
+   <tr>
+    <td align="right">
+     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
+      <input type="text" name="decoded" value="<?php echo htmlentities($decoded, null, 'UTF-8'); ?>" size="48" maxlength="255" /><br />
+      <input type="submit" name="encode" value="Encode &gt;&gt;" /><?php echo $add; ?>
+     </form>
+    </td>
+    <td align="left">
+     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
+      <input type="text" name="encoded" value="<?php echo htmlentities($encoded, null, 'UTF-8'); ?>" size="48" maxlength="255" /><br />
+      <input type="submit" name="decode" value="&lt;&lt; Decode" /><?php echo $add; ?>
+     </form>
+    </td>
+   </tr>
+  </tbody>
+ </table>
+ <br />
+ <span id="copy">Version used: 0.6.9; &copy; 2004-2010 phlyLabs Berlin; part of <a href="http://phlymail.com/">phlyMail</a></span>
+</div>
+</body>
+</html>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/idna_convert/example.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/idna_convert/LICENCE
===================================================================
--- tags/2.8.3/wb/include/idna_convert/LICENCE	(nonexistent)
+++ tags/2.8.3/wb/include/idna_convert/LICENCE	(revision 1610)
@@ -0,0 +1,502 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
Index: tags/2.8.3/wb/include/idna_convert/idna_convert.class.php
===================================================================
--- tags/2.8.3/wb/include/idna_convert/idna_convert.class.php	(nonexistent)
+++ tags/2.8.3/wb/include/idna_convert/idna_convert.class.php	(revision 1610)
@@ -0,0 +1,1539 @@
+<?php
+// {{{ license
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
+//
+// +----------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU Lesser General Public License as       |
+// | published by the Free Software Foundation; either version 2.1 of the |
+// | License, or (at your option) any later version.                      |
+// |                                                                      |
+// | This library is distributed in the hope that it will be useful, but  |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of           |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    |
+// | Lesser General Public License for more details.                      |
+// |                                                                      |
+// | You should have received a copy of the GNU Lesser General Public     |
+// | License along with this library; if not, write to the Free Software  |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 |
+// | USA.                                                                 |
+// +----------------------------------------------------------------------+
+//
+
+// }}}
+
+/**
+ * Encode/decode Internationalized Domain Names.
+ *
+ * The class allows to convert internationalized domain names
+ * (see RFC 3490 for details) as they can be used with various registries worldwide
+ * to be translated between their original (localized) form and their encoded form
+ * as it will be used in the DNS (Domain Name System).
+ *
+ * The class provides two public methods, encode() and decode(), which do exactly
+ * what you would expect them to do. You are allowed to use complete domain names,
+ * simple strings and complete email addresses as well. That means, that you might
+ * use any of the following notations:
+ *
+ * - www.nrgler.com
+ * - xn--nrgler-wxa
+ * - xn--brse-5qa.xn--knrz-1ra.info
+ *
+ * Unicode input might be given as either UTF-8 string, UCS-4 string or UCS-4 array.
+ * Unicode output is available in the same formats.
+ * You can select your preferred format via {@link set_paramter()}.
+ *
+ * ACE input and output is always expected to be ASCII.
+ *
+ * @author  Matthias Sommerfeld <mso@phlylabs.de>
+ * @author  Leonid Kogan <lko@neuse.de>
+ * @copyright 2004-2010 phlyLabs Berlin, http://phlylabs.de
+ * @version 0.6.9 2010-11-04
+ */
+class idna_convert
+{
+    // NP See below
+
+    // Internal settings, do not mess with them
+    protected $_punycode_prefix = 'xn--';
+    protected $_invalid_ucs = 0x80000000;
+    protected $_max_ucs = 0x10FFFF;
+    protected $_base = 36;
+    protected $_tmin = 1;
+    protected $_tmax = 26;
+    protected $_skew = 38;
+    protected $_damp = 700;
+    protected $_initial_bias = 72;
+    protected $_initial_n = 0x80;
+    protected $_sbase = 0xAC00;
+    protected $_lbase = 0x1100;
+    protected $_vbase = 0x1161;
+    protected $_tbase = 0x11A7;
+    protected $_lcount = 19;
+    protected $_vcount = 21;
+    protected $_tcount = 28;
+    protected $_ncount = 588;   // _vcount * _tcount
+    protected $_scount = 11172; // _lcount * _tcount * _vcount
+    protected $_error = false;
+
+    // See {@link set_paramter()} for details of how to change the following
+    // settings from within your script / application
+    protected $_api_encoding = 'utf8';   // Default input charset is UTF-8
+    protected $_allow_overlong = false;  // Overlong UTF-8 encodings are forbidden
+    protected $_strict_mode = false;     // Behave strict or not
+    protected $_encode_german_sz = true; // True to encode German ; False, if not
+
+    /**
+     * the constructor
+     *
+     * @param array $options
+     * @return boolean
+     * @since 0.5.2
+     */
+    public function __construct($options = false)
+    {
+        $this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
+        // If parameters are given, pass these to the respective method
+        if (is_array($options)) return $this->set_parameter($options);
+        if (!$this->_encode_german_sz) {
+            $this->NP['replacemaps'][0xDF] = array(0x73, 0x73);
+        }
+    }
+
+    /**
+     * Sets a new option value. Available options and values:
+     * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8,
+     *         'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8]
+     * [overlong - Unicode does not allow unnecessarily long encodings of chars,
+     *             to allow this, set this parameter to true, else to false;
+     *             default is false.]
+     * [strict - true: strict mode, good for registration purposes - Causes errors
+     *           on failures; false: loose mode, ideal for "wildlife" applications
+     *           by silently ignoring errors and returning the original input instead
+     *
+     * @param    mixed     Parameter to set (string: single parameter; array of Parameter => Value pairs)
+     * @param    string    Value to use (if parameter 1 is a string)
+     * @return   boolean   true on success, false otherwise
+     */
+    public function set_parameter($option, $value = false)
+    {
+        if (!is_array($option)) {
+            $option = array($option => $value);
+        }
+        foreach ($option as $k => $v) {
+            switch ($k) {
+            case 'encoding':
+                switch ($v) {
+                case 'utf8':
+                case 'ucs4_string':
+                case 'ucs4_array':
+                    $this->_api_encoding = $v;
+                    break;
+                default:
+                    $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k);
+                    return false;
+                }
+                break;
+            case 'overlong':
+                $this->_allow_overlong = ($v) ? true : false;
+                break;
+            case 'strict':
+                $this->_strict_mode = ($v) ? true : false;
+                break;
+            case 'encode_german_sz':
+                $this->_encode_german_sz = ($v) ? true : false;
+                break;
+            default:
+                $this->_error('Set Parameter: Unknown option '.$k);
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Decode a given ACE domain name
+     * @param    string   Domain name (ACE string)
+     * [@param    string   Desired output encoding, see {@link set_parameter}]
+     * @return   string   Decoded Domain name (UTF-8 or UCS-4)
+     */
+    public function decode($input, $one_time_encoding = false)
+    {
+        // Optionally set
+        if ($one_time_encoding) {
+            switch ($one_time_encoding) {
+            case 'utf8':
+            case 'ucs4_string':
+            case 'ucs4_array':
+                break;
+            default:
+                $this->_error('Unknown encoding '.$one_time_encoding);
+                return false;
+            }
+        }
+        // Make sure to drop any newline characters around
+        $input = trim($input);
+
+        // Negotiate input and try to determine, whether it is a plain string,
+        // an email address or something like a complete URL
+        if (strpos($input, '@')) { // Maybe it is an email address
+            // No no in strict mode
+            if ($this->_strict_mode) {
+                $this->_error('Only simple domain name parts can be handled in strict mode');
+                return false;
+            }
+            list ($email_pref, $input) = explode('@', $input, 2);
+            $arr = explode('.', $input);
+            foreach ($arr as $k => $v) {
+                if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
+                    $conv = $this->_decode($v);
+                    if ($conv) $arr[$k] = $conv;
+                }
+            }
+            $input = join('.', $arr);
+            $arr = explode('.', $email_pref);
+            foreach ($arr as $k => $v) {
+                if (preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $v)) {
+                    $conv = $this->_decode($v);
+                    if ($conv) $arr[$k] = $conv;
+                }
+            }
+            $email_pref = join('.', $arr);
+            $return = $email_pref . '@' . $input;
+        } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters)
+            // No no in strict mode
+            if ($this->_strict_mode) {
+                $this->_error('Only simple domain name parts can be handled in strict mode');
+                return false;
+            }
+            $parsed = parse_url($input);
+            if (isset($parsed['host'])) {
+                $arr = explode('.', $parsed['host']);
+                foreach ($arr as $k => $v) {
+                    $conv = $this->_decode($v);
+                    if ($conv) $arr[$k] = $conv;
+                }
+                $parsed['host'] = join('.', $arr);
+                $return =
+                        (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://'))
+                        .(empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@')
+                        .$parsed['host']
+                        .(empty($parsed['port']) ? '' : ':'.$parsed['port'])
+                        .(empty($parsed['path']) ? '' : $parsed['path'])
+                        .(empty($parsed['query']) ? '' : '?'.$parsed['query'])
+                        .(empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']);
+            } else { // parse_url seems to have failed, try without it
+                $arr = explode('.', $input);
+                foreach ($arr as $k => $v) {
+                    $conv = $this->_decode($v);
+                    $arr[$k] = ($conv) ? $conv : $v;
+                }
+                $return = join('.', $arr);
+            }
+        } else { // Otherwise we consider it being a pure domain name string
+            $return = $this->_decode($input);
+            if (!$return) $return = $input;
+        }
+        // The output is UTF-8 by default, other output formats need conversion here
+        // If one time encoding is given, use this, else the objects property
+        switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
+        case 'utf8':
+            return $return;
+            break;
+        case 'ucs4_string':
+           return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
+           break;
+        case 'ucs4_array':
+            return $this->_utf8_to_ucs4($return);
+            break;
+        default:
+            $this->_error('Unsupported output format');
+            return false;
+        }
+    }
+
+    /**
+     * Encode a given UTF-8 domain name
+     * @param    string   Domain name (UTF-8 or UCS-4)
+     * [@param    string   Desired input encoding, see {@link set_parameter}]
+     * @return   string   Encoded Domain name (ACE string)
+     */
+    public function encode($decoded, $one_time_encoding = false)
+    {
+        // Forcing conversion of input to UCS4 array
+        // If one time encoding is given, use this, else the objects property
+        switch ($one_time_encoding ? $one_time_encoding : $this->_api_encoding) {
+        case 'utf8':
+            $decoded = $this->_utf8_to_ucs4($decoded);
+            break;
+        case 'ucs4_string':
+           $decoded = $this->_ucs4_string_to_ucs4($decoded);
+        case 'ucs4_array':
+           break;
+        default:
+            $this->_error('Unsupported input format: '.($one_time_encoding ? $one_time_encoding : $this->_api_encoding));
+            return false;
+        }
+
+        // No input, no output, what else did you expect?
+        if (empty($decoded)) return '';
+
+        // Anchors for iteration
+        $last_begin = 0;
+        // Output string
+        $output = '';
+        foreach ($decoded as $k => $v) {
+            // Make sure to use just the plain dot
+            switch($v) {
+            case 0x3002:
+            case 0xFF0E:
+            case 0xFF61:
+                $decoded[$k] = 0x2E;
+                // Right, no break here, the above are converted to dots anyway
+            // Stumbling across an anchoring character
+            case 0x2E:
+            case 0x2F:
+            case 0x3A:
+            case 0x3F:
+            case 0x40:
+                // Neither email addresses nor URLs allowed in strict mode
+                if ($this->_strict_mode) {
+                   $this->_error('Neither email addresses nor URLs are allowed in strict mode.');
+                   return false;
+                } else {
+                    // Skip first char
+                    if ($k) {
+                        $encoded = '';
+                        $encoded = $this->_encode(array_slice($decoded, $last_begin, (($k)-$last_begin)));
+                        if ($encoded) {
+                            $output .= $encoded;
+                        } else {
+                            $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($k)-$last_begin)));
+                        }
+                        $output .= chr($decoded[$k]);
+                    }
+                    $last_begin = $k + 1;
+                }
+            }
+        }
+        // Catch the rest of the string
+        if ($last_begin) {
+            $inp_len = sizeof($decoded);
+            $encoded = '';
+            $encoded = $this->_encode(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
+            if ($encoded) {
+                $output .= $encoded;
+            } else {
+                $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
+            }
+            return $output;
+        } else {
+            if ($output = $this->_encode($decoded)) {
+                return $output;
+            } else {
+                return $this->_ucs4_to_utf8($decoded);
+            }
+        }
+    }
+
+    /**
+     * Removes a weakness of encode(), which cannot properly handle URIs but instead encodes their
+     * path or query components, too.
+     * @param string  $uri  Expects the URI as a UTF-8 (or ASCII) string
+     * @return  string  The URI encoded to Punycode, everything but the host component is left alone
+     * @since 0.6.4
+     */
+    public function encode_uri($uri)
+    {
+        $parsed = parse_url($uri);
+        if (!isset($parsed['host'])) {
+            $this->_error('The given string does not look like a URI');
+            return false;
+        }
+        $arr = explode('.', $parsed['host']);
+        foreach ($arr as $k => $v) {
+            $conv = $this->encode($v, 'utf8');
+            if ($conv) $arr[$k] = $conv;
+        }
+        $parsed['host'] = join('.', $arr);
+        $return =
+                (empty($parsed['scheme']) ? '' : $parsed['scheme'].(strtolower($parsed['scheme']) == 'mailto' ? ':' : '://'))
+                .(empty($parsed['user']) ? '' : $parsed['user'].(empty($parsed['pass']) ? '' : ':'.$parsed['pass']).'@')
+                .$parsed['host']
+                .(empty($parsed['port']) ? '' : ':'.$parsed['port'])
+                .(empty($parsed['path']) ? '' : $parsed['path'])
+                .(empty($parsed['query']) ? '' : '?'.$parsed['query'])
+                .(empty($parsed['fragment']) ? '' : '#'.$parsed['fragment']);
+        return $return;
+    }
+
+    /**
+     * Use this method to get the last error ocurred
+     * @param    void
+     * @return   string   The last error, that occured
+     */
+    public function get_last_error()
+    {
+        return $this->_error;
+    }
+
+    /**
+     * The actual decoding algorithm
+     * @param string
+     * @return mixed
+     */
+    protected function _decode($encoded)
+    {
+        $decoded = array();
+        // find the Punycode prefix
+        if (!preg_match('!^'.preg_quote($this->_punycode_prefix, '!').'!', $encoded)) {
+            $this->_error('This is not a punycode string');
+            return false;
+        }
+        $encode_test = preg_replace('!^'.preg_quote($this->_punycode_prefix, '!').'!', '', $encoded);
+        // If nothing left after removing the prefix, it is hopeless
+        if (!$encode_test) {
+            $this->_error('The given encoded string was empty');
+            return false;
+        }
+        // Find last occurence of the delimiter
+        $delim_pos = strrpos($encoded, '-');
+        if ($delim_pos > strlen($this->_punycode_prefix)) {
+            for ($k = strlen($this->_punycode_prefix); $k < $delim_pos; ++$k) {
+                $decoded[] = ord($encoded{$k});
+            }
+        }
+        $deco_len = count($decoded);
+        $enco_len = strlen($encoded);
+
+        // Wandering through the strings; init
+        $is_first = true;
+        $bias = $this->_initial_bias;
+        $idx = 0;
+        $char = $this->_initial_n;
+
+        for ($enco_idx = ($delim_pos) ? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) {
+            for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) {
+                $digit = $this->_decode_digit($encoded{$enco_idx++});
+                $idx += $digit * $w;
+                $t = ($k <= $bias) ? $this->_tmin :
+                        (($k >= $bias + $this->_tmax) ? $this->_tmax : ($k - $bias));
+                if ($digit < $t) break;
+                $w = (int) ($w * ($this->_base - $t));
+            }
+            $bias = $this->_adapt($idx - $old_idx, $deco_len + 1, $is_first);
+            $is_first = false;
+            $char += (int) ($idx / ($deco_len + 1));
+            $idx %= ($deco_len + 1);
+            if ($deco_len > 0) {
+                // Make room for the decoded char
+                for ($i = $deco_len; $i > $idx; $i--) $decoded[$i] = $decoded[($i - 1)];
+            }
+            $decoded[$idx++] = $char;
+        }
+        return $this->_ucs4_to_utf8($decoded);
+    }
+
+    /**
+     * The actual encoding algorithm
+     * @param  string
+     * @return mixed
+     */
+    protected function _encode($decoded)
+    {
+        // We cannot encode a domain name containing the Punycode prefix
+        $extract = strlen($this->_punycode_prefix);
+        $check_pref = $this->_utf8_to_ucs4($this->_punycode_prefix);
+        $check_deco = array_slice($decoded, 0, $extract);
+
+        if ($check_pref == $check_deco) {
+            $this->_error('This is already a punycode string');
+            return false;
+        }
+        // We will not try to encode strings consisting of basic code points only
+        $encodable = false;
+        foreach ($decoded as $k => $v) {
+            if ($v > 0x7a) {
+                $encodable = true;
+                break;
+            }
+        }
+        if (!$encodable) {
+            $this->_error('The given string does not contain encodable chars');
+            return false;
+        }
+        // Do NAMEPREP
+        $decoded = $this->_nameprep($decoded);
+        if (!$decoded || !is_array($decoded)) return false; // NAMEPREP failed
+        $deco_len  = count($decoded);
+        if (!$deco_len) return false; // Empty array
+        $codecount = 0; // How many chars have been consumed
+        $encoded = '';
+        // Copy all basic code points to output
+        for ($i = 0; $i < $deco_len; ++$i) {
+            $test = $decoded[$i];
+            // Will match [-0-9a-zA-Z]
+            if ((0x2F < $test && $test < 0x40) || (0x40 < $test && $test < 0x5B)
+                    || (0x60 < $test && $test <= 0x7B) || (0x2D == $test)) {
+                $encoded .= chr($decoded[$i]);
+                $codecount++;
+            }
+        }
+        if ($codecount == $deco_len) return $encoded; // All codepoints were basic ones
+
+        // Start with the prefix; copy it to output
+        $encoded = $this->_punycode_prefix.$encoded;
+        // If we have basic code points in output, add an hyphen to the end
+        if ($codecount) $encoded .= '-';
+        // Now find and encode all non-basic code points
+        $is_first = true;
+        $cur_code = $this->_initial_n;
+        $bias = $this->_initial_bias;
+        $delta = 0;
+        while ($codecount < $deco_len) {
+            // Find the smallest code point >= the current code point and
+            // remember the last ouccrence of it in the input
+            for ($i = 0, $next_code = $this->_max_ucs; $i < $deco_len; $i++) {
+                if ($decoded[$i] >= $cur_code && $decoded[$i] <= $next_code) {
+                    $next_code = $decoded[$i];
+                }
+            }
+            $delta += ($next_code - $cur_code) * ($codecount + 1);
+            $cur_code = $next_code;
+
+            // Scan input again and encode all characters whose code point is $cur_code
+            for ($i = 0; $i < $deco_len; $i++) {
+                if ($decoded[$i] < $cur_code) {
+                    $delta++;
+                } elseif ($decoded[$i] == $cur_code) {
+                    for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) {
+                        $t = ($k <= $bias) ? $this->_tmin :
+                                (($k >= $bias + $this->_tmax) ? $this->_tmax : $k - $bias);
+                        if ($q < $t) break;
+                        $encoded .= $this->_encode_digit(intval($t + (($q - $t) % ($this->_base - $t)))); //v0.4.5 Changed from ceil() to intval()
+                        $q = (int) (($q - $t) / ($this->_base - $t));
+                    }
+                    $encoded .= $this->_encode_digit($q);
+                    $bias = $this->_adapt($delta, $codecount+1, $is_first);
+                    $codecount++;
+                    $delta = 0;
+                    $is_first = false;
+                }
+            }
+            $delta++;
+            $cur_code++;
+        }
+        return $encoded;
+    }
+
+    /**
+     * Adapt the bias according to the current code point and position
+     * @param int $delta
+     * @param int $npoints
+     * @param int $is_first
+     * @return int
+     */
+    protected function _adapt($delta, $npoints, $is_first)
+    {
+        $delta = intval($is_first ? ($delta / $this->_damp) : ($delta / 2));
+        $delta += intval($delta / $npoints);
+        for ($k = 0; $delta > (($this->_base - $this->_tmin) * $this->_tmax) / 2; $k += $this->_base) {
+            $delta = intval($delta / ($this->_base - $this->_tmin));
+        }
+        return intval($k + ($this->_base - $this->_tmin + 1) * $delta / ($delta + $this->_skew));
+    }
+
+    /**
+     * Encoding a certain digit
+     * @param    int $d
+     * @return string
+     */
+    protected function _encode_digit($d)
+    {
+        return chr($d + 22 + 75 * ($d < 26));
+    }
+
+    /**
+     * Decode a certain digit
+     * @param    int $cp
+     * @return int
+     */
+    protected function _decode_digit($cp)
+    {
+        $cp = ord($cp);
+        return ($cp - 48 < 10) ? $cp - 22 : (($cp - 65 < 26) ? $cp - 65 : (($cp - 97 < 26) ? $cp - 97 : $this->_base));
+    }
+
+    /**
+     * Internal error handling method
+     * @param  string $error
+     */
+    protected function _error($error = '')
+    {
+        $this->_error = $error;
+    }
+
+    /**
+     * Do Nameprep according to RFC3491 and RFC3454
+     * @param    array    Unicode Characters
+     * @return   string   Unicode Characters, Nameprep'd
+     */
+    protected function _nameprep($input)
+    {
+        $output = array();
+        $error = false;
+        //
+        // Mapping
+        // Walking through the input array, performing the required steps on each of
+        // the input chars and putting the result into the output array
+        // While mapping required chars we apply the cannonical ordering
+        foreach ($input as $v) {
+            // Map to nothing == skip that code point
+            if (in_array($v, $this->NP['map_nothing'])) continue;
+            // Try to find prohibited input
+            if (in_array($v, $this->NP['prohibit']) || in_array($v, $this->NP['general_prohibited'])) {
+                $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
+                return false;
+            }
+            foreach ($this->NP['prohibit_ranges'] as $range) {
+                if ($range[0] <= $v && $v <= $range[1]) {
+                    $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X', $v));
+                    return false;
+                }
+            }
+            // Hangul syllable decomposition
+            if (0xAC00 <= $v && $v <= 0xD7AF) {
+                foreach ($this->_hangul_decompose($v) as $out) $output[] = (int) $out;
+            // There's a decomposition mapping for that code point
+            } elseif (isset($this->NP['replacemaps'][$v])) {
+                foreach ($this->_apply_cannonical_ordering($this->NP['replacemaps'][$v]) as $out) {
+                    $output[] = (int) $out;
+                }
+            } else {
+                $output[] = (int) $v;
+            }
+        }
+        // Before applying any Combining, try to rearrange any Hangul syllables
+        $output = $this->_hangul_compose($output);
+        //
+        // Combine code points
+        //
+        $last_class = 0;
+        $last_starter = 0;
+        $out_len = count($output);
+        for ($i = 0; $i < $out_len; ++$i) {
+            $class = $this->_get_combining_class($output[$i]);
+            if ((!$last_class || $last_class > $class) && $class) {
+                // Try to match
+                $seq_len = $i - $last_starter;
+                $out = $this->_combine(array_slice($output, $last_starter, $seq_len));
+                // On match: Replace the last starter with the composed character and remove
+                // the now redundant non-starter(s)
+                if ($out) {
+                    $output[$last_starter] = $out;
+                    if (count($out) != $seq_len) {
+                        for ($j = $i+1; $j < $out_len; ++$j) $output[$j-1] = $output[$j];
+                        unset($output[$out_len]);
+                    }
+                    // Rewind the for loop by one, since there can be more possible compositions
+                    $i--;
+                    $out_len--;
+                    $last_class = ($i == $last_starter) ? 0 : $this->_get_combining_class($output[$i-1]);
+                    continue;
+                }
+            }
+            // The current class is 0
+            if (!$class) $last_starter = $i;
+            $last_class = $class;
+        }
+        return $output;
+    }
+
+    /**
+     * Decomposes a Hangul syllable
+     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
+     * @param    integer  32bit UCS4 code point
+     * @return   array    Either Hangul Syllable decomposed or original 32bit value as one value array
+     */
+    protected function _hangul_decompose($char)
+    {
+        $sindex = (int) $char - $this->_sbase;
+        if ($sindex < 0 || $sindex >= $this->_scount) return array($char);
+        $result = array();
+        $result[] = (int) $this->_lbase + $sindex / $this->_ncount;
+        $result[] = (int) $this->_vbase + ($sindex % $this->_ncount) / $this->_tcount;
+        $T = intval($this->_tbase + $sindex % $this->_tcount);
+        if ($T != $this->_tbase) $result[] = $T;
+        return $result;
+    }
+    /**
+     * Ccomposes a Hangul syllable
+     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
+     * @param    array    Decomposed UCS4 sequence
+     * @return   array    UCS4 sequence with syllables composed
+     */
+    protected function _hangul_compose($input)
+    {
+        $inp_len = count($input);
+        if (!$inp_len) return array();
+        $result = array();
+        $last = (int) $input[0];
+        $result[] = $last; // copy first char from input to output
+
+        for ($i = 1; $i < $inp_len; ++$i) {
+            $char = (int) $input[$i];
+            $sindex = $last - $this->_sbase;
+            $lindex = $last - $this->_lbase;
+            $vindex = $char - $this->_vbase;
+            $tindex = $char - $this->_tbase;
+            // Find out, whether two current characters are LV and T
+            if (0 <= $sindex && $sindex < $this->_scount && ($sindex % $this->_tcount == 0)
+                    && 0 <= $tindex && $tindex <= $this->_tcount) {
+                // create syllable of form LVT
+                $last += $tindex;
+                $result[(count($result) - 1)] = $last; // reset last
+                continue; // discard char
+            }
+            // Find out, whether two current characters form L and V
+            if (0 <= $lindex && $lindex < $this->_lcount && 0 <= $vindex && $vindex < $this->_vcount) {
+                // create syllable of form LV
+                $last = (int) $this->_sbase + ($lindex * $this->_vcount + $vindex) * $this->_tcount;
+                $result[(count($result) - 1)] = $last; // reset last
+                continue; // discard char
+            }
+            // if neither case was true, just add the character
+            $last = $char;
+            $result[] = $char;
+        }
+        return $result;
+    }
+
+    /**
+     * Returns the combining class of a certain wide char
+     * @param    integer    Wide char to check (32bit integer)
+     * @return   integer    Combining class if found, else 0
+     */
+    protected function _get_combining_class($char)
+    {
+        return isset($this->NP['norm_combcls'][$char]) ? $this->NP['norm_combcls'][$char] : 0;
+    }
+
+    /**
+     * Apllies the cannonical ordering of a decomposed UCS4 sequence
+     * @param    array      Decomposed UCS4 sequence
+     * @return   array      Ordered USC4 sequence
+     */
+    protected function _apply_cannonical_ordering($input)
+    {
+        $swap = true;
+        $size = count($input);
+        while ($swap) {
+            $swap = false;
+            $last = $this->_get_combining_class(intval($input[0]));
+            for ($i = 0; $i < $size-1; ++$i) {
+                $next = $this->_get_combining_class(intval($input[$i+1]));
+                if ($next != 0 && $last > $next) {
+                    // Move item leftward until it fits
+                    for ($j = $i + 1; $j > 0; --$j) {
+                        if ($this->_get_combining_class(intval($input[$j-1])) <= $next) break;
+                        $t = intval($input[$j]);
+                        $input[$j] = intval($input[$j-1]);
+                        $input[$j-1] = $t;
+                        $swap = true;
+                    }
+                    // Reentering the loop looking at the old character again
+                    $next = $last;
+                }
+                $last = $next;
+            }
+        }
+        return $input;
+    }
+
+    /**
+     * Do composition of a sequence of starter and non-starter
+     * @param    array      UCS4 Decomposed sequence
+     * @return   array      Ordered USC4 sequence
+     */
+    protected function _combine($input)
+    {
+        $inp_len = count($input);
+        foreach ($this->NP['replacemaps'] as $np_src => $np_target) {
+            if ($np_target[0] != $input[0]) continue;
+            if (count($np_target) != $inp_len) continue;
+            $hit = false;
+            foreach ($input as $k2 => $v2) {
+                if ($v2 == $np_target[$k2]) {
+                    $hit = true;
+                } else {
+                    $hit = false;
+                    break;
+                }
+            }
+            if ($hit) return $np_src;
+        }
+        return false;
+    }
+
+    /**
+     * This converts an UTF-8 encoded string to its UCS-4 representation
+     * By talking about UCS-4 "strings" we mean arrays of 32bit integers representing
+     * each of the "chars". This is due to PHP not being able to handle strings with
+     * bit depth different from 8. This apllies to the reverse method _ucs4_to_utf8(), too.
+     * The following UTF-8 encodings are supported:
+     * bytes bits  representation
+     * 1        7  0xxxxxxx
+     * 2       11  110xxxxx 10xxxxxx
+     * 3       16  1110xxxx 10xxxxxx 10xxxxxx
+     * 4       21  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+     * 5       26  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+     * 6       31  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+     * Each x represents a bit that can be used to store character data.
+     * The five and six byte sequences are part of Annex D of ISO/IEC 10646-1:2000
+     * @param string $input
+     * @return string
+     */
+    protected function _utf8_to_ucs4($input)
+    {
+        $output = array();
+        $out_len = 0;
+        // Patch by Daniel Hahler; work around prolbem with mbstring.func_overload
+        if (function_exists('mb_strlen')) {
+            $inp_len = mb_strlen($input, '8bit');
+        } else {
+            $inp_len = strlen($input);
+        }
+        $mode = 'next';
+        $test = 'none';
+        for ($k = 0; $k < $inp_len; ++$k) {
+            $v = ord($input{$k}); // Extract byte from input string
+            if ($v < 128) { // We found an ASCII char - put into stirng as is
+                $output[$out_len] = $v;
+                ++$out_len;
+                if ('add' == $mode) {
+                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
+                    return false;
+                }
+                continue;
+            }
+            if ('next' == $mode) { // Try to find the next start byte; determine the width of the Unicode char
+                $start_byte = $v;
+                $mode = 'add';
+                $test = 'range';
+                if ($v >> 5 == 6) { // &110xxxxx 10xxxxx
+                    $next_byte = 0; // Tells, how many times subsequent bitmasks must rotate 6bits to the left
+                    $v = ($v - 192) << 6;
+                } elseif ($v >> 4 == 14) { // &1110xxxx 10xxxxxx 10xxxxxx
+                    $next_byte = 1;
+                    $v = ($v - 224) << 12;
+                } elseif ($v >> 3 == 30) { // &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+                    $next_byte = 2;
+                    $v = ($v - 240) << 18;
+                } elseif ($v >> 2 == 62) { // &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+                    $next_byte = 3;
+                    $v = ($v - 248) << 24;
+                } elseif ($v >> 1 == 126) { // &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+                    $next_byte = 4;
+                    $v = ($v - 252) << 30;
+                } else {
+                    $this->_error('This might be UTF-8, but I don\'t understand it at byte '.$k);
+                    return false;
+                }
+                if ('add' == $mode) {
+                    $output[$out_len] = (int) $v;
+                    ++$out_len;
+                    continue;
+                }
+            }
+            if ('add' == $mode) {
+                if (!$this->_allow_overlong && $test == 'range') {
+                    $test = 'none';
+                    if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) {
+                        $this->_error('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
+                        return false;
+                    }
+                }
+                if ($v >> 6 == 2) { // Bit mask must be 10xxxxxx
+                    $v = ($v - 128) << ($next_byte * 6);
+                    $output[($out_len - 1)] += $v;
+                    --$next_byte;
+                } else {
+                    $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
+                    return false;
+                }
+                if ($next_byte < 0) {
+                    $mode = 'next';
+                }
+            }
+        } // for
+        return $output;
+    }
+
+    /**
+     * Convert UCS-4 string into UTF-8 string
+     * See _utf8_to_ucs4() for details
+     * @param string  $input
+     * @return string
+     */
+    protected function _ucs4_to_utf8($input)
+    {
+        $output = '';
+        foreach ($input as $k => $v) {
+            if ($v < 128) { // 7bit are transferred literally
+                $output .= chr($v);
+            } elseif ($v < (1 << 11)) { // 2 bytes
+                $output .= chr(192+($v >> 6)).chr(128+($v & 63));
+            } elseif ($v < (1 << 16)) { // 3 bytes
+                $output .= chr(224+($v >> 12)).chr(128+(($v >> 6) & 63)).chr(128+($v & 63));
+            } elseif ($v < (1 << 21)) { // 4 bytes
+                $output .= chr(240+($v >> 18)).chr(128+(($v >> 12) & 63)).chr(128+(($v >> 6) & 63)).chr(128+($v & 63));
+            } elseif (self::$safe_mode) {
+                $output .= self::$safe_char;
+            } else {
+                $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte '.$k);
+                return false;
+            }
+        }
+        return $output;
+    }
+
+    /**
+     * Convert UCS-4 array into UCS-4 string
+     *
+     * @param array $input
+     * @return string
+     */
+    protected function _ucs4_to_ucs4_string($input)
+    {
+        $output = '';
+        // Take array values and split output to 4 bytes per value
+        // The bit mask is 255, which reads &11111111
+        foreach ($input as $v) {
+            $output .= chr(($v >> 24) & 255).chr(($v >> 16) & 255).chr(($v >> 8) & 255).chr($v & 255);
+        }
+        return $output;
+    }
+
+    /**
+     * Convert UCS-4 strin into UCS-4 garray
+     *
+     * @param  string $input
+     * @return array
+     */
+    protected function _ucs4_string_to_ucs4($input)
+    {
+        $output = array();
+        $inp_len = strlen($input);
+        // Input length must be dividable by 4
+        if ($inp_len % 4) {
+            $this->_error('Input UCS4 string is broken');
+            return false;
+        }
+        // Empty input - return empty output
+        if (!$inp_len) return $output;
+        for ($i = 0, $out_len = -1; $i < $inp_len; ++$i) {
+            // Increment output position every 4 input bytes
+            if (!($i % 4)) {
+                $out_len++;
+                $output[$out_len] = 0;
+            }
+            $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) );
+        }
+        return $output;
+    }
+
+    /**
+     * Holds all relevant mapping tables
+     * See RFC3454 for details
+     *
+     * @private array
+     * @since 0.5.2
+     */
+    protected $NP = array
+            ('map_nothing' => array(0xAD, 0x34F, 0x1806, 0x180B, 0x180C, 0x180D, 0x200B, 0x200C
+                    ,0x200D, 0x2060, 0xFE00, 0xFE01, 0xFE02, 0xFE03, 0xFE04, 0xFE05, 0xFE06, 0xFE07
+                    ,0xFE08, 0xFE09, 0xFE0A, 0xFE0B, 0xFE0C, 0xFE0D, 0xFE0E, 0xFE0F, 0xFEFF
+                    )
+            ,'general_prohibited' => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+                    ,20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 ,33, 34, 35, 36, 37, 38, 39, 40, 41, 42
+                    ,43, 44, 47, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126, 127, 0x3002
+                    )
+            ,'prohibit' => array(0xA0, 0x340, 0x341, 0x6DD, 0x70F, 0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003
+                    ,0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B, 0x200C, 0x200D, 0x200E, 0x200F
+                    ,0x2028, 0x2029, 0x202A, 0x202B, 0x202C, 0x202D, 0x202E, 0x202F, 0x205F, 0x206A, 0x206B, 0x206C
+                    ,0x206D, 0x206E, 0x206F, 0x3000, 0xFEFF, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF
+                    ,0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE
+                    ,0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF
+                    ,0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xE0001, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE, 0x10FFFF
+                    )
+            ,'prohibit_ranges' => array(array(0x80, 0x9F), array(0x2060, 0x206F), array(0x1D173, 0x1D17A)
+                    ,array(0xE000, 0xF8FF) ,array(0xF0000, 0xFFFFD), array(0x100000, 0x10FFFD)
+                    ,array(0xFDD0, 0xFDEF), array(0xD800, 0xDFFF), array(0x2FF0, 0x2FFB), array(0xE0020, 0xE007F)
+                    )
+            ,'replacemaps' => array(0x41 => array(0x61), 0x42 => array(0x62), 0x43 => array(0x63)
+                    ,0x44 => array(0x64), 0x45 => array(0x65), 0x46 => array(0x66), 0x47 => array(0x67)
+                    ,0x48 => array(0x68), 0x49 => array(0x69), 0x4A => array(0x6A), 0x4B => array(0x6B)
+                    ,0x4C => array(0x6C), 0x4D => array(0x6D), 0x4E => array(0x6E), 0x4F => array(0x6F)
+                    ,0x50 => array(0x70), 0x51 => array(0x71), 0x52 => array(0x72), 0x53 => array(0x73)
+                    ,0x54 => array(0x74), 0x55 => array(0x75), 0x56 => array(0x76), 0x57 => array(0x77)
+                    ,0x58 => array(0x78), 0x59 => array(0x79), 0x5A => array(0x7A), 0xB5 => array(0x3BC)
+                    ,0xC0 => array(0xE0), 0xC1 => array(0xE1), 0xC2 => array(0xE2), 0xC3 => array(0xE3)
+                    ,0xC4 => array(0xE4), 0xC5 => array(0xE5), 0xC6 => array(0xE6), 0xC7 => array(0xE7)
+                    ,0xC8 => array(0xE8), 0xC9 => array(0xE9), 0xCA => array(0xEA), 0xCB => array(0xEB)
+                    ,0xCC => array(0xEC), 0xCD => array(0xED), 0xCE => array(0xEE), 0xCF => array(0xEF)
+                    ,0xD0 => array(0xF0), 0xD1 => array(0xF1), 0xD2 => array(0xF2), 0xD3 => array(0xF3)
+                    ,0xD4 => array(0xF4), 0xD5 => array(0xF5), 0xD6 => array(0xF6), 0xD8 => array(0xF8)
+                    ,0xD9 => array(0xF9), 0xDA => array(0xFA), 0xDB => array(0xFB), 0xDC => array(0xFC)
+                    ,0xDD => array(0xFD), 0xDE => array(0xFE) /* Here was German "" -> "ss", is now configurable */
+                    ,0x100 => array(0x101), 0x102 => array(0x103), 0x104 => array(0x105)
+                    ,0x106 => array(0x107), 0x108 => array(0x109), 0x10A => array(0x10B)
+                    ,0x10C => array(0x10D), 0x10E => array(0x10F), 0x110 => array(0x111)
+                    ,0x112 => array(0x113), 0x114 => array(0x115), 0x116 => array(0x117)
+                    ,0x118 => array(0x119), 0x11A => array(0x11B), 0x11C => array(0x11D)
+                    ,0x11E => array(0x11F), 0x120 => array(0x121), 0x122 => array(0x123)
+                    ,0x124 => array(0x125), 0x126 => array(0x127), 0x128 => array(0x129)
+                    ,0x12A => array(0x12B), 0x12C => array(0x12D), 0x12E => array(0x12F)
+                    ,0x130 => array(0x69, 0x307), 0x132 => array(0x133), 0x134 => array(0x135)
+                    ,0x136 => array(0x137), 0x139 => array(0x13A), 0x13B => array(0x13C)
+                    ,0x13D => array(0x13E), 0x13F => array(0x140), 0x141 => array(0x142)
+                    ,0x143 => array(0x144), 0x145 => array(0x146), 0x147 => array(0x148)
+                    ,0x149 => array(0x2BC, 0x6E), 0x14A => array(0x14B), 0x14C => array(0x14D)
+                    ,0x14E => array(0x14F), 0x150 => array(0x151), 0x152 => array(0x153)
+                    ,0x154 => array(0x155), 0x156 => array(0x157), 0x158 => array(0x159)
+                    ,0x15A => array(0x15B), 0x15C => array(0x15D), 0x15E => array(0x15F)
+                    ,0x160 => array(0x161), 0x162 => array(0x163), 0x164 => array(0x165)
+                    ,0x166 => array(0x167), 0x168 => array(0x169), 0x16A => array(0x16B)
+                    ,0x16C => array(0x16D), 0x16E => array(0x16F), 0x170 => array(0x171)
+                    ,0x172 => array(0x173), 0x174 => array(0x175), 0x176 => array(0x177)
+                    ,0x178 => array(0xFF), 0x179 => array(0x17A), 0x17B => array(0x17C)
+                    ,0x17D => array(0x17E), 0x17F => array(0x73), 0x181 => array(0x253)
+                    ,0x182 => array(0x183), 0x184 => array(0x185), 0x186 => array(0x254)
+                    ,0x187 => array(0x188), 0x189 => array(0x256), 0x18A => array(0x257)
+                    ,0x18B => array(0x18C), 0x18E => array(0x1DD), 0x18F => array(0x259)
+                    ,0x190 => array(0x25B), 0x191 => array(0x192), 0x193 => array(0x260)
+                    ,0x194 => array(0x263), 0x196 => array(0x269), 0x197 => array(0x268)
+                    ,0x198 => array(0x199), 0x19C => array(0x26F), 0x19D => array(0x272)
+                    ,0x19F => array(0x275), 0x1A0 => array(0x1A1), 0x1A2 => array(0x1A3)
+                    ,0x1A4 => array(0x1A5), 0x1A6 => array(0x280), 0x1A7 => array(0x1A8)
+                    ,0x1A9 => array(0x283), 0x1AC => array(0x1AD), 0x1AE => array(0x288)
+                    ,0x1AF => array(0x1B0), 0x1B1 => array(0x28A), 0x1B2 => array(0x28B)
+                    ,0x1B3 => array(0x1B4), 0x1B5 => array(0x1B6), 0x1B7 => array(0x292)
+                    ,0x1B8 => array(0x1B9), 0x1BC => array(0x1BD), 0x1C4 => array(0x1C6)
+                    ,0x1C5 => array(0x1C6), 0x1C7 => array(0x1C9), 0x1C8 => array(0x1C9)
+                    ,0x1CA => array(0x1CC), 0x1CB => array(0x1CC), 0x1CD => array(0x1CE)
+                    ,0x1CF => array(0x1D0), 0x1D1   => array(0x1D2), 0x1D3   => array(0x1D4)
+                    ,0x1D5   => array(0x1D6), 0x1D7   => array(0x1D8), 0x1D9   => array(0x1DA)
+                    ,0x1DB   => array(0x1DC), 0x1DE   => array(0x1DF), 0x1E0   => array(0x1E1)
+                    ,0x1E2   => array(0x1E3), 0x1E4   => array(0x1E5), 0x1E6   => array(0x1E7)
+                    ,0x1E8   => array(0x1E9), 0x1EA   => array(0x1EB), 0x1EC   => array(0x1ED)
+                    ,0x1EE   => array(0x1EF), 0x1F0   => array(0x6A, 0x30C), 0x1F1   => array(0x1F3)
+                    ,0x1F2   => array(0x1F3), 0x1F4   => array(0x1F5), 0x1F6   => array(0x195)
+                    ,0x1F7   => array(0x1BF), 0x1F8   => array(0x1F9), 0x1FA   => array(0x1FB)
+                    ,0x1FC   => array(0x1FD), 0x1FE   => array(0x1FF), 0x200   => array(0x201)
+                    ,0x202   => array(0x203), 0x204   => array(0x205), 0x206   => array(0x207)
+                    ,0x208   => array(0x209), 0x20A   => array(0x20B), 0x20C   => array(0x20D)
+                    ,0x20E   => array(0x20F), 0x210   => array(0x211), 0x212   => array(0x213)
+                    ,0x214   => array(0x215), 0x216   => array(0x217), 0x218   => array(0x219)
+                    ,0x21A   => array(0x21B), 0x21C   => array(0x21D), 0x21E   => array(0x21F)
+                    ,0x220   => array(0x19E), 0x222   => array(0x223), 0x224   => array(0x225)
+                    ,0x226   => array(0x227), 0x228   => array(0x229), 0x22A   => array(0x22B)
+                    ,0x22C   => array(0x22D), 0x22E   => array(0x22F), 0x230   => array(0x231)
+                    ,0x232   => array(0x233), 0x345   => array(0x3B9), 0x37A   => array(0x20, 0x3B9)
+                    ,0x386   => array(0x3AC), 0x388   => array(0x3AD), 0x389   => array(0x3AE)
+                    ,0x38A   => array(0x3AF), 0x38C   => array(0x3CC), 0x38E   => array(0x3CD)
+                    ,0x38F   => array(0x3CE), 0x390   => array(0x3B9, 0x308, 0x301)
+                    ,0x391   => array(0x3B1), 0x392   => array(0x3B2), 0x393   => array(0x3B3)
+                    ,0x394   => array(0x3B4), 0x395   => array(0x3B5), 0x396   => array(0x3B6)
+                    ,0x397   => array(0x3B7), 0x398   => array(0x3B8), 0x399   => array(0x3B9)
+                    ,0x39A   => array(0x3BA), 0x39B   => array(0x3BB), 0x39C   => array(0x3BC)
+                    ,0x39D   => array(0x3BD), 0x39E   => array(0x3BE), 0x39F   => array(0x3BF)
+                    ,0x3A0   => array(0x3C0), 0x3A1   => array(0x3C1), 0x3A3   => array(0x3C3)
+                    ,0x3A4   => array(0x3C4), 0x3A5   => array(0x3C5), 0x3A6   => array(0x3C6)
+                    ,0x3A7   => array(0x3C7), 0x3A8   => array(0x3C8), 0x3A9   => array(0x3C9)
+                    ,0x3AA   => array(0x3CA), 0x3AB   => array(0x3CB), 0x3B0   => array(0x3C5, 0x308, 0x301)
+                    ,0x3C2   => array(0x3C3), 0x3D0   => array(0x3B2), 0x3D1   => array(0x3B8)
+                    ,0x3D2   => array(0x3C5), 0x3D3   => array(0x3CD), 0x3D4   => array(0x3CB)
+                    ,0x3D5   => array(0x3C6), 0x3D6   => array(0x3C0), 0x3D8   => array(0x3D9)
+                    ,0x3DA   => array(0x3DB), 0x3DC   => array(0x3DD), 0x3DE   => array(0x3DF)
+                    ,0x3E0   => array(0x3E1), 0x3E2   => array(0x3E3), 0x3E4   => array(0x3E5)
+                    ,0x3E6   => array(0x3E7), 0x3E8   => array(0x3E9), 0x3EA   => array(0x3EB)
+                    ,0x3EC   => array(0x3ED), 0x3EE   => array(0x3EF), 0x3F0   => array(0x3BA)
+                    ,0x3F1   => array(0x3C1), 0x3F2   => array(0x3C3), 0x3F4   => array(0x3B8)
+                    ,0x3F5   => array(0x3B5), 0x400   => array(0x450), 0x401   => array(0x451)
+                    ,0x402   => array(0x452), 0x403   => array(0x453), 0x404   => array(0x454)
+                    ,0x405   => array(0x455), 0x406   => array(0x456), 0x407   => array(0x457)
+                    ,0x408   => array(0x458), 0x409   => array(0x459), 0x40A   => array(0x45A)
+                    ,0x40B   => array(0x45B), 0x40C   => array(0x45C), 0x40D   => array(0x45D)
+                    ,0x40E   => array(0x45E), 0x40F   => array(0x45F), 0x410   => array(0x430)
+                    ,0x411   => array(0x431), 0x412   => array(0x432), 0x413   => array(0x433)
+                    ,0x414   => array(0x434), 0x415   => array(0x435), 0x416   => array(0x436)
+                    ,0x417   => array(0x437), 0x418   => array(0x438), 0x419   => array(0x439)
+                    ,0x41A   => array(0x43A), 0x41B   => array(0x43B), 0x41C   => array(0x43C)
+                    ,0x41D   => array(0x43D), 0x41E   => array(0x43E), 0x41F   => array(0x43F)
+                    ,0x420   => array(0x440), 0x421   => array(0x441), 0x422   => array(0x442)
+                    ,0x423   => array(0x443), 0x424   => array(0x444), 0x425   => array(0x445)
+                    ,0x426   => array(0x446), 0x427   => array(0x447), 0x428   => array(0x448)
+                    ,0x429   => array(0x449), 0x42A   => array(0x44A), 0x42B   => array(0x44B)
+                    ,0x42C   => array(0x44C), 0x42D   => array(0x44D), 0x42E   => array(0x44E)
+                    ,0x42F   => array(0x44F), 0x460   => array(0x461), 0x462   => array(0x463)
+                    ,0x464   => array(0x465), 0x466   => array(0x467), 0x468   => array(0x469)
+                    ,0x46A   => array(0x46B), 0x46C   => array(0x46D), 0x46E   => array(0x46F)
+                    ,0x470   => array(0x471), 0x472   => array(0x473), 0x474   => array(0x475)
+                    ,0x476   => array(0x477), 0x478   => array(0x479), 0x47A   => array(0x47B)
+                    ,0x47C   => array(0x47D), 0x47E   => array(0x47F), 0x480   => array(0x481)
+                    ,0x48A   => array(0x48B), 0x48C   => array(0x48D), 0x48E   => array(0x48F)
+                    ,0x490   => array(0x491), 0x492   => array(0x493), 0x494   => array(0x495)
+                    ,0x496   => array(0x497), 0x498   => array(0x499), 0x49A   => array(0x49B)
+                    ,0x49C   => array(0x49D), 0x49E   => array(0x49F), 0x4A0   => array(0x4A1)
+                    ,0x4A2   => array(0x4A3), 0x4A4   => array(0x4A5), 0x4A6   => array(0x4A7)
+                    ,0x4A8   => array(0x4A9), 0x4AA   => array(0x4AB), 0x4AC   => array(0x4AD)
+                    ,0x4AE   => array(0x4AF), 0x4B0   => array(0x4B1), 0x4B2   => array(0x4B3)
+                    ,0x4B4   => array(0x4B5), 0x4B6   => array(0x4B7), 0x4B8   => array(0x4B9)
+                    ,0x4BA   => array(0x4BB), 0x4BC   => array(0x4BD), 0x4BE   => array(0x4BF)
+                    ,0x4C1   => array(0x4C2), 0x4C3   => array(0x4C4), 0x4C5   => array(0x4C6)
+                    ,0x4C7   => array(0x4C8), 0x4C9   => array(0x4CA), 0x4CB   => array(0x4CC)
+                    ,0x4CD   => array(0x4CE), 0x4D0   => array(0x4D1), 0x4D2   => array(0x4D3)
+                    ,0x4D4   => array(0x4D5), 0x4D6   => array(0x4D7), 0x4D8   => array(0x4D9)
+                    ,0x4DA   => array(0x4DB), 0x4DC   => array(0x4DD), 0x4DE   => array(0x4DF)
+                    ,0x4E0   => array(0x4E1), 0x4E2   => array(0x4E3), 0x4E4   => array(0x4E5)
+                    ,0x4E6   => array(0x4E7), 0x4E8   => array(0x4E9), 0x4EA   => array(0x4EB)
+                    ,0x4EC   => array(0x4ED), 0x4EE   => array(0x4EF), 0x4F0   => array(0x4F1)
+                    ,0x4F2   => array(0x4F3), 0x4F4   => array(0x4F5), 0x4F8   => array(0x4F9)
+                    ,0x500   => array(0x501), 0x502   => array(0x503), 0x504   => array(0x505)
+                    ,0x506   => array(0x507), 0x508   => array(0x509), 0x50A   => array(0x50B)
+                    ,0x50C   => array(0x50D), 0x50E   => array(0x50F), 0x531   => array(0x561)
+                    ,0x532   => array(0x562), 0x533   => array(0x563), 0x534   => array(0x564)
+                    ,0x535   => array(0x565), 0x536   => array(0x566), 0x537   => array(0x567)
+                    ,0x538   => array(0x568), 0x539   => array(0x569), 0x53A   => array(0x56A)
+                    ,0x53B   => array(0x56B), 0x53C   => array(0x56C), 0x53D   => array(0x56D)
+                    ,0x53E   => array(0x56E), 0x53F   => array(0x56F), 0x540   => array(0x570)
+                    ,0x541   => array(0x571), 0x542   => array(0x572), 0x543   => array(0x573)
+                    ,0x544   => array(0x574), 0x545   => array(0x575), 0x546   => array(0x576)
+                    ,0x547   => array(0x577), 0x548   => array(0x578), 0x549   => array(0x579)
+                    ,0x54A   => array(0x57A), 0x54B   => array(0x57B), 0x54C   => array(0x57C)
+                    ,0x54D   => array(0x57D), 0x54E   => array(0x57E), 0x54F   => array(0x57F)
+                    ,0x550   => array(0x580), 0x551   => array(0x581), 0x552   => array(0x582)
+                    ,0x553   => array(0x583), 0x554   => array(0x584), 0x555   => array(0x585)
+                    ,0x556 => array(0x586), 0x587 => array(0x565, 0x582), 0xE33 => array(0xE4D, 0xE32)
+                    ,0x1E00  => array(0x1E01), 0x1E02  => array(0x1E03), 0x1E04  => array(0x1E05)
+                    ,0x1E06  => array(0x1E07), 0x1E08  => array(0x1E09), 0x1E0A  => array(0x1E0B)
+                    ,0x1E0C  => array(0x1E0D), 0x1E0E  => array(0x1E0F), 0x1E10  => array(0x1E11)
+                    ,0x1E12  => array(0x1E13), 0x1E14  => array(0x1E15), 0x1E16  => array(0x1E17)
+                    ,0x1E18  => array(0x1E19), 0x1E1A  => array(0x1E1B), 0x1E1C  => array(0x1E1D)
+                    ,0x1E1E  => array(0x1E1F), 0x1E20  => array(0x1E21), 0x1E22  => array(0x1E23)
+                    ,0x1E24  => array(0x1E25), 0x1E26  => array(0x1E27), 0x1E28  => array(0x1E29)
+                    ,0x1E2A  => array(0x1E2B), 0x1E2C  => array(0x1E2D), 0x1E2E  => array(0x1E2F)
+                    ,0x1E30  => array(0x1E31), 0x1E32  => array(0x1E33), 0x1E34  => array(0x1E35)
+                    ,0x1E36  => array(0x1E37), 0x1E38  => array(0x1E39), 0x1E3A  => array(0x1E3B)
+                    ,0x1E3C  => array(0x1E3D), 0x1E3E  => array(0x1E3F), 0x1E40  => array(0x1E41)
+                    ,0x1E42  => array(0x1E43), 0x1E44  => array(0x1E45), 0x1E46  => array(0x1E47)
+                    ,0x1E48  => array(0x1E49), 0x1E4A  => array(0x1E4B), 0x1E4C  => array(0x1E4D)
+                    ,0x1E4E  => array(0x1E4F), 0x1E50  => array(0x1E51), 0x1E52  => array(0x1E53)
+                    ,0x1E54  => array(0x1E55), 0x1E56  => array(0x1E57), 0x1E58  => array(0x1E59)
+                    ,0x1E5A  => array(0x1E5B), 0x1E5C  => array(0x1E5D), 0x1E5E  => array(0x1E5F)
+                    ,0x1E60  => array(0x1E61), 0x1E62  => array(0x1E63), 0x1E64  => array(0x1E65)
+                    ,0x1E66  => array(0x1E67), 0x1E68  => array(0x1E69), 0x1E6A  => array(0x1E6B)
+                    ,0x1E6C  => array(0x1E6D), 0x1E6E  => array(0x1E6F), 0x1E70  => array(0x1E71)
+                    ,0x1E72  => array(0x1E73), 0x1E74  => array(0x1E75), 0x1E76  => array(0x1E77)
+                    ,0x1E78  => array(0x1E79), 0x1E7A  => array(0x1E7B), 0x1E7C  => array(0x1E7D)
+                    ,0x1E7E  => array(0x1E7F), 0x1E80  => array(0x1E81), 0x1E82  => array(0x1E83)
+                    ,0x1E84  => array(0x1E85), 0x1E86  => array(0x1E87), 0x1E88  => array(0x1E89)
+                    ,0x1E8A  => array(0x1E8B), 0x1E8C  => array(0x1E8D), 0x1E8E  => array(0x1E8F)
+                    ,0x1E90  => array(0x1E91), 0x1E92  => array(0x1E93), 0x1E94  => array(0x1E95)
+                    ,0x1E96  => array(0x68, 0x331), 0x1E97  => array(0x74, 0x308), 0x1E98  => array(0x77, 0x30A)
+                    ,0x1E99  => array(0x79, 0x30A), 0x1E9A  => array(0x61, 0x2BE), 0x1E9B  => array(0x1E61)
+                    ,0x1EA0  => array(0x1EA1), 0x1EA2  => array(0x1EA3), 0x1EA4  => array(0x1EA5)
+                    ,0x1EA6  => array(0x1EA7), 0x1EA8  => array(0x1EA9), 0x1EAA  => array(0x1EAB)
+                    ,0x1EAC  => array(0x1EAD), 0x1EAE  => array(0x1EAF), 0x1EB0  => array(0x1EB1)
+                    ,0x1EB2  => array(0x1EB3), 0x1EB4  => array(0x1EB5), 0x1EB6  => array(0x1EB7)
+                    ,0x1EB8  => array(0x1EB9), 0x1EBA  => array(0x1EBB), 0x1EBC  => array(0x1EBD)
+                    ,0x1EBE  => array(0x1EBF), 0x1EC0  => array(0x1EC1), 0x1EC2  => array(0x1EC3)
+                    ,0x1EC4  => array(0x1EC5), 0x1EC6  => array(0x1EC7), 0x1EC8  => array(0x1EC9)
+                    ,0x1ECA  => array(0x1ECB), 0x1ECC  => array(0x1ECD), 0x1ECE  => array(0x1ECF)
+                    ,0x1ED0  => array(0x1ED1), 0x1ED2  => array(0x1ED3), 0x1ED4  => array(0x1ED5)
+                    ,0x1ED6  => array(0x1ED7), 0x1ED8  => array(0x1ED9), 0x1EDA  => array(0x1EDB)
+                    ,0x1EDC  => array(0x1EDD), 0x1EDE  => array(0x1EDF), 0x1EE0  => array(0x1EE1)
+                    ,0x1EE2  => array(0x1EE3), 0x1EE4  => array(0x1EE5), 0x1EE6  => array(0x1EE7)
+                    ,0x1EE8  => array(0x1EE9), 0x1EEA  => array(0x1EEB), 0x1EEC  => array(0x1EED)
+                    ,0x1EEE  => array(0x1EEF), 0x1EF0  => array(0x1EF1), 0x1EF2  => array(0x1EF3)
+                    ,0x1EF4  => array(0x1EF5), 0x1EF6  => array(0x1EF7), 0x1EF8  => array(0x1EF9)
+                    ,0x1F08  => array(0x1F00), 0x1F09  => array(0x1F01), 0x1F0A  => array(0x1F02)
+                    ,0x1F0B  => array(0x1F03), 0x1F0C  => array(0x1F04), 0x1F0D  => array(0x1F05)
+                    ,0x1F0E  => array(0x1F06), 0x1F0F  => array(0x1F07), 0x1F18  => array(0x1F10)
+                    ,0x1F19  => array(0x1F11), 0x1F1A  => array(0x1F12), 0x1F1B  => array(0x1F13)
+                    ,0x1F1C  => array(0x1F14), 0x1F1D  => array(0x1F15), 0x1F28  => array(0x1F20)
+                    ,0x1F29  => array(0x1F21), 0x1F2A  => array(0x1F22), 0x1F2B  => array(0x1F23)
+                    ,0x1F2C  => array(0x1F24), 0x1F2D  => array(0x1F25), 0x1F2E  => array(0x1F26)
+                    ,0x1F2F  => array(0x1F27), 0x1F38  => array(0x1F30), 0x1F39  => array(0x1F31)
+                    ,0x1F3A  => array(0x1F32), 0x1F3B  => array(0x1F33), 0x1F3C  => array(0x1F34)
+                    ,0x1F3D  => array(0x1F35), 0x1F3E  => array(0x1F36), 0x1F3F  => array(0x1F37)
+                    ,0x1F48  => array(0x1F40), 0x1F49  => array(0x1F41), 0x1F4A  => array(0x1F42)
+                    ,0x1F4B  => array(0x1F43), 0x1F4C  => array(0x1F44), 0x1F4D  => array(0x1F45)
+                    ,0x1F50  => array(0x3C5, 0x313), 0x1F52  => array(0x3C5, 0x313, 0x300)
+                    ,0x1F54  => array(0x3C5, 0x313, 0x301), 0x1F56  => array(0x3C5, 0x313, 0x342)
+                    ,0x1F59  => array(0x1F51), 0x1F5B  => array(0x1F53), 0x1F5D  => array(0x1F55)
+                    ,0x1F5F  => array(0x1F57), 0x1F68  => array(0x1F60), 0x1F69  => array(0x1F61)
+                    ,0x1F6A  => array(0x1F62), 0x1F6B  => array(0x1F63), 0x1F6C  => array(0x1F64)
+                    ,0x1F6D  => array(0x1F65), 0x1F6E  => array(0x1F66), 0x1F6F  => array(0x1F67)
+                    ,0x1F80  => array(0x1F00, 0x3B9), 0x1F81  => array(0x1F01, 0x3B9)
+                    ,0x1F82  => array(0x1F02, 0x3B9), 0x1F83  => array(0x1F03, 0x3B9)
+                    ,0x1F84  => array(0x1F04, 0x3B9), 0x1F85  => array(0x1F05, 0x3B9)
+                    ,0x1F86  => array(0x1F06, 0x3B9), 0x1F87  => array(0x1F07, 0x3B9)
+                    ,0x1F88  => array(0x1F00, 0x3B9), 0x1F89  => array(0x1F01, 0x3B9)
+                    ,0x1F8A  => array(0x1F02, 0x3B9), 0x1F8B  => array(0x1F03, 0x3B9)
+                    ,0x1F8C  => array(0x1F04, 0x3B9), 0x1F8D  => array(0x1F05, 0x3B9)
+                    ,0x1F8E  => array(0x1F06, 0x3B9), 0x1F8F  => array(0x1F07, 0x3B9)
+                    ,0x1F90  => array(0x1F20, 0x3B9), 0x1F91  => array(0x1F21, 0x3B9)
+                    ,0x1F92  => array(0x1F22, 0x3B9), 0x1F93  => array(0x1F23, 0x3B9)
+                    ,0x1F94  => array(0x1F24, 0x3B9), 0x1F95  => array(0x1F25, 0x3B9)
+                    ,0x1F96  => array(0x1F26, 0x3B9), 0x1F97  => array(0x1F27, 0x3B9)
+                    ,0x1F98  => array(0x1F20, 0x3B9), 0x1F99  => array(0x1F21, 0x3B9)
+                    ,0x1F9A  => array(0x1F22, 0x3B9), 0x1F9B  => array(0x1F23, 0x3B9)
+                    ,0x1F9C  => array(0x1F24, 0x3B9), 0x1F9D  => array(0x1F25, 0x3B9)
+                    ,0x1F9E  => array(0x1F26, 0x3B9), 0x1F9F  => array(0x1F27, 0x3B9)
+                    ,0x1FA0  => array(0x1F60, 0x3B9), 0x1FA1  => array(0x1F61, 0x3B9)
+                    ,0x1FA2  => array(0x1F62, 0x3B9), 0x1FA3  => array(0x1F63, 0x3B9)
+                    ,0x1FA4  => array(0x1F64, 0x3B9), 0x1FA5  => array(0x1F65, 0x3B9)
+                    ,0x1FA6  => array(0x1F66, 0x3B9), 0x1FA7  => array(0x1F67, 0x3B9)
+                    ,0x1FA8  => array(0x1F60, 0x3B9), 0x1FA9  => array(0x1F61, 0x3B9)
+                    ,0x1FAA  => array(0x1F62, 0x3B9), 0x1FAB  => array(0x1F63, 0x3B9)
+                    ,0x1FAC  => array(0x1F64, 0x3B9), 0x1FAD  => array(0x1F65, 0x3B9)
+                    ,0x1FAE  => array(0x1F66, 0x3B9), 0x1FAF  => array(0x1F67, 0x3B9)
+                    ,0x1FB2  => array(0x1F70, 0x3B9), 0x1FB3  => array(0x3B1, 0x3B9)
+                    ,0x1FB4  => array(0x3AC, 0x3B9), 0x1FB6  => array(0x3B1, 0x342)
+                    ,0x1FB7  => array(0x3B1, 0x342, 0x3B9), 0x1FB8  => array(0x1FB0)
+                    ,0x1FB9  => array(0x1FB1), 0x1FBA  => array(0x1F70), 0x1FBB  => array(0x1F71)
+                    ,0x1FBC  => array(0x3B1, 0x3B9), 0x1FBE  => array(0x3B9)
+                    ,0x1FC2  => array(0x1F74, 0x3B9), 0x1FC3  => array(0x3B7, 0x3B9)
+                    ,0x1FC4  => array(0x3AE, 0x3B9), 0x1FC6  => array(0x3B7, 0x342)
+                    ,0x1FC7  => array(0x3B7, 0x342, 0x3B9), 0x1FC8  => array(0x1F72)
+                    ,0x1FC9  => array(0x1F73), 0x1FCA  => array(0x1F74), 0x1FCB  => array(0x1F75)
+                    ,0x1FCC  => array(0x3B7, 0x3B9), 0x1FD2  => array(0x3B9, 0x308, 0x300)
+                    ,0x1FD3  => array(0x3B9, 0x308, 0x301), 0x1FD6  => array(0x3B9, 0x342)
+                    ,0x1FD7  => array(0x3B9, 0x308, 0x342), 0x1FD8  => array(0x1FD0)
+                    ,0x1FD9  => array(0x1FD1), 0x1FDA  => array(0x1F76)
+                    ,0x1FDB  => array(0x1F77), 0x1FE2  => array(0x3C5, 0x308, 0x300)
+                    ,0x1FE3  => array(0x3C5, 0x308, 0x301), 0x1FE4  => array(0x3C1, 0x313)
+                    ,0x1FE6  => array(0x3C5, 0x342), 0x1FE7  => array(0x3C5, 0x308, 0x342)
+                    ,0x1FE8  => array(0x1FE0), 0x1FE9  => array(0x1FE1)
+                    ,0x1FEA  => array(0x1F7A), 0x1FEB  => array(0x1F7B)
+                    ,0x1FEC  => array(0x1FE5), 0x1FF2  => array(0x1F7C, 0x3B9)
+                    ,0x1FF3  => array(0x3C9, 0x3B9), 0x1FF4  => array(0x3CE, 0x3B9)
+                    ,0x1FF6  => array(0x3C9, 0x342), 0x1FF7  => array(0x3C9, 0x342, 0x3B9)
+                    ,0x1FF8  => array(0x1F78), 0x1FF9  => array(0x1F79), 0x1FFA  => array(0x1F7C)
+                    ,0x1FFB  => array(0x1F7D), 0x1FFC  => array(0x3C9, 0x3B9)
+                    ,0x20A8  => array(0x72, 0x73), 0x2102  => array(0x63), 0x2103  => array(0xB0, 0x63)
+                    ,0x2107  => array(0x25B), 0x2109  => array(0xB0, 0x66), 0x210B  => array(0x68)
+                    ,0x210C  => array(0x68), 0x210D  => array(0x68), 0x2110  => array(0x69)
+                    ,0x2111  => array(0x69), 0x2112  => array(0x6C), 0x2115  => array(0x6E)
+                    ,0x2116  => array(0x6E, 0x6F), 0x2119  => array(0x70), 0x211A  => array(0x71)
+                    ,0x211B  => array(0x72), 0x211C  => array(0x72), 0x211D  => array(0x72)
+                    ,0x2120  => array(0x73, 0x6D), 0x2121  => array(0x74, 0x65, 0x6C)
+                    ,0x2122  => array(0x74, 0x6D), 0x2124  => array(0x7A), 0x2126  => array(0x3C9)
+                    ,0x2128  => array(0x7A), 0x212A  => array(0x6B), 0x212B  => array(0xE5)
+                    ,0x212C  => array(0x62), 0x212D  => array(0x63), 0x2130  => array(0x65)
+                    ,0x2131  => array(0x66), 0x2133  => array(0x6D), 0x213E  => array(0x3B3)
+                    ,0x213F  => array(0x3C0), 0x2145  => array(0x64) ,0x2160  => array(0x2170)
+                    ,0x2161  => array(0x2171), 0x2162  => array(0x2172), 0x2163  => array(0x2173)
+                    ,0x2164  => array(0x2174), 0x2165  => array(0x2175), 0x2166  => array(0x2176)
+                    ,0x2167  => array(0x2177), 0x2168  => array(0x2178), 0x2169  => array(0x2179)
+                    ,0x216A  => array(0x217A), 0x216B  => array(0x217B), 0x216C  => array(0x217C)
+                    ,0x216D  => array(0x217D), 0x216E  => array(0x217E), 0x216F  => array(0x217F)
+                    ,0x24B6  => array(0x24D0), 0x24B7  => array(0x24D1), 0x24B8  => array(0x24D2)
+                    ,0x24B9  => array(0x24D3), 0x24BA  => array(0x24D4), 0x24BB  => array(0x24D5)
+                    ,0x24BC  => array(0x24D6), 0x24BD  => array(0x24D7), 0x24BE  => array(0x24D8)
+                    ,0x24BF  => array(0x24D9), 0x24C0  => array(0x24DA), 0x24C1  => array(0x24DB)
+                    ,0x24C2  => array(0x24DC), 0x24C3  => array(0x24DD), 0x24C4  => array(0x24DE)
+                    ,0x24C5  => array(0x24DF), 0x24C6  => array(0x24E0), 0x24C7  => array(0x24E1)
+                    ,0x24C8  => array(0x24E2), 0x24C9  => array(0x24E3), 0x24CA  => array(0x24E4)
+                    ,0x24CB  => array(0x24E5), 0x24CC  => array(0x24E6), 0x24CD  => array(0x24E7)
+                    ,0x24CE  => array(0x24E8), 0x24CF  => array(0x24E9), 0x3371  => array(0x68, 0x70, 0x61)
+                    ,0x3373  => array(0x61, 0x75), 0x3375  => array(0x6F, 0x76)
+                    ,0x3380  => array(0x70, 0x61), 0x3381  => array(0x6E, 0x61)
+                    ,0x3382  => array(0x3BC, 0x61), 0x3383  => array(0x6D, 0x61)
+                    ,0x3384  => array(0x6B, 0x61), 0x3385  => array(0x6B, 0x62)
+                    ,0x3386  => array(0x6D, 0x62), 0x3387  => array(0x67, 0x62)
+                    ,0x338A  => array(0x70, 0x66), 0x338B  => array(0x6E, 0x66)
+                    ,0x338C  => array(0x3BC, 0x66), 0x3390  => array(0x68, 0x7A)
+                    ,0x3391  => array(0x6B, 0x68, 0x7A), 0x3392  => array(0x6D, 0x68, 0x7A)
+                    ,0x3393  => array(0x67, 0x68, 0x7A), 0x3394  => array(0x74, 0x68, 0x7A)
+                    ,0x33A9  => array(0x70, 0x61), 0x33AA  => array(0x6B, 0x70, 0x61)
+                    ,0x33AB  => array(0x6D, 0x70, 0x61), 0x33AC  => array(0x67, 0x70, 0x61)
+                    ,0x33B4  => array(0x70, 0x76), 0x33B5  => array(0x6E, 0x76)
+                    ,0x33B6  => array(0x3BC, 0x76), 0x33B7  => array(0x6D, 0x76)
+                    ,0x33B8  => array(0x6B, 0x76), 0x33B9  => array(0x6D, 0x76)
+                    ,0x33BA  => array(0x70, 0x77), 0x33BB  => array(0x6E, 0x77)
+                    ,0x33BC  => array(0x3BC, 0x77), 0x33BD  => array(0x6D, 0x77)
+                    ,0x33BE  => array(0x6B, 0x77), 0x33BF  => array(0x6D, 0x77)
+                    ,0x33C0  => array(0x6B, 0x3C9), 0x33C1  => array(0x6D, 0x3C9) /*
+                    ,0x33C2  => array(0x61, 0x2E, 0x6D, 0x2E) */
+                    ,0x33C3  => array(0x62, 0x71), 0x33C6  => array(0x63, 0x2215, 0x6B, 0x67)
+                    ,0x33C7  => array(0x63, 0x6F, 0x2E), 0x33C8  => array(0x64, 0x62)
+                    ,0x33C9  => array(0x67, 0x79), 0x33CB  => array(0x68, 0x70)
+                    ,0x33CD  => array(0x6B, 0x6B), 0x33CE  => array(0x6B, 0x6D)
+                    ,0x33D7  => array(0x70, 0x68), 0x33D9  => array(0x70, 0x70, 0x6D)
+                    ,0x33DA  => array(0x70, 0x72), 0x33DC  => array(0x73, 0x76)
+                    ,0x33DD  => array(0x77, 0x62), 0xFB00  => array(0x66, 0x66)
+                    ,0xFB01  => array(0x66, 0x69), 0xFB02  => array(0x66, 0x6C)
+                    ,0xFB03  => array(0x66, 0x66, 0x69), 0xFB04  => array(0x66, 0x66, 0x6C)
+                    ,0xFB05  => array(0x73, 0x74), 0xFB06  => array(0x73, 0x74)
+                    ,0xFB13  => array(0x574, 0x576), 0xFB14  => array(0x574, 0x565)
+                    ,0xFB15  => array(0x574, 0x56B), 0xFB16  => array(0x57E, 0x576)
+                    ,0xFB17  => array(0x574, 0x56D), 0xFF21  => array(0xFF41)
+                    ,0xFF22  => array(0xFF42), 0xFF23  => array(0xFF43), 0xFF24  => array(0xFF44)
+                    ,0xFF25  => array(0xFF45), 0xFF26  => array(0xFF46), 0xFF27  => array(0xFF47)
+                    ,0xFF28  => array(0xFF48), 0xFF29  => array(0xFF49), 0xFF2A  => array(0xFF4A)
+                    ,0xFF2B  => array(0xFF4B), 0xFF2C  => array(0xFF4C), 0xFF2D  => array(0xFF4D)
+                    ,0xFF2E  => array(0xFF4E), 0xFF2F  => array(0xFF4F), 0xFF30  => array(0xFF50)
+                    ,0xFF31  => array(0xFF51), 0xFF32  => array(0xFF52), 0xFF33  => array(0xFF53)
+                    ,0xFF34  => array(0xFF54), 0xFF35  => array(0xFF55), 0xFF36  => array(0xFF56)
+                    ,0xFF37  => array(0xFF57), 0xFF38  => array(0xFF58), 0xFF39  => array(0xFF59)
+                    ,0xFF3A  => array(0xFF5A), 0x10400 => array(0x10428), 0x10401 => array(0x10429)
+                    ,0x10402 => array(0x1042A), 0x10403 => array(0x1042B), 0x10404 => array(0x1042C)
+                    ,0x10405 => array(0x1042D), 0x10406 => array(0x1042E), 0x10407 => array(0x1042F)
+                    ,0x10408 => array(0x10430), 0x10409 => array(0x10431), 0x1040A => array(0x10432)
+                    ,0x1040B => array(0x10433), 0x1040C => array(0x10434), 0x1040D => array(0x10435)
+                    ,0x1040E => array(0x10436), 0x1040F => array(0x10437), 0x10410 => array(0x10438)
+                    ,0x10411 => array(0x10439), 0x10412 => array(0x1043A), 0x10413 => array(0x1043B)
+                    ,0x10414 => array(0x1043C), 0x10415 => array(0x1043D), 0x10416 => array(0x1043E)
+                    ,0x10417 => array(0x1043F), 0x10418 => array(0x10440), 0x10419 => array(0x10441)
+                    ,0x1041A => array(0x10442), 0x1041B => array(0x10443), 0x1041C => array(0x10444)
+                    ,0x1041D => array(0x10445), 0x1041E => array(0x10446), 0x1041F => array(0x10447)
+                    ,0x10420 => array(0x10448), 0x10421 => array(0x10449), 0x10422 => array(0x1044A)
+                    ,0x10423 => array(0x1044B), 0x10424 => array(0x1044C), 0x10425 => array(0x1044D)
+                    ,0x1D400 => array(0x61), 0x1D401 => array(0x62), 0x1D402 => array(0x63)
+                    ,0x1D403 => array(0x64), 0x1D404 => array(0x65), 0x1D405 => array(0x66)
+                    ,0x1D406 => array(0x67), 0x1D407 => array(0x68), 0x1D408 => array(0x69)
+                    ,0x1D409 => array(0x6A), 0x1D40A => array(0x6B), 0x1D40B => array(0x6C)
+                    ,0x1D40C => array(0x6D), 0x1D40D => array(0x6E), 0x1D40E => array(0x6F)
+                    ,0x1D40F => array(0x70), 0x1D410 => array(0x71), 0x1D411 => array(0x72)
+                    ,0x1D412 => array(0x73), 0x1D413 => array(0x74), 0x1D414 => array(0x75)
+                    ,0x1D415 => array(0x76), 0x1D416 => array(0x77), 0x1D417 => array(0x78)
+                    ,0x1D418 => array(0x79), 0x1D419 => array(0x7A), 0x1D434 => array(0x61)
+                    ,0x1D435 => array(0x62), 0x1D436 => array(0x63), 0x1D437 => array(0x64)
+                    ,0x1D438 => array(0x65), 0x1D439 => array(0x66), 0x1D43A => array(0x67)
+                    ,0x1D43B => array(0x68), 0x1D43C => array(0x69), 0x1D43D => array(0x6A)
+                    ,0x1D43E => array(0x6B), 0x1D43F => array(0x6C), 0x1D440 => array(0x6D)
+                    ,0x1D441 => array(0x6E), 0x1D442 => array(0x6F), 0x1D443 => array(0x70)
+                    ,0x1D444 => array(0x71), 0x1D445 => array(0x72), 0x1D446 => array(0x73)
+                    ,0x1D447 => array(0x74), 0x1D448 => array(0x75), 0x1D449 => array(0x76)
+                    ,0x1D44A => array(0x77), 0x1D44B => array(0x78), 0x1D44C => array(0x79)
+                    ,0x1D44D => array(0x7A), 0x1D468 => array(0x61), 0x1D469 => array(0x62)
+                    ,0x1D46A => array(0x63), 0x1D46B => array(0x64), 0x1D46C => array(0x65)
+                    ,0x1D46D => array(0x66), 0x1D46E => array(0x67), 0x1D46F => array(0x68)
+                    ,0x1D470 => array(0x69), 0x1D471 => array(0x6A), 0x1D472 => array(0x6B)
+                    ,0x1D473 => array(0x6C), 0x1D474 => array(0x6D), 0x1D475 => array(0x6E)
+                    ,0x1D476 => array(0x6F), 0x1D477 => array(0x70), 0x1D478 => array(0x71)
+                    ,0x1D479 => array(0x72), 0x1D47A => array(0x73), 0x1D47B => array(0x74)
+                    ,0x1D47C => array(0x75), 0x1D47D => array(0x76), 0x1D47E => array(0x77)
+                    ,0x1D47F => array(0x78), 0x1D480 => array(0x79), 0x1D481 => array(0x7A)
+                    ,0x1D49C => array(0x61), 0x1D49E => array(0x63), 0x1D49F => array(0x64)
+                    ,0x1D4A2 => array(0x67), 0x1D4A5 => array(0x6A), 0x1D4A6 => array(0x6B)
+                    ,0x1D4A9 => array(0x6E), 0x1D4AA => array(0x6F), 0x1D4AB => array(0x70)
+                    ,0x1D4AC => array(0x71), 0x1D4AE => array(0x73), 0x1D4AF => array(0x74)
+                    ,0x1D4B0 => array(0x75), 0x1D4B1 => array(0x76), 0x1D4B2 => array(0x77)
+                    ,0x1D4B3 => array(0x78), 0x1D4B4 => array(0x79), 0x1D4B5 => array(0x7A)
+                    ,0x1D4D0 => array(0x61), 0x1D4D1 => array(0x62), 0x1D4D2 => array(0x63)
+                    ,0x1D4D3 => array(0x64), 0x1D4D4 => array(0x65), 0x1D4D5 => array(0x66)
+                    ,0x1D4D6 => array(0x67), 0x1D4D7 => array(0x68), 0x1D4D8 => array(0x69)
+                    ,0x1D4D9 => array(0x6A), 0x1D4DA => array(0x6B), 0x1D4DB => array(0x6C)
+                    ,0x1D4DC => array(0x6D), 0x1D4DD => array(0x6E), 0x1D4DE => array(0x6F)
+                    ,0x1D4DF => array(0x70), 0x1D4E0 => array(0x71), 0x1D4E1 => array(0x72)
+                    ,0x1D4E2 => array(0x73), 0x1D4E3 => array(0x74), 0x1D4E4 => array(0x75)
+                    ,0x1D4E5 => array(0x76), 0x1D4E6 => array(0x77), 0x1D4E7 => array(0x78)
+                    ,0x1D4E8 => array(0x79), 0x1D4E9 => array(0x7A), 0x1D504 => array(0x61)
+                    ,0x1D505 => array(0x62), 0x1D507 => array(0x64), 0x1D508 => array(0x65)
+                    ,0x1D509 => array(0x66), 0x1D50A => array(0x67), 0x1D50D => array(0x6A)
+                    ,0x1D50E => array(0x6B), 0x1D50F => array(0x6C), 0x1D510 => array(0x6D)
+                    ,0x1D511 => array(0x6E), 0x1D512 => array(0x6F), 0x1D513 => array(0x70)
+                    ,0x1D514 => array(0x71), 0x1D516 => array(0x73), 0x1D517 => array(0x74)
+                    ,0x1D518 => array(0x75), 0x1D519 => array(0x76), 0x1D51A => array(0x77)
+                    ,0x1D51B => array(0x78), 0x1D51C => array(0x79), 0x1D538 => array(0x61)
+                    ,0x1D539 => array(0x62), 0x1D53B => array(0x64), 0x1D53C => array(0x65)
+                    ,0x1D53D => array(0x66), 0x1D53E => array(0x67), 0x1D540 => array(0x69)
+                    ,0x1D541 => array(0x6A), 0x1D542 => array(0x6B), 0x1D543 => array(0x6C)
+                    ,0x1D544 => array(0x6D), 0x1D546 => array(0x6F), 0x1D54A => array(0x73)
+                    ,0x1D54B => array(0x74), 0x1D54C => array(0x75), 0x1D54D => array(0x76)
+                    ,0x1D54E => array(0x77), 0x1D54F => array(0x78), 0x1D550 => array(0x79)
+                    ,0x1D56C => array(0x61), 0x1D56D => array(0x62), 0x1D56E => array(0x63)
+                    ,0x1D56F => array(0x64), 0x1D570 => array(0x65), 0x1D571 => array(0x66)
+                    ,0x1D572 => array(0x67), 0x1D573 => array(0x68), 0x1D574 => array(0x69)
+                    ,0x1D575 => array(0x6A), 0x1D576 => array(0x6B), 0x1D577 => array(0x6C)
+                    ,0x1D578 => array(0x6D), 0x1D579 => array(0x6E), 0x1D57A => array(0x6F)
+                    ,0x1D57B => array(0x70), 0x1D57C => array(0x71), 0x1D57D => array(0x72)
+                    ,0x1D57E => array(0x73), 0x1D57F => array(0x74), 0x1D580 => array(0x75)
+                    ,0x1D581 => array(0x76), 0x1D582 => array(0x77), 0x1D583 => array(0x78)
+                    ,0x1D584 => array(0x79), 0x1D585 => array(0x7A), 0x1D5A0 => array(0x61)
+                    ,0x1D5A1 => array(0x62), 0x1D5A2 => array(0x63), 0x1D5A3 => array(0x64)
+                    ,0x1D5A4 => array(0x65), 0x1D5A5 => array(0x66), 0x1D5A6 => array(0x67)
+                    ,0x1D5A7 => array(0x68), 0x1D5A8 => array(0x69), 0x1D5A9 => array(0x6A)
+                    ,0x1D5AA => array(0x6B), 0x1D5AB => array(0x6C), 0x1D5AC => array(0x6D)
+                    ,0x1D5AD => array(0x6E), 0x1D5AE => array(0x6F), 0x1D5AF => array(0x70)
+                    ,0x1D5B0 => array(0x71), 0x1D5B1 => array(0x72), 0x1D5B2 => array(0x73)
+                    ,0x1D5B3 => array(0x74), 0x1D5B4 => array(0x75), 0x1D5B5 => array(0x76)
+                    ,0x1D5B6 => array(0x77), 0x1D5B7 => array(0x78), 0x1D5B8 => array(0x79)
+                    ,0x1D5B9 => array(0x7A), 0x1D5D4 => array(0x61), 0x1D5D5 => array(0x62)
+                    ,0x1D5D6 => array(0x63), 0x1D5D7 => array(0x64), 0x1D5D8 => array(0x65)
+                    ,0x1D5D9 => array(0x66), 0x1D5DA => array(0x67), 0x1D5DB => array(0x68)
+                    ,0x1D5DC => array(0x69), 0x1D5DD => array(0x6A), 0x1D5DE => array(0x6B)
+                    ,0x1D5DF => array(0x6C), 0x1D5E0 => array(0x6D), 0x1D5E1 => array(0x6E)
+                    ,0x1D5E2 => array(0x6F), 0x1D5E3 => array(0x70), 0x1D5E4 => array(0x71)
+                    ,0x1D5E5 => array(0x72), 0x1D5E6 => array(0x73), 0x1D5E7 => array(0x74)
+                    ,0x1D5E8 => array(0x75), 0x1D5E9 => array(0x76), 0x1D5EA => array(0x77)
+                    ,0x1D5EB => array(0x78), 0x1D5EC => array(0x79), 0x1D5ED => array(0x7A)
+                    ,0x1D608 => array(0x61), 0x1D609 => array(0x62) ,0x1D60A => array(0x63)
+                    ,0x1D60B => array(0x64), 0x1D60C => array(0x65), 0x1D60D => array(0x66)
+                    ,0x1D60E => array(0x67), 0x1D60F => array(0x68), 0x1D610 => array(0x69)
+                    ,0x1D611 => array(0x6A), 0x1D612 => array(0x6B), 0x1D613 => array(0x6C)
+                    ,0x1D614 => array(0x6D), 0x1D615 => array(0x6E), 0x1D616 => array(0x6F)
+                    ,0x1D617 => array(0x70), 0x1D618 => array(0x71), 0x1D619 => array(0x72)
+                    ,0x1D61A => array(0x73), 0x1D61B => array(0x74), 0x1D61C => array(0x75)
+                    ,0x1D61D => array(0x76), 0x1D61E => array(0x77), 0x1D61F => array(0x78)
+                    ,0x1D620 => array(0x79), 0x1D621 => array(0x7A), 0x1D63C => array(0x61)
+                    ,0x1D63D => array(0x62), 0x1D63E => array(0x63), 0x1D63F => array(0x64)
+                    ,0x1D640 => array(0x65), 0x1D641 => array(0x66), 0x1D642 => array(0x67)
+                    ,0x1D643 => array(0x68), 0x1D644 => array(0x69), 0x1D645 => array(0x6A)
+                    ,0x1D646 => array(0x6B), 0x1D647 => array(0x6C), 0x1D648 => array(0x6D)
+                    ,0x1D649 => array(0x6E), 0x1D64A => array(0x6F), 0x1D64B => array(0x70)
+                    ,0x1D64C => array(0x71), 0x1D64D => array(0x72), 0x1D64E => array(0x73)
+                    ,0x1D64F => array(0x74), 0x1D650 => array(0x75), 0x1D651 => array(0x76)
+                    ,0x1D652 => array(0x77), 0x1D653 => array(0x78), 0x1D654 => array(0x79)
+                    ,0x1D655 => array(0x7A), 0x1D670 => array(0x61), 0x1D671 => array(0x62)
+                    ,0x1D672 => array(0x63), 0x1D673 => array(0x64), 0x1D674 => array(0x65)
+                    ,0x1D675 => array(0x66), 0x1D676 => array(0x67), 0x1D677 => array(0x68)
+                    ,0x1D678 => array(0x69), 0x1D679 => array(0x6A), 0x1D67A => array(0x6B)
+                    ,0x1D67B => array(0x6C), 0x1D67C => array(0x6D), 0x1D67D => array(0x6E)
+                    ,0x1D67E => array(0x6F), 0x1D67F => array(0x70), 0x1D680 => array(0x71)
+                    ,0x1D681 => array(0x72), 0x1D682 => array(0x73), 0x1D683 => array(0x74)
+                    ,0x1D684 => array(0x75), 0x1D685 => array(0x76), 0x1D686 => array(0x77)
+                    ,0x1D687 => array(0x78), 0x1D688 => array(0x79), 0x1D689 => array(0x7A)
+                    ,0x1D6A8 => array(0x3B1), 0x1D6A9 => array(0x3B2), 0x1D6AA => array(0x3B3)
+                    ,0x1D6AB => array(0x3B4), 0x1D6AC => array(0x3B5), 0x1D6AD => array(0x3B6)
+                    ,0x1D6AE => array(0x3B7), 0x1D6AF => array(0x3B8), 0x1D6B0 => array(0x3B9)
+                    ,0x1D6B1 => array(0x3BA), 0x1D6B2 => array(0x3BB), 0x1D6B3 => array(0x3BC)
+                    ,0x1D6B4 => array(0x3BD), 0x1D6B5 => array(0x3BE), 0x1D6B6 => array(0x3BF)
+                    ,0x1D6B7 => array(0x3C0), 0x1D6B8 => array(0x3C1), 0x1D6B9 => array(0x3B8)
+                    ,0x1D6BA => array(0x3C3), 0x1D6BB => array(0x3C4), 0x1D6BC => array(0x3C5)
+                    ,0x1D6BD => array(0x3C6), 0x1D6BE => array(0x3C7), 0x1D6BF => array(0x3C8)
+                    ,0x1D6C0 => array(0x3C9), 0x1D6D3 => array(0x3C3), 0x1D6E2 => array(0x3B1)
+                    ,0x1D6E3 => array(0x3B2), 0x1D6E4 => array(0x3B3), 0x1D6E5 => array(0x3B4)
+                    ,0x1D6E6 => array(0x3B5), 0x1D6E7 => array(0x3B6), 0x1D6E8 => array(0x3B7)
+                    ,0x1D6E9 => array(0x3B8), 0x1D6EA => array(0x3B9), 0x1D6EB => array(0x3BA)
+                    ,0x1D6EC => array(0x3BB), 0x1D6ED => array(0x3BC), 0x1D6EE => array(0x3BD)
+                    ,0x1D6EF => array(0x3BE), 0x1D6F0 => array(0x3BF), 0x1D6F1 => array(0x3C0)
+                    ,0x1D6F2 => array(0x3C1), 0x1D6F3 => array(0x3B8) ,0x1D6F4 => array(0x3C3)
+                    ,0x1D6F5 => array(0x3C4), 0x1D6F6 => array(0x3C5), 0x1D6F7 => array(0x3C6)
+                    ,0x1D6F8 => array(0x3C7), 0x1D6F9 => array(0x3C8) ,0x1D6FA => array(0x3C9)
+                    ,0x1D70D => array(0x3C3), 0x1D71C => array(0x3B1), 0x1D71D => array(0x3B2)
+                    ,0x1D71E => array(0x3B3), 0x1D71F => array(0x3B4), 0x1D720 => array(0x3B5)
+                    ,0x1D721 => array(0x3B6), 0x1D722 => array(0x3B7), 0x1D723 => array(0x3B8)
+                    ,0x1D724 => array(0x3B9), 0x1D725 => array(0x3BA), 0x1D726 => array(0x3BB)
+                    ,0x1D727 => array(0x3BC), 0x1D728 => array(0x3BD), 0x1D729 => array(0x3BE)
+                    ,0x1D72A => array(0x3BF), 0x1D72B => array(0x3C0), 0x1D72C => array(0x3C1)
+                    ,0x1D72D => array(0x3B8), 0x1D72E => array(0x3C3), 0x1D72F => array(0x3C4)
+                    ,0x1D730 => array(0x3C5), 0x1D731 => array(0x3C6), 0x1D732 => array(0x3C7)
+                    ,0x1D733 => array(0x3C8), 0x1D734 => array(0x3C9), 0x1D747 => array(0x3C3)
+                    ,0x1D756 => array(0x3B1), 0x1D757 => array(0x3B2), 0x1D758 => array(0x3B3)
+                    ,0x1D759 => array(0x3B4), 0x1D75A => array(0x3B5), 0x1D75B => array(0x3B6)
+                    ,0x1D75C => array(0x3B7), 0x1D75D => array(0x3B8), 0x1D75E => array(0x3B9)
+                    ,0x1D75F => array(0x3BA), 0x1D760 => array(0x3BB), 0x1D761 => array(0x3BC)
+                    ,0x1D762 => array(0x3BD), 0x1D763 => array(0x3BE), 0x1D764 => array(0x3BF)
+                    ,0x1D765 => array(0x3C0), 0x1D766 => array(0x3C1), 0x1D767 => array(0x3B8)
+                    ,0x1D768 => array(0x3C3), 0x1D769 => array(0x3C4), 0x1D76A => array(0x3C5)
+                    ,0x1D76B => array(0x3C6), 0x1D76C => array(0x3C7), 0x1D76D => array(0x3C8)
+                    ,0x1D76E => array(0x3C9), 0x1D781 => array(0x3C3), 0x1D790 => array(0x3B1)
+                    ,0x1D791 => array(0x3B2), 0x1D792 => array(0x3B3), 0x1D793 => array(0x3B4)
+                    ,0x1D794 => array(0x3B5), 0x1D795 => array(0x3B6), 0x1D796 => array(0x3B7)
+                    ,0x1D797 => array(0x3B8), 0x1D798 => array(0x3B9), 0x1D799 => array(0x3BA)
+                    ,0x1D79A => array(0x3BB), 0x1D79B => array(0x3BC), 0x1D79C => array(0x3BD)
+                    ,0x1D79D => array(0x3BE), 0x1D79E => array(0x3BF), 0x1D79F => array(0x3C0)
+                    ,0x1D7A0 => array(0x3C1), 0x1D7A1 => array(0x3B8), 0x1D7A2 => array(0x3C3)
+                    ,0x1D7A3 => array(0x3C4), 0x1D7A4 => array(0x3C5), 0x1D7A5 => array(0x3C6)
+                    ,0x1D7A6 => array(0x3C7), 0x1D7A7 => array(0x3C8), 0x1D7A8 => array(0x3C9)
+                    ,0x1D7BB => array(0x3C3), 0x3F9   => array(0x3C3), 0x1D2C  => array(0x61)
+                    ,0x1D2D  => array(0xE6), 0x1D2E  => array(0x62), 0x1D30  => array(0x64)
+                    ,0x1D31  => array(0x65), 0x1D32  => array(0x1DD), 0x1D33  => array(0x67)
+                    ,0x1D34  => array(0x68), 0x1D35  => array(0x69), 0x1D36  => array(0x6A)
+                    ,0x1D37  => array(0x6B), 0x1D38  => array(0x6C), 0x1D39  => array(0x6D)
+                    ,0x1D3A  => array(0x6E), 0x1D3C  => array(0x6F), 0x1D3D  => array(0x223)
+                    ,0x1D3E  => array(0x70), 0x1D3F  => array(0x72), 0x1D40  => array(0x74)
+                    ,0x1D41  => array(0x75), 0x1D42  => array(0x77), 0x213B  => array(0x66, 0x61, 0x78)
+                    ,0x3250  => array(0x70, 0x74, 0x65), 0x32CC  => array(0x68, 0x67)
+                    ,0x32CE  => array(0x65, 0x76), 0x32CF  => array(0x6C, 0x74, 0x64)
+                    ,0x337A  => array(0x69, 0x75), 0x33DE  => array(0x76, 0x2215, 0x6D)
+                    ,0x33DF  => array(0x61, 0x2215, 0x6D)
+                    )
+            ,'norm_combcls' => array(0x334   => 1,   0x335   => 1,   0x336   => 1,   0x337   => 1
+                    ,0x338   => 1,   0x93C   => 7,   0x9BC   => 7,   0xA3C   => 7,   0xABC   => 7
+                    ,0xB3C   => 7,   0xCBC   => 7,   0x1037  => 7,   0x3099  => 8,   0x309A  => 8
+                    ,0x94D   => 9,   0x9CD   => 9,   0xA4D   => 9,   0xACD   => 9,   0xB4D   => 9
+                    ,0xBCD   => 9,   0xC4D   => 9,   0xCCD   => 9,   0xD4D   => 9,   0xDCA   => 9
+                    ,0xE3A   => 9,   0xF84   => 9,   0x1039  => 9,   0x1714  => 9,   0x1734  => 9
+                    ,0x17D2  => 9,   0x5B0   => 10,  0x5B1   => 11,  0x5B2   => 12,  0x5B3   => 13
+                    ,0x5B4   => 14,  0x5B5   => 15,  0x5B6   => 16,  0x5B7   => 17,  0x5B8   => 18
+                    ,0x5B9   => 19,  0x5BB   => 20,  0x5Bc   => 21,  0x5BD   => 22,  0x5BF   => 23
+                    ,0x5C1   => 24,  0x5C2   => 25,  0xFB1E  => 26,  0x64B   => 27,  0x64C   => 28
+                    ,0x64D   => 29,  0x64E   => 30,  0x64F   => 31,  0x650   => 32,  0x651   => 33
+                    ,0x652   => 34,  0x670   => 35,  0x711   => 36,  0xC55   => 84,  0xC56   => 91
+                    ,0xE38   => 103, 0xE39   => 103, 0xE48   => 107, 0xE49   => 107, 0xE4A   => 107
+                    ,0xE4B   => 107, 0xEB8   => 118, 0xEB9   => 118, 0xEC8   => 122, 0xEC9   => 122
+                    ,0xECA   => 122, 0xECB   => 122, 0xF71   => 129, 0xF72   => 130, 0xF7A   => 130
+                    ,0xF7B   => 130, 0xF7C   => 130, 0xF7D   => 130, 0xF80   => 130, 0xF74   => 132
+                    ,0x321   => 202, 0x322   => 202, 0x327   => 202, 0x328   => 202, 0x31B   => 216
+                    ,0xF39   => 216, 0x1D165 => 216, 0x1D166 => 216, 0x1D16E => 216, 0x1D16F => 216
+                    ,0x1D170 => 216, 0x1D171 => 216, 0x1D172 => 216, 0x302A  => 218, 0x316   => 220
+                    ,0x317   => 220, 0x318   => 220, 0x319   => 220, 0x31C   => 220, 0x31D   => 220
+                    ,0x31E   => 220, 0x31F   => 220, 0x320   => 220, 0x323   => 220, 0x324   => 220
+                    ,0x325   => 220, 0x326   => 220, 0x329   => 220, 0x32A   => 220, 0x32B   => 220
+                    ,0x32C   => 220, 0x32D   => 220, 0x32E   => 220, 0x32F   => 220, 0x330   => 220
+                    ,0x331   => 220, 0x332   => 220, 0x333   => 220, 0x339   => 220, 0x33A   => 220
+                    ,0x33B   => 220, 0x33C   => 220, 0x347   => 220, 0x348   => 220, 0x349   => 220
+                    ,0x34D   => 220, 0x34E   => 220, 0x353   => 220, 0x354   => 220, 0x355   => 220
+                    ,0x356   => 220, 0x591   => 220, 0x596   => 220, 0x59B   => 220, 0x5A3   => 220
+                    ,0x5A4   => 220, 0x5A5   => 220, 0x5A6   => 220, 0x5A7   => 220, 0x5AA   => 220
+                    ,0x655   => 220, 0x656   => 220, 0x6E3   => 220, 0x6EA   => 220, 0x6ED   => 220
+                    ,0x731   => 220, 0x734   => 220, 0x737   => 220, 0x738   => 220, 0x739   => 220
+                    ,0x73B   => 220, 0x73C   => 220, 0x73E   => 220, 0x742   => 220, 0x744   => 220
+                    ,0x746   => 220, 0x748   => 220, 0x952   => 220, 0xF18   => 220, 0xF19   => 220
+                    ,0xF35   => 220, 0xF37   => 220, 0xFC6   => 220, 0x193B  => 220, 0x20E8  => 220
+                    ,0x1D17B => 220, 0x1D17C => 220, 0x1D17D => 220, 0x1D17E => 220, 0x1D17F => 220
+                    ,0x1D180 => 220, 0x1D181 => 220, 0x1D182 => 220, 0x1D18A => 220, 0x1D18B => 220
+                    ,0x59A   => 222, 0x5AD   => 222, 0x1929  => 222, 0x302D  => 222, 0x302E  => 224
+                    ,0x302F  => 224, 0x1D16D => 226, 0x5AE   => 228, 0x18A9  => 228, 0x302B  => 228
+                    ,0x300   => 230, 0x301   => 230, 0x302   => 230, 0x303   => 230, 0x304   => 230
+                    ,0x305   => 230, 0x306   => 230, 0x307   => 230, 0x308   => 230, 0x309   => 230
+                    ,0x30A   => 230, 0x30B   => 230, 0x30C   => 230, 0x30D   => 230, 0x30E   => 230
+                    ,0x30F   => 230, 0x310   => 230, 0x311   => 230, 0x312   => 230, 0x313   => 230
+                    ,0x314   => 230, 0x33D   => 230, 0x33E   => 230, 0x33F   => 230, 0x340   => 230
+                    ,0x341   => 230, 0x342   => 230, 0x343   => 230, 0x344   => 230, 0x346   => 230
+                    ,0x34A   => 230, 0x34B   => 230, 0x34C   => 230, 0x350   => 230, 0x351   => 230
+                    ,0x352   => 230, 0x357   => 230, 0x363   => 230, 0x364   => 230, 0x365   => 230
+                    ,0x366   => 230, 0x367   => 230, 0x368   => 230, 0x369   => 230, 0x36A   => 230
+                    ,0x36B   => 230, 0x36C   => 230, 0x36D   => 230, 0x36E   => 230, 0x36F   => 230
+                    ,0x483   => 230, 0x484   => 230, 0x485   => 230, 0x486   => 230, 0x592   => 230
+                    ,0x593   => 230, 0x594   => 230, 0x595   => 230, 0x597   => 230, 0x598   => 230
+                    ,0x599   => 230, 0x59C   => 230, 0x59D   => 230, 0x59E   => 230, 0x59F   => 230
+                    ,0x5A0   => 230, 0x5A1   => 230, 0x5A8   => 230, 0x5A9   => 230, 0x5AB   => 230
+                    ,0x5AC   => 230, 0x5AF   => 230, 0x5C4   => 230, 0x610   => 230, 0x611   => 230
+                    ,0x612   => 230, 0x613   => 230, 0x614   => 230, 0x615   => 230, 0x653   => 230
+                    ,0x654   => 230, 0x657   => 230, 0x658   => 230, 0x6D6   => 230, 0x6D7   => 230
+                    ,0x6D8   => 230, 0x6D9   => 230, 0x6DA   => 230, 0x6DB   => 230, 0x6DC   => 230
+                    ,0x6DF   => 230, 0x6E0   => 230, 0x6E1   => 230, 0x6E2   => 230, 0x6E4   => 230
+                    ,0x6E7   => 230, 0x6E8   => 230, 0x6EB   => 230, 0x6EC   => 230, 0x730   => 230
+                    ,0x732   => 230, 0x733   => 230, 0x735   => 230, 0x736   => 230, 0x73A   => 230
+                    ,0x73D   => 230, 0x73F   => 230, 0x740   => 230, 0x741   => 230, 0x743   => 230
+                    ,0x745   => 230, 0x747   => 230, 0x749   => 230, 0x74A   => 230, 0x951   => 230
+                    ,0x953   => 230, 0x954   => 230, 0xF82   => 230, 0xF83   => 230, 0xF86   => 230
+                    ,0xF87   => 230, 0x170D  => 230, 0x193A  => 230, 0x20D0  => 230, 0x20D1  => 230
+                    ,0x20D4  => 230, 0x20D5  => 230, 0x20D6  => 230, 0x20D7  => 230, 0x20DB  => 230
+                    ,0x20DC  => 230, 0x20E1  => 230, 0x20E7  => 230, 0x20E9  => 230, 0xFE20  => 230
+                    ,0xFE21  => 230, 0xFE22  => 230, 0xFE23  => 230, 0x1D185 => 230, 0x1D186 => 230
+                    ,0x1D187 => 230, 0x1D189 => 230, 0x1D188 => 230, 0x1D1AA => 230, 0x1D1AB => 230
+                    ,0x1D1AC => 230, 0x1D1AD => 230, 0x315   => 232, 0x31A   => 232, 0x302C  => 232
+                    ,0x35F   => 233, 0x362   => 233, 0x35D   => 234, 0x35E   => 234, 0x360   => 234
+                    ,0x361   => 234, 0x345   => 240
+                    )
+            );
+}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/idna_convert/idna_convert.class.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/idna_convert/ReadMe.txt
===================================================================
--- tags/2.8.3/wb/include/idna_convert/ReadMe.txt	(nonexistent)
+++ tags/2.8.3/wb/include/idna_convert/ReadMe.txt	(revision 1610)
@@ -0,0 +1,188 @@
+*******************************************************************************
+*                                                                             *
+*                    IDNA Convert (idna_convert.class.php)                    *
+*                                                                             *
+* http://idnaconv.phlymail.de                     mailto:phlymail@phlylabs.de *
+*******************************************************************************
+* (c) 2004-2010 phlyLabs, Berlin                                              *
+* This file is encoded in UTF-8                                               *
+*******************************************************************************
+
+Introduction
+------------
+
+The class idna_convert allows to convert internationalized domain names
+(see RFC 3490, 3491, 3492 and 3454 for detials) as they can be used with various
+registries worldwide to be translated between their original (localized) form
+and their encoded form as it will be used in the DNS (Domain Name System).
+
+The class provides two public methods, encode() and decode(), which do exactly
+what you would expect them to do. You are allowed to use complete domain names,
+simple strings and complete email addresses as well. That means, that you might
+use any of the following notations:
+
+- www.nrgler.com
+- xn--nrgler-wxa
+- xn--brse-5qa.xn--knrz-1ra.info
+
+Errors, incorrectly encoded or invalid strings will lead to either a FALSE
+response (when in strict mode) or to only partially converted strings.
+You can query the occured error by calling the method get_last_error().
+
+Unicode strings are expected to be either UTF-8 strings, UCS-4 strings or UCS-4
+arrays. The default format is UTF-8. For setting different encodings, you can
+call the method setParams() - please see the inline documentation for details.
+ACE strings (the Punycode form) are always 7bit ASCII strings.
+
+ATTENTION: As of version 0.6.0 this class is written in the OOP style of PHP5.
+Since PHP4 is no longer actively maintained, you should switch to PHP5 as fast as
+possible.
+We expect to see no compatibility issues with the upcoming PHP6, too.
+
+ATTENTION: BC break! As of version 0.6.4 the class per default allows the German
+ligature  to be encoded as the DeNIC, the registry for .DE allows domains
+containing .
+In older builds "" was mapped to "ss". Should you still need this behaviour,
+see example 5 below.
+
+
+Files
+-----
+idna_convert.class.php         - The actual class
+example.php                    - An example web page for converting
+transcode_wrapper.php          - Convert various encodings, see below
+uctc.php                       - phlyLabs' Unicode Transcoder, see below
+ReadMe.txt                     - This file
+LICENCE                        - The LGPL licence file
+
+The class is contained in idna_convert.class.php.
+
+
+Examples
+--------
+1. Say we wish to encode the domain name nrgler.com:
+
+// Include the class
+require_once('idna_convert.class.php');
+// Instantiate it
+$IDN = new idna_convert();
+// The input string, if input is not UTF-8 or UCS-4, it must be converted before
+$input = utf8_encode('nrgler.com');
+// Encode it to its punycode presentation
+$output = $IDN->encode($input);
+// Output, what we got now
+echo $output; // This will read: xn--nrgler-wxa.com
+
+
+2. We received an email from a punycoded domain and are willing to learn, how
+   the domain name reads originally
+
+// Include the class
+require_once('idna_convert.class.php');
+// Instantiate it
+$IDN = new idna_convert();
+// The input string
+$input = 'andre@xn--brse-5qa.xn--knrz-1ra.info';
+// Encode it to its punycode presentation
+$output = $IDN->decode($input);
+// Output, what we got now, if output should be in a format different to UTF-8
+// or UCS-4, you will have to convert it before outputting it
+echo utf8_decode($output); // This will read: andre@brse.knrz.info
+
+
+3. The input is read from a UCS-4 coded file and encoded line by line. By
+   appending the optional second parameter we tell enode() about the input
+   format to be used
+
+// Include the class
+require_once('idna_convert.class.php');
+// Instantiate it
+$IDN = new dinca_convert();
+// Iterate through the input file line by line
+foreach (file('ucs4-domains.txt') as $line) {
+    echo $IDN->encode(trim($line), 'ucs4_string');
+    echo "\n";
+}
+
+
+4. We wish to convert a whole URI into the IDNA form, but leave the path or
+   query string component of it alone. Just using encode() would lead to mangled
+   paths or query strings. Here the public method encode_uri() comes into play:
+
+// Include the class
+require_once('idna_convert.class.php');
+// Instantiate it
+$IDN = new idna_convert();
+// The input string, a whole URI in UTF-8 (!)
+$input = 'http://nrgler:secret@nrgler.com/my_pth_is_not_SCII/');
+// Encode it to its punycode presentation
+$output = $IDN->encode_uri($input);
+// Output, what we got now
+echo $output; // http://nrgler:secret@xn--nrgler-wxa.com/my_pth_is_not_SCII/
+
+
+5. Since per default this class does no longer map "" to "ss", we wish to enforce
+   the mapping anyway. Thus we need to pass a parameter to the constructor:
+
+// Include the class
+require_once('idna_convert.class.php');
+// Instantiate it
+$IDN = new idna_convert(array('encode_german_sz' => false));
+// Sth. containing the German letter 
+$input = 'meine-strae.de');
+// Encode it to its punycode presentation
+$output = $IDN->encode_uri($input);
+// Output, what we got now
+echo $output; // meine-strasse.de
+
+
+
+Transcode wrapper
+-----------------
+In case you have strings in different encoding than ISO-8859-1 and UTF-8 you might need to
+translate these strings to UTF-8 before feeding the IDNA converter with it.
+PHP's built in functions utf8_encode() and utf8_decode() can only deal with ISO-8859-1.
+Use the file transcode_wrapper.php for the conversion. It requires either iconv, libiconv
+or mbstring installed together with one of the relevant PHP extensions.
+The functions you will find useful are
+encode_utf8() as a replacement for utf8_encode() and
+decode_utf8() as a replacement for utf8_decode().
+
+Example usage:
+<?php
+require_once('idna_convert.class.php');
+require_once('transcode_wrapper.php');
+$mystring = '<something in e.g. ISO-8859-15';
+$mystring = encode_utf8($mystring, 'ISO-8859-15');
+echo $IDN->encode($mystring);
+?>
+
+
+UCTC - Unicode Transcoder
+-------------------------
+Another class you might find useful when dealing with one or more of the Unicode encoding
+flavours. The class is static, it requires PHP5. It can transcode into each other:
+- UCS-4 string / array
+- UTF-8
+- UTF-7
+- UTF-7 IMAP (modified UTF-7)
+All encodings expect / return a string in the given format, with one major exception:
+UCS-4 array is jsut an array, where each value represents one codepoint in the string, i.e.
+every value is a 32bit integer value.
+
+Example usage:
+<?php
+require_once('uctc.php');
+$mystring = 'nrgler.com';
+echo uctc::convert($mystring, 'utf8', 'utf7imap');
+?>
+
+
+Contact us
+----------
+In case of errors, bugs, questions, wishes, please don't hesitate to contact us
+under the email address above.
+
+The team of phlyLabs
+http://phlylabs.de
+mailto:phlymail@phlylabs.de
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/idna_convert/ReadMe.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection_core.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection_core.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection_core.js	(revision 1610)
@@ -0,0 +1,957 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The Connection Manager provides a simplified interface to the XMLHttpRequest
+ * object.  It handles cross-browser instantiantion of XMLHttpRequest, negotiates the
+ * interactive states and server response, returning the results to a pre-defined
+ * callback you create.
+ *
+ * @namespace YAHOO.util
+ * @module connection
+ * @requires yahoo
+ * @requires event
+ */
+
+/**
+ * The Connection Manager singleton provides methods for creating and managing
+ * asynchronous transactions.
+ *
+ * @class Connect
+ */
+
+YAHOO.util.Connect =
+{
+  /**
+  * @description Array of MSFT ActiveX ids for XMLHttpRequest.
+  * @property _msxml_progid
+  * @private
+  * @static
+  * @type array
+   */
+	_msxml_progid:[
+		'Microsoft.XMLHTTP',
+		'MSXML2.XMLHTTP.3.0',
+		'MSXML2.XMLHTTP'
+		],
+
+  /**
+  * @description Object literal of HTTP header(s)
+  * @property _http_header
+  * @private
+  * @static
+  * @type object
+   */
+	_http_headers:{},
+
+  /**
+  * @description Determines if HTTP headers are set.
+  * @property _has_http_headers
+  * @private
+  * @static
+  * @type boolean
+   */
+	_has_http_headers:false,
+
+ /**
+ * @description Determines if a default header of
+  * Content-Type of 'application/x-www-form-urlencoded'
+  * will be added to any client HTTP headers sent for POST
+  * transactions.
+ * @property _use_default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_post_header:true,
+
+ /**
+ * @description The default header used for POST transactions.
+ * @property _default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_post_header:'application/x-www-form-urlencoded; charset=UTF-8',
+
+ /**
+ * @description The default header used for transactions involving the
+  * use of HTML forms.
+ * @property _default_form_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_form_header:'application/x-www-form-urlencoded',
+
+ /**
+ * @description Determines if a default header of
+  * 'X-Requested-With: XMLHttpRequest'
+  * will be added to each transaction.
+ * @property _use_default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_xhr_header:true,
+
+ /**
+ * @description The default header value for the label
+  * "X-Requested-With".  This is sent with each
+  * transaction, by default, to identify the
+  * request as being made by YUI Connection Manager.
+ * @property _default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_xhr_header:'XMLHttpRequest',
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _has_default_headers:true,
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_headers:{},
+
+ /**
+ * @description Collection of polling references to the polling mechanism in handleReadyState.
+ * @property _poll
+ * @private
+ * @static
+ * @type object
+  */
+    _poll:{},
+
+ /**
+ * @description Queue of timeout values for each transaction callback with a defined timeout value.
+ * @property _timeOut
+ * @private
+ * @static
+ * @type object
+  */
+    _timeOut:{},
+
+  /**
+  * @description The polling frequency, in milliseconds, for HandleReadyState.
+   * when attempting to determine a transaction's XHR readyState.
+   * The default is 50 milliseconds.
+  * @property _polling_interval
+  * @private
+  * @static
+  * @type int
+   */
+     _polling_interval:50,
+
+  /**
+  * @description A transaction counter that increments the transaction id for each transaction.
+  * @property _transaction_id
+  * @private
+  * @static
+  * @type int
+   */
+     _transaction_id:0,
+
+  /**
+  * @description Custom event that fires at the start of a transaction
+  * @property startEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	startEvent: new YAHOO.util.CustomEvent('start'),
+
+  /**
+  * @description Custom event that fires when a transaction response has completed.
+  * @property completeEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	completeEvent: new YAHOO.util.CustomEvent('complete'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 2xx range.
+  * @property successEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	successEvent: new YAHOO.util.CustomEvent('success'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 4xx/5xx range.
+  * @property failureEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	failureEvent: new YAHOO.util.CustomEvent('failure'),
+
+  /**
+  * @description Custom event that fires when a transaction is successfully aborted.
+  * @property abortEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	abortEvent: new YAHOO.util.CustomEvent('abort'),
+
+  /**
+  * @description A reference table that maps callback custom events members to its specific
+   * event name.
+  * @property _customEvents
+  * @private
+  * @static
+  * @type object
+   */
+	_customEvents:
+	{
+		onStart:['startEvent', 'start'],
+		onComplete:['completeEvent', 'complete'],
+		onSuccess:['successEvent', 'success'],
+		onFailure:['failureEvent', 'failure'],
+		onUpload:['uploadEvent', 'upload'],
+		onAbort:['abortEvent', 'abort']
+	},
+
+  /**
+  * @description Member to add an ActiveX id to the existing xml_progid array.
+   * In the event(unlikely) a new ActiveX id is introduced, it can be added
+   * without internal code modifications.
+  * @method setProgId
+  * @public
+  * @static
+  * @param {string} id The ActiveX id to be added to initialize the XHR object.
+  * @return void
+   */
+	setProgId:function(id)
+	{
+		this._msxml_progid.unshift(id);
+	},
+
+  /**
+  * @description Member to override the default POST header.
+  * @method setDefaultPostHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultPostHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_post_header = b;
+		}
+		else if(typeof b == 'boolean'){
+			this._use_default_post_header = b;
+		}
+	},
+
+  /**
+  * @description Member to override the default transaction header..
+  * @method setDefaultXhrHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultXhrHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_xhr_header = b;
+		}
+		else{
+			this._use_default_xhr_header = b;
+		}
+	},
+
+  /**
+  * @description Member to modify the default polling interval.
+  * @method setPollingInterval
+  * @public
+  * @static
+  * @param {int} i The polling interval in milliseconds.
+  * @return void
+   */
+	setPollingInterval:function(i)
+	{
+		if(typeof i == 'number' && isFinite(i)){
+			this._polling_interval = i;
+		}
+	},
+
+  /**
+  * @description Instantiates a XMLHttpRequest object and returns an object with two properties:
+   * the XMLHttpRequest instance and the transaction id.
+  * @method createXhrObject
+  * @private
+  * @static
+  * @param {int} transactionId Property containing the transaction id for this transaction.
+  * @return object
+   */
+	createXhrObject:function(transactionId)
+	{
+		var obj,http,i;
+		try
+		{
+			// Instantiates XMLHttpRequest in non-IE browsers and assigns to http.
+			http = new XMLHttpRequest();
+			//  Object literal with http and tId properties
+			obj = { conn:http, tId:transactionId, xhr: true };
+		}
+		catch(e)
+		{
+			for(i=0; i<this._msxml_progid.length; ++i){
+				try
+				{
+					// Instantiates XMLHttpRequest for IE and assign to http
+					http = new ActiveXObject(this._msxml_progid[i]);
+					//  Object literal with conn and tId properties
+					obj = { conn:http, tId:transactionId, xhr: true };
+					break;
+				}
+				catch(e1){}
+			}
+		}
+		finally
+		{
+			return obj;
+		}
+	},
+
+  /**
+  * @description This method is called by asyncRequest to create a
+   * valid connection object for the transaction.  It also passes a
+   * transaction id and increments the transaction id counter.
+  * @method getConnectionObject
+  * @private
+  * @static
+  * @return {object}
+   */
+	getConnectionObject:function(t)
+	{
+		var o, tId = this._transaction_id;
+
+		try
+		{
+			if(!t){
+				o = this.createXhrObject(tId);
+			}
+			else{
+				o = {tId:tId};
+				if(t==='xdr'){
+					o.conn = this._transport;
+					o.xdr = true;
+				}
+				else if(t==='upload'){
+					o.upload = true;
+				}
+			}
+
+			if(o){
+				this._transaction_id++;
+			}
+		}
+		catch(e){}
+		return o;
+	},
+
+  /**
+  * @description Method for initiating an asynchronous request via the XHR object.
+  * @method asyncRequest
+  * @public
+  * @static
+  * @param {string} method HTTP transaction method
+  * @param {string} uri Fully qualified path of resource
+  * @param {callback} callback User-defined callback function or object
+  * @param {string} postData POST body
+  * @return {object} Returns the connection object
+   */
+	asyncRequest:function(method, uri, callback, postData)
+	{
+		var o,t,args = (callback && callback.argument)?callback.argument:null;
+
+		if(this._isFileUpload){
+			t = 'upload';
+		}
+		else if(callback.xdr){
+			t = 'xdr';
+		}
+
+		o = this.getConnectionObject(t);
+		if(!o){
+			return null;
+		}
+		else{
+
+			// Intialize any transaction-specific custom events, if provided.
+			if(callback && callback.customevents){
+				this.initCustomEvents(o, callback);
+			}
+
+			if(this._isFormSubmit){
+				if(this._isFileUpload){
+					this.uploadFile(o, callback, uri, postData);
+					return o;
+				}
+
+				// If the specified HTTP method is GET, setForm() will return an
+				// encoded string that is concatenated to the uri to
+				// create a querystring.
+				if(method.toUpperCase() == 'GET'){
+					if(this._sFormData.length !== 0){
+						// If the URI already contains a querystring, append an ampersand
+						// and then concatenate _sFormData to the URI.
+						uri += ((uri.indexOf('?') == -1)?'?':'&') + this._sFormData;
+					}
+				}
+				else if(method.toUpperCase() == 'POST'){
+					// If POST data exist in addition to the HTML form data,
+					// it will be concatenated to the form data.
+					postData = postData?this._sFormData + "&" + postData:this._sFormData;
+				}
+			}
+
+			if(method.toUpperCase() == 'GET' && (callback && callback.cache === false)){
+				// If callback.cache is defined and set to false, a
+				// timestamp value will be added to the querystring.
+				uri += ((uri.indexOf('?') == -1)?'?':'&') + "rnd=" + new Date().valueOf().toString();
+			}
+
+			// Each transaction will automatically include a custom header of
+			// "X-Requested-With: XMLHttpRequest" to identify the request as
+			// having originated from Connection Manager.
+			if(this._use_default_xhr_header){
+				if(!this._default_headers['X-Requested-With']){
+					this.initHeader('X-Requested-With', this._default_xhr_header, true);
+				}
+			}
+
+			//If the transaction method is POST and the POST header value is set to true
+			//or a custom value, initalize the Content-Type header to this value.
+			if((method.toUpperCase() === 'POST' && this._use_default_post_header) && this._isFormSubmit === false){
+				this.initHeader('Content-Type', this._default_post_header);
+			}
+
+			if(o.xdr){
+				this.xdr(o, method, uri, callback, postData);
+				return o;
+			}
+
+			o.conn.open(method, uri, true);
+			//Initialize all default and custom HTTP headers,
+			if(this._has_default_headers || this._has_http_headers){
+				this.setHeader(o);
+			}
+
+			this.handleReadyState(o, callback);
+			o.conn.send(postData || '');
+
+			// Reset the HTML form data and state properties as
+			// soon as the data are submitted.
+			if(this._isFormSubmit === true){
+				this.resetFormState();
+			}
+
+			// Fire global custom event -- startEvent
+			this.startEvent.fire(o, args);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, args);
+			}
+
+			return o;
+		}
+	},
+
+  /**
+  * @description This method creates and subscribes custom events,
+   * specific to each transaction
+  * @method initCustomEvents
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+	initCustomEvents:function(o, callback)
+	{
+		var prop;
+		// Enumerate through callback.customevents members and bind/subscribe
+		// events that match in the _customEvents table.
+		for(prop in callback.customevents){
+			if(this._customEvents[prop][0]){
+				// Create the custom event
+				o[this._customEvents[prop][0]] = new YAHOO.util.CustomEvent(this._customEvents[prop][1], (callback.scope)?callback.scope:null);
+
+				// Subscribe the custom event
+				o[this._customEvents[prop][0]].subscribe(callback.customevents[prop]);
+			}
+		}
+	},
+
+  /**
+  * @description This method serves as a timer that polls the XHR object's readyState
+   * property during a transaction, instead of binding a callback to the
+   * onreadystatechange event.  Upon readyState 4, handleTransactionResponse
+   * will process the response, and the timer will be cleared.
+  * @method handleReadyState
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+
+    handleReadyState:function(o, callback)
+
+    {
+		var oConn = this,
+			args = (callback && callback.argument)?callback.argument:null;
+
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		this._poll[o.tId] = window.setInterval(
+			function(){
+				if(o.conn && o.conn.readyState === 4){
+
+					// Clear the polling interval for the transaction
+					// and remove the reference from _poll.
+					window.clearInterval(oConn._poll[o.tId]);
+					delete oConn._poll[o.tId];
+
+					if(callback && callback.timeout){
+						window.clearTimeout(oConn._timeOut[o.tId]);
+						delete oConn._timeOut[o.tId];
+					}
+
+					// Fire global custom event -- completeEvent
+					oConn.completeEvent.fire(o, args);
+
+					if(o.completeEvent){
+						// Fire transaction custom event -- completeEvent
+						o.completeEvent.fire(o, args);
+					}
+
+					oConn.handleTransactionResponse(o, callback);
+				}
+			}
+		,this._polling_interval);
+    },
+
+  /**
+  * @description This method attempts to interpret the server response and
+   * determine whether the transaction was successful, or if an error or
+   * exception was encountered.
+  * @method handleTransactionResponse
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {object} callback The user-defined callback object
+  * @param {boolean} isAbort Determines if the transaction was terminated via abort().
+  * @return {void}
+   */
+    handleTransactionResponse:function(o, callback, isAbort)
+    {
+		var httpStatus, responseObject,
+			args = (callback && callback.argument)?callback.argument:null,
+			xdrS = (o.r && o.r.statusText === 'xdr:success')?true:false,
+			xdrF = (o.r && o.r.statusText === 'xdr:failure')?true:false,
+			xdrA = isAbort;
+
+		try
+		{
+			if((o.conn.status !== undefined && o.conn.status !== 0) || xdrS){
+				// XDR requests will not have HTTP status defined. The
+				// statusText property will define the response status
+				// set by the Flash transport.
+				httpStatus = o.conn.status;
+			}
+			else if(xdrF && !xdrA){
+				// Set XDR transaction failure to a status of 0, which
+				// resolves as an HTTP failure, instead of an exception.
+				httpStatus = 0;
+			}
+			else{
+				httpStatus = 13030;
+			}
+		}
+		catch(e){
+
+			 // 13030 is a custom code to indicate the condition -- in Mozilla/FF --
+			 // when the XHR object's status and statusText properties are
+			 // unavailable, and a query attempt throws an exception.
+			httpStatus = 13030;
+		}
+
+		if((httpStatus >= 200 && httpStatus < 300) || httpStatus === 1223 || xdrS){
+			responseObject = o.xdr ? o.r : this.createResponseObject(o, args);
+			if(callback && callback.success){
+				if(!callback.scope){
+					callback.success(responseObject);
+				}
+				else{
+					// If a scope property is defined, the callback will be fired from
+					// the context of the object.
+					callback.success.apply(callback.scope, [responseObject]);
+				}
+			}
+
+			// Fire global custom event -- successEvent
+			this.successEvent.fire(responseObject);
+
+			if(o.successEvent){
+				// Fire transaction custom event -- successEvent
+				o.successEvent.fire(responseObject);
+			}
+		}
+		else{
+			switch(httpStatus){
+				// The following cases are wininet.dll error codes that may be encountered.
+				case 12002: // Server timeout
+				case 12029: // 12029 to 12031 correspond to dropped connections.
+				case 12030:
+				case 12031:
+				case 12152: // Connection closed by server.
+				case 13030: // See above comments for variable status.
+					// XDR transactions will not resolve to this case, since the
+					// response object is already built in the xdr response.
+					responseObject = this.createExceptionObject(o.tId, args, (isAbort?isAbort:false));
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+						}
+					}
+
+					break;
+				default:
+					responseObject = (o.xdr) ? o.response : this.createResponseObject(o, args);
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+						}
+					}
+			}
+
+			// Fire global custom event -- failureEvent
+			this.failureEvent.fire(responseObject);
+
+			if(o.failureEvent){
+				// Fire transaction custom event -- failureEvent
+				o.failureEvent.fire(responseObject);
+			}
+
+		}
+
+		this.releaseObject(o);
+		responseObject = null;
+    },
+
+  /**
+  * @description This method evaluates the server response, creates and returns the results via
+   * its properties.  Success and failure cases will differ in the response
+   * object's property values.
+  * @method createResponseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @return {object}
+   */
+    createResponseObject:function(o, callbackArg)
+    {
+		var obj = {}, headerObj = {},
+			i, headerStr, header, delimitPos;
+
+		try
+		{
+			headerStr = o.conn.getAllResponseHeaders();
+			header = headerStr.split('\n');
+			for(i=0; i<header.length; i++){
+				delimitPos = header[i].indexOf(':');
+				if(delimitPos != -1){
+					headerObj[header[i].substring(0,delimitPos)] = YAHOO.lang.trim(header[i].substring(delimitPos+2));
+				}
+			}
+		}
+		catch(e){}
+
+		obj.tId = o.tId;
+		// Normalize IE's response to HTTP 204 when Win error 1223.
+		obj.status = (o.conn.status == 1223)?204:o.conn.status;
+		// Normalize IE's statusText to "No Content" instead of "Unknown".
+		obj.statusText = (o.conn.status == 1223)?"No Content":o.conn.statusText;
+		obj.getResponseHeader = headerObj;
+		obj.getAllResponseHeaders = headerStr;
+		obj.responseText = o.conn.responseText;
+		obj.responseXML = o.conn.responseXML;
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description If a transaction cannot be completed due to dropped or closed connections,
+   * there may be not be enough information to build a full response object.
+   * The failure callback will be fired and this specific condition can be identified
+   * by a status property value of 0.
+   *
+   * If an abort was successful, the status property will report a value of -1.
+   *
+  * @method createExceptionObject
+  * @private
+  * @static
+  * @param {int} tId The Transaction Id
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @param {boolean} isAbort Determines if the exception case is caused by a transaction abort
+  * @return {object}
+   */
+    createExceptionObject:function(tId, callbackArg, isAbort)
+    {
+		var COMM_CODE = 0,
+			COMM_ERROR = 'communication failure',
+			ABORT_CODE = -1,
+			ABORT_ERROR = 'transaction aborted',
+			obj = {};
+
+		obj.tId = tId;
+		if(isAbort){
+			obj.status = ABORT_CODE;
+			obj.statusText = ABORT_ERROR;
+		}
+		else{
+			obj.status = COMM_CODE;
+			obj.statusText = COMM_ERROR;
+		}
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description Method that initializes the custom HTTP headers for the each transaction.
+  * @method initHeader
+  * @public
+  * @static
+  * @param {string} label The HTTP header label
+  * @param {string} value The HTTP header value
+  * @param {string} isDefault Determines if the specific header is a default header
+   * automatically sent with each transaction.
+  * @return {void}
+   */
+	initHeader:function(label, value, isDefault)
+	{
+		var headerObj = (isDefault)?this._default_headers:this._http_headers;
+
+		headerObj[label] = value;
+		if(isDefault){
+			this._has_default_headers = true;
+		}
+		else{
+			this._has_http_headers = true;
+		}
+	},
+
+
+  /**
+  * @description Accessor that sets the HTTP headers for each transaction.
+  * @method setHeader
+  * @private
+  * @static
+  * @param {object} o The connection object for the transaction.
+  * @return {void}
+   */
+	setHeader:function(o)
+	{
+		var prop;
+		if(this._has_default_headers){
+			for(prop in this._default_headers){
+				if(YAHOO.lang.hasOwnProperty(this._default_headers, prop)){
+					o.conn.setRequestHeader(prop, this._default_headers[prop]);
+				}
+			}
+		}
+
+		if(this._has_http_headers){
+			for(prop in this._http_headers){
+				if(YAHOO.lang.hasOwnProperty(this._http_headers, prop)){
+					o.conn.setRequestHeader(prop, this._http_headers[prop]);
+				}
+			}
+
+			this._http_headers = {};
+			this._has_http_headers = false;
+		}
+	},
+
+  /**
+  * @description Resets the default HTTP headers object
+  * @method resetDefaultHeaders
+  * @public
+  * @static
+  * @return {void}
+   */
+	resetDefaultHeaders:function(){
+		this._default_headers = {};
+		this._has_default_headers = false;
+	},
+
+  /**
+  * @description Method to terminate a transaction, if it has not reached readyState 4.
+  * @method abort
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest.
+  * @param {object} callback  User-defined callback object.
+  * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout.
+  * @return {boolean}
+   */
+	abort:function(o, callback, isTimeout)
+	{
+		var abortStatus,
+			args = (callback && callback.argument)?callback.argument:null;
+			o = o || {};
+
+		if(o.conn){
+			if(o.xhr){
+				if(this.isCallInProgress(o)){
+					// Issue abort request
+					o.conn.abort();
+
+					window.clearInterval(this._poll[o.tId]);
+					delete this._poll[o.tId];
+
+					if(isTimeout){
+						window.clearTimeout(this._timeOut[o.tId]);
+						delete this._timeOut[o.tId];
+					}
+
+					abortStatus = true;
+				}
+			}
+			else if(o.xdr){
+				o.conn.abort(o.tId);
+				abortStatus = true;
+			}
+		}
+		else if(o.upload){
+			var frameId = 'yuiIO' + o.tId;
+			var io = document.getElementById(frameId);
+
+			if(io){
+				// Remove all listeners on the iframe prior to
+				// its destruction.
+				YAHOO.util.Event.removeListener(io, "load");
+				// Destroy the iframe facilitating the transaction.
+				document.body.removeChild(io);
+
+				if(isTimeout){
+					window.clearTimeout(this._timeOut[o.tId]);
+					delete this._timeOut[o.tId];
+				}
+
+				abortStatus = true;
+			}
+		}
+		else{
+			abortStatus = false;
+		}
+
+		if(abortStatus === true){
+			// Fire global custom event -- abortEvent
+			this.abortEvent.fire(o, args);
+
+			if(o.abortEvent){
+				// Fire transaction custom event -- abortEvent
+				o.abortEvent.fire(o, args);
+			}
+
+			this.handleTransactionResponse(o, callback, true);
+		}
+
+		return abortStatus;
+	},
+
+  /**
+  * @description Determines if the transaction is still being processed.
+  * @method isCallInProgress
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest
+  * @return {boolean}
+   */
+	isCallInProgress:function(o)
+	{
+		o = o || {};
+		// if the XHR object assigned to the transaction has not been dereferenced,
+		// then check its readyState status.  Otherwise, return false.
+		if(o.xhr && o.conn){
+			return o.conn.readyState !== 4 && o.conn.readyState !== 0;
+		}
+		else if(o.xdr && o.conn){
+			return o.conn.isCallInProgress(o.tId);
+		}
+		else if(o.upload === true){
+			return document.getElementById('yuiIO' + o.tId)?true:false;
+		}
+		else{
+			return false;
+		}
+	},
+
+  /**
+  * @description Dereference the XHR instance and the connection object after the transaction is completed.
+  * @method releaseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @return {void}
+   */
+	releaseObject:function(o)
+	{
+		if(o && o.conn){
+			//dereference the XHR instance.
+			o.conn = null;
+
+
+			//dereference the connection object.
+			o = null;
+		}
+	}
+};
+
+YAHOO.register("connection_core", YAHOO.util.Connect, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/connection/connection_core.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection_core-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection_core-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection_core-debug.js	(revision 1610)
@@ -0,0 +1,980 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The Connection Manager provides a simplified interface to the XMLHttpRequest
+ * object.  It handles cross-browser instantiantion of XMLHttpRequest, negotiates the
+ * interactive states and server response, returning the results to a pre-defined
+ * callback you create.
+ *
+ * @namespace YAHOO.util
+ * @module connection
+ * @requires yahoo
+ * @requires event
+ */
+
+/**
+ * The Connection Manager singleton provides methods for creating and managing
+ * asynchronous transactions.
+ *
+ * @class Connect
+ */
+
+YAHOO.util.Connect =
+{
+  /**
+  * @description Array of MSFT ActiveX ids for XMLHttpRequest.
+  * @property _msxml_progid
+  * @private
+  * @static
+  * @type array
+   */
+	_msxml_progid:[
+		'Microsoft.XMLHTTP',
+		'MSXML2.XMLHTTP.3.0',
+		'MSXML2.XMLHTTP'
+		],
+
+  /**
+  * @description Object literal of HTTP header(s)
+  * @property _http_header
+  * @private
+  * @static
+  * @type object
+   */
+	_http_headers:{},
+
+  /**
+  * @description Determines if HTTP headers are set.
+  * @property _has_http_headers
+  * @private
+  * @static
+  * @type boolean
+   */
+	_has_http_headers:false,
+
+ /**
+ * @description Determines if a default header of
+  * Content-Type of 'application/x-www-form-urlencoded'
+  * will be added to any client HTTP headers sent for POST
+  * transactions.
+ * @property _use_default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_post_header:true,
+
+ /**
+ * @description The default header used for POST transactions.
+ * @property _default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_post_header:'application/x-www-form-urlencoded; charset=UTF-8',
+
+ /**
+ * @description The default header used for transactions involving the
+  * use of HTML forms.
+ * @property _default_form_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_form_header:'application/x-www-form-urlencoded',
+
+ /**
+ * @description Determines if a default header of
+  * 'X-Requested-With: XMLHttpRequest'
+  * will be added to each transaction.
+ * @property _use_default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_xhr_header:true,
+
+ /**
+ * @description The default header value for the label
+  * "X-Requested-With".  This is sent with each
+  * transaction, by default, to identify the
+  * request as being made by YUI Connection Manager.
+ * @property _default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_xhr_header:'XMLHttpRequest',
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _has_default_headers:true,
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_headers:{},
+
+ /**
+ * @description Collection of polling references to the polling mechanism in handleReadyState.
+ * @property _poll
+ * @private
+ * @static
+ * @type object
+  */
+    _poll:{},
+
+ /**
+ * @description Queue of timeout values for each transaction callback with a defined timeout value.
+ * @property _timeOut
+ * @private
+ * @static
+ * @type object
+  */
+    _timeOut:{},
+
+  /**
+  * @description The polling frequency, in milliseconds, for HandleReadyState.
+   * when attempting to determine a transaction's XHR readyState.
+   * The default is 50 milliseconds.
+  * @property _polling_interval
+  * @private
+  * @static
+  * @type int
+   */
+     _polling_interval:50,
+
+  /**
+  * @description A transaction counter that increments the transaction id for each transaction.
+  * @property _transaction_id
+  * @private
+  * @static
+  * @type int
+   */
+     _transaction_id:0,
+
+  /**
+  * @description Custom event that fires at the start of a transaction
+  * @property startEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	startEvent: new YAHOO.util.CustomEvent('start'),
+
+  /**
+  * @description Custom event that fires when a transaction response has completed.
+  * @property completeEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	completeEvent: new YAHOO.util.CustomEvent('complete'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 2xx range.
+  * @property successEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	successEvent: new YAHOO.util.CustomEvent('success'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 4xx/5xx range.
+  * @property failureEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	failureEvent: new YAHOO.util.CustomEvent('failure'),
+
+  /**
+  * @description Custom event that fires when a transaction is successfully aborted.
+  * @property abortEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	abortEvent: new YAHOO.util.CustomEvent('abort'),
+
+  /**
+  * @description A reference table that maps callback custom events members to its specific
+   * event name.
+  * @property _customEvents
+  * @private
+  * @static
+  * @type object
+   */
+	_customEvents:
+	{
+		onStart:['startEvent', 'start'],
+		onComplete:['completeEvent', 'complete'],
+		onSuccess:['successEvent', 'success'],
+		onFailure:['failureEvent', 'failure'],
+		onUpload:['uploadEvent', 'upload'],
+		onAbort:['abortEvent', 'abort']
+	},
+
+  /**
+  * @description Member to add an ActiveX id to the existing xml_progid array.
+   * In the event(unlikely) a new ActiveX id is introduced, it can be added
+   * without internal code modifications.
+  * @method setProgId
+  * @public
+  * @static
+  * @param {string} id The ActiveX id to be added to initialize the XHR object.
+  * @return void
+   */
+	setProgId:function(id)
+	{
+		this._msxml_progid.unshift(id);
+		YAHOO.log('ActiveX Program Id  ' + id + ' added to _msxml_progid.', 'info', 'Connection');
+	},
+
+  /**
+  * @description Member to override the default POST header.
+  * @method setDefaultPostHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultPostHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_post_header = b;
+			YAHOO.log('Default POST header set to  ' + b, 'info', 'Connection');
+		}
+		else if(typeof b == 'boolean'){
+			this._use_default_post_header = b;
+		}
+	},
+
+  /**
+  * @description Member to override the default transaction header..
+  * @method setDefaultXhrHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultXhrHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_xhr_header = b;
+			YAHOO.log('Default XHR header set to  ' + b, 'info', 'Connection');
+		}
+		else{
+			this._use_default_xhr_header = b;
+		}
+	},
+
+  /**
+  * @description Member to modify the default polling interval.
+  * @method setPollingInterval
+  * @public
+  * @static
+  * @param {int} i The polling interval in milliseconds.
+  * @return void
+   */
+	setPollingInterval:function(i)
+	{
+		if(typeof i == 'number' && isFinite(i)){
+			this._polling_interval = i;
+			YAHOO.log('Default polling interval set to ' + i +'ms', 'info', 'Connection');
+		}
+	},
+
+  /**
+  * @description Instantiates a XMLHttpRequest object and returns an object with two properties:
+   * the XMLHttpRequest instance and the transaction id.
+  * @method createXhrObject
+  * @private
+  * @static
+  * @param {int} transactionId Property containing the transaction id for this transaction.
+  * @return object
+   */
+	createXhrObject:function(transactionId)
+	{
+		var obj,http,i;
+		try
+		{
+			// Instantiates XMLHttpRequest in non-IE browsers and assigns to http.
+			http = new XMLHttpRequest();
+			//  Object literal with http and tId properties
+			obj = { conn:http, tId:transactionId, xhr: true };
+			YAHOO.log('XHR object created for transaction ' + transactionId, 'info', 'Connection');
+		}
+		catch(e)
+		{
+			for(i=0; i<this._msxml_progid.length; ++i){
+				try
+				{
+					// Instantiates XMLHttpRequest for IE and assign to http
+					http = new ActiveXObject(this._msxml_progid[i]);
+					//  Object literal with conn and tId properties
+					obj = { conn:http, tId:transactionId, xhr: true };
+					YAHOO.log('ActiveX XHR object created for transaction ' + transactionId, 'info', 'Connection');
+					break;
+				}
+				catch(e1){}
+			}
+		}
+		finally
+		{
+			return obj;
+		}
+	},
+
+  /**
+  * @description This method is called by asyncRequest to create a
+   * valid connection object for the transaction.  It also passes a
+   * transaction id and increments the transaction id counter.
+  * @method getConnectionObject
+  * @private
+  * @static
+  * @return {object}
+   */
+	getConnectionObject:function(t)
+	{
+		var o, tId = this._transaction_id;
+
+		try
+		{
+			if(!t){
+				o = this.createXhrObject(tId);
+			}
+			else{
+				o = {tId:tId};
+				if(t==='xdr'){
+					o.conn = this._transport;
+					o.xdr = true;
+				}
+				else if(t==='upload'){
+					o.upload = true;
+				}
+			}
+
+			if(o){
+				this._transaction_id++;
+			}
+		}
+		catch(e){}
+		return o;
+	},
+
+  /**
+  * @description Method for initiating an asynchronous request via the XHR object.
+  * @method asyncRequest
+  * @public
+  * @static
+  * @param {string} method HTTP transaction method
+  * @param {string} uri Fully qualified path of resource
+  * @param {callback} callback User-defined callback function or object
+  * @param {string} postData POST body
+  * @return {object} Returns the connection object
+   */
+	asyncRequest:function(method, uri, callback, postData)
+	{
+		var o,t,args = (callback && callback.argument)?callback.argument:null;
+
+		if(this._isFileUpload){
+			t = 'upload';
+		}
+		else if(callback.xdr){
+			t = 'xdr';
+		}
+
+		o = this.getConnectionObject(t);
+		if(!o){
+			YAHOO.log('Unable to create connection object.', 'error', 'Connection');
+			return null;
+		}
+		else{
+
+			// Intialize any transaction-specific custom events, if provided.
+			if(callback && callback.customevents){
+				this.initCustomEvents(o, callback);
+			}
+
+			if(this._isFormSubmit){
+				if(this._isFileUpload){
+					this.uploadFile(o, callback, uri, postData);
+					return o;
+				}
+
+				// If the specified HTTP method is GET, setForm() will return an
+				// encoded string that is concatenated to the uri to
+				// create a querystring.
+				if(method.toUpperCase() == 'GET'){
+					if(this._sFormData.length !== 0){
+						// If the URI already contains a querystring, append an ampersand
+						// and then concatenate _sFormData to the URI.
+						uri += ((uri.indexOf('?') == -1)?'?':'&') + this._sFormData;
+					}
+				}
+				else if(method.toUpperCase() == 'POST'){
+					// If POST data exist in addition to the HTML form data,
+					// it will be concatenated to the form data.
+					postData = postData?this._sFormData + "&" + postData:this._sFormData;
+				}
+			}
+
+			if(method.toUpperCase() == 'GET' && (callback && callback.cache === false)){
+				// If callback.cache is defined and set to false, a
+				// timestamp value will be added to the querystring.
+				uri += ((uri.indexOf('?') == -1)?'?':'&') + "rnd=" + new Date().valueOf().toString();
+			}
+
+			// Each transaction will automatically include a custom header of
+			// "X-Requested-With: XMLHttpRequest" to identify the request as
+			// having originated from Connection Manager.
+			if(this._use_default_xhr_header){
+				if(!this._default_headers['X-Requested-With']){
+					this.initHeader('X-Requested-With', this._default_xhr_header, true);
+					YAHOO.log('Initialize transaction header X-Request-Header to XMLHttpRequest.', 'info', 'Connection');
+				}
+			}
+
+			//If the transaction method is POST and the POST header value is set to true
+			//or a custom value, initalize the Content-Type header to this value.
+			if((method.toUpperCase() === 'POST' && this._use_default_post_header) && this._isFormSubmit === false){
+				this.initHeader('Content-Type', this._default_post_header);
+				YAHOO.log('Initialize header Content-Type to application/x-www-form-urlencoded; UTF-8 for POST transaction.', 'info', 'Connection');
+			}
+
+			if(o.xdr){
+				this.xdr(o, method, uri, callback, postData);
+				return o;
+			}
+
+			o.conn.open(method, uri, true);
+			//Initialize all default and custom HTTP headers,
+			if(this._has_default_headers || this._has_http_headers){
+				this.setHeader(o);
+			}
+
+			this.handleReadyState(o, callback);
+			o.conn.send(postData || '');
+			YAHOO.log('Transaction ' + o.tId + ' sent.', 'info', 'Connection');
+
+			// Reset the HTML form data and state properties as
+			// soon as the data are submitted.
+			if(this._isFormSubmit === true){
+				this.resetFormState();
+			}
+
+			// Fire global custom event -- startEvent
+			this.startEvent.fire(o, args);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, args);
+			}
+
+			return o;
+		}
+	},
+
+  /**
+  * @description This method creates and subscribes custom events,
+   * specific to each transaction
+  * @method initCustomEvents
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+	initCustomEvents:function(o, callback)
+	{
+		var prop;
+		// Enumerate through callback.customevents members and bind/subscribe
+		// events that match in the _customEvents table.
+		for(prop in callback.customevents){
+			if(this._customEvents[prop][0]){
+				// Create the custom event
+				o[this._customEvents[prop][0]] = new YAHOO.util.CustomEvent(this._customEvents[prop][1], (callback.scope)?callback.scope:null);
+				YAHOO.log('Transaction-specific Custom Event ' + o[this._customEvents[prop][1]] + ' created.', 'info', 'Connection');
+
+				// Subscribe the custom event
+				o[this._customEvents[prop][0]].subscribe(callback.customevents[prop]);
+				YAHOO.log('Transaction-specific Custom Event ' + o[this._customEvents[prop][1]] + ' subscribed.', 'info', 'Connection');
+			}
+		}
+	},
+
+  /**
+  * @description This method serves as a timer that polls the XHR object's readyState
+   * property during a transaction, instead of binding a callback to the
+   * onreadystatechange event.  Upon readyState 4, handleTransactionResponse
+   * will process the response, and the timer will be cleared.
+  * @method handleReadyState
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+
+    handleReadyState:function(o, callback)
+
+    {
+		var oConn = this,
+			args = (callback && callback.argument)?callback.argument:null;
+
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		this._poll[o.tId] = window.setInterval(
+			function(){
+				if(o.conn && o.conn.readyState === 4){
+
+					// Clear the polling interval for the transaction
+					// and remove the reference from _poll.
+					window.clearInterval(oConn._poll[o.tId]);
+					delete oConn._poll[o.tId];
+
+					if(callback && callback.timeout){
+						window.clearTimeout(oConn._timeOut[o.tId]);
+						delete oConn._timeOut[o.tId];
+					}
+
+					// Fire global custom event -- completeEvent
+					oConn.completeEvent.fire(o, args);
+
+					if(o.completeEvent){
+						// Fire transaction custom event -- completeEvent
+						o.completeEvent.fire(o, args);
+					}
+
+					oConn.handleTransactionResponse(o, callback);
+				}
+			}
+		,this._polling_interval);
+    },
+
+  /**
+  * @description This method attempts to interpret the server response and
+   * determine whether the transaction was successful, or if an error or
+   * exception was encountered.
+  * @method handleTransactionResponse
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {object} callback The user-defined callback object
+  * @param {boolean} isAbort Determines if the transaction was terminated via abort().
+  * @return {void}
+   */
+    handleTransactionResponse:function(o, callback, isAbort)
+    {
+		var httpStatus, responseObject,
+			args = (callback && callback.argument)?callback.argument:null,
+			xdrS = (o.r && o.r.statusText === 'xdr:success')?true:false,
+			xdrF = (o.r && o.r.statusText === 'xdr:failure')?true:false,
+			xdrA = isAbort;
+
+		try
+		{
+			if((o.conn.status !== undefined && o.conn.status !== 0) || xdrS){
+				// XDR requests will not have HTTP status defined. The
+				// statusText property will define the response status
+				// set by the Flash transport.
+				httpStatus = o.conn.status;
+			}
+			else if(xdrF && !xdrA){
+				// Set XDR transaction failure to a status of 0, which
+				// resolves as an HTTP failure, instead of an exception.
+				httpStatus = 0;
+			}
+			else{
+				httpStatus = 13030;
+			}
+		}
+		catch(e){
+
+			 // 13030 is a custom code to indicate the condition -- in Mozilla/FF --
+			 // when the XHR object's status and statusText properties are
+			 // unavailable, and a query attempt throws an exception.
+			httpStatus = 13030;
+		}
+
+		if((httpStatus >= 200 && httpStatus < 300) || httpStatus === 1223 || xdrS){
+			responseObject = o.xdr ? o.r : this.createResponseObject(o, args);
+			if(callback && callback.success){
+				if(!callback.scope){
+					callback.success(responseObject);
+					YAHOO.log('Success callback. HTTP code is ' + httpStatus, 'info', 'Connection');
+				}
+				else{
+					// If a scope property is defined, the callback will be fired from
+					// the context of the object.
+					callback.success.apply(callback.scope, [responseObject]);
+					YAHOO.log('Success callback with scope. HTTP code is ' + httpStatus, 'info', 'Connection');
+				}
+			}
+
+			// Fire global custom event -- successEvent
+			this.successEvent.fire(responseObject);
+
+			if(o.successEvent){
+				// Fire transaction custom event -- successEvent
+				o.successEvent.fire(responseObject);
+			}
+		}
+		else{
+			switch(httpStatus){
+				// The following cases are wininet.dll error codes that may be encountered.
+				case 12002: // Server timeout
+				case 12029: // 12029 to 12031 correspond to dropped connections.
+				case 12030:
+				case 12031:
+				case 12152: // Connection closed by server.
+				case 13030: // See above comments for variable status.
+					// XDR transactions will not resolve to this case, since the
+					// response object is already built in the xdr response.
+					responseObject = this.createExceptionObject(o.tId, args, (isAbort?isAbort:false));
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+							YAHOO.log('Failure callback. Exception detected. Status code is ' + httpStatus, 'warn', 'Connection');
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+							YAHOO.log('Failure callback with scope. Exception detected. Status code is ' + httpStatus, 'warn', 'Connection');
+						}
+					}
+
+					break;
+				default:
+					responseObject = (o.xdr) ? o.response : this.createResponseObject(o, args);
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+							YAHOO.log('Failure callback. HTTP status code is ' + httpStatus, 'warn', 'Connection');
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+							YAHOO.log('Failure callback with scope. HTTP status code is ' + httpStatus, 'warn', 'Connection');
+						}
+					}
+			}
+
+			// Fire global custom event -- failureEvent
+			this.failureEvent.fire(responseObject);
+
+			if(o.failureEvent){
+				// Fire transaction custom event -- failureEvent
+				o.failureEvent.fire(responseObject);
+			}
+
+		}
+
+		this.releaseObject(o);
+		responseObject = null;
+    },
+
+  /**
+  * @description This method evaluates the server response, creates and returns the results via
+   * its properties.  Success and failure cases will differ in the response
+   * object's property values.
+  * @method createResponseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @return {object}
+   */
+    createResponseObject:function(o, callbackArg)
+    {
+		var obj = {}, headerObj = {},
+			i, headerStr, header, delimitPos;
+
+		try
+		{
+			headerStr = o.conn.getAllResponseHeaders();
+			header = headerStr.split('\n');
+			for(i=0; i<header.length; i++){
+				delimitPos = header[i].indexOf(':');
+				if(delimitPos != -1){
+					headerObj[header[i].substring(0,delimitPos)] = YAHOO.lang.trim(header[i].substring(delimitPos+2));
+				}
+			}
+		}
+		catch(e){}
+
+		obj.tId = o.tId;
+		// Normalize IE's response to HTTP 204 when Win error 1223.
+		obj.status = (o.conn.status == 1223)?204:o.conn.status;
+		// Normalize IE's statusText to "No Content" instead of "Unknown".
+		obj.statusText = (o.conn.status == 1223)?"No Content":o.conn.statusText;
+		obj.getResponseHeader = headerObj;
+		obj.getAllResponseHeaders = headerStr;
+		obj.responseText = o.conn.responseText;
+		obj.responseXML = o.conn.responseXML;
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description If a transaction cannot be completed due to dropped or closed connections,
+   * there may be not be enough information to build a full response object.
+   * The failure callback will be fired and this specific condition can be identified
+   * by a status property value of 0.
+   *
+   * If an abort was successful, the status property will report a value of -1.
+   *
+  * @method createExceptionObject
+  * @private
+  * @static
+  * @param {int} tId The Transaction Id
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @param {boolean} isAbort Determines if the exception case is caused by a transaction abort
+  * @return {object}
+   */
+    createExceptionObject:function(tId, callbackArg, isAbort)
+    {
+		var COMM_CODE = 0,
+			COMM_ERROR = 'communication failure',
+			ABORT_CODE = -1,
+			ABORT_ERROR = 'transaction aborted',
+			obj = {};
+
+		obj.tId = tId;
+		if(isAbort){
+			obj.status = ABORT_CODE;
+			obj.statusText = ABORT_ERROR;
+		}
+		else{
+			obj.status = COMM_CODE;
+			obj.statusText = COMM_ERROR;
+		}
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description Method that initializes the custom HTTP headers for the each transaction.
+  * @method initHeader
+  * @public
+  * @static
+  * @param {string} label The HTTP header label
+  * @param {string} value The HTTP header value
+  * @param {string} isDefault Determines if the specific header is a default header
+   * automatically sent with each transaction.
+  * @return {void}
+   */
+	initHeader:function(label, value, isDefault)
+	{
+		var headerObj = (isDefault)?this._default_headers:this._http_headers;
+
+		headerObj[label] = value;
+		if(isDefault){
+			this._has_default_headers = true;
+		}
+		else{
+			this._has_http_headers = true;
+		}
+	},
+
+
+  /**
+  * @description Accessor that sets the HTTP headers for each transaction.
+  * @method setHeader
+  * @private
+  * @static
+  * @param {object} o The connection object for the transaction.
+  * @return {void}
+   */
+	setHeader:function(o)
+	{
+		var prop;
+		if(this._has_default_headers){
+			for(prop in this._default_headers){
+				if(YAHOO.lang.hasOwnProperty(this._default_headers, prop)){
+					o.conn.setRequestHeader(prop, this._default_headers[prop]);
+					YAHOO.log('Default HTTP header ' + prop + ' set with value of ' + this._default_headers[prop], 'info', 'Connection');
+				}
+			}
+		}
+
+		if(this._has_http_headers){
+			for(prop in this._http_headers){
+				if(YAHOO.lang.hasOwnProperty(this._http_headers, prop)){
+					o.conn.setRequestHeader(prop, this._http_headers[prop]);
+					YAHOO.log('HTTP header ' + prop + ' set with value of ' + this._http_headers[prop], 'info', 'Connection');
+				}
+			}
+
+			this._http_headers = {};
+			this._has_http_headers = false;
+		}
+	},
+
+  /**
+  * @description Resets the default HTTP headers object
+  * @method resetDefaultHeaders
+  * @public
+  * @static
+  * @return {void}
+   */
+	resetDefaultHeaders:function(){
+		this._default_headers = {};
+		this._has_default_headers = false;
+	},
+
+  /**
+  * @description Method to terminate a transaction, if it has not reached readyState 4.
+  * @method abort
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest.
+  * @param {object} callback  User-defined callback object.
+  * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout.
+  * @return {boolean}
+   */
+	abort:function(o, callback, isTimeout)
+	{
+		var abortStatus,
+			args = (callback && callback.argument)?callback.argument:null;
+			o = o || {};
+
+		if(o.conn){
+			if(o.xhr){
+				if(this.isCallInProgress(o)){
+					// Issue abort request
+					o.conn.abort();
+
+					window.clearInterval(this._poll[o.tId]);
+					delete this._poll[o.tId];
+
+					if(isTimeout){
+						window.clearTimeout(this._timeOut[o.tId]);
+						delete this._timeOut[o.tId];
+					}
+
+					abortStatus = true;
+				}
+			}
+			else if(o.xdr){
+				o.conn.abort(o.tId);
+				abortStatus = true;
+			}
+		}
+		else if(o.upload){
+			var frameId = 'yuiIO' + o.tId;
+			var io = document.getElementById(frameId);
+
+			if(io){
+				// Remove all listeners on the iframe prior to
+				// its destruction.
+				YAHOO.util.Event.removeListener(io, "load");
+				// Destroy the iframe facilitating the transaction.
+				document.body.removeChild(io);
+				YAHOO.log('File upload iframe destroyed. Id is:' + frameId, 'info', 'Connection');
+
+				if(isTimeout){
+					window.clearTimeout(this._timeOut[o.tId]);
+					delete this._timeOut[o.tId];
+				}
+
+				abortStatus = true;
+			}
+		}
+		else{
+			abortStatus = false;
+		}
+
+		if(abortStatus === true){
+			// Fire global custom event -- abortEvent
+			this.abortEvent.fire(o, args);
+
+			if(o.abortEvent){
+				// Fire transaction custom event -- abortEvent
+				o.abortEvent.fire(o, args);
+			}
+
+			this.handleTransactionResponse(o, callback, true);
+			YAHOO.log('Transaction ' + o.tId + ' aborted.', 'info', 'Connection');
+		}
+
+		return abortStatus;
+	},
+
+  /**
+  * @description Determines if the transaction is still being processed.
+  * @method isCallInProgress
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest
+  * @return {boolean}
+   */
+	isCallInProgress:function(o)
+	{
+		o = o || {};
+		// if the XHR object assigned to the transaction has not been dereferenced,
+		// then check its readyState status.  Otherwise, return false.
+		if(o.xhr && o.conn){
+			return o.conn.readyState !== 4 && o.conn.readyState !== 0;
+		}
+		else if(o.xdr && o.conn){
+			return o.conn.isCallInProgress(o.tId);
+		}
+		else if(o.upload === true){
+			return document.getElementById('yuiIO' + o.tId)?true:false;
+		}
+		else{
+			return false;
+		}
+	},
+
+  /**
+  * @description Dereference the XHR instance and the connection object after the transaction is completed.
+  * @method releaseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @return {void}
+   */
+	releaseObject:function(o)
+	{
+		if(o && o.conn){
+			//dereference the XHR instance.
+			o.conn = null;
+
+			YAHOO.log('Connection object for transaction ' + o.tId + ' destroyed.', 'info', 'Connection');
+
+			//dereference the connection object.
+			o = null;
+		}
+	}
+};
+
+YAHOO.register("connection_core", YAHOO.util.Connect, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/connection/connection_core-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection.js	(revision 1610)
@@ -0,0 +1,1546 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The Connection Manager provides a simplified interface to the XMLHttpRequest
+ * object.  It handles cross-browser instantiantion of XMLHttpRequest, negotiates the
+ * interactive states and server response, returning the results to a pre-defined
+ * callback you create.
+ *
+ * @namespace YAHOO.util
+ * @module connection
+ * @requires yahoo
+ * @requires event
+ */
+
+/**
+ * The Connection Manager singleton provides methods for creating and managing
+ * asynchronous transactions.
+ *
+ * @class Connect
+ */
+
+YAHOO.util.Connect =
+{
+  /**
+  * @description Array of MSFT ActiveX ids for XMLHttpRequest.
+  * @property _msxml_progid
+  * @private
+  * @static
+  * @type array
+   */
+	_msxml_progid:[
+		'Microsoft.XMLHTTP',
+		'MSXML2.XMLHTTP.3.0',
+		'MSXML2.XMLHTTP'
+		],
+
+  /**
+  * @description Object literal of HTTP header(s)
+  * @property _http_header
+  * @private
+  * @static
+  * @type object
+   */
+	_http_headers:{},
+
+  /**
+  * @description Determines if HTTP headers are set.
+  * @property _has_http_headers
+  * @private
+  * @static
+  * @type boolean
+   */
+	_has_http_headers:false,
+
+ /**
+ * @description Determines if a default header of
+  * Content-Type of 'application/x-www-form-urlencoded'
+  * will be added to any client HTTP headers sent for POST
+  * transactions.
+ * @property _use_default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_post_header:true,
+
+ /**
+ * @description The default header used for POST transactions.
+ * @property _default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_post_header:'application/x-www-form-urlencoded; charset=UTF-8',
+
+ /**
+ * @description The default header used for transactions involving the
+  * use of HTML forms.
+ * @property _default_form_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_form_header:'application/x-www-form-urlencoded',
+
+ /**
+ * @description Determines if a default header of
+  * 'X-Requested-With: XMLHttpRequest'
+  * will be added to each transaction.
+ * @property _use_default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_xhr_header:true,
+
+ /**
+ * @description The default header value for the label
+  * "X-Requested-With".  This is sent with each
+  * transaction, by default, to identify the
+  * request as being made by YUI Connection Manager.
+ * @property _default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_xhr_header:'XMLHttpRequest',
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _has_default_headers:true,
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_headers:{},
+
+ /**
+ * @description Collection of polling references to the polling mechanism in handleReadyState.
+ * @property _poll
+ * @private
+ * @static
+ * @type object
+  */
+    _poll:{},
+
+ /**
+ * @description Queue of timeout values for each transaction callback with a defined timeout value.
+ * @property _timeOut
+ * @private
+ * @static
+ * @type object
+  */
+    _timeOut:{},
+
+  /**
+  * @description The polling frequency, in milliseconds, for HandleReadyState.
+   * when attempting to determine a transaction's XHR readyState.
+   * The default is 50 milliseconds.
+  * @property _polling_interval
+  * @private
+  * @static
+  * @type int
+   */
+     _polling_interval:50,
+
+  /**
+  * @description A transaction counter that increments the transaction id for each transaction.
+  * @property _transaction_id
+  * @private
+  * @static
+  * @type int
+   */
+     _transaction_id:0,
+
+  /**
+  * @description Custom event that fires at the start of a transaction
+  * @property startEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	startEvent: new YAHOO.util.CustomEvent('start'),
+
+  /**
+  * @description Custom event that fires when a transaction response has completed.
+  * @property completeEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	completeEvent: new YAHOO.util.CustomEvent('complete'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 2xx range.
+  * @property successEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	successEvent: new YAHOO.util.CustomEvent('success'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 4xx/5xx range.
+  * @property failureEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	failureEvent: new YAHOO.util.CustomEvent('failure'),
+
+  /**
+  * @description Custom event that fires when a transaction is successfully aborted.
+  * @property abortEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	abortEvent: new YAHOO.util.CustomEvent('abort'),
+
+  /**
+  * @description A reference table that maps callback custom events members to its specific
+   * event name.
+  * @property _customEvents
+  * @private
+  * @static
+  * @type object
+   */
+	_customEvents:
+	{
+		onStart:['startEvent', 'start'],
+		onComplete:['completeEvent', 'complete'],
+		onSuccess:['successEvent', 'success'],
+		onFailure:['failureEvent', 'failure'],
+		onUpload:['uploadEvent', 'upload'],
+		onAbort:['abortEvent', 'abort']
+	},
+
+  /**
+  * @description Member to add an ActiveX id to the existing xml_progid array.
+   * In the event(unlikely) a new ActiveX id is introduced, it can be added
+   * without internal code modifications.
+  * @method setProgId
+  * @public
+  * @static
+  * @param {string} id The ActiveX id to be added to initialize the XHR object.
+  * @return void
+   */
+	setProgId:function(id)
+	{
+		this._msxml_progid.unshift(id);
+	},
+
+  /**
+  * @description Member to override the default POST header.
+  * @method setDefaultPostHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultPostHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_post_header = b;
+		}
+		else if(typeof b == 'boolean'){
+			this._use_default_post_header = b;
+		}
+	},
+
+  /**
+  * @description Member to override the default transaction header..
+  * @method setDefaultXhrHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultXhrHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_xhr_header = b;
+		}
+		else{
+			this._use_default_xhr_header = b;
+		}
+	},
+
+  /**
+  * @description Member to modify the default polling interval.
+  * @method setPollingInterval
+  * @public
+  * @static
+  * @param {int} i The polling interval in milliseconds.
+  * @return void
+   */
+	setPollingInterval:function(i)
+	{
+		if(typeof i == 'number' && isFinite(i)){
+			this._polling_interval = i;
+		}
+	},
+
+  /**
+  * @description Instantiates a XMLHttpRequest object and returns an object with two properties:
+   * the XMLHttpRequest instance and the transaction id.
+  * @method createXhrObject
+  * @private
+  * @static
+  * @param {int} transactionId Property containing the transaction id for this transaction.
+  * @return object
+   */
+	createXhrObject:function(transactionId)
+	{
+		var obj,http,i;
+		try
+		{
+			// Instantiates XMLHttpRequest in non-IE browsers and assigns to http.
+			http = new XMLHttpRequest();
+			//  Object literal with http and tId properties
+			obj = { conn:http, tId:transactionId, xhr: true };
+		}
+		catch(e)
+		{
+			for(i=0; i<this._msxml_progid.length; ++i){
+				try
+				{
+					// Instantiates XMLHttpRequest for IE and assign to http
+					http = new ActiveXObject(this._msxml_progid[i]);
+					//  Object literal with conn and tId properties
+					obj = { conn:http, tId:transactionId, xhr: true };
+					break;
+				}
+				catch(e1){}
+			}
+		}
+		finally
+		{
+			return obj;
+		}
+	},
+
+  /**
+  * @description This method is called by asyncRequest to create a
+   * valid connection object for the transaction.  It also passes a
+   * transaction id and increments the transaction id counter.
+  * @method getConnectionObject
+  * @private
+  * @static
+  * @return {object}
+   */
+	getConnectionObject:function(t)
+	{
+		var o, tId = this._transaction_id;
+
+		try
+		{
+			if(!t){
+				o = this.createXhrObject(tId);
+			}
+			else{
+				o = {tId:tId};
+				if(t==='xdr'){
+					o.conn = this._transport;
+					o.xdr = true;
+				}
+				else if(t==='upload'){
+					o.upload = true;
+				}
+			}
+
+			if(o){
+				this._transaction_id++;
+			}
+		}
+		catch(e){}
+		return o;
+	},
+
+  /**
+  * @description Method for initiating an asynchronous request via the XHR object.
+  * @method asyncRequest
+  * @public
+  * @static
+  * @param {string} method HTTP transaction method
+  * @param {string} uri Fully qualified path of resource
+  * @param {callback} callback User-defined callback function or object
+  * @param {string} postData POST body
+  * @return {object} Returns the connection object
+   */
+	asyncRequest:function(method, uri, callback, postData)
+	{
+		var o,t,args = (callback && callback.argument)?callback.argument:null;
+
+		if(this._isFileUpload){
+			t = 'upload';
+		}
+		else if(callback.xdr){
+			t = 'xdr';
+		}
+
+		o = this.getConnectionObject(t);
+		if(!o){
+			return null;
+		}
+		else{
+
+			// Intialize any transaction-specific custom events, if provided.
+			if(callback && callback.customevents){
+				this.initCustomEvents(o, callback);
+			}
+
+			if(this._isFormSubmit){
+				if(this._isFileUpload){
+					this.uploadFile(o, callback, uri, postData);
+					return o;
+				}
+
+				// If the specified HTTP method is GET, setForm() will return an
+				// encoded string that is concatenated to the uri to
+				// create a querystring.
+				if(method.toUpperCase() == 'GET'){
+					if(this._sFormData.length !== 0){
+						// If the URI already contains a querystring, append an ampersand
+						// and then concatenate _sFormData to the URI.
+						uri += ((uri.indexOf('?') == -1)?'?':'&') + this._sFormData;
+					}
+				}
+				else if(method.toUpperCase() == 'POST'){
+					// If POST data exist in addition to the HTML form data,
+					// it will be concatenated to the form data.
+					postData = postData?this._sFormData + "&" + postData:this._sFormData;
+				}
+			}
+
+			if(method.toUpperCase() == 'GET' && (callback && callback.cache === false)){
+				// If callback.cache is defined and set to false, a
+				// timestamp value will be added to the querystring.
+				uri += ((uri.indexOf('?') == -1)?'?':'&') + "rnd=" + new Date().valueOf().toString();
+			}
+
+			// Each transaction will automatically include a custom header of
+			// "X-Requested-With: XMLHttpRequest" to identify the request as
+			// having originated from Connection Manager.
+			if(this._use_default_xhr_header){
+				if(!this._default_headers['X-Requested-With']){
+					this.initHeader('X-Requested-With', this._default_xhr_header, true);
+				}
+			}
+
+			//If the transaction method is POST and the POST header value is set to true
+			//or a custom value, initalize the Content-Type header to this value.
+			if((method.toUpperCase() === 'POST' && this._use_default_post_header) && this._isFormSubmit === false){
+				this.initHeader('Content-Type', this._default_post_header);
+			}
+
+			if(o.xdr){
+				this.xdr(o, method, uri, callback, postData);
+				return o;
+			}
+
+			o.conn.open(method, uri, true);
+			//Initialize all default and custom HTTP headers,
+			if(this._has_default_headers || this._has_http_headers){
+				this.setHeader(o);
+			}
+
+			this.handleReadyState(o, callback);
+			o.conn.send(postData || '');
+
+			// Reset the HTML form data and state properties as
+			// soon as the data are submitted.
+			if(this._isFormSubmit === true){
+				this.resetFormState();
+			}
+
+			// Fire global custom event -- startEvent
+			this.startEvent.fire(o, args);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, args);
+			}
+
+			return o;
+		}
+	},
+
+  /**
+  * @description This method creates and subscribes custom events,
+   * specific to each transaction
+  * @method initCustomEvents
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+	initCustomEvents:function(o, callback)
+	{
+		var prop;
+		// Enumerate through callback.customevents members and bind/subscribe
+		// events that match in the _customEvents table.
+		for(prop in callback.customevents){
+			if(this._customEvents[prop][0]){
+				// Create the custom event
+				o[this._customEvents[prop][0]] = new YAHOO.util.CustomEvent(this._customEvents[prop][1], (callback.scope)?callback.scope:null);
+
+				// Subscribe the custom event
+				o[this._customEvents[prop][0]].subscribe(callback.customevents[prop]);
+			}
+		}
+	},
+
+  /**
+  * @description This method serves as a timer that polls the XHR object's readyState
+   * property during a transaction, instead of binding a callback to the
+   * onreadystatechange event.  Upon readyState 4, handleTransactionResponse
+   * will process the response, and the timer will be cleared.
+  * @method handleReadyState
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+
+    handleReadyState:function(o, callback)
+
+    {
+		var oConn = this,
+			args = (callback && callback.argument)?callback.argument:null;
+
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		this._poll[o.tId] = window.setInterval(
+			function(){
+				if(o.conn && o.conn.readyState === 4){
+
+					// Clear the polling interval for the transaction
+					// and remove the reference from _poll.
+					window.clearInterval(oConn._poll[o.tId]);
+					delete oConn._poll[o.tId];
+
+					if(callback && callback.timeout){
+						window.clearTimeout(oConn._timeOut[o.tId]);
+						delete oConn._timeOut[o.tId];
+					}
+
+					// Fire global custom event -- completeEvent
+					oConn.completeEvent.fire(o, args);
+
+					if(o.completeEvent){
+						// Fire transaction custom event -- completeEvent
+						o.completeEvent.fire(o, args);
+					}
+
+					oConn.handleTransactionResponse(o, callback);
+				}
+			}
+		,this._polling_interval);
+    },
+
+  /**
+  * @description This method attempts to interpret the server response and
+   * determine whether the transaction was successful, or if an error or
+   * exception was encountered.
+  * @method handleTransactionResponse
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {object} callback The user-defined callback object
+  * @param {boolean} isAbort Determines if the transaction was terminated via abort().
+  * @return {void}
+   */
+    handleTransactionResponse:function(o, callback, isAbort)
+    {
+		var httpStatus, responseObject,
+			args = (callback && callback.argument)?callback.argument:null,
+			xdrS = (o.r && o.r.statusText === 'xdr:success')?true:false,
+			xdrF = (o.r && o.r.statusText === 'xdr:failure')?true:false,
+			xdrA = isAbort;
+
+		try
+		{
+			if((o.conn.status !== undefined && o.conn.status !== 0) || xdrS){
+				// XDR requests will not have HTTP status defined. The
+				// statusText property will define the response status
+				// set by the Flash transport.
+				httpStatus = o.conn.status;
+			}
+			else if(xdrF && !xdrA){
+				// Set XDR transaction failure to a status of 0, which
+				// resolves as an HTTP failure, instead of an exception.
+				httpStatus = 0;
+			}
+			else{
+				httpStatus = 13030;
+			}
+		}
+		catch(e){
+
+			 // 13030 is a custom code to indicate the condition -- in Mozilla/FF --
+			 // when the XHR object's status and statusText properties are
+			 // unavailable, and a query attempt throws an exception.
+			httpStatus = 13030;
+		}
+
+		if((httpStatus >= 200 && httpStatus < 300) || httpStatus === 1223 || xdrS){
+			responseObject = o.xdr ? o.r : this.createResponseObject(o, args);
+			if(callback && callback.success){
+				if(!callback.scope){
+					callback.success(responseObject);
+				}
+				else{
+					// If a scope property is defined, the callback will be fired from
+					// the context of the object.
+					callback.success.apply(callback.scope, [responseObject]);
+				}
+			}
+
+			// Fire global custom event -- successEvent
+			this.successEvent.fire(responseObject);
+
+			if(o.successEvent){
+				// Fire transaction custom event -- successEvent
+				o.successEvent.fire(responseObject);
+			}
+		}
+		else{
+			switch(httpStatus){
+				// The following cases are wininet.dll error codes that may be encountered.
+				case 12002: // Server timeout
+				case 12029: // 12029 to 12031 correspond to dropped connections.
+				case 12030:
+				case 12031:
+				case 12152: // Connection closed by server.
+				case 13030: // See above comments for variable status.
+					// XDR transactions will not resolve to this case, since the
+					// response object is already built in the xdr response.
+					responseObject = this.createExceptionObject(o.tId, args, (isAbort?isAbort:false));
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+						}
+					}
+
+					break;
+				default:
+					responseObject = (o.xdr) ? o.response : this.createResponseObject(o, args);
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+						}
+					}
+			}
+
+			// Fire global custom event -- failureEvent
+			this.failureEvent.fire(responseObject);
+
+			if(o.failureEvent){
+				// Fire transaction custom event -- failureEvent
+				o.failureEvent.fire(responseObject);
+			}
+
+		}
+
+		this.releaseObject(o);
+		responseObject = null;
+    },
+
+  /**
+  * @description This method evaluates the server response, creates and returns the results via
+   * its properties.  Success and failure cases will differ in the response
+   * object's property values.
+  * @method createResponseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @return {object}
+   */
+    createResponseObject:function(o, callbackArg)
+    {
+		var obj = {}, headerObj = {},
+			i, headerStr, header, delimitPos;
+
+		try
+		{
+			headerStr = o.conn.getAllResponseHeaders();
+			header = headerStr.split('\n');
+			for(i=0; i<header.length; i++){
+				delimitPos = header[i].indexOf(':');
+				if(delimitPos != -1){
+					headerObj[header[i].substring(0,delimitPos)] = YAHOO.lang.trim(header[i].substring(delimitPos+2));
+				}
+			}
+		}
+		catch(e){}
+
+		obj.tId = o.tId;
+		// Normalize IE's response to HTTP 204 when Win error 1223.
+		obj.status = (o.conn.status == 1223)?204:o.conn.status;
+		// Normalize IE's statusText to "No Content" instead of "Unknown".
+		obj.statusText = (o.conn.status == 1223)?"No Content":o.conn.statusText;
+		obj.getResponseHeader = headerObj;
+		obj.getAllResponseHeaders = headerStr;
+		obj.responseText = o.conn.responseText;
+		obj.responseXML = o.conn.responseXML;
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description If a transaction cannot be completed due to dropped or closed connections,
+   * there may be not be enough information to build a full response object.
+   * The failure callback will be fired and this specific condition can be identified
+   * by a status property value of 0.
+   *
+   * If an abort was successful, the status property will report a value of -1.
+   *
+  * @method createExceptionObject
+  * @private
+  * @static
+  * @param {int} tId The Transaction Id
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @param {boolean} isAbort Determines if the exception case is caused by a transaction abort
+  * @return {object}
+   */
+    createExceptionObject:function(tId, callbackArg, isAbort)
+    {
+		var COMM_CODE = 0,
+			COMM_ERROR = 'communication failure',
+			ABORT_CODE = -1,
+			ABORT_ERROR = 'transaction aborted',
+			obj = {};
+
+		obj.tId = tId;
+		if(isAbort){
+			obj.status = ABORT_CODE;
+			obj.statusText = ABORT_ERROR;
+		}
+		else{
+			obj.status = COMM_CODE;
+			obj.statusText = COMM_ERROR;
+		}
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description Method that initializes the custom HTTP headers for the each transaction.
+  * @method initHeader
+  * @public
+  * @static
+  * @param {string} label The HTTP header label
+  * @param {string} value The HTTP header value
+  * @param {string} isDefault Determines if the specific header is a default header
+   * automatically sent with each transaction.
+  * @return {void}
+   */
+	initHeader:function(label, value, isDefault)
+	{
+		var headerObj = (isDefault)?this._default_headers:this._http_headers;
+
+		headerObj[label] = value;
+		if(isDefault){
+			this._has_default_headers = true;
+		}
+		else{
+			this._has_http_headers = true;
+		}
+	},
+
+
+  /**
+  * @description Accessor that sets the HTTP headers for each transaction.
+  * @method setHeader
+  * @private
+  * @static
+  * @param {object} o The connection object for the transaction.
+  * @return {void}
+   */
+	setHeader:function(o)
+	{
+		var prop;
+		if(this._has_default_headers){
+			for(prop in this._default_headers){
+				if(YAHOO.lang.hasOwnProperty(this._default_headers, prop)){
+					o.conn.setRequestHeader(prop, this._default_headers[prop]);
+				}
+			}
+		}
+
+		if(this._has_http_headers){
+			for(prop in this._http_headers){
+				if(YAHOO.lang.hasOwnProperty(this._http_headers, prop)){
+					o.conn.setRequestHeader(prop, this._http_headers[prop]);
+				}
+			}
+
+			this._http_headers = {};
+			this._has_http_headers = false;
+		}
+	},
+
+  /**
+  * @description Resets the default HTTP headers object
+  * @method resetDefaultHeaders
+  * @public
+  * @static
+  * @return {void}
+   */
+	resetDefaultHeaders:function(){
+		this._default_headers = {};
+		this._has_default_headers = false;
+	},
+
+  /**
+  * @description Method to terminate a transaction, if it has not reached readyState 4.
+  * @method abort
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest.
+  * @param {object} callback  User-defined callback object.
+  * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout.
+  * @return {boolean}
+   */
+	abort:function(o, callback, isTimeout)
+	{
+		var abortStatus,
+			args = (callback && callback.argument)?callback.argument:null;
+			o = o || {};
+
+		if(o.conn){
+			if(o.xhr){
+				if(this.isCallInProgress(o)){
+					// Issue abort request
+					o.conn.abort();
+
+					window.clearInterval(this._poll[o.tId]);
+					delete this._poll[o.tId];
+
+					if(isTimeout){
+						window.clearTimeout(this._timeOut[o.tId]);
+						delete this._timeOut[o.tId];
+					}
+
+					abortStatus = true;
+				}
+			}
+			else if(o.xdr){
+				o.conn.abort(o.tId);
+				abortStatus = true;
+			}
+		}
+		else if(o.upload){
+			var frameId = 'yuiIO' + o.tId;
+			var io = document.getElementById(frameId);
+
+			if(io){
+				// Remove all listeners on the iframe prior to
+				// its destruction.
+				YAHOO.util.Event.removeListener(io, "load");
+				// Destroy the iframe facilitating the transaction.
+				document.body.removeChild(io);
+
+				if(isTimeout){
+					window.clearTimeout(this._timeOut[o.tId]);
+					delete this._timeOut[o.tId];
+				}
+
+				abortStatus = true;
+			}
+		}
+		else{
+			abortStatus = false;
+		}
+
+		if(abortStatus === true){
+			// Fire global custom event -- abortEvent
+			this.abortEvent.fire(o, args);
+
+			if(o.abortEvent){
+				// Fire transaction custom event -- abortEvent
+				o.abortEvent.fire(o, args);
+			}
+
+			this.handleTransactionResponse(o, callback, true);
+		}
+
+		return abortStatus;
+	},
+
+  /**
+  * @description Determines if the transaction is still being processed.
+  * @method isCallInProgress
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest
+  * @return {boolean}
+   */
+	isCallInProgress:function(o)
+	{
+		o = o || {};
+		// if the XHR object assigned to the transaction has not been dereferenced,
+		// then check its readyState status.  Otherwise, return false.
+		if(o.xhr && o.conn){
+			return o.conn.readyState !== 4 && o.conn.readyState !== 0;
+		}
+		else if(o.xdr && o.conn){
+			return o.conn.isCallInProgress(o.tId);
+		}
+		else if(o.upload === true){
+			return document.getElementById('yuiIO' + o.tId)?true:false;
+		}
+		else{
+			return false;
+		}
+	},
+
+  /**
+  * @description Dereference the XHR instance and the connection object after the transaction is completed.
+  * @method releaseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @return {void}
+   */
+	releaseObject:function(o)
+	{
+		if(o && o.conn){
+			//dereference the XHR instance.
+			o.conn = null;
+
+
+			//dereference the connection object.
+			o = null;
+		}
+	}
+};
+
+/**
+ * @for Connect
+  */
+(function() {
+	var YCM = YAHOO.util.Connect, _fn = {};
+
+   /**
+   * @description This method creates and instantiates the Flash transport.
+   * @method _swf
+   * @private
+   * @static
+   * @param {string} URI to connection.swf.
+   * @return {void}
+    */
+	function _swf(uri) {
+		var o = '<object id="YUIConnectionSwf" type="application/x-shockwave-flash" data="' +
+		        uri + '" width="0" height="0">' +
+		     	'<param name="movie" value="' + uri + '">' +
+                '<param name="allowScriptAccess" value="always">' +
+		    	'</object>',
+		    c = document.createElement('div');
+
+		document.body.appendChild(c);
+		c.innerHTML = o;
+	}
+
+   /**
+   * @description This method calls the public method on the
+    * Flash transport to start the XDR transaction.  It is analogous
+    * to Connection Manager's asyncRequest method.
+   * @method xdr
+   * @private
+   * @static
+   * @param {object} The transaction object.
+   * @param {string} HTTP request method.
+   * @param {string} URI for the transaction.
+   * @param {object} The transaction's callback object.
+   * @param {object} The JSON object used as HTTP POST data.
+   * @return {void}
+    */
+	function _xdr(o, m, u, c, d) {
+		_fn[parseInt(o.tId)] = { 'o':o, 'c':c };
+		if (d) {
+			c.method = m;
+			c.data = d;
+		}
+
+		o.conn.send(u, c, o.tId);
+	}
+
+   /**
+   * @description This method instantiates the Flash transport and
+    * establishes a static reference to it, used for all XDR requests.
+   * @method transport
+   * @public
+   * @static
+   * @param {string} URI to connection.swf.
+   * @return {void}
+    */
+	function _init(uri) {
+		_swf(uri);
+		YCM._transport = document.getElementById('YUIConnectionSwf');
+	}
+
+	function _xdrReady() {
+		YCM.xdrReadyEvent.fire();
+	}
+
+   /**
+   * @description This method fires the global and transaction start
+    * events.
+   * @method _xdrStart
+   * @private
+   * @static
+   * @param {object} The transaction object.
+   * @param {string} The transaction's callback object.
+   * @return {void}
+    */
+	function _xdrStart(o, cb) {
+		if (o) {
+			// Fire global custom event -- startEvent
+			YCM.startEvent.fire(o, cb.argument);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, cb.argument);
+			}
+		}
+	}
+
+   /**
+   * @description This method is the initial response handler
+    * for XDR transactions.  The Flash transport calls this
+    * function and sends the response payload.
+   * @method handleXdrResponse
+   * @private
+   * @static
+   * @param {object} The response object sent from the Flash transport.
+   * @return {void}
+    */
+	function _handleXdrResponse(r) {
+		var o = _fn[r.tId].o,
+			cb = _fn[r.tId].c;
+
+		if (r.statusText === 'xdr:start') {
+			_xdrStart(o, cb);
+			return;
+		}
+
+		r.responseText = decodeURI(r.responseText);
+		o.r = r;
+		if (cb.argument) {
+			o.r.argument = cb.argument;
+		}
+
+		this.handleTransactionResponse(o, cb, r.statusText === 'xdr:abort' ? true : false);
+		delete _fn[r.tId];
+	}
+
+	// Bind the functions to Connection Manager as static fields.
+	YCM.xdr = _xdr;
+	YCM.swf = _swf;
+	YCM.transport = _init;
+	YCM.xdrReadyEvent = new YAHOO.util.CustomEvent('xdrReady');
+	YCM.xdrReady = _xdrReady;
+	YCM.handleXdrResponse = _handleXdrResponse;
+})();
+
+/**
+ * @for Connect
+  */
+(function(){
+	var YCM = YAHOO.util.Connect,
+		YE = YAHOO.util.Event;
+   /**
+	* @description Property modified by setForm() to determine if the data
+	* should be submitted as an HTML form.
+	* @property _isFormSubmit
+	* @private
+	* @static
+	* @type boolean
+	*/
+	YCM._isFormSubmit = false;
+
+   /**
+	* @description Property modified by setForm() to determine if a file(s)
+	* upload is expected.
+	* @property _isFileUpload
+	* @private
+	* @static
+	* @type boolean
+	*/
+	YCM._isFileUpload = false;
+
+   /**
+	* @description Property modified by setForm() to set a reference to the HTML
+	* form node if the desired action is file upload.
+	* @property _formNode
+	* @private
+	* @static
+	* @type object
+	*/
+	YCM._formNode = null;
+
+   /**
+	* @description Property modified by setForm() to set the HTML form data
+	* for each transaction.
+	* @property _sFormData
+	* @private
+	* @static
+	* @type string
+	*/
+	YCM._sFormData = null;
+
+   /**
+	* @description Tracks the name-value pair of the "clicked" submit button if multiple submit
+	* buttons are present in an HTML form; and, if YAHOO.util.Event is available.
+	* @property _submitElementValue
+	* @private
+	* @static
+	* @type string
+	*/
+	YCM._submitElementValue = null;
+
+   /**
+   * @description Custom event that fires when handleTransactionResponse() determines a
+    * response in the HTTP 4xx/5xx range.
+   * @property failureEvent
+   * @private
+   * @static
+   * @type CustomEvent
+    */
+	YCM.uploadEvent = new YAHOO.util.CustomEvent('upload'),
+
+   /**
+	* @description Determines whether YAHOO.util.Event is available and returns true or false.
+	* If true, an event listener is bound at the document level to trap click events that
+	* resolve to a target type of "Submit".  This listener will enable setForm() to determine
+	* the clicked "Submit" value in a multi-Submit button, HTML form.
+	* @property _hasSubmitListener
+	* @private
+	* @static
+	*/
+	YCM._hasSubmitListener = function() {
+		if(YE){
+			YE.addListener(
+				document,
+				'click',
+				function(e){
+					var obj = YE.getTarget(e),
+						name = obj.nodeName.toLowerCase();
+
+					if((name === 'input' || name === 'button') && (obj.type && obj.type.toLowerCase() == 'submit')){
+						YCM._submitElementValue = encodeURIComponent(obj.name) + "=" + encodeURIComponent(obj.value);
+					}
+				});
+			return true;
+		}
+		return false;
+	}();
+
+  /**
+  * @description This method assembles the form label and value pairs and
+   * constructs an encoded string.
+   * asyncRequest() will automatically initialize the transaction with a
+   * a HTTP header Content-Type of application/x-www-form-urlencoded.
+  * @method setForm
+  * @public
+  * @static
+  * @param {string || object} form id or name attribute, or form object.
+  * @param {boolean} optional enable file upload.
+  * @param {boolean} optional enable file upload over SSL in IE only.
+  * @return {string} string of the HTML form field name and value pairs..
+   */
+	function _setForm(formId, isUpload, secureUri)
+	{
+		var oForm, oElement, oName, oValue, oDisabled,
+			hasSubmit = false,
+			data = [], item = 0,
+			i,len,j,jlen,opt;
+
+		this.resetFormState();
+
+		if(typeof formId == 'string'){
+			// Determine if the argument is a form id or a form name.
+			// Note form name usage is deprecated by supported
+			// here for legacy reasons.
+			oForm = (document.getElementById(formId) || document.forms[formId]);
+		}
+		else if(typeof formId == 'object'){
+			// Treat argument as an HTML form object.
+			oForm = formId;
+		}
+		else{
+			return;
+		}
+
+		// If the isUpload argument is true, setForm will call createFrame to initialize
+		// an iframe as the form target.
+		//
+		// The argument secureURI is also required by IE in SSL environments
+		// where the secureURI string is a fully qualified HTTP path, used to set the source
+		// of the iframe, to a stub resource in the same domain.
+		if(isUpload){
+
+			// Create iframe in preparation for file upload.
+			this.createFrame(secureUri?secureUri:null);
+
+			// Set form reference and file upload properties to true.
+			this._isFormSubmit = true;
+			this._isFileUpload = true;
+			this._formNode = oForm;
+
+			return;
+		}
+
+		// Iterate over the form elements collection to construct the
+		// label-value pairs.
+		for (i=0,len=oForm.elements.length; i<len; ++i){
+			oElement  = oForm.elements[i];
+			oDisabled = oElement.disabled;
+			oName     = oElement.name;
+
+			// Do not submit fields that are disabled or
+			// do not have a name attribute value.
+			if(!oDisabled && oName)
+			{
+				oName  = encodeURIComponent(oName)+'=';
+				oValue = encodeURIComponent(oElement.value);
+
+				switch(oElement.type)
+				{
+					// Safari, Opera, FF all default opt.value from .text if
+					// value attribute not specified in markup
+					case 'select-one':
+						if (oElement.selectedIndex > -1) {
+							opt = oElement.options[oElement.selectedIndex];
+							data[item++] = oName + encodeURIComponent(
+								(opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
+						}
+						break;
+					case 'select-multiple':
+						if (oElement.selectedIndex > -1) {
+							for(j=oElement.selectedIndex, jlen=oElement.options.length; j<jlen; ++j){
+								opt = oElement.options[j];
+								if (opt.selected) {
+									data[item++] = oName + encodeURIComponent(
+										(opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
+								}
+							}
+						}
+						break;
+					case 'radio':
+					case 'checkbox':
+						if(oElement.checked){
+							data[item++] = oName + oValue;
+						}
+						break;
+					case 'file':
+						// stub case as XMLHttpRequest will only send the file path as a string.
+					case undefined:
+						// stub case for fieldset element which returns undefined.
+					case 'reset':
+						// stub case for input type reset button.
+					case 'button':
+						// stub case for input type button elements.
+						break;
+					case 'submit':
+						if(hasSubmit === false){
+							if(this._hasSubmitListener && this._submitElementValue){
+								data[item++] = this._submitElementValue;
+							}
+							hasSubmit = true;
+						}
+						break;
+					default:
+						data[item++] = oName + oValue;
+				}
+			}
+		}
+
+		this._isFormSubmit = true;
+		this._sFormData = data.join('&');
+
+
+		this.initHeader('Content-Type', this._default_form_header);
+
+		return this._sFormData;
+	}
+
+   /**
+   * @description Resets HTML form properties when an HTML form or HTML form
+    * with file upload transaction is sent.
+   * @method resetFormState
+   * @private
+   * @static
+   * @return {void}
+    */
+	function _resetFormState(){
+		this._isFormSubmit = false;
+		this._isFileUpload = false;
+		this._formNode = null;
+		this._sFormData = "";
+	}
+
+
+   /**
+   * @description Creates an iframe to be used for form file uploads.  It is remove from the
+    * document upon completion of the upload transaction.
+   * @method createFrame
+   * @private
+   * @static
+   * @param {string} optional qualified path of iframe resource for SSL in IE.
+   * @return {void}
+    */
+	function _createFrame(secureUri){
+
+		// IE does not allow the setting of id and name attributes as object
+		// properties via createElement().  A different iframe creation
+		// pattern is required for IE.
+		var frameId = 'yuiIO' + this._transaction_id,
+			io;
+		if(YAHOO.env.ua.ie){
+			io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
+
+			// IE will throw a security exception in an SSL environment if the
+			// iframe source is undefined.
+			if(typeof secureUri == 'boolean'){
+				io.src = 'javascript:false';
+			}
+		}
+		else{
+			io = document.createElement('iframe');
+			io.id = frameId;
+			io.name = frameId;
+		}
+
+		io.style.position = 'absolute';
+		io.style.top = '-1000px';
+		io.style.left = '-1000px';
+
+		document.body.appendChild(io);
+	}
+
+   /**
+   * @description Parses the POST data and creates hidden form elements
+    * for each key-value, and appends them to the HTML form object.
+   * @method appendPostData
+   * @private
+   * @static
+   * @param {string} postData The HTTP POST data
+   * @return {array} formElements Collection of hidden fields.
+    */
+	function _appendPostData(postData){
+		var formElements = [],
+			postMessage = postData.split('&'),
+			i, delimitPos;
+
+		for(i=0; i < postMessage.length; i++){
+			delimitPos = postMessage[i].indexOf('=');
+			if(delimitPos != -1){
+				formElements[i] = document.createElement('input');
+				formElements[i].type = 'hidden';
+				formElements[i].name = decodeURIComponent(postMessage[i].substring(0,delimitPos));
+				formElements[i].value = decodeURIComponent(postMessage[i].substring(delimitPos+1));
+				this._formNode.appendChild(formElements[i]);
+			}
+		}
+
+		return formElements;
+	}
+
+   /**
+   * @description Uploads HTML form, inclusive of files/attachments, using the
+    * iframe created in createFrame to facilitate the transaction.
+   * @method uploadFile
+   * @private
+   * @static
+   * @param {int} id The transaction id.
+   * @param {object} callback User-defined callback object.
+   * @param {string} uri Fully qualified path of resource.
+   * @param {string} postData POST data to be submitted in addition to HTML form.
+   * @return {void}
+    */
+	function _uploadFile(o, callback, uri, postData){
+		// Each iframe has an id prefix of "yuiIO" followed
+		// by the unique transaction id.
+		var frameId = 'yuiIO' + o.tId,
+		    uploadEncoding = 'multipart/form-data',
+		    io = document.getElementById(frameId),
+		    ie8 = (document.documentMode && document.documentMode === 8) ? true : false,
+		    oConn = this,
+			args = (callback && callback.argument)?callback.argument:null,
+            oElements,i,prop,obj, rawFormAttributes, uploadCallback;
+
+		// Track original HTML form attribute values.
+		rawFormAttributes = {
+			action:this._formNode.getAttribute('action'),
+			method:this._formNode.getAttribute('method'),
+			target:this._formNode.getAttribute('target')
+		};
+
+		// Initialize the HTML form properties in case they are
+		// not defined in the HTML form.
+		this._formNode.setAttribute('action', uri);
+		this._formNode.setAttribute('method', 'POST');
+		this._formNode.setAttribute('target', frameId);
+
+		if(YAHOO.env.ua.ie && !ie8){
+			// IE does not respect property enctype for HTML forms.
+			// Instead it uses the property - "encoding".
+			this._formNode.setAttribute('encoding', uploadEncoding);
+		}
+		else{
+			this._formNode.setAttribute('enctype', uploadEncoding);
+		}
+
+		if(postData){
+			oElements = this.appendPostData(postData);
+		}
+
+		// Start file upload.
+		this._formNode.submit();
+
+		// Fire global custom event -- startEvent
+		this.startEvent.fire(o, args);
+
+		if(o.startEvent){
+			// Fire transaction custom event -- startEvent
+			o.startEvent.fire(o, args);
+		}
+
+		// Start polling if a callback is present and the timeout
+		// property has been defined.
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		// Remove HTML elements created by appendPostData
+		if(oElements && oElements.length > 0){
+			for(i=0; i < oElements.length; i++){
+				this._formNode.removeChild(oElements[i]);
+			}
+		}
+
+		// Restore HTML form attributes to their original
+		// values prior to file upload.
+		for(prop in rawFormAttributes){
+			if(YAHOO.lang.hasOwnProperty(rawFormAttributes, prop)){
+				if(rawFormAttributes[prop]){
+					this._formNode.setAttribute(prop, rawFormAttributes[prop]);
+				}
+				else{
+					this._formNode.removeAttribute(prop);
+				}
+			}
+		}
+
+		// Reset HTML form state properties.
+		this.resetFormState();
+
+		// Create the upload callback handler that fires when the iframe
+		// receives the load event.  Subsequently, the event handler is detached
+		// and the iframe removed from the document.
+		uploadCallback = function() {
+			if(callback && callback.timeout){
+				window.clearTimeout(oConn._timeOut[o.tId]);
+				delete oConn._timeOut[o.tId];
+			}
+
+			// Fire global custom event -- completeEvent
+			oConn.completeEvent.fire(o, args);
+
+			if(o.completeEvent){
+				// Fire transaction custom event -- completeEvent
+				o.completeEvent.fire(o, args);
+			}
+
+			obj = {
+			    tId : o.tId,
+			    argument : callback.argument
+            };
+
+			try
+			{
+				// responseText and responseXML will be populated with the same data from the iframe.
+				// Since the HTTP headers cannot be read from the iframe
+				obj.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:io.contentWindow.document.documentElement.textContent;
+				obj.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
+			}
+			catch(e){}
+
+			if(callback && callback.upload){
+				if(!callback.scope){
+					callback.upload(obj);
+				}
+				else{
+					callback.upload.apply(callback.scope, [obj]);
+				}
+			}
+
+			// Fire global custom event -- uploadEvent
+			oConn.uploadEvent.fire(obj);
+
+			if(o.uploadEvent){
+				// Fire transaction custom event -- uploadEvent
+				o.uploadEvent.fire(obj);
+			}
+
+			YE.removeListener(io, "load", uploadCallback);
+
+			setTimeout(
+				function(){
+					document.body.removeChild(io);
+					oConn.releaseObject(o);
+				}, 100);
+		};
+
+		// Bind the onload handler to the iframe to detect the file upload response.
+		YE.addListener(io, "load", uploadCallback);
+	}
+
+	YCM.setForm = _setForm;
+	YCM.resetFormState = _resetFormState;
+	YCM.createFrame = _createFrame;
+	YCM.appendPostData = _appendPostData;
+	YCM.uploadFile = _uploadFile;
+})();
+
+YAHOO.register("connection", YAHOO.util.Connect, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/connection/connection.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/connection/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         yui
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/connection/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection-debug.js	(revision 1610)
@@ -0,0 +1,1576 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The Connection Manager provides a simplified interface to the XMLHttpRequest
+ * object.  It handles cross-browser instantiantion of XMLHttpRequest, negotiates the
+ * interactive states and server response, returning the results to a pre-defined
+ * callback you create.
+ *
+ * @namespace YAHOO.util
+ * @module connection
+ * @requires yahoo
+ * @requires event
+ */
+
+/**
+ * The Connection Manager singleton provides methods for creating and managing
+ * asynchronous transactions.
+ *
+ * @class Connect
+ */
+
+YAHOO.util.Connect =
+{
+  /**
+  * @description Array of MSFT ActiveX ids for XMLHttpRequest.
+  * @property _msxml_progid
+  * @private
+  * @static
+  * @type array
+   */
+	_msxml_progid:[
+		'Microsoft.XMLHTTP',
+		'MSXML2.XMLHTTP.3.0',
+		'MSXML2.XMLHTTP'
+		],
+
+  /**
+  * @description Object literal of HTTP header(s)
+  * @property _http_header
+  * @private
+  * @static
+  * @type object
+   */
+	_http_headers:{},
+
+  /**
+  * @description Determines if HTTP headers are set.
+  * @property _has_http_headers
+  * @private
+  * @static
+  * @type boolean
+   */
+	_has_http_headers:false,
+
+ /**
+ * @description Determines if a default header of
+  * Content-Type of 'application/x-www-form-urlencoded'
+  * will be added to any client HTTP headers sent for POST
+  * transactions.
+ * @property _use_default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_post_header:true,
+
+ /**
+ * @description The default header used for POST transactions.
+ * @property _default_post_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_post_header:'application/x-www-form-urlencoded; charset=UTF-8',
+
+ /**
+ * @description The default header used for transactions involving the
+  * use of HTML forms.
+ * @property _default_form_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_form_header:'application/x-www-form-urlencoded',
+
+ /**
+ * @description Determines if a default header of
+  * 'X-Requested-With: XMLHttpRequest'
+  * will be added to each transaction.
+ * @property _use_default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _use_default_xhr_header:true,
+
+ /**
+ * @description The default header value for the label
+  * "X-Requested-With".  This is sent with each
+  * transaction, by default, to identify the
+  * request as being made by YUI Connection Manager.
+ * @property _default_xhr_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_xhr_header:'XMLHttpRequest',
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _has_default_headers:true,
+
+ /**
+ * @description Determines if custom, default headers
+  * are set for each transaction.
+ * @property _has_default_header
+ * @private
+ * @static
+ * @type boolean
+  */
+    _default_headers:{},
+
+ /**
+ * @description Collection of polling references to the polling mechanism in handleReadyState.
+ * @property _poll
+ * @private
+ * @static
+ * @type object
+  */
+    _poll:{},
+
+ /**
+ * @description Queue of timeout values for each transaction callback with a defined timeout value.
+ * @property _timeOut
+ * @private
+ * @static
+ * @type object
+  */
+    _timeOut:{},
+
+  /**
+  * @description The polling frequency, in milliseconds, for HandleReadyState.
+   * when attempting to determine a transaction's XHR readyState.
+   * The default is 50 milliseconds.
+  * @property _polling_interval
+  * @private
+  * @static
+  * @type int
+   */
+     _polling_interval:50,
+
+  /**
+  * @description A transaction counter that increments the transaction id for each transaction.
+  * @property _transaction_id
+  * @private
+  * @static
+  * @type int
+   */
+     _transaction_id:0,
+
+  /**
+  * @description Custom event that fires at the start of a transaction
+  * @property startEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	startEvent: new YAHOO.util.CustomEvent('start'),
+
+  /**
+  * @description Custom event that fires when a transaction response has completed.
+  * @property completeEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	completeEvent: new YAHOO.util.CustomEvent('complete'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 2xx range.
+  * @property successEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	successEvent: new YAHOO.util.CustomEvent('success'),
+
+  /**
+  * @description Custom event that fires when handleTransactionResponse() determines a
+   * response in the HTTP 4xx/5xx range.
+  * @property failureEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	failureEvent: new YAHOO.util.CustomEvent('failure'),
+
+  /**
+  * @description Custom event that fires when a transaction is successfully aborted.
+  * @property abortEvent
+  * @private
+  * @static
+  * @type CustomEvent
+   */
+	abortEvent: new YAHOO.util.CustomEvent('abort'),
+
+  /**
+  * @description A reference table that maps callback custom events members to its specific
+   * event name.
+  * @property _customEvents
+  * @private
+  * @static
+  * @type object
+   */
+	_customEvents:
+	{
+		onStart:['startEvent', 'start'],
+		onComplete:['completeEvent', 'complete'],
+		onSuccess:['successEvent', 'success'],
+		onFailure:['failureEvent', 'failure'],
+		onUpload:['uploadEvent', 'upload'],
+		onAbort:['abortEvent', 'abort']
+	},
+
+  /**
+  * @description Member to add an ActiveX id to the existing xml_progid array.
+   * In the event(unlikely) a new ActiveX id is introduced, it can be added
+   * without internal code modifications.
+  * @method setProgId
+  * @public
+  * @static
+  * @param {string} id The ActiveX id to be added to initialize the XHR object.
+  * @return void
+   */
+	setProgId:function(id)
+	{
+		this._msxml_progid.unshift(id);
+		YAHOO.log('ActiveX Program Id  ' + id + ' added to _msxml_progid.', 'info', 'Connection');
+	},
+
+  /**
+  * @description Member to override the default POST header.
+  * @method setDefaultPostHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultPostHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_post_header = b;
+			YAHOO.log('Default POST header set to  ' + b, 'info', 'Connection');
+		}
+		else if(typeof b == 'boolean'){
+			this._use_default_post_header = b;
+		}
+	},
+
+  /**
+  * @description Member to override the default transaction header..
+  * @method setDefaultXhrHeader
+  * @public
+  * @static
+  * @param {boolean} b Set and use default header - true or false .
+  * @return void
+   */
+	setDefaultXhrHeader:function(b)
+	{
+		if(typeof b == 'string'){
+			this._default_xhr_header = b;
+			YAHOO.log('Default XHR header set to  ' + b, 'info', 'Connection');
+		}
+		else{
+			this._use_default_xhr_header = b;
+		}
+	},
+
+  /**
+  * @description Member to modify the default polling interval.
+  * @method setPollingInterval
+  * @public
+  * @static
+  * @param {int} i The polling interval in milliseconds.
+  * @return void
+   */
+	setPollingInterval:function(i)
+	{
+		if(typeof i == 'number' && isFinite(i)){
+			this._polling_interval = i;
+			YAHOO.log('Default polling interval set to ' + i +'ms', 'info', 'Connection');
+		}
+	},
+
+  /**
+  * @description Instantiates a XMLHttpRequest object and returns an object with two properties:
+   * the XMLHttpRequest instance and the transaction id.
+  * @method createXhrObject
+  * @private
+  * @static
+  * @param {int} transactionId Property containing the transaction id for this transaction.
+  * @return object
+   */
+	createXhrObject:function(transactionId)
+	{
+		var obj,http,i;
+		try
+		{
+			// Instantiates XMLHttpRequest in non-IE browsers and assigns to http.
+			http = new XMLHttpRequest();
+			//  Object literal with http and tId properties
+			obj = { conn:http, tId:transactionId, xhr: true };
+			YAHOO.log('XHR object created for transaction ' + transactionId, 'info', 'Connection');
+		}
+		catch(e)
+		{
+			for(i=0; i<this._msxml_progid.length; ++i){
+				try
+				{
+					// Instantiates XMLHttpRequest for IE and assign to http
+					http = new ActiveXObject(this._msxml_progid[i]);
+					//  Object literal with conn and tId properties
+					obj = { conn:http, tId:transactionId, xhr: true };
+					YAHOO.log('ActiveX XHR object created for transaction ' + transactionId, 'info', 'Connection');
+					break;
+				}
+				catch(e1){}
+			}
+		}
+		finally
+		{
+			return obj;
+		}
+	},
+
+  /**
+  * @description This method is called by asyncRequest to create a
+   * valid connection object for the transaction.  It also passes a
+   * transaction id and increments the transaction id counter.
+  * @method getConnectionObject
+  * @private
+  * @static
+  * @return {object}
+   */
+	getConnectionObject:function(t)
+	{
+		var o, tId = this._transaction_id;
+
+		try
+		{
+			if(!t){
+				o = this.createXhrObject(tId);
+			}
+			else{
+				o = {tId:tId};
+				if(t==='xdr'){
+					o.conn = this._transport;
+					o.xdr = true;
+				}
+				else if(t==='upload'){
+					o.upload = true;
+				}
+			}
+
+			if(o){
+				this._transaction_id++;
+			}
+		}
+		catch(e){}
+		return o;
+	},
+
+  /**
+  * @description Method for initiating an asynchronous request via the XHR object.
+  * @method asyncRequest
+  * @public
+  * @static
+  * @param {string} method HTTP transaction method
+  * @param {string} uri Fully qualified path of resource
+  * @param {callback} callback User-defined callback function or object
+  * @param {string} postData POST body
+  * @return {object} Returns the connection object
+   */
+	asyncRequest:function(method, uri, callback, postData)
+	{
+		var o,t,args = (callback && callback.argument)?callback.argument:null;
+
+		if(this._isFileUpload){
+			t = 'upload';
+		}
+		else if(callback.xdr){
+			t = 'xdr';
+		}
+
+		o = this.getConnectionObject(t);
+		if(!o){
+			YAHOO.log('Unable to create connection object.', 'error', 'Connection');
+			return null;
+		}
+		else{
+
+			// Intialize any transaction-specific custom events, if provided.
+			if(callback && callback.customevents){
+				this.initCustomEvents(o, callback);
+			}
+
+			if(this._isFormSubmit){
+				if(this._isFileUpload){
+					this.uploadFile(o, callback, uri, postData);
+					return o;
+				}
+
+				// If the specified HTTP method is GET, setForm() will return an
+				// encoded string that is concatenated to the uri to
+				// create a querystring.
+				if(method.toUpperCase() == 'GET'){
+					if(this._sFormData.length !== 0){
+						// If the URI already contains a querystring, append an ampersand
+						// and then concatenate _sFormData to the URI.
+						uri += ((uri.indexOf('?') == -1)?'?':'&') + this._sFormData;
+					}
+				}
+				else if(method.toUpperCase() == 'POST'){
+					// If POST data exist in addition to the HTML form data,
+					// it will be concatenated to the form data.
+					postData = postData?this._sFormData + "&" + postData:this._sFormData;
+				}
+			}
+
+			if(method.toUpperCase() == 'GET' && (callback && callback.cache === false)){
+				// If callback.cache is defined and set to false, a
+				// timestamp value will be added to the querystring.
+				uri += ((uri.indexOf('?') == -1)?'?':'&') + "rnd=" + new Date().valueOf().toString();
+			}
+
+			// Each transaction will automatically include a custom header of
+			// "X-Requested-With: XMLHttpRequest" to identify the request as
+			// having originated from Connection Manager.
+			if(this._use_default_xhr_header){
+				if(!this._default_headers['X-Requested-With']){
+					this.initHeader('X-Requested-With', this._default_xhr_header, true);
+					YAHOO.log('Initialize transaction header X-Request-Header to XMLHttpRequest.', 'info', 'Connection');
+				}
+			}
+
+			//If the transaction method is POST and the POST header value is set to true
+			//or a custom value, initalize the Content-Type header to this value.
+			if((method.toUpperCase() === 'POST' && this._use_default_post_header) && this._isFormSubmit === false){
+				this.initHeader('Content-Type', this._default_post_header);
+				YAHOO.log('Initialize header Content-Type to application/x-www-form-urlencoded; UTF-8 for POST transaction.', 'info', 'Connection');
+			}
+
+			if(o.xdr){
+				this.xdr(o, method, uri, callback, postData);
+				return o;
+			}
+
+			o.conn.open(method, uri, true);
+			//Initialize all default and custom HTTP headers,
+			if(this._has_default_headers || this._has_http_headers){
+				this.setHeader(o);
+			}
+
+			this.handleReadyState(o, callback);
+			o.conn.send(postData || '');
+			YAHOO.log('Transaction ' + o.tId + ' sent.', 'info', 'Connection');
+
+			// Reset the HTML form data and state properties as
+			// soon as the data are submitted.
+			if(this._isFormSubmit === true){
+				this.resetFormState();
+			}
+
+			// Fire global custom event -- startEvent
+			this.startEvent.fire(o, args);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, args);
+			}
+
+			return o;
+		}
+	},
+
+  /**
+  * @description This method creates and subscribes custom events,
+   * specific to each transaction
+  * @method initCustomEvents
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+	initCustomEvents:function(o, callback)
+	{
+		var prop;
+		// Enumerate through callback.customevents members and bind/subscribe
+		// events that match in the _customEvents table.
+		for(prop in callback.customevents){
+			if(this._customEvents[prop][0]){
+				// Create the custom event
+				o[this._customEvents[prop][0]] = new YAHOO.util.CustomEvent(this._customEvents[prop][1], (callback.scope)?callback.scope:null);
+				YAHOO.log('Transaction-specific Custom Event ' + o[this._customEvents[prop][1]] + ' created.', 'info', 'Connection');
+
+				// Subscribe the custom event
+				o[this._customEvents[prop][0]].subscribe(callback.customevents[prop]);
+				YAHOO.log('Transaction-specific Custom Event ' + o[this._customEvents[prop][1]] + ' subscribed.', 'info', 'Connection');
+			}
+		}
+	},
+
+  /**
+  * @description This method serves as a timer that polls the XHR object's readyState
+   * property during a transaction, instead of binding a callback to the
+   * onreadystatechange event.  Upon readyState 4, handleTransactionResponse
+   * will process the response, and the timer will be cleared.
+  * @method handleReadyState
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callback} callback The user-defined callback object
+  * @return {void}
+   */
+
+    handleReadyState:function(o, callback)
+
+    {
+		var oConn = this,
+			args = (callback && callback.argument)?callback.argument:null;
+
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		this._poll[o.tId] = window.setInterval(
+			function(){
+				if(o.conn && o.conn.readyState === 4){
+
+					// Clear the polling interval for the transaction
+					// and remove the reference from _poll.
+					window.clearInterval(oConn._poll[o.tId]);
+					delete oConn._poll[o.tId];
+
+					if(callback && callback.timeout){
+						window.clearTimeout(oConn._timeOut[o.tId]);
+						delete oConn._timeOut[o.tId];
+					}
+
+					// Fire global custom event -- completeEvent
+					oConn.completeEvent.fire(o, args);
+
+					if(o.completeEvent){
+						// Fire transaction custom event -- completeEvent
+						o.completeEvent.fire(o, args);
+					}
+
+					oConn.handleTransactionResponse(o, callback);
+				}
+			}
+		,this._polling_interval);
+    },
+
+  /**
+  * @description This method attempts to interpret the server response and
+   * determine whether the transaction was successful, or if an error or
+   * exception was encountered.
+  * @method handleTransactionResponse
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {object} callback The user-defined callback object
+  * @param {boolean} isAbort Determines if the transaction was terminated via abort().
+  * @return {void}
+   */
+    handleTransactionResponse:function(o, callback, isAbort)
+    {
+		var httpStatus, responseObject,
+			args = (callback && callback.argument)?callback.argument:null,
+			xdrS = (o.r && o.r.statusText === 'xdr:success')?true:false,
+			xdrF = (o.r && o.r.statusText === 'xdr:failure')?true:false,
+			xdrA = isAbort;
+
+		try
+		{
+			if((o.conn.status !== undefined && o.conn.status !== 0) || xdrS){
+				// XDR requests will not have HTTP status defined. The
+				// statusText property will define the response status
+				// set by the Flash transport.
+				httpStatus = o.conn.status;
+			}
+			else if(xdrF && !xdrA){
+				// Set XDR transaction failure to a status of 0, which
+				// resolves as an HTTP failure, instead of an exception.
+				httpStatus = 0;
+			}
+			else{
+				httpStatus = 13030;
+			}
+		}
+		catch(e){
+
+			 // 13030 is a custom code to indicate the condition -- in Mozilla/FF --
+			 // when the XHR object's status and statusText properties are
+			 // unavailable, and a query attempt throws an exception.
+			httpStatus = 13030;
+		}
+
+		if((httpStatus >= 200 && httpStatus < 300) || httpStatus === 1223 || xdrS){
+			responseObject = o.xdr ? o.r : this.createResponseObject(o, args);
+			if(callback && callback.success){
+				if(!callback.scope){
+					callback.success(responseObject);
+					YAHOO.log('Success callback. HTTP code is ' + httpStatus, 'info', 'Connection');
+				}
+				else{
+					// If a scope property is defined, the callback will be fired from
+					// the context of the object.
+					callback.success.apply(callback.scope, [responseObject]);
+					YAHOO.log('Success callback with scope. HTTP code is ' + httpStatus, 'info', 'Connection');
+				}
+			}
+
+			// Fire global custom event -- successEvent
+			this.successEvent.fire(responseObject);
+
+			if(o.successEvent){
+				// Fire transaction custom event -- successEvent
+				o.successEvent.fire(responseObject);
+			}
+		}
+		else{
+			switch(httpStatus){
+				// The following cases are wininet.dll error codes that may be encountered.
+				case 12002: // Server timeout
+				case 12029: // 12029 to 12031 correspond to dropped connections.
+				case 12030:
+				case 12031:
+				case 12152: // Connection closed by server.
+				case 13030: // See above comments for variable status.
+					// XDR transactions will not resolve to this case, since the
+					// response object is already built in the xdr response.
+					responseObject = this.createExceptionObject(o.tId, args, (isAbort?isAbort:false));
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+							YAHOO.log('Failure callback. Exception detected. Status code is ' + httpStatus, 'warn', 'Connection');
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+							YAHOO.log('Failure callback with scope. Exception detected. Status code is ' + httpStatus, 'warn', 'Connection');
+						}
+					}
+
+					break;
+				default:
+					responseObject = (o.xdr) ? o.response : this.createResponseObject(o, args);
+					if(callback && callback.failure){
+						if(!callback.scope){
+							callback.failure(responseObject);
+							YAHOO.log('Failure callback. HTTP status code is ' + httpStatus, 'warn', 'Connection');
+						}
+						else{
+							callback.failure.apply(callback.scope, [responseObject]);
+							YAHOO.log('Failure callback with scope. HTTP status code is ' + httpStatus, 'warn', 'Connection');
+						}
+					}
+			}
+
+			// Fire global custom event -- failureEvent
+			this.failureEvent.fire(responseObject);
+
+			if(o.failureEvent){
+				// Fire transaction custom event -- failureEvent
+				o.failureEvent.fire(responseObject);
+			}
+
+		}
+
+		this.releaseObject(o);
+		responseObject = null;
+    },
+
+  /**
+  * @description This method evaluates the server response, creates and returns the results via
+   * its properties.  Success and failure cases will differ in the response
+   * object's property values.
+  * @method createResponseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @return {object}
+   */
+    createResponseObject:function(o, callbackArg)
+    {
+		var obj = {}, headerObj = {},
+			i, headerStr, header, delimitPos;
+
+		try
+		{
+			headerStr = o.conn.getAllResponseHeaders();
+			header = headerStr.split('\n');
+			for(i=0; i<header.length; i++){
+				delimitPos = header[i].indexOf(':');
+				if(delimitPos != -1){
+					headerObj[header[i].substring(0,delimitPos)] = YAHOO.lang.trim(header[i].substring(delimitPos+2));
+				}
+			}
+		}
+		catch(e){}
+
+		obj.tId = o.tId;
+		// Normalize IE's response to HTTP 204 when Win error 1223.
+		obj.status = (o.conn.status == 1223)?204:o.conn.status;
+		// Normalize IE's statusText to "No Content" instead of "Unknown".
+		obj.statusText = (o.conn.status == 1223)?"No Content":o.conn.statusText;
+		obj.getResponseHeader = headerObj;
+		obj.getAllResponseHeaders = headerStr;
+		obj.responseText = o.conn.responseText;
+		obj.responseXML = o.conn.responseXML;
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description If a transaction cannot be completed due to dropped or closed connections,
+   * there may be not be enough information to build a full response object.
+   * The failure callback will be fired and this specific condition can be identified
+   * by a status property value of 0.
+   *
+   * If an abort was successful, the status property will report a value of -1.
+   *
+  * @method createExceptionObject
+  * @private
+  * @static
+  * @param {int} tId The Transaction Id
+  * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback
+  * @param {boolean} isAbort Determines if the exception case is caused by a transaction abort
+  * @return {object}
+   */
+    createExceptionObject:function(tId, callbackArg, isAbort)
+    {
+		var COMM_CODE = 0,
+			COMM_ERROR = 'communication failure',
+			ABORT_CODE = -1,
+			ABORT_ERROR = 'transaction aborted',
+			obj = {};
+
+		obj.tId = tId;
+		if(isAbort){
+			obj.status = ABORT_CODE;
+			obj.statusText = ABORT_ERROR;
+		}
+		else{
+			obj.status = COMM_CODE;
+			obj.statusText = COMM_ERROR;
+		}
+
+		if(callbackArg){
+			obj.argument = callbackArg;
+		}
+
+		return obj;
+    },
+
+  /**
+  * @description Method that initializes the custom HTTP headers for the each transaction.
+  * @method initHeader
+  * @public
+  * @static
+  * @param {string} label The HTTP header label
+  * @param {string} value The HTTP header value
+  * @param {string} isDefault Determines if the specific header is a default header
+   * automatically sent with each transaction.
+  * @return {void}
+   */
+	initHeader:function(label, value, isDefault)
+	{
+		var headerObj = (isDefault)?this._default_headers:this._http_headers;
+
+		headerObj[label] = value;
+		if(isDefault){
+			this._has_default_headers = true;
+		}
+		else{
+			this._has_http_headers = true;
+		}
+	},
+
+
+  /**
+  * @description Accessor that sets the HTTP headers for each transaction.
+  * @method setHeader
+  * @private
+  * @static
+  * @param {object} o The connection object for the transaction.
+  * @return {void}
+   */
+	setHeader:function(o)
+	{
+		var prop;
+		if(this._has_default_headers){
+			for(prop in this._default_headers){
+				if(YAHOO.lang.hasOwnProperty(this._default_headers, prop)){
+					o.conn.setRequestHeader(prop, this._default_headers[prop]);
+					YAHOO.log('Default HTTP header ' + prop + ' set with value of ' + this._default_headers[prop], 'info', 'Connection');
+				}
+			}
+		}
+
+		if(this._has_http_headers){
+			for(prop in this._http_headers){
+				if(YAHOO.lang.hasOwnProperty(this._http_headers, prop)){
+					o.conn.setRequestHeader(prop, this._http_headers[prop]);
+					YAHOO.log('HTTP header ' + prop + ' set with value of ' + this._http_headers[prop], 'info', 'Connection');
+				}
+			}
+
+			this._http_headers = {};
+			this._has_http_headers = false;
+		}
+	},
+
+  /**
+  * @description Resets the default HTTP headers object
+  * @method resetDefaultHeaders
+  * @public
+  * @static
+  * @return {void}
+   */
+	resetDefaultHeaders:function(){
+		this._default_headers = {};
+		this._has_default_headers = false;
+	},
+
+  /**
+  * @description Method to terminate a transaction, if it has not reached readyState 4.
+  * @method abort
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest.
+  * @param {object} callback  User-defined callback object.
+  * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout.
+  * @return {boolean}
+   */
+	abort:function(o, callback, isTimeout)
+	{
+		var abortStatus,
+			args = (callback && callback.argument)?callback.argument:null;
+			o = o || {};
+
+		if(o.conn){
+			if(o.xhr){
+				if(this.isCallInProgress(o)){
+					// Issue abort request
+					o.conn.abort();
+
+					window.clearInterval(this._poll[o.tId]);
+					delete this._poll[o.tId];
+
+					if(isTimeout){
+						window.clearTimeout(this._timeOut[o.tId]);
+						delete this._timeOut[o.tId];
+					}
+
+					abortStatus = true;
+				}
+			}
+			else if(o.xdr){
+				o.conn.abort(o.tId);
+				abortStatus = true;
+			}
+		}
+		else if(o.upload){
+			var frameId = 'yuiIO' + o.tId;
+			var io = document.getElementById(frameId);
+
+			if(io){
+				// Remove all listeners on the iframe prior to
+				// its destruction.
+				YAHOO.util.Event.removeListener(io, "load");
+				// Destroy the iframe facilitating the transaction.
+				document.body.removeChild(io);
+				YAHOO.log('File upload iframe destroyed. Id is:' + frameId, 'info', 'Connection');
+
+				if(isTimeout){
+					window.clearTimeout(this._timeOut[o.tId]);
+					delete this._timeOut[o.tId];
+				}
+
+				abortStatus = true;
+			}
+		}
+		else{
+			abortStatus = false;
+		}
+
+		if(abortStatus === true){
+			// Fire global custom event -- abortEvent
+			this.abortEvent.fire(o, args);
+
+			if(o.abortEvent){
+				// Fire transaction custom event -- abortEvent
+				o.abortEvent.fire(o, args);
+			}
+
+			this.handleTransactionResponse(o, callback, true);
+			YAHOO.log('Transaction ' + o.tId + ' aborted.', 'info', 'Connection');
+		}
+
+		return abortStatus;
+	},
+
+  /**
+  * @description Determines if the transaction is still being processed.
+  * @method isCallInProgress
+  * @public
+  * @static
+  * @param {object} o The connection object returned by asyncRequest
+  * @return {boolean}
+   */
+	isCallInProgress:function(o)
+	{
+		o = o || {};
+		// if the XHR object assigned to the transaction has not been dereferenced,
+		// then check its readyState status.  Otherwise, return false.
+		if(o.xhr && o.conn){
+			return o.conn.readyState !== 4 && o.conn.readyState !== 0;
+		}
+		else if(o.xdr && o.conn){
+			return o.conn.isCallInProgress(o.tId);
+		}
+		else if(o.upload === true){
+			return document.getElementById('yuiIO' + o.tId)?true:false;
+		}
+		else{
+			return false;
+		}
+	},
+
+  /**
+  * @description Dereference the XHR instance and the connection object after the transaction is completed.
+  * @method releaseObject
+  * @private
+  * @static
+  * @param {object} o The connection object
+  * @return {void}
+   */
+	releaseObject:function(o)
+	{
+		if(o && o.conn){
+			//dereference the XHR instance.
+			o.conn = null;
+
+			YAHOO.log('Connection object for transaction ' + o.tId + ' destroyed.', 'info', 'Connection');
+
+			//dereference the connection object.
+			o = null;
+		}
+	}
+};
+
+/**
+ * @for Connect
+  */
+(function() {
+	var YCM = YAHOO.util.Connect, _fn = {};
+
+   /**
+   * @description This method creates and instantiates the Flash transport.
+   * @method _swf
+   * @private
+   * @static
+   * @param {string} URI to connection.swf.
+   * @return {void}
+    */
+	function _swf(uri) {
+		var o = '<object id="YUIConnectionSwf" type="application/x-shockwave-flash" data="' +
+		        uri + '" width="0" height="0">' +
+		     	'<param name="movie" value="' + uri + '">' +
+                '<param name="allowScriptAccess" value="always">' +
+		    	'</object>',
+		    c = document.createElement('div');
+
+		document.body.appendChild(c);
+		c.innerHTML = o;
+	}
+
+   /**
+   * @description This method calls the public method on the
+    * Flash transport to start the XDR transaction.  It is analogous
+    * to Connection Manager's asyncRequest method.
+   * @method xdr
+   * @private
+   * @static
+   * @param {object} The transaction object.
+   * @param {string} HTTP request method.
+   * @param {string} URI for the transaction.
+   * @param {object} The transaction's callback object.
+   * @param {object} The JSON object used as HTTP POST data.
+   * @return {void}
+    */
+	function _xdr(o, m, u, c, d) {
+		_fn[parseInt(o.tId)] = { 'o':o, 'c':c };
+		if (d) {
+			c.method = m;
+			c.data = d;
+		}
+
+		o.conn.send(u, c, o.tId);
+	}
+
+   /**
+   * @description This method instantiates the Flash transport and
+    * establishes a static reference to it, used for all XDR requests.
+   * @method transport
+   * @public
+   * @static
+   * @param {string} URI to connection.swf.
+   * @return {void}
+    */
+	function _init(uri) {
+		_swf(uri);
+		YCM._transport = document.getElementById('YUIConnectionSwf');
+	}
+
+	function _xdrReady() {
+		YCM.xdrReadyEvent.fire();
+	}
+
+   /**
+   * @description This method fires the global and transaction start
+    * events.
+   * @method _xdrStart
+   * @private
+   * @static
+   * @param {object} The transaction object.
+   * @param {string} The transaction's callback object.
+   * @return {void}
+    */
+	function _xdrStart(o, cb) {
+		if (o) {
+			// Fire global custom event -- startEvent
+			YCM.startEvent.fire(o, cb.argument);
+
+			if(o.startEvent){
+				// Fire transaction custom event -- startEvent
+				o.startEvent.fire(o, cb.argument);
+			}
+		}
+	}
+
+   /**
+   * @description This method is the initial response handler
+    * for XDR transactions.  The Flash transport calls this
+    * function and sends the response payload.
+   * @method handleXdrResponse
+   * @private
+   * @static
+   * @param {object} The response object sent from the Flash transport.
+   * @return {void}
+    */
+	function _handleXdrResponse(r) {
+		var o = _fn[r.tId].o,
+			cb = _fn[r.tId].c;
+
+		if (r.statusText === 'xdr:start') {
+			_xdrStart(o, cb);
+			return;
+		}
+
+		r.responseText = decodeURI(r.responseText);
+		o.r = r;
+		if (cb.argument) {
+			o.r.argument = cb.argument;
+		}
+
+		this.handleTransactionResponse(o, cb, r.statusText === 'xdr:abort' ? true : false);
+		delete _fn[r.tId];
+	}
+
+	// Bind the functions to Connection Manager as static fields.
+	YCM.xdr = _xdr;
+	YCM.swf = _swf;
+	YCM.transport = _init;
+	YCM.xdrReadyEvent = new YAHOO.util.CustomEvent('xdrReady');
+	YCM.xdrReady = _xdrReady;
+	YCM.handleXdrResponse = _handleXdrResponse;
+})();
+
+/**
+ * @for Connect
+  */
+(function(){
+	var YCM = YAHOO.util.Connect,
+		YE = YAHOO.util.Event;
+   /**
+	* @description Property modified by setForm() to determine if the data
+	* should be submitted as an HTML form.
+	* @property _isFormSubmit
+	* @private
+	* @static
+	* @type boolean
+	*/
+	YCM._isFormSubmit = false;
+
+   /**
+	* @description Property modified by setForm() to determine if a file(s)
+	* upload is expected.
+	* @property _isFileUpload
+	* @private
+	* @static
+	* @type boolean
+	*/
+	YCM._isFileUpload = false;
+
+   /**
+	* @description Property modified by setForm() to set a reference to the HTML
+	* form node if the desired action is file upload.
+	* @property _formNode
+	* @private
+	* @static
+	* @type object
+	*/
+	YCM._formNode = null;
+
+   /**
+	* @description Property modified by setForm() to set the HTML form data
+	* for each transaction.
+	* @property _sFormData
+	* @private
+	* @static
+	* @type string
+	*/
+	YCM._sFormData = null;
+
+   /**
+	* @description Tracks the name-value pair of the "clicked" submit button if multiple submit
+	* buttons are present in an HTML form; and, if YAHOO.util.Event is available.
+	* @property _submitElementValue
+	* @private
+	* @static
+	* @type string
+	*/
+	YCM._submitElementValue = null;
+
+   /**
+   * @description Custom event that fires when handleTransactionResponse() determines a
+    * response in the HTTP 4xx/5xx range.
+   * @property failureEvent
+   * @private
+   * @static
+   * @type CustomEvent
+    */
+	YCM.uploadEvent = new YAHOO.util.CustomEvent('upload'),
+
+   /**
+	* @description Determines whether YAHOO.util.Event is available and returns true or false.
+	* If true, an event listener is bound at the document level to trap click events that
+	* resolve to a target type of "Submit".  This listener will enable setForm() to determine
+	* the clicked "Submit" value in a multi-Submit button, HTML form.
+	* @property _hasSubmitListener
+	* @private
+	* @static
+	*/
+	YCM._hasSubmitListener = function() {
+		if(YE){
+			YE.addListener(
+				document,
+				'click',
+				function(e){
+					var obj = YE.getTarget(e),
+						name = obj.nodeName.toLowerCase();
+
+					if((name === 'input' || name === 'button') && (obj.type && obj.type.toLowerCase() == 'submit')){
+						YCM._submitElementValue = encodeURIComponent(obj.name) + "=" + encodeURIComponent(obj.value);
+					}
+				});
+			return true;
+		}
+		return false;
+	}();
+
+  /**
+  * @description This method assembles the form label and value pairs and
+   * constructs an encoded string.
+   * asyncRequest() will automatically initialize the transaction with a
+   * a HTTP header Content-Type of application/x-www-form-urlencoded.
+  * @method setForm
+  * @public
+  * @static
+  * @param {string || object} form id or name attribute, or form object.
+  * @param {boolean} optional enable file upload.
+  * @param {boolean} optional enable file upload over SSL in IE only.
+  * @return {string} string of the HTML form field name and value pairs..
+   */
+	function _setForm(formId, isUpload, secureUri)
+	{
+		var oForm, oElement, oName, oValue, oDisabled,
+			hasSubmit = false,
+			data = [], item = 0,
+			i,len,j,jlen,opt;
+
+		this.resetFormState();
+
+		if(typeof formId == 'string'){
+			// Determine if the argument is a form id or a form name.
+			// Note form name usage is deprecated by supported
+			// here for legacy reasons.
+			oForm = (document.getElementById(formId) || document.forms[formId]);
+		}
+		else if(typeof formId == 'object'){
+			// Treat argument as an HTML form object.
+			oForm = formId;
+		}
+		else{
+			YAHOO.log('Unable to create form object ' + formId, 'warn', 'Connection');
+			return;
+		}
+
+		// If the isUpload argument is true, setForm will call createFrame to initialize
+		// an iframe as the form target.
+		//
+		// The argument secureURI is also required by IE in SSL environments
+		// where the secureURI string is a fully qualified HTTP path, used to set the source
+		// of the iframe, to a stub resource in the same domain.
+		if(isUpload){
+
+			// Create iframe in preparation for file upload.
+			this.createFrame(secureUri?secureUri:null);
+
+			// Set form reference and file upload properties to true.
+			this._isFormSubmit = true;
+			this._isFileUpload = true;
+			this._formNode = oForm;
+
+			return;
+		}
+
+		// Iterate over the form elements collection to construct the
+		// label-value pairs.
+		for (i=0,len=oForm.elements.length; i<len; ++i){
+			oElement  = oForm.elements[i];
+			oDisabled = oElement.disabled;
+			oName     = oElement.name;
+
+			// Do not submit fields that are disabled or
+			// do not have a name attribute value.
+			if(!oDisabled && oName)
+			{
+				oName  = encodeURIComponent(oName)+'=';
+				oValue = encodeURIComponent(oElement.value);
+
+				switch(oElement.type)
+				{
+					// Safari, Opera, FF all default opt.value from .text if
+					// value attribute not specified in markup
+					case 'select-one':
+						if (oElement.selectedIndex > -1) {
+							opt = oElement.options[oElement.selectedIndex];
+							data[item++] = oName + encodeURIComponent(
+								(opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
+						}
+						break;
+					case 'select-multiple':
+						if (oElement.selectedIndex > -1) {
+							for(j=oElement.selectedIndex, jlen=oElement.options.length; j<jlen; ++j){
+								opt = oElement.options[j];
+								if (opt.selected) {
+									data[item++] = oName + encodeURIComponent(
+										(opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
+								}
+							}
+						}
+						break;
+					case 'radio':
+					case 'checkbox':
+						if(oElement.checked){
+							data[item++] = oName + oValue;
+						}
+						break;
+					case 'file':
+						// stub case as XMLHttpRequest will only send the file path as a string.
+					case undefined:
+						// stub case for fieldset element which returns undefined.
+					case 'reset':
+						// stub case for input type reset button.
+					case 'button':
+						// stub case for input type button elements.
+						break;
+					case 'submit':
+						if(hasSubmit === false){
+							if(this._hasSubmitListener && this._submitElementValue){
+								data[item++] = this._submitElementValue;
+							}
+							hasSubmit = true;
+						}
+						break;
+					default:
+						data[item++] = oName + oValue;
+				}
+			}
+		}
+
+		this._isFormSubmit = true;
+		this._sFormData = data.join('&');
+
+		YAHOO.log('Form initialized for transaction. HTML form POST message is: ' + this._sFormData, 'info', 'Connection');
+
+		this.initHeader('Content-Type', this._default_form_header);
+		YAHOO.log('Initialize header Content-Type to application/x-www-form-urlencoded for setForm() transaction.', 'info', 'Connection');
+
+		return this._sFormData;
+	}
+
+   /**
+   * @description Resets HTML form properties when an HTML form or HTML form
+    * with file upload transaction is sent.
+   * @method resetFormState
+   * @private
+   * @static
+   * @return {void}
+    */
+	function _resetFormState(){
+		this._isFormSubmit = false;
+		this._isFileUpload = false;
+		this._formNode = null;
+		this._sFormData = "";
+	}
+
+
+   /**
+   * @description Creates an iframe to be used for form file uploads.  It is remove from the
+    * document upon completion of the upload transaction.
+   * @method createFrame
+   * @private
+   * @static
+   * @param {string} optional qualified path of iframe resource for SSL in IE.
+   * @return {void}
+    */
+	function _createFrame(secureUri){
+
+		// IE does not allow the setting of id and name attributes as object
+		// properties via createElement().  A different iframe creation
+		// pattern is required for IE.
+		var frameId = 'yuiIO' + this._transaction_id,
+			io;
+		if(YAHOO.env.ua.ie){
+			io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
+
+			// IE will throw a security exception in an SSL environment if the
+			// iframe source is undefined.
+			if(typeof secureUri == 'boolean'){
+				io.src = 'javascript:false';
+			}
+		}
+		else{
+			io = document.createElement('iframe');
+			io.id = frameId;
+			io.name = frameId;
+		}
+
+		io.style.position = 'absolute';
+		io.style.top = '-1000px';
+		io.style.left = '-1000px';
+
+		document.body.appendChild(io);
+		YAHOO.log('File upload iframe created. Id is:' + frameId, 'info', 'Connection');
+	}
+
+   /**
+   * @description Parses the POST data and creates hidden form elements
+    * for each key-value, and appends them to the HTML form object.
+   * @method appendPostData
+   * @private
+   * @static
+   * @param {string} postData The HTTP POST data
+   * @return {array} formElements Collection of hidden fields.
+    */
+	function _appendPostData(postData){
+		var formElements = [],
+			postMessage = postData.split('&'),
+			i, delimitPos;
+
+		for(i=0; i < postMessage.length; i++){
+			delimitPos = postMessage[i].indexOf('=');
+			if(delimitPos != -1){
+				formElements[i] = document.createElement('input');
+				formElements[i].type = 'hidden';
+				formElements[i].name = decodeURIComponent(postMessage[i].substring(0,delimitPos));
+				formElements[i].value = decodeURIComponent(postMessage[i].substring(delimitPos+1));
+				this._formNode.appendChild(formElements[i]);
+			}
+		}
+
+		return formElements;
+	}
+
+   /**
+   * @description Uploads HTML form, inclusive of files/attachments, using the
+    * iframe created in createFrame to facilitate the transaction.
+   * @method uploadFile
+   * @private
+   * @static
+   * @param {int} id The transaction id.
+   * @param {object} callback User-defined callback object.
+   * @param {string} uri Fully qualified path of resource.
+   * @param {string} postData POST data to be submitted in addition to HTML form.
+   * @return {void}
+    */
+	function _uploadFile(o, callback, uri, postData){
+		// Each iframe has an id prefix of "yuiIO" followed
+		// by the unique transaction id.
+		var frameId = 'yuiIO' + o.tId,
+		    uploadEncoding = 'multipart/form-data',
+		    io = document.getElementById(frameId),
+		    ie8 = (document.documentMode && document.documentMode === 8) ? true : false,
+		    oConn = this,
+			args = (callback && callback.argument)?callback.argument:null,
+            oElements,i,prop,obj, rawFormAttributes, uploadCallback;
+
+		// Track original HTML form attribute values.
+		rawFormAttributes = {
+			action:this._formNode.getAttribute('action'),
+			method:this._formNode.getAttribute('method'),
+			target:this._formNode.getAttribute('target')
+		};
+
+		// Initialize the HTML form properties in case they are
+		// not defined in the HTML form.
+		this._formNode.setAttribute('action', uri);
+		this._formNode.setAttribute('method', 'POST');
+		this._formNode.setAttribute('target', frameId);
+
+		if(YAHOO.env.ua.ie && !ie8){
+			// IE does not respect property enctype for HTML forms.
+			// Instead it uses the property - "encoding".
+			this._formNode.setAttribute('encoding', uploadEncoding);
+		}
+		else{
+			this._formNode.setAttribute('enctype', uploadEncoding);
+		}
+
+		if(postData){
+			oElements = this.appendPostData(postData);
+		}
+
+		// Start file upload.
+		this._formNode.submit();
+
+		// Fire global custom event -- startEvent
+		this.startEvent.fire(o, args);
+
+		if(o.startEvent){
+			// Fire transaction custom event -- startEvent
+			o.startEvent.fire(o, args);
+		}
+
+		// Start polling if a callback is present and the timeout
+		// property has been defined.
+		if(callback && callback.timeout){
+			this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout);
+		}
+
+		// Remove HTML elements created by appendPostData
+		if(oElements && oElements.length > 0){
+			for(i=0; i < oElements.length; i++){
+				this._formNode.removeChild(oElements[i]);
+			}
+		}
+
+		// Restore HTML form attributes to their original
+		// values prior to file upload.
+		for(prop in rawFormAttributes){
+			if(YAHOO.lang.hasOwnProperty(rawFormAttributes, prop)){
+				if(rawFormAttributes[prop]){
+					this._formNode.setAttribute(prop, rawFormAttributes[prop]);
+				}
+				else{
+					this._formNode.removeAttribute(prop);
+				}
+			}
+		}
+
+		// Reset HTML form state properties.
+		this.resetFormState();
+
+		// Create the upload callback handler that fires when the iframe
+		// receives the load event.  Subsequently, the event handler is detached
+		// and the iframe removed from the document.
+		uploadCallback = function() {
+			if(callback && callback.timeout){
+				window.clearTimeout(oConn._timeOut[o.tId]);
+				delete oConn._timeOut[o.tId];
+			}
+
+			// Fire global custom event -- completeEvent
+			oConn.completeEvent.fire(o, args);
+
+			if(o.completeEvent){
+				// Fire transaction custom event -- completeEvent
+				o.completeEvent.fire(o, args);
+			}
+
+			obj = {
+			    tId : o.tId,
+			    argument : callback.argument
+            };
+
+			try
+			{
+				// responseText and responseXML will be populated with the same data from the iframe.
+				// Since the HTTP headers cannot be read from the iframe
+				obj.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:io.contentWindow.document.documentElement.textContent;
+				obj.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
+			}
+			catch(e){}
+
+			if(callback && callback.upload){
+				if(!callback.scope){
+					callback.upload(obj);
+					YAHOO.log('Upload callback.', 'info', 'Connection');
+				}
+				else{
+					callback.upload.apply(callback.scope, [obj]);
+					YAHOO.log('Upload callback with scope.', 'info', 'Connection');
+				}
+			}
+
+			// Fire global custom event -- uploadEvent
+			oConn.uploadEvent.fire(obj);
+
+			if(o.uploadEvent){
+				// Fire transaction custom event -- uploadEvent
+				o.uploadEvent.fire(obj);
+			}
+
+			YE.removeListener(io, "load", uploadCallback);
+
+			setTimeout(
+				function(){
+					document.body.removeChild(io);
+					oConn.releaseObject(o);
+					YAHOO.log('File upload iframe destroyed. Id is:' + frameId, 'info', 'Connection');
+				}, 100);
+		};
+
+		// Bind the onload handler to the iframe to detect the file upload response.
+		YE.addListener(io, "load", uploadCallback);
+	}
+
+	YCM.setForm = _setForm;
+	YCM.resetFormState = _resetFormState;
+	YCM.createFrame = _createFrame;
+	YCM.appendPostData = _appendPostData;
+	YCM.uploadFile = _uploadFile;
+})();
+
+YAHOO.register("connection", YAHOO.util.Connect, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/connection/connection-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection_core-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection_core-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection_core-min.js	(revision 1610)
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+YAHOO.util.Connect={_msxml_progid:["Microsoft.XMLHTTP","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP"],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded; charset=UTF-8",_default_form_header:"application/x-www-form-urlencoded",_use_default_xhr_header:true,_default_xhr_header:"XMLHttpRequest",_has_default_headers:true,_default_headers:{},_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,startEvent:new YAHOO.util.CustomEvent("start"),completeEvent:new YAHOO.util.CustomEvent("complete"),successEvent:new YAHOO.util.CustomEvent("success"),failureEvent:new YAHOO.util.CustomEvent("failure"),abortEvent:new YAHOO.util.CustomEvent("abort"),_customEvents:{onStart:["startEvent","start"],onComplete:["completeEvent","complete"],onSuccess:["successEvent","success"],onFailure:["failureEvent","failure"],onUpload:["uploadEvent","upload"],onAbort:["abortEvent","abort"]},setProgId:function(A){this._msxml_progid.unshift(A);},setDefaultPostHeader:function(A){if(typeof A=="string"){this._default_post_header=A;}else{if(typeof A=="boolean"){this._use_default_post_header=A;}}},setDefaultXhrHeader:function(A){if(typeof A=="string"){this._default_xhr_header=A;}else{this._use_default_xhr_header=A;}},setPollingInterval:function(A){if(typeof A=="number"&&isFinite(A)){this._polling_interval=A;}},createXhrObject:function(F){var D,A,B;try{A=new XMLHttpRequest();D={conn:A,tId:F,xhr:true};}catch(C){for(B=0;B<this._msxml_progid.length;++B){try{A=new ActiveXObject(this._msxml_progid[B]);D={conn:A,tId:F,xhr:true};break;}catch(E){}}}finally{return D;}},getConnectionObject:function(A){var C,D=this._transaction_id;try{if(!A){C=this.createXhrObject(D);}else{C={tId:D};if(A==="xdr"){C.conn=this._transport;C.xdr=true;}else{if(A==="upload"){C.upload=true;}}}if(C){this._transaction_id++;}}catch(B){}return C;},asyncRequest:function(G,D,F,A){var E,C,B=(F&&F.argument)?F.argument:null;if(this._isFileUpload){C="upload";}else{if(F.xdr){C="xdr";}}E=this.getConnectionObject(C);if(!E){return null;}else{if(F&&F.customevents){this.initCustomEvents(E,F);}if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(E,F,D,A);return E;}if(G.toUpperCase()=="GET"){if(this._sFormData.length!==0){D+=((D.indexOf("?")==-1)?"?":"&")+this._sFormData;}}else{if(G.toUpperCase()=="POST"){A=A?this._sFormData+"&"+A:this._sFormData;}}}if(G.toUpperCase()=="GET"&&(F&&F.cache===false)){D+=((D.indexOf("?")==-1)?"?":"&")+"rnd="+new Date().valueOf().toString();}if(this._use_default_xhr_header){if(!this._default_headers["X-Requested-With"]){this.initHeader("X-Requested-With",this._default_xhr_header,true);}}if((G.toUpperCase()==="POST"&&this._use_default_post_header)&&this._isFormSubmit===false){this.initHeader("Content-Type",this._default_post_header);}if(E.xdr){this.xdr(E,G,D,F,A);return E;}E.conn.open(G,D,true);if(this._has_default_headers||this._has_http_headers){this.setHeader(E);}this.handleReadyState(E,F);E.conn.send(A||"");if(this._isFormSubmit===true){this.resetFormState();}this.startEvent.fire(E,B);if(E.startEvent){E.startEvent.fire(E,B);}return E;}},initCustomEvents:function(A,C){var B;for(B in C.customevents){if(this._customEvents[B][0]){A[this._customEvents[B][0]]=new YAHOO.util.CustomEvent(this._customEvents[B][1],(C.scope)?C.scope:null);A[this._customEvents[B][0]].subscribe(C.customevents[B]);}}},handleReadyState:function(C,D){var B=this,A=(D&&D.argument)?D.argument:null;if(D&&D.timeout){this._timeOut[C.tId]=window.setTimeout(function(){B.abort(C,D,true);},D.timeout);}this._poll[C.tId]=window.setInterval(function(){if(C.conn&&C.conn.readyState===4){window.clearInterval(B._poll[C.tId]);delete B._poll[C.tId];if(D&&D.timeout){window.clearTimeout(B._timeOut[C.tId]);delete B._timeOut[C.tId];}B.completeEvent.fire(C,A);if(C.completeEvent){C.completeEvent.fire(C,A);}B.handleTransactionResponse(C,D);}},this._polling_interval);},handleTransactionResponse:function(B,I,D){var E,A,G=(I&&I.argument)?I.argument:null,C=(B.r&&B.r.statusText==="xdr:success")?true:false,H=(B.r&&B.r.statusText==="xdr:failure")?true:false,J=D;try{if((B.conn.status!==undefined&&B.conn.status!==0)||C){E=B.conn.status;}else{if(H&&!J){E=0;}else{E=13030;}}}catch(F){E=13030;}if((E>=200&&E<300)||E===1223||C){A=B.xdr?B.r:this.createResponseObject(B,G);if(I&&I.success){if(!I.scope){I.success(A);}else{I.success.apply(I.scope,[A]);}}this.successEvent.fire(A);if(B.successEvent){B.successEvent.fire(A);}}else{switch(E){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:A=this.createExceptionObject(B.tId,G,(D?D:false));if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}break;default:A=(B.xdr)?B.response:this.createResponseObject(B,G);if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}}this.failureEvent.fire(A);if(B.failureEvent){B.failureEvent.fire(A);}}this.releaseObject(B);A=null;},createResponseObject:function(A,G){var D={},I={},E,C,F,B;try{C=A.conn.getAllResponseHeaders();F=C.split("\n");for(E=0;E<F.length;E++){B=F[E].indexOf(":");if(B!=-1){I[F[E].substring(0,B)]=YAHOO.lang.trim(F[E].substring(B+2));}}}catch(H){}D.tId=A.tId;D.status=(A.conn.status==1223)?204:A.conn.status;D.statusText=(A.conn.status==1223)?"No Content":A.conn.statusText;D.getResponseHeader=I;D.getAllResponseHeaders=C;D.responseText=A.conn.responseText;D.responseXML=A.conn.responseXML;if(G){D.argument=G;}return D;},createExceptionObject:function(H,D,A){var F=0,G="communication failure",C=-1,B="transaction aborted",E={};E.tId=H;if(A){E.status=C;E.statusText=B;}else{E.status=F;E.statusText=G;}if(D){E.argument=D;}return E;},initHeader:function(A,D,C){var B=(C)?this._default_headers:this._http_headers;B[A]=D;if(C){this._has_default_headers=true;}else{this._has_http_headers=true;}},setHeader:function(A){var B;if(this._has_default_headers){for(B in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,B)){A.conn.setRequestHeader(B,this._default_headers[B]);}}}if(this._has_http_headers){for(B in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,B)){A.conn.setRequestHeader(B,this._http_headers[B]);
+}}this._http_headers={};this._has_http_headers=false;}},resetDefaultHeaders:function(){this._default_headers={};this._has_default_headers=false;},abort:function(E,G,A){var D,B=(G&&G.argument)?G.argument:null;E=E||{};if(E.conn){if(E.xhr){if(this.isCallInProgress(E)){E.conn.abort();window.clearInterval(this._poll[E.tId]);delete this._poll[E.tId];if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{if(E.xdr){E.conn.abort(E.tId);D=true;}}}else{if(E.upload){var C="yuiIO"+E.tId;var F=document.getElementById(C);if(F){YAHOO.util.Event.removeListener(F,"load");document.body.removeChild(F);if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{D=false;}}if(D===true){this.abortEvent.fire(E,B);if(E.abortEvent){E.abortEvent.fire(E,B);}this.handleTransactionResponse(E,G,true);}return D;},isCallInProgress:function(A){A=A||{};if(A.xhr&&A.conn){return A.conn.readyState!==4&&A.conn.readyState!==0;}else{if(A.xdr&&A.conn){return A.conn.isCallInProgress(A.tId);}else{if(A.upload===true){return document.getElementById("yuiIO"+A.tId)?true:false;}else{return false;}}}},releaseObject:function(A){if(A&&A.conn){A.conn=null;A=null;}}};YAHOO.register("connection_core",YAHOO.util.Connect,{version:"2.8.0r4",build:"2449"});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/connection/connection_core-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/connection/connection-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/connection-min.js	(revision 1610)
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+YAHOO.util.Connect={_msxml_progid:["Microsoft.XMLHTTP","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP"],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded; charset=UTF-8",_default_form_header:"application/x-www-form-urlencoded",_use_default_xhr_header:true,_default_xhr_header:"XMLHttpRequest",_has_default_headers:true,_default_headers:{},_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,startEvent:new YAHOO.util.CustomEvent("start"),completeEvent:new YAHOO.util.CustomEvent("complete"),successEvent:new YAHOO.util.CustomEvent("success"),failureEvent:new YAHOO.util.CustomEvent("failure"),abortEvent:new YAHOO.util.CustomEvent("abort"),_customEvents:{onStart:["startEvent","start"],onComplete:["completeEvent","complete"],onSuccess:["successEvent","success"],onFailure:["failureEvent","failure"],onUpload:["uploadEvent","upload"],onAbort:["abortEvent","abort"]},setProgId:function(A){this._msxml_progid.unshift(A);},setDefaultPostHeader:function(A){if(typeof A=="string"){this._default_post_header=A;}else{if(typeof A=="boolean"){this._use_default_post_header=A;}}},setDefaultXhrHeader:function(A){if(typeof A=="string"){this._default_xhr_header=A;}else{this._use_default_xhr_header=A;}},setPollingInterval:function(A){if(typeof A=="number"&&isFinite(A)){this._polling_interval=A;}},createXhrObject:function(F){var D,A,B;try{A=new XMLHttpRequest();D={conn:A,tId:F,xhr:true};}catch(C){for(B=0;B<this._msxml_progid.length;++B){try{A=new ActiveXObject(this._msxml_progid[B]);D={conn:A,tId:F,xhr:true};break;}catch(E){}}}finally{return D;}},getConnectionObject:function(A){var C,D=this._transaction_id;try{if(!A){C=this.createXhrObject(D);}else{C={tId:D};if(A==="xdr"){C.conn=this._transport;C.xdr=true;}else{if(A==="upload"){C.upload=true;}}}if(C){this._transaction_id++;}}catch(B){}return C;},asyncRequest:function(G,D,F,A){var E,C,B=(F&&F.argument)?F.argument:null;if(this._isFileUpload){C="upload";}else{if(F.xdr){C="xdr";}}E=this.getConnectionObject(C);if(!E){return null;}else{if(F&&F.customevents){this.initCustomEvents(E,F);}if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(E,F,D,A);return E;}if(G.toUpperCase()=="GET"){if(this._sFormData.length!==0){D+=((D.indexOf("?")==-1)?"?":"&")+this._sFormData;}}else{if(G.toUpperCase()=="POST"){A=A?this._sFormData+"&"+A:this._sFormData;}}}if(G.toUpperCase()=="GET"&&(F&&F.cache===false)){D+=((D.indexOf("?")==-1)?"?":"&")+"rnd="+new Date().valueOf().toString();}if(this._use_default_xhr_header){if(!this._default_headers["X-Requested-With"]){this.initHeader("X-Requested-With",this._default_xhr_header,true);}}if((G.toUpperCase()==="POST"&&this._use_default_post_header)&&this._isFormSubmit===false){this.initHeader("Content-Type",this._default_post_header);}if(E.xdr){this.xdr(E,G,D,F,A);return E;}E.conn.open(G,D,true);if(this._has_default_headers||this._has_http_headers){this.setHeader(E);}this.handleReadyState(E,F);E.conn.send(A||"");if(this._isFormSubmit===true){this.resetFormState();}this.startEvent.fire(E,B);if(E.startEvent){E.startEvent.fire(E,B);}return E;}},initCustomEvents:function(A,C){var B;for(B in C.customevents){if(this._customEvents[B][0]){A[this._customEvents[B][0]]=new YAHOO.util.CustomEvent(this._customEvents[B][1],(C.scope)?C.scope:null);A[this._customEvents[B][0]].subscribe(C.customevents[B]);}}},handleReadyState:function(C,D){var B=this,A=(D&&D.argument)?D.argument:null;if(D&&D.timeout){this._timeOut[C.tId]=window.setTimeout(function(){B.abort(C,D,true);},D.timeout);}this._poll[C.tId]=window.setInterval(function(){if(C.conn&&C.conn.readyState===4){window.clearInterval(B._poll[C.tId]);delete B._poll[C.tId];if(D&&D.timeout){window.clearTimeout(B._timeOut[C.tId]);delete B._timeOut[C.tId];}B.completeEvent.fire(C,A);if(C.completeEvent){C.completeEvent.fire(C,A);}B.handleTransactionResponse(C,D);}},this._polling_interval);},handleTransactionResponse:function(B,I,D){var E,A,G=(I&&I.argument)?I.argument:null,C=(B.r&&B.r.statusText==="xdr:success")?true:false,H=(B.r&&B.r.statusText==="xdr:failure")?true:false,J=D;try{if((B.conn.status!==undefined&&B.conn.status!==0)||C){E=B.conn.status;}else{if(H&&!J){E=0;}else{E=13030;}}}catch(F){E=13030;}if((E>=200&&E<300)||E===1223||C){A=B.xdr?B.r:this.createResponseObject(B,G);if(I&&I.success){if(!I.scope){I.success(A);}else{I.success.apply(I.scope,[A]);}}this.successEvent.fire(A);if(B.successEvent){B.successEvent.fire(A);}}else{switch(E){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:A=this.createExceptionObject(B.tId,G,(D?D:false));if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}break;default:A=(B.xdr)?B.response:this.createResponseObject(B,G);if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}}this.failureEvent.fire(A);if(B.failureEvent){B.failureEvent.fire(A);}}this.releaseObject(B);A=null;},createResponseObject:function(A,G){var D={},I={},E,C,F,B;try{C=A.conn.getAllResponseHeaders();F=C.split("\n");for(E=0;E<F.length;E++){B=F[E].indexOf(":");if(B!=-1){I[F[E].substring(0,B)]=YAHOO.lang.trim(F[E].substring(B+2));}}}catch(H){}D.tId=A.tId;D.status=(A.conn.status==1223)?204:A.conn.status;D.statusText=(A.conn.status==1223)?"No Content":A.conn.statusText;D.getResponseHeader=I;D.getAllResponseHeaders=C;D.responseText=A.conn.responseText;D.responseXML=A.conn.responseXML;if(G){D.argument=G;}return D;},createExceptionObject:function(H,D,A){var F=0,G="communication failure",C=-1,B="transaction aborted",E={};E.tId=H;if(A){E.status=C;E.statusText=B;}else{E.status=F;E.statusText=G;}if(D){E.argument=D;}return E;},initHeader:function(A,D,C){var B=(C)?this._default_headers:this._http_headers;B[A]=D;if(C){this._has_default_headers=true;}else{this._has_http_headers=true;}},setHeader:function(A){var B;if(this._has_default_headers){for(B in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,B)){A.conn.setRequestHeader(B,this._default_headers[B]);}}}if(this._has_http_headers){for(B in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,B)){A.conn.setRequestHeader(B,this._http_headers[B]);
+}}this._http_headers={};this._has_http_headers=false;}},resetDefaultHeaders:function(){this._default_headers={};this._has_default_headers=false;},abort:function(E,G,A){var D,B=(G&&G.argument)?G.argument:null;E=E||{};if(E.conn){if(E.xhr){if(this.isCallInProgress(E)){E.conn.abort();window.clearInterval(this._poll[E.tId]);delete this._poll[E.tId];if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{if(E.xdr){E.conn.abort(E.tId);D=true;}}}else{if(E.upload){var C="yuiIO"+E.tId;var F=document.getElementById(C);if(F){YAHOO.util.Event.removeListener(F,"load");document.body.removeChild(F);if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{D=false;}}if(D===true){this.abortEvent.fire(E,B);if(E.abortEvent){E.abortEvent.fire(E,B);}this.handleTransactionResponse(E,G,true);}return D;},isCallInProgress:function(A){A=A||{};if(A.xhr&&A.conn){return A.conn.readyState!==4&&A.conn.readyState!==0;}else{if(A.xdr&&A.conn){return A.conn.isCallInProgress(A.tId);}else{if(A.upload===true){return document.getElementById("yuiIO"+A.tId)?true:false;}else{return false;}}}},releaseObject:function(A){if(A&&A.conn){A.conn=null;A=null;}}};(function(){var G=YAHOO.util.Connect,H={};function D(I){var J='<object id="YUIConnectionSwf" type="application/x-shockwave-flash" data="'+I+'" width="0" height="0">'+'<param name="movie" value="'+I+'">'+'<param name="allowScriptAccess" value="always">'+"</object>",K=document.createElement("div");document.body.appendChild(K);K.innerHTML=J;}function B(L,I,J,M,K){H[parseInt(L.tId)]={"o":L,"c":M};if(K){M.method=I;M.data=K;}L.conn.send(J,M,L.tId);}function E(I){D(I);G._transport=document.getElementById("YUIConnectionSwf");}function C(){G.xdrReadyEvent.fire();}function A(J,I){if(J){G.startEvent.fire(J,I.argument);if(J.startEvent){J.startEvent.fire(J,I.argument);}}}function F(J){var K=H[J.tId].o,I=H[J.tId].c;if(J.statusText==="xdr:start"){A(K,I);return;}J.responseText=decodeURI(J.responseText);K.r=J;if(I.argument){K.r.argument=I.argument;}this.handleTransactionResponse(K,I,J.statusText==="xdr:abort"?true:false);delete H[J.tId];}G.xdr=B;G.swf=D;G.transport=E;G.xdrReadyEvent=new YAHOO.util.CustomEvent("xdrReady");G.xdrReady=C;G.handleXdrResponse=F;})();(function(){var D=YAHOO.util.Connect,F=YAHOO.util.Event;D._isFormSubmit=false;D._isFileUpload=false;D._formNode=null;D._sFormData=null;D._submitElementValue=null;D.uploadEvent=new YAHOO.util.CustomEvent("upload"),D._hasSubmitListener=function(){if(F){F.addListener(document,"click",function(J){var I=F.getTarget(J),H=I.nodeName.toLowerCase();if((H==="input"||H==="button")&&(I.type&&I.type.toLowerCase()=="submit")){D._submitElementValue=encodeURIComponent(I.name)+"="+encodeURIComponent(I.value);}});return true;}return false;}();function G(T,O,J){var S,I,R,P,W,Q=false,M=[],V=0,L,N,K,U,H;this.resetFormState();if(typeof T=="string"){S=(document.getElementById(T)||document.forms[T]);}else{if(typeof T=="object"){S=T;}else{return;}}if(O){this.createFrame(J?J:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=S;return;}for(L=0,N=S.elements.length;L<N;++L){I=S.elements[L];W=I.disabled;R=I.name;if(!W&&R){R=encodeURIComponent(R)+"=";P=encodeURIComponent(I.value);switch(I.type){case"select-one":if(I.selectedIndex>-1){H=I.options[I.selectedIndex];M[V++]=R+encodeURIComponent((H.attributes.value&&H.attributes.value.specified)?H.value:H.text);}break;case"select-multiple":if(I.selectedIndex>-1){for(K=I.selectedIndex,U=I.options.length;K<U;++K){H=I.options[K];if(H.selected){M[V++]=R+encodeURIComponent((H.attributes.value&&H.attributes.value.specified)?H.value:H.text);}}}break;case"radio":case"checkbox":if(I.checked){M[V++]=R+P;}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(Q===false){if(this._hasSubmitListener&&this._submitElementValue){M[V++]=this._submitElementValue;}Q=true;}break;default:M[V++]=R+P;}}}this._isFormSubmit=true;this._sFormData=M.join("&");this.initHeader("Content-Type",this._default_form_header);return this._sFormData;}function C(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";}function B(H){var I="yuiIO"+this._transaction_id,J;if(YAHOO.env.ua.ie){J=document.createElement('<iframe id="'+I+'" name="'+I+'" />');if(typeof H=="boolean"){J.src="javascript:false";}}else{J=document.createElement("iframe");J.id=I;J.name=I;}J.style.position="absolute";J.style.top="-1000px";J.style.left="-1000px";document.body.appendChild(J);}function E(H){var K=[],I=H.split("&"),J,L;for(J=0;J<I.length;J++){L=I[J].indexOf("=");if(L!=-1){K[J]=document.createElement("input");K[J].type="hidden";K[J].name=decodeURIComponent(I[J].substring(0,L));K[J].value=decodeURIComponent(I[J].substring(L+1));this._formNode.appendChild(K[J]);}}return K;}function A(K,V,L,J){var Q="yuiIO"+K.tId,R="multipart/form-data",T=document.getElementById(Q),M=(document.documentMode&&document.documentMode===8)?true:false,W=this,S=(V&&V.argument)?V.argument:null,U,P,I,O,H,N;H={action:this._formNode.getAttribute("action"),method:this._formNode.getAttribute("method"),target:this._formNode.getAttribute("target")};this._formNode.setAttribute("action",L);this._formNode.setAttribute("method","POST");this._formNode.setAttribute("target",Q);if(YAHOO.env.ua.ie&&!M){this._formNode.setAttribute("encoding",R);}else{this._formNode.setAttribute("enctype",R);}if(J){U=this.appendPostData(J);}this._formNode.submit();this.startEvent.fire(K,S);if(K.startEvent){K.startEvent.fire(K,S);}if(V&&V.timeout){this._timeOut[K.tId]=window.setTimeout(function(){W.abort(K,V,true);},V.timeout);}if(U&&U.length>0){for(P=0;P<U.length;P++){this._formNode.removeChild(U[P]);}}for(I in H){if(YAHOO.lang.hasOwnProperty(H,I)){if(H[I]){this._formNode.setAttribute(I,H[I]);}else{this._formNode.removeAttribute(I);}}}this.resetFormState();N=function(){if(V&&V.timeout){window.clearTimeout(W._timeOut[K.tId]);delete W._timeOut[K.tId];}W.completeEvent.fire(K,S);if(K.completeEvent){K.completeEvent.fire(K,S);
+}O={tId:K.tId,argument:V.argument};try{O.responseText=T.contentWindow.document.body?T.contentWindow.document.body.innerHTML:T.contentWindow.document.documentElement.textContent;O.responseXML=T.contentWindow.document.XMLDocument?T.contentWindow.document.XMLDocument:T.contentWindow.document;}catch(X){}if(V&&V.upload){if(!V.scope){V.upload(O);}else{V.upload.apply(V.scope,[O]);}}W.uploadEvent.fire(O);if(K.uploadEvent){K.uploadEvent.fire(O);}F.removeListener(T,"load",N);setTimeout(function(){document.body.removeChild(T);W.releaseObject(K);},100);};F.addListener(T,"load",N);}D.setForm=G;D.resetFormState=C;D.createFrame=B;D.appendPostData=E;D.uploadFile=A;})();YAHOO.register("connection",YAHOO.util.Connect,{version:"2.8.0r4",build:"2449"});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/connection/connection-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/connection.swf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/yui/connection/connection.swf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/connection/README
===================================================================
--- tags/2.8.3/wb/include/yui/connection/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/connection/README	(revision 1610)
@@ -0,0 +1,259 @@
+Connection Manager Release Notes
+
+*** version 2.4.1 ***
+
+No change
+
+*** version 2.4.0 ***
+
+* [FIXED] SF1804153.  Transactions initialized with setForm() now properly clear
+the POST data field after each transaction.
+
+* The callback object can accept a new member, cache, defined with a boolean
+value.  If set to false (e.g., var callback = { cache:false };), a timestamp
+will be appended to the URI to override HTTP GET caching.  This timestamp value
+will appear as rnd=timestamp in the request querystring.
+
+* Custom Events startEvent, completeEvent, and abortEvent now receive
+callback.argument, if defined, in addition to the transaction ID.  Each Custom
+Event's function handler receives two arguments -- the event type as the first
+argument, and an array as the second argument.  The first element in the array
+is the transaction ID, and the second element are any arguments defined in the
+callback object.
+
+*** version 2.3.1 ***
+
+* setDefaultPostHeader() can now be overloaded with a boolean, string, or
+number.  By default, POST transactions send the following Content-Type header:
+'application/x-www-form-urlencoded; charset=UTF-8'.
+
+A custom Content-Type header can now be set by passing its value to
+setDefaultPostHeader().
+
+* HTML form submissions now send a Content-Type header of "application/x-www-
+form-urlencoded", omitting the charset=UTF-8 value.
+
+* setDefaultXhrHeader() can now be overloaded with a boolean, string, or number.
+By default, all transactions send a custom header of "X-Requested-
+With:XMLHttpRequest".
+
+This default header value can be overridden by passing the desired value as an
+argument to setDefaultPostHeader().
+
+* The file upload iframe's event listener is now explicitly removed before the
+iframe is destroyed.
+
+*** version 2.3.0 ***
+
+* Custom Events are introduced in Connection Manager.  These events -- for a
+non-file upload transaction -- are:
+
+   * startEvent
+   * completeEvent
+   * successEvent
+   * failureEvent
+   * abortEvent
+
+For transactions involving file upload with an HTML form, the events are:
+
+   * startEvent
+   * completeEvent
+   * uploadEvent
+   * abortEvent
+
+* Event utility is a now Connection Manager dependency.
+
+* abort() and isCallInProgress() are now functional for file upload
+transactions.
+
+* NOTE: The native XHR implementation in Safari 2.0.4 has been confirmed to leak
+memory.
+
+* UPDATE: The XHR implementation in Safari 3.0 beta(and WebKit builds) now
+appear to handle HTTP 204 responses correctly.  XHR in Opera, as of 9.21, still
+does not produce a valid HTTP status code with an HTTP 204 response.
+
+*** version 2.2.2 ***
+
+* No revisions.
+
+*** version 2.2.1 ***
+
+* setForm() will include the correct name-value of the HTML Submit button
+clicked where multiple HTML Submit button options are present in an HTML form.
+To enable this feature, include the Event utility source file as a dependency
+before the Connection Manager source file.
+
+* The XHR implementation in IE6 and IE7, Opera, and Safari do not properly
+handle an HTTP 204 response.  IE6/7 will instead return a Win error 1223.
+handleTransactionResponse() will treat 1223 as an HTTP 204, and route the
+response appropriately to the success callback.  createResponseObject() will
+normalize the response object's status and statusText values to 204 and "No
+Content" respectively.  However, no headers are returned.
+
+Opera and Safari provide no discernable response with HTTP 204(e.g., response
+object's properties are undefined).  This response will trigger the failure
+callback with a status of 0 and statusText of "communication failure".
+
+*** version 2.2.0 ***
+
+* initHeader() now accepts a third argument as a boolean.  When set to true,
+this specific header will automatically be sent with each transaction.
+Otherwise, the header will be set and sent for the specific transaction only.
+Example: initHeader('X-YUI-State','Beta', true); all transactions will send this
+header.
+   * resetDefaultHeaders() will clear the default headers collection.
+
+* All Connection Mananger transactions will broadcast the header: "X-Requested-
+With: XMLHttpRequest".
+   * This can be turned off: YAHOO.util.Connect.setDefaultXhrHeader(false);
+
+* The HTTP method argument in asyncRequest is now case-insensitive.
+
+* uploadFile() will now correctly handle the absence of a callback object,
+allowing the transaction to complete silently.
+
+*** version 0.12.2 ***
+
+* The Opera/Connection Manager concurrent object condition, described in version
+0.12.0, no longer tests applies for Opera, version 9.10.
+
+*** version 0.12.1 ***
+
+* connection-debug.js corrected and synchronized with connection.js.  Code
+inconsistencies between the two files existed in 0.12.0.
+
+*** version 0.12.0 ***
+
+* When uploading files via setForm() and asyncRequest includes a POST data
+argument, appendPostData() will create hidden input fields for each postData
+label/value and append each field to the form object.
+
+* setForm() returns the assembled label/value string of the parsed HTML form
+fields.
+
+* NOTE: Opera 9.02 does not allow for more than 12 concurrent Connection Manager
+objects.
+
+The following example creates 12 requests in a loop:
+for(var n=0; n<=12; i++){
+  conn[n] = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
+}
+
+If n > 13, Opera 9.02 will crash.  Connection manager objects count n must be <=
+12 at all times.  This condition was not present in Opera version 9.01.
+
+This condition does not apply to other A-Grade browsers (
+http://developer.yahoo.com/yui/articles/gbs/gbs_browser-chart.html)
+
+*** version 0.11.3 ***
+
+* YUI Event dependency for file uploading is now optional.
+
+* uploadFile() now sets unique IDs for each file upload transaction to prevent
+iframe collisions with parallel uploads.
+
+* The callback object now has property responseXML to provide support for file
+upload transactions that return an XML document.
+
+* setForm() will verify if a select option value attribute is present and use
+its value, including empty string, before using the text node value.
+
+* Modified polling mechanism in handleReadyState() and
+handleTransactionResponse() to prevent infinite polling if JavaScript errors
+occur in the user-defined callback.
+
+* createFrame() will now accept a boolean argument of true to set the frame
+source to "javascript:false" to prevent IE from throwing security warnings in an
+HTTPS environment.
+
+* setHeader() now enumerates through the _http_header object using
+hasOwnProperty() to prevent collisions with members added to Object via
+prototype.
+
+* If using setForm() and asyncRequest includes a POST data argument, the data
+will be concatenated to the HTML form POST message.
+
+*** version 0.11.2 ***
+
+* No revisions.
+
+*** version 0.11.1 ***
+
+* uploadFile() now verifies the existence of callback.upload before invoking
+callback, with or without object scope.
+
+*** version 0.11.0 ***
+
+* Each transaction can be defined with a timeout threshold, in milliseconds,
+through the callback object.  If the threshold is reached, and the transaction
+hasn't yet completed, the transaction will call abort().
+
+* abort() will now accept a callback object as the second argument.  The
+failure callback will receive a response object to indicate the transaction was
+aborted.
+
+* setForm() will now support file uploads by setting the second argument to
+true (e.g., YAHOO.util.Connect.setForm(formObject, true).  File upload does not
+use the callback success or failure handler.  Instead, it uses a new callback
+object handler: upload.
+
+* HTML form submit will no longer submit form fields without a defined name
+attribute.
+
+* The default POST header of 'Content-Type','application/x-www-form-urlencoded'
+can be overridden by calling setDefaultPostHeader(false).  This
+will remove the default header from non-HTML form, POST submissions.
+
+* setHeader() now enumerates through the _http_header object with
+propertyIsEnumerable to prevent collisions with members added to Object via
+prototype.
+
+*** version 0.10.0 ***
+
+* handleTransactionResponse() now treats the full HTTP 2xx range as a success
+case, instead of just HTTP 200.
+
+* To accommodate multiple field values in Mozilla/Firefox, multiple initHeader
+calls with the same label will now result in the values concatenated to a
+comma- delimited string value.
+Example:
+Setting Content-Type:'application/x-www-form-urlencoded' and Content-
+Type:'text/xml' will result in Content-Type:'application/x-www-form-urlencoded,
+text/xml'.
+
+* Default polling interval lowered to 50ms.
+
+* YAHOO.util.Connect.setPollingInterval() will allow you to set a polling
+interval -- in milliseconds -- to override the default value.
+
+* YAHOO.util.Connect.getResponseHeader[headerLabel] now supported as a response
+object property to provide symmetry with the native XHR object's property.
+Example:
+YAHOO.util.Connect.getResponseHeader['Content-Length'] will return the value
+for the Content-Length header, if the header is available.
+
+* YAHOO.util.Connect.allResponseHeaders property renamed to
+getAllResponseHeaders to provide symmetry with the native XHR object's
+property.
+
+* YAHOO.util.Connect.setForm() now supports HTTP GET as well as HTTP POST.
+
+* YAHOO.util.Connect.setForm() now accepts an HTML form object as well as its
+name attribute value.
+
+* YAHOO.util.Connect.setForm() will not submit HTML form fields that are
+disabled or do not have a name attribute value.
+
+* [FIXED] Response exceptions result in infinite callback loop in
+Mozilla/Firefox.
+
+* [FIXED] YAHOO.util.Connect.abort() now properly clears polling interval.
+
+* [FIXED] isCallInProgress() now verifies whether XHR instance still exists,
+and returns false if the connection object is no longer available.
+
+*** version 0.9.0 ***
+
+* Initial release
+

Property changes on: tags/2.8.3/wb/include/yui/connection/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dom/dom.js
===================================================================
--- tags/2.8.3/wb/include/yui/dom/dom.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dom/dom.js	(revision 1610)
@@ -0,0 +1,1832 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The dom module provides helper methods for manipulating Dom elements.
+ * @module dom
+ *
+ */
+
+(function() {
+    // for use with generateId (global to save state if Dom is overwritten)
+    YAHOO.env._id_counter = YAHOO.env._id_counter || 0;
+
+    // internal shorthand
+    var Y = YAHOO.util,
+        lang = YAHOO.lang,
+        UA = YAHOO.env.ua,
+        trim = YAHOO.lang.trim,
+        propertyCache = {}, // for faster hyphen converts
+        reCache = {}, // cache className regexes
+        RE_TABLE = /^t(?:able|d|h)$/i, // for _calcBorders
+        RE_COLOR = /color$/i,
+
+        // DOM aliases 
+        document = window.document,     
+        documentElement = document.documentElement,
+
+        // string constants
+        OWNER_DOCUMENT = 'ownerDocument',
+        DEFAULT_VIEW = 'defaultView',
+        DOCUMENT_ELEMENT = 'documentElement',
+        COMPAT_MODE = 'compatMode',
+        OFFSET_LEFT = 'offsetLeft',
+        OFFSET_TOP = 'offsetTop',
+        OFFSET_PARENT = 'offsetParent',
+        PARENT_NODE = 'parentNode',
+        NODE_TYPE = 'nodeType',
+        TAG_NAME = 'tagName',
+        SCROLL_LEFT = 'scrollLeft',
+        SCROLL_TOP = 'scrollTop',
+        GET_BOUNDING_CLIENT_RECT = 'getBoundingClientRect',
+        GET_COMPUTED_STYLE = 'getComputedStyle',
+        CURRENT_STYLE = 'currentStyle',
+        CSS1_COMPAT = 'CSS1Compat',
+        _BACK_COMPAT = 'BackCompat',
+        _CLASS = 'class', // underscore due to reserved word
+        CLASS_NAME = 'className',
+        EMPTY = '',
+        SPACE = ' ',
+        C_START = '(?:^|\\s)',
+        C_END = '(?= |$)',
+        G = 'g',
+        POSITION = 'position',
+        FIXED = 'fixed',
+        RELATIVE = 'relative',
+        LEFT = 'left',
+        TOP = 'top',
+        MEDIUM = 'medium',
+        BORDER_LEFT_WIDTH = 'borderLeftWidth',
+        BORDER_TOP_WIDTH = 'borderTopWidth',
+    
+    // brower detection
+        isOpera = UA.opera,
+        isSafari = UA.webkit, 
+        isGecko = UA.gecko, 
+        isIE = UA.ie; 
+    
+    /**
+     * Provides helper methods for DOM elements.
+    * @namespace YAHOO.util
+    * @class Dom
+    * @requires yahoo, event
+     */
+    Y.Dom = {
+        CUSTOM_ATTRIBUTES: (!documentElement.hasAttribute) ? { // IE < 8
+            'for': 'htmlFor',
+            'class': CLASS_NAME
+        } : { // w3c
+            'htmlFor': 'for',
+            'className': _CLASS
+        },
+
+        DOT_ATTRIBUTES: {},
+
+        /**
+         * Returns an HTMLElement reference.
+        * @method get
+        * @param {String | HTMLElement |Array} el Accepts a string to use as an ID for getting a DOM reference, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @return {HTMLElement | Array} A DOM reference to an HTML element or an array of HTMLElements.
+         */
+        get: function(el) {
+            var id, nodes, c, i, len, attr;
+
+            if (el) {
+                if (el[NODE_TYPE] || el.item) { // Node, or NodeList
+                    return el;
+                }
+
+                if (typeof el === 'string') { // id
+                    id = el;
+                    el = document.getElementById(el);
+                    attr = (el) ? el.attributes : null;
+                    if (el && attr && attr.id && attr.id.value === id) { // IE: avoid false match on "name" attribute
+                        return el;
+                    } else if (el && document.all) { // filter by name
+                        el = null;
+                        nodes = document.all[id];
+                        for (i = 0, len = nodes.length; i < len; ++i) {
+                            if (nodes[i].id === id) {
+                                return nodes[i];
+                            }
+                        }
+                    }
+                    return el;
+                }
+                
+                if (YAHOO.util.Element && el instanceof YAHOO.util.Element) {
+                    el = el.get('element');
+                }
+
+                if ('length' in el) { // array-like 
+                    c = [];
+                    for (i = 0, len = el.length; i < len; ++i) {
+                        c[c.length] = Y.Dom.get(el[i]);
+                    }
+                    
+                    return c;
+                }
+
+                return el; // some other object, just pass it back
+            }
+
+            return null;
+        },
+    
+        getComputedStyle: function(el, property) {
+            if (window[GET_COMPUTED_STYLE]) {
+                return el[OWNER_DOCUMENT][DEFAULT_VIEW][GET_COMPUTED_STYLE](el, null)[property];
+            } else if (el[CURRENT_STYLE]) {
+                return Y.Dom.IE_ComputedStyle.get(el, property);
+            }
+        },
+
+        /**
+         * Normalizes currentStyle and ComputedStyle.
+        * @method getStyle
+        * @param {String | HTMLElement |Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {String} property The style property whose value is returned.
+        * @return {String | Array} The current value of the style property for the element(s).
+         */
+        getStyle: function(el, property) {
+            return Y.Dom.batch(el, Y.Dom._getStyle, property);
+        },
+
+        // branching at load instead of runtime
+        _getStyle: function() {
+            if (window[GET_COMPUTED_STYLE]) { // W3C DOM method
+                return function(el, property) {
+                    property = (property === 'float') ? property = 'cssFloat' :
+                            Y.Dom._toCamel(property);
+
+                    var value = el.style[property],
+                        computed;
+                    
+                    if (!value) {
+                        computed = el[OWNER_DOCUMENT][DEFAULT_VIEW][GET_COMPUTED_STYLE](el, null);
+                        if (computed) { // test computed before touching for safari
+                            value = computed[property];
+                        }
+                    }
+                    
+                    return value;
+                };
+            } else if (documentElement[CURRENT_STYLE]) {
+                return function(el, property) {                         
+                    var value;
+
+                    switch(property) {
+                        case 'opacity' :// IE opacity uses filter
+                            value = 100;
+                            try { // will error if no DXImageTransform
+                                value = el.filters['DXImageTransform.Microsoft.Alpha'].opacity;
+
+                            } catch(e) {
+                                try { // make sure its in the document
+                                    value = el.filters('alpha').opacity;
+                                } catch(err) {
+                                }
+                            }
+                            return value / 100;
+                        case 'float': // fix reserved word
+                            property = 'styleFloat'; // fall through
+                        default: 
+                            property = Y.Dom._toCamel(property);
+                            value = el[CURRENT_STYLE] ? el[CURRENT_STYLE][property] : null;
+                            return ( el.style[property] || value );
+                    }
+                };
+            }
+        }(),
+    
+        /**
+         * Wrapper for setting style properties of HTMLElements.  Normalizes "opacity" across modern browsers.
+        * @method setStyle
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {String} property The style property to be set.
+        * @param {String} val The value to apply to the given property.
+         */
+        setStyle: function(el, property, val) {
+            Y.Dom.batch(el, Y.Dom._setStyle, { prop: property, val: val });
+        },
+
+        _setStyle: function() {
+            if (isIE) {
+                return function(el, args) {
+                    var property = Y.Dom._toCamel(args.prop),
+                        val = args.val;
+
+                    if (el) {
+                        switch (property) {
+                            case 'opacity':
+                                if ( lang.isString(el.style.filter) ) { // in case not appended
+                                    el.style.filter = 'alpha(opacity=' + val * 100 + ')';
+                                    
+                                    if (!el[CURRENT_STYLE] || !el[CURRENT_STYLE].hasLayout) {
+                                        el.style.zoom = 1; // when no layout or cant tell
+                                    }
+                                }
+                                break;
+                            case 'float':
+                                property = 'styleFloat';
+                            default:
+                            el.style[property] = val;
+                        }
+                    } else {
+                    }
+                };
+            } else {
+                return function(el, args) {
+                    var property = Y.Dom._toCamel(args.prop),
+                        val = args.val;
+                    if (el) {
+                        if (property == 'float') {
+                            property = 'cssFloat';
+                        }
+                        el.style[property] = val;
+                    } else {
+                    }
+                };
+            }
+
+        }(),
+        
+        /**
+         * Gets the current position of an element based on page coordinates. 
+         * Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getXY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM
+         * reference, or an Array of IDs and/or HTMLElements
+        * @return {Array} The XY position of the element(s)
+         */
+        getXY: function(el) {
+            return Y.Dom.batch(el, Y.Dom._getXY);
+        },
+
+        _canPosition: function(el) {
+            return ( Y.Dom._getStyle(el, 'display') !== 'none' && Y.Dom._inDoc(el) );
+        },
+
+        _getXY: function() {
+            if (document[DOCUMENT_ELEMENT][GET_BOUNDING_CLIENT_RECT]) {
+                return function(node) {
+                    var scrollLeft, scrollTop, box, doc,
+                        off1, off2, mode, bLeft, bTop,
+                        floor = Math.floor, // TODO: round?
+                        xy = false;
+
+                    if (Y.Dom._canPosition(node)) {
+                        box = node[GET_BOUNDING_CLIENT_RECT]();
+                        doc = node[OWNER_DOCUMENT];
+                        scrollLeft = Y.Dom.getDocumentScrollLeft(doc);
+                        scrollTop = Y.Dom.getDocumentScrollTop(doc);
+                        xy = [floor(box[LEFT]), floor(box[TOP])];
+
+                        if (isIE && UA.ie < 8) { // IE < 8: viewport off by 2
+                            off1 = 2;
+                            off2 = 2;
+                            mode = doc[COMPAT_MODE];
+
+                            if (UA.ie === 6) {
+                                if (mode !== _BACK_COMPAT) {
+                                    off1 = 0;
+                                    off2 = 0;
+                                }
+                            }
+                            
+                            if ((mode === _BACK_COMPAT)) {
+                                bLeft = _getComputedStyle(doc[DOCUMENT_ELEMENT], BORDER_LEFT_WIDTH);
+                                bTop = _getComputedStyle(doc[DOCUMENT_ELEMENT], BORDER_TOP_WIDTH);
+                                if (bLeft !== MEDIUM) {
+                                    off1 = parseInt(bLeft, 10);
+                                }
+                                if (bTop !== MEDIUM) {
+                                    off2 = parseInt(bTop, 10);
+                                }
+                            }
+                            
+                            xy[0] -= off1;
+                            xy[1] -= off2;
+
+                        }
+
+                        if ((scrollTop || scrollLeft)) {
+                            xy[0] += scrollLeft;
+                            xy[1] += scrollTop;
+                        }
+
+                        // gecko may return sub-pixel (non-int) values
+                        xy[0] = floor(xy[0]);
+                        xy[1] = floor(xy[1]);
+                    } else {
+                    }
+
+                    return xy;
+                };
+            } else {
+                return function(node) { // ff2, safari: manually calculate by crawling up offsetParents
+                    var docScrollLeft, docScrollTop,
+                        scrollTop, scrollLeft,
+                        bCheck,
+                        xy = false,
+                        parentNode = node;
+
+                    if  (Y.Dom._canPosition(node) ) {
+                        xy = [node[OFFSET_LEFT], node[OFFSET_TOP]];
+                        docScrollLeft = Y.Dom.getDocumentScrollLeft(node[OWNER_DOCUMENT]);
+                        docScrollTop = Y.Dom.getDocumentScrollTop(node[OWNER_DOCUMENT]);
+
+                        // TODO: refactor with !! or just falsey
+                        bCheck = ((isGecko || UA.webkit > 519) ? true : false);
+
+                        // TODO: worth refactoring for TOP/LEFT only?
+                        while ((parentNode = parentNode[OFFSET_PARENT])) {
+                            xy[0] += parentNode[OFFSET_LEFT];
+                            xy[1] += parentNode[OFFSET_TOP];
+                            if (bCheck) {
+                                xy = Y.Dom._calcBorders(parentNode, xy);
+                            }
+                        }
+
+                        // account for any scrolled ancestors
+                        if (Y.Dom._getStyle(node, POSITION) !== FIXED) {
+                            parentNode = node;
+
+                            while ((parentNode = parentNode[PARENT_NODE]) && parentNode[TAG_NAME]) {
+                                scrollTop = parentNode[SCROLL_TOP];
+                                scrollLeft = parentNode[SCROLL_LEFT];
+
+                                //Firefox does something funky with borders when overflow is not visible.
+                                if (isGecko && (Y.Dom._getStyle(parentNode, 'overflow') !== 'visible')) {
+                                        xy = Y.Dom._calcBorders(parentNode, xy);
+                                }
+
+                                if (scrollTop || scrollLeft) {
+                                    xy[0] -= scrollLeft;
+                                    xy[1] -= scrollTop;
+                                }
+                            }
+                            xy[0] += docScrollLeft;
+                            xy[1] += docScrollTop;
+
+                        } else {
+                            //Fix FIXED position -- add scrollbars
+                            if (isOpera) {
+                                xy[0] -= docScrollLeft;
+                                xy[1] -= docScrollTop;
+                            } else if (isSafari || isGecko) {
+                                xy[0] += docScrollLeft;
+                                xy[1] += docScrollTop;
+                            }
+                        }
+                        //Round the numbers so we get sane data back
+                        xy[0] = Math.floor(xy[0]);
+                        xy[1] = Math.floor(xy[1]);
+                    } else {
+                    }
+                    return xy;                
+                };
+            }
+        }(), // NOTE: Executing for loadtime branching
+        
+        /**
+         * Gets the current X position of an element based on page coordinates.  The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getX
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @return {Number | Array} The X position of the element(s)
+         */
+        getX: function(el) {
+            var f = function(el) {
+                return Y.Dom.getXY(el)[0];
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Gets the current Y position of an element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @return {Number | Array} The Y position of the element(s)
+         */
+        getY: function(el) {
+            var f = function(el) {
+                return Y.Dom.getXY(el)[1];
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Set the position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element(s) must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setXY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @param {Array} pos Contains X & Y values for new position (coordinates are page-based)
+        * @param {Boolean} noRetry By default we try and set the position a second time if the first fails
+         */
+        setXY: function(el, pos, noRetry) {
+            Y.Dom.batch(el, Y.Dom._setXY, { pos: pos, noRetry: noRetry });
+        },
+
+        _setXY: function(node, args) {
+            var pos = Y.Dom._getStyle(node, POSITION),
+                setStyle = Y.Dom.setStyle,
+                xy = args.pos,
+                noRetry = args.noRetry,
+
+                delta = [ // assuming pixels; if not we will have to retry
+                    parseInt( Y.Dom.getComputedStyle(node, LEFT), 10 ),
+                    parseInt( Y.Dom.getComputedStyle(node, TOP), 10 )
+                ],
+
+                currentXY,
+                newXY;
+        
+            if (pos == 'static') { // default to relative
+                pos = RELATIVE;
+                setStyle(node, POSITION, pos);
+            }
+
+            currentXY = Y.Dom._getXY(node);
+
+            if (!xy || currentXY === false) { // has to be part of doc to have xy
+                return false; 
+            }
+            
+            if ( isNaN(delta[0]) ) {// in case of 'auto'
+                delta[0] = (pos == RELATIVE) ? 0 : node[OFFSET_LEFT];
+            } 
+            if ( isNaN(delta[1]) ) { // in case of 'auto'
+                delta[1] = (pos == RELATIVE) ? 0 : node[OFFSET_TOP];
+            } 
+
+            if (xy[0] !== null) { // from setX
+                setStyle(node, LEFT, xy[0] - currentXY[0] + delta[0] + 'px');
+            }
+
+            if (xy[1] !== null) { // from setY
+                setStyle(node, TOP, xy[1] - currentXY[1] + delta[1] + 'px');
+            }
+          
+            if (!noRetry) {
+                newXY = Y.Dom._getXY(node);
+
+                // if retry is true, try one more time if we miss 
+               if ( (xy[0] !== null && newXY[0] != xy[0]) || 
+                    (xy[1] !== null && newXY[1] != xy[1]) ) {
+                   Y.Dom._setXY(node, { pos: xy, noRetry: true });
+               }
+            }        
+
+        },
+        
+        /**
+         * Set the X position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setX
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {Int} x The value to use as the X coordinate for the element(s).
+         */
+        setX: function(el, x) {
+            Y.Dom.setXY(el, [x, null]);
+        },
+        
+        /**
+         * Set the Y position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {Int} x To use as the Y coordinate for the element(s).
+         */
+        setY: function(el, y) {
+            Y.Dom.setXY(el, [null, y]);
+        },
+        
+        /**
+         * Returns the region position of the given element.
+         * The element must be part of the DOM tree to have a region (display:none or elements not appended return false).
+        * @method getRegion
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @return {Region | Array} A Region or array of Region instances containing "top, left, bottom, right" member data.
+         */
+        getRegion: function(el) {
+            var f = function(el) {
+                var region = false;
+                if ( Y.Dom._canPosition(el) ) {
+                    region = Y.Region.getRegion(el);
+                } else {
+                }
+
+                return region;
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Returns the width of the client (viewport).
+        * @method getClientWidth
+        * @deprecated Now using getViewportWidth.  This interface left intact for back compat.
+        * @return {Int} The width of the viewable area of the page.
+         */
+        getClientWidth: function() {
+            return Y.Dom.getViewportWidth();
+        },
+        
+        /**
+         * Returns the height of the client (viewport).
+        * @method getClientHeight
+        * @deprecated Now using getViewportHeight.  This interface left intact for back compat.
+        * @return {Int} The height of the viewable area of the page.
+         */
+        getClientHeight: function() {
+            return Y.Dom.getViewportHeight();
+        },
+
+        /**
+         * Returns an array of HTMLElements with the given class.
+         * For optimized performance, include a tag and/or root node when possible.
+         * Note: This method operates against a live collection, so modifying the 
+         * collection in the callback (removing/appending nodes, etc.) will have
+         * side effects.  Instead you should iterate the returned nodes array,
+         * as you would with the native "getElementsByTagName" method. 
+        * @method getElementsByClassName
+        * @param {String} className The class name to match against
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point.
+         * This element is not included in the className scan.
+        * @param {Function} apply (optional) A function to apply to each element when found 
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Array} An array of elements that have the given class name
+         */
+        getElementsByClassName: function(className, tag, root, apply, o, overrides) {
+            tag = tag || '*';
+            root = (root) ? Y.Dom.get(root) : null || document; 
+            if (!root) {
+                return [];
+            }
+
+            var nodes = [],
+                elements = root.getElementsByTagName(tag),
+                hasClass = Y.Dom.hasClass;
+
+            for (var i = 0, len = elements.length; i < len; ++i) {
+                if ( hasClass(elements[i], className) ) {
+                    nodes[nodes.length] = elements[i];
+                }
+            }
+            
+            if (apply) {
+                Y.Dom.batch(nodes, apply, o, overrides);
+            }
+
+            return nodes;
+        },
+
+        /**
+         * Determines whether an HTMLElement has the given className.
+        * @method hasClass
+        * @param {String | HTMLElement | Array} el The element or collection to test
+        * @param {String} className the class name to search for
+        * @return {Boolean | Array} A boolean value or array of boolean values
+         */
+        hasClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._hasClass, className);
+        },
+
+        _hasClass: function(el, className) {
+            var ret = false,
+                current;
+            
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                if (className.exec) {
+                    ret = className.test(current);
+                } else {
+                    ret = className && (SPACE + current + SPACE).
+                        indexOf(SPACE + className + SPACE) > -1;
+                }
+            } else {
+            }
+
+            return ret;
+        },
+    
+        /**
+         * Adds a class name to a given element or collection of elements.
+        * @method addClass         
+        * @param {String | HTMLElement | Array} el The element or collection to add the class to
+        * @param {String} className the class name to add to the class attribute
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        addClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._addClass, className);
+        },
+
+        _addClass: function(el, className) {
+            var ret = false,
+                current;
+
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                if ( !Y.Dom._hasClass(el, className) ) {
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(current + SPACE + className));
+                    ret = true;
+                }
+            } else {
+            }
+
+            return ret;
+        },
+    
+        /**
+         * Removes a class name from a given element or collection of elements.
+        * @method removeClass         
+        * @param {String | HTMLElement | Array} el The element or collection to remove the class from
+        * @param {String} className the class name to remove from the class attribute
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        removeClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._removeClass, className);
+        },
+        
+        _removeClass: function(el, className) {
+            var ret = false,
+                current,
+                newClass,
+                attr;
+
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                Y.Dom.setAttribute(el, CLASS_NAME, current.replace(Y.Dom._getClassRegex(className), EMPTY));
+
+                newClass = Y.Dom._getAttribute(el, CLASS_NAME);
+                if (current !== newClass) { // else nothing changed
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(newClass)); // trim after comparing to current class
+                    ret = true;
+
+                    if (Y.Dom._getAttribute(el, CLASS_NAME) === '') { // remove class attribute if empty
+                        attr = (el.hasAttribute && el.hasAttribute(_CLASS)) ? _CLASS : CLASS_NAME;
+                        el.removeAttribute(attr);
+                    }
+                }
+
+            } else {
+            }
+
+            return ret;
+        },
+        
+        /**
+         * Replace a class with another class for a given element or collection of elements.
+         * If no oldClassName is present, the newClassName is simply added.
+        * @method replaceClass  
+        * @param {String | HTMLElement | Array} el The element or collection to remove the class from
+        * @param {String} oldClassName the class name to be replaced
+        * @param {String} newClassName the class name that will be replacing the old class name
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        replaceClass: function(el, oldClassName, newClassName) {
+            return Y.Dom.batch(el, Y.Dom._replaceClass, { from: oldClassName, to: newClassName });
+        },
+
+        _replaceClass: function(el, classObj) {
+            var className,
+                from,
+                to,
+                ret = false,
+                current;
+
+            if (el && classObj) {
+                from = classObj.from;
+                to = classObj.to;
+
+                if (!to) {
+                    ret = false;
+                }  else if (!from) { // just add if no "from"
+                    ret = Y.Dom._addClass(el, classObj.to);
+                } else if (from !== to) { // else nothing to replace
+                    // May need to lead with DBLSPACE?
+                    current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                    className = (SPACE + current.replace(Y.Dom._getClassRegex(from), SPACE + to)).
+                               split(Y.Dom._getClassRegex(to));
+
+                    // insert to into what would have been the first occurrence slot
+                    className.splice(1, 0, SPACE + to);
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(className.join(EMPTY)));
+                    ret = true;
+                }
+            } else {
+            }
+
+            return ret;
+        },
+        
+        /**
+         * Returns an ID and applies it to the element "el", if provided.
+        * @method generateId  
+        * @param {String | HTMLElement | Array} el (optional) An optional element array of elements to add an ID to (no ID is added if one is already present).
+        * @param {String} prefix (optional) an optional prefix to use (defaults to "yui-gen").
+        * @return {String | Array} The generated ID, or array of generated IDs (or original ID if already present on an element)
+         */
+        generateId: function(el, prefix) {
+            prefix = prefix || 'yui-gen';
+
+            var f = function(el) {
+                if (el && el.id) { // do not override existing ID
+                    return el.id;
+                }
+
+                var id = prefix + YAHOO.env._id_counter++;
+
+                if (el) {
+                    if (el[OWNER_DOCUMENT] && el[OWNER_DOCUMENT].getElementById(id)) { // in case one already exists
+                        // use failed id plus prefix to help ensure uniqueness
+                        return Y.Dom.generateId(el, id + prefix);
+                    }
+                    el.id = id;
+                }
+                
+                return id;
+            };
+
+            // batch fails when no element, so just generate and return single ID
+            return Y.Dom.batch(el, f, Y.Dom, true) || f.apply(Y.Dom, arguments);
+        },
+        
+        /**
+         * Determines whether an HTMLElement is an ancestor of another HTML element in the DOM hierarchy.
+        * @method isAncestor
+        * @param {String | HTMLElement} haystack The possible ancestor
+        * @param {String | HTMLElement} needle The possible descendent
+        * @return {Boolean} Whether or not the haystack is an ancestor of needle
+         */
+        isAncestor: function(haystack, needle) {
+            haystack = Y.Dom.get(haystack);
+            needle = Y.Dom.get(needle);
+            
+            var ret = false;
+
+            if ( (haystack && needle) && (haystack[NODE_TYPE] && needle[NODE_TYPE]) ) {
+                if (haystack.contains && haystack !== needle) { // contains returns true when equal
+                    ret = haystack.contains(needle);
+                }
+                else if (haystack.compareDocumentPosition) { // gecko
+                    ret = !!(haystack.compareDocumentPosition(needle) & 16);
+                }
+            } else {
+            }
+            return ret;
+        },
+        
+        /**
+         * Determines whether an HTMLElement is present in the current document.
+        * @method inDocument         
+        * @param {String | HTMLElement} el The element to search for
+        * @param {Object} doc An optional document to search, defaults to element's owner document 
+        * @return {Boolean} Whether or not the element is present in the current document
+         */
+        inDocument: function(el, doc) {
+            return Y.Dom._inDoc(Y.Dom.get(el), doc);
+        },
+
+        _inDoc: function(el, doc) {
+            var ret = false;
+            if (el && el[TAG_NAME]) {
+                doc = doc || el[OWNER_DOCUMENT]; 
+                ret = Y.Dom.isAncestor(doc[DOCUMENT_ELEMENT], el);
+            } else {
+            }
+            return ret;
+        },
+        
+        /**
+         * Returns an array of HTMLElements that pass the test applied by supplied boolean method.
+         * For optimized performance, include a tag and/or root node when possible.
+         * Note: This method operates against a live collection, so modifying the 
+         * collection in the callback (removing/appending nodes, etc.) will have
+         * side effects.  Instead you should iterate the returned nodes array,
+         * as you would with the native "getElementsByTagName" method. 
+        * @method getElementsBy
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point 
+        * @param {Function} apply (optional) A function to apply to each element when found 
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Array} Array of HTMLElements
+         */
+        getElementsBy: function(method, tag, root, apply, o, overrides, firstOnly) {
+            tag = tag || '*';
+            root = (root) ? Y.Dom.get(root) : null || document; 
+
+            if (!root) {
+                return [];
+            }
+
+            var nodes = [],
+                elements = root.getElementsByTagName(tag);
+            
+            for (var i = 0, len = elements.length; i < len; ++i) {
+                if ( method(elements[i]) ) {
+                    if (firstOnly) {
+                        nodes = elements[i]; 
+                        break;
+                    } else {
+                        nodes[nodes.length] = elements[i];
+                    }
+                }
+            }
+
+            if (apply) {
+                Y.Dom.batch(nodes, apply, o, overrides);
+            }
+
+            
+            return nodes;
+        },
+        
+        /**
+         * Returns the first HTMLElement that passes the test applied by the supplied boolean method.
+        * @method getElementBy
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point 
+        * @return {HTMLElement}
+         */
+        getElementBy: function(method, tag, root) {
+            return Y.Dom.getElementsBy(method, tag, root, null, null, null, true); 
+        },
+
+        /**
+         * Runs the supplied method against each item in the Collection/Array.
+         * The method is called with the element(s) as the first arg, and the optional param as the second ( method(el, o) ).
+        * @method batch
+        * @param {String | HTMLElement | Array} el (optional) An element or array of elements to apply the method to
+        * @param {Function} method The method to apply to the element(s)
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Any | Array} The return value(s) from the supplied method
+         */
+        batch: function(el, method, o, overrides) {
+            var collection = [],
+                scope = (overrides) ? o : window;
+                
+            el = (el && (el[TAG_NAME] || el.item)) ? el : Y.Dom.get(el); // skip get() when possible
+            if (el && method) {
+                if (el[TAG_NAME] || el.length === undefined) { // element or not array-like 
+                    return method.call(scope, el, o);
+                } 
+
+                for (var i = 0; i < el.length; ++i) {
+                    collection[collection.length] = method.call(scope, el[i], o);
+                }
+            } else {
+                return false;
+            } 
+            return collection;
+        },
+        
+        /**
+         * Returns the height of the document.
+        * @method getDocumentHeight
+        * @return {Int} The height of the actual document (which includes the body and its margin).
+         */
+        getDocumentHeight: function() {
+            var scrollHeight = (document[COMPAT_MODE] != CSS1_COMPAT || isSafari) ? document.body.scrollHeight : documentElement.scrollHeight,
+                h = Math.max(scrollHeight, Y.Dom.getViewportHeight());
+
+            return h;
+        },
+        
+        /**
+         * Returns the width of the document.
+        * @method getDocumentWidth
+        * @return {Int} The width of the actual document (which includes the body and its margin).
+         */
+        getDocumentWidth: function() {
+            var scrollWidth = (document[COMPAT_MODE] != CSS1_COMPAT || isSafari) ? document.body.scrollWidth : documentElement.scrollWidth,
+                w = Math.max(scrollWidth, Y.Dom.getViewportWidth());
+            return w;
+        },
+
+        /**
+         * Returns the current height of the viewport.
+        * @method getViewportHeight
+        * @return {Int} The height of the viewable area of the page (excludes scrollbars).
+         */
+        getViewportHeight: function() {
+            var height = self.innerHeight, // Safari, Opera
+                mode = document[COMPAT_MODE];
+        
+            if ( (mode || isIE) && !isOpera ) { // IE, Gecko
+                height = (mode == CSS1_COMPAT) ?
+                        documentElement.clientHeight : // Standards
+                        document.body.clientHeight; // Quirks
+            }
+        
+            return height;
+        },
+        
+        /**
+         * Returns the current width of the viewport.
+        * @method getViewportWidth
+        * @return {Int} The width of the viewable area of the page (excludes scrollbars).
+         */
+        
+        getViewportWidth: function() {
+            var width = self.innerWidth,  // Safari
+                mode = document[COMPAT_MODE];
+            
+            if (mode || isIE) { // IE, Gecko, Opera
+                width = (mode == CSS1_COMPAT) ?
+                        documentElement.clientWidth : // Standards
+                        document.body.clientWidth; // Quirks
+            }
+            return width;
+        },
+
+       /**
+         * Returns the nearest ancestor that passes the test applied by supplied boolean method.
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+        * @method getAncestorBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @return {Object} HTMLElement or null if not found
+         */
+        getAncestorBy: function(node, method) {
+            while ( (node = node[PARENT_NODE]) ) { // NOTE: assignment
+                if ( Y.Dom._testElement(node, method) ) {
+                    return node;
+                }
+            } 
+
+            return null;
+        },
+        
+        /**
+         * Returns the nearest ancestor with the given className.
+        * @method getAncestorByClassName
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @param {String} className
+        * @return {Object} HTMLElement
+         */
+        getAncestorByClassName: function(node, className) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                return null;
+            }
+            var method = function(el) { return Y.Dom.hasClass(el, className); };
+            return Y.Dom.getAncestorBy(node, method);
+        },
+
+        /**
+         * Returns the nearest ancestor with the given tagName.
+        * @method getAncestorByTagName
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @param {String} tagName
+        * @return {Object} HTMLElement
+         */
+        getAncestorByTagName: function(node, tagName) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                return null;
+            }
+            var method = function(el) {
+                 return el[TAG_NAME] && el[TAG_NAME].toUpperCase() == tagName.toUpperCase();
+            };
+
+            return Y.Dom.getAncestorBy(node, method);
+        },
+
+        /**
+         * Returns the previous sibling that is an HTMLElement. 
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+         * Returns the nearest HTMLElement sibling if no method provided.
+        * @method getPreviousSiblingBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test siblings
+         * that receives the sibling node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getPreviousSiblingBy: function(node, method) {
+            while (node) {
+                node = node.previousSibling;
+                if ( Y.Dom._testElement(node, method) ) {
+                    return node;
+                }
+            }
+            return null;
+        }, 
+
+        /**
+         * Returns the previous sibling that is an HTMLElement 
+        * @method getPreviousSibling
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getPreviousSibling: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                return null;
+            }
+
+            return Y.Dom.getPreviousSiblingBy(node);
+        }, 
+
+        /**
+         * Returns the next HTMLElement sibling that passes the boolean method. 
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+         * Returns the nearest HTMLElement sibling if no method provided.
+        * @method getNextSiblingBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test siblings
+         * that receives the sibling node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getNextSiblingBy: function(node, method) {
+            while (node) {
+                node = node.nextSibling;
+                if ( Y.Dom._testElement(node, method) ) {
+                    return node;
+                }
+            }
+            return null;
+        }, 
+
+        /**
+         * Returns the next sibling that is an HTMLElement 
+        * @method getNextSibling
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getNextSibling: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                return null;
+            }
+
+            return Y.Dom.getNextSiblingBy(node);
+        }, 
+
+        /**
+         * Returns the first HTMLElement child that passes the test method. 
+        * @method getFirstChildBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getFirstChildBy: function(node, method) {
+            var child = ( Y.Dom._testElement(node.firstChild, method) ) ? node.firstChild : null;
+            return child || Y.Dom.getNextSiblingBy(node.firstChild, method);
+        }, 
+
+        /**
+         * Returns the first HTMLElement child. 
+        * @method getFirstChild
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getFirstChild: function(node, method) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                return null;
+            }
+            return Y.Dom.getFirstChildBy(node);
+        }, 
+
+        /**
+         * Returns the last HTMLElement child that passes the test method. 
+        * @method getLastChildBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getLastChildBy: function(node, method) {
+            if (!node) {
+                return null;
+            }
+            var child = ( Y.Dom._testElement(node.lastChild, method) ) ? node.lastChild : null;
+            return child || Y.Dom.getPreviousSiblingBy(node.lastChild, method);
+        }, 
+
+        /**
+         * Returns the last HTMLElement child. 
+        * @method getLastChild
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getLastChild: function(node) {
+            node = Y.Dom.get(node);
+            return Y.Dom.getLastChildBy(node);
+        }, 
+
+        /**
+         * Returns an array of HTMLElement childNodes that pass the test method. 
+        * @method getChildrenBy
+        * @param {HTMLElement} node The HTMLElement to start from
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Array} A static array of HTMLElements
+         */
+        getChildrenBy: function(node, method) {
+            var child = Y.Dom.getFirstChildBy(node, method),
+                children = child ? [child] : [];
+
+            Y.Dom.getNextSiblingBy(child, function(node) {
+                if ( !method || method(node) ) {
+                    children[children.length] = node;
+                }
+                return false; // fail test to collect all children
+            });
+
+            return children;
+        },
+ 
+        /**
+         * Returns an array of HTMLElement childNodes. 
+        * @method getChildren
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Array} A static array of HTMLElements
+         */
+        getChildren: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+            }
+
+            return Y.Dom.getChildrenBy(node);
+        },
+
+        /**
+         * Returns the left scroll value of the document 
+        * @method getDocumentScrollLeft
+        * @param {HTMLDocument} document (optional) The document to get the scroll value of
+        * @return {Int}  The amount that the document is scrolled to the left
+         */
+        getDocumentScrollLeft: function(doc) {
+            doc = doc || document;
+            return Math.max(doc[DOCUMENT_ELEMENT].scrollLeft, doc.body.scrollLeft);
+        }, 
+
+        /**
+         * Returns the top scroll value of the document 
+        * @method getDocumentScrollTop
+        * @param {HTMLDocument} document (optional) The document to get the scroll value of
+        * @return {Int}  The amount that the document is scrolled to the top
+         */
+        getDocumentScrollTop: function(doc) {
+            doc = doc || document;
+            return Math.max(doc[DOCUMENT_ELEMENT].scrollTop, doc.body.scrollTop);
+        },
+
+        /**
+         * Inserts the new node as the previous sibling of the reference node 
+        * @method insertBefore
+        * @param {String | HTMLElement} newNode The node to be inserted
+        * @param {String | HTMLElement} referenceNode The node to insert the new node before 
+        * @return {HTMLElement} The node that was inserted (or null if insert fails) 
+         */
+        insertBefore: function(newNode, referenceNode) {
+            newNode = Y.Dom.get(newNode); 
+            referenceNode = Y.Dom.get(referenceNode); 
+            
+            if (!newNode || !referenceNode || !referenceNode[PARENT_NODE]) {
+                return null;
+            }       
+
+            return referenceNode[PARENT_NODE].insertBefore(newNode, referenceNode); 
+        },
+
+        /**
+         * Inserts the new node as the next sibling of the reference node 
+        * @method insertAfter
+        * @param {String | HTMLElement} newNode The node to be inserted
+        * @param {String | HTMLElement} referenceNode The node to insert the new node after 
+        * @return {HTMLElement} The node that was inserted (or null if insert fails) 
+         */
+        insertAfter: function(newNode, referenceNode) {
+            newNode = Y.Dom.get(newNode); 
+            referenceNode = Y.Dom.get(referenceNode); 
+            
+            if (!newNode || !referenceNode || !referenceNode[PARENT_NODE]) {
+                return null;
+            }       
+
+            if (referenceNode.nextSibling) {
+                return referenceNode[PARENT_NODE].insertBefore(newNode, referenceNode.nextSibling); 
+            } else {
+                return referenceNode[PARENT_NODE].appendChild(newNode);
+            }
+        },
+
+        /**
+         * Creates a Region based on the viewport relative to the document. 
+        * @method getClientRegion
+        * @return {Region} A Region object representing the viewport which accounts for document scroll
+         */
+        getClientRegion: function() {
+            var t = Y.Dom.getDocumentScrollTop(),
+                l = Y.Dom.getDocumentScrollLeft(),
+                r = Y.Dom.getViewportWidth() + l,
+                b = Y.Dom.getViewportHeight() + t;
+
+            return new Y.Region(t, r, b, l);
+        },
+
+        /**
+         * Provides a normalized attribute interface. 
+        * @method setAttribute
+        * @param {String | HTMLElement} el The target element for the attribute.
+        * @param {String} attr The attribute to set.
+        * @param {String} val The value of the attribute.
+         */
+        setAttribute: function(el, attr, val) {
+            Y.Dom.batch(el, Y.Dom._setAttribute, { attr: attr, val: val });
+        },
+
+        _setAttribute: function(el, args) {
+            var attr = Y.Dom._toCamel(args.attr),
+                val = args.val;
+
+            if (el && el.setAttribute) {
+                if (Y.Dom.DOT_ATTRIBUTES[attr]) {
+                    el[attr] = val;
+                } else {
+                    attr = Y.Dom.CUSTOM_ATTRIBUTES[attr] || attr;
+                    el.setAttribute(attr, val);
+                }
+            } else {
+            }
+        },
+
+        /**
+         * Provides a normalized attribute interface. 
+        * @method getAttribute
+        * @param {String | HTMLElement} el The target element for the attribute.
+        * @param {String} attr The attribute to get.
+        * @return {String} The current value of the attribute. 
+         */
+        getAttribute: function(el, attr) {
+            return Y.Dom.batch(el, Y.Dom._getAttribute, attr);
+        },
+
+
+        _getAttribute: function(el, attr) {
+            var val;
+            attr = Y.Dom.CUSTOM_ATTRIBUTES[attr] || attr;
+
+            if (el && el.getAttribute) {
+                val = el.getAttribute(attr, 2);
+            } else {
+            }
+
+            return val;
+        },
+
+        _toCamel: function(property) {
+            var c = propertyCache;
+
+            function tU(x,l) {
+                return l.toUpperCase();
+            }
+
+            return c[property] || (c[property] = property.indexOf('-') === -1 ? 
+                                    property :
+                                    property.replace( /-([a-z])/gi, tU ));
+        },
+
+        _getClassRegex: function(className) {
+            var re;
+            if (className !== undefined) { // allow empty string to pass
+                if (className.exec) { // already a RegExp
+                    re = className;
+                } else {
+                    re = reCache[className];
+                    if (!re) {
+                        // escape special chars (".", "[", etc.)
+                        className = className.replace(Y.Dom._patterns.CLASS_RE_TOKENS, '\\$1');
+                        re = reCache[className] = new RegExp(C_START + className + C_END, G);
+                    }
+                }
+            }
+            return re;
+        },
+
+        _patterns: {
+            ROOT_TAG: /^body|html$/i, // body for quirks mode, html for standards,
+            CLASS_RE_TOKENS: /([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g
+        },
+
+
+        _testElement: function(node, method) {
+            return node && node[NODE_TYPE] == 1 && ( !method || method(node) );
+        },
+
+        _calcBorders: function(node, xy2) {
+            var t = parseInt(Y.Dom[GET_COMPUTED_STYLE](node, BORDER_TOP_WIDTH), 10) || 0,
+                l = parseInt(Y.Dom[GET_COMPUTED_STYLE](node, BORDER_LEFT_WIDTH), 10) || 0;
+            if (isGecko) {
+                if (RE_TABLE.test(node[TAG_NAME])) {
+                    t = 0;
+                    l = 0;
+                }
+            }
+            xy2[0] += l;
+            xy2[1] += t;
+            return xy2;
+        }
+    };
+        
+    var _getComputedStyle = Y.Dom[GET_COMPUTED_STYLE];
+    // fix opera computedStyle default color unit (convert to rgb)
+    if (UA.opera) {
+        Y.Dom[GET_COMPUTED_STYLE] = function(node, att) {
+            var val = _getComputedStyle(node, att);
+            if (RE_COLOR.test(att)) {
+                val = Y.Dom.Color.toRGB(val);
+            }
+
+            return val;
+        };
+
+    }
+
+    // safari converts transparent to rgba(), others use "transparent"
+    if (UA.webkit) {
+        Y.Dom[GET_COMPUTED_STYLE] = function(node, att) {
+            var val = _getComputedStyle(node, att);
+
+            if (val === 'rgba(0, 0, 0, 0)') {
+                val = 'transparent'; 
+            }
+
+            return val;
+        };
+
+    }
+
+    if (UA.ie && UA.ie >= 8 && document.documentElement.hasAttribute) { // IE 8 standards
+        Y.Dom.DOT_ATTRIBUTES.type = true; // IE 8 errors on input.setAttribute('type')
+    }
+})();
+/**
+ * A region is a representation of an object on a grid.  It is defined
+ * by the top, right, bottom, left extents, so is rectangular by default.  If 
+ * other shapes are required, this class could be extended to support it.
+ * @namespace YAHOO.util
+ * @class Region
+ * @param {Int} t the top extent
+ * @param {Int} r the right extent
+ * @param {Int} b the bottom extent
+ * @param {Int} l the left extent
+ * @constructor
+ */
+YAHOO.util.Region = function(t, r, b, l) {
+
+    /**
+     * The region's top extent
+    * @property top
+    * @type Int
+     */
+    this.top = t;
+    
+    /**
+     * The region's top extent
+    * @property y
+    * @type Int
+     */
+    this.y = t;
+    
+    /**
+     * The region's top extent as index, for symmetry with set/getXY
+    * @property 1
+    * @type Int
+     */
+    this[1] = t;
+
+    /**
+     * The region's right extent
+    * @property right
+    * @type int
+     */
+    this.right = r;
+
+    /**
+     * The region's bottom extent
+    * @property bottom
+    * @type Int
+     */
+    this.bottom = b;
+
+    /**
+     * The region's left extent
+    * @property left
+    * @type Int
+     */
+    this.left = l;
+    
+    /**
+     * The region's left extent
+    * @property x
+    * @type Int
+     */
+    this.x = l;
+    
+    /**
+     * The region's left extent as index, for symmetry with set/getXY
+    * @property 0
+    * @type Int
+     */
+    this[0] = l;
+
+    /**
+     * The region's total width 
+    * @property width 
+    * @type Int
+     */
+    this.width = this.right - this.left;
+
+    /**
+     * The region's total height 
+    * @property height 
+    * @type Int
+     */
+    this.height = this.bottom - this.top;
+};
+
+/**
+ * Returns true if this region contains the region passed in
+ * @method contains
+ * @param  {Region}  region The region to evaluate
+ * @return {Boolean}        True if the region is contained with this region, 
+ *                          else false
+ */
+YAHOO.util.Region.prototype.contains = function(region) {
+    return ( region.left   >= this.left   && 
+             region.right  <= this.right  && 
+             region.top    >= this.top    && 
+             region.bottom <= this.bottom    );
+
+};
+
+/**
+ * Returns the area of the region
+ * @method getArea
+ * @return {Int} the region's area
+ */
+YAHOO.util.Region.prototype.getArea = function() {
+    return ( (this.bottom - this.top) * (this.right - this.left) );
+};
+
+/**
+ * Returns the region where the passed in region overlaps with this one
+ * @method intersect
+ * @param  {Region} region The region that intersects
+ * @return {Region}        The overlap region, or null if there is no overlap
+ */
+YAHOO.util.Region.prototype.intersect = function(region) {
+    var t = Math.max( this.top,    region.top    ),
+        r = Math.min( this.right,  region.right  ),
+        b = Math.min( this.bottom, region.bottom ),
+        l = Math.max( this.left,   region.left   );
+    
+    if (b >= t && r >= l) {
+        return new YAHOO.util.Region(t, r, b, l);
+    } else {
+        return null;
+    }
+};
+
+/**
+ * Returns the region representing the smallest region that can contain both
+ * the passed in region and this region.
+ * @method union
+ * @param  {Region} region The region that to create the union with
+ * @return {Region}        The union region
+ */
+YAHOO.util.Region.prototype.union = function(region) {
+    var t = Math.min( this.top,    region.top    ),
+        r = Math.max( this.right,  region.right  ),
+        b = Math.max( this.bottom, region.bottom ),
+        l = Math.min( this.left,   region.left   );
+
+    return new YAHOO.util.Region(t, r, b, l);
+};
+
+/**
+ * toString
+ * @method toString
+ * @return string the region properties
+ */
+YAHOO.util.Region.prototype.toString = function() {
+    return ( "Region {"    +
+             "top: "       + this.top    + 
+             ", right: "   + this.right  + 
+             ", bottom: "  + this.bottom + 
+             ", left: "    + this.left   + 
+             ", height: "  + this.height + 
+             ", width: "    + this.width   + 
+             "}" );
+};
+
+/**
+ * Returns a region that is occupied by the DOM element
+ * @method getRegion
+ * @param  {HTMLElement} el The element
+ * @return {Region}         The region that the element occupies
+ * @static
+ */
+YAHOO.util.Region.getRegion = function(el) {
+    var p = YAHOO.util.Dom.getXY(el),
+        t = p[1],
+        r = p[0] + el.offsetWidth,
+        b = p[1] + el.offsetHeight,
+        l = p[0];
+
+    return new YAHOO.util.Region(t, r, b, l);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+/**
+ * A point is a region that is special in that it represents a single point on 
+ * the grid.
+ * @namespace YAHOO.util
+ * @class Point
+ * @param {Int} x The X position of the point
+ * @param {Int} y The Y position of the point
+ * @constructor
+ * @extends YAHOO.util.Region
+ */
+YAHOO.util.Point = function(x, y) {
+   if (YAHOO.lang.isArray(x)) { // accept input from Dom.getXY, Event.getXY, etc.
+      y = x[1]; // dont blow away x yet
+      x = x[0];
+   }
+ 
+    YAHOO.util.Point.superclass.constructor.call(this, y, x, y, x);
+};
+
+YAHOO.extend(YAHOO.util.Point, YAHOO.util.Region);
+
+(function() {
+/**
+ * Add style management functionality to DOM.
+ * @module dom
+ * @for Dom
+ */
+
+var Y = YAHOO.util, 
+    CLIENT_TOP = 'clientTop',
+    CLIENT_LEFT = 'clientLeft',
+    PARENT_NODE = 'parentNode',
+    RIGHT = 'right',
+    HAS_LAYOUT = 'hasLayout',
+    PX = 'px',
+    OPACITY = 'opacity',
+    AUTO = 'auto',
+    BORDER_LEFT_WIDTH = 'borderLeftWidth',
+    BORDER_TOP_WIDTH = 'borderTopWidth',
+    BORDER_RIGHT_WIDTH = 'borderRightWidth',
+    BORDER_BOTTOM_WIDTH = 'borderBottomWidth',
+    VISIBLE = 'visible',
+    TRANSPARENT = 'transparent',
+    HEIGHT = 'height',
+    WIDTH = 'width',
+    STYLE = 'style',
+    CURRENT_STYLE = 'currentStyle',
+
+// IE getComputedStyle
+// TODO: unit-less lineHeight (e.g. 1.22)
+    re_size = /^width|height$/,
+    re_unit = /^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,
+
+    ComputedStyle = {
+        get: function(el, property) {
+            var value = '',
+                current = el[CURRENT_STYLE][property];
+
+            if (property === OPACITY) {
+                value = Y.Dom.getStyle(el, OPACITY);        
+            } else if (!current || (current.indexOf && current.indexOf(PX) > -1)) { // no need to convert
+                value = current;
+            } else if (Y.Dom.IE_COMPUTED[property]) { // use compute function
+                value = Y.Dom.IE_COMPUTED[property](el, property);
+            } else if (re_unit.test(current)) { // convert to pixel
+                value = Y.Dom.IE.ComputedStyle.getPixel(el, property);
+            } else {
+                value = current;
+            }
+
+            return value;
+        },
+
+        getOffset: function(el, prop) {
+            var current = el[CURRENT_STYLE][prop],                        // value of "width", "top", etc.
+                capped = prop.charAt(0).toUpperCase() + prop.substr(1), // "Width", "Top", etc.
+                offset = 'offset' + capped,                             // "offsetWidth", "offsetTop", etc.
+                pixel = 'pixel' + capped,                               // "pixelWidth", "pixelTop", etc.
+                value = '',
+                actual;
+
+            if (current == AUTO) {
+                actual = el[offset]; // offsetHeight/Top etc.
+                if (actual === undefined) { // likely "right" or "bottom"
+                    value = 0;
+                }
+
+                value = actual;
+                if (re_size.test(prop)) { // account for box model diff 
+                    el[STYLE][prop] = actual; 
+                    if (el[offset] > actual) {
+                        // the difference is padding + border (works in Standards & Quirks modes)
+                        value = actual - (el[offset] - actual);
+                    }
+                    el[STYLE][prop] = AUTO; // revert to auto
+                }
+            } else { // convert units to px
+                if (!el[STYLE][pixel] && !el[STYLE][prop]) { // need to map style.width to currentStyle (no currentStyle.pixelWidth)
+                    el[STYLE][prop] = current;              // no style.pixelWidth if no style.width
+                }
+                value = el[STYLE][pixel];
+            }
+            return value + PX;
+        },
+
+        getBorderWidth: function(el, property) {
+            // clientHeight/Width = paddingBox (e.g. offsetWidth - borderWidth)
+            // clientTop/Left = borderWidth
+            var value = null;
+            if (!el[CURRENT_STYLE][HAS_LAYOUT]) { // TODO: unset layout?
+                el[STYLE].zoom = 1; // need layout to measure client
+            }
+
+            switch(property) {
+                case BORDER_TOP_WIDTH:
+                    value = el[CLIENT_TOP];
+                    break;
+                case BORDER_BOTTOM_WIDTH:
+                    value = el.offsetHeight - el.clientHeight - el[CLIENT_TOP];
+                    break;
+                case BORDER_LEFT_WIDTH:
+                    value = el[CLIENT_LEFT];
+                    break;
+                case BORDER_RIGHT_WIDTH:
+                    value = el.offsetWidth - el.clientWidth - el[CLIENT_LEFT];
+                    break;
+            }
+            return value + PX;
+        },
+
+        getPixel: function(node, att) {
+            // use pixelRight to convert to px
+            var val = null,
+                styleRight = node[CURRENT_STYLE][RIGHT],
+                current = node[CURRENT_STYLE][att];
+
+            node[STYLE][RIGHT] = current;
+            val = node[STYLE].pixelRight;
+            node[STYLE][RIGHT] = styleRight; // revert
+
+            return val + PX;
+        },
+
+        getMargin: function(node, att) {
+            var val;
+            if (node[CURRENT_STYLE][att] == AUTO) {
+                val = 0 + PX;
+            } else {
+                val = Y.Dom.IE.ComputedStyle.getPixel(node, att);
+            }
+            return val;
+        },
+
+        getVisibility: function(node, att) {
+            var current;
+            while ( (current = node[CURRENT_STYLE]) && current[att] == 'inherit') { // NOTE: assignment in test
+                node = node[PARENT_NODE];
+            }
+            return (current) ? current[att] : VISIBLE;
+        },
+
+        getColor: function(node, att) {
+            return Y.Dom.Color.toRGB(node[CURRENT_STYLE][att]) || TRANSPARENT;
+        },
+
+        getBorderColor: function(node, att) {
+            var current = node[CURRENT_STYLE],
+                val = current[att] || current.color;
+            return Y.Dom.Color.toRGB(Y.Dom.Color.toHex(val));
+        }
+
+    },
+
+//fontSize: getPixelFont,
+    IEComputed = {};
+
+IEComputed.top = IEComputed.right = IEComputed.bottom = IEComputed.left = 
+        IEComputed[WIDTH] = IEComputed[HEIGHT] = ComputedStyle.getOffset;
+
+IEComputed.color = ComputedStyle.getColor;
+
+IEComputed[BORDER_TOP_WIDTH] = IEComputed[BORDER_RIGHT_WIDTH] =
+        IEComputed[BORDER_BOTTOM_WIDTH] = IEComputed[BORDER_LEFT_WIDTH] =
+        ComputedStyle.getBorderWidth;
+
+IEComputed.marginTop = IEComputed.marginRight = IEComputed.marginBottom =
+        IEComputed.marginLeft = ComputedStyle.getMargin;
+
+IEComputed.visibility = ComputedStyle.getVisibility;
+IEComputed.borderColor = IEComputed.borderTopColor =
+        IEComputed.borderRightColor = IEComputed.borderBottomColor =
+        IEComputed.borderLeftColor = ComputedStyle.getBorderColor;
+
+Y.Dom.IE_COMPUTED = IEComputed;
+Y.Dom.IE_ComputedStyle = ComputedStyle;
+})();
+(function() {
+/**
+ * Add style management functionality to DOM.
+ * @module dom
+ * @for Dom
+ */
+
+var TO_STRING = 'toString',
+    PARSE_INT = parseInt,
+    RE = RegExp,
+    Y = YAHOO.util;
+
+Y.Dom.Color = {
+    KEYWORDS: {
+        black: '000',
+        silver: 'c0c0c0',
+        gray: '808080',
+        white: 'fff',
+        maroon: '800000',
+        red: 'f00',
+        purple: '800080',
+        fuchsia: 'f0f',
+        green: '008000',
+        lime: '0f0',
+        olive: '808000',
+        yellow: 'ff0',
+        navy: '000080',
+        blue: '00f',
+        teal: '008080',
+        aqua: '0ff'
+    },
+
+    re_RGB: /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,
+    re_hex: /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,
+    re_hex3: /([0-9A-F])/gi,
+
+    toRGB: function(val) {
+        if (!Y.Dom.Color.re_RGB.test(val)) {
+            val = Y.Dom.Color.toHex(val);
+        }
+
+        if(Y.Dom.Color.re_hex.exec(val)) {
+            val = 'rgb(' + [
+                PARSE_INT(RE.$1, 16),
+                PARSE_INT(RE.$2, 16),
+                PARSE_INT(RE.$3, 16)
+            ].join(', ') + ')';
+        }
+        return val;
+    },
+
+    toHex: function(val) {
+        val = Y.Dom.Color.KEYWORDS[val] || val;
+        if (Y.Dom.Color.re_RGB.exec(val)) {
+            var r = (RE.$1.length === 1) ? '0' + RE.$1 : Number(RE.$1),
+                g = (RE.$2.length === 1) ? '0' + RE.$2 : Number(RE.$2),
+                b = (RE.$3.length === 1) ? '0' + RE.$3 : Number(RE.$3);
+
+            val = [
+                r[TO_STRING](16),
+                g[TO_STRING](16),
+                b[TO_STRING](16)
+            ].join('');
+        }
+
+        if (val.length < 6) {
+            val = val.replace(Y.Dom.Color.re_hex3, '$1$1');
+        }
+
+        if (val !== 'transparent' && val.indexOf('#') < 0) {
+            val = '#' + val;
+        }
+
+        return val.toLowerCase();
+    }
+};
+}());
+YAHOO.register("dom", YAHOO.util.Dom, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/dom/dom.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dom/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/dom/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dom/index.php	(revision 1610)
@@ -0,0 +1,22 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         yui
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version      	$Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/dom/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dom/dom-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/dom/dom-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dom/dom-debug.js	(revision 1610)
@@ -0,0 +1,1872 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The dom module provides helper methods for manipulating Dom elements.
+ * @module dom
+ *
+ */
+
+(function() {
+    // for use with generateId (global to save state if Dom is overwritten)
+    YAHOO.env._id_counter = YAHOO.env._id_counter || 0;
+
+    // internal shorthand
+    var Y = YAHOO.util,
+        lang = YAHOO.lang,
+        UA = YAHOO.env.ua,
+        trim = YAHOO.lang.trim,
+        propertyCache = {}, // for faster hyphen converts
+        reCache = {}, // cache className regexes
+        RE_TABLE = /^t(?:able|d|h)$/i, // for _calcBorders
+        RE_COLOR = /color$/i,
+
+        // DOM aliases 
+        document = window.document,     
+        documentElement = document.documentElement,
+
+        // string constants
+        OWNER_DOCUMENT = 'ownerDocument',
+        DEFAULT_VIEW = 'defaultView',
+        DOCUMENT_ELEMENT = 'documentElement',
+        COMPAT_MODE = 'compatMode',
+        OFFSET_LEFT = 'offsetLeft',
+        OFFSET_TOP = 'offsetTop',
+        OFFSET_PARENT = 'offsetParent',
+        PARENT_NODE = 'parentNode',
+        NODE_TYPE = 'nodeType',
+        TAG_NAME = 'tagName',
+        SCROLL_LEFT = 'scrollLeft',
+        SCROLL_TOP = 'scrollTop',
+        GET_BOUNDING_CLIENT_RECT = 'getBoundingClientRect',
+        GET_COMPUTED_STYLE = 'getComputedStyle',
+        CURRENT_STYLE = 'currentStyle',
+        CSS1_COMPAT = 'CSS1Compat',
+        _BACK_COMPAT = 'BackCompat',
+        _CLASS = 'class', // underscore due to reserved word
+        CLASS_NAME = 'className',
+        EMPTY = '',
+        SPACE = ' ',
+        C_START = '(?:^|\\s)',
+        C_END = '(?= |$)',
+        G = 'g',
+        POSITION = 'position',
+        FIXED = 'fixed',
+        RELATIVE = 'relative',
+        LEFT = 'left',
+        TOP = 'top',
+        MEDIUM = 'medium',
+        BORDER_LEFT_WIDTH = 'borderLeftWidth',
+        BORDER_TOP_WIDTH = 'borderTopWidth',
+    
+    // brower detection
+        isOpera = UA.opera,
+        isSafari = UA.webkit, 
+        isGecko = UA.gecko, 
+        isIE = UA.ie; 
+    
+    /**
+     * Provides helper methods for DOM elements.
+    * @namespace YAHOO.util
+    * @class Dom
+    * @requires yahoo, event
+     */
+    Y.Dom = {
+        CUSTOM_ATTRIBUTES: (!documentElement.hasAttribute) ? { // IE < 8
+            'for': 'htmlFor',
+            'class': CLASS_NAME
+        } : { // w3c
+            'htmlFor': 'for',
+            'className': _CLASS
+        },
+
+        DOT_ATTRIBUTES: {},
+
+        /**
+         * Returns an HTMLElement reference.
+        * @method get
+        * @param {String | HTMLElement |Array} el Accepts a string to use as an ID for getting a DOM reference, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @return {HTMLElement | Array} A DOM reference to an HTML element or an array of HTMLElements.
+         */
+        get: function(el) {
+            var id, nodes, c, i, len, attr;
+
+            if (el) {
+                if (el[NODE_TYPE] || el.item) { // Node, or NodeList
+                    return el;
+                }
+
+                if (typeof el === 'string') { // id
+                    id = el;
+                    el = document.getElementById(el);
+                    attr = (el) ? el.attributes : null;
+                    if (el && attr && attr.id && attr.id.value === id) { // IE: avoid false match on "name" attribute
+                        return el;
+                    } else if (el && document.all) { // filter by name
+                        el = null;
+                        nodes = document.all[id];
+                        for (i = 0, len = nodes.length; i < len; ++i) {
+                            if (nodes[i].id === id) {
+                                return nodes[i];
+                            }
+                        }
+                    }
+                    return el;
+                }
+                
+                if (YAHOO.util.Element && el instanceof YAHOO.util.Element) {
+                    el = el.get('element');
+                }
+
+                if ('length' in el) { // array-like 
+                    c = [];
+                    for (i = 0, len = el.length; i < len; ++i) {
+                        c[c.length] = Y.Dom.get(el[i]);
+                    }
+                    
+                    return c;
+                }
+
+                return el; // some other object, just pass it back
+            }
+
+            return null;
+        },
+    
+        getComputedStyle: function(el, property) {
+            if (window[GET_COMPUTED_STYLE]) {
+                return el[OWNER_DOCUMENT][DEFAULT_VIEW][GET_COMPUTED_STYLE](el, null)[property];
+            } else if (el[CURRENT_STYLE]) {
+                return Y.Dom.IE_ComputedStyle.get(el, property);
+            }
+        },
+
+        /**
+         * Normalizes currentStyle and ComputedStyle.
+        * @method getStyle
+        * @param {String | HTMLElement |Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {String} property The style property whose value is returned.
+        * @return {String | Array} The current value of the style property for the element(s).
+         */
+        getStyle: function(el, property) {
+            return Y.Dom.batch(el, Y.Dom._getStyle, property);
+        },
+
+        // branching at load instead of runtime
+        _getStyle: function() {
+            if (window[GET_COMPUTED_STYLE]) { // W3C DOM method
+                return function(el, property) {
+                    property = (property === 'float') ? property = 'cssFloat' :
+                            Y.Dom._toCamel(property);
+
+                    var value = el.style[property],
+                        computed;
+                    
+                    if (!value) {
+                        computed = el[OWNER_DOCUMENT][DEFAULT_VIEW][GET_COMPUTED_STYLE](el, null);
+                        if (computed) { // test computed before touching for safari
+                            value = computed[property];
+                        }
+                    }
+                    
+                    return value;
+                };
+            } else if (documentElement[CURRENT_STYLE]) {
+                return function(el, property) {                         
+                    var value;
+
+                    switch(property) {
+                        case 'opacity' :// IE opacity uses filter
+                            value = 100;
+                            try { // will error if no DXImageTransform
+                                value = el.filters['DXImageTransform.Microsoft.Alpha'].opacity;
+
+                            } catch(e) {
+                                try { // make sure its in the document
+                                    value = el.filters('alpha').opacity;
+                                } catch(err) {
+                                    YAHOO.log('getStyle: IE filter failed',
+                                            'error', 'Dom');
+                                }
+                            }
+                            return value / 100;
+                        case 'float': // fix reserved word
+                            property = 'styleFloat'; // fall through
+                        default: 
+                            property = Y.Dom._toCamel(property);
+                            value = el[CURRENT_STYLE] ? el[CURRENT_STYLE][property] : null;
+                            return ( el.style[property] || value );
+                    }
+                };
+            }
+        }(),
+    
+        /**
+         * Wrapper for setting style properties of HTMLElements.  Normalizes "opacity" across modern browsers.
+        * @method setStyle
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {String} property The style property to be set.
+        * @param {String} val The value to apply to the given property.
+         */
+        setStyle: function(el, property, val) {
+            Y.Dom.batch(el, Y.Dom._setStyle, { prop: property, val: val });
+        },
+
+        _setStyle: function() {
+            if (isIE) {
+                return function(el, args) {
+                    var property = Y.Dom._toCamel(args.prop),
+                        val = args.val;
+
+                    if (el) {
+                        switch (property) {
+                            case 'opacity':
+                                if ( lang.isString(el.style.filter) ) { // in case not appended
+                                    el.style.filter = 'alpha(opacity=' + val * 100 + ')';
+                                    
+                                    if (!el[CURRENT_STYLE] || !el[CURRENT_STYLE].hasLayout) {
+                                        el.style.zoom = 1; // when no layout or cant tell
+                                    }
+                                }
+                                break;
+                            case 'float':
+                                property = 'styleFloat';
+                            default:
+                            el.style[property] = val;
+                        }
+                    } else {
+                        YAHOO.log('element ' + el + ' is undefined', 'error', 'Dom');
+                    }
+                };
+            } else {
+                return function(el, args) {
+                    var property = Y.Dom._toCamel(args.prop),
+                        val = args.val;
+                    if (el) {
+                        if (property == 'float') {
+                            property = 'cssFloat';
+                        }
+                        el.style[property] = val;
+                    } else {
+                        YAHOO.log('element ' + el + ' is undefined', 'error', 'Dom');
+                    }
+                };
+            }
+
+        }(),
+        
+        /**
+         * Gets the current position of an element based on page coordinates. 
+         * Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getXY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM
+         * reference, or an Array of IDs and/or HTMLElements
+        * @return {Array} The XY position of the element(s)
+         */
+        getXY: function(el) {
+            return Y.Dom.batch(el, Y.Dom._getXY);
+        },
+
+        _canPosition: function(el) {
+            return ( Y.Dom._getStyle(el, 'display') !== 'none' && Y.Dom._inDoc(el) );
+        },
+
+        _getXY: function() {
+            if (document[DOCUMENT_ELEMENT][GET_BOUNDING_CLIENT_RECT]) {
+                return function(node) {
+                    var scrollLeft, scrollTop, box, doc,
+                        off1, off2, mode, bLeft, bTop,
+                        floor = Math.floor, // TODO: round?
+                        xy = false;
+
+                    if (Y.Dom._canPosition(node)) {
+                        box = node[GET_BOUNDING_CLIENT_RECT]();
+                        doc = node[OWNER_DOCUMENT];
+                        scrollLeft = Y.Dom.getDocumentScrollLeft(doc);
+                        scrollTop = Y.Dom.getDocumentScrollTop(doc);
+                        xy = [floor(box[LEFT]), floor(box[TOP])];
+
+                        if (isIE && UA.ie < 8) { // IE < 8: viewport off by 2
+                            off1 = 2;
+                            off2 = 2;
+                            mode = doc[COMPAT_MODE];
+
+                            if (UA.ie === 6) {
+                                if (mode !== _BACK_COMPAT) {
+                                    off1 = 0;
+                                    off2 = 0;
+                                }
+                            }
+                            
+                            if ((mode === _BACK_COMPAT)) {
+                                bLeft = _getComputedStyle(doc[DOCUMENT_ELEMENT], BORDER_LEFT_WIDTH);
+                                bTop = _getComputedStyle(doc[DOCUMENT_ELEMENT], BORDER_TOP_WIDTH);
+                                if (bLeft !== MEDIUM) {
+                                    off1 = parseInt(bLeft, 10);
+                                }
+                                if (bTop !== MEDIUM) {
+                                    off2 = parseInt(bTop, 10);
+                                }
+                            }
+                            
+                            xy[0] -= off1;
+                            xy[1] -= off2;
+
+                        }
+
+                        if ((scrollTop || scrollLeft)) {
+                            xy[0] += scrollLeft;
+                            xy[1] += scrollTop;
+                        }
+
+                        // gecko may return sub-pixel (non-int) values
+                        xy[0] = floor(xy[0]);
+                        xy[1] = floor(xy[1]);
+                    } else {
+                        YAHOO.log('getXY failed: element not positionable (either not in a document or not displayed)', 'error', 'Dom');
+                    }
+
+                    return xy;
+                };
+            } else {
+                return function(node) { // ff2, safari: manually calculate by crawling up offsetParents
+                    var docScrollLeft, docScrollTop,
+                        scrollTop, scrollLeft,
+                        bCheck,
+                        xy = false,
+                        parentNode = node;
+
+                    if  (Y.Dom._canPosition(node) ) {
+                        xy = [node[OFFSET_LEFT], node[OFFSET_TOP]];
+                        docScrollLeft = Y.Dom.getDocumentScrollLeft(node[OWNER_DOCUMENT]);
+                        docScrollTop = Y.Dom.getDocumentScrollTop(node[OWNER_DOCUMENT]);
+
+                        // TODO: refactor with !! or just falsey
+                        bCheck = ((isGecko || UA.webkit > 519) ? true : false);
+
+                        // TODO: worth refactoring for TOP/LEFT only?
+                        while ((parentNode = parentNode[OFFSET_PARENT])) {
+                            xy[0] += parentNode[OFFSET_LEFT];
+                            xy[1] += parentNode[OFFSET_TOP];
+                            if (bCheck) {
+                                xy = Y.Dom._calcBorders(parentNode, xy);
+                            }
+                        }
+
+                        // account for any scrolled ancestors
+                        if (Y.Dom._getStyle(node, POSITION) !== FIXED) {
+                            parentNode = node;
+
+                            while ((parentNode = parentNode[PARENT_NODE]) && parentNode[TAG_NAME]) {
+                                scrollTop = parentNode[SCROLL_TOP];
+                                scrollLeft = parentNode[SCROLL_LEFT];
+
+                                //Firefox does something funky with borders when overflow is not visible.
+                                if (isGecko && (Y.Dom._getStyle(parentNode, 'overflow') !== 'visible')) {
+                                        xy = Y.Dom._calcBorders(parentNode, xy);
+                                }
+
+                                if (scrollTop || scrollLeft) {
+                                    xy[0] -= scrollLeft;
+                                    xy[1] -= scrollTop;
+                                }
+                            }
+                            xy[0] += docScrollLeft;
+                            xy[1] += docScrollTop;
+
+                        } else {
+                            //Fix FIXED position -- add scrollbars
+                            if (isOpera) {
+                                xy[0] -= docScrollLeft;
+                                xy[1] -= docScrollTop;
+                            } else if (isSafari || isGecko) {
+                                xy[0] += docScrollLeft;
+                                xy[1] += docScrollTop;
+                            }
+                        }
+                        //Round the numbers so we get sane data back
+                        xy[0] = Math.floor(xy[0]);
+                        xy[1] = Math.floor(xy[1]);
+                    } else {
+                        YAHOO.log('getXY failed: element not positionable (either not in a document or not displayed)', 'error', 'Dom');
+                    }
+                    return xy;                
+                };
+            }
+        }(), // NOTE: Executing for loadtime branching
+        
+        /**
+         * Gets the current X position of an element based on page coordinates.  The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getX
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @return {Number | Array} The X position of the element(s)
+         */
+        getX: function(el) {
+            var f = function(el) {
+                return Y.Dom.getXY(el)[0];
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Gets the current Y position of an element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method getY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @return {Number | Array} The Y position of the element(s)
+         */
+        getY: function(el) {
+            var f = function(el) {
+                return Y.Dom.getXY(el)[1];
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Set the position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element(s) must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setXY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements
+        * @param {Array} pos Contains X & Y values for new position (coordinates are page-based)
+        * @param {Boolean} noRetry By default we try and set the position a second time if the first fails
+         */
+        setXY: function(el, pos, noRetry) {
+            Y.Dom.batch(el, Y.Dom._setXY, { pos: pos, noRetry: noRetry });
+        },
+
+        _setXY: function(node, args) {
+            var pos = Y.Dom._getStyle(node, POSITION),
+                setStyle = Y.Dom.setStyle,
+                xy = args.pos,
+                noRetry = args.noRetry,
+
+                delta = [ // assuming pixels; if not we will have to retry
+                    parseInt( Y.Dom.getComputedStyle(node, LEFT), 10 ),
+                    parseInt( Y.Dom.getComputedStyle(node, TOP), 10 )
+                ],
+
+                currentXY,
+                newXY;
+        
+            if (pos == 'static') { // default to relative
+                pos = RELATIVE;
+                setStyle(node, POSITION, pos);
+            }
+
+            currentXY = Y.Dom._getXY(node);
+
+            if (!xy || currentXY === false) { // has to be part of doc to have xy
+                YAHOO.log('xy failed: node not available', 'error', 'Node');
+                return false; 
+            }
+            
+            if ( isNaN(delta[0]) ) {// in case of 'auto'
+                delta[0] = (pos == RELATIVE) ? 0 : node[OFFSET_LEFT];
+            } 
+            if ( isNaN(delta[1]) ) { // in case of 'auto'
+                delta[1] = (pos == RELATIVE) ? 0 : node[OFFSET_TOP];
+            } 
+
+            if (xy[0] !== null) { // from setX
+                setStyle(node, LEFT, xy[0] - currentXY[0] + delta[0] + 'px');
+            }
+
+            if (xy[1] !== null) { // from setY
+                setStyle(node, TOP, xy[1] - currentXY[1] + delta[1] + 'px');
+            }
+          
+            if (!noRetry) {
+                newXY = Y.Dom._getXY(node);
+
+                // if retry is true, try one more time if we miss 
+               if ( (xy[0] !== null && newXY[0] != xy[0]) || 
+                    (xy[1] !== null && newXY[1] != xy[1]) ) {
+                   Y.Dom._setXY(node, { pos: xy, noRetry: true });
+               }
+            }        
+
+            YAHOO.log('setXY setting position to ' + xy, 'info', 'Node');
+        },
+        
+        /**
+         * Set the X position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setX
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {Int} x The value to use as the X coordinate for the element(s).
+         */
+        setX: function(el, x) {
+            Y.Dom.setXY(el, [x, null]);
+        },
+        
+        /**
+         * Set the Y position of an html element in page coordinates, regardless of how the element is positioned.
+         * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+        * @method setY
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @param {Int} x To use as the Y coordinate for the element(s).
+         */
+        setY: function(el, y) {
+            Y.Dom.setXY(el, [null, y]);
+        },
+        
+        /**
+         * Returns the region position of the given element.
+         * The element must be part of the DOM tree to have a region (display:none or elements not appended return false).
+        * @method getRegion
+        * @param {String | HTMLElement | Array} el Accepts a string to use as an ID, an actual DOM reference, or an Array of IDs and/or HTMLElements.
+        * @return {Region | Array} A Region or array of Region instances containing "top, left, bottom, right" member data.
+         */
+        getRegion: function(el) {
+            var f = function(el) {
+                var region = false;
+                if ( Y.Dom._canPosition(el) ) {
+                    region = Y.Region.getRegion(el);
+                    YAHOO.log('getRegion returning ' + region, 'info', 'Dom');
+                } else {
+                    YAHOO.log('getRegion failed: element not positionable (either not in a document or not displayed)', 'error', 'Dom');
+                }
+
+                return region;
+            };
+            
+            return Y.Dom.batch(el, f, Y.Dom, true);
+        },
+        
+        /**
+         * Returns the width of the client (viewport).
+        * @method getClientWidth
+        * @deprecated Now using getViewportWidth.  This interface left intact for back compat.
+        * @return {Int} The width of the viewable area of the page.
+         */
+        getClientWidth: function() {
+            return Y.Dom.getViewportWidth();
+        },
+        
+        /**
+         * Returns the height of the client (viewport).
+        * @method getClientHeight
+        * @deprecated Now using getViewportHeight.  This interface left intact for back compat.
+        * @return {Int} The height of the viewable area of the page.
+         */
+        getClientHeight: function() {
+            return Y.Dom.getViewportHeight();
+        },
+
+        /**
+         * Returns an array of HTMLElements with the given class.
+         * For optimized performance, include a tag and/or root node when possible.
+         * Note: This method operates against a live collection, so modifying the 
+         * collection in the callback (removing/appending nodes, etc.) will have
+         * side effects.  Instead you should iterate the returned nodes array,
+         * as you would with the native "getElementsByTagName" method. 
+        * @method getElementsByClassName
+        * @param {String} className The class name to match against
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point.
+         * This element is not included in the className scan.
+        * @param {Function} apply (optional) A function to apply to each element when found 
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Array} An array of elements that have the given class name
+         */
+        getElementsByClassName: function(className, tag, root, apply, o, overrides) {
+            tag = tag || '*';
+            root = (root) ? Y.Dom.get(root) : null || document; 
+            if (!root) {
+                return [];
+            }
+
+            var nodes = [],
+                elements = root.getElementsByTagName(tag),
+                hasClass = Y.Dom.hasClass;
+
+            for (var i = 0, len = elements.length; i < len; ++i) {
+                if ( hasClass(elements[i], className) ) {
+                    nodes[nodes.length] = elements[i];
+                }
+            }
+            
+            if (apply) {
+                Y.Dom.batch(nodes, apply, o, overrides);
+            }
+
+            return nodes;
+        },
+
+        /**
+         * Determines whether an HTMLElement has the given className.
+        * @method hasClass
+        * @param {String | HTMLElement | Array} el The element or collection to test
+        * @param {String} className the class name to search for
+        * @return {Boolean | Array} A boolean value or array of boolean values
+         */
+        hasClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._hasClass, className);
+        },
+
+        _hasClass: function(el, className) {
+            var ret = false,
+                current;
+            
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                if (className.exec) {
+                    ret = className.test(current);
+                } else {
+                    ret = className && (SPACE + current + SPACE).
+                        indexOf(SPACE + className + SPACE) > -1;
+                }
+            } else {
+                YAHOO.log('hasClass called with invalid arguments', 'warn', 'Dom');
+            }
+
+            return ret;
+        },
+    
+        /**
+         * Adds a class name to a given element or collection of elements.
+        * @method addClass         
+        * @param {String | HTMLElement | Array} el The element or collection to add the class to
+        * @param {String} className the class name to add to the class attribute
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        addClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._addClass, className);
+        },
+
+        _addClass: function(el, className) {
+            var ret = false,
+                current;
+
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                if ( !Y.Dom._hasClass(el, className) ) {
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(current + SPACE + className));
+                    ret = true;
+                }
+            } else {
+                YAHOO.log('addClass called with invalid arguments', 'warn', 'Dom');
+            }
+
+            return ret;
+        },
+    
+        /**
+         * Removes a class name from a given element or collection of elements.
+        * @method removeClass         
+        * @param {String | HTMLElement | Array} el The element or collection to remove the class from
+        * @param {String} className the class name to remove from the class attribute
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        removeClass: function(el, className) {
+            return Y.Dom.batch(el, Y.Dom._removeClass, className);
+        },
+        
+        _removeClass: function(el, className) {
+            var ret = false,
+                current,
+                newClass,
+                attr;
+
+            if (el && className) {
+                current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                Y.Dom.setAttribute(el, CLASS_NAME, current.replace(Y.Dom._getClassRegex(className), EMPTY));
+
+                newClass = Y.Dom._getAttribute(el, CLASS_NAME);
+                if (current !== newClass) { // else nothing changed
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(newClass)); // trim after comparing to current class
+                    ret = true;
+
+                    if (Y.Dom._getAttribute(el, CLASS_NAME) === '') { // remove class attribute if empty
+                        attr = (el.hasAttribute && el.hasAttribute(_CLASS)) ? _CLASS : CLASS_NAME;
+                        YAHOO.log('removeClass removing empty class attribute', 'info', 'Dom');
+                        el.removeAttribute(attr);
+                    }
+                }
+
+            } else {
+                YAHOO.log('removeClass called with invalid arguments', 'warn', 'Dom');
+            }
+
+            return ret;
+        },
+        
+        /**
+         * Replace a class with another class for a given element or collection of elements.
+         * If no oldClassName is present, the newClassName is simply added.
+        * @method replaceClass  
+        * @param {String | HTMLElement | Array} el The element or collection to remove the class from
+        * @param {String} oldClassName the class name to be replaced
+        * @param {String} newClassName the class name that will be replacing the old class name
+        * @return {Boolean | Array} A pass/fail boolean or array of booleans
+         */
+        replaceClass: function(el, oldClassName, newClassName) {
+            return Y.Dom.batch(el, Y.Dom._replaceClass, { from: oldClassName, to: newClassName });
+        },
+
+        _replaceClass: function(el, classObj) {
+            var className,
+                from,
+                to,
+                ret = false,
+                current;
+
+            if (el && classObj) {
+                from = classObj.from;
+                to = classObj.to;
+
+                if (!to) {
+                    ret = false;
+                }  else if (!from) { // just add if no "from"
+                    ret = Y.Dom._addClass(el, classObj.to);
+                } else if (from !== to) { // else nothing to replace
+                    // May need to lead with DBLSPACE?
+                    current = Y.Dom._getAttribute(el, CLASS_NAME) || EMPTY;
+                    className = (SPACE + current.replace(Y.Dom._getClassRegex(from), SPACE + to)).
+                               split(Y.Dom._getClassRegex(to));
+
+                    // insert to into what would have been the first occurrence slot
+                    className.splice(1, 0, SPACE + to);
+                    Y.Dom.setAttribute(el, CLASS_NAME, trim(className.join(EMPTY)));
+                    ret = true;
+                }
+            } else {
+                YAHOO.log('replaceClass called with invalid arguments', 'warn', 'Dom');
+            }
+
+            return ret;
+        },
+        
+        /**
+         * Returns an ID and applies it to the element "el", if provided.
+        * @method generateId  
+        * @param {String | HTMLElement | Array} el (optional) An optional element array of elements to add an ID to (no ID is added if one is already present).
+        * @param {String} prefix (optional) an optional prefix to use (defaults to "yui-gen").
+        * @return {String | Array} The generated ID, or array of generated IDs (or original ID if already present on an element)
+         */
+        generateId: function(el, prefix) {
+            prefix = prefix || 'yui-gen';
+
+            var f = function(el) {
+                if (el && el.id) { // do not override existing ID
+                    YAHOO.log('generateId returning existing id ' + el.id, 'info', 'Dom');
+                    return el.id;
+                }
+
+                var id = prefix + YAHOO.env._id_counter++;
+                YAHOO.log('generateId generating ' + id, 'info', 'Dom');
+
+                if (el) {
+                    if (el[OWNER_DOCUMENT] && el[OWNER_DOCUMENT].getElementById(id)) { // in case one already exists
+                        // use failed id plus prefix to help ensure uniqueness
+                        return Y.Dom.generateId(el, id + prefix);
+                    }
+                    el.id = id;
+                }
+                
+                return id;
+            };
+
+            // batch fails when no element, so just generate and return single ID
+            return Y.Dom.batch(el, f, Y.Dom, true) || f.apply(Y.Dom, arguments);
+        },
+        
+        /**
+         * Determines whether an HTMLElement is an ancestor of another HTML element in the DOM hierarchy.
+        * @method isAncestor
+        * @param {String | HTMLElement} haystack The possible ancestor
+        * @param {String | HTMLElement} needle The possible descendent
+        * @return {Boolean} Whether or not the haystack is an ancestor of needle
+         */
+        isAncestor: function(haystack, needle) {
+            haystack = Y.Dom.get(haystack);
+            needle = Y.Dom.get(needle);
+            
+            var ret = false;
+
+            if ( (haystack && needle) && (haystack[NODE_TYPE] && needle[NODE_TYPE]) ) {
+                if (haystack.contains && haystack !== needle) { // contains returns true when equal
+                    ret = haystack.contains(needle);
+                }
+                else if (haystack.compareDocumentPosition) { // gecko
+                    ret = !!(haystack.compareDocumentPosition(needle) & 16);
+                }
+            } else {
+                YAHOO.log('isAncestor failed; invalid input: ' + haystack + ',' + needle, 'error', 'Dom');
+            }
+            YAHOO.log('isAncestor(' + haystack + ',' + needle + ' returning ' + ret, 'info', 'Dom');
+            return ret;
+        },
+        
+        /**
+         * Determines whether an HTMLElement is present in the current document.
+        * @method inDocument         
+        * @param {String | HTMLElement} el The element to search for
+        * @param {Object} doc An optional document to search, defaults to element's owner document 
+        * @return {Boolean} Whether or not the element is present in the current document
+         */
+        inDocument: function(el, doc) {
+            return Y.Dom._inDoc(Y.Dom.get(el), doc);
+        },
+
+        _inDoc: function(el, doc) {
+            var ret = false;
+            if (el && el[TAG_NAME]) {
+                doc = doc || el[OWNER_DOCUMENT]; 
+                ret = Y.Dom.isAncestor(doc[DOCUMENT_ELEMENT], el);
+            } else {
+                YAHOO.log('inDocument failed: invalid input', 'error', 'Dom');
+            }
+            return ret;
+        },
+        
+        /**
+         * Returns an array of HTMLElements that pass the test applied by supplied boolean method.
+         * For optimized performance, include a tag and/or root node when possible.
+         * Note: This method operates against a live collection, so modifying the 
+         * collection in the callback (removing/appending nodes, etc.) will have
+         * side effects.  Instead you should iterate the returned nodes array,
+         * as you would with the native "getElementsByTagName" method. 
+        * @method getElementsBy
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point 
+        * @param {Function} apply (optional) A function to apply to each element when found 
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Array} Array of HTMLElements
+         */
+        getElementsBy: function(method, tag, root, apply, o, overrides, firstOnly) {
+            tag = tag || '*';
+            root = (root) ? Y.Dom.get(root) : null || document; 
+
+            if (!root) {
+                return [];
+            }
+
+            var nodes = [],
+                elements = root.getElementsByTagName(tag);
+            
+            for (var i = 0, len = elements.length; i < len; ++i) {
+                if ( method(elements[i]) ) {
+                    if (firstOnly) {
+                        nodes = elements[i]; 
+                        break;
+                    } else {
+                        nodes[nodes.length] = elements[i];
+                    }
+                }
+            }
+
+            if (apply) {
+                Y.Dom.batch(nodes, apply, o, overrides);
+            }
+
+            YAHOO.log('getElementsBy returning ' + nodes, 'info', 'Dom');
+            
+            return nodes;
+        },
+        
+        /**
+         * Returns the first HTMLElement that passes the test applied by the supplied boolean method.
+        * @method getElementBy
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @param {String} tag (optional) The tag name of the elements being collected
+        * @param {String | HTMLElement} root (optional) The HTMLElement or an ID to use as the starting point 
+        * @return {HTMLElement}
+         */
+        getElementBy: function(method, tag, root) {
+            return Y.Dom.getElementsBy(method, tag, root, null, null, null, true); 
+        },
+
+        /**
+         * Runs the supplied method against each item in the Collection/Array.
+         * The method is called with the element(s) as the first arg, and the optional param as the second ( method(el, o) ).
+        * @method batch
+        * @param {String | HTMLElement | Array} el (optional) An element or array of elements to apply the method to
+        * @param {Function} method The method to apply to the element(s)
+        * @param {Any} o (optional) An optional arg that is passed to the supplied method
+        * @param {Boolean} overrides (optional) Whether or not to override the scope of "method" with "o"
+        * @return {Any | Array} The return value(s) from the supplied method
+         */
+        batch: function(el, method, o, overrides) {
+            var collection = [],
+                scope = (overrides) ? o : window;
+                
+            el = (el && (el[TAG_NAME] || el.item)) ? el : Y.Dom.get(el); // skip get() when possible
+            if (el && method) {
+                if (el[TAG_NAME] || el.length === undefined) { // element or not array-like 
+                    return method.call(scope, el, o);
+                } 
+
+                for (var i = 0; i < el.length; ++i) {
+                    collection[collection.length] = method.call(scope, el[i], o);
+                }
+            } else {
+                YAHOO.log('batch called with invalid arguments', 'warn', 'Dom');
+                return false;
+            } 
+            return collection;
+        },
+        
+        /**
+         * Returns the height of the document.
+        * @method getDocumentHeight
+        * @return {Int} The height of the actual document (which includes the body and its margin).
+         */
+        getDocumentHeight: function() {
+            var scrollHeight = (document[COMPAT_MODE] != CSS1_COMPAT || isSafari) ? document.body.scrollHeight : documentElement.scrollHeight,
+                h = Math.max(scrollHeight, Y.Dom.getViewportHeight());
+
+            YAHOO.log('getDocumentHeight returning ' + h, 'info', 'Dom');
+            return h;
+        },
+        
+        /**
+         * Returns the width of the document.
+        * @method getDocumentWidth
+        * @return {Int} The width of the actual document (which includes the body and its margin).
+         */
+        getDocumentWidth: function() {
+            var scrollWidth = (document[COMPAT_MODE] != CSS1_COMPAT || isSafari) ? document.body.scrollWidth : documentElement.scrollWidth,
+                w = Math.max(scrollWidth, Y.Dom.getViewportWidth());
+            YAHOO.log('getDocumentWidth returning ' + w, 'info', 'Dom');
+            return w;
+        },
+
+        /**
+         * Returns the current height of the viewport.
+        * @method getViewportHeight
+        * @return {Int} The height of the viewable area of the page (excludes scrollbars).
+         */
+        getViewportHeight: function() {
+            var height = self.innerHeight, // Safari, Opera
+                mode = document[COMPAT_MODE];
+        
+            if ( (mode || isIE) && !isOpera ) { // IE, Gecko
+                height = (mode == CSS1_COMPAT) ?
+                        documentElement.clientHeight : // Standards
+                        document.body.clientHeight; // Quirks
+            }
+        
+            YAHOO.log('getViewportHeight returning ' + height, 'info', 'Dom');
+            return height;
+        },
+        
+        /**
+         * Returns the current width of the viewport.
+        * @method getViewportWidth
+        * @return {Int} The width of the viewable area of the page (excludes scrollbars).
+         */
+        
+        getViewportWidth: function() {
+            var width = self.innerWidth,  // Safari
+                mode = document[COMPAT_MODE];
+            
+            if (mode || isIE) { // IE, Gecko, Opera
+                width = (mode == CSS1_COMPAT) ?
+                        documentElement.clientWidth : // Standards
+                        document.body.clientWidth; // Quirks
+            }
+            YAHOO.log('getViewportWidth returning ' + width, 'info', 'Dom');
+            return width;
+        },
+
+       /**
+         * Returns the nearest ancestor that passes the test applied by supplied boolean method.
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+        * @method getAncestorBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method - A boolean method for testing elements which receives the element as its only argument.
+        * @return {Object} HTMLElement or null if not found
+         */
+        getAncestorBy: function(node, method) {
+            while ( (node = node[PARENT_NODE]) ) { // NOTE: assignment
+                if ( Y.Dom._testElement(node, method) ) {
+                    YAHOO.log('getAncestorBy returning ' + node, 'info', 'Dom');
+                    return node;
+                }
+            } 
+
+            YAHOO.log('getAncestorBy returning null (no ancestor passed test)', 'error', 'Dom');
+            return null;
+        },
+        
+        /**
+         * Returns the nearest ancestor with the given className.
+        * @method getAncestorByClassName
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @param {String} className
+        * @return {Object} HTMLElement
+         */
+        getAncestorByClassName: function(node, className) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getAncestorByClassName failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+            var method = function(el) { return Y.Dom.hasClass(el, className); };
+            return Y.Dom.getAncestorBy(node, method);
+        },
+
+        /**
+         * Returns the nearest ancestor with the given tagName.
+        * @method getAncestorByTagName
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @param {String} tagName
+        * @return {Object} HTMLElement
+         */
+        getAncestorByTagName: function(node, tagName) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getAncestorByTagName failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+            var method = function(el) {
+                 return el[TAG_NAME] && el[TAG_NAME].toUpperCase() == tagName.toUpperCase();
+            };
+
+            return Y.Dom.getAncestorBy(node, method);
+        },
+
+        /**
+         * Returns the previous sibling that is an HTMLElement. 
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+         * Returns the nearest HTMLElement sibling if no method provided.
+        * @method getPreviousSiblingBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test siblings
+         * that receives the sibling node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getPreviousSiblingBy: function(node, method) {
+            while (node) {
+                node = node.previousSibling;
+                if ( Y.Dom._testElement(node, method) ) {
+                    return node;
+                }
+            }
+            return null;
+        }, 
+
+        /**
+         * Returns the previous sibling that is an HTMLElement 
+        * @method getPreviousSibling
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getPreviousSibling: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getPreviousSibling failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+
+            return Y.Dom.getPreviousSiblingBy(node);
+        }, 
+
+        /**
+         * Returns the next HTMLElement sibling that passes the boolean method. 
+         * For performance reasons, IDs are not accepted and argument validation omitted.
+         * Returns the nearest HTMLElement sibling if no method provided.
+        * @method getNextSiblingBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test siblings
+         * that receives the sibling node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getNextSiblingBy: function(node, method) {
+            while (node) {
+                node = node.nextSibling;
+                if ( Y.Dom._testElement(node, method) ) {
+                    return node;
+                }
+            }
+            return null;
+        }, 
+
+        /**
+         * Returns the next sibling that is an HTMLElement 
+        * @method getNextSibling
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getNextSibling: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getNextSibling failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+
+            return Y.Dom.getNextSiblingBy(node);
+        }, 
+
+        /**
+         * Returns the first HTMLElement child that passes the test method. 
+        * @method getFirstChildBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getFirstChildBy: function(node, method) {
+            var child = ( Y.Dom._testElement(node.firstChild, method) ) ? node.firstChild : null;
+            return child || Y.Dom.getNextSiblingBy(node.firstChild, method);
+        }, 
+
+        /**
+         * Returns the first HTMLElement child. 
+        * @method getFirstChild
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getFirstChild: function(node, method) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getFirstChild failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+            return Y.Dom.getFirstChildBy(node);
+        }, 
+
+        /**
+         * Returns the last HTMLElement child that passes the test method. 
+        * @method getLastChildBy
+        * @param {HTMLElement} node The HTMLElement to use as the starting point 
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Object} HTMLElement or null if not found
+         */
+        getLastChildBy: function(node, method) {
+            if (!node) {
+                YAHOO.log('getLastChild failed: invalid node argument', 'error', 'Dom');
+                return null;
+            }
+            var child = ( Y.Dom._testElement(node.lastChild, method) ) ? node.lastChild : null;
+            return child || Y.Dom.getPreviousSiblingBy(node.lastChild, method);
+        }, 
+
+        /**
+         * Returns the last HTMLElement child. 
+        * @method getLastChild
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Object} HTMLElement or null if not found
+         */
+        getLastChild: function(node) {
+            node = Y.Dom.get(node);
+            return Y.Dom.getLastChildBy(node);
+        }, 
+
+        /**
+         * Returns an array of HTMLElement childNodes that pass the test method. 
+        * @method getChildrenBy
+        * @param {HTMLElement} node The HTMLElement to start from
+        * @param {Function} method A boolean function used to test children
+         * that receives the node being tested as its only argument
+        * @return {Array} A static array of HTMLElements
+         */
+        getChildrenBy: function(node, method) {
+            var child = Y.Dom.getFirstChildBy(node, method),
+                children = child ? [child] : [];
+
+            Y.Dom.getNextSiblingBy(child, function(node) {
+                if ( !method || method(node) ) {
+                    children[children.length] = node;
+                }
+                return false; // fail test to collect all children
+            });
+
+            return children;
+        },
+ 
+        /**
+         * Returns an array of HTMLElement childNodes. 
+        * @method getChildren
+        * @param {String | HTMLElement} node The HTMLElement or an ID to use as the starting point 
+        * @return {Array} A static array of HTMLElements
+         */
+        getChildren: function(node) {
+            node = Y.Dom.get(node);
+            if (!node) {
+                YAHOO.log('getChildren failed: invalid node argument', 'error', 'Dom');
+            }
+
+            return Y.Dom.getChildrenBy(node);
+        },
+
+        /**
+         * Returns the left scroll value of the document 
+        * @method getDocumentScrollLeft
+        * @param {HTMLDocument} document (optional) The document to get the scroll value of
+        * @return {Int}  The amount that the document is scrolled to the left
+         */
+        getDocumentScrollLeft: function(doc) {
+            doc = doc || document;
+            return Math.max(doc[DOCUMENT_ELEMENT].scrollLeft, doc.body.scrollLeft);
+        }, 
+
+        /**
+         * Returns the top scroll value of the document 
+        * @method getDocumentScrollTop
+        * @param {HTMLDocument} document (optional) The document to get the scroll value of
+        * @return {Int}  The amount that the document is scrolled to the top
+         */
+        getDocumentScrollTop: function(doc) {
+            doc = doc || document;
+            return Math.max(doc[DOCUMENT_ELEMENT].scrollTop, doc.body.scrollTop);
+        },
+
+        /**
+         * Inserts the new node as the previous sibling of the reference node 
+        * @method insertBefore
+        * @param {String | HTMLElement} newNode The node to be inserted
+        * @param {String | HTMLElement} referenceNode The node to insert the new node before 
+        * @return {HTMLElement} The node that was inserted (or null if insert fails) 
+         */
+        insertBefore: function(newNode, referenceNode) {
+            newNode = Y.Dom.get(newNode); 
+            referenceNode = Y.Dom.get(referenceNode); 
+            
+            if (!newNode || !referenceNode || !referenceNode[PARENT_NODE]) {
+                YAHOO.log('insertAfter failed: missing or invalid arg(s)', 'error', 'Dom');
+                return null;
+            }       
+
+            return referenceNode[PARENT_NODE].insertBefore(newNode, referenceNode); 
+        },
+
+        /**
+         * Inserts the new node as the next sibling of the reference node 
+        * @method insertAfter
+        * @param {String | HTMLElement} newNode The node to be inserted
+        * @param {String | HTMLElement} referenceNode The node to insert the new node after 
+        * @return {HTMLElement} The node that was inserted (or null if insert fails) 
+         */
+        insertAfter: function(newNode, referenceNode) {
+            newNode = Y.Dom.get(newNode); 
+            referenceNode = Y.Dom.get(referenceNode); 
+            
+            if (!newNode || !referenceNode || !referenceNode[PARENT_NODE]) {
+                YAHOO.log('insertAfter failed: missing or invalid arg(s)', 'error', 'Dom');
+                return null;
+            }       
+
+            if (referenceNode.nextSibling) {
+                return referenceNode[PARENT_NODE].insertBefore(newNode, referenceNode.nextSibling); 
+            } else {
+                return referenceNode[PARENT_NODE].appendChild(newNode);
+            }
+        },
+
+        /**
+         * Creates a Region based on the viewport relative to the document. 
+        * @method getClientRegion
+        * @return {Region} A Region object representing the viewport which accounts for document scroll
+         */
+        getClientRegion: function() {
+            var t = Y.Dom.getDocumentScrollTop(),
+                l = Y.Dom.getDocumentScrollLeft(),
+                r = Y.Dom.getViewportWidth() + l,
+                b = Y.Dom.getViewportHeight() + t;
+
+            return new Y.Region(t, r, b, l);
+        },
+
+        /**
+         * Provides a normalized attribute interface. 
+        * @method setAttribute
+        * @param {String | HTMLElement} el The target element for the attribute.
+        * @param {String} attr The attribute to set.
+        * @param {String} val The value of the attribute.
+         */
+        setAttribute: function(el, attr, val) {
+            Y.Dom.batch(el, Y.Dom._setAttribute, { attr: attr, val: val });
+        },
+
+        _setAttribute: function(el, args) {
+            var attr = Y.Dom._toCamel(args.attr),
+                val = args.val;
+
+            if (el && el.setAttribute) {
+                if (Y.Dom.DOT_ATTRIBUTES[attr]) {
+                    el[attr] = val;
+                } else {
+                    attr = Y.Dom.CUSTOM_ATTRIBUTES[attr] || attr;
+                    el.setAttribute(attr, val);
+                }
+            } else {
+                YAHOO.log('setAttribute method not available for ' + el, 'error', 'Dom');
+            }
+        },
+
+        /**
+         * Provides a normalized attribute interface. 
+        * @method getAttribute
+        * @param {String | HTMLElement} el The target element for the attribute.
+        * @param {String} attr The attribute to get.
+        * @return {String} The current value of the attribute. 
+         */
+        getAttribute: function(el, attr) {
+            return Y.Dom.batch(el, Y.Dom._getAttribute, attr);
+        },
+
+
+        _getAttribute: function(el, attr) {
+            var val;
+            attr = Y.Dom.CUSTOM_ATTRIBUTES[attr] || attr;
+
+            if (el && el.getAttribute) {
+                val = el.getAttribute(attr, 2);
+            } else {
+                YAHOO.log('getAttribute method not available for ' + el, 'error', 'Dom');
+            }
+
+            return val;
+        },
+
+        _toCamel: function(property) {
+            var c = propertyCache;
+
+            function tU(x,l) {
+                return l.toUpperCase();
+            }
+
+            return c[property] || (c[property] = property.indexOf('-') === -1 ? 
+                                    property :
+                                    property.replace( /-([a-z])/gi, tU ));
+        },
+
+        _getClassRegex: function(className) {
+            var re;
+            if (className !== undefined) { // allow empty string to pass
+                if (className.exec) { // already a RegExp
+                    re = className;
+                } else {
+                    re = reCache[className];
+                    if (!re) {
+                        // escape special chars (".", "[", etc.)
+                        className = className.replace(Y.Dom._patterns.CLASS_RE_TOKENS, '\\$1');
+                        re = reCache[className] = new RegExp(C_START + className + C_END, G);
+                    }
+                }
+            }
+            return re;
+        },
+
+        _patterns: {
+            ROOT_TAG: /^body|html$/i, // body for quirks mode, html for standards,
+            CLASS_RE_TOKENS: /([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g
+        },
+
+
+        _testElement: function(node, method) {
+            return node && node[NODE_TYPE] == 1 && ( !method || method(node) );
+        },
+
+        _calcBorders: function(node, xy2) {
+            var t = parseInt(Y.Dom[GET_COMPUTED_STYLE](node, BORDER_TOP_WIDTH), 10) || 0,
+                l = parseInt(Y.Dom[GET_COMPUTED_STYLE](node, BORDER_LEFT_WIDTH), 10) || 0;
+            if (isGecko) {
+                if (RE_TABLE.test(node[TAG_NAME])) {
+                    t = 0;
+                    l = 0;
+                }
+            }
+            xy2[0] += l;
+            xy2[1] += t;
+            return xy2;
+        }
+    };
+        
+    var _getComputedStyle = Y.Dom[GET_COMPUTED_STYLE];
+    // fix opera computedStyle default color unit (convert to rgb)
+    if (UA.opera) {
+        Y.Dom[GET_COMPUTED_STYLE] = function(node, att) {
+            var val = _getComputedStyle(node, att);
+            if (RE_COLOR.test(att)) {
+                val = Y.Dom.Color.toRGB(val);
+            }
+
+            return val;
+        };
+
+    }
+
+    // safari converts transparent to rgba(), others use "transparent"
+    if (UA.webkit) {
+        Y.Dom[GET_COMPUTED_STYLE] = function(node, att) {
+            var val = _getComputedStyle(node, att);
+
+            if (val === 'rgba(0, 0, 0, 0)') {
+                val = 'transparent'; 
+            }
+
+            return val;
+        };
+
+    }
+
+    if (UA.ie && UA.ie >= 8 && document.documentElement.hasAttribute) { // IE 8 standards
+        Y.Dom.DOT_ATTRIBUTES.type = true; // IE 8 errors on input.setAttribute('type')
+    }
+})();
+/**
+ * A region is a representation of an object on a grid.  It is defined
+ * by the top, right, bottom, left extents, so is rectangular by default.  If 
+ * other shapes are required, this class could be extended to support it.
+ * @namespace YAHOO.util
+ * @class Region
+ * @param {Int} t the top extent
+ * @param {Int} r the right extent
+ * @param {Int} b the bottom extent
+ * @param {Int} l the left extent
+ * @constructor
+ */
+YAHOO.util.Region = function(t, r, b, l) {
+
+    /**
+     * The region's top extent
+    * @property top
+    * @type Int
+     */
+    this.top = t;
+    
+    /**
+     * The region's top extent
+    * @property y
+    * @type Int
+     */
+    this.y = t;
+    
+    /**
+     * The region's top extent as index, for symmetry with set/getXY
+    * @property 1
+    * @type Int
+     */
+    this[1] = t;
+
+    /**
+     * The region's right extent
+    * @property right
+    * @type int
+     */
+    this.right = r;
+
+    /**
+     * The region's bottom extent
+    * @property bottom
+    * @type Int
+     */
+    this.bottom = b;
+
+    /**
+     * The region's left extent
+    * @property left
+    * @type Int
+     */
+    this.left = l;
+    
+    /**
+     * The region's left extent
+    * @property x
+    * @type Int
+     */
+    this.x = l;
+    
+    /**
+     * The region's left extent as index, for symmetry with set/getXY
+    * @property 0
+    * @type Int
+     */
+    this[0] = l;
+
+    /**
+     * The region's total width 
+    * @property width 
+    * @type Int
+     */
+    this.width = this.right - this.left;
+
+    /**
+     * The region's total height 
+    * @property height 
+    * @type Int
+     */
+    this.height = this.bottom - this.top;
+};
+
+/**
+ * Returns true if this region contains the region passed in
+ * @method contains
+ * @param  {Region}  region The region to evaluate
+ * @return {Boolean}        True if the region is contained with this region, 
+ *                          else false
+ */
+YAHOO.util.Region.prototype.contains = function(region) {
+    return ( region.left   >= this.left   && 
+             region.right  <= this.right  && 
+             region.top    >= this.top    && 
+             region.bottom <= this.bottom    );
+
+    // this.logger.debug("does " + this + " contain " + region + " ... " + ret);
+};
+
+/**
+ * Returns the area of the region
+ * @method getArea
+ * @return {Int} the region's area
+ */
+YAHOO.util.Region.prototype.getArea = function() {
+    return ( (this.bottom - this.top) * (this.right - this.left) );
+};
+
+/**
+ * Returns the region where the passed in region overlaps with this one
+ * @method intersect
+ * @param  {Region} region The region that intersects
+ * @return {Region}        The overlap region, or null if there is no overlap
+ */
+YAHOO.util.Region.prototype.intersect = function(region) {
+    var t = Math.max( this.top,    region.top    ),
+        r = Math.min( this.right,  region.right  ),
+        b = Math.min( this.bottom, region.bottom ),
+        l = Math.max( this.left,   region.left   );
+    
+    if (b >= t && r >= l) {
+        return new YAHOO.util.Region(t, r, b, l);
+    } else {
+        return null;
+    }
+};
+
+/**
+ * Returns the region representing the smallest region that can contain both
+ * the passed in region and this region.
+ * @method union
+ * @param  {Region} region The region that to create the union with
+ * @return {Region}        The union region
+ */
+YAHOO.util.Region.prototype.union = function(region) {
+    var t = Math.min( this.top,    region.top    ),
+        r = Math.max( this.right,  region.right  ),
+        b = Math.max( this.bottom, region.bottom ),
+        l = Math.min( this.left,   region.left   );
+
+    return new YAHOO.util.Region(t, r, b, l);
+};
+
+/**
+ * toString
+ * @method toString
+ * @return string the region properties
+ */
+YAHOO.util.Region.prototype.toString = function() {
+    return ( "Region {"    +
+             "top: "       + this.top    + 
+             ", right: "   + this.right  + 
+             ", bottom: "  + this.bottom + 
+             ", left: "    + this.left   + 
+             ", height: "  + this.height + 
+             ", width: "    + this.width   + 
+             "}" );
+};
+
+/**
+ * Returns a region that is occupied by the DOM element
+ * @method getRegion
+ * @param  {HTMLElement} el The element
+ * @return {Region}         The region that the element occupies
+ * @static
+ */
+YAHOO.util.Region.getRegion = function(el) {
+    var p = YAHOO.util.Dom.getXY(el),
+        t = p[1],
+        r = p[0] + el.offsetWidth,
+        b = p[1] + el.offsetHeight,
+        l = p[0];
+
+    return new YAHOO.util.Region(t, r, b, l);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+/**
+ * A point is a region that is special in that it represents a single point on 
+ * the grid.
+ * @namespace YAHOO.util
+ * @class Point
+ * @param {Int} x The X position of the point
+ * @param {Int} y The Y position of the point
+ * @constructor
+ * @extends YAHOO.util.Region
+ */
+YAHOO.util.Point = function(x, y) {
+   if (YAHOO.lang.isArray(x)) { // accept input from Dom.getXY, Event.getXY, etc.
+      y = x[1]; // dont blow away x yet
+      x = x[0];
+   }
+ 
+    YAHOO.util.Point.superclass.constructor.call(this, y, x, y, x);
+};
+
+YAHOO.extend(YAHOO.util.Point, YAHOO.util.Region);
+
+(function() {
+/**
+ * Add style management functionality to DOM.
+ * @module dom
+ * @for Dom
+ */
+
+var Y = YAHOO.util, 
+    CLIENT_TOP = 'clientTop',
+    CLIENT_LEFT = 'clientLeft',
+    PARENT_NODE = 'parentNode',
+    RIGHT = 'right',
+    HAS_LAYOUT = 'hasLayout',
+    PX = 'px',
+    OPACITY = 'opacity',
+    AUTO = 'auto',
+    BORDER_LEFT_WIDTH = 'borderLeftWidth',
+    BORDER_TOP_WIDTH = 'borderTopWidth',
+    BORDER_RIGHT_WIDTH = 'borderRightWidth',
+    BORDER_BOTTOM_WIDTH = 'borderBottomWidth',
+    VISIBLE = 'visible',
+    TRANSPARENT = 'transparent',
+    HEIGHT = 'height',
+    WIDTH = 'width',
+    STYLE = 'style',
+    CURRENT_STYLE = 'currentStyle',
+
+// IE getComputedStyle
+// TODO: unit-less lineHeight (e.g. 1.22)
+    re_size = /^width|height$/,
+    re_unit = /^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,
+
+    ComputedStyle = {
+        get: function(el, property) {
+            var value = '',
+                current = el[CURRENT_STYLE][property];
+
+            if (property === OPACITY) {
+                value = Y.Dom.getStyle(el, OPACITY);        
+            } else if (!current || (current.indexOf && current.indexOf(PX) > -1)) { // no need to convert
+                value = current;
+            } else if (Y.Dom.IE_COMPUTED[property]) { // use compute function
+                value = Y.Dom.IE_COMPUTED[property](el, property);
+            } else if (re_unit.test(current)) { // convert to pixel
+                value = Y.Dom.IE.ComputedStyle.getPixel(el, property);
+            } else {
+                value = current;
+            }
+
+            return value;
+        },
+
+        getOffset: function(el, prop) {
+            var current = el[CURRENT_STYLE][prop],                        // value of "width", "top", etc.
+                capped = prop.charAt(0).toUpperCase() + prop.substr(1), // "Width", "Top", etc.
+                offset = 'offset' + capped,                             // "offsetWidth", "offsetTop", etc.
+                pixel = 'pixel' + capped,                               // "pixelWidth", "pixelTop", etc.
+                value = '',
+                actual;
+
+            if (current == AUTO) {
+                actual = el[offset]; // offsetHeight/Top etc.
+                if (actual === undefined) { // likely "right" or "bottom"
+                    value = 0;
+                }
+
+                value = actual;
+                if (re_size.test(prop)) { // account for box model diff 
+                    el[STYLE][prop] = actual; 
+                    if (el[offset] > actual) {
+                        // the difference is padding + border (works in Standards & Quirks modes)
+                        value = actual - (el[offset] - actual);
+                    }
+                    el[STYLE][prop] = AUTO; // revert to auto
+                }
+            } else { // convert units to px
+                if (!el[STYLE][pixel] && !el[STYLE][prop]) { // need to map style.width to currentStyle (no currentStyle.pixelWidth)
+                    el[STYLE][prop] = current;              // no style.pixelWidth if no style.width
+                }
+                value = el[STYLE][pixel];
+            }
+            return value + PX;
+        },
+
+        getBorderWidth: function(el, property) {
+            // clientHeight/Width = paddingBox (e.g. offsetWidth - borderWidth)
+            // clientTop/Left = borderWidth
+            var value = null;
+            if (!el[CURRENT_STYLE][HAS_LAYOUT]) { // TODO: unset layout?
+                el[STYLE].zoom = 1; // need layout to measure client
+            }
+
+            switch(property) {
+                case BORDER_TOP_WIDTH:
+                    value = el[CLIENT_TOP];
+                    break;
+                case BORDER_BOTTOM_WIDTH:
+                    value = el.offsetHeight - el.clientHeight - el[CLIENT_TOP];
+                    break;
+                case BORDER_LEFT_WIDTH:
+                    value = el[CLIENT_LEFT];
+                    break;
+                case BORDER_RIGHT_WIDTH:
+                    value = el.offsetWidth - el.clientWidth - el[CLIENT_LEFT];
+                    break;
+            }
+            return value + PX;
+        },
+
+        getPixel: function(node, att) {
+            // use pixelRight to convert to px
+            var val = null,
+                styleRight = node[CURRENT_STYLE][RIGHT],
+                current = node[CURRENT_STYLE][att];
+
+            node[STYLE][RIGHT] = current;
+            val = node[STYLE].pixelRight;
+            node[STYLE][RIGHT] = styleRight; // revert
+
+            return val + PX;
+        },
+
+        getMargin: function(node, att) {
+            var val;
+            if (node[CURRENT_STYLE][att] == AUTO) {
+                val = 0 + PX;
+            } else {
+                val = Y.Dom.IE.ComputedStyle.getPixel(node, att);
+            }
+            return val;
+        },
+
+        getVisibility: function(node, att) {
+            var current;
+            while ( (current = node[CURRENT_STYLE]) && current[att] == 'inherit') { // NOTE: assignment in test
+                node = node[PARENT_NODE];
+            }
+            return (current) ? current[att] : VISIBLE;
+        },
+
+        getColor: function(node, att) {
+            return Y.Dom.Color.toRGB(node[CURRENT_STYLE][att]) || TRANSPARENT;
+        },
+
+        getBorderColor: function(node, att) {
+            var current = node[CURRENT_STYLE],
+                val = current[att] || current.color;
+            return Y.Dom.Color.toRGB(Y.Dom.Color.toHex(val));
+        }
+
+    },
+
+//fontSize: getPixelFont,
+    IEComputed = {};
+
+IEComputed.top = IEComputed.right = IEComputed.bottom = IEComputed.left = 
+        IEComputed[WIDTH] = IEComputed[HEIGHT] = ComputedStyle.getOffset;
+
+IEComputed.color = ComputedStyle.getColor;
+
+IEComputed[BORDER_TOP_WIDTH] = IEComputed[BORDER_RIGHT_WIDTH] =
+        IEComputed[BORDER_BOTTOM_WIDTH] = IEComputed[BORDER_LEFT_WIDTH] =
+        ComputedStyle.getBorderWidth;
+
+IEComputed.marginTop = IEComputed.marginRight = IEComputed.marginBottom =
+        IEComputed.marginLeft = ComputedStyle.getMargin;
+
+IEComputed.visibility = ComputedStyle.getVisibility;
+IEComputed.borderColor = IEComputed.borderTopColor =
+        IEComputed.borderRightColor = IEComputed.borderBottomColor =
+        IEComputed.borderLeftColor = ComputedStyle.getBorderColor;
+
+Y.Dom.IE_COMPUTED = IEComputed;
+Y.Dom.IE_ComputedStyle = ComputedStyle;
+})();
+(function() {
+/**
+ * Add style management functionality to DOM.
+ * @module dom
+ * @for Dom
+ */
+
+var TO_STRING = 'toString',
+    PARSE_INT = parseInt,
+    RE = RegExp,
+    Y = YAHOO.util;
+
+Y.Dom.Color = {
+    KEYWORDS: {
+        black: '000',
+        silver: 'c0c0c0',
+        gray: '808080',
+        white: 'fff',
+        maroon: '800000',
+        red: 'f00',
+        purple: '800080',
+        fuchsia: 'f0f',
+        green: '008000',
+        lime: '0f0',
+        olive: '808000',
+        yellow: 'ff0',
+        navy: '000080',
+        blue: '00f',
+        teal: '008080',
+        aqua: '0ff'
+    },
+
+    re_RGB: /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,
+    re_hex: /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,
+    re_hex3: /([0-9A-F])/gi,
+
+    toRGB: function(val) {
+        if (!Y.Dom.Color.re_RGB.test(val)) {
+            val = Y.Dom.Color.toHex(val);
+        }
+
+        if(Y.Dom.Color.re_hex.exec(val)) {
+            val = 'rgb(' + [
+                PARSE_INT(RE.$1, 16),
+                PARSE_INT(RE.$2, 16),
+                PARSE_INT(RE.$3, 16)
+            ].join(', ') + ')';
+        }
+        return val;
+    },
+
+    toHex: function(val) {
+        val = Y.Dom.Color.KEYWORDS[val] || val;
+        if (Y.Dom.Color.re_RGB.exec(val)) {
+            var r = (RE.$1.length === 1) ? '0' + RE.$1 : Number(RE.$1),
+                g = (RE.$2.length === 1) ? '0' + RE.$2 : Number(RE.$2),
+                b = (RE.$3.length === 1) ? '0' + RE.$3 : Number(RE.$3);
+
+            val = [
+                r[TO_STRING](16),
+                g[TO_STRING](16),
+                b[TO_STRING](16)
+            ].join('');
+        }
+
+        if (val.length < 6) {
+            val = val.replace(Y.Dom.Color.re_hex3, '$1$1');
+        }
+
+        if (val !== 'transparent' && val.indexOf('#') < 0) {
+            val = '#' + val;
+        }
+
+        return val.toLowerCase();
+    }
+};
+}());
+YAHOO.register("dom", YAHOO.util.Dom, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/dom/dom-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dom/dom-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/dom/dom-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dom/dom-min.js	(revision 1610)
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},DOT_ATTRIBUTES:{},get:function(z){var AB,x,AA,y,Y,G;if(z){if(z[l]||z.item){return z;}if(typeof z==="string"){AB=z;z=K.getElementById(z);G=(z)?z.attributes:null;if(z&&G&&G.id&&G.id.value===AB){return z;}else{if(z&&K.all){z=null;x=K.all[AB];for(y=0,Y=x.length;y<Y;++y){if(x[y].id===AB){return x[y];}}}}return z;}if(YAHOO.util.Element&&z instanceof YAHOO.util.Element){z=z.get("element");}if("length" in z){AA=[];for(y=0,Y=z.length;y<Y;++y){AA[AA.length]=E.Dom.get(z[y]);}return AA;}return z;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC===c)){G=S(AF[v],q);x=S(AF[v],R);if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom._getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom._getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom._getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;
+y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom._getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e]&&y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){E.Dom.batch(Y,E.Dom._setAttribute,{attr:G,val:x});},_setAttribute:function(x,Y){var G=E.Dom._toCamel(Y.attr),y=Y.val;if(x&&x.setAttribute){if(E.Dom.DOT_ATTRIBUTES[G]){x[G]=y;}else{G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;x.setAttribute(G,y);}}else{}},getAttribute:function(Y,G){return E.Dom.batch(Y,E.Dom._getAttribute,G);},_getAttribute:function(Y,G){var x;G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;if(Y&&Y.getAttribute){x=Y.getAttribute(G,2);}else{}return x;},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}if(m.ie&&m.ie>=8&&K.documentElement.hasAttribute){E.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;
+this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.8.0r4",build:"2449"});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/dom/dom-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dom/README
===================================================================
--- tags/2.8.3/wb/include/yui/dom/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dom/README	(revision 1610)
@@ -0,0 +1,125 @@
+Dom Release Notes
+
+** Known Issues **
+* margin/padding/borders on HTML element cause getXY to misreport
+* margin/borders on BODY element may cause getXY to misreport
+* Fixed postioning causes getXY to misreport in some cases
+
+----------------------------
+
+*** version 2.4.1 ***
+
+No change
+
+*** version 2.4.0 ***
+* no longer accounting for safari body margin when offsetParent == body
+* isAncestor and inDocument no longer use batch
+* added getClientRegion()
+
+*** version 2.3.1 ***
+* allow batch() to work on array-like object
+* return null from Dom.get(undefined)
+
+*** version 2.3.0 ***
+* added getAncestorBy methods
+* added getChildren methods
+* added getSibling methods
+* trimming added for class mgmt methods
+* fixed getXY inside table for Opera 
+
+*** version 2.3.0 ***
+* added getAncestorBy methods
+* added getChildren methods
+* added getSibling methods
+* trimming added for class mgmt methods
+* fixed getXY inside table for Opera 
+
+*** version 2.2.2 ***
+
+* fixed getXY scroll regression
+
+*** version 2.2.1 ***
+* fixed toCamel propertyCache used by set/getStyle
+* added set/getStyle support for float property
+* optimized get() for common use case
+* fixed getXY for safari when el has absolute ancestors
+* using className property instead of string literal for class mgmt methods
+* added getXY/getRegion support for body element
+
+*** version 2.2.0 ***
+* no change
+
+
+*** version 0.12.2 ***
+* no change
+
+*** version 0.12.1 ***
+
+* getElementsByClassName no longer reverts to document when "root" not found
+* setXY no longer makes a second call to getXY unless noRetry is false
+* minified version no longer strips line breaks
+
+*** version 0.12.0 ***
+
+* fixed getXY for IE null parent
+* branching set/getStyle at load time instead of run time 
+
+*** version 0.11.3 ***
+
+* fixed getX and getY returning incorrect values for collections 
+* fixed getXY incorrectly calculated for Opera inline elements
+* fixed isAncestor failure in safari when 2nd arg is document.documentElement
+* fixed infinite loop in replaceClass when oldClassName == newClassName 
+* getDocumentWidth no longer includes scrollbars 
+
+
+*** version 0.11.2 ***
+* limit depth of parent.document crawl to 1 for getXY
+* test offsetParent instead of parentNode for getXY
+* return null if no el fo r get
+* just addClass if no class to replace for replaceClass
+
+
+*** version 0.11.1 ***
+
+* return null if el is null for get()
+* test offsetParent rather than parentNode for getXY()
+* limit depth of parent.document crawl for IE getXY() to 1
+* if no oldClassName to replace, just addClass for replaceClass()
+
+
+*** version 0.11.0 ***
+* Work around Opera 9 broken currentStyle
+* Removed timeout wrapper from setXY retry
+* Tagname tests now case-insensitive
+* Internal "this" references changed to allow for method shorthand
+* get/setStyle now accept both camel and hyphen case
+* Gecko reverted to crawling offsets for getXY
+ 
+
+*** version 0.10.0 ***
+
+* Safari now fails gracefully when querying computedStyle of an unavailable element 
+
+* Class management functions added (hasClass, addClass, removeClass, replaceClass, getElementsByClassName) 
+
+* All methods that accept HTMLElements or IDs now also accept arrays of HTMLElements and/or IDs
+
+* GenerateId method added
+
+* isAncestor method added
+
+* inDocument method added
+
+* getElementsBy method added
+
+* batch method added
+
+* getClientHeight/Width deprecated in favor of getViewportHeight/Width
+
+* getDocumentHeight/Width methods added 
+
+*** version 0.9.0 ***
+
+* Initial release
+

Property changes on: tags/2.8.3/wb/include/yui/dom/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/yahoo/yahoo.js
===================================================================
--- tags/2.8.3/wb/include/yui/yahoo/yahoo.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/yahoo/yahoo.js	(revision 1610)
@@ -0,0 +1,1075 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The YAHOO object is the single global object used by YUI Library.  It
+ * contains utility function for setting up namespaces, inheritance, and
+ * logging.  YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces
+ * created automatically for and used by the library.
+ * @module yahoo
+ * @title  YAHOO Global
+ */
+
+/**
+ * YAHOO_config is not included as part of the library.  Instead it is an 
+ * object that can be defined by the implementer immediately before 
+ * including the YUI library.  The properties included in this object
+ * will be used to configure global properties needed as soon as the 
+ * library begins to load.
+ * @class YAHOO_config
+ * @static
+ */
+
+/**
+ * A reference to a function that will be executed every time a YAHOO module
+ * is loaded.  As parameter, this function will receive the version
+ * information for the module. See <a href="YAHOO.env.html#getVersion">
+ * YAHOO.env.getVersion</a> for the description of the version data structure.
+ * @property listener
+ * @type Function
+ * @static
+ * @default undefined
+ */
+
+/**
+ * Set to true if the library will be dynamically loaded after window.onload.
+ * Defaults to false 
+ * @property injecting
+ * @type boolean
+ * @static
+ * @default undefined
+ */
+
+/**
+ * Instructs the yuiloader component to dynamically load yui components and
+ * their dependencies.  See the yuiloader documentation for more information
+ * about dynamic loading
+ * @property load
+ * @static
+ * @default undefined
+ * @see yuiloader
+ */
+
+/**
+ * Forces the use of the supplied locale where applicable in the library
+ * @property locale
+ * @type string
+ * @static
+ * @default undefined
+ */
+
+if (typeof YAHOO == "undefined" || !YAHOO) {
+    /**
+     * The YAHOO global namespace object.  If YAHOO is already defined, the
+     * existing YAHOO object will not be overwritten so that defined
+     * namespaces are preserved.
+    * @class YAHOO
+    * @static
+     */
+    var YAHOO = {};
+}
+
+/**
+ * Returns the namespace specified and creates it if it doesn't exist
+ * <pre>
+ * YAHOO.namespace("property.package");
+ * YAHOO.namespace("YAHOO.property.package");
+ * </pre>
+ * Either of the above would create YAHOO.property, then
+ * YAHOO.property.package
+ *
+ * Be careful when naming packages. Reserved words may work in some browsers
+ * and not others. For instance, the following will fail in Safari:
+ * <pre>
+ * YAHOO.namespace("really.long.nested.namespace");
+ * </pre>
+ * This fails because "long" is a future reserved word in ECMAScript
+ *
+ * For implementation code that uses YUI, do not create your components
+ * in the namespaces defined by YUI (
+ * <code>YAHOO.util</code>, 
+ * <code>YAHOO.widget</code>, 
+ * <code>YAHOO.lang</code>, 
+ * <code>YAHOO.tool</code>, 
+ * <code>YAHOO.example</code>, 
+ * <code>YAHOO.env</code>) -- create your own namespace (e.g., 'companyname').
+ *
+ * @method namespace
+ * @static
+ * @param  {String*} arguments 1-n namespaces to create 
+ * @return {Object}  A reference to the last namespace object created
+ */
+YAHOO.namespace = function() {
+    var a=arguments, o=null, i, j, d;
+    for (i=0; i<a.length; i=i+1) {
+        d=(""+a[i]).split(".");
+        o=YAHOO;
+
+        // YAHOO is implied, so it is ignored if it is included
+        for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; j=j+1) {
+            o[d[j]]=o[d[j]] || {};
+            o=o[d[j]];
+        }
+    }
+
+    return o;
+};
+
+/**
+ * Uses YAHOO.widget.Logger to output a log message, if the widget is
+ * available.
+ *
+ * @method log
+ * @static
+ * @param  {String}  msg  The message to log.
+ * @param  {String}  cat  The log category for the message.  Default
+ *                        categories are "info", "warn", "error", time".
+ *                        Custom categories can be used as well. (opt)
+ * @param  {String}  src  The source of the the message (opt)
+ * @return {Boolean}      True if the log operation was successful.
+ */
+YAHOO.log = function(msg, cat, src) {
+    var l=YAHOO.widget.Logger;
+    if(l && l.log) {
+        return l.log(msg, cat, src);
+    } else {
+        return false;
+    }
+};
+
+/**
+ * Registers a module with the YAHOO object
+ * @method register
+ * @static
+ * @param {String}   name    the name of the module (event, slider, etc)
+ * @param {Function} mainClass a reference to class in the module.  This
+ *                             class will be tagged with the version info
+ *                             so that it will be possible to identify the
+ *                             version that is in use when multiple versions
+ *                             have loaded
+ * @param {Object}   data      metadata object for the module.  Currently it
+ *                             is expected to contain a "version" property
+ *                             and a "build" property at minimum.
+ */
+YAHOO.register = function(name, mainClass, data) {
+    var mods = YAHOO.env.modules, m, v, b, ls, i;
+
+    if (!mods[name]) {
+        mods[name] = { 
+            versions:[], 
+            builds:[] 
+        };
+    }
+
+    m  = mods[name];
+    v  = data.version;
+    b  = data.build;
+    ls = YAHOO.env.listeners;
+
+    m.name = name;
+    m.version = v;
+    m.build = b;
+    m.versions.push(v);
+    m.builds.push(b);
+    m.mainClass = mainClass;
+
+    // fire the module load listeners
+    for (i=0;i<ls.length;i=i+1) {
+        ls[i](m);
+    }
+    // label the main class
+    if (mainClass) {
+        mainClass.VERSION = v;
+        mainClass.BUILD = b;
+    } else {
+        YAHOO.log("mainClass is undefined for module " + name, "warn");
+    }
+};
+
+/**
+ * YAHOO.env is used to keep track of what is known about the YUI library and
+ * the browsing environment
+ * @class YAHOO.env
+ * @static
+ */
+YAHOO.env = YAHOO.env || {
+
+    /**
+     * Keeps the version info for all YUI modules that have reported themselves
+    * @property modules
+    * @type Object[]
+     */
+    modules: [],
+    
+    /**
+     * List of functions that should be executed every time a YUI module
+     * reports itself.
+    * @property listeners
+    * @type Function[]
+     */
+    listeners: []
+};
+
+/**
+ * Returns the version data for the specified module:
+ *      <dl>
+ *      <dt>name:</dt>      <dd>The name of the module</dd>
+ *      <dt>version:</dt>   <dd>The version in use</dd>
+ *      <dt>build:</dt>     <dd>The build number in use</dd>
+ *      <dt>versions:</dt>  <dd>All versions that were registered</dd>
+ *      <dt>builds:</dt>    <dd>All builds that were registered.</dd>
+ *      <dt>mainClass:</dt> <dd>An object that was was stamped with the
+ *                 current version and build. If 
+ *                 mainClass.VERSION != version or mainClass.BUILD != build,
+ *                 multiple versions of pieces of the library have been
+ *                 loaded, potentially causing issues.</dd>
+ *       </dl>
+ *
+ * @method getVersion
+ * @static
+ * @param {String}  name the name of the module (event, slider, etc)
+ * @return {Object} The version info
+ */
+YAHOO.env.getVersion = function(name) {
+    return YAHOO.env.modules[name] || null;
+};
+
+/**
+ * Do not fork for a browser if it can be avoided.  Use feature detection when
+ * you can.  Use the user agent as a last resort.  YAHOO.env.ua stores a version
+ * number for the browser engine, 0 otherwise.  This value may or may not map
+ * to the version number of the browser using the engine.  The value is 
+ * presented as a float so that it can easily be used for boolean evaluation 
+ * as well as for looking for a particular range of versions.  Because of this, 
+ * some of the granularity of the version info may be lost (e.g., Gecko 1.8.0.9 
+ * reports 1.8).
+ * @class YAHOO.env.ua
+ * @static
+ */
+YAHOO.env.ua = function() {
+
+        var numberfy = function(s) {
+            var c = 0;
+            return parseFloat(s.replace(/\./g, function() {
+                return (c++ == 1) ? '' : '.';
+            }));
+        },
+
+        nav = navigator,
+
+        o = {
+
+        /**
+         * Internet Explorer version number or 0.  Example: 6
+        * @property ie
+        * @type float
+         */
+        ie: 0,
+
+        /**
+         * Opera version number or 0.  Example: 9.2
+        * @property opera
+        * @type float
+         */
+        opera: 0,
+
+        /**
+         * Gecko engine revision number.  Will evaluate to 1 if Gecko 
+         * is detected but the revision could not be found. Other browsers
+         * will be 0.  Example: 1.8
+         * <pre>
+         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
+         * Firefox 1.5.0.9: 1.8.0.9 <-- Reports 1.8
+         * Firefox 2.0.0.3: 1.8.1.3 <-- Reports 1.8
+         * Firefox 3 alpha: 1.9a4   <-- Reports 1.9
+         * </pre>
+        * @property gecko
+        * @type float
+         */
+        gecko: 0,
+
+        /**
+         * AppleWebKit version.  KHTML browsers that are not WebKit browsers 
+         * will evaluate to 1, other browsers 0.  Example: 418.9.1
+         * <pre>
+         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the 
+         *                                   latest available for Mac OSX 10.3.
+         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
+         * Safari 2.0.4:         418     <-- preventDefault fixed
+         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
+         *                                   different versions of webkit
+         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
+         *                                   updated, but not updated
+         *                                   to the latest patch.
+         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native SVG
+         *                                   and many major issues fixed).  
+         * 3.x yahoo.com, flickr:422     <-- Safari 3.x hacks the user agent
+         *                                   string when hitting yahoo.com and 
+         *                                   flickr.com.
+         * Safari 3.0.4 (523.12):523.12  <-- First Tiger release - automatic update
+         *                                   from 2.x via the 10.4.11 OS patch
+         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
+         *                                   yahoo.com user agent hack removed.
+         *                                   
+         * </pre>
+         * http://developer.apple.com/internet/safari/uamatrix.html
+        * @property webkit
+        * @type float
+         */
+        webkit: 0,
+
+        /**
+         * The mobile property will be set to a string containing any relevant
+         * user agent information when a modern mobile browser is detected.
+         * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series
+         * devices with the WebKit-based browser, and Opera Mini.  
+        * @property mobile 
+        * @type string
+         */
+        mobile: null,
+
+        /**
+         * Adobe AIR version number or 0.  Only populated if webkit is detected.
+         * Example: 1.0
+        * @property air
+        * @type float
+         */
+        air: 0,
+
+        /**
+         * Google Caja version number or 0.
+        * @property caja
+        * @type float
+         */
+        caja: nav.cajaVersion,
+
+        /**
+         * Set to true if the page appears to be in SSL
+        * @property secure
+        * @type boolean
+        * @static
+         */
+        secure: false,
+
+        /**
+         * The operating system.  Currently only detecting windows or macintosh
+        * @property os
+        * @type string
+        * @static
+         */
+        os: null
+
+    },
+
+    ua = navigator && navigator.userAgent, 
+    
+    loc = window && window.location,
+
+    href = loc && loc.href,
+    
+    m;
+
+    o.secure = href && (href.toLowerCase().indexOf("https") === 0);
+
+    if (ua) {
+
+        if ((/windows|win32/i).test(ua)) {
+            o.os = 'windows';
+        } else if ((/macintosh/i).test(ua)) {
+            o.os = 'macintosh';
+        }
+    
+        // Modern KHTML browsers should qualify as Safari X-Grade
+        if ((/KHTML/).test(ua)) {
+            o.webkit=1;
+        }
+
+        // Modern WebKit browsers are at least X-Grade
+        m=ua.match(/AppleWebKit\/([^\s]*)/);
+        if (m&&m[1]) {
+            o.webkit=numberfy(m[1]);
+
+            // Mobile browser check
+            if (/ Mobile\//.test(ua)) {
+                o.mobile = "Apple"; // iPhone or iPod Touch
+            } else {
+                m=ua.match(/NokiaN[^\/]*/);
+                if (m) {
+                    o.mobile = m[0]; // Nokia N-series, ex: NokiaN95
+                }
+            }
+
+            m=ua.match(/AdobeAIR\/([^\s]*)/);
+            if (m) {
+                o.air = m[0]; // Adobe AIR 1.0 or better
+            }
+
+        }
+
+        if (!o.webkit) { // not webkit
+            // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)
+            m=ua.match(/Opera[\s\/]([^\s]*)/);
+            if (m&&m[1]) {
+                o.opera=numberfy(m[1]);
+                m=ua.match(/Opera Mini[^;]*/);
+                if (m) {
+                    o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316
+                }
+            } else { // not opera or webkit
+                m=ua.match(/MSIE\s([^;]*)/);
+                if (m&&m[1]) {
+                    o.ie=numberfy(m[1]);
+                } else { // not opera, webkit, or ie
+                    m=ua.match(/Gecko\/([^\s]*)/);
+                    if (m) {
+                        o.gecko=1; // Gecko detected, look for revision
+                        m=ua.match(/rv:([^\s\)]*)/);
+                        if (m&&m[1]) {
+                            o.gecko=numberfy(m[1]);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    return o;
+}();
+
+/*
+ * Initializes the global by creating the default namespaces and applying
+ * any new configuration information that is detected.  This is the setup
+ * for env.
+ * @method init
+ * @static
+ * @private
+ */
+(function() {
+    YAHOO.namespace("util", "widget", "example");
+    /*global YAHOO_config*/
+    if ("undefined" !== typeof YAHOO_config) {
+        var l=YAHOO_config.listener, ls=YAHOO.env.listeners,unique=true, i;
+        if (l) {
+            // if YAHOO is loaded multiple times we need to check to see if
+            // this is a new config object.  If it is, add the new component
+            // load listener to the stack
+            for (i=0; i<ls.length; i++) {
+                if (ls[i] == l) {
+                    unique = false;
+                    break;
+                }
+            }
+
+            if (unique) {
+                ls.push(l);
+            }
+        }
+    }
+})();
+/**
+ * Provides the language utilites and extensions used by the library
+ * @class YAHOO.lang
+ */
+YAHOO.lang = YAHOO.lang || {};
+
+(function() {
+
+
+var L = YAHOO.lang,
+
+    OP = Object.prototype,
+    ARRAY_TOSTRING = '[object Array]',
+    FUNCTION_TOSTRING = '[object Function]',
+    OBJECT_TOSTRING = '[object Object]',
+    NOTHING = [],
+
+    // ADD = ["toString", "valueOf", "hasOwnProperty"],
+    ADD = ["toString", "valueOf"],
+
+    OB = {
+
+    /**
+     * Determines wheather or not the provided object is an array.
+    * @method isArray
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isArray: function(o) { 
+        return OP.toString.apply(o) === ARRAY_TOSTRING;
+    },
+
+    /**
+     * Determines whether or not the provided object is a boolean
+    * @method isBoolean
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isBoolean: function(o) {
+        return typeof o === 'boolean';
+    },
+    
+    /**
+     * Determines whether or not the provided object is a function.
+     * Note: Internet Explorer thinks certain functions are objects:
+     *
+     * var obj = document.createElement("object");
+     * YAHOO.lang.isFunction(obj.getAttribute) // reports false in IE
+     *
+     * var input = document.createElement("input"); // append to body
+     * YAHOO.lang.isFunction(input.focus) // reports false in IE
+     *
+     * You will have to implement additional tests if these functions
+     * matter to you.
+     *
+    * @method isFunction
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isFunction: function(o) {
+        return (typeof o === 'function') || OP.toString.apply(o) === FUNCTION_TOSTRING;
+    },
+        
+    /**
+     * Determines whether or not the provided object is null
+    * @method isNull
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isNull: function(o) {
+        return o === null;
+    },
+        
+    /**
+     * Determines whether or not the provided object is a legal number
+    * @method isNumber
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isNumber: function(o) {
+        return typeof o === 'number' && isFinite(o);
+    },
+      
+    /**
+     * Determines whether or not the provided object is of type object
+     * or function
+    * @method isObject
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */  
+    isObject: function(o) {
+return (o && (typeof o === 'object' || L.isFunction(o))) || false;
+    },
+        
+    /**
+     * Determines whether or not the provided object is a string
+    * @method isString
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isString: function(o) {
+        return typeof o === 'string';
+    },
+        
+    /**
+     * Determines whether or not the provided object is undefined
+    * @method isUndefined
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isUndefined: function(o) {
+        return typeof o === 'undefined';
+    },
+    
+ 
+    /**
+     * IE will not enumerate native functions in a derived object even if the
+     * function was overridden.  This is a workaround for specific functions 
+     * we care about on the Object prototype. 
+    * @property _IEEnumFix
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @static
+    * @private
+     */
+    _IEEnumFix: (YAHOO.env.ua.ie) ? function(r, s) {
+            var i, fname, f;
+            for (i=0;i<ADD.length;i=i+1) {
+
+                fname = ADD[i];
+                f = s[fname];
+
+                if (L.isFunction(f) && f!=OP[fname]) {
+                    r[fname]=f;
+                }
+            }
+    } : function(){},
+       
+    /**
+     * Utility to set up the prototype, constructor and superclass properties to
+     * support an inheritance strategy that can chain constructors and methods.
+     * Static members will not be inherited.
+     *
+    * @method extend
+    * @static
+    * @param {Function} subc   the object to modify
+    * @param {Function} superc the object to inherit
+    * @param {Object} overrides  additional properties/methods to add to the
+     *                              subclass prototype.  These will override the
+     *                              matching items obtained from the superclass 
+     *                              if present.
+     */
+    extend: function(subc, superc, overrides) {
+        if (!superc||!subc) {
+            throw new Error("extend failed, please check that " +
+                            "all dependencies are included.");
+        }
+        var F = function() {}, i;
+        F.prototype=superc.prototype;
+        subc.prototype=new F();
+        subc.prototype.constructor=subc;
+        subc.superclass=superc.prototype;
+        if (superc.prototype.constructor == OP.constructor) {
+            superc.prototype.constructor=superc;
+        }
+    
+        if (overrides) {
+            for (i in overrides) {
+                if (L.hasOwnProperty(overrides, i)) {
+                    subc.prototype[i]=overrides[i];
+                }
+            }
+
+            L._IEEnumFix(subc.prototype, overrides);
+        }
+    },
+   
+    /**
+     * Applies all properties in the supplier to the receiver if the
+     * receiver does not have these properties yet.  Optionally, one or 
+     * more methods/properties can be specified (as additional 
+     * parameters).  This option will overwrite the property if receiver 
+     * has it already.  If true is passed as the third parameter, all 
+     * properties will be applied and _will_ overwrite properties in 
+     * the receiver.
+     *
+    * @method augmentObject
+    * @static
+    * @since 2.3.0
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @param {String*|boolean}  arguments zero or more properties methods 
+     *        to augment the receiver with.  If none specified, everything
+     *        in the supplier will be used unless it would
+     *        overwrite an existing property in the receiver. If true
+     *        is specified as the third parameter, all properties will
+     *        be applied and will overwrite an existing property in
+     *        the receiver
+     */
+    augmentObject: function(r, s) {
+        if (!s||!r) {
+            throw new Error("Absorb failed, verify dependencies.");
+        }
+        var a=arguments, i, p, overrideList=a[2];
+        if (overrideList && overrideList!==true) { // only absorb the specified properties
+            for (i=2; i<a.length; i=i+1) {
+                r[a[i]] = s[a[i]];
+            }
+        } else { // take everything, overwriting only if the third parameter is true
+            for (p in s) { 
+                if (overrideList || !(p in r)) {
+                    r[p] = s[p];
+                }
+            }
+            
+            L._IEEnumFix(r, s);
+        }
+    },
+ 
+    /**
+     * Same as YAHOO.lang.augmentObject, except it only applies prototype properties
+    * @see YAHOO.lang.augmentObject
+    * @method augmentProto
+    * @static
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @param {String*|boolean}  arguments zero or more properties methods 
+     *        to augment the receiver with.  If none specified, everything 
+     *        in the supplier will be used unless it would overwrite an existing 
+     *        property in the receiver.  if true is specified as the third 
+     *        parameter, all properties will be applied and will overwrite an 
+     *        existing property in the receiver
+     */
+    augmentProto: function(r, s) {
+        if (!s||!r) {
+            throw new Error("Augment failed, verify dependencies.");
+        }
+        //var a=[].concat(arguments);
+        var a=[r.prototype,s.prototype], i;
+        for (i=2;i<arguments.length;i=i+1) {
+            a.push(arguments[i]);
+        }
+        L.augmentObject.apply(this, a);
+    },
+
+      
+    /**
+     * Returns a simple string representation of the object or array.
+     * Other types of objects will be returned unprocessed.  Arrays
+     * are expected to be indexed.  Use object notation for
+     * associative arrays.
+    * @method dump
+    * @since 2.3.0
+    * @param o {Object} The object to dump
+    * @param d {int} How deep to recurse child objects, default 3
+    * @return {String} the dump result
+     */
+    dump: function(o, d) {
+        var i,len,s=[],OBJ="{...}",FUN="f(){...}",
+            COMMA=', ', ARROW=' => ';
+
+        // Cast non-objects to string
+        // Skip dates because the std toString is what we want
+        // Skip HTMLElement-like objects because trying to dump 
+        // an element will cause an unhandled exception in FF 2.x
+        if (!L.isObject(o)) {
+            return o + "";
+        } else if (o instanceof Date || ("nodeType" in o && "tagName" in o)) {
+            return o;
+        } else if  (L.isFunction(o)) {
+            return FUN;
+        }
+
+        // dig into child objects the depth specifed. Default 3
+        d = (L.isNumber(d)) ? d : 3;
+
+        // arrays [1, 2, 3]
+        if (L.isArray(o)) {
+            s.push("[");
+            for (i=0,len=o.length;i<len;i=i+1) {
+                if (L.isObject(o[i])) {
+                    s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
+                } else {
+                    s.push(o[i]);
+                }
+                s.push(COMMA);
+            }
+            if (s.length > 1) {
+                s.pop();
+            }
+            s.push("]");
+        // objects {k1 => v1, k2 => v2}
+        } else {
+            s.push("{");
+            for (i in o) {
+                if (L.hasOwnProperty(o, i)) {
+                    s.push(i + ARROW);
+                    if (L.isObject(o[i])) {
+                        s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
+                    } else {
+                        s.push(o[i]);
+                    }
+                    s.push(COMMA);
+                }
+            }
+            if (s.length > 1) {
+                s.pop();
+            }
+            s.push("}");
+        }
+
+        return s.join("");
+    },
+
+    /**
+     * Does variable substitution on a string. It scans through the string 
+     * looking for expressions enclosed in { } braces. If an expression 
+     * is found, it is used a key on the object.  If there is a space in
+     * the key, the first word is used for the key and the rest is provided
+     * to an optional function to be used to programatically determine the
+     * value (the extra information might be used for this decision). If 
+     * the value for the key in the object, or what is returned from the
+     * function has a string value, number value, or object value, it is 
+     * substituted for the bracket expression and it repeats.  If this
+     * value is an object, it uses the Object's toString() if this has
+     * been overridden, otherwise it does a shallow dump of the key/value
+     * pairs.
+    * @method substitute
+    * @since 2.3.0
+    * @param s {String} The string that will be modified.
+    * @param o {Object} An object containing the replacement values
+    * @param f {Function} An optional function that can be used to
+     *                     process each match.  It receives the key,
+     *                     value, and any extra metadata included with
+     *                     the key inside of the braces.
+    * @return {String} the substituted string
+     */
+    substitute: function (s, o, f) {
+        var i, j, k, key, v, meta, saved=[], token, 
+            DUMP='dump', SPACE=' ', LBRACE='{', RBRACE='}',
+            dump, objstr;
+
+
+        for (;;) {
+            i = s.lastIndexOf(LBRACE);
+            if (i < 0) {
+                break;
+            }
+            j = s.indexOf(RBRACE, i);
+            if (i + 1 >= j) {
+                break;
+            }
+
+            //Extract key and meta info 
+            token = s.substring(i + 1, j);
+            key = token;
+            meta = null;
+            k = key.indexOf(SPACE);
+            if (k > -1) {
+                meta = key.substring(k + 1);
+                key = key.substring(0, k);
+            }
+
+            // lookup the value
+            v = o[key];
+
+            // if a substitution function was provided, execute it
+            if (f) {
+                v = f(key, v, meta);
+            }
+
+            if (L.isObject(v)) {
+                if (L.isArray(v)) {
+                    v = L.dump(v, parseInt(meta, 10));
+                } else {
+                    meta = meta || "";
+
+                    // look for the keyword 'dump', if found force obj dump
+                    dump = meta.indexOf(DUMP);
+                    if (dump > -1) {
+                        meta = meta.substring(4);
+                    }
+
+                    objstr = v.toString();
+
+                    // use the toString if it is not the Object toString 
+                    // and the 'dump' meta info was not found
+                    if (objstr === OBJECT_TOSTRING || dump > -1) {
+                        v = L.dump(v, parseInt(meta, 10));
+                    } else {
+                        v = objstr;
+                    }
+                }
+            } else if (!L.isString(v) && !L.isNumber(v)) {
+                // This {block} has no replace string. Save it for later.
+                v = "~-" + saved.length + "-~";
+                saved[saved.length] = token;
+
+                // break;
+            }
+
+            s = s.substring(0, i) + v + s.substring(j + 1);
+
+
+        }
+
+        // restore saved {block}s
+        for (i=saved.length-1; i>=0; i=i-1) {
+            s = s.replace(new RegExp("~-" + i + "-~"), "{"  + saved[i] + "}", "g");
+        }
+
+        return s;
+    },
+
+
+    /**
+     * Returns a string without any leading or trailing whitespace.  If 
+     * the input is not a string, the input will be returned untouched.
+    * @method trim
+    * @since 2.3.0
+    * @param s {string} the string to trim
+    * @return {string} the trimmed string
+     */
+    trim: function(s){
+        try {
+            return s.replace(/^\s+|\s+$/g, "");
+        } catch(e) {
+            return s;
+        }
+    },
+
+    /**
+     * Returns a new object containing all of the properties of
+     * all the supplied objects.  The properties from later objects
+     * will overwrite those in earlier objects.
+    * @method merge
+    * @since 2.3.0
+    * @param arguments {Object*} the objects to merge
+    * @return the new merged object
+     */
+    merge: function() {
+        var o={}, a=arguments, l=a.length, i;
+        for (i=0; i<l; i=i+1) {
+            L.augmentObject(o, a[i], true);
+        }
+        return o;
+    },
+
+    /**
+     * Executes the supplied function in the context of the supplied 
+     * object 'when' milliseconds later.  Executes the function a 
+     * single time unless periodic is set to true.
+    * @method later
+    * @since 2.4.0
+    * @param when {int} the number of milliseconds to wait until the fn 
+     * is executed
+    * @param o the context object
+    * @param fn {Function|String} the function to execute or the name of 
+     * the method in the 'o' object to execute
+    * @param data [Array] data that is provided to the function.  This accepts
+     * either a single item or an array.  If an array is provided, the
+     * function is executed with one parameter for each array item.  If
+     * you need to pass a single array parameter, it needs to be wrapped in
+     * an array [myarray]
+    * @param periodic {boolean} if true, executes continuously at supplied 
+     * interval until canceled
+    * @return a timer object. Call the cancel() method on this object to 
+     * stop the timer.
+     */
+    later: function(when, o, fn, data, periodic) {
+        when = when || 0; 
+        o = o || {};
+        var m=fn, d=data, f, r;
+
+        if (L.isString(fn)) {
+            m = o[fn];
+        }
+
+        if (!m) {
+            throw new TypeError("method undefined");
+        }
+
+        if (d && !L.isArray(d)) {
+            d = [data];
+        }
+
+        f = function() {
+            m.apply(o, d || NOTHING);
+        };
+
+        r = (periodic) ? setInterval(f, when) : setTimeout(f, when);
+
+        return {
+            interval: periodic,
+            cancel: function() {
+                if (this.interval) {
+                    clearInterval(r);
+                } else {
+                    clearTimeout(r);
+                }
+            }
+        };
+    },
+    
+    /**
+     * A convenience method for detecting a legitimate non-null value.
+     * Returns false for null/undefined/NaN, true for other values, 
+     * including 0/false/''
+    * @method isValue
+    * @since 2.3.0
+    * @param o {any} the item to test
+    * @return {boolean} true if it is not null/undefined/NaN || false
+     */
+    isValue: function(o) {
+        // return (o || o === false || o === 0 || o === ''); // Infinity fails
+return (L.isObject(o) || L.isString(o) || L.isNumber(o) || L.isBoolean(o));
+    }
+
+};
+
+/**
+ * Determines whether or not the property was added
+ * to the object instance.  Returns false if the property is not present
+ * in the object, or was inherited from the prototype.
+ * This abstraction is provided to enable hasOwnProperty for Safari 1.3.x.
+ * There is a discrepancy between YAHOO.lang.hasOwnProperty and
+ * Object.prototype.hasOwnProperty when the property is a primitive added to
+ * both the instance AND prototype with the same value:
+ * <pre>
+ * var A = function() {};
+ * A.prototype.foo = 'foo';
+ * var a = new A();
+ * a.foo = 'foo';
+ * alert(a.hasOwnProperty('foo')); // true
+ * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using fallback
+ * </pre>
+ * @method hasOwnProperty
+ * @param {any} o The object being testing
+ * @param prop {string} the name of the property to test
+ * @return {boolean} the result
+ */
+L.hasOwnProperty = (OP.hasOwnProperty) ?
+    function(o, prop) {
+        return o && o.hasOwnProperty(prop);
+    } : function(o, prop) {
+        return !L.isUndefined(o[prop]) && 
+                o.constructor.prototype[prop] !== o[prop];
+    };
+
+// new lang wins
+OB.augmentObject(L, OB, true);
+
+/*
+ * An alias for <a href="YAHOO.lang.html">YAHOO.lang</a>
+ * @class YAHOO.util.Lang
+ */
+YAHOO.util.Lang = L;
+ 
+/**
+ * Same as YAHOO.lang.augmentObject, except it only applies prototype 
+ * properties.  This is an alias for augmentProto.
+ * @see YAHOO.lang.augmentObject
+ * @method augment
+ * @static
+ * @param {Function} r  the object to receive the augmentation
+ * @param {Function} s  the object that supplies the properties to augment
+ * @param {String*|boolean}  arguments zero or more properties methods to 
+ *        augment the receiver with.  If none specified, everything
+ *        in the supplier will be used unless it would
+ *        overwrite an existing property in the receiver.  if true
+ *        is specified as the third parameter, all properties will
+ *        be applied and will overwrite an existing property in
+ *        the receiver
+ */
+L.augment = L.augmentProto;
+
+/**
+ * An alias for <a href="YAHOO.lang.html#augment">YAHOO.lang.augment</a>
+ * @for YAHOO
+ * @method augment
+ * @static
+ * @param {Function} r  the object to receive the augmentation
+ * @param {Function} s  the object that supplies the properties to augment
+ * @param {String*}  arguments zero or more properties methods to 
+ *        augment the receiver with.  If none specified, everything
+ *        in the supplier will be used unless it would
+ *        overwrite an existing property in the receiver
+ */
+YAHOO.augment = L.augmentProto;
+       
+/**
+ * An alias for <a href="YAHOO.lang.html#extend">YAHOO.lang.extend</a>
+ * @method extend
+ * @static
+ * @param {Function} subc   the object to modify
+ * @param {Function} superc the object to inherit
+ * @param {Object} overrides  additional properties/methods to add to the
+ *        subclass prototype.  These will override the
+ *        matching items obtained from the superclass if present.
+ */
+YAHOO.extend = L.extend;
+
+})();
+YAHOO.register("yahoo", YAHOO, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/yahoo/yahoo.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/yahoo/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/yahoo/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/yahoo/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         yui
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/yahoo/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/yahoo/yahoo-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/yahoo/yahoo-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/yahoo/yahoo-debug.js	(revision 1610)
@@ -0,0 +1,1075 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The YAHOO object is the single global object used by YUI Library.  It
+ * contains utility function for setting up namespaces, inheritance, and
+ * logging.  YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces
+ * created automatically for and used by the library.
+ * @module yahoo
+ * @title  YAHOO Global
+ */
+
+/**
+ * YAHOO_config is not included as part of the library.  Instead it is an 
+ * object that can be defined by the implementer immediately before 
+ * including the YUI library.  The properties included in this object
+ * will be used to configure global properties needed as soon as the 
+ * library begins to load.
+ * @class YAHOO_config
+ * @static
+ */
+
+/**
+ * A reference to a function that will be executed every time a YAHOO module
+ * is loaded.  As parameter, this function will receive the version
+ * information for the module. See <a href="YAHOO.env.html#getVersion">
+ * YAHOO.env.getVersion</a> for the description of the version data structure.
+ * @property listener
+ * @type Function
+ * @static
+ * @default undefined
+ */
+
+/**
+ * Set to true if the library will be dynamically loaded after window.onload.
+ * Defaults to false 
+ * @property injecting
+ * @type boolean
+ * @static
+ * @default undefined
+ */
+
+/**
+ * Instructs the yuiloader component to dynamically load yui components and
+ * their dependencies.  See the yuiloader documentation for more information
+ * about dynamic loading
+ * @property load
+ * @static
+ * @default undefined
+ * @see yuiloader
+ */
+
+/**
+ * Forces the use of the supplied locale where applicable in the library
+ * @property locale
+ * @type string
+ * @static
+ * @default undefined
+ */
+
+if (typeof YAHOO == "undefined" || !YAHOO) {
+    /**
+     * The YAHOO global namespace object.  If YAHOO is already defined, the
+     * existing YAHOO object will not be overwritten so that defined
+     * namespaces are preserved.
+    * @class YAHOO
+    * @static
+     */
+    var YAHOO = {};
+}
+
+/**
+ * Returns the namespace specified and creates it if it doesn't exist
+ * <pre>
+ * YAHOO.namespace("property.package");
+ * YAHOO.namespace("YAHOO.property.package");
+ * </pre>
+ * Either of the above would create YAHOO.property, then
+ * YAHOO.property.package
+ *
+ * Be careful when naming packages. Reserved words may work in some browsers
+ * and not others. For instance, the following will fail in Safari:
+ * <pre>
+ * YAHOO.namespace("really.long.nested.namespace");
+ * </pre>
+ * This fails because "long" is a future reserved word in ECMAScript
+ *
+ * For implementation code that uses YUI, do not create your components
+ * in the namespaces defined by YUI (
+ * <code>YAHOO.util</code>, 
+ * <code>YAHOO.widget</code>, 
+ * <code>YAHOO.lang</code>, 
+ * <code>YAHOO.tool</code>, 
+ * <code>YAHOO.example</code>, 
+ * <code>YAHOO.env</code>) -- create your own namespace (e.g., 'companyname').
+ *
+ * @method namespace
+ * @static
+ * @param  {String*} arguments 1-n namespaces to create 
+ * @return {Object}  A reference to the last namespace object created
+ */
+YAHOO.namespace = function() {
+    var a=arguments, o=null, i, j, d;
+    for (i=0; i<a.length; i=i+1) {
+        d=(""+a[i]).split(".");
+        o=YAHOO;
+
+        // YAHOO is implied, so it is ignored if it is included
+        for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; j=j+1) {
+            o[d[j]]=o[d[j]] || {};
+            o=o[d[j]];
+        }
+    }
+
+    return o;
+};
+
+/**
+ * Uses YAHOO.widget.Logger to output a log message, if the widget is
+ * available.
+ *
+ * @method log
+ * @static
+ * @param  {String}  msg  The message to log.
+ * @param  {String}  cat  The log category for the message.  Default
+ *                        categories are "info", "warn", "error", time".
+ *                        Custom categories can be used as well. (opt)
+ * @param  {String}  src  The source of the the message (opt)
+ * @return {Boolean}      True if the log operation was successful.
+ */
+YAHOO.log = function(msg, cat, src) {
+    var l=YAHOO.widget.Logger;
+    if(l && l.log) {
+        return l.log(msg, cat, src);
+    } else {
+        return false;
+    }
+};
+
+/**
+ * Registers a module with the YAHOO object
+ * @method register
+ * @static
+ * @param {String}   name    the name of the module (event, slider, etc)
+ * @param {Function} mainClass a reference to class in the module.  This
+ *                             class will be tagged with the version info
+ *                             so that it will be possible to identify the
+ *                             version that is in use when multiple versions
+ *                             have loaded
+ * @param {Object}   data      metadata object for the module.  Currently it
+ *                             is expected to contain a "version" property
+ *                             and a "build" property at minimum.
+ */
+YAHOO.register = function(name, mainClass, data) {
+    var mods = YAHOO.env.modules, m, v, b, ls, i;
+
+    if (!mods[name]) {
+        mods[name] = { 
+            versions:[], 
+            builds:[] 
+        };
+    }
+
+    m  = mods[name];
+    v  = data.version;
+    b  = data.build;
+    ls = YAHOO.env.listeners;
+
+    m.name = name;
+    m.version = v;
+    m.build = b;
+    m.versions.push(v);
+    m.builds.push(b);
+    m.mainClass = mainClass;
+
+    // fire the module load listeners
+    for (i=0;i<ls.length;i=i+1) {
+        ls[i](m);
+    }
+    // label the main class
+    if (mainClass) {
+        mainClass.VERSION = v;
+        mainClass.BUILD = b;
+    } else {
+        YAHOO.log("mainClass is undefined for module " + name, "warn");
+    }
+};
+
+/**
+ * YAHOO.env is used to keep track of what is known about the YUI library and
+ * the browsing environment
+ * @class YAHOO.env
+ * @static
+ */
+YAHOO.env = YAHOO.env || {
+
+    /**
+     * Keeps the version info for all YUI modules that have reported themselves
+    * @property modules
+    * @type Object[]
+     */
+    modules: [],
+    
+    /**
+     * List of functions that should be executed every time a YUI module
+     * reports itself.
+    * @property listeners
+    * @type Function[]
+     */
+    listeners: []
+};
+
+/**
+ * Returns the version data for the specified module:
+ *      <dl>
+ *      <dt>name:</dt>      <dd>The name of the module</dd>
+ *      <dt>version:</dt>   <dd>The version in use</dd>
+ *      <dt>build:</dt>     <dd>The build number in use</dd>
+ *      <dt>versions:</dt>  <dd>All versions that were registered</dd>
+ *      <dt>builds:</dt>    <dd>All builds that were registered.</dd>
+ *      <dt>mainClass:</dt> <dd>An object that was was stamped with the
+ *                 current version and build. If 
+ *                 mainClass.VERSION != version or mainClass.BUILD != build,
+ *                 multiple versions of pieces of the library have been
+ *                 loaded, potentially causing issues.</dd>
+ *       </dl>
+ *
+ * @method getVersion
+ * @static
+ * @param {String}  name the name of the module (event, slider, etc)
+ * @return {Object} The version info
+ */
+YAHOO.env.getVersion = function(name) {
+    return YAHOO.env.modules[name] || null;
+};
+
+/**
+ * Do not fork for a browser if it can be avoided.  Use feature detection when
+ * you can.  Use the user agent as a last resort.  YAHOO.env.ua stores a version
+ * number for the browser engine, 0 otherwise.  This value may or may not map
+ * to the version number of the browser using the engine.  The value is 
+ * presented as a float so that it can easily be used for boolean evaluation 
+ * as well as for looking for a particular range of versions.  Because of this, 
+ * some of the granularity of the version info may be lost (e.g., Gecko 1.8.0.9 
+ * reports 1.8).
+ * @class YAHOO.env.ua
+ * @static
+ */
+YAHOO.env.ua = function() {
+
+        var numberfy = function(s) {
+            var c = 0;
+            return parseFloat(s.replace(/\./g, function() {
+                return (c++ == 1) ? '' : '.';
+            }));
+        },
+
+        nav = navigator,
+
+        o = {
+
+        /**
+         * Internet Explorer version number or 0.  Example: 6
+        * @property ie
+        * @type float
+         */
+        ie: 0,
+
+        /**
+         * Opera version number or 0.  Example: 9.2
+        * @property opera
+        * @type float
+         */
+        opera: 0,
+
+        /**
+         * Gecko engine revision number.  Will evaluate to 1 if Gecko 
+         * is detected but the revision could not be found. Other browsers
+         * will be 0.  Example: 1.8
+         * <pre>
+         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
+         * Firefox 1.5.0.9: 1.8.0.9 <-- Reports 1.8
+         * Firefox 2.0.0.3: 1.8.1.3 <-- Reports 1.8
+         * Firefox 3 alpha: 1.9a4   <-- Reports 1.9
+         * </pre>
+        * @property gecko
+        * @type float
+         */
+        gecko: 0,
+
+        /**
+         * AppleWebKit version.  KHTML browsers that are not WebKit browsers 
+         * will evaluate to 1, other browsers 0.  Example: 418.9.1
+         * <pre>
+         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the 
+         *                                   latest available for Mac OSX 10.3.
+         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
+         * Safari 2.0.4:         418     <-- preventDefault fixed
+         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
+         *                                   different versions of webkit
+         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
+         *                                   updated, but not updated
+         *                                   to the latest patch.
+         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native SVG
+         *                                   and many major issues fixed).  
+         * 3.x yahoo.com, flickr:422     <-- Safari 3.x hacks the user agent
+         *                                   string when hitting yahoo.com and 
+         *                                   flickr.com.
+         * Safari 3.0.4 (523.12):523.12  <-- First Tiger release - automatic update
+         *                                   from 2.x via the 10.4.11 OS patch
+         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
+         *                                   yahoo.com user agent hack removed.
+         *                                   
+         * </pre>
+         * http://developer.apple.com/internet/safari/uamatrix.html
+        * @property webkit
+        * @type float
+         */
+        webkit: 0,
+
+        /**
+         * The mobile property will be set to a string containing any relevant
+         * user agent information when a modern mobile browser is detected.
+         * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series
+         * devices with the WebKit-based browser, and Opera Mini.  
+        * @property mobile 
+        * @type string
+         */
+        mobile: null,
+
+        /**
+         * Adobe AIR version number or 0.  Only populated if webkit is detected.
+         * Example: 1.0
+        * @property air
+        * @type float
+         */
+        air: 0,
+
+        /**
+         * Google Caja version number or 0.
+        * @property caja
+        * @type float
+         */
+        caja: nav.cajaVersion,
+
+        /**
+         * Set to true if the page appears to be in SSL
+        * @property secure
+        * @type boolean
+        * @static
+         */
+        secure: false,
+
+        /**
+         * The operating system.  Currently only detecting windows or macintosh
+        * @property os
+        * @type string
+        * @static
+         */
+        os: null
+
+    },
+
+    ua = navigator && navigator.userAgent, 
+    
+    loc = window && window.location,
+
+    href = loc && loc.href,
+    
+    m;
+
+    o.secure = href && (href.toLowerCase().indexOf("https") === 0);
+
+    if (ua) {
+
+        if ((/windows|win32/i).test(ua)) {
+            o.os = 'windows';
+        } else if ((/macintosh/i).test(ua)) {
+            o.os = 'macintosh';
+        }
+    
+        // Modern KHTML browsers should qualify as Safari X-Grade
+        if ((/KHTML/).test(ua)) {
+            o.webkit=1;
+        }
+
+        // Modern WebKit browsers are at least X-Grade
+        m=ua.match(/AppleWebKit\/([^\s]*)/);
+        if (m&&m[1]) {
+            o.webkit=numberfy(m[1]);
+
+            // Mobile browser check
+            if (/ Mobile\//.test(ua)) {
+                o.mobile = "Apple"; // iPhone or iPod Touch
+            } else {
+                m=ua.match(/NokiaN[^\/]*/);
+                if (m) {
+                    o.mobile = m[0]; // Nokia N-series, ex: NokiaN95
+                }
+            }
+
+            m=ua.match(/AdobeAIR\/([^\s]*)/);
+            if (m) {
+                o.air = m[0]; // Adobe AIR 1.0 or better
+            }
+
+        }
+
+        if (!o.webkit) { // not webkit
+            // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)
+            m=ua.match(/Opera[\s\/]([^\s]*)/);
+            if (m&&m[1]) {
+                o.opera=numberfy(m[1]);
+                m=ua.match(/Opera Mini[^;]*/);
+                if (m) {
+                    o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316
+                }
+            } else { // not opera or webkit
+                m=ua.match(/MSIE\s([^;]*)/);
+                if (m&&m[1]) {
+                    o.ie=numberfy(m[1]);
+                } else { // not opera, webkit, or ie
+                    m=ua.match(/Gecko\/([^\s]*)/);
+                    if (m) {
+                        o.gecko=1; // Gecko detected, look for revision
+                        m=ua.match(/rv:([^\s\)]*)/);
+                        if (m&&m[1]) {
+                            o.gecko=numberfy(m[1]);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    return o;
+}();
+
+/*
+ * Initializes the global by creating the default namespaces and applying
+ * any new configuration information that is detected.  This is the setup
+ * for env.
+ * @method init
+ * @static
+ * @private
+ */
+(function() {
+    YAHOO.namespace("util", "widget", "example");
+    /*global YAHOO_config*/
+    if ("undefined" !== typeof YAHOO_config) {
+        var l=YAHOO_config.listener, ls=YAHOO.env.listeners,unique=true, i;
+        if (l) {
+            // if YAHOO is loaded multiple times we need to check to see if
+            // this is a new config object.  If it is, add the new component
+            // load listener to the stack
+            for (i=0; i<ls.length; i++) {
+                if (ls[i] == l) {
+                    unique = false;
+                    break;
+                }
+            }
+
+            if (unique) {
+                ls.push(l);
+            }
+        }
+    }
+})();
+/**
+ * Provides the language utilites and extensions used by the library
+ * @class YAHOO.lang
+ */
+YAHOO.lang = YAHOO.lang || {};
+
+(function() {
+
+
+var L = YAHOO.lang,
+
+    OP = Object.prototype,
+    ARRAY_TOSTRING = '[object Array]',
+    FUNCTION_TOSTRING = '[object Function]',
+    OBJECT_TOSTRING = '[object Object]',
+    NOTHING = [],
+
+    // ADD = ["toString", "valueOf", "hasOwnProperty"],
+    ADD = ["toString", "valueOf"],
+
+    OB = {
+
+    /**
+     * Determines wheather or not the provided object is an array.
+    * @method isArray
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isArray: function(o) { 
+        return OP.toString.apply(o) === ARRAY_TOSTRING;
+    },
+
+    /**
+     * Determines whether or not the provided object is a boolean
+    * @method isBoolean
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isBoolean: function(o) {
+        return typeof o === 'boolean';
+    },
+    
+    /**
+     * Determines whether or not the provided object is a function.
+     * Note: Internet Explorer thinks certain functions are objects:
+     *
+     * var obj = document.createElement("object");
+     * YAHOO.lang.isFunction(obj.getAttribute) // reports false in IE
+     *
+     * var input = document.createElement("input"); // append to body
+     * YAHOO.lang.isFunction(input.focus) // reports false in IE
+     *
+     * You will have to implement additional tests if these functions
+     * matter to you.
+     *
+    * @method isFunction
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isFunction: function(o) {
+        return (typeof o === 'function') || OP.toString.apply(o) === FUNCTION_TOSTRING;
+    },
+        
+    /**
+     * Determines whether or not the provided object is null
+    * @method isNull
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isNull: function(o) {
+        return o === null;
+    },
+        
+    /**
+     * Determines whether or not the provided object is a legal number
+    * @method isNumber
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isNumber: function(o) {
+        return typeof o === 'number' && isFinite(o);
+    },
+      
+    /**
+     * Determines whether or not the provided object is of type object
+     * or function
+    * @method isObject
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */  
+    isObject: function(o) {
+return (o && (typeof o === 'object' || L.isFunction(o))) || false;
+    },
+        
+    /**
+     * Determines whether or not the provided object is a string
+    * @method isString
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isString: function(o) {
+        return typeof o === 'string';
+    },
+        
+    /**
+     * Determines whether or not the provided object is undefined
+    * @method isUndefined
+    * @param {any} o The object being testing
+    * @return {boolean} the result
+     */
+    isUndefined: function(o) {
+        return typeof o === 'undefined';
+    },
+    
+ 
+    /**
+     * IE will not enumerate native functions in a derived object even if the
+     * function was overridden.  This is a workaround for specific functions 
+     * we care about on the Object prototype. 
+    * @property _IEEnumFix
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @static
+    * @private
+     */
+    _IEEnumFix: (YAHOO.env.ua.ie) ? function(r, s) {
+            var i, fname, f;
+            for (i=0;i<ADD.length;i=i+1) {
+
+                fname = ADD[i];
+                f = s[fname];
+
+                if (L.isFunction(f) && f!=OP[fname]) {
+                    r[fname]=f;
+                }
+            }
+    } : function(){},
+       
+    /**
+     * Utility to set up the prototype, constructor and superclass properties to
+     * support an inheritance strategy that can chain constructors and methods.
+     * Static members will not be inherited.
+     *
+    * @method extend
+    * @static
+    * @param {Function} subc   the object to modify
+    * @param {Function} superc the object to inherit
+    * @param {Object} overrides  additional properties/methods to add to the
+     *                              subclass prototype.  These will override the
+     *                              matching items obtained from the superclass 
+     *                              if present.
+     */
+    extend: function(subc, superc, overrides) {
+        if (!superc||!subc) {
+            throw new Error("extend failed, please check that " +
+                            "all dependencies are included.");
+        }
+        var F = function() {}, i;
+        F.prototype=superc.prototype;
+        subc.prototype=new F();
+        subc.prototype.constructor=subc;
+        subc.superclass=superc.prototype;
+        if (superc.prototype.constructor == OP.constructor) {
+            superc.prototype.constructor=superc;
+        }
+    
+        if (overrides) {
+            for (i in overrides) {
+                if (L.hasOwnProperty(overrides, i)) {
+                    subc.prototype[i]=overrides[i];
+                }
+            }
+
+            L._IEEnumFix(subc.prototype, overrides);
+        }
+    },
+   
+    /**
+     * Applies all properties in the supplier to the receiver if the
+     * receiver does not have these properties yet.  Optionally, one or 
+     * more methods/properties can be specified (as additional 
+     * parameters).  This option will overwrite the property if receiver 
+     * has it already.  If true is passed as the third parameter, all 
+     * properties will be applied and _will_ overwrite properties in 
+     * the receiver.
+     *
+    * @method augmentObject
+    * @static
+    * @since 2.3.0
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @param {String*|boolean}  arguments zero or more properties methods 
+     *        to augment the receiver with.  If none specified, everything
+     *        in the supplier will be used unless it would
+     *        overwrite an existing property in the receiver. If true
+     *        is specified as the third parameter, all properties will
+     *        be applied and will overwrite an existing property in
+     *        the receiver
+     */
+    augmentObject: function(r, s) {
+        if (!s||!r) {
+            throw new Error("Absorb failed, verify dependencies.");
+        }
+        var a=arguments, i, p, overrideList=a[2];
+        if (overrideList && overrideList!==true) { // only absorb the specified properties
+            for (i=2; i<a.length; i=i+1) {
+                r[a[i]] = s[a[i]];
+            }
+        } else { // take everything, overwriting only if the third parameter is true
+            for (p in s) { 
+                if (overrideList || !(p in r)) {
+                    r[p] = s[p];
+                }
+            }
+            
+            L._IEEnumFix(r, s);
+        }
+    },
+ 
+    /**
+     * Same as YAHOO.lang.augmentObject, except it only applies prototype properties
+    * @see YAHOO.lang.augmentObject
+    * @method augmentProto
+    * @static
+    * @param {Function} r  the object to receive the augmentation
+    * @param {Function} s  the object that supplies the properties to augment
+    * @param {String*|boolean}  arguments zero or more properties methods 
+     *        to augment the receiver with.  If none specified, everything 
+     *        in the supplier will be used unless it would overwrite an existing 
+     *        property in the receiver.  if true is specified as the third 
+     *        parameter, all properties will be applied and will overwrite an 
+     *        existing property in the receiver
+     */
+    augmentProto: function(r, s) {
+        if (!s||!r) {
+            throw new Error("Augment failed, verify dependencies.");
+        }
+        //var a=[].concat(arguments);
+        var a=[r.prototype,s.prototype], i;
+        for (i=2;i<arguments.length;i=i+1) {
+            a.push(arguments[i]);
+        }
+        L.augmentObject.apply(this, a);
+    },
+
+      
+    /**
+     * Returns a simple string representation of the object or array.
+     * Other types of objects will be returned unprocessed.  Arrays
+     * are expected to be indexed.  Use object notation for
+     * associative arrays.
+    * @method dump
+    * @since 2.3.0
+    * @param o {Object} The object to dump
+    * @param d {int} How deep to recurse child objects, default 3
+    * @return {String} the dump result
+     */
+    dump: function(o, d) {
+        var i,len,s=[],OBJ="{...}",FUN="f(){...}",
+            COMMA=', ', ARROW=' => ';
+
+        // Cast non-objects to string
+        // Skip dates because the std toString is what we want
+        // Skip HTMLElement-like objects because trying to dump 
+        // an element will cause an unhandled exception in FF 2.x
+        if (!L.isObject(o)) {
+            return o + "";
+        } else if (o instanceof Date || ("nodeType" in o && "tagName" in o)) {
+            return o;
+        } else if  (L.isFunction(o)) {
+            return FUN;
+        }
+
+        // dig into child objects the depth specifed. Default 3
+        d = (L.isNumber(d)) ? d : 3;
+
+        // arrays [1, 2, 3]
+        if (L.isArray(o)) {
+            s.push("[");
+            for (i=0,len=o.length;i<len;i=i+1) {
+                if (L.isObject(o[i])) {
+                    s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
+                } else {
+                    s.push(o[i]);
+                }
+                s.push(COMMA);
+            }
+            if (s.length > 1) {
+                s.pop();
+            }
+            s.push("]");
+        // objects {k1 => v1, k2 => v2}
+        } else {
+            s.push("{");
+            for (i in o) {
+                if (L.hasOwnProperty(o, i)) {
+                    s.push(i + ARROW);
+                    if (L.isObject(o[i])) {
+                        s.push((d > 0) ? L.dump(o[i], d-1) : OBJ);
+                    } else {
+                        s.push(o[i]);
+                    }
+                    s.push(COMMA);
+                }
+            }
+            if (s.length > 1) {
+                s.pop();
+            }
+            s.push("}");
+        }
+
+        return s.join("");
+    },
+
+    /**
+     * Does variable substitution on a string. It scans through the string 
+     * looking for expressions enclosed in { } braces. If an expression 
+     * is found, it is used a key on the object.  If there is a space in
+     * the key, the first word is used for the key and the rest is provided
+     * to an optional function to be used to programatically determine the
+     * value (the extra information might be used for this decision). If 
+     * the value for the key in the object, or what is returned from the
+     * function has a string value, number value, or object value, it is 
+     * substituted for the bracket expression and it repeats.  If this
+     * value is an object, it uses the Object's toString() if this has
+     * been overridden, otherwise it does a shallow dump of the key/value
+     * pairs.
+    * @method substitute
+    * @since 2.3.0
+    * @param s {String} The string that will be modified.
+    * @param o {Object} An object containing the replacement values
+    * @param f {Function} An optional function that can be used to
+     *                     process each match.  It receives the key,
+     *                     value, and any extra metadata included with
+     *                     the key inside of the braces.
+    * @return {String} the substituted string
+     */
+    substitute: function (s, o, f) {
+        var i, j, k, key, v, meta, saved=[], token, 
+            DUMP='dump', SPACE=' ', LBRACE='{', RBRACE='}',
+            dump, objstr;
+
+
+        for (;;) {
+            i = s.lastIndexOf(LBRACE);
+            if (i < 0) {
+                break;
+            }
+            j = s.indexOf(RBRACE, i);
+            if (i + 1 >= j) {
+                break;
+            }
+
+            //Extract key and meta info 
+            token = s.substring(i + 1, j);
+            key = token;
+            meta = null;
+            k = key.indexOf(SPACE);
+            if (k > -1) {
+                meta = key.substring(k + 1);
+                key = key.substring(0, k);
+            }
+
+            // lookup the value
+            v = o[key];
+
+            // if a substitution function was provided, execute it
+            if (f) {
+                v = f(key, v, meta);
+            }
+
+            if (L.isObject(v)) {
+                if (L.isArray(v)) {
+                    v = L.dump(v, parseInt(meta, 10));
+                } else {
+                    meta = meta || "";
+
+                    // look for the keyword 'dump', if found force obj dump
+                    dump = meta.indexOf(DUMP);
+                    if (dump > -1) {
+                        meta = meta.substring(4);
+                    }
+
+                    objstr = v.toString();
+
+                    // use the toString if it is not the Object toString 
+                    // and the 'dump' meta info was not found
+                    if (objstr === OBJECT_TOSTRING || dump > -1) {
+                        v = L.dump(v, parseInt(meta, 10));
+                    } else {
+                        v = objstr;
+                    }
+                }
+            } else if (!L.isString(v) && !L.isNumber(v)) {
+                // This {block} has no replace string. Save it for later.
+                v = "~-" + saved.length + "-~";
+                saved[saved.length] = token;
+
+                // break;
+            }
+
+            s = s.substring(0, i) + v + s.substring(j + 1);
+
+
+        }
+
+        // restore saved {block}s
+        for (i=saved.length-1; i>=0; i=i-1) {
+            s = s.replace(new RegExp("~-" + i + "-~"), "{"  + saved[i] + "}", "g");
+        }
+
+        return s;
+    },
+
+
+    /**
+     * Returns a string without any leading or trailing whitespace.  If 
+     * the input is not a string, the input will be returned untouched.
+    * @method trim
+    * @since 2.3.0
+    * @param s {string} the string to trim
+    * @return {string} the trimmed string
+     */
+    trim: function(s){
+        try {
+            return s.replace(/^\s+|\s+$/g, "");
+        } catch(e) {
+            return s;
+        }
+    },
+
+    /**
+     * Returns a new object containing all of the properties of
+     * all the supplied objects.  The properties from later objects
+     * will overwrite those in earlier objects.
+    * @method merge
+    * @since 2.3.0
+    * @param arguments {Object*} the objects to merge
+    * @return the new merged object
+     */
+    merge: function() {
+        var o={}, a=arguments, l=a.length, i;
+        for (i=0; i<l; i=i+1) {
+            L.augmentObject(o, a[i], true);
+        }
+        return o;
+    },
+
+    /**
+     * Executes the supplied function in the context of the supplied 
+     * object 'when' milliseconds later.  Executes the function a 
+     * single time unless periodic is set to true.
+    * @method later
+    * @since 2.4.0
+    * @param when {int} the number of milliseconds to wait until the fn 
+     * is executed
+    * @param o the context object
+    * @param fn {Function|String} the function to execute or the name of 
+     * the method in the 'o' object to execute
+    * @param data [Array] data that is provided to the function.  This accepts
+     * either a single item or an array.  If an array is provided, the
+     * function is executed with one parameter for each array item.  If
+     * you need to pass a single array parameter, it needs to be wrapped in
+     * an array [myarray]
+    * @param periodic {boolean} if true, executes continuously at supplied 
+     * interval until canceled
+    * @return a timer object. Call the cancel() method on this object to 
+     * stop the timer.
+     */
+    later: function(when, o, fn, data, periodic) {
+        when = when || 0; 
+        o = o || {};
+        var m=fn, d=data, f, r;
+
+        if (L.isString(fn)) {
+            m = o[fn];
+        }
+
+        if (!m) {
+            throw new TypeError("method undefined");
+        }
+
+        if (d && !L.isArray(d)) {
+            d = [data];
+        }
+
+        f = function() {
+            m.apply(o, d || NOTHING);
+        };
+
+        r = (periodic) ? setInterval(f, when) : setTimeout(f, when);
+
+        return {
+            interval: periodic,
+            cancel: function() {
+                if (this.interval) {
+                    clearInterval(r);
+                } else {
+                    clearTimeout(r);
+                }
+            }
+        };
+    },
+    
+    /**
+     * A convenience method for detecting a legitimate non-null value.
+     * Returns false for null/undefined/NaN, true for other values, 
+     * including 0/false/''
+    * @method isValue
+    * @since 2.3.0
+    * @param o {any} the item to test
+    * @return {boolean} true if it is not null/undefined/NaN || false
+     */
+    isValue: function(o) {
+        // return (o || o === false || o === 0 || o === ''); // Infinity fails
+return (L.isObject(o) || L.isString(o) || L.isNumber(o) || L.isBoolean(o));
+    }
+
+};
+
+/**
+ * Determines whether or not the property was added
+ * to the object instance.  Returns false if the property is not present
+ * in the object, or was inherited from the prototype.
+ * This abstraction is provided to enable hasOwnProperty for Safari 1.3.x.
+ * There is a discrepancy between YAHOO.lang.hasOwnProperty and
+ * Object.prototype.hasOwnProperty when the property is a primitive added to
+ * both the instance AND prototype with the same value:
+ * <pre>
+ * var A = function() {};
+ * A.prototype.foo = 'foo';
+ * var a = new A();
+ * a.foo = 'foo';
+ * alert(a.hasOwnProperty('foo')); // true
+ * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using fallback
+ * </pre>
+ * @method hasOwnProperty
+ * @param {any} o The object being testing
+ * @param prop {string} the name of the property to test
+ * @return {boolean} the result
+ */
+L.hasOwnProperty = (OP.hasOwnProperty) ?
+    function(o, prop) {
+        return o && o.hasOwnProperty(prop);
+    } : function(o, prop) {
+        return !L.isUndefined(o[prop]) && 
+                o.constructor.prototype[prop] !== o[prop];
+    };
+
+// new lang wins
+OB.augmentObject(L, OB, true);
+
+/*
+ * An alias for <a href="YAHOO.lang.html">YAHOO.lang</a>
+ * @class YAHOO.util.Lang
+ */
+YAHOO.util.Lang = L;
+ 
+/**
+ * Same as YAHOO.lang.augmentObject, except it only applies prototype 
+ * properties.  This is an alias for augmentProto.
+ * @see YAHOO.lang.augmentObject
+ * @method augment
+ * @static
+ * @param {Function} r  the object to receive the augmentation
+ * @param {Function} s  the object that supplies the properties to augment
+ * @param {String*|boolean}  arguments zero or more properties methods to 
+ *        augment the receiver with.  If none specified, everything
+ *        in the supplier will be used unless it would
+ *        overwrite an existing property in the receiver.  if true
+ *        is specified as the third parameter, all properties will
+ *        be applied and will overwrite an existing property in
+ *        the receiver
+ */
+L.augment = L.augmentProto;
+
+/**
+ * An alias for <a href="YAHOO.lang.html#augment">YAHOO.lang.augment</a>
+ * @for YAHOO
+ * @method augment
+ * @static
+ * @param {Function} r  the object to receive the augmentation
+ * @param {Function} s  the object that supplies the properties to augment
+ * @param {String*}  arguments zero or more properties methods to 
+ *        augment the receiver with.  If none specified, everything
+ *        in the supplier will be used unless it would
+ *        overwrite an existing property in the receiver
+ */
+YAHOO.augment = L.augmentProto;
+       
+/**
+ * An alias for <a href="YAHOO.lang.html#extend">YAHOO.lang.extend</a>
+ * @method extend
+ * @static
+ * @param {Function} subc   the object to modify
+ * @param {Function} superc the object to inherit
+ * @param {Object} overrides  additional properties/methods to add to the
+ *        subclass prototype.  These will override the
+ *        matching items obtained from the superclass if present.
+ */
+YAHOO.extend = L.extend;
+
+})();
+YAHOO.register("yahoo", YAHOO, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/yahoo/yahoo-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/yahoo/yahoo-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/yahoo/yahoo-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/yahoo/yahoo-min.js	(revision 1610)
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var D=function(H){var I=0;return parseFloat(H.replace(/\./g,function(){return(I++==1)?"":".";}));},G=navigator,F={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:G.cajaVersion,secure:false,os:null},C=navigator&&navigator.userAgent,E=window&&window.location,B=E&&E.href,A;F.secure=B&&(B.toLowerCase().indexOf("https")===0);if(C){if((/windows|win32/i).test(C)){F.os="windows";}else{if((/macintosh/i).test(C)){F.os="macintosh";}}if((/KHTML/).test(C)){F.webkit=1;}A=C.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){F.webkit=D(A[1]);if(/ Mobile\//.test(C)){F.mobile="Apple";}else{A=C.match(/NokiaN[^\/]*/);if(A){F.mobile=A[0];}}A=C.match(/AdobeAIR\/([^\s]*)/);if(A){F.air=A[0];}}if(!F.webkit){A=C.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){F.opera=D(A[1]);A=C.match(/Opera Mini[^;]*/);if(A){F.mobile=A[0];}}else{A=C.match(/MSIE\s([^;]*)/);if(A&&A[1]){F.ie=D(A[1]);}else{A=C.match(/Gecko\/([^\s]*)/);if(A){F.gecko=1;A=C.match(/rv:([^\s\)]*)/);if(A&&A[1]){F.gecko=D(A[1]);}}}}}}return F;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C++){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,A=Object.prototype,H="[object Array]",C="[object Function]",G="[object Object]",E=[],F=["toString","valueOf"],D={isArray:function(I){return A.toString.apply(I)===H;},isBoolean:function(I){return typeof I==="boolean";},isFunction:function(I){return(typeof I==="function")||A.toString.apply(I)===C;},isNull:function(I){return I===null;},isNumber:function(I){return typeof I==="number"&&isFinite(I);},isObject:function(I){return(I&&(typeof I==="object"||B.isFunction(I)))||false;},isString:function(I){return typeof I==="string";},isUndefined:function(I){return typeof I==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(K,J){var I,M,L;for(I=0;I<F.length;I=I+1){M=F[I];L=J[M];if(B.isFunction(L)&&L!=A[M]){K[M]=L;}}}:function(){},extend:function(L,M,K){if(!M||!L){throw new Error("extend failed, please check that "+"all dependencies are included.");}var J=function(){},I;J.prototype=M.prototype;L.prototype=new J();L.prototype.constructor=L;L.superclass=M.prototype;if(M.prototype.constructor==A.constructor){M.prototype.constructor=M;}if(K){for(I in K){if(B.hasOwnProperty(K,I)){L.prototype[I]=K[I];}}B._IEEnumFix(L.prototype,K);}},augmentObject:function(M,L){if(!L||!M){throw new Error("Absorb failed, verify dependencies.");}var I=arguments,K,N,J=I[2];if(J&&J!==true){for(K=2;K<I.length;K=K+1){M[I[K]]=L[I[K]];}}else{for(N in L){if(J||!(N in M)){M[N]=L[N];}}B._IEEnumFix(M,L);}},augmentProto:function(L,K){if(!K||!L){throw new Error("Augment failed, verify dependencies.");}var I=[L.prototype,K.prototype],J;for(J=2;J<arguments.length;J=J+1){I.push(arguments[J]);}B.augmentObject.apply(this,I);},dump:function(I,N){var K,M,P=[],Q="{...}",J="f(){...}",O=", ",L=" => ";if(!B.isObject(I)){return I+"";}else{if(I instanceof Date||("nodeType" in I&&"tagName" in I)){return I;}else{if(B.isFunction(I)){return J;}}}N=(B.isNumber(N))?N:3;if(B.isArray(I)){P.push("[");for(K=0,M=I.length;K<M;K=K+1){if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}if(P.length>1){P.pop();}P.push("]");}else{P.push("{");for(K in I){if(B.hasOwnProperty(I,K)){P.push(K+L);if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}}if(P.length>1){P.pop();}P.push("}");}return P.join("");},substitute:function(Y,J,R){var N,M,L,U,V,X,T=[],K,O="dump",S=" ",I="{",W="}",Q,P;for(;;){N=Y.lastIndexOf(I);if(N<0){break;}M=Y.indexOf(W,N);if(N+1>=M){break;}K=Y.substring(N+1,M);U=K;X=null;L=U.indexOf(S);if(L>-1){X=U.substring(L+1);U=U.substring(0,L);}V=J[U];if(R){V=R(U,V,X);}if(B.isObject(V)){if(B.isArray(V)){V=B.dump(V,parseInt(X,10));}else{X=X||"";Q=X.indexOf(O);if(Q>-1){X=X.substring(4);}P=V.toString();if(P===G||Q>-1){V=B.dump(V,parseInt(X,10));}else{V=P;}}}else{if(!B.isString(V)&&!B.isNumber(V)){V="~-"+T.length+"-~";T[T.length]=K;}}Y=Y.substring(0,N)+V+Y.substring(M+1);}for(N=T.length-1;N>=0;N=N-1){Y=Y.replace(new RegExp("~-"+N+"-~"),"{"+T[N]+"}","g");}return Y;},trim:function(I){try{return I.replace(/^\s+|\s+$/g,"");}catch(J){return I;}},merge:function(){var L={},J=arguments,I=J.length,K;for(K=0;K<I;K=K+1){B.augmentObject(L,J[K],true);}return L;},later:function(P,J,Q,L,M){P=P||0;J=J||{};var K=Q,O=L,N,I;if(B.isString(Q)){K=J[Q];}if(!K){throw new TypeError("method undefined");}if(O&&!B.isArray(O)){O=[L];}N=function(){K.apply(J,O||E);};I=(M)?setInterval(N,P):setTimeout(N,P);return{interval:M,cancel:function(){if(this.interval){clearInterval(I);}else{clearTimeout(I);}}};},isValue:function(I){return(B.isObject(I)||B.isString(I)||B.isNumber(I)||B.isBoolean(I));}};B.hasOwnProperty=(A.hasOwnProperty)?function(I,J){return I&&I.hasOwnProperty(J);}:function(I,J){return !B.isUndefined(I[J])&&I.constructor.prototype[J]!==I[J];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.8.0r4",build:"2449"});

Property changes on: tags/2.8.3/wb/include/yui/yahoo/yahoo-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/yahoo/README
===================================================================
--- tags/2.8.3/wb/include/yui/yahoo/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/yahoo/README	(revision 1610)
@@ -0,0 +1,95 @@
+YAHOO Global - Release Notes
+
+2.4.1
+
+No change
+
+2.4.0
+  * Added YAHOO.env.ua.mobile
+  * Removed the hasOwnProperty check in isArray to make it perform a bit better.
+  * YAHOO will be created/overwritten if YAHOO is undefined or the defined YAHOO is falsy
+
+2.3.1
+  * YAHOO.lang.dump casts primitives to strings
+
+2.3.0
+  * Added YAHOO.env.ua - browser detection
+  * Added YAHOO.lang.merge - object merge
+  * Added YAHOO.lang.trim - whitespace removal
+  * Added YAHOO.lang.augmentObject - mixins.  Renamed augment to augmentProto and 
+    made augment an alias to augmentProto
+  * isObject/isArray return false rather than null when testing null
+
+2.2.2
+
+  * No change
+
+2.2.1
+
+  * YAHOO.lang.isObject returns false for null
+  * YAHOO.lang.isArray no longer generates an error when the argument is null/undefined
+  * Better error messages for YAHOO.lang.augment/extend failures that are usually due 
+    to missing dependencies.
+
+2.2.0a
+
+  * Fixed a typo that prevented the proper detection of multiple YAHOO_config listeners
+
+2.2.0
+
+  * Added configuration of the library via a YAHOO_config object defined
+    prior to the reference to the library.  Currently it supports a listener
+    parameter that will execute every time a new module YUI module is loaded.
+
+  * Added YAHOO.register & YAHOO.getVersion for version stamping modules.
+  
+  * Added YAHOO.env which is the home for the information about the loaded
+    YUI modules, and will host more info later.
+    
+  * YAHOO.util.Lang was relocated to this package and is now YAHOO.lang.
+    YAHOO.extend and YAHOO.augment have moved to env (the original
+    functions still work).
+
+0.12.2
+
+  * No change
+
+0.12.1
+
+  * No change
+
+0.12.0
+
+   * Added YAHOO.augment, which copies all or part of the prototype of one
+     object to another.  
+
+   * YAHOO.namespace now can create multiple namespaces.
+
+   * Added an optional third parameter to YAHOO.extend: overrides.  It takes
+     an object literal of properties/methods to apply to the subclass
+     prototype, overriding the superclass if present.
+
+0.11.4
+
+   * Changed window.YAHOO = window.YAHOO || {} to 
+     if (typeof YAHOO == "undefined") YAHOO = {} because the previous statement
+     contributed to a memory leak in IE6 when the library was hosted in an 
+     iframe.
+
+0.11.3
+
+   * Changed var YAHOO = window.YAHOO || {} to window.YAHOO = window.YAHOO || {}.
+     This fixes an issue in IE where YAHOO would get overwritten if previously
+     defined via array notation (window["YAHOO"]).
+
+0.11.0
+
+   * Added YAHOO.extend, which provides an easy way to assign the prototype,
+     constructor, and superclass properties inheritance properties.  It also
+     prevents the constructor of the superclass from being exectuted twice.
+
+0.10.0
+
+   * Added YAHOO.log that provides a safe way to plumb logging statements in
+     code that will work if the logging component isn't available.
+

Property changes on: tags/2.8.3/wb/include/yui/yahoo/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/event/event-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/event/event-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/event/event-debug.js	(revision 1610)
@@ -0,0 +1,2524 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+
+/**
+ * The CustomEvent class lets you define events for your application
+ * that can be subscribed to by one or more independent component.
+ *
+ * @param {String}  type The type of event, which is passed to the callback
+ *                  when the event fires
+ * @param {Object}  context The context the event will fire from.  "this" will
+ *                  refer to this object in the callback.  Default value: 
+ *                  the window object.  The listener can override this.
+ * @param {boolean} silent pass true to prevent the event from writing to
+ *                  the debugsystem
+ * @param {int}     signature the signature that the custom event subscriber
+ *                  will receive. YAHOO.util.CustomEvent.LIST or 
+ *                  YAHOO.util.CustomEvent.FLAT.  The default is
+ *                  YAHOO.util.CustomEvent.LIST.
+ * @param fireOnce {boolean} If configured to fire once, the custom event 
+ * will only notify subscribers a single time regardless of how many times 
+ * the event is fired.  In addition, new subscribers will be notified 
+ * immediately if the event has already been fired.
+ * @namespace YAHOO.util
+ * @class CustomEvent
+ * @constructor
+ */
+YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
+
+    /**
+     * The type of event, returned to subscribers when the event fires
+    * @property type
+    * @type string
+     */
+    this.type = type;
+
+    /**
+     * The context the event will fire from by default. Defaults to the window obj.
+    * @property scope
+    * @type object
+     */
+    this.scope = context || window;
+
+    /**
+     * By default all custom events are logged in the debug build. Set silent to true 
+     * to disable debug output for this event.
+    * @property silent
+    * @type boolean
+     */
+    this.silent = silent;
+
+    /**
+     * If configured to fire once, the custom event will only notify subscribers
+     * a single time regardless of how many times the event is fired.  In addition,
+     * new subscribers will be notified immediately if the event has already been
+     * fired.
+    * @property fireOnce
+    * @type boolean
+    * @default false
+     */
+    this.fireOnce = fireOnce;
+
+    /**
+     * Indicates whether or not this event has ever been fired.
+    * @property fired
+    * @type boolean
+    * @default false
+     */
+    this.fired = false;
+
+    /**
+     * For fireOnce events the arguments the event was fired with are stored
+     * so that new subscribers get the proper payload.
+    * @property firedWith
+    * @type Array
+     */
+    this.firedWith = null;
+
+    /**
+     * Custom events support two styles of arguments provided to the event
+     * subscribers.  
+     * <ul>
+     * <li>YAHOO.util.CustomEvent.LIST: 
+     *   <ul>
+     *   <li>param1: event name</li>
+     *   <li>param2: array of arguments sent to fire</li>
+     *   <li>param3: <optional> a custom object supplied by the subscriber</li>
+     *   </ul>
+     * </li>
+     * <li>YAHOO.util.CustomEvent.FLAT
+     *   <ul>
+     *   <li>param1: the first argument passed to fire.  If you need to
+     *           pass multiple parameters, use and array or object literal</li>
+     *   <li>param2: <optional> a custom object supplied by the subscriber</li>
+     *   </ul>
+     * </li>
+     * </ul>
+     *   @property signature
+     *   @type int
+     */
+    this.signature = signature || YAHOO.util.CustomEvent.LIST;
+
+    /**
+     * The subscribers to this event
+    * @property subscribers
+    * @type Subscriber[]
+     */
+    this.subscribers = [];
+
+    if (!this.silent) {
+        YAHOO.log( "Creating " + this, "info", "Event" );
+    }
+
+    var onsubscribeType = "_YUICEOnSubscribe";
+
+    // Only add subscribe events for events that are not generated by 
+    // CustomEvent
+    if (type !== onsubscribeType) {
+
+        /**
+         * Custom events provide a custom event that fires whenever there is
+         * a new subscriber to the event.  This provides an opportunity to
+         * handle the case where there is a non-repeating event that has
+         * already fired has a new subscriber.  
+         *
+        * @event subscribeEvent
+        * @type YAHOO.util.CustomEvent
+        * @param fn {Function} The function to execute
+        * @param obj <Object> An object to be passed along when the event fires. 
+         * Defaults to the custom event.
+        * @param override <boolean|Object> If true, the obj passed in becomes the 
+         * execution context of the listener. If an object, that object becomes 
+         * the execution context. Defaults to the custom event.
+         */
+        this.subscribeEvent = 
+                new YAHOO.util.CustomEvent(onsubscribeType, this, true);
+
+    } 
+
+
+    /**
+     * In order to make it possible to execute the rest of the subscriber
+     * stack when one thows an exception, the subscribers exceptions are
+     * caught.  The most recent exception is stored in this property
+    * @property lastError
+    * @type Error
+     */
+    this.lastError = null;
+};
+
+/**
+ * Subscriber listener sigature constant.  The LIST type returns three
+ * parameters: the event type, the array of args passed to fire, and
+ * the optional custom object
+ * @property YAHOO.util.CustomEvent.LIST
+ * @static
+ * @type int
+ */
+YAHOO.util.CustomEvent.LIST = 0;
+
+/**
+ * Subscriber listener sigature constant.  The FLAT type returns two
+ * parameters: the first argument passed to fire and the optional 
+ * custom object
+ * @property YAHOO.util.CustomEvent.FLAT
+ * @static
+ * @type int
+ */
+YAHOO.util.CustomEvent.FLAT = 1;
+
+YAHOO.util.CustomEvent.prototype = {
+
+    /**
+     * Subscribes the caller to this event
+    * @method subscribe
+    * @param {Function} fn        The function to execute
+    * @param {Object}   obj       An object to be passed along when the event fires.
+     * overrideContext <boolean|Object> If true, the obj passed in becomes the execution 
+     * context of the listener. If an object, that object becomes the execution context.
+     */
+    subscribe: function(fn, obj, overrideContext) {
+
+        if (!fn) {
+throw new Error("Invalid callback for subscriber to '" + this.type + "'");
+        }
+
+        if (this.subscribeEvent) {
+            this.subscribeEvent.fire(fn, obj, overrideContext);
+        }
+
+        var s = new YAHOO.util.Subscriber(fn, obj, overrideContext);
+
+        if (this.fireOnce && this.fired) {
+            this.notify(s, this.firedWith);
+        } else {
+            this.subscribers.push(s);
+        }
+    },
+
+    /**
+     * Unsubscribes subscribers.
+    * @method unsubscribe
+    * @param {Function} fn  The subscribed function to remove, if not supplied
+     *                       all will be removed
+    * @param {Object}   obj  The custom object passed to subscribe.  This is
+     *                        optional, but if supplied will be used to
+     *                        disambiguate multiple listeners that are the same
+     *                        (e.g., you subscribe many object using a function
+     *                        that lives on the prototype)
+    * @return {boolean} True if the subscriber was found and detached.
+     */
+    unsubscribe: function(fn, obj) {
+
+        if (!fn) {
+            return this.unsubscribeAll();
+        }
+
+        var found = false;
+        for (var i=0, len=this.subscribers.length; i<len; ++i) {
+            var s = this.subscribers[i];
+            if (s && s.contains(fn, obj)) {
+                this._delete(i);
+                found = true;
+            }
+        }
+
+        return found;
+    },
+
+    /**
+     * Notifies the subscribers.  The callback functions will be executed
+     * from the context specified when the event was created, and with the 
+     * following parameters:
+     *   <ul>
+     *   <li>The type of event</li>
+     *   <li>All of the arguments fire() was executed with as an array</li>
+     *   <li>The custom object (if any) that was passed into the subscribe() 
+     *       method</li>
+     *   </ul>
+    * @method fire 
+    * @param {Object*} arguments an arbitrary set of parameters to pass to 
+     *                            the handler.
+    * @return {boolean} false if one of the subscribers returned false, 
+     *                   true otherwise
+     */
+    fire: function() {
+
+        this.lastError = null;
+
+        var errors = [],
+            len=this.subscribers.length;
+
+
+        var args=[].slice.call(arguments, 0), ret=true, i, rebuild=false;
+
+        if (this.fireOnce) {
+            if (this.fired) {
+                YAHOO.log('fireOnce event has already fired: ' + this.type);
+                return true;
+            } else {
+                this.firedWith = args;
+            }
+        }
+
+        this.fired = true;
+
+        if (!len && this.silent) {
+            //YAHOO.log('DEBUG no subscribers');
+            return true;
+        }
+
+        if (!this.silent) {
+            YAHOO.log( "Firing "       + this  + ", " + 
+                       "args: "        + args  + ", " +
+                       "subscribers: " + len,                 
+                       "info", "Event"                  );
+        }
+
+        // make a copy of the subscribers so that there are
+        // no index problems if one subscriber removes another.
+        var subs = this.subscribers.slice();
+
+        for (i=0; i<len; ++i) {
+            var s = subs[i];
+            if (!s) {
+                rebuild=true;
+            } else {
+
+                ret = this.notify(s, args);
+
+                if (false === ret) {
+                    if (!this.silent) {
+                        YAHOO.log("Event stopped, sub " + i + " of " + len, "info", "Event");
+                    }
+
+                    break;
+                }
+            }
+        }
+
+        return (ret !== false);
+    },
+
+    notify: function(s, args) {
+
+        var ret, param=null, scope = s.getScope(this.scope),
+                 throwErrors = YAHOO.util.Event.throwErrors;
+
+        if (!this.silent) {
+            YAHOO.log( this.type + "-> " + s, "info", "Event" );
+        }
+
+        if (this.signature == YAHOO.util.CustomEvent.FLAT) {
+
+            if (args.length > 0) {
+                param = args[0];
+            }
+
+            try {
+                ret = s.fn.call(scope, param, s.obj);
+            } catch(e) {
+                this.lastError = e;
+                // errors.push(e);
+                YAHOO.log(this + " subscriber exception: " + e, "error", "Event");
+                if (throwErrors) {
+                    throw e;
+                }
+            }
+        } else {
+            try {
+                ret = s.fn.call(scope, this.type, args, s.obj);
+            } catch(ex) {
+                this.lastError = ex;
+                YAHOO.log(this + " subscriber exception: " + ex, "error", "Event");
+                if (throwErrors) {
+                    throw ex;
+                }
+            }
+        }
+
+        return ret;
+    },
+
+    /**
+     * Removes all listeners
+    * @method unsubscribeAll
+    * @return {int} The number of listeners unsubscribed
+     */
+    unsubscribeAll: function() {
+        var l = this.subscribers.length, i;
+        for (i=l-1; i>-1; i--) {
+            this._delete(i);
+        }
+
+        this.subscribers=[];
+
+        return l;
+    },
+
+    /**
+    * @method _delete
+    * @private
+     */
+    _delete: function(index) {
+        var s = this.subscribers[index];
+        if (s) {
+            delete s.fn;
+            delete s.obj;
+        }
+
+        // this.subscribers[index]=null;
+        this.subscribers.splice(index, 1);
+    },
+
+    /**
+    * @method toString
+     */
+    toString: function() {
+         return "CustomEvent: " + "'" + this.type  + "', " + 
+             "context: " + this.scope;
+
+    }
+};
+
+/////////////////////////////////////////////////////////////////////
+
+/**
+ * Stores the subscriber information to be used when the event fires.
+ * @param {Function} fn       The function to execute
+ * @param {Object}   obj      An object to be passed along when the event fires
+ * @param {boolean}  overrideContext If true, the obj passed in becomes the execution
+ *                            context of the listener
+ * @class Subscriber
+ * @constructor
+ */
+YAHOO.util.Subscriber = function(fn, obj, overrideContext) {
+
+    /**
+     * The callback that will be execute when the event fires
+    * @property fn
+    * @type function
+     */
+    this.fn = fn;
+
+    /**
+     * An optional custom object that will passed to the callback when
+     * the event fires
+    * @property obj
+    * @type object
+     */
+    this.obj = YAHOO.lang.isUndefined(obj) ? null : obj;
+
+    /**
+     * The default execution context for the event listener is defined when the
+     * event is created (usually the object which contains the event).
+     * By setting overrideContext to true, the execution context becomes the custom
+     * object passed in by the subscriber.  If overrideContext is an object, that 
+     * object becomes the context.
+    * @property overrideContext
+    * @type boolean|object
+     */
+    this.overrideContext = overrideContext;
+
+};
+
+/**
+ * Returns the execution context for this listener.  If overrideContext was set to true
+ * the custom obj will be the context.  If overrideContext is an object, that is the
+ * context, otherwise the default context will be used.
+ * @method getScope
+ * @param {Object} defaultScope the context to use if this listener does not
+ *                              override it.
+ */
+YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) {
+    if (this.overrideContext) {
+        if (this.overrideContext === true) {
+            return this.obj;
+        } else {
+            return this.overrideContext;
+        }
+    }
+    return defaultScope;
+};
+
+/**
+ * Returns true if the fn and obj match this objects properties.
+ * Used by the unsubscribe method to match the right subscriber.
+ *
+ * @method contains
+ * @param {Function} fn the function to execute
+ * @param {Object} obj an object to be passed along when the event fires
+ * @return {boolean} true if the supplied arguments match this 
+ *                   subscriber's signature.
+ */
+YAHOO.util.Subscriber.prototype.contains = function(fn, obj) {
+    if (obj) {
+        return (this.fn == fn && this.obj == obj);
+    } else {
+        return (this.fn == fn);
+    }
+};
+
+/**
+ * @method toString
+ */
+YAHOO.util.Subscriber.prototype.toString = function() {
+    return "Subscriber { obj: " + this.obj  + 
+           ", overrideContext: " +  (this.overrideContext || "no") + " }";
+};
+
+/**
+ * The Event Utility provides utilities for managing DOM Events and tools
+ * for building event systems
+ *
+ * @module event
+ * @title Event Utility
+ * @namespace YAHOO.util
+ * @requires yahoo
+ */
+
+// The first instance of Event will win if it is loaded more than once.
+// @TODO this needs to be changed so that only the state data that needs to
+// be preserved is kept, while methods are overwritten/added as needed.
+// This means that the module pattern can't be used.
+if (!YAHOO.util.Event) {
+
+/**
+ * The event utility provides functions to add and remove event listeners,
+ * event cleansing.  It also tries to automatically remove listeners it
+ * registers during the unload event.
+ *
+ * @class Event
+ * @static
+ */
+    YAHOO.util.Event = function() {
+
+        /**
+         * True after the onload event has fired
+        * @property loadComplete
+        * @type boolean
+        * @static
+        * @private
+         */
+        var loadComplete =  false,
+
+        /**
+         * Cache of wrapped listeners
+        * @property listeners
+        * @type array
+        * @static
+        * @private
+         */
+        listeners = [],
+
+
+        /**
+         * User-defined unload function that will be fired before all events
+         * are detached
+        * @property unloadListeners
+        * @type array
+        * @static
+        * @private
+         */
+        unloadListeners = [],
+
+        /**
+         * The number of times to poll after window.onload.  This number is
+         * increased if additional late-bound handlers are requested after
+         * the page load.
+        * @property retryCount
+        * @static
+        * @private
+         */
+        retryCount = 0,
+
+        /**
+         * onAvailable listeners
+        * @property onAvailStack
+        * @static
+        * @private
+         */
+        onAvailStack = [],
+
+        /**
+         * Counter for auto id generation
+        * @property counter
+        * @static
+        * @private
+         */
+        counter = 0,
+        
+        /**
+         * Normalized keycodes for webkit/safari
+        * @property webkitKeymap
+        * @type {int: int}
+        * @private
+        * @static
+        * @final
+         */
+         webkitKeymap = {
+            63232: 38, // up
+            63233: 40, // down
+            63234: 37, // left
+            63235: 39, // right
+            63276: 33, // page up
+            63277: 34, // page down
+            25: 9      // SHIFT-TAB (Safari provides a different key code in
+                       // this case, even though the shiftKey modifier is set)
+        },
+
+		isIE = YAHOO.env.ua.ie,
+
+        // String constants used by the addFocusListener and removeFocusListener methods
+		
+       	FOCUSIN = "focusin",
+       	FOCUSOUT = "focusout";
+
+        return {
+
+            /**
+             * The number of times we should look for elements that are not
+             * in the DOM at the time the event is requested after the document
+             * has been loaded.  The default is 500@amp;40 ms, so it will poll
+             * for 20 seconds or until all outstanding handlers are bound
+             * (whichever comes first).
+            * @property POLL_RETRYS
+            * @type int
+            * @static
+            * @final
+             */
+            POLL_RETRYS: 500,
+
+            /**
+             * The poll interval in milliseconds
+            * @property POLL_INTERVAL
+            * @type int
+            * @static
+            * @final
+             */
+            POLL_INTERVAL: 40,
+
+            /**
+             * Element to bind, int constant
+            * @property EL
+            * @type int
+            * @static
+            * @final
+             */
+            EL: 0,
+
+            /**
+             * Type of event, int constant
+            * @property TYPE
+            * @type int
+            * @static
+            * @final
+             */
+            TYPE: 1,
+
+            /**
+             * Function to execute, int constant
+            * @property FN
+            * @type int
+            * @static
+            * @final
+             */
+            FN: 2,
+
+            /**
+             * Function wrapped for context correction and cleanup, int constant
+            * @property WFN
+            * @type int
+            * @static
+            * @final
+             */
+            WFN: 3,
+
+            /**
+             * Object passed in by the user that will be returned as a 
+             * parameter to the callback, int constant.  Specific to
+             * unload listeners
+            * @property OBJ
+            * @type int
+            * @static
+            * @final
+             */
+            UNLOAD_OBJ: 3,
+
+            /**
+             * Adjusted context, either the element we are registering the event
+             * on or the custom object passed in by the listener, int constant
+            * @property ADJ_SCOPE
+            * @type int
+            * @static
+            * @final
+             */
+            ADJ_SCOPE: 4,
+
+            /**
+             * The original obj passed into addListener
+            * @property OBJ
+            * @type int
+            * @static
+            * @final
+             */
+            OBJ: 5,
+
+            /**
+             * The original context parameter passed into addListener
+            * @property OVERRIDE
+            * @type int
+            * @static
+            * @final
+             */
+            OVERRIDE: 6,
+
+            /**
+             * The original capture parameter passed into addListener
+            * @property CAPTURE
+            * @type int
+            * @static
+            * @final
+             */
+			CAPTURE: 7,
+
+            /**
+             * addListener/removeListener can throw errors in unexpected scenarios.
+             * These errors are suppressed, the method returns false, and this property
+             * is set
+            * @property lastError
+            * @static
+            * @type Error
+             */
+            lastError: null,
+
+            /**
+             * Safari detection
+            * @property isSafari
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.webkit
+             */
+            isSafari: YAHOO.env.ua.webkit,
+            
+            /**
+             * webkit version
+            * @property webkit
+            * @type string
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.webkit
+             */
+            webkit: YAHOO.env.ua.webkit,
+            
+            /**
+             * IE detection 
+            * @property isIE
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.ie
+             */
+            isIE: isIE,
+
+            /**
+             * poll handle
+            * @property _interval
+            * @static
+            * @private
+             */
+            _interval: null,
+
+            /**
+             * document readystate poll handle
+            * @property _dri
+            * @static
+            * @private
+             */
+             _dri: null,
+
+
+            /**
+             * Map of special event types
+            * @property _specialTypes
+            * @static
+            * @private
+             */
+			_specialTypes: {
+				focusin: (isIE ? "focusin" : "focus"),
+				focusout: (isIE ? "focusout" : "blur")
+			},
+
+
+            /**
+             * True when the document is initially usable
+            * @property DOMReady
+            * @type boolean
+            * @static
+             */
+            DOMReady: false,
+
+            /**
+             * Errors thrown by subscribers of custom events are caught
+             * and the error message is written to the debug console.  If
+             * this property is set to true, it will also re-throw the
+             * error.
+            * @property throwErrors
+            * @type boolean
+            * @default false
+             */
+            throwErrors: false,
+
+
+            /**
+            * @method startInterval
+            * @static
+            * @private
+             */
+            startInterval: function() {
+                if (!this._interval) {
+                    // var self = this;
+                    // var callback = function() { self._tryPreloadAttach(); };
+                    // this._interval = setInterval(callback, this.POLL_INTERVAL);
+                    this._interval = YAHOO.lang.later(this.POLL_INTERVAL, this, this._tryPreloadAttach, null, true);
+                }
+            },
+
+            /**
+             * Executes the supplied callback when the item with the supplied
+             * id is found.  This is meant to be used to execute behavior as
+             * soon as possible as the page loads.  If you use this after the
+             * initial page load it will poll for a fixed time for the element.
+             * The number of times it will poll and the frequency are
+             * configurable.  By default it will poll for 10 seconds.
+             *
+             * <p>The callback is executed with a single parameter:
+             * the custom object parameter, if provided.</p>
+             *
+            * @method onAvailable
+             *
+            * @param {string||string[]}   id the id of the element, or an array
+             * of ids to look for.
+            * @param {function} fn what to execute when the element is found.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj, if set to an object it
+             *                   will execute in the context of that object
+            * @param checkContent {boolean} check child node readiness (onContentReady)
+            * @static
+             */
+            onAvailable: function(id, fn, obj, overrideContext, checkContent) {
+
+                var a = (YAHOO.lang.isString(id)) ? [id] : id;
+
+                for (var i=0; i<a.length; i=i+1) {
+                    onAvailStack.push({id:         a[i], 
+                                       fn:         fn, 
+                                       obj:        obj, 
+                                       overrideContext:   overrideContext, 
+                                       checkReady: checkContent });
+                }
+
+                retryCount = this.POLL_RETRYS;
+
+                this.startInterval();
+            },
+
+            /**
+             * Works the same way as onAvailable, but additionally checks the
+             * state of sibling elements to determine if the content of the
+             * available element is safe to modify.
+             *
+             * <p>The callback is executed with a single parameter:
+             * the custom object parameter, if provided.</p>
+             *
+            * @method onContentReady
+             *
+            * @param {string}   id the id of the element to look for.
+            * @param {function} fn what to execute when the element is ready.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj.  If an object, fn will
+             *                   exectute in the context of that object
+             *
+            * @static
+             */
+            onContentReady: function(id, fn, obj, overrideContext) {
+                this.onAvailable(id, fn, obj, overrideContext, true);
+            },
+
+            /**
+             * Executes the supplied callback when the DOM is first usable.  This
+             * will execute immediately if called after the DOMReady event has
+             * fired.   @todo the DOMContentReady event does not fire when the
+             * script is dynamically injected into the page.  This means the
+             * DOMReady custom event will never fire in FireFox or Opera when the
+             * library is injected.  It _will_ fire in Safari, and the IE 
+             * implementation would allow for us to fire it if the defered script
+             * is not available.  We want this to behave the same in all browsers.
+             * Is there a way to identify when the script has been injected 
+             * instead of included inline?  Is there a way to know whether the 
+             * window onload event has fired without having had a listener attached 
+             * to it when it did so?
+             *
+             * <p>The callback is a CustomEvent, so the signature is:</p>
+             * <p>type &lt;string&gt;, args &lt;array&gt;, customobject &lt;object&gt;</p>
+             * <p>For DOMReady events, there are no fire argments, so the
+             * signature is:</p>
+             * <p>"DOMReady", [], obj</p>
+             *
+             *
+            * @method onDOMReady
+             *
+            * @param {function} fn what to execute when the element is found.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj, if set to an object it
+             *                   will execute in the context of that object
+             *
+            * @static
+             */
+            // onDOMReady: function(fn, obj, overrideContext) {
+            onDOMReady: function() {
+                this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent, arguments);
+            },
+
+
+            /**
+             * Appends an event handler
+             *
+            * @method _addListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {String}   sType     The type of event to append
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @param {boolen}      capture capture or bubble phase
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @private
+            * @static
+             */
+            _addListener: function(el, sType, fn, obj, overrideContext, bCapture) {
+
+                if (!fn || !fn.call) {
+                    YAHOO.log(sType + " addListener failed, invalid callback", "error", "Event");
+                    return false;
+                }
+
+                // The el argument can be an array of elements or element ids.
+                if ( this._isValidCollection(el)) {
+                    var ok = true;
+                    for (var i=0,len=el.length; i<len; ++i) {
+                        ok = this.on(el[i], 
+                                       sType, 
+                                       fn, 
+                                       obj, 
+                                       overrideContext) && ok;
+                    }
+                    return ok;
+
+                } else if (YAHOO.lang.isString(el)) {
+                    var oEl = this.getEl(el);
+                    // If the el argument is a string, we assume it is 
+                    // actually the id of the element.  If the page is loaded
+                    // we convert el to the actual element, otherwise we 
+                    // defer attaching the event until onload event fires
+
+                    // check to see if we need to delay hooking up the event 
+                    // until after the page loads.
+                    if (oEl) {
+                        el = oEl;
+                    } else {
+                        // defer adding the event until the element is available
+                        this.onAvailable(el, function() {
+                           YAHOO.util.Event._addListener(el, sType, fn, obj, overrideContext, bCapture);
+                        });
+
+                        return true;
+                    }
+                }
+
+                // Element should be an html element or an array if we get 
+                // here.
+                if (!el) {
+                    // this.logger.debug("unable to attach event " + sType);
+                    return false;
+                }
+
+                // we need to make sure we fire registered unload events 
+                // prior to automatically unhooking them.  So we hang on to 
+                // these instead of attaching them to the window and fire the
+                // handles explicitly during our one unload event.
+                if ("unload" == sType && obj !== this) {
+                    unloadListeners[unloadListeners.length] =
+                            [el, sType, fn, obj, overrideContext];
+                    return true;
+                }
+
+                // this.logger.debug("Adding handler: " + el + ", " + sType);
+
+                // if the user chooses to override the context, we use the custom
+                // object passed in, otherwise the executing context will be the
+                // HTML element that the event is registered on
+                var context = el;
+                if (overrideContext) {
+                    if (overrideContext === true) {
+                        context = obj;
+                    } else {
+                        context = overrideContext;
+                    }
+                }
+
+                // wrap the function so we can return the obj object when
+                // the event fires;
+                var wrappedFn = function(e) {
+                        return fn.call(context, YAHOO.util.Event.getEvent(e, el), 
+                                obj);
+                    };
+
+                var li = [el, sType, fn, wrappedFn, context, obj, overrideContext, bCapture];
+                var index = listeners.length;
+                // cache the listener so we can try to automatically unload
+                listeners[index] = li;
+
+                try {
+                    this._simpleAdd(el, sType, wrappedFn, bCapture);
+                } catch(ex) {
+                    // handle an error trying to attach an event.  If it fails
+                    // we need to clean up the cache
+                    this.lastError = ex;
+                    this.removeListener(el, sType, fn);
+                    return false;
+                }
+
+                return true;
+                
+            },
+
+            /**
+             * Checks to see if the type requested is a special type 
+			 * (as defined by the _specialTypes hash), and (if so) returns 
+			 * the special type name.
+             *
+            * @method _getType
+             *
+            * @param {String}   sType     The type to look up
+            * @private
+             */
+			_getType: function (type) {
+			
+				return this._specialTypes[type] || type;
+				
+			},
+
+
+            /**
+             * Appends an event handler
+             *
+            * @method addListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {String}   sType     The type of event to append
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+             */
+            addListener: function (el, sType, fn, obj, overrideContext) {
+
+				var capture = ((sType == FOCUSIN || sType == FOCUSOUT) && !YAHOO.env.ua.ie) ? true : false;
+
+                return this._addListener(el, this._getType(sType), fn, obj, overrideContext, capture);
+
+        	},
+
+
+            /**
+             * Attaches a focusin event listener to the specified element for 
+ 			 * the purpose of listening for the focus event on the element's 
+             * descendants.
+            * @method addFocusListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+			* @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+             */
+            addFocusListener: function (el, fn, obj, overrideContext) {
+                return this.on(el, FOCUSIN, fn, obj, overrideContext);
+            },          
+
+
+            /**
+             * Removes a focusin event listener to the specified element for 
+			 * the purpose of listening for the focus event on the element's 
+             * descendants.
+             *
+            * @method removeFocusListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.removeListener and specify "focusin" as the event type.
+             */
+            removeFocusListener: function (el, fn) { 
+                return this.removeListener(el, FOCUSIN, fn);
+            },
+
+            /**
+             * Attaches a focusout event listener to the specified element for 
+			 * the purpose of listening for the blur event on the element's 
+			 * descendants.
+             *
+            * @method addBlurListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+             */
+            addBlurListener: function (el, fn, obj, overrideContext) {
+                return this.on(el, FOCUSOUT, fn, obj, overrideContext);
+            },          
+
+            /**
+             * Removes a focusout event listener to the specified element for 
+			 * the purpose of listening for the blur event on the element's 
+			 * descendants.
+             *
+            * @method removeBlurListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.removeListener and specify "focusout" as the event type.
+             */
+            removeBlurListener: function (el, fn) { 
+                return this.removeListener(el, FOCUSOUT, fn);
+            },
+
+            /**
+             * Removes an event listener
+             *
+            * @method removeListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {String} sType the type of event to remove.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+             */
+            removeListener: function(el, sType, fn) {
+                var i, len, li;
+
+				sType = this._getType(sType);
+
+                // The el argument can be a string
+                if (typeof el == "string") {
+                    el = this.getEl(el);
+                // The el argument can be an array of elements or element ids.
+                } else if ( this._isValidCollection(el)) {
+                    var ok = true;
+                    for (i=el.length-1; i>-1; i--) {
+                        ok = ( this.removeListener(el[i], sType, fn) && ok );
+                    }
+                    return ok;
+                }
+
+                if (!fn || !fn.call) {
+                    // this.logger.debug("Error, function is not valid " + fn);
+                    //return false;
+                    return this.purgeElement(el, false, sType);
+                }
+
+                if ("unload" == sType) {
+
+                    for (i=unloadListeners.length-1; i>-1; i--) {
+                        li = unloadListeners[i];
+                        if (li && 
+                            li[0] == el && 
+                            li[1] == sType && 
+                            li[2] == fn) {
+                                unloadListeners.splice(i, 1);
+                                // unloadListeners[i]=null;
+                                return true;
+                        }
+                    }
+
+                    return false;
+                }
+
+                var cacheItem = null;
+
+                // The index is a hidden parameter; needed to remove it from
+                // the method signature because it was tempting users to
+                // try and take advantage of it, which is not possible.
+                var index = arguments[3];
+  
+                if ("undefined" === typeof index) {
+                    index = this._getCacheIndex(listeners, el, sType, fn);
+                }
+
+                if (index >= 0) {
+                    cacheItem = listeners[index];
+                }
+
+                if (!el || !cacheItem) {
+                    // this.logger.debug("cached listener not found");
+                    return false;
+                }
+
+                // this.logger.debug("Removing handler: " + el + ", " + sType);
+
+				var bCapture = cacheItem[this.CAPTURE] === true ? true : false;
+
+                try {
+                    this._simpleRemove(el, sType, cacheItem[this.WFN], bCapture);
+                } catch(ex) {
+                    this.lastError = ex;
+                    return false;
+                }
+
+                // removed the wrapped handler
+                delete listeners[index][this.WFN];
+                delete listeners[index][this.FN];
+                listeners.splice(index, 1);
+                // listeners[index]=null;
+
+                return true;
+
+            },
+
+            /**
+             * Returns the event's target element.  Safari sometimes provides
+             * a text node, and this is automatically resolved to the text
+             * node's parent so that it behaves like other browsers.
+            * @method getTarget
+            * @param {Event} ev the event
+            * @param {boolean} resolveTextNode when set to true the target's
+             *                  parent will be returned if the target is a 
+             *                  text node.  @deprecated, the text node is
+             *                  now resolved automatically
+            * @return {HTMLElement} the event's target
+            * @static
+             */
+            getTarget: function(ev, resolveTextNode) {
+                var t = ev.target || ev.srcElement;
+                return this.resolveTextNode(t);
+            },
+
+            /**
+             * In some cases, some browsers will return a text node inside
+             * the actual element that was targeted.  This normalizes the
+             * return value for getTarget and getRelatedTarget.
+            * @method resolveTextNode
+            * @param {HTMLElement} node node to resolve
+            * @return {HTMLElement} the normized node
+            * @static
+             */
+            resolveTextNode: function(n) {
+                try {
+                    if (n && 3 == n.nodeType) {
+                        return n.parentNode;
+                    }
+                } catch(e) { }
+
+                return n;
+            },
+
+            /**
+             * Returns the event's pageX
+            * @method getPageX
+            * @param {Event} ev the event
+            * @return {int} the event's pageX
+            * @static
+             */
+            getPageX: function(ev) {
+                var x = ev.pageX;
+                if (!x && 0 !== x) {
+                    x = ev.clientX || 0;
+
+                    if ( this.isIE ) {
+                        x += this._getScrollLeft();
+                    }
+                }
+
+                return x;
+            },
+
+            /**
+             * Returns the event's pageY
+            * @method getPageY
+            * @param {Event} ev the event
+            * @return {int} the event's pageY
+            * @static
+             */
+            getPageY: function(ev) {
+                var y = ev.pageY;
+                if (!y && 0 !== y) {
+                    y = ev.clientY || 0;
+
+                    if ( this.isIE ) {
+                        y += this._getScrollTop();
+                    }
+                }
+
+
+                return y;
+            },
+
+            /**
+             * Returns the pageX and pageY properties as an indexed array.
+            * @method getXY
+            * @param {Event} ev the event
+            * @return {[x, y]} the pageX and pageY properties of the event
+            * @static
+             */
+            getXY: function(ev) {
+                return [this.getPageX(ev), this.getPageY(ev)];
+            },
+
+            /**
+             * Returns the event's related target 
+            * @method getRelatedTarget
+            * @param {Event} ev the event
+            * @return {HTMLElement} the event's relatedTarget
+            * @static
+             */
+            getRelatedTarget: function(ev) {
+                var t = ev.relatedTarget;
+                if (!t) {
+                    if (ev.type == "mouseout") {
+                        t = ev.toElement;
+                    } else if (ev.type == "mouseover") {
+                        t = ev.fromElement;
+                    }
+                }
+
+                return this.resolveTextNode(t);
+            },
+
+            /**
+             * Returns the time of the event.  If the time is not included, the
+             * event is modified using the current time.
+            * @method getTime
+            * @param {Event} ev the event
+            * @return {Date} the time of the event
+            * @static
+             */
+            getTime: function(ev) {
+                if (!ev.time) {
+                    var t = new Date().getTime();
+                    try {
+                        ev.time = t;
+                    } catch(ex) { 
+                        this.lastError = ex;
+                        return t;
+                    }
+                }
+
+                return ev.time;
+            },
+
+            /**
+             * Convenience method for stopPropagation + preventDefault
+            * @method stopEvent
+            * @param {Event} ev the event
+            * @static
+             */
+            stopEvent: function(ev) {
+                this.stopPropagation(ev);
+                this.preventDefault(ev);
+            },
+
+            /**
+             * Stops event propagation
+            * @method stopPropagation
+            * @param {Event} ev the event
+            * @static
+             */
+            stopPropagation: function(ev) {
+                if (ev.stopPropagation) {
+                    ev.stopPropagation();
+                } else {
+                    ev.cancelBubble = true;
+                }
+            },
+
+            /**
+             * Prevents the default behavior of the event
+            * @method preventDefault
+            * @param {Event} ev the event
+            * @static
+             */
+            preventDefault: function(ev) {
+                if (ev.preventDefault) {
+                    ev.preventDefault();
+                } else {
+                    ev.returnValue = false;
+                }
+            },
+             
+            /**
+             * Finds the event in the window object, the caller's arguments, or
+             * in the arguments of another method in the callstack.  This is
+             * executed automatically for events registered through the event
+             * manager, so the implementer should not normally need to execute
+             * this function at all.
+            * @method getEvent
+            * @param {Event} e the event parameter from the handler
+            * @param {HTMLElement} boundEl the element the listener is attached to
+            * @return {Event} the event 
+            * @static
+             */
+            getEvent: function(e, boundEl) {
+                var ev = e || window.event;
+
+                if (!ev) {
+                    var c = this.getEvent.caller;
+                    while (c) {
+                        ev = c.arguments[0];
+                        if (ev && Event == ev.constructor) {
+                            break;
+                        }
+                        c = c.caller;
+                    }
+                }
+
+                return ev;
+            },
+
+            /**
+             * Returns the charcode for an event
+            * @method getCharCode
+            * @param {Event} ev the event
+            * @return {int} the event's charCode
+            * @static
+             */
+            getCharCode: function(ev) {
+                var code = ev.keyCode || ev.charCode || 0;
+
+                // webkit key normalization
+                if (YAHOO.env.ua.webkit && (code in webkitKeymap)) {
+                    code = webkitKeymap[code];
+                }
+                return code;
+            },
+
+            /**
+             * Locating the saved event handler data by function ref
+             *
+            * @method _getCacheIndex
+            * @static
+            * @private
+             */
+            _getCacheIndex: function(a, el, sType, fn) {
+                for (var i=0, l=a.length; i<l; i=i+1) {
+                    var li = a[i];
+                    if ( li                 && 
+                         li[this.FN] == fn  && 
+                         li[this.EL] == el  && 
+                         li[this.TYPE] == sType ) {
+                        return i;
+                    }
+                }
+
+                return -1;
+            },
+
+            /**
+             * Generates an unique ID for the element if it does not already 
+             * have one.
+            * @method generateId
+            * @param el the element to create the id for
+            * @return {string} the resulting id of the element
+            * @static
+             */
+            generateId: function(el) {
+                var id = el.id;
+
+                if (!id) {
+                    id = "yuievtautoid-" + counter;
+                    ++counter;
+                    el.id = id;
+                }
+
+                return id;
+            },
+
+
+            /**
+             * We want to be able to use getElementsByTagName as a collection
+             * to attach a group of events to.  Unfortunately, different 
+             * browsers return different types of collections.  This function
+             * tests to determine if the object is array-like.  It will also 
+             * fail if the object is an array, but is empty.
+            * @method _isValidCollection
+            * @param o the object to test
+            * @return {boolean} true if the object is array-like and populated
+            * @static
+            * @private
+             */
+            _isValidCollection: function(o) {
+                try {
+                    return ( o                     && // o is something
+                             typeof o !== "string" && // o is not a string
+                             o.length              && // o is indexed
+                             !o.tagName            && // o is not an HTML element
+                             !o.alert              && // o is not a window
+                             typeof o[0] !== "undefined" );
+                } catch(ex) {
+                    YAHOO.log("node access error (xframe?)", "warn");
+                    return false;
+                }
+
+            },
+
+            /**
+            * @private
+            * @property elCache
+             * DOM element cache
+            * @static
+            * @deprecated Elements are not cached due to issues that arise when
+             * elements are removed and re-added
+             */
+            elCache: {},
+
+            /**
+             * We cache elements bound by id because when the unload event 
+             * fires, we can no longer use document.getElementById
+            * @method getEl
+            * @static
+            * @private
+            * @deprecated Elements are not cached any longer
+             */
+            getEl: function(id) {
+                return (typeof id === "string") ? document.getElementById(id) : id;
+            },
+
+            /**
+             * Clears the element cache
+            * @deprecated Elements are not cached any longer
+            * @method clearCache
+            * @static
+            * @private
+             */
+            clearCache: function() { },
+
+            /**
+             * Custom event the fires when the dom is initially usable
+            * @event DOMReadyEvent
+             */
+            DOMReadyEvent: new YAHOO.util.CustomEvent("DOMReady", YAHOO, 0, 0, 1),
+
+            /**
+             * hook up any deferred listeners
+            * @method _load
+            * @static
+            * @private
+             */
+            _load: function(e) {
+
+                if (!loadComplete) {
+                    loadComplete = true;
+                    var EU = YAHOO.util.Event;
+
+                    // Just in case DOMReady did not go off for some reason
+                    EU._ready();
+
+                    // Available elements may not have been detected before the
+                    // window load event fires. Try to find them now so that the
+                    // the user is more likely to get the onAvailable notifications
+                    // before the window load notification
+                    EU._tryPreloadAttach();
+
+                }
+            },
+
+            /**
+             * Fires the DOMReady event listeners the first time the document is
+             * usable.
+            * @method _ready
+            * @static
+            * @private
+             */
+            _ready: function(e) {
+                var EU = YAHOO.util.Event;
+                if (!EU.DOMReady) {
+                    EU.DOMReady=true;
+
+                    // Fire the content ready custom event
+                    EU.DOMReadyEvent.fire();
+
+                    // Remove the DOMContentLoaded (FF/Opera)
+                    EU._simpleRemove(document, "DOMContentLoaded", EU._ready);
+                }
+            },
+
+            /**
+             * Polling function that runs before the onload event fires, 
+             * attempting to attach to DOM Nodes as soon as they are 
+             * available
+            * @method _tryPreloadAttach
+            * @static
+            * @private
+             */
+            _tryPreloadAttach: function() {
+
+                if (onAvailStack.length === 0) {
+                    retryCount = 0;
+                    if (this._interval) {
+                        // clearInterval(this._interval);
+                        this._interval.cancel();
+                        this._interval = null;
+                    } 
+                    return;
+                }
+
+                if (this.locked) {
+                    return;
+                }
+
+                if (this.isIE) {
+                    // Hold off if DOMReady has not fired and check current
+                    // readyState to protect against the IE operation aborted
+                    // issue.
+                    if (!this.DOMReady) {
+                        this.startInterval();
+                        return;
+                    }
+                }
+
+                this.locked = true;
+
+                // this.logger.debug("tryPreloadAttach");
+
+                // keep trying until after the page is loaded.  We need to 
+                // check the page load state prior to trying to bind the 
+                // elements so that we can be certain all elements have been 
+                // tested appropriately
+                var tryAgain = !loadComplete;
+                if (!tryAgain) {
+                    tryAgain = (retryCount > 0 && onAvailStack.length > 0);
+                }
+
+                // onAvailable
+                var notAvail = [];
+
+                var executeItem = function (el, item) {
+                    var context = el;
+                    if (item.overrideContext) {
+                        if (item.overrideContext === true) {
+                            context = item.obj;
+                        } else {
+                            context = item.overrideContext;
+                        }
+                    }
+                    item.fn.call(context, item.obj);
+                };
+
+                var i, len, item, el, ready=[];
+
+                // onAvailable onContentReady
+                for (i=0, len=onAvailStack.length; i<len; i=i+1) {
+                    item = onAvailStack[i];
+                    if (item) {
+                        el = this.getEl(item.id);
+                        if (el) {
+                            if (item.checkReady) {
+                                if (loadComplete || el.nextSibling || !tryAgain) {
+                                    ready.push(item);
+                                    onAvailStack[i] = null;
+                                }
+                            } else {
+                                executeItem(el, item);
+                                onAvailStack[i] = null;
+                            }
+                        } else {
+                            notAvail.push(item);
+                        }
+                    }
+                }
+                
+                // make sure onContentReady fires after onAvailable
+                for (i=0, len=ready.length; i<len; i=i+1) {
+                    item = ready[i];
+                    executeItem(this.getEl(item.id), item);
+                }
+
+
+                retryCount--;
+
+                if (tryAgain) {
+                    for (i=onAvailStack.length-1; i>-1; i--) {
+                        item = onAvailStack[i];
+                        if (!item || !item.id) {
+                            onAvailStack.splice(i, 1);
+                        }
+                    }
+
+                    this.startInterval();
+                } else {
+                    if (this._interval) {
+                        // clearInterval(this._interval);
+                        this._interval.cancel();
+                        this._interval = null;
+                    }
+                }
+
+                this.locked = false;
+
+            },
+
+            /**
+             * Removes all listeners attached to the given element via addListener.
+             * Optionally, the node's children can also be purged.
+             * Optionally, you can specify a specific type of event to remove.
+            * @method purgeElement
+            * @param {HTMLElement} el the element to purge
+            * @param {boolean} recurse recursively purge this element's children
+             * as well.  Use with caution.
+            * @param {string} sType optional type of listener to purge. If
+             * left out, all listeners will be removed
+            * @static
+             */
+            purgeElement: function(el, recurse, sType) {
+                var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el;
+                var elListeners = this.getListeners(oEl, sType), i, len;
+                if (elListeners) {
+                    for (i=elListeners.length-1; i>-1; i--) {
+                        var l = elListeners[i];
+                        this.removeListener(oEl, l.type, l.fn);
+                    }
+                }
+
+                if (recurse && oEl && oEl.childNodes) {
+                    for (i=0,len=oEl.childNodes.length; i<len ; ++i) {
+                        this.purgeElement(oEl.childNodes[i], recurse, sType);
+                    }
+                }
+            },
+
+            /**
+             * Returns all listeners attached to the given element via addListener.
+             * Optionally, you can specify a specific type of event to return.
+            * @method getListeners
+            * @param el {HTMLElement|string} the element or element id to inspect 
+            * @param sType {string} optional type of listener to return. If
+             * left out, all listeners will be returned
+            * @return {Object} the listener. Contains the following fields:
+             * &nbsp;&nbsp;type:   (string)   the type of event
+             * &nbsp;&nbsp;fn:     (function) the callback supplied to addListener
+             * &nbsp;&nbsp;obj:    (object)   the custom object supplied to addListener
+             * &nbsp;&nbsp;adjust: (boolean|object)  whether or not to adjust the default context
+             * &nbsp;&nbsp;scope: (boolean)  the derived context based on the adjust parameter
+             * &nbsp;&nbsp;index:  (int)      its position in the Event util listener cache
+            * @static
+             */           
+            getListeners: function(el, sType) {
+                var results=[], searchLists;
+                if (!sType) {
+                    searchLists = [listeners, unloadListeners];
+                } else if (sType === "unload") {
+                    searchLists = [unloadListeners];
+                } else {
+					sType = this._getType(sType);
+                    searchLists = [listeners];
+                }
+
+                var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el;
+
+                for (var j=0;j<searchLists.length; j=j+1) {
+                    var searchList = searchLists[j];
+                    if (searchList) {
+                        for (var i=0,len=searchList.length; i<len ; ++i) {
+                            var l = searchList[i];
+                            if ( l  && l[this.EL] === oEl && 
+                                    (!sType || sType === l[this.TYPE]) ) {
+                                results.push({
+                                    type:   l[this.TYPE],
+                                    fn:     l[this.FN],
+                                    obj:    l[this.OBJ],
+                                    adjust: l[this.OVERRIDE],
+                                    scope:  l[this.ADJ_SCOPE],
+                                    index:  i
+                                });
+                            }
+                        }
+                    }
+                }
+
+                return (results.length) ? results : null;
+            },
+
+            /**
+             * Removes all listeners registered by pe.event.  Called 
+             * automatically during the unload event.
+            * @method _unload
+            * @static
+            * @private
+             */
+            _unload: function(e) {
+
+                var EU = YAHOO.util.Event, i, j, l, len, index,
+                         ul = unloadListeners.slice(), context;
+
+                // execute and clear stored unload listeners
+                for (i=0, len=unloadListeners.length; i<len; ++i) {
+                    l = ul[i];
+                    if (l) {
+                        context = window;
+                        if (l[EU.ADJ_SCOPE]) {
+                            if (l[EU.ADJ_SCOPE] === true) {
+                                context = l[EU.UNLOAD_OBJ];
+                            } else {
+                                context = l[EU.ADJ_SCOPE];
+                            }
+                        }
+                        l[EU.FN].call(context, EU.getEvent(e, l[EU.EL]), l[EU.UNLOAD_OBJ] );
+                        ul[i] = null;
+                    }
+                }
+
+                l = null;
+                context = null;
+                unloadListeners = null;
+
+                // Remove listeners to handle IE memory leaks
+                // 2.5.0 listeners are removed for all browsers again.  FireFox preserves
+                // at least some listeners between page refreshes, potentially causing
+                // errors during page load (mouseover listeners firing before they
+                // should if the user moves the mouse at the correct moment).
+                if (listeners) {
+                    for (j=listeners.length-1; j>-1; j--) {
+                        l = listeners[j];
+                        if (l) {
+                            EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], j);
+                        } 
+                    }
+                    l=null;
+                }
+
+                EU._simpleRemove(window, "unload", EU._unload);
+
+            },
+
+            /**
+             * Returns scrollLeft
+            * @method _getScrollLeft
+            * @static
+            * @private
+             */
+            _getScrollLeft: function() {
+                return this._getScroll()[1];
+            },
+
+            /**
+             * Returns scrollTop
+            * @method _getScrollTop
+            * @static
+            * @private
+             */
+            _getScrollTop: function() {
+                return this._getScroll()[0];
+            },
+
+            /**
+             * Returns the scrollTop and scrollLeft.  Used to calculate the 
+             * pageX and pageY in Internet Explorer
+            * @method _getScroll
+            * @static
+            * @private
+             */
+            _getScroll: function() {
+                var dd = document.documentElement, db = document.body;
+                if (dd && (dd.scrollTop || dd.scrollLeft)) {
+                    return [dd.scrollTop, dd.scrollLeft];
+                } else if (db) {
+                    return [db.scrollTop, db.scrollLeft];
+                } else {
+                    return [0, 0];
+                }
+            },
+            
+            /**
+             * Used by old versions of CustomEvent, restored for backwards
+             * compatibility
+            * @method regCE
+            * @private
+            * @static
+            * @deprecated still here for backwards compatibility
+             */
+            regCE: function() {},
+
+            /**
+             * Adds a DOM event directly without the caching, cleanup, context adj, etc
+             *
+            * @method _simpleAdd
+            * @param {HTMLElement} el      the element to bind the handler to
+            * @param {string}      sType   the type of event handler
+            * @param {function}    fn      the callback to invoke
+            * @param {boolen}      capture capture or bubble phase
+            * @static
+            * @private
+             */
+            _simpleAdd: function () {
+                if (window.addEventListener) {
+                    return function(el, sType, fn, capture) {
+                        el.addEventListener(sType, fn, (capture));
+                    };
+                } else if (window.attachEvent) {
+                    return function(el, sType, fn, capture) {
+                        el.attachEvent("on" + sType, fn);
+                    };
+                } else {
+                    return function(){};
+                }
+            }(),
+
+            /**
+             * Basic remove listener
+             *
+            * @method _simpleRemove
+            * @param {HTMLElement} el      the element to bind the handler to
+            * @param {string}      sType   the type of event handler
+            * @param {function}    fn      the callback to invoke
+            * @param {boolen}      capture capture or bubble phase
+            * @static
+            * @private
+             */
+            _simpleRemove: function() {
+                if (window.removeEventListener) {
+                    return function (el, sType, fn, capture) {
+                        el.removeEventListener(sType, fn, (capture));
+                    };
+                } else if (window.detachEvent) {
+                    return function (el, sType, fn) {
+                        el.detachEvent("on" + sType, fn);
+                    };
+                } else {
+                    return function(){};
+                }
+            }()
+        };
+
+    }();
+
+    (function() {
+        var EU = YAHOO.util.Event;
+
+        /**
+         * YAHOO.util.Event.on is an alias for addListener
+        * @method on
+        * @see addListener
+        * @static
+         */
+        EU.on = EU.addListener;
+
+        /**
+         * YAHOO.util.Event.onFocus is an alias for addFocusListener
+        * @method onFocus
+        * @see addFocusListener
+        * @static
+		 * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+         */
+        EU.onFocus = EU.addFocusListener;
+
+        /**
+         * YAHOO.util.Event.onBlur is an alias for addBlurListener
+        * @method onBlur
+        * @see addBlurListener
+        * @static
+		 * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+         */     
+        EU.onBlur = EU.addBlurListener;
+
+/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
+
+        // Internet Explorer: use the readyState of a defered script.
+        // This isolates what appears to be a safe moment to manipulate
+        // the DOM prior to when the document's readyState suggests
+        // it is safe to do so.
+        if (EU.isIE) {
+            if (self !== self.top) {
+                document.onreadystatechange = function() {
+                    if (document.readyState == 'complete') {
+                        document.onreadystatechange = null;
+                        EU._ready();
+                    }
+                };
+            } else {
+
+                // Process onAvailable/onContentReady items when the 
+                // DOM is ready.
+                YAHOO.util.Event.onDOMReady(
+                        YAHOO.util.Event._tryPreloadAttach,
+                        YAHOO.util.Event, true);
+                
+                var n = document.createElement('p');  
+
+                EU._dri = setInterval(function() {
+                    try {
+                        // throws an error if doc is not ready
+                        n.doScroll('left');
+                        clearInterval(EU._dri);
+                        EU._dri = null;
+                        EU._ready();
+                        n = null;
+                    } catch (ex) { 
+                    }
+                }, EU.POLL_INTERVAL); 
+            }
+
+        // The document's readyState in Safari currently will
+        // change to loaded/complete before images are loaded.
+        } else if (EU.webkit && EU.webkit < 525) {
+
+            EU._dri = setInterval(function() {
+                var rs=document.readyState;
+                if ("loaded" == rs || "complete" == rs) {
+                    clearInterval(EU._dri);
+                    EU._dri = null;
+                    EU._ready();
+                }
+            }, EU.POLL_INTERVAL); 
+
+        // FireFox and Opera: These browsers provide a event for this
+        // moment.  The latest WebKit releases now support this event.
+        } else {
+
+            EU._simpleAdd(document, "DOMContentLoaded", EU._ready);
+
+        }
+        /////////////////////////////////////////////////////////////
+
+
+        EU._simpleAdd(window, "load", EU._load);
+        EU._simpleAdd(window, "unload", EU._unload);
+        EU._tryPreloadAttach();
+    })();
+
+}
+/**
+ * EventProvider is designed to be used with YAHOO.augment to wrap 
+ * CustomEvents in an interface that allows events to be subscribed to 
+ * and fired by name.  This makes it possible for implementing code to
+ * subscribe to an event that either has not been created yet, or will
+ * not be created at all.
+ *
+ * @Class EventProvider
+ */
+YAHOO.util.EventProvider = function() { };
+
+YAHOO.util.EventProvider.prototype = {
+
+    /**
+     * Private storage of custom events
+    * @property __yui_events
+    * @type Object[]
+    * @private
+     */
+    __yui_events: null,
+
+    /**
+     * Private storage of custom event subscribers
+    * @property __yui_subscribers
+    * @type Object[]
+    * @private
+     */
+    __yui_subscribers: null,
+    
+    /**
+     * Subscribe to a CustomEvent by event type
+     *
+    * @method subscribe
+    * @param p_type     {string}   the type, or name of the event
+    * @param p_fn       {function} the function to exectute when the event fires
+    * @param p_obj      {Object}   An object to be passed along when the event 
+     *                              fires
+    * @param overrideContext {boolean}  If true, the obj passed in becomes the 
+     *                              execution scope of the listener
+     */
+    subscribe: function(p_type, p_fn, p_obj, overrideContext) {
+
+        this.__yui_events = this.__yui_events || {};
+        var ce = this.__yui_events[p_type];
+
+        if (ce) {
+            ce.subscribe(p_fn, p_obj, overrideContext);
+        } else {
+            this.__yui_subscribers = this.__yui_subscribers || {};
+            var subs = this.__yui_subscribers;
+            if (!subs[p_type]) {
+                subs[p_type] = [];
+            }
+            subs[p_type].push(
+                { fn: p_fn, obj: p_obj, overrideContext: overrideContext } );
+        }
+    },
+
+    /**
+     * Unsubscribes one or more listeners the from the specified event
+    * @method unsubscribe
+    * @param p_type {string}   The type, or name of the event.  If the type
+     *                          is not specified, it will attempt to remove
+     *                          the listener from all hosted events.
+    * @param p_fn   {Function} The subscribed function to unsubscribe, if not
+     *                          supplied, all subscribers will be removed.
+    * @param p_obj  {Object}   The custom object passed to subscribe.  This is
+     *                        optional, but if supplied will be used to
+     *                        disambiguate multiple listeners that are the same
+     *                        (e.g., you subscribe many object using a function
+     *                        that lives on the prototype)
+    * @return {boolean} true if the subscriber was found and detached.
+     */
+    unsubscribe: function(p_type, p_fn, p_obj) {
+        this.__yui_events = this.__yui_events || {};
+        var evts = this.__yui_events;
+        if (p_type) {
+            var ce = evts[p_type];
+            if (ce) {
+                return ce.unsubscribe(p_fn, p_obj);
+            }
+        } else {
+            var ret = true;
+            for (var i in evts) {
+                if (YAHOO.lang.hasOwnProperty(evts, i)) {
+                    ret = ret && evts[i].unsubscribe(p_fn, p_obj);
+                }
+            }
+            return ret;
+        }
+
+        return false;
+    },
+    
+    /**
+     * Removes all listeners from the specified event.  If the event type
+     * is not specified, all listeners from all hosted custom events will
+     * be removed.
+    * @method unsubscribeAll
+    * @param p_type {string}   The type, or name of the event
+     */
+    unsubscribeAll: function(p_type) {
+        return this.unsubscribe(p_type);
+    },
+
+    /**
+     * Creates a new custom event of the specified type.  If a custom event
+     * by that name already exists, it will not be re-created.  In either
+     * case the custom event is returned. 
+     *
+    * @method createEvent
+     *
+    * @param p_type {string} the type, or name of the event
+    * @param p_config {object} optional config params.  Valid properties are:
+     *
+     *  <ul>
+     *    <li>
+     *      scope: defines the default execution scope.  If not defined
+     *      the default scope will be this instance.
+     *    </li>
+     *    <li>
+     *      silent: if true, the custom event will not generate log messages.
+     *      This is false by default.
+     *    </li>
+     *    <li>
+     *      fireOnce: if true, the custom event will only notify subscribers
+     *      once regardless of the number of times the event is fired.  In
+     *      addition, new subscribers will be executed immediately if the
+     *      event has already fired.
+     *      This is false by default.
+     *    </li>
+     *    <li>
+     *      onSubscribeCallback: specifies a callback to execute when the
+     *      event has a new subscriber.  This will fire immediately for
+     *      each queued subscriber if any exist prior to the creation of
+     *      the event.
+     *    </li>
+     *  </ul>
+     *
+     *  @return {CustomEvent} the custom event
+     *
+     */
+    createEvent: function(p_type, p_config) {
+
+        this.__yui_events = this.__yui_events || {};
+        var opts = p_config || {},
+            events = this.__yui_events, ce;
+
+        if (events[p_type]) {
+YAHOO.log("EventProvider createEvent skipped: '"+p_type+"' already exists");
+        } else {
+
+            ce = new YAHOO.util.CustomEvent(p_type, opts.scope || this, opts.silent,
+                         YAHOO.util.CustomEvent.FLAT, opts.fireOnce);
+
+            events[p_type] = ce;
+
+            if (opts.onSubscribeCallback) {
+                ce.subscribeEvent.subscribe(opts.onSubscribeCallback);
+            }
+
+            this.__yui_subscribers = this.__yui_subscribers || {};
+            var qs = this.__yui_subscribers[p_type];
+
+            if (qs) {
+                for (var i=0; i<qs.length; ++i) {
+                    ce.subscribe(qs[i].fn, qs[i].obj, qs[i].overrideContext);
+                }
+            }
+        }
+
+        return events[p_type];
+    },
+
+
+   /**
+     * Fire a custom event by name.  The callback functions will be executed
+     * from the scope specified when the event was created, and with the 
+     * following parameters:
+     *   <ul>
+     *   <li>The first argument fire() was executed with</li>
+     *   <li>The custom object (if any) that was passed into the subscribe() 
+     *       method</li>
+     *   </ul>
+    * @method fireEvent
+    * @param p_type    {string}  the type, or name of the event
+    * @param arguments {Object*} an arbitrary set of parameters to pass to 
+     *                            the handler.
+    * @return {boolean} the return value from CustomEvent.fire
+     *                   
+     */
+    fireEvent: function(p_type) {
+
+        this.__yui_events = this.__yui_events || {};
+        var ce = this.__yui_events[p_type];
+
+        if (!ce) {
+YAHOO.log(p_type + "event fired before it was created.");
+            return null;
+        }
+
+        var args = [];
+        for (var i=1; i<arguments.length; ++i) {
+            args.push(arguments[i]);
+        }
+        return ce.fire.apply(ce, args);
+    },
+
+    /**
+     * Returns true if the custom event of the provided type has been created
+     * with createEvent.
+    * @method hasEvent
+    * @param type {string} the type, or name of the event
+     */
+    hasEvent: function(type) {
+        if (this.__yui_events) {
+            if (this.__yui_events[type]) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+};
+
+(function() {
+
+    var Event = YAHOO.util.Event, Lang = YAHOO.lang;
+
+/**
+* KeyListener is a utility that provides an easy interface for listening for
+* keydown/keyup events fired against DOM elements.
+* @namespace YAHOO.util
+* @class KeyListener
+* @constructor
+* @param {HTMLElement} attachTo The element or element ID to which the key 
+*                               event should be attached
+* @param {String}      attachTo The element or element ID to which the key
+*                               event should be attached
+* @param {Object}      keyData  The object literal representing the key(s) 
+*                               to detect. Possible attributes are 
+*                               shift(boolean), alt(boolean), ctrl(boolean) 
+*                               and keys(either an int or an array of ints 
+*                               representing keycodes).
+* @param {Function}    handler  The CustomEvent handler to fire when the 
+*                               key event is detected
+* @param {Object}      handler  An object literal representing the handler. 
+* @param {String}      event    Optional. The event (keydown or keyup) to 
+*                               listen for. Defaults automatically to keydown.
+*
+* @knownissue the "keypress" event is completely broken in Safari 2.x and below.
+*             the workaround is use "keydown" for key listening.  However, if
+*             it is desired to prevent the default behavior of the keystroke,
+*             that can only be done on the keypress event.  This makes key
+*             handling quite ugly.
+* @knownissue keydown is also broken in Safari 2.x and below for the ESC key.
+*             There currently is no workaround other than choosing another
+*             key to listen for.
+*/
+YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
+    if (!attachTo) {
+        YAHOO.log("No attachTo element specified", "error");
+    } else if (!keyData) {
+        YAHOO.log("No keyData specified", "error");
+    } else if (!handler) {
+        YAHOO.log("No handler specified", "error");
+    } 
+    
+    if (!event) {
+        event = YAHOO.util.KeyListener.KEYDOWN;
+    }
+
+    /**
+    * The CustomEvent fired internally when a key is pressed
+   * @event keyEvent
+   * @private
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    var keyEvent = new YAHOO.util.CustomEvent("keyPressed");
+    
+    /**
+    * The CustomEvent fired when the KeyListener is enabled via the enable() 
+    * function
+   * @event enabledEvent
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    this.enabledEvent = new YAHOO.util.CustomEvent("enabled");
+
+    /**
+    * The CustomEvent fired when the KeyListener is disabled via the 
+    * disable() function
+   * @event disabledEvent
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    this.disabledEvent = new YAHOO.util.CustomEvent("disabled");
+
+    if (Lang.isString(attachTo)) {
+        attachTo = document.getElementById(attachTo); // No Dom util
+    }
+
+    if (Lang.isFunction(handler)) {
+        keyEvent.subscribe(handler);
+    } else {
+        keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope);
+    }
+
+    /**
+    * Handles the key event when a key is pressed.
+   * @method handleKeyPress
+   * @param {DOMEvent} e   The keypress DOM event
+   * @param {Object}   obj The DOM event scope object
+   * @private
+    */
+    function handleKeyPress(e, obj) {
+        if (! keyData.shift) {  
+            keyData.shift = false; 
+        }
+        if (! keyData.alt) {    
+            keyData.alt = false;
+        }
+        if (! keyData.ctrl) {
+            keyData.ctrl = false;
+        }
+
+        // check held down modifying keys first
+        if (e.shiftKey == keyData.shift && 
+            e.altKey   == keyData.alt &&
+            e.ctrlKey  == keyData.ctrl) { // if we pass this, all modifiers match
+            
+            var dataItem, keys = keyData.keys, key;
+
+            if (YAHOO.lang.isArray(keys)) {
+                for (var i=0;i<keys.length;i++) {
+                    dataItem = keys[i];
+                    key = Event.getCharCode(e);
+
+                    if (dataItem == key) {
+                        keyEvent.fire(key, e);
+                        break;
+                    }
+                }
+            } else {
+                key = Event.getCharCode(e);
+                if (keys == key ) {
+                    keyEvent.fire(key, e);
+                }
+            }
+        }
+    }
+
+    /**
+    * Enables the KeyListener by attaching the DOM event listeners to the 
+    * target DOM element
+   * @method enable
+    */
+    this.enable = function() {
+        if (! this.enabled) {
+            Event.on(attachTo, event, handleKeyPress);
+            this.enabledEvent.fire(keyData);
+        }
+        /**
+        * Boolean indicating the enabled/disabled state of the Tooltip
+       * @property enabled
+       * @type Boolean
+        */
+        this.enabled = true;
+    };
+
+    /**
+    * Disables the KeyListener by removing the DOM event listeners from the 
+    * target DOM element
+   * @method disable
+    */
+    this.disable = function() {
+        if (this.enabled) {
+            Event.removeListener(attachTo, event, handleKeyPress);
+            this.disabledEvent.fire(keyData);
+        }
+        this.enabled = false;
+    };
+
+    /**
+    * Returns a String representation of the object.
+   * @method toString
+   * @return {String}  The string representation of the KeyListener
+    */ 
+    this.toString = function() {
+        return "KeyListener [" + keyData.keys + "] " + attachTo.tagName + 
+                (attachTo.id ? "[" + attachTo.id + "]" : "");
+    };
+
+};
+
+var KeyListener = YAHOO.util.KeyListener;
+
+/**
+ * Constant representing the DOM "keydown" event.
+ * @property YAHOO.util.KeyListener.KEYDOWN
+ * @static
+ * @final
+ * @type String
+ */
+KeyListener.KEYDOWN = "keydown";
+
+/**
+ * Constant representing the DOM "keyup" event.
+ * @property YAHOO.util.KeyListener.KEYUP
+ * @static
+ * @final
+ * @type String
+ */
+KeyListener.KEYUP = "keyup";
+
+/**
+ * keycode constants for a subset of the special keys
+ * @property KEY
+ * @static
+ * @final
+ */
+KeyListener.KEY = {
+    ALT          : 18,
+    BACK_SPACE   : 8,
+    CAPS_LOCK    : 20,
+    CONTROL      : 17,
+    DELETE       : 46,
+    DOWN         : 40,
+    END          : 35,
+    ENTER        : 13,
+    ESCAPE       : 27,
+    HOME         : 36,
+    LEFT         : 37,
+    META         : 224,
+    NUM_LOCK     : 144,
+    PAGE_DOWN    : 34,
+    PAGE_UP      : 33, 
+    PAUSE        : 19,
+    PRINTSCREEN  : 44,
+    RIGHT        : 39,
+    SCROLL_LOCK  : 145,
+    SHIFT        : 16,
+    SPACE        : 32,
+    TAB          : 9,
+    UP           : 38
+};
+
+})();
+YAHOO.register("event", YAHOO.util.Event, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/event/event-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/event/event.js
===================================================================
--- tags/2.8.3/wb/include/yui/event/event.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/event/event.js	(revision 1610)
@@ -0,0 +1,2500 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+
+/**
+ * The CustomEvent class lets you define events for your application
+ * that can be subscribed to by one or more independent component.
+ *
+ * @param {String}  type The type of event, which is passed to the callback
+ *                  when the event fires
+ * @param {Object}  context The context the event will fire from.  "this" will
+ *                  refer to this object in the callback.  Default value: 
+ *                  the window object.  The listener can override this.
+ * @param {boolean} silent pass true to prevent the event from writing to
+ *                  the debugsystem
+ * @param {int}     signature the signature that the custom event subscriber
+ *                  will receive. YAHOO.util.CustomEvent.LIST or 
+ *                  YAHOO.util.CustomEvent.FLAT.  The default is
+ *                  YAHOO.util.CustomEvent.LIST.
+ * @param fireOnce {boolean} If configured to fire once, the custom event 
+ * will only notify subscribers a single time regardless of how many times 
+ * the event is fired.  In addition, new subscribers will be notified 
+ * immediately if the event has already been fired.
+ * @namespace YAHOO.util
+ * @class CustomEvent
+ * @constructor
+ */
+YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
+
+    /**
+     * The type of event, returned to subscribers when the event fires
+    * @property type
+    * @type string
+     */
+    this.type = type;
+
+    /**
+     * The context the event will fire from by default. Defaults to the window obj.
+    * @property scope
+    * @type object
+     */
+    this.scope = context || window;
+
+    /**
+     * By default all custom events are logged in the debug build. Set silent to true 
+     * to disable debug output for this event.
+    * @property silent
+    * @type boolean
+     */
+    this.silent = silent;
+
+    /**
+     * If configured to fire once, the custom event will only notify subscribers
+     * a single time regardless of how many times the event is fired.  In addition,
+     * new subscribers will be notified immediately if the event has already been
+     * fired.
+    * @property fireOnce
+    * @type boolean
+    * @default false
+     */
+    this.fireOnce = fireOnce;
+
+    /**
+     * Indicates whether or not this event has ever been fired.
+    * @property fired
+    * @type boolean
+    * @default false
+     */
+    this.fired = false;
+
+    /**
+     * For fireOnce events the arguments the event was fired with are stored
+     * so that new subscribers get the proper payload.
+    * @property firedWith
+    * @type Array
+     */
+    this.firedWith = null;
+
+    /**
+     * Custom events support two styles of arguments provided to the event
+     * subscribers.  
+     * <ul>
+     * <li>YAHOO.util.CustomEvent.LIST: 
+     *   <ul>
+     *   <li>param1: event name</li>
+     *   <li>param2: array of arguments sent to fire</li>
+     *   <li>param3: <optional> a custom object supplied by the subscriber</li>
+     *   </ul>
+     * </li>
+     * <li>YAHOO.util.CustomEvent.FLAT
+     *   <ul>
+     *   <li>param1: the first argument passed to fire.  If you need to
+     *           pass multiple parameters, use and array or object literal</li>
+     *   <li>param2: <optional> a custom object supplied by the subscriber</li>
+     *   </ul>
+     * </li>
+     * </ul>
+     *   @property signature
+     *   @type int
+     */
+    this.signature = signature || YAHOO.util.CustomEvent.LIST;
+
+    /**
+     * The subscribers to this event
+    * @property subscribers
+    * @type Subscriber[]
+     */
+    this.subscribers = [];
+
+    if (!this.silent) {
+    }
+
+    var onsubscribeType = "_YUICEOnSubscribe";
+
+    // Only add subscribe events for events that are not generated by 
+    // CustomEvent
+    if (type !== onsubscribeType) {
+
+        /**
+         * Custom events provide a custom event that fires whenever there is
+         * a new subscriber to the event.  This provides an opportunity to
+         * handle the case where there is a non-repeating event that has
+         * already fired has a new subscriber.  
+         *
+        * @event subscribeEvent
+        * @type YAHOO.util.CustomEvent
+        * @param fn {Function} The function to execute
+        * @param obj <Object> An object to be passed along when the event fires. 
+         * Defaults to the custom event.
+        * @param override <boolean|Object> If true, the obj passed in becomes the 
+         * execution context of the listener. If an object, that object becomes 
+         * the execution context. Defaults to the custom event.
+         */
+        this.subscribeEvent = 
+                new YAHOO.util.CustomEvent(onsubscribeType, this, true);
+
+    } 
+
+
+    /**
+     * In order to make it possible to execute the rest of the subscriber
+     * stack when one thows an exception, the subscribers exceptions are
+     * caught.  The most recent exception is stored in this property
+    * @property lastError
+    * @type Error
+     */
+    this.lastError = null;
+};
+
+/**
+ * Subscriber listener sigature constant.  The LIST type returns three
+ * parameters: the event type, the array of args passed to fire, and
+ * the optional custom object
+ * @property YAHOO.util.CustomEvent.LIST
+ * @static
+ * @type int
+ */
+YAHOO.util.CustomEvent.LIST = 0;
+
+/**
+ * Subscriber listener sigature constant.  The FLAT type returns two
+ * parameters: the first argument passed to fire and the optional 
+ * custom object
+ * @property YAHOO.util.CustomEvent.FLAT
+ * @static
+ * @type int
+ */
+YAHOO.util.CustomEvent.FLAT = 1;
+
+YAHOO.util.CustomEvent.prototype = {
+
+    /**
+     * Subscribes the caller to this event
+    * @method subscribe
+    * @param {Function} fn        The function to execute
+    * @param {Object}   obj       An object to be passed along when the event fires.
+     * overrideContext <boolean|Object> If true, the obj passed in becomes the execution 
+     * context of the listener. If an object, that object becomes the execution context.
+     */
+    subscribe: function(fn, obj, overrideContext) {
+
+        if (!fn) {
+throw new Error("Invalid callback for subscriber to '" + this.type + "'");
+        }
+
+        if (this.subscribeEvent) {
+            this.subscribeEvent.fire(fn, obj, overrideContext);
+        }
+
+        var s = new YAHOO.util.Subscriber(fn, obj, overrideContext);
+
+        if (this.fireOnce && this.fired) {
+            this.notify(s, this.firedWith);
+        } else {
+            this.subscribers.push(s);
+        }
+    },
+
+    /**
+     * Unsubscribes subscribers.
+    * @method unsubscribe
+    * @param {Function} fn  The subscribed function to remove, if not supplied
+     *                       all will be removed
+    * @param {Object}   obj  The custom object passed to subscribe.  This is
+     *                        optional, but if supplied will be used to
+     *                        disambiguate multiple listeners that are the same
+     *                        (e.g., you subscribe many object using a function
+     *                        that lives on the prototype)
+    * @return {boolean} True if the subscriber was found and detached.
+     */
+    unsubscribe: function(fn, obj) {
+
+        if (!fn) {
+            return this.unsubscribeAll();
+        }
+
+        var found = false;
+        for (var i=0, len=this.subscribers.length; i<len; ++i) {
+            var s = this.subscribers[i];
+            if (s && s.contains(fn, obj)) {
+                this._delete(i);
+                found = true;
+            }
+        }
+
+        return found;
+    },
+
+    /**
+     * Notifies the subscribers.  The callback functions will be executed
+     * from the context specified when the event was created, and with the 
+     * following parameters:
+     *   <ul>
+     *   <li>The type of event</li>
+     *   <li>All of the arguments fire() was executed with as an array</li>
+     *   <li>The custom object (if any) that was passed into the subscribe() 
+     *       method</li>
+     *   </ul>
+    * @method fire 
+    * @param {Object*} arguments an arbitrary set of parameters to pass to 
+     *                            the handler.
+    * @return {boolean} false if one of the subscribers returned false, 
+     *                   true otherwise
+     */
+    fire: function() {
+
+        this.lastError = null;
+
+        var errors = [],
+            len=this.subscribers.length;
+
+
+        var args=[].slice.call(arguments, 0), ret=true, i, rebuild=false;
+
+        if (this.fireOnce) {
+            if (this.fired) {
+                return true;
+            } else {
+                this.firedWith = args;
+            }
+        }
+
+        this.fired = true;
+
+        if (!len && this.silent) {
+            return true;
+        }
+
+        if (!this.silent) {
+        }
+
+        // make a copy of the subscribers so that there are
+        // no index problems if one subscriber removes another.
+        var subs = this.subscribers.slice();
+
+        for (i=0; i<len; ++i) {
+            var s = subs[i];
+            if (!s) {
+                rebuild=true;
+            } else {
+
+                ret = this.notify(s, args);
+
+                if (false === ret) {
+                    if (!this.silent) {
+                    }
+
+                    break;
+                }
+            }
+        }
+
+        return (ret !== false);
+    },
+
+    notify: function(s, args) {
+
+        var ret, param=null, scope = s.getScope(this.scope),
+                 throwErrors = YAHOO.util.Event.throwErrors;
+
+        if (!this.silent) {
+        }
+
+        if (this.signature == YAHOO.util.CustomEvent.FLAT) {
+
+            if (args.length > 0) {
+                param = args[0];
+            }
+
+            try {
+                ret = s.fn.call(scope, param, s.obj);
+            } catch(e) {
+                this.lastError = e;
+                // errors.push(e);
+                if (throwErrors) {
+                    throw e;
+                }
+            }
+        } else {
+            try {
+                ret = s.fn.call(scope, this.type, args, s.obj);
+            } catch(ex) {
+                this.lastError = ex;
+                if (throwErrors) {
+                    throw ex;
+                }
+            }
+        }
+
+        return ret;
+    },
+
+    /**
+     * Removes all listeners
+    * @method unsubscribeAll
+    * @return {int} The number of listeners unsubscribed
+     */
+    unsubscribeAll: function() {
+        var l = this.subscribers.length, i;
+        for (i=l-1; i>-1; i--) {
+            this._delete(i);
+        }
+
+        this.subscribers=[];
+
+        return l;
+    },
+
+    /**
+    * @method _delete
+    * @private
+     */
+    _delete: function(index) {
+        var s = this.subscribers[index];
+        if (s) {
+            delete s.fn;
+            delete s.obj;
+        }
+
+        // this.subscribers[index]=null;
+        this.subscribers.splice(index, 1);
+    },
+
+    /**
+    * @method toString
+     */
+    toString: function() {
+         return "CustomEvent: " + "'" + this.type  + "', " + 
+             "context: " + this.scope;
+
+    }
+};
+
+/////////////////////////////////////////////////////////////////////
+
+/**
+ * Stores the subscriber information to be used when the event fires.
+ * @param {Function} fn       The function to execute
+ * @param {Object}   obj      An object to be passed along when the event fires
+ * @param {boolean}  overrideContext If true, the obj passed in becomes the execution
+ *                            context of the listener
+ * @class Subscriber
+ * @constructor
+ */
+YAHOO.util.Subscriber = function(fn, obj, overrideContext) {
+
+    /**
+     * The callback that will be execute when the event fires
+    * @property fn
+    * @type function
+     */
+    this.fn = fn;
+
+    /**
+     * An optional custom object that will passed to the callback when
+     * the event fires
+    * @property obj
+    * @type object
+     */
+    this.obj = YAHOO.lang.isUndefined(obj) ? null : obj;
+
+    /**
+     * The default execution context for the event listener is defined when the
+     * event is created (usually the object which contains the event).
+     * By setting overrideContext to true, the execution context becomes the custom
+     * object passed in by the subscriber.  If overrideContext is an object, that 
+     * object becomes the context.
+    * @property overrideContext
+    * @type boolean|object
+     */
+    this.overrideContext = overrideContext;
+
+};
+
+/**
+ * Returns the execution context for this listener.  If overrideContext was set to true
+ * the custom obj will be the context.  If overrideContext is an object, that is the
+ * context, otherwise the default context will be used.
+ * @method getScope
+ * @param {Object} defaultScope the context to use if this listener does not
+ *                              override it.
+ */
+YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) {
+    if (this.overrideContext) {
+        if (this.overrideContext === true) {
+            return this.obj;
+        } else {
+            return this.overrideContext;
+        }
+    }
+    return defaultScope;
+};
+
+/**
+ * Returns true if the fn and obj match this objects properties.
+ * Used by the unsubscribe method to match the right subscriber.
+ *
+ * @method contains
+ * @param {Function} fn the function to execute
+ * @param {Object} obj an object to be passed along when the event fires
+ * @return {boolean} true if the supplied arguments match this 
+ *                   subscriber's signature.
+ */
+YAHOO.util.Subscriber.prototype.contains = function(fn, obj) {
+    if (obj) {
+        return (this.fn == fn && this.obj == obj);
+    } else {
+        return (this.fn == fn);
+    }
+};
+
+/**
+ * @method toString
+ */
+YAHOO.util.Subscriber.prototype.toString = function() {
+    return "Subscriber { obj: " + this.obj  + 
+           ", overrideContext: " +  (this.overrideContext || "no") + " }";
+};
+
+/**
+ * The Event Utility provides utilities for managing DOM Events and tools
+ * for building event systems
+ *
+ * @module event
+ * @title Event Utility
+ * @namespace YAHOO.util
+ * @requires yahoo
+ */
+
+// The first instance of Event will win if it is loaded more than once.
+// @TODO this needs to be changed so that only the state data that needs to
+// be preserved is kept, while methods are overwritten/added as needed.
+// This means that the module pattern can't be used.
+if (!YAHOO.util.Event) {
+
+/**
+ * The event utility provides functions to add and remove event listeners,
+ * event cleansing.  It also tries to automatically remove listeners it
+ * registers during the unload event.
+ *
+ * @class Event
+ * @static
+ */
+    YAHOO.util.Event = function() {
+
+        /**
+         * True after the onload event has fired
+        * @property loadComplete
+        * @type boolean
+        * @static
+        * @private
+         */
+        var loadComplete =  false,
+
+        /**
+         * Cache of wrapped listeners
+        * @property listeners
+        * @type array
+        * @static
+        * @private
+         */
+        listeners = [],
+
+
+        /**
+         * User-defined unload function that will be fired before all events
+         * are detached
+        * @property unloadListeners
+        * @type array
+        * @static
+        * @private
+         */
+        unloadListeners = [],
+
+        /**
+         * The number of times to poll after window.onload.  This number is
+         * increased if additional late-bound handlers are requested after
+         * the page load.
+        * @property retryCount
+        * @static
+        * @private
+         */
+        retryCount = 0,
+
+        /**
+         * onAvailable listeners
+        * @property onAvailStack
+        * @static
+        * @private
+         */
+        onAvailStack = [],
+
+        /**
+         * Counter for auto id generation
+        * @property counter
+        * @static
+        * @private
+         */
+        counter = 0,
+        
+        /**
+         * Normalized keycodes for webkit/safari
+        * @property webkitKeymap
+        * @type {int: int}
+        * @private
+        * @static
+        * @final
+         */
+         webkitKeymap = {
+            63232: 38, // up
+            63233: 40, // down
+            63234: 37, // left
+            63235: 39, // right
+            63276: 33, // page up
+            63277: 34, // page down
+            25: 9      // SHIFT-TAB (Safari provides a different key code in
+                       // this case, even though the shiftKey modifier is set)
+        },
+
+		isIE = YAHOO.env.ua.ie,
+
+        // String constants used by the addFocusListener and removeFocusListener methods
+		
+       	FOCUSIN = "focusin",
+       	FOCUSOUT = "focusout";
+
+        return {
+
+            /**
+             * The number of times we should look for elements that are not
+             * in the DOM at the time the event is requested after the document
+             * has been loaded.  The default is 500@amp;40 ms, so it will poll
+             * for 20 seconds or until all outstanding handlers are bound
+             * (whichever comes first).
+            * @property POLL_RETRYS
+            * @type int
+            * @static
+            * @final
+             */
+            POLL_RETRYS: 500,
+
+            /**
+             * The poll interval in milliseconds
+            * @property POLL_INTERVAL
+            * @type int
+            * @static
+            * @final
+             */
+            POLL_INTERVAL: 40,
+
+            /**
+             * Element to bind, int constant
+            * @property EL
+            * @type int
+            * @static
+            * @final
+             */
+            EL: 0,
+
+            /**
+             * Type of event, int constant
+            * @property TYPE
+            * @type int
+            * @static
+            * @final
+             */
+            TYPE: 1,
+
+            /**
+             * Function to execute, int constant
+            * @property FN
+            * @type int
+            * @static
+            * @final
+             */
+            FN: 2,
+
+            /**
+             * Function wrapped for context correction and cleanup, int constant
+            * @property WFN
+            * @type int
+            * @static
+            * @final
+             */
+            WFN: 3,
+
+            /**
+             * Object passed in by the user that will be returned as a 
+             * parameter to the callback, int constant.  Specific to
+             * unload listeners
+            * @property OBJ
+            * @type int
+            * @static
+            * @final
+             */
+            UNLOAD_OBJ: 3,
+
+            /**
+             * Adjusted context, either the element we are registering the event
+             * on or the custom object passed in by the listener, int constant
+            * @property ADJ_SCOPE
+            * @type int
+            * @static
+            * @final
+             */
+            ADJ_SCOPE: 4,
+
+            /**
+             * The original obj passed into addListener
+            * @property OBJ
+            * @type int
+            * @static
+            * @final
+             */
+            OBJ: 5,
+
+            /**
+             * The original context parameter passed into addListener
+            * @property OVERRIDE
+            * @type int
+            * @static
+            * @final
+             */
+            OVERRIDE: 6,
+
+            /**
+             * The original capture parameter passed into addListener
+            * @property CAPTURE
+            * @type int
+            * @static
+            * @final
+             */
+			CAPTURE: 7,
+
+            /**
+             * addListener/removeListener can throw errors in unexpected scenarios.
+             * These errors are suppressed, the method returns false, and this property
+             * is set
+            * @property lastError
+            * @static
+            * @type Error
+             */
+            lastError: null,
+
+            /**
+             * Safari detection
+            * @property isSafari
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.webkit
+             */
+            isSafari: YAHOO.env.ua.webkit,
+            
+            /**
+             * webkit version
+            * @property webkit
+            * @type string
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.webkit
+             */
+            webkit: YAHOO.env.ua.webkit,
+            
+            /**
+             * IE detection 
+            * @property isIE
+            * @private
+            * @static
+            * @deprecated use YAHOO.env.ua.ie
+             */
+            isIE: isIE,
+
+            /**
+             * poll handle
+            * @property _interval
+            * @static
+            * @private
+             */
+            _interval: null,
+
+            /**
+             * document readystate poll handle
+            * @property _dri
+            * @static
+            * @private
+             */
+             _dri: null,
+
+
+            /**
+             * Map of special event types
+            * @property _specialTypes
+            * @static
+            * @private
+             */
+			_specialTypes: {
+				focusin: (isIE ? "focusin" : "focus"),
+				focusout: (isIE ? "focusout" : "blur")
+			},
+
+
+            /**
+             * True when the document is initially usable
+            * @property DOMReady
+            * @type boolean
+            * @static
+             */
+            DOMReady: false,
+
+            /**
+             * Errors thrown by subscribers of custom events are caught
+             * and the error message is written to the debug console.  If
+             * this property is set to true, it will also re-throw the
+             * error.
+            * @property throwErrors
+            * @type boolean
+            * @default false
+             */
+            throwErrors: false,
+
+
+            /**
+            * @method startInterval
+            * @static
+            * @private
+             */
+            startInterval: function() {
+                if (!this._interval) {
+                    // var self = this;
+                    // var callback = function() { self._tryPreloadAttach(); };
+                    // this._interval = setInterval(callback, this.POLL_INTERVAL);
+                    this._interval = YAHOO.lang.later(this.POLL_INTERVAL, this, this._tryPreloadAttach, null, true);
+                }
+            },
+
+            /**
+             * Executes the supplied callback when the item with the supplied
+             * id is found.  This is meant to be used to execute behavior as
+             * soon as possible as the page loads.  If you use this after the
+             * initial page load it will poll for a fixed time for the element.
+             * The number of times it will poll and the frequency are
+             * configurable.  By default it will poll for 10 seconds.
+             *
+             * <p>The callback is executed with a single parameter:
+             * the custom object parameter, if provided.</p>
+             *
+            * @method onAvailable
+             *
+            * @param {string||string[]}   id the id of the element, or an array
+             * of ids to look for.
+            * @param {function} fn what to execute when the element is found.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj, if set to an object it
+             *                   will execute in the context of that object
+            * @param checkContent {boolean} check child node readiness (onContentReady)
+            * @static
+             */
+            onAvailable: function(id, fn, obj, overrideContext, checkContent) {
+
+                var a = (YAHOO.lang.isString(id)) ? [id] : id;
+
+                for (var i=0; i<a.length; i=i+1) {
+                    onAvailStack.push({id:         a[i], 
+                                       fn:         fn, 
+                                       obj:        obj, 
+                                       overrideContext:   overrideContext, 
+                                       checkReady: checkContent });
+                }
+
+                retryCount = this.POLL_RETRYS;
+
+                this.startInterval();
+            },
+
+            /**
+             * Works the same way as onAvailable, but additionally checks the
+             * state of sibling elements to determine if the content of the
+             * available element is safe to modify.
+             *
+             * <p>The callback is executed with a single parameter:
+             * the custom object parameter, if provided.</p>
+             *
+            * @method onContentReady
+             *
+            * @param {string}   id the id of the element to look for.
+            * @param {function} fn what to execute when the element is ready.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj.  If an object, fn will
+             *                   exectute in the context of that object
+             *
+            * @static
+             */
+            onContentReady: function(id, fn, obj, overrideContext) {
+                this.onAvailable(id, fn, obj, overrideContext, true);
+            },
+
+            /**
+             * Executes the supplied callback when the DOM is first usable.  This
+             * will execute immediately if called after the DOMReady event has
+             * fired.   @todo the DOMContentReady event does not fire when the
+             * script is dynamically injected into the page.  This means the
+             * DOMReady custom event will never fire in FireFox or Opera when the
+             * library is injected.  It _will_ fire in Safari, and the IE 
+             * implementation would allow for us to fire it if the defered script
+             * is not available.  We want this to behave the same in all browsers.
+             * Is there a way to identify when the script has been injected 
+             * instead of included inline?  Is there a way to know whether the 
+             * window onload event has fired without having had a listener attached 
+             * to it when it did so?
+             *
+             * <p>The callback is a CustomEvent, so the signature is:</p>
+             * <p>type &lt;string&gt;, args &lt;array&gt;, customobject &lt;object&gt;</p>
+             * <p>For DOMReady events, there are no fire argments, so the
+             * signature is:</p>
+             * <p>"DOMReady", [], obj</p>
+             *
+             *
+            * @method onDOMReady
+             *
+            * @param {function} fn what to execute when the element is found.
+            * @param {object}   obj an optional object to be passed back as
+             *                   a parameter to fn.
+            * @param {boolean|object}  overrideContext If set to true, fn will execute
+             *                   in the context of obj, if set to an object it
+             *                   will execute in the context of that object
+             *
+            * @static
+             */
+            // onDOMReady: function(fn, obj, overrideContext) {
+            onDOMReady: function() {
+                this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent, arguments);
+            },
+
+
+            /**
+             * Appends an event handler
+             *
+            * @method _addListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {String}   sType     The type of event to append
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @param {boolen}      capture capture or bubble phase
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @private
+            * @static
+             */
+            _addListener: function(el, sType, fn, obj, overrideContext, bCapture) {
+
+                if (!fn || !fn.call) {
+                    return false;
+                }
+
+                // The el argument can be an array of elements or element ids.
+                if ( this._isValidCollection(el)) {
+                    var ok = true;
+                    for (var i=0,len=el.length; i<len; ++i) {
+                        ok = this.on(el[i], 
+                                       sType, 
+                                       fn, 
+                                       obj, 
+                                       overrideContext) && ok;
+                    }
+                    return ok;
+
+                } else if (YAHOO.lang.isString(el)) {
+                    var oEl = this.getEl(el);
+                    // If the el argument is a string, we assume it is 
+                    // actually the id of the element.  If the page is loaded
+                    // we convert el to the actual element, otherwise we 
+                    // defer attaching the event until onload event fires
+
+                    // check to see if we need to delay hooking up the event 
+                    // until after the page loads.
+                    if (oEl) {
+                        el = oEl;
+                    } else {
+                        // defer adding the event until the element is available
+                        this.onAvailable(el, function() {
+                           YAHOO.util.Event._addListener(el, sType, fn, obj, overrideContext, bCapture);
+                        });
+
+                        return true;
+                    }
+                }
+
+                // Element should be an html element or an array if we get 
+                // here.
+                if (!el) {
+                    return false;
+                }
+
+                // we need to make sure we fire registered unload events 
+                // prior to automatically unhooking them.  So we hang on to 
+                // these instead of attaching them to the window and fire the
+                // handles explicitly during our one unload event.
+                if ("unload" == sType && obj !== this) {
+                    unloadListeners[unloadListeners.length] =
+                            [el, sType, fn, obj, overrideContext];
+                    return true;
+                }
+
+
+                // if the user chooses to override the context, we use the custom
+                // object passed in, otherwise the executing context will be the
+                // HTML element that the event is registered on
+                var context = el;
+                if (overrideContext) {
+                    if (overrideContext === true) {
+                        context = obj;
+                    } else {
+                        context = overrideContext;
+                    }
+                }
+
+                // wrap the function so we can return the obj object when
+                // the event fires;
+                var wrappedFn = function(e) {
+                        return fn.call(context, YAHOO.util.Event.getEvent(e, el), 
+                                obj);
+                    };
+
+                var li = [el, sType, fn, wrappedFn, context, obj, overrideContext, bCapture];
+                var index = listeners.length;
+                // cache the listener so we can try to automatically unload
+                listeners[index] = li;
+
+                try {
+                    this._simpleAdd(el, sType, wrappedFn, bCapture);
+                } catch(ex) {
+                    // handle an error trying to attach an event.  If it fails
+                    // we need to clean up the cache
+                    this.lastError = ex;
+                    this.removeListener(el, sType, fn);
+                    return false;
+                }
+
+                return true;
+                
+            },
+
+            /**
+             * Checks to see if the type requested is a special type 
+			 * (as defined by the _specialTypes hash), and (if so) returns 
+			 * the special type name.
+             *
+            * @method _getType
+             *
+            * @param {String}   sType     The type to look up
+            * @private
+             */
+			_getType: function (type) {
+			
+				return this._specialTypes[type] || type;
+				
+			},
+
+
+            /**
+             * Appends an event handler
+             *
+            * @method addListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {String}   sType     The type of event to append
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+             */
+            addListener: function (el, sType, fn, obj, overrideContext) {
+
+				var capture = ((sType == FOCUSIN || sType == FOCUSOUT) && !YAHOO.env.ua.ie) ? true : false;
+
+                return this._addListener(el, this._getType(sType), fn, obj, overrideContext, capture);
+
+        	},
+
+
+            /**
+             * Attaches a focusin event listener to the specified element for 
+ 			 * the purpose of listening for the focus event on the element's 
+             * descendants.
+            * @method addFocusListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+			* @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+             */
+            addFocusListener: function (el, fn, obj, overrideContext) {
+                return this.on(el, FOCUSIN, fn, obj, overrideContext);
+            },          
+
+
+            /**
+             * Removes a focusin event listener to the specified element for 
+			 * the purpose of listening for the focus event on the element's 
+             * descendants.
+             *
+            * @method removeFocusListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.removeListener and specify "focusin" as the event type.
+             */
+            removeFocusListener: function (el, fn) { 
+                return this.removeListener(el, FOCUSIN, fn);
+            },
+
+            /**
+             * Attaches a focusout event listener to the specified element for 
+			 * the purpose of listening for the blur event on the element's 
+			 * descendants.
+             *
+            * @method addBlurListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to assign the 
+             *  listener to.
+            * @param {Function} fn        The method the event invokes
+            * @param {Object}   obj    An arbitrary object that will be 
+             *                             passed as a parameter to the handler
+            * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes
+             *                             the execution context of the listener. If an
+             *                             object, this object becomes the execution
+             *                             context.
+            * @return {Boolean} True if the action was successful or defered,
+             *                        false if one or more of the elements 
+             *                        could not have the listener attached,
+             *                        or if the operation throws an exception.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+             */
+            addBlurListener: function (el, fn, obj, overrideContext) {
+                return this.on(el, FOCUSOUT, fn, obj, overrideContext);
+            },          
+
+            /**
+             * Removes a focusout event listener to the specified element for 
+			 * the purpose of listening for the blur event on the element's 
+			 * descendants.
+             *
+            * @method removeBlurListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+         	 * @deprecated use YAHOO.util.Event.removeListener and specify "focusout" as the event type.
+             */
+            removeBlurListener: function (el, fn) { 
+                return this.removeListener(el, FOCUSOUT, fn);
+            },
+
+            /**
+             * Removes an event listener
+             *
+            * @method removeListener
+             *
+            * @param {String|HTMLElement|Array|NodeList} el An id, an element 
+             *  reference, or a collection of ids and/or elements to remove
+             *  the listener from.
+            * @param {String} sType the type of event to remove.
+            * @param {Function} fn the method the event invokes.  If fn is
+             *  undefined, then all event handlers for the type of event are 
+             *  removed.
+            * @return {boolean} true if the unbind was successful, false 
+             *  otherwise.
+            * @static
+             */
+            removeListener: function(el, sType, fn) {
+                var i, len, li;
+
+				sType = this._getType(sType);
+
+                // The el argument can be a string
+                if (typeof el == "string") {
+                    el = this.getEl(el);
+                // The el argument can be an array of elements or element ids.
+                } else if ( this._isValidCollection(el)) {
+                    var ok = true;
+                    for (i=el.length-1; i>-1; i--) {
+                        ok = ( this.removeListener(el[i], sType, fn) && ok );
+                    }
+                    return ok;
+                }
+
+                if (!fn || !fn.call) {
+                    //return false;
+                    return this.purgeElement(el, false, sType);
+                }
+
+                if ("unload" == sType) {
+
+                    for (i=unloadListeners.length-1; i>-1; i--) {
+                        li = unloadListeners[i];
+                        if (li && 
+                            li[0] == el && 
+                            li[1] == sType && 
+                            li[2] == fn) {
+                                unloadListeners.splice(i, 1);
+                                // unloadListeners[i]=null;
+                                return true;
+                        }
+                    }
+
+                    return false;
+                }
+
+                var cacheItem = null;
+
+                // The index is a hidden parameter; needed to remove it from
+                // the method signature because it was tempting users to
+                // try and take advantage of it, which is not possible.
+                var index = arguments[3];
+  
+                if ("undefined" === typeof index) {
+                    index = this._getCacheIndex(listeners, el, sType, fn);
+                }
+
+                if (index >= 0) {
+                    cacheItem = listeners[index];
+                }
+
+                if (!el || !cacheItem) {
+                    return false;
+                }
+
+
+				var bCapture = cacheItem[this.CAPTURE] === true ? true : false;
+
+                try {
+                    this._simpleRemove(el, sType, cacheItem[this.WFN], bCapture);
+                } catch(ex) {
+                    this.lastError = ex;
+                    return false;
+                }
+
+                // removed the wrapped handler
+                delete listeners[index][this.WFN];
+                delete listeners[index][this.FN];
+                listeners.splice(index, 1);
+                // listeners[index]=null;
+
+                return true;
+
+            },
+
+            /**
+             * Returns the event's target element.  Safari sometimes provides
+             * a text node, and this is automatically resolved to the text
+             * node's parent so that it behaves like other browsers.
+            * @method getTarget
+            * @param {Event} ev the event
+            * @param {boolean} resolveTextNode when set to true the target's
+             *                  parent will be returned if the target is a 
+             *                  text node.  @deprecated, the text node is
+             *                  now resolved automatically
+            * @return {HTMLElement} the event's target
+            * @static
+             */
+            getTarget: function(ev, resolveTextNode) {
+                var t = ev.target || ev.srcElement;
+                return this.resolveTextNode(t);
+            },
+
+            /**
+             * In some cases, some browsers will return a text node inside
+             * the actual element that was targeted.  This normalizes the
+             * return value for getTarget and getRelatedTarget.
+            * @method resolveTextNode
+            * @param {HTMLElement} node node to resolve
+            * @return {HTMLElement} the normized node
+            * @static
+             */
+            resolveTextNode: function(n) {
+                try {
+                    if (n && 3 == n.nodeType) {
+                        return n.parentNode;
+                    }
+                } catch(e) { }
+
+                return n;
+            },
+
+            /**
+             * Returns the event's pageX
+            * @method getPageX
+            * @param {Event} ev the event
+            * @return {int} the event's pageX
+            * @static
+             */
+            getPageX: function(ev) {
+                var x = ev.pageX;
+                if (!x && 0 !== x) {
+                    x = ev.clientX || 0;
+
+                    if ( this.isIE ) {
+                        x += this._getScrollLeft();
+                    }
+                }
+
+                return x;
+            },
+
+            /**
+             * Returns the event's pageY
+            * @method getPageY
+            * @param {Event} ev the event
+            * @return {int} the event's pageY
+            * @static
+             */
+            getPageY: function(ev) {
+                var y = ev.pageY;
+                if (!y && 0 !== y) {
+                    y = ev.clientY || 0;
+
+                    if ( this.isIE ) {
+                        y += this._getScrollTop();
+                    }
+                }
+
+
+                return y;
+            },
+
+            /**
+             * Returns the pageX and pageY properties as an indexed array.
+            * @method getXY
+            * @param {Event} ev the event
+            * @return {[x, y]} the pageX and pageY properties of the event
+            * @static
+             */
+            getXY: function(ev) {
+                return [this.getPageX(ev), this.getPageY(ev)];
+            },
+
+            /**
+             * Returns the event's related target 
+            * @method getRelatedTarget
+            * @param {Event} ev the event
+            * @return {HTMLElement} the event's relatedTarget
+            * @static
+             */
+            getRelatedTarget: function(ev) {
+                var t = ev.relatedTarget;
+                if (!t) {
+                    if (ev.type == "mouseout") {
+                        t = ev.toElement;
+                    } else if (ev.type == "mouseover") {
+                        t = ev.fromElement;
+                    }
+                }
+
+                return this.resolveTextNode(t);
+            },
+
+            /**
+             * Returns the time of the event.  If the time is not included, the
+             * event is modified using the current time.
+            * @method getTime
+            * @param {Event} ev the event
+            * @return {Date} the time of the event
+            * @static
+             */
+            getTime: function(ev) {
+                if (!ev.time) {
+                    var t = new Date().getTime();
+                    try {
+                        ev.time = t;
+                    } catch(ex) { 
+                        this.lastError = ex;
+                        return t;
+                    }
+                }
+
+                return ev.time;
+            },
+
+            /**
+             * Convenience method for stopPropagation + preventDefault
+            * @method stopEvent
+            * @param {Event} ev the event
+            * @static
+             */
+            stopEvent: function(ev) {
+                this.stopPropagation(ev);
+                this.preventDefault(ev);
+            },
+
+            /**
+             * Stops event propagation
+            * @method stopPropagation
+            * @param {Event} ev the event
+            * @static
+             */
+            stopPropagation: function(ev) {
+                if (ev.stopPropagation) {
+                    ev.stopPropagation();
+                } else {
+                    ev.cancelBubble = true;
+                }
+            },
+
+            /**
+             * Prevents the default behavior of the event
+            * @method preventDefault
+            * @param {Event} ev the event
+            * @static
+             */
+            preventDefault: function(ev) {
+                if (ev.preventDefault) {
+                    ev.preventDefault();
+                } else {
+                    ev.returnValue = false;
+                }
+            },
+             
+            /**
+             * Finds the event in the window object, the caller's arguments, or
+             * in the arguments of another method in the callstack.  This is
+             * executed automatically for events registered through the event
+             * manager, so the implementer should not normally need to execute
+             * this function at all.
+            * @method getEvent
+            * @param {Event} e the event parameter from the handler
+            * @param {HTMLElement} boundEl the element the listener is attached to
+            * @return {Event} the event 
+            * @static
+             */
+            getEvent: function(e, boundEl) {
+                var ev = e || window.event;
+
+                if (!ev) {
+                    var c = this.getEvent.caller;
+                    while (c) {
+                        ev = c.arguments[0];
+                        if (ev && Event == ev.constructor) {
+                            break;
+                        }
+                        c = c.caller;
+                    }
+                }
+
+                return ev;
+            },
+
+            /**
+             * Returns the charcode for an event
+            * @method getCharCode
+            * @param {Event} ev the event
+            * @return {int} the event's charCode
+            * @static
+             */
+            getCharCode: function(ev) {
+                var code = ev.keyCode || ev.charCode || 0;
+
+                // webkit key normalization
+                if (YAHOO.env.ua.webkit && (code in webkitKeymap)) {
+                    code = webkitKeymap[code];
+                }
+                return code;
+            },
+
+            /**
+             * Locating the saved event handler data by function ref
+             *
+            * @method _getCacheIndex
+            * @static
+            * @private
+             */
+            _getCacheIndex: function(a, el, sType, fn) {
+                for (var i=0, l=a.length; i<l; i=i+1) {
+                    var li = a[i];
+                    if ( li                 && 
+                         li[this.FN] == fn  && 
+                         li[this.EL] == el  && 
+                         li[this.TYPE] == sType ) {
+                        return i;
+                    }
+                }
+
+                return -1;
+            },
+
+            /**
+             * Generates an unique ID for the element if it does not already 
+             * have one.
+            * @method generateId
+            * @param el the element to create the id for
+            * @return {string} the resulting id of the element
+            * @static
+             */
+            generateId: function(el) {
+                var id = el.id;
+
+                if (!id) {
+                    id = "yuievtautoid-" + counter;
+                    ++counter;
+                    el.id = id;
+                }
+
+                return id;
+            },
+
+
+            /**
+             * We want to be able to use getElementsByTagName as a collection
+             * to attach a group of events to.  Unfortunately, different 
+             * browsers return different types of collections.  This function
+             * tests to determine if the object is array-like.  It will also 
+             * fail if the object is an array, but is empty.
+            * @method _isValidCollection
+            * @param o the object to test
+            * @return {boolean} true if the object is array-like and populated
+            * @static
+            * @private
+             */
+            _isValidCollection: function(o) {
+                try {
+                    return ( o                     && // o is something
+                             typeof o !== "string" && // o is not a string
+                             o.length              && // o is indexed
+                             !o.tagName            && // o is not an HTML element
+                             !o.alert              && // o is not a window
+                             typeof o[0] !== "undefined" );
+                } catch(ex) {
+                    return false;
+                }
+
+            },
+
+            /**
+            * @private
+            * @property elCache
+             * DOM element cache
+            * @static
+            * @deprecated Elements are not cached due to issues that arise when
+             * elements are removed and re-added
+             */
+            elCache: {},
+
+            /**
+             * We cache elements bound by id because when the unload event 
+             * fires, we can no longer use document.getElementById
+            * @method getEl
+            * @static
+            * @private
+            * @deprecated Elements are not cached any longer
+             */
+            getEl: function(id) {
+                return (typeof id === "string") ? document.getElementById(id) : id;
+            },
+
+            /**
+             * Clears the element cache
+            * @deprecated Elements are not cached any longer
+            * @method clearCache
+            * @static
+            * @private
+             */
+            clearCache: function() { },
+
+            /**
+             * Custom event the fires when the dom is initially usable
+            * @event DOMReadyEvent
+             */
+            DOMReadyEvent: new YAHOO.util.CustomEvent("DOMReady", YAHOO, 0, 0, 1),
+
+            /**
+             * hook up any deferred listeners
+            * @method _load
+            * @static
+            * @private
+             */
+            _load: function(e) {
+
+                if (!loadComplete) {
+                    loadComplete = true;
+                    var EU = YAHOO.util.Event;
+
+                    // Just in case DOMReady did not go off for some reason
+                    EU._ready();
+
+                    // Available elements may not have been detected before the
+                    // window load event fires. Try to find them now so that the
+                    // the user is more likely to get the onAvailable notifications
+                    // before the window load notification
+                    EU._tryPreloadAttach();
+
+                }
+            },
+
+            /**
+             * Fires the DOMReady event listeners the first time the document is
+             * usable.
+            * @method _ready
+            * @static
+            * @private
+             */
+            _ready: function(e) {
+                var EU = YAHOO.util.Event;
+                if (!EU.DOMReady) {
+                    EU.DOMReady=true;
+
+                    // Fire the content ready custom event
+                    EU.DOMReadyEvent.fire();
+
+                    // Remove the DOMContentLoaded (FF/Opera)
+                    EU._simpleRemove(document, "DOMContentLoaded", EU._ready);
+                }
+            },
+
+            /**
+             * Polling function that runs before the onload event fires, 
+             * attempting to attach to DOM Nodes as soon as they are 
+             * available
+            * @method _tryPreloadAttach
+            * @static
+            * @private
+             */
+            _tryPreloadAttach: function() {
+
+                if (onAvailStack.length === 0) {
+                    retryCount = 0;
+                    if (this._interval) {
+                        // clearInterval(this._interval);
+                        this._interval.cancel();
+                        this._interval = null;
+                    } 
+                    return;
+                }
+
+                if (this.locked) {
+                    return;
+                }
+
+                if (this.isIE) {
+                    // Hold off if DOMReady has not fired and check current
+                    // readyState to protect against the IE operation aborted
+                    // issue.
+                    if (!this.DOMReady) {
+                        this.startInterval();
+                        return;
+                    }
+                }
+
+                this.locked = true;
+
+
+                // keep trying until after the page is loaded.  We need to 
+                // check the page load state prior to trying to bind the 
+                // elements so that we can be certain all elements have been 
+                // tested appropriately
+                var tryAgain = !loadComplete;
+                if (!tryAgain) {
+                    tryAgain = (retryCount > 0 && onAvailStack.length > 0);
+                }
+
+                // onAvailable
+                var notAvail = [];
+
+                var executeItem = function (el, item) {
+                    var context = el;
+                    if (item.overrideContext) {
+                        if (item.overrideContext === true) {
+                            context = item.obj;
+                        } else {
+                            context = item.overrideContext;
+                        }
+                    }
+                    item.fn.call(context, item.obj);
+                };
+
+                var i, len, item, el, ready=[];
+
+                // onAvailable onContentReady
+                for (i=0, len=onAvailStack.length; i<len; i=i+1) {
+                    item = onAvailStack[i];
+                    if (item) {
+                        el = this.getEl(item.id);
+                        if (el) {
+                            if (item.checkReady) {
+                                if (loadComplete || el.nextSibling || !tryAgain) {
+                                    ready.push(item);
+                                    onAvailStack[i] = null;
+                                }
+                            } else {
+                                executeItem(el, item);
+                                onAvailStack[i] = null;
+                            }
+                        } else {
+                            notAvail.push(item);
+                        }
+                    }
+                }
+                
+                // make sure onContentReady fires after onAvailable
+                for (i=0, len=ready.length; i<len; i=i+1) {
+                    item = ready[i];
+                    executeItem(this.getEl(item.id), item);
+                }
+
+
+                retryCount--;
+
+                if (tryAgain) {
+                    for (i=onAvailStack.length-1; i>-1; i--) {
+                        item = onAvailStack[i];
+                        if (!item || !item.id) {
+                            onAvailStack.splice(i, 1);
+                        }
+                    }
+
+                    this.startInterval();
+                } else {
+                    if (this._interval) {
+                        // clearInterval(this._interval);
+                        this._interval.cancel();
+                        this._interval = null;
+                    }
+                }
+
+                this.locked = false;
+
+            },
+
+            /**
+             * Removes all listeners attached to the given element via addListener.
+             * Optionally, the node's children can also be purged.
+             * Optionally, you can specify a specific type of event to remove.
+            * @method purgeElement
+            * @param {HTMLElement} el the element to purge
+            * @param {boolean} recurse recursively purge this element's children
+             * as well.  Use with caution.
+            * @param {string} sType optional type of listener to purge. If
+             * left out, all listeners will be removed
+            * @static
+             */
+            purgeElement: function(el, recurse, sType) {
+                var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el;
+                var elListeners = this.getListeners(oEl, sType), i, len;
+                if (elListeners) {
+                    for (i=elListeners.length-1; i>-1; i--) {
+                        var l = elListeners[i];
+                        this.removeListener(oEl, l.type, l.fn);
+                    }
+                }
+
+                if (recurse && oEl && oEl.childNodes) {
+                    for (i=0,len=oEl.childNodes.length; i<len ; ++i) {
+                        this.purgeElement(oEl.childNodes[i], recurse, sType);
+                    }
+                }
+            },
+
+            /**
+             * Returns all listeners attached to the given element via addListener.
+             * Optionally, you can specify a specific type of event to return.
+            * @method getListeners
+            * @param el {HTMLElement|string} the element or element id to inspect 
+            * @param sType {string} optional type of listener to return. If
+             * left out, all listeners will be returned
+            * @return {Object} the listener. Contains the following fields:
+             * &nbsp;&nbsp;type:   (string)   the type of event
+             * &nbsp;&nbsp;fn:     (function) the callback supplied to addListener
+             * &nbsp;&nbsp;obj:    (object)   the custom object supplied to addListener
+             * &nbsp;&nbsp;adjust: (boolean|object)  whether or not to adjust the default context
+             * &nbsp;&nbsp;scope: (boolean)  the derived context based on the adjust parameter
+             * &nbsp;&nbsp;index:  (int)      its position in the Event util listener cache
+            * @static
+             */           
+            getListeners: function(el, sType) {
+                var results=[], searchLists;
+                if (!sType) {
+                    searchLists = [listeners, unloadListeners];
+                } else if (sType === "unload") {
+                    searchLists = [unloadListeners];
+                } else {
+					sType = this._getType(sType);
+                    searchLists = [listeners];
+                }
+
+                var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el;
+
+                for (var j=0;j<searchLists.length; j=j+1) {
+                    var searchList = searchLists[j];
+                    if (searchList) {
+                        for (var i=0,len=searchList.length; i<len ; ++i) {
+                            var l = searchList[i];
+                            if ( l  && l[this.EL] === oEl && 
+                                    (!sType || sType === l[this.TYPE]) ) {
+                                results.push({
+                                    type:   l[this.TYPE],
+                                    fn:     l[this.FN],
+                                    obj:    l[this.OBJ],
+                                    adjust: l[this.OVERRIDE],
+                                    scope:  l[this.ADJ_SCOPE],
+                                    index:  i
+                                });
+                            }
+                        }
+                    }
+                }
+
+                return (results.length) ? results : null;
+            },
+
+            /**
+             * Removes all listeners registered by pe.event.  Called 
+             * automatically during the unload event.
+            * @method _unload
+            * @static
+            * @private
+             */
+            _unload: function(e) {
+
+                var EU = YAHOO.util.Event, i, j, l, len, index,
+                         ul = unloadListeners.slice(), context;
+
+                // execute and clear stored unload listeners
+                for (i=0, len=unloadListeners.length; i<len; ++i) {
+                    l = ul[i];
+                    if (l) {
+                        context = window;
+                        if (l[EU.ADJ_SCOPE]) {
+                            if (l[EU.ADJ_SCOPE] === true) {
+                                context = l[EU.UNLOAD_OBJ];
+                            } else {
+                                context = l[EU.ADJ_SCOPE];
+                            }
+                        }
+                        l[EU.FN].call(context, EU.getEvent(e, l[EU.EL]), l[EU.UNLOAD_OBJ] );
+                        ul[i] = null;
+                    }
+                }
+
+                l = null;
+                context = null;
+                unloadListeners = null;
+
+                // Remove listeners to handle IE memory leaks
+                // 2.5.0 listeners are removed for all browsers again.  FireFox preserves
+                // at least some listeners between page refreshes, potentially causing
+                // errors during page load (mouseover listeners firing before they
+                // should if the user moves the mouse at the correct moment).
+                if (listeners) {
+                    for (j=listeners.length-1; j>-1; j--) {
+                        l = listeners[j];
+                        if (l) {
+                            EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], j);
+                        } 
+                    }
+                    l=null;
+                }
+
+                EU._simpleRemove(window, "unload", EU._unload);
+
+            },
+
+            /**
+             * Returns scrollLeft
+            * @method _getScrollLeft
+            * @static
+            * @private
+             */
+            _getScrollLeft: function() {
+                return this._getScroll()[1];
+            },
+
+            /**
+             * Returns scrollTop
+            * @method _getScrollTop
+            * @static
+            * @private
+             */
+            _getScrollTop: function() {
+                return this._getScroll()[0];
+            },
+
+            /**
+             * Returns the scrollTop and scrollLeft.  Used to calculate the 
+             * pageX and pageY in Internet Explorer
+            * @method _getScroll
+            * @static
+            * @private
+             */
+            _getScroll: function() {
+                var dd = document.documentElement, db = document.body;
+                if (dd && (dd.scrollTop || dd.scrollLeft)) {
+                    return [dd.scrollTop, dd.scrollLeft];
+                } else if (db) {
+                    return [db.scrollTop, db.scrollLeft];
+                } else {
+                    return [0, 0];
+                }
+            },
+            
+            /**
+             * Used by old versions of CustomEvent, restored for backwards
+             * compatibility
+            * @method regCE
+            * @private
+            * @static
+            * @deprecated still here for backwards compatibility
+             */
+            regCE: function() {},
+
+            /**
+             * Adds a DOM event directly without the caching, cleanup, context adj, etc
+             *
+            * @method _simpleAdd
+            * @param {HTMLElement} el      the element to bind the handler to
+            * @param {string}      sType   the type of event handler
+            * @param {function}    fn      the callback to invoke
+            * @param {boolen}      capture capture or bubble phase
+            * @static
+            * @private
+             */
+            _simpleAdd: function () {
+                if (window.addEventListener) {
+                    return function(el, sType, fn, capture) {
+                        el.addEventListener(sType, fn, (capture));
+                    };
+                } else if (window.attachEvent) {
+                    return function(el, sType, fn, capture) {
+                        el.attachEvent("on" + sType, fn);
+                    };
+                } else {
+                    return function(){};
+                }
+            }(),
+
+            /**
+             * Basic remove listener
+             *
+            * @method _simpleRemove
+            * @param {HTMLElement} el      the element to bind the handler to
+            * @param {string}      sType   the type of event handler
+            * @param {function}    fn      the callback to invoke
+            * @param {boolen}      capture capture or bubble phase
+            * @static
+            * @private
+             */
+            _simpleRemove: function() {
+                if (window.removeEventListener) {
+                    return function (el, sType, fn, capture) {
+                        el.removeEventListener(sType, fn, (capture));
+                    };
+                } else if (window.detachEvent) {
+                    return function (el, sType, fn) {
+                        el.detachEvent("on" + sType, fn);
+                    };
+                } else {
+                    return function(){};
+                }
+            }()
+        };
+
+    }();
+
+    (function() {
+        var EU = YAHOO.util.Event;
+
+        /**
+         * YAHOO.util.Event.on is an alias for addListener
+        * @method on
+        * @see addListener
+        * @static
+         */
+        EU.on = EU.addListener;
+
+        /**
+         * YAHOO.util.Event.onFocus is an alias for addFocusListener
+        * @method onFocus
+        * @see addFocusListener
+        * @static
+		 * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+         */
+        EU.onFocus = EU.addFocusListener;
+
+        /**
+         * YAHOO.util.Event.onBlur is an alias for addBlurListener
+        * @method onBlur
+        * @see addBlurListener
+        * @static
+		 * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+         */     
+        EU.onBlur = EU.addBlurListener;
+
+/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
+
+        // Internet Explorer: use the readyState of a defered script.
+        // This isolates what appears to be a safe moment to manipulate
+        // the DOM prior to when the document's readyState suggests
+        // it is safe to do so.
+        if (EU.isIE) {
+            if (self !== self.top) {
+                document.onreadystatechange = function() {
+                    if (document.readyState == 'complete') {
+                        document.onreadystatechange = null;
+                        EU._ready();
+                    }
+                };
+            } else {
+
+                // Process onAvailable/onContentReady items when the 
+                // DOM is ready.
+                YAHOO.util.Event.onDOMReady(
+                        YAHOO.util.Event._tryPreloadAttach,
+                        YAHOO.util.Event, true);
+                
+                var n = document.createElement('p');  
+
+                EU._dri = setInterval(function() {
+                    try {
+                        // throws an error if doc is not ready
+                        n.doScroll('left');
+                        clearInterval(EU._dri);
+                        EU._dri = null;
+                        EU._ready();
+                        n = null;
+                    } catch (ex) { 
+                    }
+                }, EU.POLL_INTERVAL); 
+            }
+
+        // The document's readyState in Safari currently will
+        // change to loaded/complete before images are loaded.
+        } else if (EU.webkit && EU.webkit < 525) {
+
+            EU._dri = setInterval(function() {
+                var rs=document.readyState;
+                if ("loaded" == rs || "complete" == rs) {
+                    clearInterval(EU._dri);
+                    EU._dri = null;
+                    EU._ready();
+                }
+            }, EU.POLL_INTERVAL); 
+
+        // FireFox and Opera: These browsers provide a event for this
+        // moment.  The latest WebKit releases now support this event.
+        } else {
+
+            EU._simpleAdd(document, "DOMContentLoaded", EU._ready);
+
+        }
+        /////////////////////////////////////////////////////////////
+
+
+        EU._simpleAdd(window, "load", EU._load);
+        EU._simpleAdd(window, "unload", EU._unload);
+        EU._tryPreloadAttach();
+    })();
+
+}
+/**
+ * EventProvider is designed to be used with YAHOO.augment to wrap 
+ * CustomEvents in an interface that allows events to be subscribed to 
+ * and fired by name.  This makes it possible for implementing code to
+ * subscribe to an event that either has not been created yet, or will
+ * not be created at all.
+ *
+ * @Class EventProvider
+ */
+YAHOO.util.EventProvider = function() { };
+
+YAHOO.util.EventProvider.prototype = {
+
+    /**
+     * Private storage of custom events
+    * @property __yui_events
+    * @type Object[]
+    * @private
+     */
+    __yui_events: null,
+
+    /**
+     * Private storage of custom event subscribers
+    * @property __yui_subscribers
+    * @type Object[]
+    * @private
+     */
+    __yui_subscribers: null,
+    
+    /**
+     * Subscribe to a CustomEvent by event type
+     *
+    * @method subscribe
+    * @param p_type     {string}   the type, or name of the event
+    * @param p_fn       {function} the function to exectute when the event fires
+    * @param p_obj      {Object}   An object to be passed along when the event 
+     *                              fires
+    * @param overrideContext {boolean}  If true, the obj passed in becomes the 
+     *                              execution scope of the listener
+     */
+    subscribe: function(p_type, p_fn, p_obj, overrideContext) {
+
+        this.__yui_events = this.__yui_events || {};
+        var ce = this.__yui_events[p_type];
+
+        if (ce) {
+            ce.subscribe(p_fn, p_obj, overrideContext);
+        } else {
+            this.__yui_subscribers = this.__yui_subscribers || {};
+            var subs = this.__yui_subscribers;
+            if (!subs[p_type]) {
+                subs[p_type] = [];
+            }
+            subs[p_type].push(
+                { fn: p_fn, obj: p_obj, overrideContext: overrideContext } );
+        }
+    },
+
+    /**
+     * Unsubscribes one or more listeners the from the specified event
+    * @method unsubscribe
+    * @param p_type {string}   The type, or name of the event.  If the type
+     *                          is not specified, it will attempt to remove
+     *                          the listener from all hosted events.
+    * @param p_fn   {Function} The subscribed function to unsubscribe, if not
+     *                          supplied, all subscribers will be removed.
+    * @param p_obj  {Object}   The custom object passed to subscribe.  This is
+     *                        optional, but if supplied will be used to
+     *                        disambiguate multiple listeners that are the same
+     *                        (e.g., you subscribe many object using a function
+     *                        that lives on the prototype)
+    * @return {boolean} true if the subscriber was found and detached.
+     */
+    unsubscribe: function(p_type, p_fn, p_obj) {
+        this.__yui_events = this.__yui_events || {};
+        var evts = this.__yui_events;
+        if (p_type) {
+            var ce = evts[p_type];
+            if (ce) {
+                return ce.unsubscribe(p_fn, p_obj);
+            }
+        } else {
+            var ret = true;
+            for (var i in evts) {
+                if (YAHOO.lang.hasOwnProperty(evts, i)) {
+                    ret = ret && evts[i].unsubscribe(p_fn, p_obj);
+                }
+            }
+            return ret;
+        }
+
+        return false;
+    },
+    
+    /**
+     * Removes all listeners from the specified event.  If the event type
+     * is not specified, all listeners from all hosted custom events will
+     * be removed.
+    * @method unsubscribeAll
+    * @param p_type {string}   The type, or name of the event
+     */
+    unsubscribeAll: function(p_type) {
+        return this.unsubscribe(p_type);
+    },
+
+    /**
+     * Creates a new custom event of the specified type.  If a custom event
+     * by that name already exists, it will not be re-created.  In either
+     * case the custom event is returned. 
+     *
+    * @method createEvent
+     *
+    * @param p_type {string} the type, or name of the event
+    * @param p_config {object} optional config params.  Valid properties are:
+     *
+     *  <ul>
+     *    <li>
+     *      scope: defines the default execution scope.  If not defined
+     *      the default scope will be this instance.
+     *    </li>
+     *    <li>
+     *      silent: if true, the custom event will not generate log messages.
+     *      This is false by default.
+     *    </li>
+     *    <li>
+     *      fireOnce: if true, the custom event will only notify subscribers
+     *      once regardless of the number of times the event is fired.  In
+     *      addition, new subscribers will be executed immediately if the
+     *      event has already fired.
+     *      This is false by default.
+     *    </li>
+     *    <li>
+     *      onSubscribeCallback: specifies a callback to execute when the
+     *      event has a new subscriber.  This will fire immediately for
+     *      each queued subscriber if any exist prior to the creation of
+     *      the event.
+     *    </li>
+     *  </ul>
+     *
+     *  @return {CustomEvent} the custom event
+     *
+     */
+    createEvent: function(p_type, p_config) {
+
+        this.__yui_events = this.__yui_events || {};
+        var opts = p_config || {},
+            events = this.__yui_events, ce;
+
+        if (events[p_type]) {
+        } else {
+
+            ce = new YAHOO.util.CustomEvent(p_type, opts.scope || this, opts.silent,
+                         YAHOO.util.CustomEvent.FLAT, opts.fireOnce);
+
+            events[p_type] = ce;
+
+            if (opts.onSubscribeCallback) {
+                ce.subscribeEvent.subscribe(opts.onSubscribeCallback);
+            }
+
+            this.__yui_subscribers = this.__yui_subscribers || {};
+            var qs = this.__yui_subscribers[p_type];
+
+            if (qs) {
+                for (var i=0; i<qs.length; ++i) {
+                    ce.subscribe(qs[i].fn, qs[i].obj, qs[i].overrideContext);
+                }
+            }
+        }
+
+        return events[p_type];
+    },
+
+
+   /**
+     * Fire a custom event by name.  The callback functions will be executed
+     * from the scope specified when the event was created, and with the 
+     * following parameters:
+     *   <ul>
+     *   <li>The first argument fire() was executed with</li>
+     *   <li>The custom object (if any) that was passed into the subscribe() 
+     *       method</li>
+     *   </ul>
+    * @method fireEvent
+    * @param p_type    {string}  the type, or name of the event
+    * @param arguments {Object*} an arbitrary set of parameters to pass to 
+     *                            the handler.
+    * @return {boolean} the return value from CustomEvent.fire
+     *                   
+     */
+    fireEvent: function(p_type) {
+
+        this.__yui_events = this.__yui_events || {};
+        var ce = this.__yui_events[p_type];
+
+        if (!ce) {
+            return null;
+        }
+
+        var args = [];
+        for (var i=1; i<arguments.length; ++i) {
+            args.push(arguments[i]);
+        }
+        return ce.fire.apply(ce, args);
+    },
+
+    /**
+     * Returns true if the custom event of the provided type has been created
+     * with createEvent.
+    * @method hasEvent
+    * @param type {string} the type, or name of the event
+     */
+    hasEvent: function(type) {
+        if (this.__yui_events) {
+            if (this.__yui_events[type]) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+};
+
+(function() {
+
+    var Event = YAHOO.util.Event, Lang = YAHOO.lang;
+
+/**
+* KeyListener is a utility that provides an easy interface for listening for
+* keydown/keyup events fired against DOM elements.
+* @namespace YAHOO.util
+* @class KeyListener
+* @constructor
+* @param {HTMLElement} attachTo The element or element ID to which the key 
+*                               event should be attached
+* @param {String}      attachTo The element or element ID to which the key
+*                               event should be attached
+* @param {Object}      keyData  The object literal representing the key(s) 
+*                               to detect. Possible attributes are 
+*                               shift(boolean), alt(boolean), ctrl(boolean) 
+*                               and keys(either an int or an array of ints 
+*                               representing keycodes).
+* @param {Function}    handler  The CustomEvent handler to fire when the 
+*                               key event is detected
+* @param {Object}      handler  An object literal representing the handler. 
+* @param {String}      event    Optional. The event (keydown or keyup) to 
+*                               listen for. Defaults automatically to keydown.
+*
+* @knownissue the "keypress" event is completely broken in Safari 2.x and below.
+*             the workaround is use "keydown" for key listening.  However, if
+*             it is desired to prevent the default behavior of the keystroke,
+*             that can only be done on the keypress event.  This makes key
+*             handling quite ugly.
+* @knownissue keydown is also broken in Safari 2.x and below for the ESC key.
+*             There currently is no workaround other than choosing another
+*             key to listen for.
+*/
+YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
+    if (!attachTo) {
+    } else if (!keyData) {
+    } else if (!handler) {
+    } 
+    
+    if (!event) {
+        event = YAHOO.util.KeyListener.KEYDOWN;
+    }
+
+    /**
+    * The CustomEvent fired internally when a key is pressed
+   * @event keyEvent
+   * @private
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    var keyEvent = new YAHOO.util.CustomEvent("keyPressed");
+    
+    /**
+    * The CustomEvent fired when the KeyListener is enabled via the enable() 
+    * function
+   * @event enabledEvent
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    this.enabledEvent = new YAHOO.util.CustomEvent("enabled");
+
+    /**
+    * The CustomEvent fired when the KeyListener is disabled via the 
+    * disable() function
+   * @event disabledEvent
+   * @param {Object} keyData The object literal representing the key(s) to 
+    *                         detect. Possible attributes are shift(boolean), 
+    *                         alt(boolean), ctrl(boolean) and keys(either an 
+    *                         int or an array of ints representing keycodes).
+    */
+    this.disabledEvent = new YAHOO.util.CustomEvent("disabled");
+
+    if (Lang.isString(attachTo)) {
+        attachTo = document.getElementById(attachTo); // No Dom util
+    }
+
+    if (Lang.isFunction(handler)) {
+        keyEvent.subscribe(handler);
+    } else {
+        keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope);
+    }
+
+    /**
+    * Handles the key event when a key is pressed.
+   * @method handleKeyPress
+   * @param {DOMEvent} e   The keypress DOM event
+   * @param {Object}   obj The DOM event scope object
+   * @private
+    */
+    function handleKeyPress(e, obj) {
+        if (! keyData.shift) {  
+            keyData.shift = false; 
+        }
+        if (! keyData.alt) {    
+            keyData.alt = false;
+        }
+        if (! keyData.ctrl) {
+            keyData.ctrl = false;
+        }
+
+        // check held down modifying keys first
+        if (e.shiftKey == keyData.shift && 
+            e.altKey   == keyData.alt &&
+            e.ctrlKey  == keyData.ctrl) { // if we pass this, all modifiers match
+            
+            var dataItem, keys = keyData.keys, key;
+
+            if (YAHOO.lang.isArray(keys)) {
+                for (var i=0;i<keys.length;i++) {
+                    dataItem = keys[i];
+                    key = Event.getCharCode(e);
+
+                    if (dataItem == key) {
+                        keyEvent.fire(key, e);
+                        break;
+                    }
+                }
+            } else {
+                key = Event.getCharCode(e);
+                if (keys == key ) {
+                    keyEvent.fire(key, e);
+                }
+            }
+        }
+    }
+
+    /**
+    * Enables the KeyListener by attaching the DOM event listeners to the 
+    * target DOM element
+   * @method enable
+    */
+    this.enable = function() {
+        if (! this.enabled) {
+            Event.on(attachTo, event, handleKeyPress);
+            this.enabledEvent.fire(keyData);
+        }
+        /**
+        * Boolean indicating the enabled/disabled state of the Tooltip
+       * @property enabled
+       * @type Boolean
+        */
+        this.enabled = true;
+    };
+
+    /**
+    * Disables the KeyListener by removing the DOM event listeners from the 
+    * target DOM element
+   * @method disable
+    */
+    this.disable = function() {
+        if (this.enabled) {
+            Event.removeListener(attachTo, event, handleKeyPress);
+            this.disabledEvent.fire(keyData);
+        }
+        this.enabled = false;
+    };
+
+    /**
+    * Returns a String representation of the object.
+   * @method toString
+   * @return {String}  The string representation of the KeyListener
+    */ 
+    this.toString = function() {
+        return "KeyListener [" + keyData.keys + "] " + attachTo.tagName + 
+                (attachTo.id ? "[" + attachTo.id + "]" : "");
+    };
+
+};
+
+var KeyListener = YAHOO.util.KeyListener;
+
+/**
+ * Constant representing the DOM "keydown" event.
+ * @property YAHOO.util.KeyListener.KEYDOWN
+ * @static
+ * @final
+ * @type String
+ */
+KeyListener.KEYDOWN = "keydown";
+
+/**
+ * Constant representing the DOM "keyup" event.
+ * @property YAHOO.util.KeyListener.KEYUP
+ * @static
+ * @final
+ * @type String
+ */
+KeyListener.KEYUP = "keyup";
+
+/**
+ * keycode constants for a subset of the special keys
+ * @property KEY
+ * @static
+ * @final
+ */
+KeyListener.KEY = {
+    ALT          : 18,
+    BACK_SPACE   : 8,
+    CAPS_LOCK    : 20,
+    CONTROL      : 17,
+    DELETE       : 46,
+    DOWN         : 40,
+    END          : 35,
+    ENTER        : 13,
+    ESCAPE       : 27,
+    HOME         : 36,
+    LEFT         : 37,
+    META         : 224,
+    NUM_LOCK     : 144,
+    PAGE_DOWN    : 34,
+    PAGE_UP      : 33, 
+    PAUSE        : 19,
+    PRINTSCREEN  : 44,
+    RIGHT        : 39,
+    SCROLL_LOCK  : 145,
+    SHIFT        : 16,
+    SPACE        : 32,
+    TAB          : 9,
+    UP           : 38
+};
+
+})();
+YAHOO.register("event", YAHOO.util.Event, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/event/event.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/event/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/event/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/event/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         yui
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/event/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/event/event-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/event/event-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/event/event-min.js	(revision 1610)
@@ -0,0 +1,11 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+YAHOO.util.CustomEvent=function(D,C,B,A,E){this.type=D;this.scope=C||window;this.silent=B;this.fireOnce=E;this.fired=false;this.firedWith=null;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var F="_YUICEOnSubscribe";if(D!==F){this.subscribeEvent=new YAHOO.util.CustomEvent(F,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,D){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,D);}var A=new YAHOO.util.Subscriber(B,C,D);if(this.fireOnce&&this.fired){this.notify(A,this.firedWith);}else{this.subscribers.push(A);}},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var H=[],A=this.subscribers.length;var D=[].slice.call(arguments,0),C=true,F,B=false;if(this.fireOnce){if(this.fired){return true;}else{this.firedWith=D;}}this.fired=true;if(!A&&this.silent){return true;}if(!this.silent){}var E=this.subscribers.slice();for(F=0;F<A;++F){var G=E[F];if(!G){B=true;}else{C=this.notify(G,D);if(false===C){if(!this.silent){}break;}}}return(C!==false);},notify:function(F,C){var B,H=null,E=F.getScope(this.scope),A=YAHOO.util.Event.throwErrors;if(!this.silent){}if(this.signature==YAHOO.util.CustomEvent.FLAT){if(C.length>0){H=C[0];}try{B=F.fn.call(E,H,F.obj);}catch(G){this.lastError=G;if(A){throw G;}}}else{try{B=F.fn.call(E,this.type,C,F.obj);}catch(D){this.lastError=D;if(A){throw D;}}}return B;},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var G=false,H=[],J=[],A=0,E=[],B=0,C={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},D=YAHOO.env.ua.ie,F="focusin",I="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:D,_interval:null,_dri:null,_specialTypes:{focusin:(D?"focusin":"focus"),focusout:(D?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(Q,M,O,P,N){var K=(YAHOO.lang.isString(Q))?[Q]:Q;for(var L=0;L<K.length;L=L+1){E.push({id:K[L],fn:M,obj:O,overrideContext:P,checkReady:N});}A=this.POLL_RETRYS;this.startInterval();},onContentReady:function(N,K,L,M){this.onAvailable(N,K,L,M,true);},onDOMReady:function(){this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent,arguments);},_addListener:function(M,K,V,P,T,Y){if(!V||!V.call){return false;}if(this._isValidCollection(M)){var W=true;for(var Q=0,S=M.length;Q<S;++Q){W=this.on(M[Q],K,V,P,T)&&W;}return W;}else{if(YAHOO.lang.isString(M)){var O=this.getEl(M);if(O){M=O;}else{this.onAvailable(M,function(){YAHOO.util.Event._addListener(M,K,V,P,T,Y);});return true;}}}if(!M){return false;}if("unload"==K&&P!==this){J[J.length]=[M,K,V,P,T];return true;}var L=M;if(T){if(T===true){L=P;}else{L=T;}}var N=function(Z){return V.call(L,YAHOO.util.Event.getEvent(Z,M),P);};var X=[M,K,V,N,L,P,T,Y];var R=H.length;H[R]=X;try{this._simpleAdd(M,K,N,Y);}catch(U){this.lastError=U;this.removeListener(M,K,V);return false;}return true;},_getType:function(K){return this._specialTypes[K]||K;},addListener:function(M,P,L,N,O){var K=((P==F||P==I)&&!YAHOO.env.ua.ie)?true:false;return this._addListener(M,this._getType(P),L,N,O,K);},addFocusListener:function(L,K,M,N){return this.on(L,F,K,M,N);},removeFocusListener:function(L,K){return this.removeListener(L,F,K);},addBlurListener:function(L,K,M,N){return this.on(L,I,K,M,N);},removeBlurListener:function(L,K){return this.removeListener(L,I,K);},removeListener:function(L,K,R){var M,P,U;K=this._getType(K);if(typeof L=="string"){L=this.getEl(L);}else{if(this._isValidCollection(L)){var S=true;for(M=L.length-1;M>-1;M--){S=(this.removeListener(L[M],K,R)&&S);}return S;}}if(!R||!R.call){return this.purgeElement(L,false,K);}if("unload"==K){for(M=J.length-1;M>-1;M--){U=J[M];if(U&&U[0]==L&&U[1]==K&&U[2]==R){J.splice(M,1);return true;}}return false;}var N=null;var O=arguments[3];if("undefined"===typeof O){O=this._getCacheIndex(H,L,K,R);}if(O>=0){N=H[O];}if(!L||!N){return false;}var T=N[this.CAPTURE]===true?true:false;try{this._simpleRemove(L,K,N[this.WFN],T);}catch(Q){this.lastError=Q;return false;}delete H[O][this.WFN];delete H[O][this.FN];H.splice(O,1);return true;},getTarget:function(M,L){var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(L){try{if(L&&3==L.nodeType){return L.parentNode;}}catch(K){}return L;},getPageX:function(L){var K=L.pageX;if(!K&&0!==K){K=L.clientX||0;if(this.isIE){K+=this._getScrollLeft();}}return K;},getPageY:function(K){var L=K.pageY;if(!L&&0!==L){L=K.clientY||0;if(this.isIE){L+=this._getScrollTop();}}return L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;
+}else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in C)){K=C[K];}return K;},_getCacheIndex:function(M,P,Q,O){for(var N=0,L=M.length;N<L;N=N+1){var K=M[N];if(K&&K[this.FN]==O&&K[this.EL]==P&&K[this.TYPE]==Q){return N;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+B;++B;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",YAHOO,0,0,1),_load:function(L){if(!G){G=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(E.length===0){A=0;if(this._interval){this._interval.cancel();this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var Q=!G;if(!Q){Q=(A>0&&E.length>0);}var P=[];var R=function(T,U){var S=T;if(U.overrideContext){if(U.overrideContext===true){S=U.obj;}else{S=U.overrideContext;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=E.length;L<K;L=L+1){O=E[L];if(O){N=this.getEl(O.id);if(N){if(O.checkReady){if(G||N.nextSibling||!Q){M.push(O);E[L]=null;}}else{R(N,O);E[L]=null;}}else{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1){O=M[L];R(this.getEl(O.id),O);}A--;if(Q){for(L=E.length-1;L>-1;L--){O=E[L];if(!O||!O.id){E.splice(L,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=Q.length-1;N>-1;N--){var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[H,J];}else{if(K==="unload"){L=[J];}else{K=this._getType(K);L=[H];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(R){var L=YAHOO.util.Event,O,N,M,Q,P,S=J.slice(),K;for(O=0,Q=J.length;O<Q;++O){M=S[O];if(M){K=window;if(M[L.ADJ_SCOPE]){if(M[L.ADJ_SCOPE]===true){K=M[L.UNLOAD_OBJ];}else{K=M[L.ADJ_SCOPE];}}M[L.FN].call(K,L.getEvent(R,M[L.EL]),M[L.UNLOAD_OBJ]);S[O]=null;}}M=null;K=null;J=null;if(H){for(N=H.length-1;N>-1;N--){M=H[N];if(M){L.removeListener(M[L.EL],M[L.TYPE],M[L.FN],N);}}M=null;}L._simpleRemove(window,"unload",L._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
+/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
+if(EU.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;EU._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);
+},createEvent:function(B,G){this.__yui_events=this.__yui_events||{};var E=G||{},D=this.__yui_events,F;if(D[B]){}else{F=new YAHOO.util.CustomEvent(B,E.scope||this,E.silent,YAHOO.util.CustomEvent.FLAT,E.fireOnce);D[B]=F;if(E.onSubscribeCallback){F.subscribeEvent.subscribe(E.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var A=this.__yui_subscribers[B];if(A){for(var C=0;C<A.length;++C){F.subscribe(A[C].fn,A[C].obj,A[C].overrideContext);}}}return D[B];},fireEvent:function(B){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[B];if(!D){return null;}var A=[];for(var C=1;C<arguments.length;++C){A.push(arguments[C]);}return D.fire.apply(D,A);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.8.0r4",build:"2449"});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/event/event-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/event/README
===================================================================
--- tags/2.8.3/wb/include/yui/event/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/event/README	(revision 1610)
@@ -0,0 +1,228 @@
+
+YUI Library - Event - Release Notes
+
+2.4.1
+  * Reverted clearAttributes() change to fix IE memory leak on iframes/windows
+
+2.4.0
+  * getListeners/purgeElement accepts either an element reference or an element id
+  * onAvailable/onContentReady accepts a single id or an array of ids
+  * No longer removing listeners during the unload event for non-IE browsers
+  * IE unload strategy for cross page memory leaks changed from removing each listener
+    to calling clearAttributes()
+  * the DOMReady property is now public
+  * Changed IE onDOMReady approach from the defered script node hack to the doScroll('left') hack
+  * getCharChode now Remaps SHIFT-TAB key code (25) to TAB (9) in Safari
+  * getCharCode provides the proper key codes for page up and page down in Safari
+  * Restored object check to _isValidCollection.
+  * In KeyListener, added keycode constants for some of the special keys.
+  * Rolled back the change added for hacking around IE errors from bubbled 
+    events that originally targeted an ActiveX control.
+
+2.3.1
+  * CustomEvent fire() now catches exceptions thrown by the subscribers so
+    that the rest of the subscribers execute.  The exception is logged and
+    stored in the "lastError" property.
+  * Performance tweak: _isValidCollection fails strings first.
+  * onAvailable/onContentReady will work if an element ref rather than an
+    id is provided.
+  * getListeners: fixed the values for the obj and adjust properties.
+    Added scope property.
+  * Added IE hack for when the event target is something that can't be
+    inspected (like a VML canvas).  In this case the target is set to
+    the element the listener is bound to.
+
+2.3.0
+  * addListener now produces a logger warning if the supplied callback is 
+    undefined.
+  * Reduced the likelihood that window onload listeners fire before
+    onAvailable listeners when the two happen near the same moment.
+  * Fixed an IE error that could occur when the library was injected into 
+    the page after window onload.
+  * The onDOMReady listener will be executed immediately if the
+    DOMReady event had already fired prior to the call.
+  * Unsubscribing custom events within a handler for the event now works 
+    properly.
+  * EventProvider unsubscribeAll will unsubscribe all listeners from
+    all hosted custom events if the type is not specified.
+  * Event.getKeyCode now checks keyCode before charCode for Safari normalization.  
+    Safari arrow key codes are normalized as well.
+  * Broke up the </script> in Event to allow it to be included inline
+
+2.2.2
+  * No change
+
+2.2.1
+  * onAvailable listeners are processed before onContentReady listeners so
+    they fire in the logical order when an element is found to be available 
+    and ready in the same pass.
+  * Added onDOMReady for receiving notification when the DOM is first usable.
+  * In Internet Explorer, onAvailable/onContentReady checks now start when
+    DOMReady fires to reduce the possibility of receiving an "operation
+    aborted" errors when inserting DOM nodes during in the onAvailable/
+    onContentReady listener execution.
+  * CustomEvent subscribers supplying undefined callbacks will be notified
+    when subscribing rather than having an ambiguous error thrown when the
+    event is fired.
+  * Fixed missing html tags in the examples.
+  * POLL_INTERVAL is 10 ms.
+  * YAHOO.util.CustomEvent is now declared before YAHOO.util.Event.
+
+2.2.0
+
+  * YAHOO.util.KeyListener was moved from the container package into event.
+  
+  * The Safari bug that made it so preventDefault would not work with click
+    and double-click listeners on anchor tags was resolved in version 2.0.4.
+    The workaround (using DOM0 events for these instead of the normal DOM2
+    events) is now only used for releases prior to 2.0.4.
+    
+  * getListeners/purgeElement now work correctly with unload listeners
+
+  * When legacyEvents are used (Safari<2.0.4 click events), if there was an
+    existing DOM0 event that the utility replaced, it is executed along with
+    the listeners that were added with the utility.
+
+  * Restored Event.regCE for compatibility with a beta release of the library
+    that in use in an external API.
+
+  * unsubscribe in CustomEvent and EventProvider will remove all listeners
+    if the listener is omitted.
+
+  * Added unsubscribeAll to EventProvider
+
+  * Added Event.lastError which stores the most recent error object if
+    a browser-specific add/remove listener call throws an exception.
+
+0.12.2
+
+  * Fixed a bug introduced in 0.12.1 release caused nested onAvailable
+    calls to fail.
+
+0.12.1
+
+  * If an error is thrown during the browser-specific add/remove lister call,
+    addListener/removeListener will catch the error and return false.
+
+  * onAvailable array items are nulled out instead of deleted when completed to
+    get around an Opera issue introduced in a recent version of the browser.
+
+0.12.0
+
+   * If the function argument is not provided to Event.removeListener, all
+     all listeners for the specified event type on the element will be removed.
+
+   * CustomEvent now has an optional parameter that defines the signature of
+     the listeners for this event.  Two signatures are supported:
+
+       YAHOO.util.CustomEvent.LIST:
+         param1: event name
+         param2: array of arguments provided to fire()
+         param3: <optional> the custom object supplied to subscribe()
+
+       YAHOO.util.CustomEvent.FLAT:
+         param1: the first argument provided to fire()
+         param2: <optional> the custom object supplied to subscribe()
+
+     The new flat signature makes it possible to provide a better API 
+     when using custom events, and it makes it possible to transparently 
+     wrap DOM events.
+   
+   * The parameters for overriding scope in both Event.addListener, and
+     CustomEvent.subscribe have been augmented.  In addition to the 
+     previous behavior where a true value would make the previous parameter
+     the execution scope, an object can be supplied instead.  If an object
+     is provided, that object becomes the scope obj.  This makes it possible 
+     to pass a both a custom object and adjust the scope to a different object.
+
+   * Added EventProvider, which is a wrapper for CustomEvent that makes it
+     possible to subscribe to events by name, whether or not the event has
+     been created.  This class was designed to be used with YAHOO.augment.
+     EventProvider custom events are created with the new FLAT listener
+     signature.
+
+   * CustomEvent subscribers can return false to stop the propagation of
+     the event.
+
+   * CustomEvents now have an onSubscribe custom event that can used to the
+     case where a subscriber subscribes to an one-time event that has already
+     happened.  Also provides a way for the implementer to defer initialization
+     logic until after the first subscription.
+
+   * Event.getCharCode now always returns keyCode if charCode is not available.
+
+   * Added Event.onContentReady, which is similar to onAvailable, but it also
+     checks simblings to try to determine when the element's children are
+     available.
+
+0.11.4
+
+   * Fixed a memory leak in IE6 that occurred when the utility was hosted in 
+     an iframe.
+
+   * Fixed an issue with Safari click listeners when listeners were removed.
+
+0.11.3
+
+   * The listener cache is now pruned when events are removed.  This fixes
+     a performance issue when adding many listeners, removing them, and
+     adding them again repeatedly.
+
+   * Safari click listeners will work correctly if a bound element is removed
+     from the DOM and a new element with the same ID is added.
+
+   * Removed the code that automatically unsubscribed custom event listeners.
+
+0.11.0
+
+   * Added Event.purgeElement which will remove all listeners added via 
+     addListener from the supplied element.  If an optional "type" parameter
+     is supplied, only events of that type will be removed.  Optionally, the
+     purge can be performed recursively on the element's children as well.
+
+   * Added Event.getListeners which will return all listeners attached to 
+     a given element.. either all listeners or listeners of a specific type.
+
+   * getTarget now automatically resolves text nodes.  The optional parameter
+     for this feature is now deprecated.
+
+   * getRelatedTarget now resolves text nodes for the browsers that return the
+     text node rather than its host HTML element.
+
+   * CustomEvent now logs the custom event activity if the logger widget is available
+
+0.10.0
+
+   * Added Safari dblclick to the list of legacy events.
+
+   * When multiple identical event handlers are defined, multiple calls
+     to removeListener can now remove all of them.
+
+   * removeListener works properly for unload events
+
+   * Legacy event bookkeeping is more efficient, improving the performance for
+     adding Safari click events.
+
+   * _unload() is more efficient, improving the page transition experience in 
+     Safari in particular.
+
+   * addListener, removeListener now return false if the function argument is
+     not valid.
+
+   * Fixed an operator precedence issue in getCharCode.
+
+   * Added Event.getXY, which returns [Event.getPageX(e), Event.getPageY(e)]
+
+   * Added Event.onAvailable, which will execute the callback when the element
+     with the supplied id is found.  Currently searches periodically until the
+     window load event or for up to 10 seconds after the onAvailable method 
+     was executed.
+
+   * The lazy listener attachment process now will poll beyond the window load
+     event in order to better handle the case when a listener is defined
+     late in the page but before the element is in the dom.
+
+   * Fixed browser detection for Opera installations reporting as IE.
+
+   * It is now possible to remove and re-add legacy events (Safari click event).
+

Property changes on: tags/2.8.3/wb/include/yui/event/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dragdrop/dragdrop-debug.js
===================================================================
--- tags/2.8.3/wb/include/yui/dragdrop/dragdrop-debug.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dragdrop/dragdrop-debug.js	(revision 1610)
@@ -0,0 +1,3710 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The drag and drop utility provides a framework for building drag and drop
+ * applications.  In addition to enabling drag and drop for specific elements,
+ * the drag and drop elements are tracked by the manager class, and the
+ * interactions between the various elements are tracked during the drag and
+ * the implementing code is notified about these important moments.
+ * @module dragdrop
+ * @title Drag and Drop
+ * @requires yahoo,dom,event
+ * @namespace YAHOO.util
+ */
+
+// Only load the library once.  Rewriting the manager class would orphan 
+// existing drag and drop instances.
+if (!YAHOO.util.DragDropMgr) {
+
+/**
+ * DragDropMgr is a singleton that tracks the element interaction for 
+ * all DragDrop items in the window.  Generally, you will not call 
+ * this class directly, but it does have helper methods that could 
+ * be useful in your DragDrop implementations.
+ * @class DragDropMgr
+ * @static
+ */
+YAHOO.util.DragDropMgr = function() {
+
+    var Event = YAHOO.util.Event,
+        Dom = YAHOO.util.Dom;
+
+    return {
+        /**
+        * This property is used to turn on global use of the shim element on all DragDrop instances, defaults to false for backcompat. (Use: YAHOO.util.DDM.useShim = true)
+       * @property useShim
+       * @type Boolean
+       * @static
+        */
+        useShim: false,
+        /**
+        * This property is used to determine if the shim is active over the screen, default false.
+       * @private
+       * @property _shimActive
+       * @type Boolean
+       * @static
+        */
+        _shimActive: false,
+        /**
+        * This property is used when useShim is set on a DragDrop object to store the current state of DDM.useShim so it can be reset when a drag operation is done.
+       * @private
+       * @property _shimState
+       * @type Boolean
+       * @static
+        */
+        _shimState: false,
+        /**
+        * This property is used when useShim is set to true, it will set the opacity on the shim to .5 for debugging. Use: (YAHOO.util.DDM._debugShim = true;)
+       * @private
+       * @property _debugShim
+       * @type Boolean
+       * @static
+        */
+        _debugShim: false,
+        /**
+        * This method will create a shim element (giving it the id of yui-ddm-shim), it also attaches the mousemove and mouseup listeners to it and attaches a scroll listener on the window
+       * @private
+       * @method _sizeShim
+       * @static
+        */
+        _createShim: function() {
+            YAHOO.log('Creating Shim Element', 'info', 'DragDropMgr');
+            var s = document.createElement('div');
+            s.id = 'yui-ddm-shim';
+            if (document.body.firstChild) {
+                document.body.insertBefore(s, document.body.firstChild);
+            } else {
+                document.body.appendChild(s);
+            }
+            s.style.display = 'none';
+            s.style.backgroundColor = 'red';
+            s.style.position = 'absolute';
+            s.style.zIndex = '99999';
+            Dom.setStyle(s, 'opacity', '0');
+            this._shim = s;
+            Event.on(s, "mouseup",   this.handleMouseUp, this, true);
+            Event.on(s, "mousemove", this.handleMouseMove, this, true);
+            Event.on(window, 'scroll', this._sizeShim, this, true);
+        },
+        /**
+        * This method will size the shim, called from activate and on window scroll event
+       * @private
+       * @method _sizeShim
+       * @static
+        */
+        _sizeShim: function() {
+            if (this._shimActive) {
+                YAHOO.log('Sizing Shim', 'info', 'DragDropMgr');
+                var s = this._shim;
+                s.style.height = Dom.getDocumentHeight() + 'px';
+                s.style.width = Dom.getDocumentWidth() + 'px';
+                s.style.top = '0';
+                s.style.left = '0';
+            }
+        },
+        /**
+        * This method will create the shim element if needed, then show the shim element, size the element and set the _shimActive property to true
+       * @private
+       * @method _activateShim
+       * @static
+        */
+        _activateShim: function() {
+            if (this.useShim) {
+                YAHOO.log('Activating Shim', 'info', 'DragDropMgr');
+                if (!this._shim) {
+                    this._createShim();
+                }
+                this._shimActive = true;
+                var s = this._shim,
+                    o = '0';
+                if (this._debugShim) {
+                    o = '.5';
+                }
+                Dom.setStyle(s, 'opacity', o);
+                this._sizeShim();
+                s.style.display = 'block';
+            }
+        },
+        /**
+        * This method will hide the shim element and set the _shimActive property to false
+       * @private
+       * @method _deactivateShim
+       * @static
+        */
+        _deactivateShim: function() {
+            YAHOO.log('Deactivating Shim', 'info', 'DragDropMgr');
+            this._shim.style.display = 'none';
+            this._shimActive = false;
+        },
+        /**
+        * The HTML element created to use as a shim over the document to track mouse movements
+       * @private
+       * @property _shim
+       * @type HTMLElement
+       * @static
+        */
+        _shim: null,
+        /**
+         * Two dimensional Array of registered DragDrop objects.  The first 
+         * dimension is the DragDrop item group, the second the DragDrop 
+         * object.
+        * @property ids
+        * @type {string: string}
+        * @private
+        * @static
+         */
+        ids: {},
+
+        /**
+         * Array of element ids defined as drag handles.  Used to determine 
+         * if the element that generated the mousedown event is actually the 
+         * handle and not the html element itself.
+        * @property handleIds
+        * @type {string: string}
+        * @private
+        * @static
+         */
+        handleIds: {},
+
+        /**
+         * the DragDrop object that is currently being dragged
+        * @property dragCurrent
+        * @type DragDrop
+        * @private
+        * @static
+         **/
+        dragCurrent: null,
+
+        /**
+         * the DragDrop object(s) that are being hovered over
+        * @property dragOvers
+        * @type Array
+        * @private
+        * @static
+         */
+        dragOvers: {},
+
+        /**
+         * the X distance between the cursor and the object being dragged
+        * @property deltaX
+        * @type int
+        * @private
+        * @static
+         */
+        deltaX: 0,
+
+        /**
+         * the Y distance between the cursor and the object being dragged
+        * @property deltaY
+        * @type int
+        * @private
+        * @static
+         */
+        deltaY: 0,
+
+        /**
+         * Flag to determine if we should prevent the default behavior of the
+         * events we define. By default this is true, but this can be set to 
+         * false if you need the default behavior (not recommended)
+        * @property preventDefault
+        * @type boolean
+        * @static
+         */
+        preventDefault: true,
+
+        /**
+         * Flag to determine if we should stop the propagation of the events 
+         * we generate. This is true by default but you may want to set it to
+         * false if the html element contains other features that require the
+         * mouse click.
+        * @property stopPropagation
+        * @type boolean
+        * @static
+         */
+        stopPropagation: true,
+
+        /**
+         * Internal flag that is set to true when drag and drop has been
+         * initialized
+        * @property initialized
+        * @private
+        * @static
+         */
+        initialized: false,
+
+        /**
+         * All drag and drop can be disabled.
+        * @property locked
+        * @private
+        * @static
+         */
+        locked: false,
+
+        /**
+         * Provides additional information about the the current set of
+         * interactions.  Can be accessed from the event handlers. It
+         * contains the following properties:
+         *
+         *       out:       onDragOut interactions
+         *       enter:     onDragEnter interactions
+         *       over:      onDragOver interactions
+         *       drop:      onDragDrop interactions
+         *       point:     The location of the cursor
+         *       draggedRegion: The location of dragged element at the time
+         *                      of the interaction
+         *       sourceRegion: The location of the source elemtn at the time
+         *                     of the interaction
+         *       validDrop: boolean
+        * @property interactionInfo
+        * @type object
+        * @static
+         */
+        interactionInfo: null,
+
+        /**
+         * Called the first time an element is registered.
+        * @method init
+        * @private
+        * @static
+         */
+        init: function() {
+            this.initialized = true;
+        },
+
+        /**
+         * In point mode, drag and drop interaction is defined by the 
+         * location of the cursor during the drag/drop
+        * @property POINT
+        * @type int
+        * @static
+        * @final
+         */
+        POINT: 0,
+
+        /**
+         * In intersect mode, drag and drop interaction is defined by the 
+         * cursor position or the amount of overlap of two or more drag and 
+         * drop objects.
+        * @property INTERSECT
+        * @type int
+        * @static
+        * @final
+         */
+        INTERSECT: 1,
+
+        /**
+         * In intersect mode, drag and drop interaction is defined only by the 
+         * overlap of two or more drag and drop objects.
+        * @property STRICT_INTERSECT
+        * @type int
+        * @static
+        * @final
+         */
+        STRICT_INTERSECT: 2,
+
+        /**
+         * The current drag and drop mode.  Default: POINT
+        * @property mode
+        * @type int
+        * @static
+         */
+        mode: 0,
+
+        /**
+         * Runs method on all drag and drop objects
+        * @method _execOnAll
+        * @private
+        * @static
+         */
+        _execOnAll: function(sMethod, args) {
+            for (var i in this.ids) {
+                for (var j in this.ids[i]) {
+                    var oDD = this.ids[i][j];
+                    if (! this.isTypeOfDD(oDD)) {
+                        continue;
+                    }
+                    oDD[sMethod].apply(oDD, args);
+                }
+            }
+        },
+
+        /**
+         * Drag and drop initialization.  Sets up the global event handlers
+        * @method _onLoad
+        * @private
+        * @static
+         */
+        _onLoad: function() {
+
+            this.init();
+
+            YAHOO.log("DragDropMgr onload", "info", "DragDropMgr");
+            Event.on(document, "mouseup",   this.handleMouseUp, this, true);
+            Event.on(document, "mousemove", this.handleMouseMove, this, true);
+            Event.on(window,   "unload",    this._onUnload, this, true);
+            Event.on(window,   "resize",    this._onResize, this, true);
+            // Event.on(window,   "mouseout",    this._test);
+
+        },
+
+        /**
+         * Reset constraints on all drag and drop objs
+        * @method _onResize
+        * @private
+        * @static
+         */
+        _onResize: function(e) {
+            YAHOO.log("window resize", "info", "DragDropMgr");
+            this._execOnAll("resetConstraints", []);
+        },
+
+        /**
+         * Lock all drag and drop functionality
+        * @method lock
+        * @static
+         */
+        lock: function() { this.locked = true; },
+
+        /**
+         * Unlock all drag and drop functionality
+        * @method unlock
+        * @static
+         */
+        unlock: function() { this.locked = false; },
+
+        /**
+         * Is drag and drop locked?
+        * @method isLocked
+        * @return {boolean} True if drag and drop is locked, false otherwise.
+        * @static
+         */
+        isLocked: function() { return this.locked; },
+
+        /**
+         * Location cache that is set for all drag drop objects when a drag is
+         * initiated, cleared when the drag is finished.
+        * @property locationCache
+        * @private
+        * @static
+         */
+        locationCache: {},
+
+        /**
+         * Set useCache to false if you want to force object the lookup of each
+         * drag and drop linked element constantly during a drag.
+        * @property useCache
+        * @type boolean
+        * @static
+         */
+        useCache: true,
+
+        /**
+         * The number of pixels that the mouse needs to move after the 
+         * mousedown before the drag is initiated.  Default=3;
+        * @property clickPixelThresh
+        * @type int
+        * @static
+         */
+        clickPixelThresh: 3,
+
+        /**
+         * The number of milliseconds after the mousedown event to initiate the
+         * drag if we don't get a mouseup event. Default=1000
+        * @property clickTimeThresh
+        * @type int
+        * @static
+         */
+        clickTimeThresh: 1000,
+
+        /**
+         * Flag that indicates that either the drag pixel threshold or the 
+         * mousdown time threshold has been met
+        * @property dragThreshMet
+        * @type boolean
+        * @private
+        * @static
+         */
+        dragThreshMet: false,
+
+        /**
+         * Timeout used for the click time threshold
+        * @property clickTimeout
+        * @type Object
+        * @private
+        * @static
+         */
+        clickTimeout: null,
+
+        /**
+         * The X position of the mousedown event stored for later use when a 
+         * drag threshold is met.
+        * @property startX
+        * @type int
+        * @private
+        * @static
+         */
+        startX: 0,
+
+        /**
+         * The Y position of the mousedown event stored for later use when a 
+         * drag threshold is met.
+        * @property startY
+        * @type int
+        * @private
+        * @static
+         */
+        startY: 0,
+
+        /**
+         * Flag to determine if the drag event was fired from the click timeout and
+         * not the mouse move threshold.
+        * @property fromTimeout
+        * @type boolean
+        * @private
+        * @static
+         */
+        fromTimeout: false,
+
+        /**
+         * Each DragDrop instance must be registered with the DragDropMgr.  
+         * This is executed in DragDrop.init()
+        * @method regDragDrop
+        * @param {DragDrop} oDD the DragDrop object to register
+        * @param {String} sGroup the name of the group this element belongs to
+        * @static
+         */
+        regDragDrop: function(oDD, sGroup) {
+            if (!this.initialized) { this.init(); }
+            
+            if (!this.ids[sGroup]) {
+                this.ids[sGroup] = {};
+            }
+            this.ids[sGroup][oDD.id] = oDD;
+        },
+
+        /**
+         * Removes the supplied dd instance from the supplied group. Executed
+         * by DragDrop.removeFromGroup, so don't call this function directly.
+        * @method removeDDFromGroup
+        * @private
+        * @static
+         */
+        removeDDFromGroup: function(oDD, sGroup) {
+            if (!this.ids[sGroup]) {
+                this.ids[sGroup] = {};
+            }
+
+            var obj = this.ids[sGroup];
+            if (obj && obj[oDD.id]) {
+                delete obj[oDD.id];
+            }
+        },
+
+        /**
+         * Unregisters a drag and drop item.  This is executed in 
+         * DragDrop.unreg, use that method instead of calling this directly.
+        * @method _remove
+        * @private
+        * @static
+         */
+        _remove: function(oDD) {
+            for (var g in oDD.groups) {
+                if (g) {
+                    var item = this.ids[g];
+                    if (item && item[oDD.id]) {
+                        delete item[oDD.id];
+                    }
+                }
+                
+            }
+            delete this.handleIds[oDD.id];
+        },
+
+        /**
+         * Each DragDrop handle element must be registered.  This is done
+         * automatically when executing DragDrop.setHandleElId()
+        * @method regHandle
+        * @param {String} sDDId the DragDrop id this element is a handle for
+        * @param {String} sHandleId the id of the element that is the drag 
+         * handle
+        * @static
+         */
+        regHandle: function(sDDId, sHandleId) {
+            if (!this.handleIds[sDDId]) {
+                this.handleIds[sDDId] = {};
+            }
+            this.handleIds[sDDId][sHandleId] = sHandleId;
+        },
+
+        /**
+         * Utility function to determine if a given element has been 
+         * registered as a drag drop item.
+        * @method isDragDrop
+        * @param {String} id the element id to check
+        * @return {boolean} true if this element is a DragDrop item, 
+         * false otherwise
+        * @static
+         */
+        isDragDrop: function(id) {
+            return ( this.getDDById(id) ) ? true : false;
+        },
+
+        /**
+         * Returns the drag and drop instances that are in all groups the
+         * passed in instance belongs to.
+        * @method getRelated
+        * @param {DragDrop} p_oDD the obj to get related data for
+        * @param {boolean} bTargetsOnly if true, only return targetable objs
+        * @return {DragDrop[]} the related instances
+        * @static
+         */
+        getRelated: function(p_oDD, bTargetsOnly) {
+            var oDDs = [];
+            for (var i in p_oDD.groups) {
+                for (var j in this.ids[i]) {
+                    var dd = this.ids[i][j];
+                    if (! this.isTypeOfDD(dd)) {
+                        continue;
+                    }
+                    if (!bTargetsOnly || dd.isTarget) {
+                        oDDs[oDDs.length] = dd;
+                    }
+                }
+            }
+
+            return oDDs;
+        },
+
+        /**
+         * Returns true if the specified dd target is a legal target for 
+         * the specifice drag obj
+        * @method isLegalTarget
+        * @param {DragDrop} the drag obj
+        * @param {DragDrop} the target
+        * @return {boolean} true if the target is a legal target for the 
+         * dd obj
+        * @static
+         */
+        isLegalTarget: function (oDD, oTargetDD) {
+            var targets = this.getRelated(oDD, true);
+            for (var i=0, len=targets.length;i<len;++i) {
+                if (targets[i].id == oTargetDD.id) {
+                    return true;
+                }
+            }
+
+            return false;
+        },
+
+        /**
+         * My goal is to be able to transparently determine if an object is
+         * typeof DragDrop, and the exact subclass of DragDrop.  typeof 
+         * returns "object", oDD.constructor.toString() always returns
+         * "DragDrop" and not the name of the subclass.  So for now it just
+         * evaluates a well-known variable in DragDrop.
+        * @method isTypeOfDD
+        * @param {Object} the object to evaluate
+        * @return {boolean} true if typeof oDD = DragDrop
+        * @static
+         */
+        isTypeOfDD: function (oDD) {
+            return (oDD && oDD.__ygDragDrop);
+        },
+
+        /**
+         * Utility function to determine if a given element has been 
+         * registered as a drag drop handle for the given Drag Drop object.
+        * @method isHandle
+        * @param {String} id the element id to check
+        * @return {boolean} true if this element is a DragDrop handle, false 
+         * otherwise
+        * @static
+         */
+        isHandle: function(sDDId, sHandleId) {
+            return ( this.handleIds[sDDId] && 
+                            this.handleIds[sDDId][sHandleId] );
+        },
+
+        /**
+         * Returns the DragDrop instance for a given id
+        * @method getDDById
+        * @param {String} id the id of the DragDrop object
+        * @return {DragDrop} the drag drop object, null if it is not found
+        * @static
+         */
+        getDDById: function(id) {
+            for (var i in this.ids) {
+                if (this.ids[i][id]) {
+                    return this.ids[i][id];
+                }
+            }
+            return null;
+        },
+
+        /**
+         * Fired after a registered DragDrop object gets the mousedown event.
+         * Sets up the events required to track the object being dragged
+        * @method handleMouseDown
+        * @param {Event} e the event
+        * @param oDD the DragDrop object being dragged
+        * @private
+        * @static
+         */
+        handleMouseDown: function(e, oDD) {
+            //this._activateShim();
+
+            this.currentTarget = YAHOO.util.Event.getTarget(e);
+
+            this.dragCurrent = oDD;
+
+            var el = oDD.getEl();
+
+            // track start position
+            this.startX = YAHOO.util.Event.getPageX(e);
+            this.startY = YAHOO.util.Event.getPageY(e);
+
+            this.deltaX = this.startX - el.offsetLeft;
+            this.deltaY = this.startY - el.offsetTop;
+
+            this.dragThreshMet = false;
+
+            this.clickTimeout = setTimeout( 
+                    function() { 
+                        var DDM = YAHOO.util.DDM;
+                        DDM.startDrag(DDM.startX, DDM.startY);
+                        DDM.fromTimeout = true;
+                    }, 
+                    this.clickTimeThresh );
+        },
+
+        /**
+         * Fired when either the drag pixel threshold or the mousedown hold 
+         * time threshold has been met.
+        * @method startDrag
+        * @param x {int} the X position of the original mousedown
+        * @param y {int} the Y position of the original mousedown
+        * @static
+         */
+        startDrag: function(x, y) {
+            if (this.dragCurrent && this.dragCurrent.useShim) {
+                this._shimState = this.useShim;
+                this.useShim = true;
+            }
+            this._activateShim();
+            YAHOO.log("firing drag start events", "info", "DragDropMgr");
+            clearTimeout(this.clickTimeout);
+            var dc = this.dragCurrent;
+            if (dc && dc.events.b4StartDrag) {
+                dc.b4StartDrag(x, y);
+                dc.fireEvent('b4StartDragEvent', { x: x, y: y });
+            }
+            if (dc && dc.events.startDrag) {
+                dc.startDrag(x, y);
+                dc.fireEvent('startDragEvent', { x: x, y: y });
+            }
+            this.dragThreshMet = true;
+        },
+
+        /**
+         * Internal function to handle the mouseup event.  Will be invoked 
+         * from the context of the document.
+        * @method handleMouseUp
+        * @param {Event} e the event
+        * @private
+        * @static
+         */
+        handleMouseUp: function(e) {
+            if (this.dragCurrent) {
+                clearTimeout(this.clickTimeout);
+
+                if (this.dragThreshMet) {
+                    YAHOO.log("mouseup detected - completing drag", "info", "DragDropMgr");
+                    if (this.fromTimeout) {
+                        YAHOO.log('fromTimeout is true (mouse didn\'t move), call handleMouseMove so we can get the dragOver event', 'info', 'DragDropMgr');
+                        this.fromTimeout = false;
+                        this.handleMouseMove(e);
+                    }
+                    this.fromTimeout = false;
+                    this.fireEvents(e, true);
+                } else {
+                    YAHOO.log("drag threshold not met", "info", "DragDropMgr");
+                }
+
+                this.stopDrag(e);
+
+                this.stopEvent(e);
+            }
+        },
+
+        /**
+         * Utility to stop event propagation and event default, if these 
+         * features are turned on.
+        * @method stopEvent
+        * @param {Event} e the event as returned by this.getEvent()
+        * @static
+         */
+        stopEvent: function(e) {
+            if (this.stopPropagation) {
+                YAHOO.util.Event.stopPropagation(e);
+            }
+
+            if (this.preventDefault) {
+                YAHOO.util.Event.preventDefault(e);
+            }
+        },
+
+        /** 
+         * Ends the current drag, cleans up the state, and fires the endDrag
+         * and mouseUp events.  Called internally when a mouseup is detected
+         * during the drag.  Can be fired manually during the drag by passing
+         * either another event (such as the mousemove event received in onDrag)
+         * or a fake event with pageX and pageY defined (so that endDrag and
+         * onMouseUp have usable position data.).  Alternatively, pass true
+         * for the silent parameter so that the endDrag and onMouseUp events
+         * are skipped (so no event data is needed.)
+         *
+        * @method stopDrag
+        * @param {Event} e the mouseup event, another event (or a fake event) 
+         *                  with pageX and pageY defined, or nothing if the 
+         *                  silent parameter is true
+        * @param {boolean} silent skips the enddrag and mouseup events if true
+        * @static
+         */
+        stopDrag: function(e, silent) {
+            // YAHOO.log("mouseup - removing event handlers");
+            var dc = this.dragCurrent;
+            // Fire the drag end event for the item that was dragged
+            if (dc && !silent) {
+                if (this.dragThreshMet) {
+                    YAHOO.log("firing endDrag events", "info", "DragDropMgr");
+                    if (dc.events.b4EndDrag) {
+                        dc.b4EndDrag(e);
+                        dc.fireEvent('b4EndDragEvent', { e: e });
+                    }
+                    if (dc.events.endDrag) {
+                        dc.endDrag(e);
+                        dc.fireEvent('endDragEvent', { e: e });
+                    }
+                }
+                if (dc.events.mouseUp) {
+                    YAHOO.log("firing dragdrop onMouseUp event", "info", "DragDropMgr");
+                    dc.onMouseUp(e);
+                    dc.fireEvent('mouseUpEvent', { e: e });
+                }
+            }
+
+            if (this._shimActive) {
+                this._deactivateShim();
+                if (this.dragCurrent && this.dragCurrent.useShim) {
+                    this.useShim = this._shimState;
+                    this._shimState = false;
+                }
+            }
+
+            this.dragCurrent = null;
+            this.dragOvers = {};
+        },
+
+        /** 
+         * Internal function to handle the mousemove event.  Will be invoked 
+         * from the context of the html element.
+         *
+        * @TODO figure out what we can do about mouse events lost when the 
+         * user drags objects beyond the window boundary.  Currently we can 
+         * detect this in internet explorer by verifying that the mouse is 
+         * down during the mousemove event.  Firefox doesn't give us the 
+         * button state on the mousemove event.
+        * @method handleMouseMove
+        * @param {Event} e the event
+        * @private
+        * @static
+         */
+        handleMouseMove: function(e) {
+            //YAHOO.log("handlemousemove");
+
+            var dc = this.dragCurrent;
+            if (dc) {
+                // YAHOO.log("no current drag obj");
+
+                // var button = e.which || e.button;
+                // YAHOO.log("which: " + e.which + ", button: "+ e.button);
+
+                // check for IE mouseup outside of page boundary
+                if (YAHOO.util.Event.isIE && !e.button) {
+                    YAHOO.log("button failure", "info", "DragDropMgr");
+                    this.stopEvent(e);
+                    return this.handleMouseUp(e);
+                } else {
+                    if (e.clientX < 0 || e.clientY < 0) {
+                        //This will stop the element from leaving the viewport in FF, Opera & Safari
+                        //Not turned on yet
+                        //YAHOO.log("Either clientX or clientY is negative, stop the event.", "info", "DragDropMgr");
+                        //this.stopEvent(e);
+                        //return false;
+                    }
+                }
+
+                if (!this.dragThreshMet) {
+                    var diffX = Math.abs(this.startX - YAHOO.util.Event.getPageX(e));
+                    var diffY = Math.abs(this.startY - YAHOO.util.Event.getPageY(e));
+                    // YAHOO.log("diffX: " + diffX + "diffY: " + diffY);
+                    if (diffX > this.clickPixelThresh || 
+                                diffY > this.clickPixelThresh) {
+                        YAHOO.log("pixel threshold met", "info", "DragDropMgr");
+                        this.startDrag(this.startX, this.startY);
+                    }
+                }
+
+                if (this.dragThreshMet) {
+                    if (dc && dc.events.b4Drag) {
+                        dc.b4Drag(e);
+                        dc.fireEvent('b4DragEvent', { e: e});
+                    }
+                    if (dc && dc.events.drag) {
+                        dc.onDrag(e);
+                        dc.fireEvent('dragEvent', { e: e});
+                    }
+                    if (dc) {
+                        this.fireEvents(e, false);
+                    }
+                }
+
+                this.stopEvent(e);
+            }
+        },
+        
+        /**
+         * Iterates over all of the DragDrop elements to find ones we are 
+         * hovering over or dropping on
+        * @method fireEvents
+        * @param {Event} e the event
+        * @param {boolean} isDrop is this a drop op or a mouseover op?
+        * @private
+        * @static
+         */
+        fireEvents: function(e, isDrop) {
+            var dc = this.dragCurrent;
+
+            // If the user did the mouse up outside of the window, we could 
+            // get here even though we have ended the drag.
+            // If the config option dragOnly is true, bail out and don't fire the events
+            if (!dc || dc.isLocked() || dc.dragOnly) {
+                return;
+            }
+
+            var x = YAHOO.util.Event.getPageX(e),
+                y = YAHOO.util.Event.getPageY(e),
+                pt = new YAHOO.util.Point(x,y),
+                pos = dc.getTargetCoord(pt.x, pt.y),
+                el = dc.getDragEl(),
+                events = ['out', 'over', 'drop', 'enter'],
+                curRegion = new YAHOO.util.Region( pos.y, 
+                                               pos.x + el.offsetWidth,
+                                               pos.y + el.offsetHeight, 
+                                               pos.x ),
+            
+                oldOvers = [], // cache the previous dragOver array
+                inGroupsObj  = {},
+                inGroups  = [],
+                data = {
+                    outEvts: [],
+                    overEvts: [],
+                    dropEvts: [],
+                    enterEvts: []
+                };
+
+
+            // Check to see if the object(s) we were hovering over is no longer 
+            // being hovered over so we can fire the onDragOut event
+            for (var i in this.dragOvers) {
+
+                var ddo = this.dragOvers[i];
+
+                if (! this.isTypeOfDD(ddo)) {
+                    continue;
+                }
+                if (! this.isOverTarget(pt, ddo, this.mode, curRegion)) {
+                    data.outEvts.push( ddo );
+                }
+
+                oldOvers[i] = true;
+                delete this.dragOvers[i];
+            }
+
+            for (var sGroup in dc.groups) {
+                // YAHOO.log("Processing group " + sGroup);
+                
+                if ("string" != typeof sGroup) {
+                    continue;
+                }
+
+                for (i in this.ids[sGroup]) {
+                    var oDD = this.ids[sGroup][i];
+                    if (! this.isTypeOfDD(oDD)) {
+                        continue;
+                    }
+
+                    if (oDD.isTarget && !oDD.isLocked() && oDD != dc) {
+                        if (this.isOverTarget(pt, oDD, this.mode, curRegion)) {
+                            inGroupsObj[sGroup] = true;
+                            // look for drop interactions
+                            if (isDrop) {
+                                data.dropEvts.push( oDD );
+                            // look for drag enter and drag over interactions
+                            } else {
+
+                                // initial drag over: dragEnter fires
+                                if (!oldOvers[oDD.id]) {
+                                    data.enterEvts.push( oDD );
+                                // subsequent drag overs: dragOver fires
+                                } else {
+                                    data.overEvts.push( oDD );
+                                }
+
+                                this.dragOvers[oDD.id] = oDD;
+                            }
+                        }
+                    }
+                }
+            }
+
+            this.interactionInfo = {
+                out:       data.outEvts,
+                enter:     data.enterEvts,
+                over:      data.overEvts,
+                drop:      data.dropEvts,
+                point:     pt,
+                draggedRegion:    curRegion,
+                sourceRegion: this.locationCache[dc.id],
+                validDrop: isDrop
+            };
+
+            
+            for (var inG in inGroupsObj) {
+                inGroups.push(inG);
+            }
+
+            // notify about a drop that did not find a target
+            if (isDrop && !data.dropEvts.length) {
+                YAHOO.log(dc.id + " dropped, but not on a target", "info", "DragDropMgr");
+                this.interactionInfo.validDrop = false;
+                if (dc.events.invalidDrop) {
+                    dc.onInvalidDrop(e);
+                    dc.fireEvent('invalidDropEvent', { e: e });
+                }
+            }
+            for (i = 0; i < events.length; i++) {
+                var tmp = null;
+                if (data[events[i] + 'Evts']) {
+                    tmp = data[events[i] + 'Evts'];
+                }
+                if (tmp && tmp.length) {
+                    var type = events[i].charAt(0).toUpperCase() + events[i].substr(1),
+                        ev = 'onDrag' + type,
+                        b4 = 'b4Drag' + type,
+                        cev = 'drag' + type + 'Event',
+                        check = 'drag' + type;
+                    if (this.mode) {
+                        YAHOO.log(dc.id + ' ' + ev + ': ' + tmp, "info", "DragDropMgr");
+                        if (dc.events[b4]) {
+                            dc[b4](e, tmp, inGroups);
+                            dc.fireEvent(b4 + 'Event', { event: e, info: tmp, group: inGroups });
+                            
+                        }
+                        if (dc.events[check]) {
+                            dc[ev](e, tmp, inGroups);
+                            dc.fireEvent(cev, { event: e, info: tmp, group: inGroups });
+                        }
+                    } else {
+                        for (var b = 0, len = tmp.length; b < len; ++b) {
+                            YAHOO.log(dc.id + ' ' + ev + ': ' + tmp[b].id, "info", "DragDropMgr");
+                            if (dc.events[b4]) {
+                                dc[b4](e, tmp[b].id, inGroups[0]);
+                                dc.fireEvent(b4 + 'Event', { event: e, info: tmp[b].id, group: inGroups[0] });
+                            }
+                            if (dc.events[check]) {
+                                dc[ev](e, tmp[b].id, inGroups[0]);
+                                dc.fireEvent(cev, { event: e, info: tmp[b].id, group: inGroups[0] });
+                            }
+                        }
+                    }
+                }
+            }
+        },
+
+        /**
+         * Helper function for getting the best match from the list of drag 
+         * and drop objects returned by the drag and drop events when we are 
+         * in INTERSECT mode.  It returns either the first object that the 
+         * cursor is over, or the object that has the greatest overlap with 
+         * the dragged element.
+        * @method getBestMatch
+        * @param  {DragDrop[]} dds The array of drag and drop objects 
+         * targeted
+        * @return {DragDrop}       The best single match
+        * @static
+         */
+        getBestMatch: function(dds) {
+            var winner = null;
+
+            var len = dds.length;
+
+            if (len == 1) {
+                winner = dds[0];
+            } else {
+                // Loop through the targeted items
+                for (var i=0; i<len; ++i) {
+                    var dd = dds[i];
+                    // If the cursor is over the object, it wins.  If the 
+                    // cursor is over multiple matches, the first one we come
+                    // to wins.
+                    if (this.mode == this.INTERSECT && dd.cursorIsOver) {
+                        winner = dd;
+                        break;
+                    // Otherwise the object with the most overlap wins
+                    } else {
+                        if (!winner || !winner.overlap || (dd.overlap &&
+                            winner.overlap.getArea() < dd.overlap.getArea())) {
+                            winner = dd;
+                        }
+                    }
+                }
+            }
+
+            return winner;
+        },
+
+        /**
+         * Refreshes the cache of the top-left and bottom-right points of the 
+         * drag and drop objects in the specified group(s).  This is in the
+         * format that is stored in the drag and drop instance, so typical 
+         * usage is:
+         * <code>
+         * YAHOO.util.DragDropMgr.refreshCache(ddinstance.groups);
+         * </code>
+         * Alternatively:
+         * <code>
+         * YAHOO.util.DragDropMgr.refreshCache({group1:true, group2:true});
+         * </code>
+        * @TODO this really should be an indexed array.  Alternatively this
+         * method could accept both.
+        * @method refreshCache
+        * @param {Object} groups an associative array of groups to refresh
+        * @static
+         */
+        refreshCache: function(groups) {
+            YAHOO.log("refreshing element location cache", "info", "DragDropMgr");
+
+            // refresh everything if group array is not provided
+            var g = groups || this.ids;
+
+            for (var sGroup in g) {
+                if ("string" != typeof sGroup) {
+                    continue;
+                }
+                for (var i in this.ids[sGroup]) {
+                    var oDD = this.ids[sGroup][i];
+
+                    if (this.isTypeOfDD(oDD)) {
+                        var loc = this.getLocation(oDD);
+                        if (loc) {
+                            this.locationCache[oDD.id] = loc;
+                        } else {
+                            delete this.locationCache[oDD.id];
+YAHOO.log("Could not get the loc for " + oDD.id, "warn", "DragDropMgr");
+                        }
+                    }
+                }
+            }
+        },
+
+        /**
+         * This checks to make sure an element exists and is in the DOM.  The
+         * main purpose is to handle cases where innerHTML is used to remove
+         * drag and drop objects from the DOM.  IE provides an 'unspecified
+         * error' when trying to access the offsetParent of such an element
+        * @method verifyEl
+        * @param {HTMLElement} el the element to check
+        * @return {boolean} true if the element looks usable
+        * @static
+         */
+        verifyEl: function(el) {
+            try {
+                if (el) {
+                    var parent = el.offsetParent;
+                    if (parent) {
+                        return true;
+                    }
+                }
+            } catch(e) {
+                YAHOO.log("detected problem with an element", "info", "DragDropMgr");
+            }
+
+            return false;
+        },
+        
+        /**
+         * Returns a Region object containing the drag and drop element's position
+         * and size, including the padding configured for it
+        * @method getLocation
+        * @param {DragDrop} oDD the drag and drop object to get the 
+         *                       location for
+        * @return {YAHOO.util.Region} a Region object representing the total area
+         *                             the element occupies, including any padding
+         *                             the instance is configured for.
+        * @static
+         */
+        getLocation: function(oDD) {
+            if (! this.isTypeOfDD(oDD)) {
+                YAHOO.log(oDD + " is not a DD obj", "info", "DragDropMgr");
+                return null;
+            }
+
+            var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l;
+
+            try {
+                pos= YAHOO.util.Dom.getXY(el);
+            } catch (e) { }
+
+            if (!pos) {
+                YAHOO.log("getXY failed", "info", "DragDropMgr");
+                return null;
+            }
+
+            x1 = pos[0];
+            x2 = x1 + el.offsetWidth;
+            y1 = pos[1];
+            y2 = y1 + el.offsetHeight;
+
+            t = y1 - oDD.padding[0];
+            r = x2 + oDD.padding[1];
+            b = y2 + oDD.padding[2];
+            l = x1 - oDD.padding[3];
+
+            return new YAHOO.util.Region( t, r, b, l );
+        },
+
+        /**
+         * Checks the cursor location to see if it over the target
+        * @method isOverTarget
+        * @param {YAHOO.util.Point} pt The point to evaluate
+        * @param {DragDrop} oTarget the DragDrop object we are inspecting
+        * @param {boolean} intersect true if we are in intersect mode
+        * @param {YAHOO.util.Region} pre-cached location of the dragged element
+        * @return {boolean} true if the mouse is over the target
+        * @private
+        * @static
+         */
+        isOverTarget: function(pt, oTarget, intersect, curRegion) {
+            // use cache if available
+            var loc = this.locationCache[oTarget.id];
+            if (!loc || !this.useCache) {
+                YAHOO.log("cache not populated", "info", "DragDropMgr");
+                loc = this.getLocation(oTarget);
+                this.locationCache[oTarget.id] = loc;
+
+                YAHOO.log("cache: " + loc, "info", "DragDropMgr");
+            }
+
+            if (!loc) {
+                YAHOO.log("could not get the location of the element", "info", "DragDropMgr");
+                return false;
+            }
+
+            //YAHOO.log("loc: " + loc + ", pt: " + pt);
+            oTarget.cursorIsOver = loc.contains( pt );
+
+            // DragDrop is using this as a sanity check for the initial mousedown
+            // in this case we are done.  In POINT mode, if the drag obj has no
+            // contraints, we are done. Otherwise we need to evaluate the 
+            // region the target as occupies to determine if the dragged element
+            // overlaps with it.
+            
+            var dc = this.dragCurrent;
+            if (!dc || (!intersect && !dc.constrainX && !dc.constrainY)) {
+
+                //if (oTarget.cursorIsOver) {
+                    //YAHOO.log("over " + oTarget + ", " + loc + ", " + pt, "warn");
+                //}
+                return oTarget.cursorIsOver;
+            }
+
+            oTarget.overlap = null;
+
+
+            // Get the current location of the drag element, this is the
+            // location of the mouse event less the delta that represents
+            // where the original mousedown happened on the element.  We
+            // need to consider constraints and ticks as well.
+
+            if (!curRegion) {
+                var pos = dc.getTargetCoord(pt.x, pt.y);
+                var el = dc.getDragEl();
+                curRegion = new YAHOO.util.Region( pos.y, 
+                                                   pos.x + el.offsetWidth,
+                                                   pos.y + el.offsetHeight, 
+                                                   pos.x );
+            }
+
+            var overlap = curRegion.intersect(loc);
+
+            if (overlap) {
+                oTarget.overlap = overlap;
+                return (intersect) ? true : oTarget.cursorIsOver;
+            } else {
+                return false;
+            }
+        },
+
+        /**
+         * unload event handler
+        * @method _onUnload
+        * @private
+        * @static
+         */
+        _onUnload: function(e, me) {
+            this.unregAll();
+        },
+
+        /**
+         * Cleans up the drag and drop events and objects.
+        * @method unregAll
+        * @private
+        * @static
+         */
+        unregAll: function() {
+            YAHOO.log("unregister all", "info", "DragDropMgr");
+
+            if (this.dragCurrent) {
+                this.stopDrag();
+                this.dragCurrent = null;
+            }
+
+            this._execOnAll("unreg", []);
+
+            //for (var i in this.elementCache) {
+                //delete this.elementCache[i];
+            //}
+            //this.elementCache = {};
+
+            this.ids = {};
+        },
+
+        /**
+         * A cache of DOM elements
+        * @property elementCache
+        * @private
+        * @static
+        * @deprecated elements are not cached now
+         */
+        elementCache: {},
+        
+        /**
+         * Get the wrapper for the DOM element specified
+        * @method getElWrapper
+        * @param {String} id the id of the element to get
+        * @return {YAHOO.util.DDM.ElementWrapper} the wrapped element
+        * @private
+        * @deprecated This wrapper isn't that useful
+        * @static
+         */
+        getElWrapper: function(id) {
+            var oWrapper = this.elementCache[id];
+            if (!oWrapper || !oWrapper.el) {
+                oWrapper = this.elementCache[id] = 
+                    new this.ElementWrapper(YAHOO.util.Dom.get(id));
+            }
+            return oWrapper;
+        },
+
+        /**
+         * Returns the actual DOM element
+        * @method getElement
+        * @param {String} id the id of the elment to get
+        * @return {Object} The element
+        * @deprecated use YAHOO.util.Dom.get instead
+        * @static
+         */
+        getElement: function(id) {
+            return YAHOO.util.Dom.get(id);
+        },
+        
+        /**
+         * Returns the style property for the DOM element (i.e., 
+         * document.getElById(id).style)
+        * @method getCss
+        * @param {String} id the id of the elment to get
+        * @return {Object} The style property of the element
+        * @deprecated use YAHOO.util.Dom instead
+        * @static
+         */
+        getCss: function(id) {
+            var el = YAHOO.util.Dom.get(id);
+            return (el) ? el.style : null;
+        },
+
+        /**
+         * Inner class for cached elements
+        * @class DragDropMgr.ElementWrapper
+        * @for DragDropMgr
+        * @private
+        * @deprecated
+         */
+        ElementWrapper: function(el) {
+                /**
+                 * The element
+                * @property el
+                 */
+                this.el = el || null;
+                /**
+                 * The element id
+                * @property id
+                 */
+                this.id = this.el && el.id;
+                /**
+                 * A reference to the style property
+                * @property css
+                 */
+                this.css = this.el && el.style;
+            },
+
+        /**
+         * Returns the X position of an html element
+        * @method getPosX
+        * @param el the element for which to get the position
+        * @return {int} the X coordinate
+        * @for DragDropMgr
+        * @deprecated use YAHOO.util.Dom.getX instead
+        * @static
+         */
+        getPosX: function(el) {
+            return YAHOO.util.Dom.getX(el);
+        },
+
+        /**
+         * Returns the Y position of an html element
+        * @method getPosY
+        * @param el the element for which to get the position
+        * @return {int} the Y coordinate
+        * @deprecated use YAHOO.util.Dom.getY instead
+        * @static
+         */
+        getPosY: function(el) {
+            return YAHOO.util.Dom.getY(el); 
+        },
+
+        /**
+         * Swap two nodes.  In IE, we use the native method, for others we 
+         * emulate the IE behavior
+        * @method swapNode
+        * @param n1 the first node to swap
+        * @param n2 the other node to swap
+        * @static
+         */
+        swapNode: function(n1, n2) {
+            if (n1.swapNode) {
+                n1.swapNode(n2);
+            } else {
+                var p = n2.parentNode;
+                var s = n2.nextSibling;
+
+                if (s == n1) {
+                    p.insertBefore(n1, n2);
+                } else if (n2 == n1.nextSibling) {
+                    p.insertBefore(n2, n1);
+                } else {
+                    n1.parentNode.replaceChild(n2, n1);
+                    p.insertBefore(n1, s);
+                }
+            }
+        },
+
+        /**
+         * Returns the current scroll position
+        * @method getScroll
+        * @private
+        * @static
+         */
+        getScroll: function () {
+            var t, l, dde=document.documentElement, db=document.body;
+            if (dde && (dde.scrollTop || dde.scrollLeft)) {
+                t = dde.scrollTop;
+                l = dde.scrollLeft;
+            } else if (db) {
+                t = db.scrollTop;
+                l = db.scrollLeft;
+            } else {
+                YAHOO.log("could not get scroll property", "info", "DragDropMgr");
+            }
+            return { top: t, left: l };
+        },
+
+        /**
+         * Returns the specified element style property
+        * @method getStyle
+        * @param {HTMLElement} el          the element
+        * @param {string}      styleProp   the style property
+        * @return {string} The value of the style property
+        * @deprecated use YAHOO.util.Dom.getStyle
+        * @static
+         */
+        getStyle: function(el, styleProp) {
+            return YAHOO.util.Dom.getStyle(el, styleProp);
+        },
+
+        /**
+         * Gets the scrollTop
+        * @method getScrollTop
+        * @return {int} the document's scrollTop
+        * @static
+         */
+        getScrollTop: function () { return this.getScroll().top; },
+
+        /**
+         * Gets the scrollLeft
+        * @method getScrollLeft
+        * @return {int} the document's scrollTop
+        * @static
+         */
+        getScrollLeft: function () { return this.getScroll().left; },
+
+        /**
+         * Sets the x/y position of an element to the location of the
+         * target element.
+        * @method moveToEl
+        * @param {HTMLElement} moveEl      The element to move
+        * @param {HTMLElement} targetEl    The position reference element
+        * @static
+         */
+        moveToEl: function (moveEl, targetEl) {
+            var aCoord = YAHOO.util.Dom.getXY(targetEl);
+            YAHOO.log("moveToEl: " + aCoord, "info", "DragDropMgr");
+            YAHOO.util.Dom.setXY(moveEl, aCoord);
+        },
+
+        /**
+         * Gets the client height
+        * @method getClientHeight
+        * @return {int} client height in px
+        * @deprecated use YAHOO.util.Dom.getViewportHeight instead
+        * @static
+         */
+        getClientHeight: function() {
+            return YAHOO.util.Dom.getViewportHeight();
+        },
+
+        /**
+         * Gets the client width
+        * @method getClientWidth
+        * @return {int} client width in px
+        * @deprecated use YAHOO.util.Dom.getViewportWidth instead
+        * @static
+         */
+        getClientWidth: function() {
+            return YAHOO.util.Dom.getViewportWidth();
+        },
+
+        /**
+         * Numeric array sort function
+        * @method numericSort
+        * @static
+         */
+        numericSort: function(a, b) { return (a - b); },
+
+        /**
+         * Internal counter
+        * @property _timeoutCount
+        * @private
+        * @static
+         */
+        _timeoutCount: 0,
+
+        /**
+         * Trying to make the load order less important.  Without this we get
+         * an error if this file is loaded before the Event Utility.
+        * @method _addListeners
+        * @private
+        * @static
+         */
+        _addListeners: function() {
+            var DDM = YAHOO.util.DDM;
+            if ( YAHOO.util.Event && document ) {
+                DDM._onLoad();
+            } else {
+                if (DDM._timeoutCount > 2000) {
+                    YAHOO.log("DragDrop requires the Event Utility", "error", "DragDropMgr");
+                } else {
+                    setTimeout(DDM._addListeners, 10);
+                    if (document && document.body) {
+                        DDM._timeoutCount += 1;
+                    }
+                }
+            }
+        },
+
+        /**
+         * Recursively searches the immediate parent and all child nodes for 
+         * the handle element in order to determine wheter or not it was 
+         * clicked.
+        * @method handleWasClicked
+        * @param node the html element to inspect
+        * @static
+         */
+        handleWasClicked: function(node, id) {
+            if (this.isHandle(id, node.id)) {
+                YAHOO.log("clicked node is a handle", "info", "DragDropMgr");
+                return true;
+            } else {
+                // check to see if this is a text node child of the one we want
+                var p = node.parentNode;
+                // YAHOO.log("p: " + p);
+
+                while (p) {
+                    if (this.isHandle(id, p.id)) {
+                        return true;
+                    } else {
+                        YAHOO.log(p.id + " is not a handle", "info", "DragDropMgr");
+                        p = p.parentNode;
+                    }
+                }
+            }
+
+            return false;
+        }
+
+    };
+
+}();
+
+// shorter alias, save a few bytes
+YAHOO.util.DDM = YAHOO.util.DragDropMgr;
+YAHOO.util.DDM._addListeners();
+
+}
+
+(function() {
+
+var Event=YAHOO.util.Event; 
+var Dom=YAHOO.util.Dom;
+
+/**
+ * Defines the interface and base operation of items that that can be 
+ * dragged or can be drop targets.  It was designed to be extended, overriding
+ * the event handlers for startDrag, onDrag, onDragOver, onDragOut.
+ * Up to three html elements can be associated with a DragDrop instance:
+ * <ul>
+ * <li>linked element: the element that is passed into the constructor.
+ * This is the element which defines the boundaries for interaction with 
+ * other DragDrop objects.</li>
+ * <li>handle element(s): The drag operation only occurs if the element that 
+ * was clicked matches a handle element.  By default this is the linked 
+ * element, but there are times that you will want only a portion of the 
+ * linked element to initiate the drag operation, and the setHandleElId() 
+ * method provides a way to define this.</li>
+ * <li>drag element: this represents an the element that would be moved along
+ * with the cursor during a drag operation.  By default, this is the linked
+ * element itself as in {@link YAHOO.util.DD}.  setDragElId() lets you define
+ * a separate element that would be moved, as in {@link YAHOO.util.DDProxy}
+ * </li>
+ * </ul>
+ * This class should not be instantiated until the onload event to ensure that
+ * the associated elements are available.
+ * The following would define a DragDrop obj that would interact with any 
+ * other DragDrop obj in the "group1" group:
+ * <pre>
+ *  dd = new YAHOO.util.DragDrop("div1", "group1");
+ * </pre>
+ * Since none of the event handlers have been implemented, nothing would 
+ * actually happen if you were to run the code above.  Normally you would 
+ * override this class or one of the default implementations, but you can 
+ * also override the methods you want on an instance of the class...
+ * <pre>
+ *  dd.onDragDrop = function(e, id) {
+ *  &nbsp;&nbsp;alert("dd was dropped on " + id);
+ *  }
+ * </pre>
+ * @namespace YAHOO.util
+ * @class DragDrop
+ * @constructor
+ * @param {String} id of the element that is linked to this instance
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DragDrop: 
+ *                    padding, isTarget, maintainOffset, primaryButtonOnly,
+ */
+YAHOO.util.DragDrop = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config); 
+    }
+};
+
+YAHOO.util.DragDrop.prototype = {
+    /**
+     * An Object Literal containing the events that we will be using: mouseDown, b4MouseDown, mouseUp, b4StartDrag, startDrag, b4EndDrag, endDrag, mouseUp, drag, b4Drag, invalidDrop, b4DragOut, dragOut, dragEnter, b4DragOver, dragOver, b4DragDrop, dragDrop
+     * By setting any of these to false, then event will not be fired.
+    * @property events
+    * @type object
+     */
+    events: null,
+    /**
+   * @method on
+   * @description Shortcut for EventProvider.subscribe, see <a href="YAHOO.util.EventProvider.html#subscribe">YAHOO.util.EventProvider.subscribe</a>
+    */
+    on: function() {
+        this.subscribe.apply(this, arguments);
+    },
+    /**
+     * The id of the element associated with this object.  This is what we 
+     * refer to as the "linked element" because the size and position of 
+     * this element is used to determine when the drag and drop objects have 
+     * interacted.
+    * @property id
+    * @type String
+     */
+    id: null,
+
+    /**
+     * Configuration attributes passed into the constructor
+    * @property config
+    * @type object
+     */
+    config: null,
+
+    /**
+     * The id of the element that will be dragged.  By default this is same 
+     * as the linked element , but could be changed to another element. Ex: 
+     * YAHOO.util.DDProxy
+    * @property dragElId
+    * @type String
+    * @private
+     */
+    dragElId: null, 
+
+    /**
+     * the id of the element that initiates the drag operation.  By default 
+     * this is the linked element, but could be changed to be a child of this
+     * element.  This lets us do things like only starting the drag when the 
+     * header element within the linked html element is clicked.
+    * @property handleElId
+    * @type String
+    * @private
+     */
+    handleElId: null, 
+
+    /**
+     * An associative array of HTML tags that will be ignored if clicked.
+    * @property invalidHandleTypes
+    * @type {string: string}
+     */
+    invalidHandleTypes: null, 
+
+    /**
+     * An associative array of ids for elements that will be ignored if clicked
+    * @property invalidHandleIds
+    * @type {string: string}
+     */
+    invalidHandleIds: null, 
+
+    /**
+     * An indexted array of css class names for elements that will be ignored
+     * if clicked.
+    * @property invalidHandleClasses
+    * @type string[]
+     */
+    invalidHandleClasses: null, 
+
+    /**
+     * The linked element's absolute X position at the time the drag was 
+     * started
+    * @property startPageX
+    * @type int
+    * @private
+     */
+    startPageX: 0,
+
+    /**
+     * The linked element's absolute X position at the time the drag was 
+     * started
+    * @property startPageY
+    * @type int
+    * @private
+     */
+    startPageY: 0,
+
+    /**
+     * The group defines a logical collection of DragDrop objects that are 
+     * related.  Instances only get events when interacting with other 
+     * DragDrop object in the same group.  This lets us define multiple 
+     * groups using a single DragDrop subclass if we want.
+    * @property groups
+    * @type {string: string}
+     */
+    groups: null,
+
+    /**
+     * Individual drag/drop instances can be locked.  This will prevent 
+     * onmousedown start drag.
+    * @property locked
+    * @type boolean
+    * @private
+     */
+    locked: false,
+
+    /**
+     * Lock this instance
+    * @method lock
+     */
+    lock: function() { this.locked = true; },
+
+    /**
+     * Unlock this instace
+    * @method unlock
+     */
+    unlock: function() { this.locked = false; },
+
+    /**
+     * By default, all instances can be a drop target.  This can be disabled by
+     * setting isTarget to false.
+    * @property isTarget
+    * @type boolean
+     */
+    isTarget: true,
+
+    /**
+     * The padding configured for this drag and drop object for calculating
+     * the drop zone intersection with this object.
+    * @property padding
+    * @type int[]
+     */
+    padding: null,
+    /**
+     * If this flag is true, do not fire drop events. The element is a drag only element (for movement not dropping)
+    * @property dragOnly
+    * @type Boolean
+     */
+    dragOnly: false,
+
+    /**
+     * If this flag is true, a shim will be placed over the screen/viewable area to track mouse events. Should help with dragging elements over iframes and other controls.
+    * @property useShim
+    * @type Boolean
+     */
+    useShim: false,
+
+    /**
+     * Cached reference to the linked element
+    * @property _domRef
+    * @private
+     */
+    _domRef: null,
+
+    /**
+     * Internal typeof flag
+    * @property __ygDragDrop
+    * @private
+     */
+    __ygDragDrop: true,
+
+    /**
+     * Set to true when horizontal contraints are applied
+    * @property constrainX
+    * @type boolean
+    * @private
+     */
+    constrainX: false,
+
+    /**
+     * Set to true when vertical contraints are applied
+    * @property constrainY
+    * @type boolean
+    * @private
+     */
+    constrainY: false,
+
+    /**
+     * The left constraint
+    * @property minX
+    * @type int
+    * @private
+     */
+    minX: 0,
+
+    /**
+     * The right constraint
+    * @property maxX
+    * @type int
+    * @private
+     */
+    maxX: 0,
+
+    /**
+     * The up constraint 
+    * @property minY
+    * @type int
+    * @type int
+    * @private
+     */
+    minY: 0,
+
+    /**
+     * The down constraint 
+    * @property maxY
+    * @type int
+    * @private
+     */
+    maxY: 0,
+
+    /**
+     * The difference between the click position and the source element's location
+    * @property deltaX
+    * @type int
+    * @private
+     */
+    deltaX: 0,
+
+    /**
+     * The difference between the click position and the source element's location
+    * @property deltaY
+    * @type int
+    * @private
+     */
+    deltaY: 0,
+
+    /**
+     * Maintain offsets when we resetconstraints.  Set to true when you want
+     * the position of the element relative to its parent to stay the same
+     * when the page changes
+     *
+    * @property maintainOffset
+    * @type boolean
+     */
+    maintainOffset: false,
+
+    /**
+     * Array of pixel locations the element will snap to if we specified a 
+     * horizontal graduation/interval.  This array is generated automatically
+     * when you define a tick interval.
+    * @property xTicks
+    * @type int[]
+     */
+    xTicks: null,
+
+    /**
+     * Array of pixel locations the element will snap to if we specified a 
+     * vertical graduation/interval.  This array is generated automatically 
+     * when you define a tick interval.
+    * @property yTicks
+    * @type int[]
+     */
+    yTicks: null,
+
+    /**
+     * By default the drag and drop instance will only respond to the primary
+     * button click (left button for a right-handed mouse).  Set to true to
+     * allow drag and drop to start with any mouse click that is propogated
+     * by the browser
+    * @property primaryButtonOnly
+    * @type boolean
+     */
+    primaryButtonOnly: true,
+
+    /**
+     * The availabe property is false until the linked dom element is accessible.
+    * @property available
+    * @type boolean
+     */
+    available: false,
+
+    /**
+     * By default, drags can only be initiated if the mousedown occurs in the
+     * region the linked element is.  This is done in part to work around a
+     * bug in some browsers that mis-report the mousedown if the previous
+     * mouseup happened outside of the window.  This property is set to true
+     * if outer handles are defined.
+     *
+    * @property hasOuterHandles
+    * @type boolean
+    * @default false
+     */
+    hasOuterHandles: false,
+
+    /**
+     * Property that is assigned to a drag and drop object when testing to
+     * see if it is being targeted by another dd object.  This property
+     * can be used in intersect mode to help determine the focus of
+     * the mouse interaction.  DDM.getBestMatch uses this property first to
+     * determine the closest match in INTERSECT mode when multiple targets
+     * are part of the same interaction.
+    * @property cursorIsOver
+    * @type boolean
+     */
+    cursorIsOver: false,
+
+    /**
+     * Property that is assigned to a drag and drop object when testing to
+     * see if it is being targeted by another dd object.  This is a region
+     * that represents the area the draggable element overlaps this target.
+     * DDM.getBestMatch uses this property to compare the size of the overlap
+     * to that of other targets in order to determine the closest match in
+     * INTERSECT mode when multiple targets are part of the same interaction.
+    * @property overlap 
+    * @type YAHOO.util.Region
+     */
+    overlap: null,
+
+    /**
+     * Code that executes immediately before the startDrag event
+    * @method b4StartDrag
+    * @private
+     */
+    b4StartDrag: function(x, y) { },
+
+    /**
+     * Abstract method called after a drag/drop object is clicked
+     * and the drag or mousedown time thresholds have beeen met.
+    * @method startDrag
+    * @param {int} X click location
+    * @param {int} Y click location
+     */
+    startDrag: function(x, y) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDrag event
+    * @method b4Drag
+    * @private
+     */
+    b4Drag: function(e) { },
+
+    /**
+     * Abstract method called during the onMouseMove event while dragging an 
+     * object.
+    * @method onDrag
+    * @param {Event} e the mousemove event
+     */
+    onDrag: function(e) { /* override this */ },
+
+    /**
+     * Abstract method called when this element fist begins hovering over 
+     * another DragDrop obj
+    * @method onDragEnter
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this is hovering over.  In INTERSECT mode, an array of one or more 
+     * dragdrop items being hovered over.
+     */
+    onDragEnter: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragOver event
+    * @method b4DragOver
+    * @private
+     */
+    b4DragOver: function(e) { },
+
+    /**
+     * Abstract method called when this element is hovering over another 
+     * DragDrop obj
+    * @method onDragOver
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this is hovering over.  In INTERSECT mode, an array of dd items 
+     * being hovered over.
+     */
+    onDragOver: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragOut event
+    * @method b4DragOut
+    * @private
+     */
+    b4DragOut: function(e) { },
+
+    /**
+     * Abstract method called when we are no longer hovering over an element
+    * @method onDragOut
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this was hovering over.  In INTERSECT mode, an array of dd items 
+     * that the mouse is no longer over.
+     */
+    onDragOut: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragDrop event
+    * @method b4DragDrop
+    * @private
+     */
+    b4DragDrop: function(e) { },
+
+    /**
+     * Abstract method called when this item is dropped on another DragDrop 
+     * obj
+    * @method onDragDrop
+    * @param {Event} e the mouseup event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this was dropped on.  In INTERSECT mode, an array of dd items this 
+     * was dropped on.
+     */
+    onDragDrop: function(e, id) { /* override this */ },
+
+    /**
+     * Abstract method called when this item is dropped on an area with no
+     * drop target
+    * @method onInvalidDrop
+    * @param {Event} e the mouseup event
+     */
+    onInvalidDrop: function(e) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the endDrag event
+    * @method b4EndDrag
+    * @private
+     */
+    b4EndDrag: function(e) { },
+
+    /**
+     * Fired when we are done dragging the object
+    * @method endDrag
+    * @param {Event} e the mouseup event
+     */
+    endDrag: function(e) { /* override this */ },
+
+    /**
+     * Code executed immediately before the onMouseDown event
+    * @method b4MouseDown
+    * @param {Event} e the mousedown event
+    * @private
+     */
+    b4MouseDown: function(e) {  },
+
+    /**
+     * Event handler that fires when a drag/drop obj gets a mousedown
+    * @method onMouseDown
+    * @param {Event} e the mousedown event
+     */
+    onMouseDown: function(e) { /* override this */ },
+
+    /**
+     * Event handler that fires when a drag/drop obj gets a mouseup
+    * @method onMouseUp
+    * @param {Event} e the mouseup event
+     */
+    onMouseUp: function(e) { /* override this */ },
+   
+    /**
+     * Override the onAvailable method to do what is needed after the initial
+     * position was determined.
+    * @method onAvailable
+     */
+    onAvailable: function () { 
+        //this.logger.log("onAvailable (base)"); 
+    },
+
+    /**
+     * Returns a reference to the linked element
+    * @method getEl
+    * @return {HTMLElement} the html element 
+     */
+    getEl: function() { 
+        if (!this._domRef) {
+            this._domRef = Dom.get(this.id); 
+        }
+
+        return this._domRef;
+    },
+
+    /**
+     * Returns a reference to the actual element to drag.  By default this is
+     * the same as the html element, but it can be assigned to another 
+     * element. An example of this can be found in YAHOO.util.DDProxy
+    * @method getDragEl
+    * @return {HTMLElement} the html element 
+     */
+    getDragEl: function() {
+        return Dom.get(this.dragElId);
+    },
+
+    /**
+     * Sets up the DragDrop object.  Must be called in the constructor of any
+     * YAHOO.util.DragDrop subclass
+    * @method init
+    * @param id the id of the linked element
+    * @param {String} sGroup the group of related items
+    * @param {object} config configuration attributes
+     */
+    init: function(id, sGroup, config) {
+        this.initTarget(id, sGroup, config);
+        Event.on(this._domRef || this.id, "mousedown", 
+                        this.handleMouseDown, this, true);
+
+        // Event.on(this.id, "selectstart", Event.preventDefault);
+        for (var i in this.events) {
+            this.createEvent(i + 'Event');
+        }
+        
+    },
+
+    /**
+     * Initializes Targeting functionality only... the object does not
+     * get a mousedown handler.
+    * @method initTarget
+    * @param id the id of the linked element
+    * @param {String} sGroup the group of related items
+    * @param {object} config configuration attributes
+     */
+    initTarget: function(id, sGroup, config) {
+
+        // configuration attributes 
+        this.config = config || {};
+
+        this.events = {};
+
+        // create a local reference to the drag and drop manager
+        this.DDM = YAHOO.util.DDM;
+
+        // initialize the groups object
+        this.groups = {};
+
+        // assume that we have an element reference instead of an id if the
+        // parameter is not a string
+        if (typeof id !== "string") {
+            YAHOO.log("id is not a string, assuming it is an HTMLElement");
+            this._domRef = id;
+            id = Dom.generateId(id);
+        }
+
+        // set the id
+        this.id = id;
+
+        // add to an interaction group
+        this.addToGroup((sGroup) ? sGroup : "default");
+
+        // We don't want to register this as the handle with the manager
+        // so we just set the id rather than calling the setter.
+        this.handleElId = id;
+
+        Event.onAvailable(id, this.handleOnAvailable, this, true);
+
+        // create a logger instance
+        this.logger = (YAHOO.widget.LogWriter) ? 
+                new YAHOO.widget.LogWriter(this.toString()) : YAHOO;
+
+        // the linked element is the element that gets dragged by default
+        this.setDragElId(id); 
+
+        // by default, clicked anchors will not start drag operations. 
+        // @TODO what else should be here?  Probably form fields.
+        this.invalidHandleTypes = { A: "A" };
+        this.invalidHandleIds = {};
+        this.invalidHandleClasses = [];
+
+        this.applyConfig();
+    },
+
+    /**
+     * Applies the configuration parameters that were passed into the constructor.
+     * This is supposed to happen at each level through the inheritance chain.  So
+     * a DDProxy implentation will execute apply config on DDProxy, DD, and 
+     * DragDrop in order to get all of the parameters that are available in
+     * each object.
+    * @method applyConfig
+     */
+    applyConfig: function() {
+        this.events = {
+            mouseDown: true,
+            b4MouseDown: true,
+            mouseUp: true,
+            b4StartDrag: true,
+            startDrag: true,
+            b4EndDrag: true,
+            endDrag: true,
+            drag: true,
+            b4Drag: true,
+            invalidDrop: true,
+            b4DragOut: true,
+            dragOut: true,
+            dragEnter: true,
+            b4DragOver: true,
+            dragOver: true,
+            b4DragDrop: true,
+            dragDrop: true
+        };
+        
+        if (this.config.events) {
+            for (var i in this.config.events) {
+                if (this.config.events[i] === false) {
+                    this.events[i] = false;
+                }
+            }
+        }
+
+
+        // configurable properties: 
+        //    padding, isTarget, maintainOffset, primaryButtonOnly
+        this.padding           = this.config.padding || [0, 0, 0, 0];
+        this.isTarget          = (this.config.isTarget !== false);
+        this.maintainOffset    = (this.config.maintainOffset);
+        this.primaryButtonOnly = (this.config.primaryButtonOnly !== false);
+        this.dragOnly = ((this.config.dragOnly === true) ? true : false);
+        this.useShim = ((this.config.useShim === true) ? true : false);
+    },
+
+    /**
+     * Executed when the linked element is available
+    * @method handleOnAvailable
+    * @private
+     */
+    handleOnAvailable: function() {
+        //this.logger.log("handleOnAvailable");
+        this.available = true;
+        this.resetConstraints();
+        this.onAvailable();
+    },
+
+     /**
+     * Configures the padding for the target zone in px.  Effectively expands
+     * (or reduces) the virtual object size for targeting calculations.  
+     * Supports css-style shorthand; if only one parameter is passed, all sides
+     * will have that padding, and if only two are passed, the top and bottom
+     * will have the first param, the left and right the second.
+    * @method setPadding
+    * @param {int} iTop    Top pad
+    * @param {int} iRight  Right pad
+    * @param {int} iBot    Bot pad
+    * @param {int} iLeft   Left pad
+     */
+    setPadding: function(iTop, iRight, iBot, iLeft) {
+        // this.padding = [iLeft, iRight, iTop, iBot];
+        if (!iRight && 0 !== iRight) {
+            this.padding = [iTop, iTop, iTop, iTop];
+        } else if (!iBot && 0 !== iBot) {
+            this.padding = [iTop, iRight, iTop, iRight];
+        } else {
+            this.padding = [iTop, iRight, iBot, iLeft];
+        }
+    },
+
+    /**
+     * Stores the initial placement of the linked element.
+    * @method setInitialPosition
+    * @param {int} diffX   the X offset, default 0
+    * @param {int} diffY   the Y offset, default 0
+    * @private
+     */
+    setInitPosition: function(diffX, diffY) {
+        var el = this.getEl();
+
+        if (!this.DDM.verifyEl(el)) {
+            if (el && el.style && (el.style.display == 'none')) {
+                this.logger.log(this.id + " can not get initial position, element style is display: none");
+            } else {
+                this.logger.log(this.id + " element is broken");
+            }
+            return;
+        }
+
+        var dx = diffX || 0;
+        var dy = diffY || 0;
+
+        var p = Dom.getXY( el );
+
+        this.initPageX = p[0] - dx;
+        this.initPageY = p[1] - dy;
+
+        this.lastPageX = p[0];
+        this.lastPageY = p[1];
+
+        this.logger.log(this.id + " initial position: " + this.initPageX + 
+                ", " + this.initPageY);
+
+
+        this.setStartPosition(p);
+    },
+
+    /**
+     * Sets the start position of the element.  This is set when the obj
+     * is initialized, the reset when a drag is started.
+    * @method setStartPosition
+    * @param pos current position (from previous lookup)
+    * @private
+     */
+    setStartPosition: function(pos) {
+        var p = pos || Dom.getXY(this.getEl());
+
+        this.deltaSetXY = null;
+
+        this.startPageX = p[0];
+        this.startPageY = p[1];
+    },
+
+    /**
+     * Add this instance to a group of related drag/drop objects.  All 
+     * instances belong to at least one group, and can belong to as many 
+     * groups as needed.
+    * @method addToGroup
+    * @param sGroup {string} the name of the group
+     */
+    addToGroup: function(sGroup) {
+        this.groups[sGroup] = true;
+        this.DDM.regDragDrop(this, sGroup);
+    },
+
+    /**
+     * Remove's this instance from the supplied interaction group
+    * @method removeFromGroup
+    * @param {string}  sGroup  The group to drop
+     */
+    removeFromGroup: function(sGroup) {
+        this.logger.log("Removing from group: " + sGroup);
+        if (this.groups[sGroup]) {
+            delete this.groups[sGroup];
+        }
+
+        this.DDM.removeDDFromGroup(this, sGroup);
+    },
+
+    /**
+     * Allows you to specify that an element other than the linked element 
+     * will be moved with the cursor during a drag
+    * @method setDragElId
+    * @param id {string} the id of the element that will be used to initiate the drag
+     */
+    setDragElId: function(id) {
+        this.dragElId = id;
+    },
+
+    /**
+     * Allows you to specify a child of the linked element that should be 
+     * used to initiate the drag operation.  An example of this would be if 
+     * you have a content div with text and links.  Clicking anywhere in the 
+     * content area would normally start the drag operation.  Use this method
+     * to specify that an element inside of the content div is the element 
+     * that starts the drag operation.
+    * @method setHandleElId
+    * @param id {string} the id of the element that will be used to 
+     * initiate the drag.
+     */
+    setHandleElId: function(id) {
+        if (typeof id !== "string") {
+            YAHOO.log("id is not a string, assuming it is an HTMLElement");
+            id = Dom.generateId(id);
+        }
+        this.handleElId = id;
+        this.DDM.regHandle(this.id, id);
+    },
+
+    /**
+     * Allows you to set an element outside of the linked element as a drag 
+     * handle
+    * @method setOuterHandleElId
+    * @param id the id of the element that will be used to initiate the drag
+     */
+    setOuterHandleElId: function(id) {
+        if (typeof id !== "string") {
+            YAHOO.log("id is not a string, assuming it is an HTMLElement");
+            id = Dom.generateId(id);
+        }
+        this.logger.log("Adding outer handle event: " + id);
+        Event.on(id, "mousedown", 
+                this.handleMouseDown, this, true);
+        this.setHandleElId(id);
+
+        this.hasOuterHandles = true;
+    },
+
+    /**
+     * Remove all drag and drop hooks for this element
+    * @method unreg
+     */
+    unreg: function() {
+        this.logger.log("DragDrop obj cleanup " + this.id);
+        Event.removeListener(this.id, "mousedown", 
+                this.handleMouseDown);
+        this._domRef = null;
+        this.DDM._remove(this);
+    },
+
+    /**
+     * Returns true if this instance is locked, or the drag drop mgr is locked
+     * (meaning that all drag/drop is disabled on the page.)
+    * @method isLocked
+    * @return {boolean} true if this obj or all drag/drop is locked, else 
+     * false
+     */
+    isLocked: function() {
+        return (this.DDM.isLocked() || this.locked);
+    },
+
+    /**
+     * Fired when this object is clicked
+    * @method handleMouseDown
+    * @param {Event} e 
+    * @param {YAHOO.util.DragDrop} oDD the clicked dd object (this dd obj)
+    * @private
+     */
+    handleMouseDown: function(e, oDD) {
+
+        var button = e.which || e.button;
+        this.logger.log("button: " + button);
+
+        if (this.primaryButtonOnly && button > 1) {
+            this.logger.log("Mousedown was not produced by the primary button");
+            return;
+        }
+
+        if (this.isLocked()) {
+            this.logger.log("Drag and drop is disabled, aborting");
+            return;
+        }
+
+        this.logger.log("mousedown " + this.id);
+
+        this.logger.log("firing onMouseDown events");
+
+        // firing the mousedown events prior to calculating positions
+        var b4Return = this.b4MouseDown(e),
+        b4Return2 = true;
+
+        if (this.events.b4MouseDown) {
+            b4Return2 = this.fireEvent('b4MouseDownEvent', e);
+        }
+        var mDownReturn = this.onMouseDown(e),
+            mDownReturn2 = true;
+        if (this.events.mouseDown) {
+            mDownReturn2 = this.fireEvent('mouseDownEvent', e);
+        }
+
+        if ((b4Return === false) || (mDownReturn === false) || (b4Return2 === false) || (mDownReturn2 === false)) {
+            this.logger.log('b4MouseDown or onMouseDown returned false, exiting drag');
+            return;
+        }
+
+        this.DDM.refreshCache(this.groups);
+        // var self = this;
+        // setTimeout( function() { self.DDM.refreshCache(self.groups); }, 0);
+
+        // Only process the event if we really clicked within the linked 
+        // element.  The reason we make this check is that in the case that 
+        // another element was moved between the clicked element and the 
+        // cursor in the time between the mousedown and mouseup events. When 
+        // this happens, the element gets the next mousedown event 
+        // regardless of where on the screen it happened.  
+        var pt = new YAHOO.util.Point(Event.getPageX(e), Event.getPageY(e));
+        if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) )  {
+                this.logger.log("Click was not over the element: " + this.id);
+        } else {
+            if (this.clickValidator(e)) {
+
+                this.logger.log("click was a valid handle");
+
+                // set the initial element position
+                this.setStartPosition();
+
+                // start tracking mousemove distance and mousedown time to
+                // determine when to start the actual drag
+                this.DDM.handleMouseDown(e, this);
+
+                // this mousedown is mine
+                this.DDM.stopEvent(e);
+            } else {
+
+this.logger.log("clickValidator returned false, drag not initiated");
+
+            }
+        }
+    },
+
+    /**
+    * @method clickValidator
+    * @description Method validates that the clicked element
+     * was indeed the handle or a valid child of the handle
+    * @param {Event} e 
+     */
+    clickValidator: function(e) {
+        var target = YAHOO.util.Event.getTarget(e);
+        return ( this.isValidHandleChild(target) &&
+                    (this.id == this.handleElId || 
+                        this.DDM.handleWasClicked(target, this.id)) );
+    },
+
+    /**
+     * Finds the location the element should be placed if we want to move
+     * it to where the mouse location less the click offset would place us.
+    * @method getTargetCoord
+    * @param {int} iPageX the X coordinate of the click
+    * @param {int} iPageY the Y coordinate of the click
+    * @return an object that contains the coordinates (Object.x and Object.y)
+    * @private
+     */
+    getTargetCoord: function(iPageX, iPageY) {
+
+        // this.logger.log("getTargetCoord: " + iPageX + ", " + iPageY);
+
+        var x = iPageX - this.deltaX;
+        var y = iPageY - this.deltaY;
+
+        if (this.constrainX) {
+            if (x < this.minX) { x = this.minX; }
+            if (x > this.maxX) { x = this.maxX; }
+        }
+
+        if (this.constrainY) {
+            if (y < this.minY) { y = this.minY; }
+            if (y > this.maxY) { y = this.maxY; }
+        }
+
+        x = this.getTick(x, this.xTicks);
+        y = this.getTick(y, this.yTicks);
+
+        // this.logger.log("getTargetCoord " + 
+                // " iPageX: " + iPageX +
+                // " iPageY: " + iPageY +
+                // " x: " + x + ", y: " + y);
+
+        return {x:x, y:y};
+    },
+
+    /**
+     * Allows you to specify a tag name that should not start a drag operation
+     * when clicked.  This is designed to facilitate embedding links within a
+     * drag handle that do something other than start the drag.
+    * @method addInvalidHandleType
+    * @param {string} tagName the type of element to exclude
+     */
+    addInvalidHandleType: function(tagName) {
+        var type = tagName.toUpperCase();
+        this.invalidHandleTypes[type] = type;
+    },
+
+    /**
+     * Lets you to specify an element id for a child of a drag handle
+     * that should not initiate a drag
+    * @method addInvalidHandleId
+    * @param {string} id the element id of the element you wish to ignore
+     */
+    addInvalidHandleId: function(id) {
+        if (typeof id !== "string") {
+            YAHOO.log("id is not a string, assuming it is an HTMLElement");
+            id = Dom.generateId(id);
+        }
+        this.invalidHandleIds[id] = id;
+    },
+
+
+    /**
+     * Lets you specify a css class of elements that will not initiate a drag
+    * @method addInvalidHandleClass
+    * @param {string} cssClass the class of the elements you wish to ignore
+     */
+    addInvalidHandleClass: function(cssClass) {
+        this.invalidHandleClasses.push(cssClass);
+    },
+
+    /**
+     * Unsets an excluded tag name set by addInvalidHandleType
+    * @method removeInvalidHandleType
+    * @param {string} tagName the type of element to unexclude
+     */
+    removeInvalidHandleType: function(tagName) {
+        var type = tagName.toUpperCase();
+        // this.invalidHandleTypes[type] = null;
+        delete this.invalidHandleTypes[type];
+    },
+    
+    /**
+     * Unsets an invalid handle id
+    * @method removeInvalidHandleId
+    * @param {string} id the id of the element to re-enable
+     */
+    removeInvalidHandleId: function(id) {
+        if (typeof id !== "string") {
+            YAHOO.log("id is not a string, assuming it is an HTMLElement");
+            id = Dom.generateId(id);
+        }
+        delete this.invalidHandleIds[id];
+    },
+
+    /**
+     * Unsets an invalid css class
+    * @method removeInvalidHandleClass
+    * @param {string} cssClass the class of the element(s) you wish to 
+     * re-enable
+     */
+    removeInvalidHandleClass: function(cssClass) {
+        for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) {
+            if (this.invalidHandleClasses[i] == cssClass) {
+                delete this.invalidHandleClasses[i];
+            }
+        }
+    },
+
+    /**
+     * Checks the tag exclusion list to see if this click should be ignored
+    * @method isValidHandleChild
+    * @param {HTMLElement} node the HTMLElement to evaluate
+    * @return {boolean} true if this is a valid tag type, false if not
+     */
+    isValidHandleChild: function(node) {
+
+        var valid = true;
+        // var n = (node.nodeName == "#text") ? node.parentNode : node;
+        var nodeName;
+        try {
+            nodeName = node.nodeName.toUpperCase();
+        } catch(e) {
+            nodeName = node.nodeName;
+        }
+        valid = valid && !this.invalidHandleTypes[nodeName];
+        valid = valid && !this.invalidHandleIds[node.id];
+
+        for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) {
+            valid = !Dom.hasClass(node, this.invalidHandleClasses[i]);
+        }
+
+        this.logger.log("Valid handle? ... " + valid);
+
+        return valid;
+
+    },
+
+    /**
+     * Create the array of horizontal tick marks if an interval was specified
+     * in setXConstraint().
+    * @method setXTicks
+    * @private
+     */
+    setXTicks: function(iStartX, iTickSize) {
+        this.xTicks = [];
+        this.xTickSize = iTickSize;
+        
+        var tickMap = {};
+
+        for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) {
+            if (!tickMap[i]) {
+                this.xTicks[this.xTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) {
+            if (!tickMap[i]) {
+                this.xTicks[this.xTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        this.xTicks.sort(this.DDM.numericSort) ;
+        this.logger.log("xTicks: " + this.xTicks.join());
+    },
+
+    /**
+     * Create the array of vertical tick marks if an interval was specified in 
+     * setYConstraint().
+    * @method setYTicks
+    * @private
+     */
+    setYTicks: function(iStartY, iTickSize) {
+        // this.logger.log("setYTicks: " + iStartY + ", " + iTickSize
+               // + ", " + this.initPageY + ", " + this.minY + ", " + this.maxY );
+        this.yTicks = [];
+        this.yTickSize = iTickSize;
+
+        var tickMap = {};
+
+        for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) {
+            if (!tickMap[i]) {
+                this.yTicks[this.yTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) {
+            if (!tickMap[i]) {
+                this.yTicks[this.yTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        this.yTicks.sort(this.DDM.numericSort) ;
+        this.logger.log("yTicks: " + this.yTicks.join());
+    },
+
+    /**
+     * By default, the element can be dragged any place on the screen.  Use 
+     * this method to limit the horizontal travel of the element.  Pass in 
+     * 0,0 for the parameters if you want to lock the drag to the y axis.
+    * @method setXConstraint
+    * @param {int} iLeft the number of pixels the element can move to the left
+    * @param {int} iRight the number of pixels the element can move to the 
+     * right
+    * @param {int} iTickSize optional parameter for specifying that the 
+     * element
+     * should move iTickSize pixels at a time.
+     */
+    setXConstraint: function(iLeft, iRight, iTickSize) {
+        this.leftConstraint = parseInt(iLeft, 10);
+        this.rightConstraint = parseInt(iRight, 10);
+
+        this.minX = this.initPageX - this.leftConstraint;
+        this.maxX = this.initPageX + this.rightConstraint;
+        if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); }
+
+        this.constrainX = true;
+        this.logger.log("initPageX:" + this.initPageX + " minX:" + this.minX + 
+                " maxX:" + this.maxX);
+    },
+
+    /**
+     * Clears any constraints applied to this instance.  Also clears ticks
+     * since they can't exist independent of a constraint at this time.
+    * @method clearConstraints
+     */
+    clearConstraints: function() {
+        this.logger.log("Clearing constraints");
+        this.constrainX = false;
+        this.constrainY = false;
+        this.clearTicks();
+    },
+
+    /**
+     * Clears any tick interval defined for this instance
+    * @method clearTicks
+     */
+    clearTicks: function() {
+        this.logger.log("Clearing ticks");
+        this.xTicks = null;
+        this.yTicks = null;
+        this.xTickSize = 0;
+        this.yTickSize = 0;
+    },
+
+    /**
+     * By default, the element can be dragged any place on the screen.  Set 
+     * this to limit the vertical travel of the element.  Pass in 0,0 for the
+     * parameters if you want to lock the drag to the x axis.
+    * @method setYConstraint
+    * @param {int} iUp the number of pixels the element can move up
+    * @param {int} iDown the number of pixels the element can move down
+    * @param {int} iTickSize optional parameter for specifying that the 
+     * element should move iTickSize pixels at a time.
+     */
+    setYConstraint: function(iUp, iDown, iTickSize) {
+        this.logger.log("setYConstraint: " + iUp + "," + iDown + "," + iTickSize);
+        this.topConstraint = parseInt(iUp, 10);
+        this.bottomConstraint = parseInt(iDown, 10);
+
+        this.minY = this.initPageY - this.topConstraint;
+        this.maxY = this.initPageY + this.bottomConstraint;
+        if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); }
+
+        this.constrainY = true;
+        
+        this.logger.log("initPageY:" + this.initPageY + " minY:" + this.minY + 
+                " maxY:" + this.maxY);
+    },
+
+    /**
+     * resetConstraints must be called if you manually reposition a dd element.
+    * @method resetConstraints
+     */
+    resetConstraints: function() {
+
+        //this.logger.log("resetConstraints");
+
+        // Maintain offsets if necessary
+        if (this.initPageX || this.initPageX === 0) {
+            //this.logger.log("init pagexy: " + this.initPageX + ", " + 
+                               //this.initPageY);
+            //this.logger.log("last pagexy: " + this.lastPageX + ", " + 
+                               //this.lastPageY);
+            // figure out how much this thing has moved
+            var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
+            var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
+
+            this.setInitPosition(dx, dy);
+
+        // This is the first time we have detected the element's position
+        } else {
+            this.setInitPosition();
+        }
+
+        if (this.constrainX) {
+            this.setXConstraint( this.leftConstraint, 
+                                 this.rightConstraint, 
+                                 this.xTickSize        );
+        }
+
+        if (this.constrainY) {
+            this.setYConstraint( this.topConstraint, 
+                                 this.bottomConstraint, 
+                                 this.yTickSize         );
+        }
+    },
+
+    /**
+     * Normally the drag element is moved pixel by pixel, but we can specify 
+     * that it move a number of pixels at a time.  This method resolves the 
+     * location when we have it set up like this.
+    * @method getTick
+    * @param {int} val where we want to place the object
+    * @param {int[]} tickArray sorted array of valid points
+    * @return {int} the closest tick
+    * @private
+     */
+    getTick: function(val, tickArray) {
+
+        if (!tickArray) {
+            // If tick interval is not defined, it is effectively 1 pixel, 
+            // so we return the value passed to us.
+            return val; 
+        } else if (tickArray[0] >= val) {
+            // The value is lower than the first tick, so we return the first
+            // tick.
+            return tickArray[0];
+        } else {
+            for (var i=0, len=tickArray.length; i<len; ++i) {
+                var next = i + 1;
+                if (tickArray[next] && tickArray[next] >= val) {
+                    var diff1 = val - tickArray[i];
+                    var diff2 = tickArray[next] - val;
+                    return (diff2 > diff1) ? tickArray[i] : tickArray[next];
+                }
+            }
+
+            // The value is larger than the last tick, so we return the last
+            // tick.
+            return tickArray[tickArray.length - 1];
+        }
+    },
+
+    /**
+     * toString method
+    * @method toString
+    * @return {string} string representation of the dd obj
+     */
+    toString: function() {
+        return ("DragDrop " + this.id);
+    }
+
+};
+YAHOO.augment(YAHOO.util.DragDrop, YAHOO.util.EventProvider);
+
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+})();
+/**
+ * A DragDrop implementation where the linked element follows the 
+ * mouse cursor during a drag.
+ * @class DD
+ * @extends YAHOO.util.DragDrop
+ * @constructor
+ * @param {String} id the id of the linked element 
+ * @param {String} sGroup the group of related DragDrop items
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DD: 
+ *                    scroll
+ */
+YAHOO.util.DD = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config);
+    }
+};
+
+YAHOO.extend(YAHOO.util.DD, YAHOO.util.DragDrop, {
+
+    /**
+     * When set to true, the utility automatically tries to scroll the browser
+     * window when a drag and drop element is dragged near the viewport boundary.
+     * Defaults to true.
+    * @property scroll
+    * @type boolean
+     */
+    scroll: true, 
+
+    /**
+     * Sets the pointer offset to the distance between the linked element's top 
+     * left corner and the location the element was clicked
+    * @method autoOffset
+    * @param {int} iPageX the X coordinate of the click
+    * @param {int} iPageY the Y coordinate of the click
+     */
+    autoOffset: function(iPageX, iPageY) {
+        var x = iPageX - this.startPageX;
+        var y = iPageY - this.startPageY;
+        this.setDelta(x, y);
+        // this.logger.log("autoOffset el pos: " + aCoord + ", delta: " + x + "," + y);
+    },
+
+    /** 
+     * Sets the pointer offset.  You can call this directly to force the 
+     * offset to be in a particular location (e.g., pass in 0,0 to set it 
+     * to the center of the object, as done in YAHOO.widget.Slider)
+    * @method setDelta
+    * @param {int} iDeltaX the distance from the left
+    * @param {int} iDeltaY the distance from the top
+     */
+    setDelta: function(iDeltaX, iDeltaY) {
+        this.deltaX = iDeltaX;
+        this.deltaY = iDeltaY;
+        this.logger.log("deltaX:" + this.deltaX + ", deltaY:" + this.deltaY);
+    },
+
+    /**
+     * Sets the drag element to the location of the mousedown or click event, 
+     * maintaining the cursor location relative to the location on the element 
+     * that was clicked.  Override this if you want to place the element in a 
+     * location other than where the cursor is.
+    * @method setDragElPos
+    * @param {int} iPageX the X coordinate of the mousedown or drag event
+    * @param {int} iPageY the Y coordinate of the mousedown or drag event
+     */
+    setDragElPos: function(iPageX, iPageY) {
+        // the first time we do this, we are going to check to make sure
+        // the element has css positioning
+
+        var el = this.getDragEl();
+        this.alignElWithMouse(el, iPageX, iPageY);
+    },
+
+    /**
+     * Sets the element to the location of the mousedown or click event, 
+     * maintaining the cursor location relative to the location on the element 
+     * that was clicked.  Override this if you want to place the element in a 
+     * location other than where the cursor is.
+    * @method alignElWithMouse
+    * @param {HTMLElement} el the element to move
+    * @param {int} iPageX the X coordinate of the mousedown or drag event
+    * @param {int} iPageY the Y coordinate of the mousedown or drag event
+     */
+    alignElWithMouse: function(el, iPageX, iPageY) {
+        var oCoord = this.getTargetCoord(iPageX, iPageY);
+        // this.logger.log("****alignElWithMouse : " + el.id + ", " + aCoord + ", " + el.style.display);
+
+        if (!this.deltaSetXY) {
+            var aCoord = [oCoord.x, oCoord.y];
+            YAHOO.util.Dom.setXY(el, aCoord);
+
+            var newLeft = parseInt( YAHOO.util.Dom.getStyle(el, "left"), 10 );
+            var newTop  = parseInt( YAHOO.util.Dom.getStyle(el, "top" ), 10 );
+
+            this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ];
+        } else {
+            YAHOO.util.Dom.setStyle(el, "left", (oCoord.x + this.deltaSetXY[0]) + "px");
+            YAHOO.util.Dom.setStyle(el, "top",  (oCoord.y + this.deltaSetXY[1]) + "px");
+        }
+        
+        this.cachePosition(oCoord.x, oCoord.y);
+        var self = this;
+        setTimeout(function() {
+            self.autoScroll.call(self, oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
+        }, 0);
+    },
+
+    /**
+     * Saves the most recent position so that we can reset the constraints and
+     * tick marks on-demand.  We need to know this so that we can calculate the
+     * number of pixels the element is offset from its original position.
+    * @method cachePosition
+    * @param iPageX the current x position (optional, this just makes it so we
+     * don't have to look it up again)
+    * @param iPageY the current y position (optional, this just makes it so we
+     * don't have to look it up again)
+     */
+    cachePosition: function(iPageX, iPageY) {
+        if (iPageX) {
+            this.lastPageX = iPageX;
+            this.lastPageY = iPageY;
+        } else {
+            var aCoord = YAHOO.util.Dom.getXY(this.getEl());
+            this.lastPageX = aCoord[0];
+            this.lastPageY = aCoord[1];
+        }
+    },
+
+    /**
+     * Auto-scroll the window if the dragged object has been moved beyond the 
+     * visible window boundary.
+    * @method autoScroll
+    * @param {int} x the drag element's x position
+    * @param {int} y the drag element's y position
+    * @param {int} h the height of the drag element
+    * @param {int} w the width of the drag element
+    * @private
+     */
+    autoScroll: function(x, y, h, w) {
+
+        if (this.scroll) {
+            // The client height
+            var clientH = this.DDM.getClientHeight();
+
+            // The client width
+            var clientW = this.DDM.getClientWidth();
+
+            // The amt scrolled down
+            var st = this.DDM.getScrollTop();
+
+            // The amt scrolled right
+            var sl = this.DDM.getScrollLeft();
+
+            // Location of the bottom of the element
+            var bot = h + y;
+
+            // Location of the right of the element
+            var right = w + x;
+
+            // The distance from the cursor to the bottom of the visible area, 
+            // adjusted so that we don't scroll if the cursor is beyond the
+            // element drag constraints
+            var toBot = (clientH + st - y - this.deltaY);
+
+            // The distance from the cursor to the right of the visible area
+            var toRight = (clientW + sl - x - this.deltaX);
+
+            // this.logger.log( " x: " + x + " y: " + y + " h: " + h + 
+            // " clientH: " + clientH + " clientW: " + clientW + 
+            // " st: " + st + " sl: " + sl + " bot: " + bot + 
+            // " right: " + right + " toBot: " + toBot + " toRight: " + toRight);
+
+            // How close to the edge the cursor must be before we scroll
+            // var thresh = (document.all) ? 100 : 40;
+            var thresh = 40;
+
+            // How many pixels to scroll per autoscroll op.  This helps to reduce 
+            // clunky scrolling. IE is more sensitive about this ... it needs this 
+            // value to be higher.
+            var scrAmt = (document.all) ? 80 : 30;
+
+            // Scroll down if we are near the bottom of the visible page and the 
+            // obj extends below the crease
+            if ( bot > clientH && toBot < thresh ) { 
+                window.scrollTo(sl, st + scrAmt); 
+            }
+
+            // Scroll up if the window is scrolled down and the top of the object
+            // goes above the top border
+            if ( y < st && st > 0 && y - st < thresh ) { 
+                window.scrollTo(sl, st - scrAmt); 
+            }
+
+            // Scroll right if the obj is beyond the right border and the cursor is
+            // near the border.
+            if ( right > clientW && toRight < thresh ) { 
+                window.scrollTo(sl + scrAmt, st); 
+            }
+
+            // Scroll left if the window has been scrolled to the right and the obj
+            // extends past the left border
+            if ( x < sl && sl > 0 && x - sl < thresh ) { 
+                window.scrollTo(sl - scrAmt, st);
+            }
+        }
+    },
+
+    /*
+     * Sets up config options specific to this class. Overrides
+     * YAHOO.util.DragDrop, but all versions of this method through the 
+     * inheritance chain are called
+     */
+    applyConfig: function() {
+        YAHOO.util.DD.superclass.applyConfig.call(this);
+        this.scroll = (this.config.scroll !== false);
+    },
+
+    /*
+     * Event that fires prior to the onMouseDown event.  Overrides 
+     * YAHOO.util.DragDrop.
+     */
+    b4MouseDown: function(e) {
+        this.setStartPosition();
+        // this.resetConstraints();
+        this.autoOffset(YAHOO.util.Event.getPageX(e), 
+                            YAHOO.util.Event.getPageY(e));
+    },
+
+    /*
+     * Event that fires prior to the onDrag event.  Overrides 
+     * YAHOO.util.DragDrop.
+     */
+    b4Drag: function(e) {
+        this.setDragElPos(YAHOO.util.Event.getPageX(e), 
+                            YAHOO.util.Event.getPageY(e));
+    },
+
+    toString: function() {
+        return ("DD " + this.id);
+    }
+
+    //////////////////////////////////////////////////////////////////////////
+    // Debugging ygDragDrop events that can be overridden
+    //////////////////////////////////////////////////////////////////////////
+    /*
+    startDrag: function(x, y) {
+        this.logger.log(this.id.toString()  + " startDrag");
+    },
+
+    onDrag: function(e) {
+        this.logger.log(this.id.toString() + " onDrag");
+    },
+
+    onDragEnter: function(e, id) {
+        this.logger.log(this.id.toString() + " onDragEnter: " + id);
+    },
+
+    onDragOver: function(e, id) {
+        this.logger.log(this.id.toString() + " onDragOver: " + id);
+    },
+
+    onDragOut: function(e, id) {
+        this.logger.log(this.id.toString() + " onDragOut: " + id);
+    },
+
+    onDragDrop: function(e, id) {
+        this.logger.log(this.id.toString() + " onDragDrop: " + id);
+    },
+
+    endDrag: function(e) {
+        this.logger.log(this.id.toString() + " endDrag");
+    }
+
+    */
+
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+});
+/**
+ * A DragDrop implementation that inserts an empty, bordered div into
+ * the document that follows the cursor during drag operations.  At the time of
+ * the click, the frame div is resized to the dimensions of the linked html
+ * element, and moved to the exact location of the linked element.
+ *
+ * References to the "frame" element refer to the single proxy element that
+ * was created to be dragged in place of all DDProxy elements on the
+ * page.
+ *
+ * @class DDProxy
+ * @extends YAHOO.util.DD
+ * @constructor
+ * @param {String} id the id of the linked html element
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DDProxy in addition to those in DragDrop: 
+ *                   resizeFrame, centerFrame, dragElId
+ */
+YAHOO.util.DDProxy = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config);
+        this.initFrame(); 
+    }
+};
+
+/**
+ * The default drag frame div id
+ * @property YAHOO.util.DDProxy.dragElId
+ * @type String
+ * @static
+ */
+YAHOO.util.DDProxy.dragElId = "ygddfdiv";
+
+YAHOO.extend(YAHOO.util.DDProxy, YAHOO.util.DD, {
+
+    /**
+     * By default we resize the drag frame to be the same size as the element
+     * we want to drag (this is to get the frame effect).  We can turn it off
+     * if we want a different behavior.
+    * @property resizeFrame
+    * @type boolean
+     */
+    resizeFrame: true,
+
+    /**
+     * By default the frame is positioned exactly where the drag element is, so
+     * we use the cursor offset provided by YAHOO.util.DD.  Another option that works only if
+     * you do not have constraints on the obj is to have the drag frame centered
+     * around the cursor.  Set centerFrame to true for this effect.
+    * @property centerFrame
+    * @type boolean
+     */
+    centerFrame: false,
+
+    /**
+     * Creates the proxy element if it does not yet exist
+    * @method createFrame
+     */
+    createFrame: function() {
+        var self=this, body=document.body;
+
+        if (!body || !body.firstChild) {
+            setTimeout( function() { self.createFrame(); }, 50 );
+            return;
+        }
+
+        var div=this.getDragEl(), Dom=YAHOO.util.Dom;
+
+        if (!div) {
+            div    = document.createElement("div");
+            div.id = this.dragElId;
+            var s  = div.style;
+
+            s.position   = "absolute";
+            s.visibility = "hidden";
+            s.cursor     = "move";
+            s.border     = "2px solid #aaa";
+            s.zIndex     = 999;
+            s.height     = "25px";
+            s.width      = "25px";
+
+            var _data = document.createElement('div');
+            Dom.setStyle(_data, 'height', '100%');
+            Dom.setStyle(_data, 'width', '100%');
+            /**
+            * If the proxy element has no background-color, then it is considered to the "transparent" by Internet Explorer.
+            * Since it is "transparent" then the events pass through it to the iframe below.
+            * So creating a "fake" div inside the proxy element and giving it a background-color, then setting it to an
+            * opacity of 0, it appears to not be there, however IE still thinks that it is so the events never pass through.
+            */
+            Dom.setStyle(_data, 'background-color', '#ccc');
+            Dom.setStyle(_data, 'opacity', '0');
+            div.appendChild(_data);
+
+            // appendChild can blow up IE if invoked prior to the window load event
+            // while rendering a table.  It is possible there are other scenarios 
+            // that would cause this to happen as well.
+            body.insertBefore(div, body.firstChild);
+        }
+    },
+
+    /**
+     * Initialization for the drag frame element.  Must be called in the
+     * constructor of all subclasses
+    * @method initFrame
+     */
+    initFrame: function() {
+        this.createFrame();
+    },
+
+    applyConfig: function() {
+        //this.logger.log("DDProxy applyConfig");
+        YAHOO.util.DDProxy.superclass.applyConfig.call(this);
+
+        this.resizeFrame = (this.config.resizeFrame !== false);
+        this.centerFrame = (this.config.centerFrame);
+        this.setDragElId(this.config.dragElId || YAHOO.util.DDProxy.dragElId);
+    },
+
+    /**
+     * Resizes the drag frame to the dimensions of the clicked object, positions 
+     * it over the object, and finally displays it
+    * @method showFrame
+    * @param {int} iPageX X click position
+    * @param {int} iPageY Y click position
+    * @private
+     */
+    showFrame: function(iPageX, iPageY) {
+        var el = this.getEl();
+        var dragEl = this.getDragEl();
+        var s = dragEl.style;
+
+        this._resizeProxy();
+
+        if (this.centerFrame) {
+            this.setDelta( Math.round(parseInt(s.width,  10)/2), 
+                           Math.round(parseInt(s.height, 10)/2) );
+        }
+
+        this.setDragElPos(iPageX, iPageY);
+
+        YAHOO.util.Dom.setStyle(dragEl, "visibility", "visible"); 
+    },
+
+    /**
+     * The proxy is automatically resized to the dimensions of the linked
+     * element when a drag is initiated, unless resizeFrame is set to false
+    * @method _resizeProxy
+    * @private
+     */
+    _resizeProxy: function() {
+        if (this.resizeFrame) {
+            var DOM    = YAHOO.util.Dom;
+            var el     = this.getEl();
+            var dragEl = this.getDragEl();
+
+            var bt = parseInt( DOM.getStyle(dragEl, "borderTopWidth"    ), 10);
+            var br = parseInt( DOM.getStyle(dragEl, "borderRightWidth"  ), 10);
+            var bb = parseInt( DOM.getStyle(dragEl, "borderBottomWidth" ), 10);
+            var bl = parseInt( DOM.getStyle(dragEl, "borderLeftWidth"   ), 10);
+
+            if (isNaN(bt)) { bt = 0; }
+            if (isNaN(br)) { br = 0; }
+            if (isNaN(bb)) { bb = 0; }
+            if (isNaN(bl)) { bl = 0; }
+
+            this.logger.log("proxy size: " + bt + "  " + br + " " + bb + " " + bl);
+
+            var newWidth  = Math.max(0, el.offsetWidth  - br - bl);                                                                                           
+            var newHeight = Math.max(0, el.offsetHeight - bt - bb);
+
+            this.logger.log("Resizing proxy element");
+
+            DOM.setStyle( dragEl, "width",  newWidth  + "px" );
+            DOM.setStyle( dragEl, "height", newHeight + "px" );
+        }
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4MouseDown: function(e) {
+        this.setStartPosition();
+        var x = YAHOO.util.Event.getPageX(e);
+        var y = YAHOO.util.Event.getPageY(e);
+        this.autoOffset(x, y);
+
+        // This causes the autoscroll code to kick off, which means autoscroll can
+        // happen prior to the check for a valid drag handle.
+        // this.setDragElPos(x, y);
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4StartDrag: function(x, y) {
+        // show the drag frame
+        this.logger.log("start drag show frame, x: " + x + ", y: " + y);
+        this.showFrame(x, y);
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4EndDrag: function(e) {
+        this.logger.log(this.id + " b4EndDrag");
+        YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden"); 
+    },
+
+    // overrides YAHOO.util.DragDrop
+    // By default we try to move the element to the last location of the frame.  
+    // This is so that the default behavior mirrors that of YAHOO.util.DD.  
+    endDrag: function(e) {
+        var DOM = YAHOO.util.Dom;
+        this.logger.log(this.id + " endDrag");
+        var lel = this.getEl();
+        var del = this.getDragEl();
+
+        // Show the drag frame briefly so we can get its position
+        // del.style.visibility = "";
+        DOM.setStyle(del, "visibility", ""); 
+
+        // Hide the linked element before the move to get around a Safari 
+        // rendering bug.
+        //lel.style.visibility = "hidden";
+        DOM.setStyle(lel, "visibility", "hidden"); 
+        YAHOO.util.DDM.moveToEl(lel, del);
+        //del.style.visibility = "hidden";
+        DOM.setStyle(del, "visibility", "hidden"); 
+        //lel.style.visibility = "";
+        DOM.setStyle(lel, "visibility", ""); 
+    },
+
+    toString: function() {
+        return ("DDProxy " + this.id);
+    }
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+});
+/**
+ * A DragDrop implementation that does not move, but can be a drop 
+ * target.  You would get the same result by simply omitting implementation 
+ * for the event callbacks, but this way we reduce the processing cost of the 
+ * event listener and the callbacks.
+ * @class DDTarget
+ * @extends YAHOO.util.DragDrop 
+ * @constructor
+ * @param {String} id the id of the element that is a drop target
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                 Valid properties for DDTarget in addition to those in 
+ *                 DragDrop: 
+ *                    none
+ */
+YAHOO.util.DDTarget = function(id, sGroup, config) {
+    if (id) {
+        this.initTarget(id, sGroup, config);
+    }
+};
+
+// YAHOO.util.DDTarget.prototype = new YAHOO.util.DragDrop();
+YAHOO.extend(YAHOO.util.DDTarget, YAHOO.util.DragDrop, {
+    toString: function() {
+        return ("DDTarget " + this.id);
+    }
+});
+YAHOO.register("dragdrop", YAHOO.util.DragDropMgr, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/dragdrop/dragdrop-debug.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dragdrop/dragdrop.js
===================================================================
--- tags/2.8.3/wb/include/yui/dragdrop/dragdrop.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dragdrop/dragdrop.js	(revision 1610)
@@ -0,0 +1,3601 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+/**
+ * The drag and drop utility provides a framework for building drag and drop
+ * applications.  In addition to enabling drag and drop for specific elements,
+ * the drag and drop elements are tracked by the manager class, and the
+ * interactions between the various elements are tracked during the drag and
+ * the implementing code is notified about these important moments.
+ * @module dragdrop
+ * @title Drag and Drop
+ * @requires yahoo,dom,event
+ * @namespace YAHOO.util
+ */
+
+// Only load the library once.  Rewriting the manager class would orphan 
+// existing drag and drop instances.
+if (!YAHOO.util.DragDropMgr) {
+
+/**
+ * DragDropMgr is a singleton that tracks the element interaction for 
+ * all DragDrop items in the window.  Generally, you will not call 
+ * this class directly, but it does have helper methods that could 
+ * be useful in your DragDrop implementations.
+ * @class DragDropMgr
+ * @static
+ */
+YAHOO.util.DragDropMgr = function() {
+
+    var Event = YAHOO.util.Event,
+        Dom = YAHOO.util.Dom;
+
+    return {
+        /**
+        * This property is used to turn on global use of the shim element on all DragDrop instances, defaults to false for backcompat. (Use: YAHOO.util.DDM.useShim = true)
+       * @property useShim
+       * @type Boolean
+       * @static
+        */
+        useShim: false,
+        /**
+        * This property is used to determine if the shim is active over the screen, default false.
+       * @private
+       * @property _shimActive
+       * @type Boolean
+       * @static
+        */
+        _shimActive: false,
+        /**
+        * This property is used when useShim is set on a DragDrop object to store the current state of DDM.useShim so it can be reset when a drag operation is done.
+       * @private
+       * @property _shimState
+       * @type Boolean
+       * @static
+        */
+        _shimState: false,
+        /**
+        * This property is used when useShim is set to true, it will set the opacity on the shim to .5 for debugging. Use: (YAHOO.util.DDM._debugShim = true;)
+       * @private
+       * @property _debugShim
+       * @type Boolean
+       * @static
+        */
+        _debugShim: false,
+        /**
+        * This method will create a shim element (giving it the id of yui-ddm-shim), it also attaches the mousemove and mouseup listeners to it and attaches a scroll listener on the window
+       * @private
+       * @method _sizeShim
+       * @static
+        */
+        _createShim: function() {
+            var s = document.createElement('div');
+            s.id = 'yui-ddm-shim';
+            if (document.body.firstChild) {
+                document.body.insertBefore(s, document.body.firstChild);
+            } else {
+                document.body.appendChild(s);
+            }
+            s.style.display = 'none';
+            s.style.backgroundColor = 'red';
+            s.style.position = 'absolute';
+            s.style.zIndex = '99999';
+            Dom.setStyle(s, 'opacity', '0');
+            this._shim = s;
+            Event.on(s, "mouseup",   this.handleMouseUp, this, true);
+            Event.on(s, "mousemove", this.handleMouseMove, this, true);
+            Event.on(window, 'scroll', this._sizeShim, this, true);
+        },
+        /**
+        * This method will size the shim, called from activate and on window scroll event
+       * @private
+       * @method _sizeShim
+       * @static
+        */
+        _sizeShim: function() {
+            if (this._shimActive) {
+                var s = this._shim;
+                s.style.height = Dom.getDocumentHeight() + 'px';
+                s.style.width = Dom.getDocumentWidth() + 'px';
+                s.style.top = '0';
+                s.style.left = '0';
+            }
+        },
+        /**
+        * This method will create the shim element if needed, then show the shim element, size the element and set the _shimActive property to true
+       * @private
+       * @method _activateShim
+       * @static
+        */
+        _activateShim: function() {
+            if (this.useShim) {
+                if (!this._shim) {
+                    this._createShim();
+                }
+                this._shimActive = true;
+                var s = this._shim,
+                    o = '0';
+                if (this._debugShim) {
+                    o = '.5';
+                }
+                Dom.setStyle(s, 'opacity', o);
+                this._sizeShim();
+                s.style.display = 'block';
+            }
+        },
+        /**
+        * This method will hide the shim element and set the _shimActive property to false
+       * @private
+       * @method _deactivateShim
+       * @static
+        */
+        _deactivateShim: function() {
+            this._shim.style.display = 'none';
+            this._shimActive = false;
+        },
+        /**
+        * The HTML element created to use as a shim over the document to track mouse movements
+       * @private
+       * @property _shim
+       * @type HTMLElement
+       * @static
+        */
+        _shim: null,
+        /**
+         * Two dimensional Array of registered DragDrop objects.  The first 
+         * dimension is the DragDrop item group, the second the DragDrop 
+         * object.
+        * @property ids
+        * @type {string: string}
+        * @private
+        * @static
+         */
+        ids: {},
+
+        /**
+         * Array of element ids defined as drag handles.  Used to determine 
+         * if the element that generated the mousedown event is actually the 
+         * handle and not the html element itself.
+        * @property handleIds
+        * @type {string: string}
+        * @private
+        * @static
+         */
+        handleIds: {},
+
+        /**
+         * the DragDrop object that is currently being dragged
+        * @property dragCurrent
+        * @type DragDrop
+        * @private
+        * @static
+         **/
+        dragCurrent: null,
+
+        /**
+         * the DragDrop object(s) that are being hovered over
+        * @property dragOvers
+        * @type Array
+        * @private
+        * @static
+         */
+        dragOvers: {},
+
+        /**
+         * the X distance between the cursor and the object being dragged
+        * @property deltaX
+        * @type int
+        * @private
+        * @static
+         */
+        deltaX: 0,
+
+        /**
+         * the Y distance between the cursor and the object being dragged
+        * @property deltaY
+        * @type int
+        * @private
+        * @static
+         */
+        deltaY: 0,
+
+        /**
+         * Flag to determine if we should prevent the default behavior of the
+         * events we define. By default this is true, but this can be set to 
+         * false if you need the default behavior (not recommended)
+        * @property preventDefault
+        * @type boolean
+        * @static
+         */
+        preventDefault: true,
+
+        /**
+         * Flag to determine if we should stop the propagation of the events 
+         * we generate. This is true by default but you may want to set it to
+         * false if the html element contains other features that require the
+         * mouse click.
+        * @property stopPropagation
+        * @type boolean
+        * @static
+         */
+        stopPropagation: true,
+
+        /**
+         * Internal flag that is set to true when drag and drop has been
+         * initialized
+        * @property initialized
+        * @private
+        * @static
+         */
+        initialized: false,
+
+        /**
+         * All drag and drop can be disabled.
+        * @property locked
+        * @private
+        * @static
+         */
+        locked: false,
+
+        /**
+         * Provides additional information about the the current set of
+         * interactions.  Can be accessed from the event handlers. It
+         * contains the following properties:
+         *
+         *       out:       onDragOut interactions
+         *       enter:     onDragEnter interactions
+         *       over:      onDragOver interactions
+         *       drop:      onDragDrop interactions
+         *       point:     The location of the cursor
+         *       draggedRegion: The location of dragged element at the time
+         *                      of the interaction
+         *       sourceRegion: The location of the source elemtn at the time
+         *                     of the interaction
+         *       validDrop: boolean
+        * @property interactionInfo
+        * @type object
+        * @static
+         */
+        interactionInfo: null,
+
+        /**
+         * Called the first time an element is registered.
+        * @method init
+        * @private
+        * @static
+         */
+        init: function() {
+            this.initialized = true;
+        },
+
+        /**
+         * In point mode, drag and drop interaction is defined by the 
+         * location of the cursor during the drag/drop
+        * @property POINT
+        * @type int
+        * @static
+        * @final
+         */
+        POINT: 0,
+
+        /**
+         * In intersect mode, drag and drop interaction is defined by the 
+         * cursor position or the amount of overlap of two or more drag and 
+         * drop objects.
+        * @property INTERSECT
+        * @type int
+        * @static
+        * @final
+         */
+        INTERSECT: 1,
+
+        /**
+         * In intersect mode, drag and drop interaction is defined only by the 
+         * overlap of two or more drag and drop objects.
+        * @property STRICT_INTERSECT
+        * @type int
+        * @static
+        * @final
+         */
+        STRICT_INTERSECT: 2,
+
+        /**
+         * The current drag and drop mode.  Default: POINT
+        * @property mode
+        * @type int
+        * @static
+         */
+        mode: 0,
+
+        /**
+         * Runs method on all drag and drop objects
+        * @method _execOnAll
+        * @private
+        * @static
+         */
+        _execOnAll: function(sMethod, args) {
+            for (var i in this.ids) {
+                for (var j in this.ids[i]) {
+                    var oDD = this.ids[i][j];
+                    if (! this.isTypeOfDD(oDD)) {
+                        continue;
+                    }
+                    oDD[sMethod].apply(oDD, args);
+                }
+            }
+        },
+
+        /**
+         * Drag and drop initialization.  Sets up the global event handlers
+        * @method _onLoad
+        * @private
+        * @static
+         */
+        _onLoad: function() {
+
+            this.init();
+
+            Event.on(document, "mouseup",   this.handleMouseUp, this, true);
+            Event.on(document, "mousemove", this.handleMouseMove, this, true);
+            Event.on(window,   "unload",    this._onUnload, this, true);
+            Event.on(window,   "resize",    this._onResize, this, true);
+            // Event.on(window,   "mouseout",    this._test);
+
+        },
+
+        /**
+         * Reset constraints on all drag and drop objs
+        * @method _onResize
+        * @private
+        * @static
+         */
+        _onResize: function(e) {
+            this._execOnAll("resetConstraints", []);
+        },
+
+        /**
+         * Lock all drag and drop functionality
+        * @method lock
+        * @static
+         */
+        lock: function() { this.locked = true; },
+
+        /**
+         * Unlock all drag and drop functionality
+        * @method unlock
+        * @static
+         */
+        unlock: function() { this.locked = false; },
+
+        /**
+         * Is drag and drop locked?
+        * @method isLocked
+        * @return {boolean} True if drag and drop is locked, false otherwise.
+        * @static
+         */
+        isLocked: function() { return this.locked; },
+
+        /**
+         * Location cache that is set for all drag drop objects when a drag is
+         * initiated, cleared when the drag is finished.
+        * @property locationCache
+        * @private
+        * @static
+         */
+        locationCache: {},
+
+        /**
+         * Set useCache to false if you want to force object the lookup of each
+         * drag and drop linked element constantly during a drag.
+        * @property useCache
+        * @type boolean
+        * @static
+         */
+        useCache: true,
+
+        /**
+         * The number of pixels that the mouse needs to move after the 
+         * mousedown before the drag is initiated.  Default=3;
+        * @property clickPixelThresh
+        * @type int
+        * @static
+         */
+        clickPixelThresh: 3,
+
+        /**
+         * The number of milliseconds after the mousedown event to initiate the
+         * drag if we don't get a mouseup event. Default=1000
+        * @property clickTimeThresh
+        * @type int
+        * @static
+         */
+        clickTimeThresh: 1000,
+
+        /**
+         * Flag that indicates that either the drag pixel threshold or the 
+         * mousdown time threshold has been met
+        * @property dragThreshMet
+        * @type boolean
+        * @private
+        * @static
+         */
+        dragThreshMet: false,
+
+        /**
+         * Timeout used for the click time threshold
+        * @property clickTimeout
+        * @type Object
+        * @private
+        * @static
+         */
+        clickTimeout: null,
+
+        /**
+         * The X position of the mousedown event stored for later use when a 
+         * drag threshold is met.
+        * @property startX
+        * @type int
+        * @private
+        * @static
+         */
+        startX: 0,
+
+        /**
+         * The Y position of the mousedown event stored for later use when a 
+         * drag threshold is met.
+        * @property startY
+        * @type int
+        * @private
+        * @static
+         */
+        startY: 0,
+
+        /**
+         * Flag to determine if the drag event was fired from the click timeout and
+         * not the mouse move threshold.
+        * @property fromTimeout
+        * @type boolean
+        * @private
+        * @static
+         */
+        fromTimeout: false,
+
+        /**
+         * Each DragDrop instance must be registered with the DragDropMgr.  
+         * This is executed in DragDrop.init()
+        * @method regDragDrop
+        * @param {DragDrop} oDD the DragDrop object to register
+        * @param {String} sGroup the name of the group this element belongs to
+        * @static
+         */
+        regDragDrop: function(oDD, sGroup) {
+            if (!this.initialized) { this.init(); }
+            
+            if (!this.ids[sGroup]) {
+                this.ids[sGroup] = {};
+            }
+            this.ids[sGroup][oDD.id] = oDD;
+        },
+
+        /**
+         * Removes the supplied dd instance from the supplied group. Executed
+         * by DragDrop.removeFromGroup, so don't call this function directly.
+        * @method removeDDFromGroup
+        * @private
+        * @static
+         */
+        removeDDFromGroup: function(oDD, sGroup) {
+            if (!this.ids[sGroup]) {
+                this.ids[sGroup] = {};
+            }
+
+            var obj = this.ids[sGroup];
+            if (obj && obj[oDD.id]) {
+                delete obj[oDD.id];
+            }
+        },
+
+        /**
+         * Unregisters a drag and drop item.  This is executed in 
+         * DragDrop.unreg, use that method instead of calling this directly.
+        * @method _remove
+        * @private
+        * @static
+         */
+        _remove: function(oDD) {
+            for (var g in oDD.groups) {
+                if (g) {
+                    var item = this.ids[g];
+                    if (item && item[oDD.id]) {
+                        delete item[oDD.id];
+                    }
+                }
+                
+            }
+            delete this.handleIds[oDD.id];
+        },
+
+        /**
+         * Each DragDrop handle element must be registered.  This is done
+         * automatically when executing DragDrop.setHandleElId()
+        * @method regHandle
+        * @param {String} sDDId the DragDrop id this element is a handle for
+        * @param {String} sHandleId the id of the element that is the drag 
+         * handle
+        * @static
+         */
+        regHandle: function(sDDId, sHandleId) {
+            if (!this.handleIds[sDDId]) {
+                this.handleIds[sDDId] = {};
+            }
+            this.handleIds[sDDId][sHandleId] = sHandleId;
+        },
+
+        /**
+         * Utility function to determine if a given element has been 
+         * registered as a drag drop item.
+        * @method isDragDrop
+        * @param {String} id the element id to check
+        * @return {boolean} true if this element is a DragDrop item, 
+         * false otherwise
+        * @static
+         */
+        isDragDrop: function(id) {
+            return ( this.getDDById(id) ) ? true : false;
+        },
+
+        /**
+         * Returns the drag and drop instances that are in all groups the
+         * passed in instance belongs to.
+        * @method getRelated
+        * @param {DragDrop} p_oDD the obj to get related data for
+        * @param {boolean} bTargetsOnly if true, only return targetable objs
+        * @return {DragDrop[]} the related instances
+        * @static
+         */
+        getRelated: function(p_oDD, bTargetsOnly) {
+            var oDDs = [];
+            for (var i in p_oDD.groups) {
+                for (var j in this.ids[i]) {
+                    var dd = this.ids[i][j];
+                    if (! this.isTypeOfDD(dd)) {
+                        continue;
+                    }
+                    if (!bTargetsOnly || dd.isTarget) {
+                        oDDs[oDDs.length] = dd;
+                    }
+                }
+            }
+
+            return oDDs;
+        },
+
+        /**
+         * Returns true if the specified dd target is a legal target for 
+         * the specifice drag obj
+        * @method isLegalTarget
+        * @param {DragDrop} the drag obj
+        * @param {DragDrop} the target
+        * @return {boolean} true if the target is a legal target for the 
+         * dd obj
+        * @static
+         */
+        isLegalTarget: function (oDD, oTargetDD) {
+            var targets = this.getRelated(oDD, true);
+            for (var i=0, len=targets.length;i<len;++i) {
+                if (targets[i].id == oTargetDD.id) {
+                    return true;
+                }
+            }
+
+            return false;
+        },
+
+        /**
+         * My goal is to be able to transparently determine if an object is
+         * typeof DragDrop, and the exact subclass of DragDrop.  typeof 
+         * returns "object", oDD.constructor.toString() always returns
+         * "DragDrop" and not the name of the subclass.  So for now it just
+         * evaluates a well-known variable in DragDrop.
+        * @method isTypeOfDD
+        * @param {Object} the object to evaluate
+        * @return {boolean} true if typeof oDD = DragDrop
+        * @static
+         */
+        isTypeOfDD: function (oDD) {
+            return (oDD && oDD.__ygDragDrop);
+        },
+
+        /**
+         * Utility function to determine if a given element has been 
+         * registered as a drag drop handle for the given Drag Drop object.
+        * @method isHandle
+        * @param {String} id the element id to check
+        * @return {boolean} true if this element is a DragDrop handle, false 
+         * otherwise
+        * @static
+         */
+        isHandle: function(sDDId, sHandleId) {
+            return ( this.handleIds[sDDId] && 
+                            this.handleIds[sDDId][sHandleId] );
+        },
+
+        /**
+         * Returns the DragDrop instance for a given id
+        * @method getDDById
+        * @param {String} id the id of the DragDrop object
+        * @return {DragDrop} the drag drop object, null if it is not found
+        * @static
+         */
+        getDDById: function(id) {
+            for (var i in this.ids) {
+                if (this.ids[i][id]) {
+                    return this.ids[i][id];
+                }
+            }
+            return null;
+        },
+
+        /**
+         * Fired after a registered DragDrop object gets the mousedown event.
+         * Sets up the events required to track the object being dragged
+        * @method handleMouseDown
+        * @param {Event} e the event
+        * @param oDD the DragDrop object being dragged
+        * @private
+        * @static
+         */
+        handleMouseDown: function(e, oDD) {
+            //this._activateShim();
+
+            this.currentTarget = YAHOO.util.Event.getTarget(e);
+
+            this.dragCurrent = oDD;
+
+            var el = oDD.getEl();
+
+            // track start position
+            this.startX = YAHOO.util.Event.getPageX(e);
+            this.startY = YAHOO.util.Event.getPageY(e);
+
+            this.deltaX = this.startX - el.offsetLeft;
+            this.deltaY = this.startY - el.offsetTop;
+
+            this.dragThreshMet = false;
+
+            this.clickTimeout = setTimeout( 
+                    function() { 
+                        var DDM = YAHOO.util.DDM;
+                        DDM.startDrag(DDM.startX, DDM.startY);
+                        DDM.fromTimeout = true;
+                    }, 
+                    this.clickTimeThresh );
+        },
+
+        /**
+         * Fired when either the drag pixel threshold or the mousedown hold 
+         * time threshold has been met.
+        * @method startDrag
+        * @param x {int} the X position of the original mousedown
+        * @param y {int} the Y position of the original mousedown
+        * @static
+         */
+        startDrag: function(x, y) {
+            if (this.dragCurrent && this.dragCurrent.useShim) {
+                this._shimState = this.useShim;
+                this.useShim = true;
+            }
+            this._activateShim();
+            clearTimeout(this.clickTimeout);
+            var dc = this.dragCurrent;
+            if (dc && dc.events.b4StartDrag) {
+                dc.b4StartDrag(x, y);
+                dc.fireEvent('b4StartDragEvent', { x: x, y: y });
+            }
+            if (dc && dc.events.startDrag) {
+                dc.startDrag(x, y);
+                dc.fireEvent('startDragEvent', { x: x, y: y });
+            }
+            this.dragThreshMet = true;
+        },
+
+        /**
+         * Internal function to handle the mouseup event.  Will be invoked 
+         * from the context of the document.
+        * @method handleMouseUp
+        * @param {Event} e the event
+        * @private
+        * @static
+         */
+        handleMouseUp: function(e) {
+            if (this.dragCurrent) {
+                clearTimeout(this.clickTimeout);
+
+                if (this.dragThreshMet) {
+                    if (this.fromTimeout) {
+                        this.fromTimeout = false;
+                        this.handleMouseMove(e);
+                    }
+                    this.fromTimeout = false;
+                    this.fireEvents(e, true);
+                } else {
+                }
+
+                this.stopDrag(e);
+
+                this.stopEvent(e);
+            }
+        },
+
+        /**
+         * Utility to stop event propagation and event default, if these 
+         * features are turned on.
+        * @method stopEvent
+        * @param {Event} e the event as returned by this.getEvent()
+        * @static
+         */
+        stopEvent: function(e) {
+            if (this.stopPropagation) {
+                YAHOO.util.Event.stopPropagation(e);
+            }
+
+            if (this.preventDefault) {
+                YAHOO.util.Event.preventDefault(e);
+            }
+        },
+
+        /** 
+         * Ends the current drag, cleans up the state, and fires the endDrag
+         * and mouseUp events.  Called internally when a mouseup is detected
+         * during the drag.  Can be fired manually during the drag by passing
+         * either another event (such as the mousemove event received in onDrag)
+         * or a fake event with pageX and pageY defined (so that endDrag and
+         * onMouseUp have usable position data.).  Alternatively, pass true
+         * for the silent parameter so that the endDrag and onMouseUp events
+         * are skipped (so no event data is needed.)
+         *
+        * @method stopDrag
+        * @param {Event} e the mouseup event, another event (or a fake event) 
+         *                  with pageX and pageY defined, or nothing if the 
+         *                  silent parameter is true
+        * @param {boolean} silent skips the enddrag and mouseup events if true
+        * @static
+         */
+        stopDrag: function(e, silent) {
+            var dc = this.dragCurrent;
+            // Fire the drag end event for the item that was dragged
+            if (dc && !silent) {
+                if (this.dragThreshMet) {
+                    if (dc.events.b4EndDrag) {
+                        dc.b4EndDrag(e);
+                        dc.fireEvent('b4EndDragEvent', { e: e });
+                    }
+                    if (dc.events.endDrag) {
+                        dc.endDrag(e);
+                        dc.fireEvent('endDragEvent', { e: e });
+                    }
+                }
+                if (dc.events.mouseUp) {
+                    dc.onMouseUp(e);
+                    dc.fireEvent('mouseUpEvent', { e: e });
+                }
+            }
+
+            if (this._shimActive) {
+                this._deactivateShim();
+                if (this.dragCurrent && this.dragCurrent.useShim) {
+                    this.useShim = this._shimState;
+                    this._shimState = false;
+                }
+            }
+
+            this.dragCurrent = null;
+            this.dragOvers = {};
+        },
+
+        /** 
+         * Internal function to handle the mousemove event.  Will be invoked 
+         * from the context of the html element.
+         *
+        * @TODO figure out what we can do about mouse events lost when the 
+         * user drags objects beyond the window boundary.  Currently we can 
+         * detect this in internet explorer by verifying that the mouse is 
+         * down during the mousemove event.  Firefox doesn't give us the 
+         * button state on the mousemove event.
+        * @method handleMouseMove
+        * @param {Event} e the event
+        * @private
+        * @static
+         */
+        handleMouseMove: function(e) {
+
+            var dc = this.dragCurrent;
+            if (dc) {
+
+                // var button = e.which || e.button;
+
+                // check for IE mouseup outside of page boundary
+                if (YAHOO.util.Event.isIE && !e.button) {
+                    this.stopEvent(e);
+                    return this.handleMouseUp(e);
+                } else {
+                    if (e.clientX < 0 || e.clientY < 0) {
+                        //This will stop the element from leaving the viewport in FF, Opera & Safari
+                        //Not turned on yet
+                        //this.stopEvent(e);
+                        //return false;
+                    }
+                }
+
+                if (!this.dragThreshMet) {
+                    var diffX = Math.abs(this.startX - YAHOO.util.Event.getPageX(e));
+                    var diffY = Math.abs(this.startY - YAHOO.util.Event.getPageY(e));
+                    if (diffX > this.clickPixelThresh || 
+                                diffY > this.clickPixelThresh) {
+                        this.startDrag(this.startX, this.startY);
+                    }
+                }
+
+                if (this.dragThreshMet) {
+                    if (dc && dc.events.b4Drag) {
+                        dc.b4Drag(e);
+                        dc.fireEvent('b4DragEvent', { e: e});
+                    }
+                    if (dc && dc.events.drag) {
+                        dc.onDrag(e);
+                        dc.fireEvent('dragEvent', { e: e});
+                    }
+                    if (dc) {
+                        this.fireEvents(e, false);
+                    }
+                }
+
+                this.stopEvent(e);
+            }
+        },
+        
+        /**
+         * Iterates over all of the DragDrop elements to find ones we are 
+         * hovering over or dropping on
+        * @method fireEvents
+        * @param {Event} e the event
+        * @param {boolean} isDrop is this a drop op or a mouseover op?
+        * @private
+        * @static
+         */
+        fireEvents: function(e, isDrop) {
+            var dc = this.dragCurrent;
+
+            // If the user did the mouse up outside of the window, we could 
+            // get here even though we have ended the drag.
+            // If the config option dragOnly is true, bail out and don't fire the events
+            if (!dc || dc.isLocked() || dc.dragOnly) {
+                return;
+            }
+
+            var x = YAHOO.util.Event.getPageX(e),
+                y = YAHOO.util.Event.getPageY(e),
+                pt = new YAHOO.util.Point(x,y),
+                pos = dc.getTargetCoord(pt.x, pt.y),
+                el = dc.getDragEl(),
+                events = ['out', 'over', 'drop', 'enter'],
+                curRegion = new YAHOO.util.Region( pos.y, 
+                                               pos.x + el.offsetWidth,
+                                               pos.y + el.offsetHeight, 
+                                               pos.x ),
+            
+                oldOvers = [], // cache the previous dragOver array
+                inGroupsObj  = {},
+                inGroups  = [],
+                data = {
+                    outEvts: [],
+                    overEvts: [],
+                    dropEvts: [],
+                    enterEvts: []
+                };
+
+
+            // Check to see if the object(s) we were hovering over is no longer 
+            // being hovered over so we can fire the onDragOut event
+            for (var i in this.dragOvers) {
+
+                var ddo = this.dragOvers[i];
+
+                if (! this.isTypeOfDD(ddo)) {
+                    continue;
+                }
+                if (! this.isOverTarget(pt, ddo, this.mode, curRegion)) {
+                    data.outEvts.push( ddo );
+                }
+
+                oldOvers[i] = true;
+                delete this.dragOvers[i];
+            }
+
+            for (var sGroup in dc.groups) {
+                
+                if ("string" != typeof sGroup) {
+                    continue;
+                }
+
+                for (i in this.ids[sGroup]) {
+                    var oDD = this.ids[sGroup][i];
+                    if (! this.isTypeOfDD(oDD)) {
+                        continue;
+                    }
+
+                    if (oDD.isTarget && !oDD.isLocked() && oDD != dc) {
+                        if (this.isOverTarget(pt, oDD, this.mode, curRegion)) {
+                            inGroupsObj[sGroup] = true;
+                            // look for drop interactions
+                            if (isDrop) {
+                                data.dropEvts.push( oDD );
+                            // look for drag enter and drag over interactions
+                            } else {
+
+                                // initial drag over: dragEnter fires
+                                if (!oldOvers[oDD.id]) {
+                                    data.enterEvts.push( oDD );
+                                // subsequent drag overs: dragOver fires
+                                } else {
+                                    data.overEvts.push( oDD );
+                                }
+
+                                this.dragOvers[oDD.id] = oDD;
+                            }
+                        }
+                    }
+                }
+            }
+
+            this.interactionInfo = {
+                out:       data.outEvts,
+                enter:     data.enterEvts,
+                over:      data.overEvts,
+                drop:      data.dropEvts,
+                point:     pt,
+                draggedRegion:    curRegion,
+                sourceRegion: this.locationCache[dc.id],
+                validDrop: isDrop
+            };
+
+            
+            for (var inG in inGroupsObj) {
+                inGroups.push(inG);
+            }
+
+            // notify about a drop that did not find a target
+            if (isDrop && !data.dropEvts.length) {
+                this.interactionInfo.validDrop = false;
+                if (dc.events.invalidDrop) {
+                    dc.onInvalidDrop(e);
+                    dc.fireEvent('invalidDropEvent', { e: e });
+                }
+            }
+            for (i = 0; i < events.length; i++) {
+                var tmp = null;
+                if (data[events[i] + 'Evts']) {
+                    tmp = data[events[i] + 'Evts'];
+                }
+                if (tmp && tmp.length) {
+                    var type = events[i].charAt(0).toUpperCase() + events[i].substr(1),
+                        ev = 'onDrag' + type,
+                        b4 = 'b4Drag' + type,
+                        cev = 'drag' + type + 'Event',
+                        check = 'drag' + type;
+                    if (this.mode) {
+                        if (dc.events[b4]) {
+                            dc[b4](e, tmp, inGroups);
+                            dc.fireEvent(b4 + 'Event', { event: e, info: tmp, group: inGroups });
+                            
+                        }
+                        if (dc.events[check]) {
+                            dc[ev](e, tmp, inGroups);
+                            dc.fireEvent(cev, { event: e, info: tmp, group: inGroups });
+                        }
+                    } else {
+                        for (var b = 0, len = tmp.length; b < len; ++b) {
+                            if (dc.events[b4]) {
+                                dc[b4](e, tmp[b].id, inGroups[0]);
+                                dc.fireEvent(b4 + 'Event', { event: e, info: tmp[b].id, group: inGroups[0] });
+                            }
+                            if (dc.events[check]) {
+                                dc[ev](e, tmp[b].id, inGroups[0]);
+                                dc.fireEvent(cev, { event: e, info: tmp[b].id, group: inGroups[0] });
+                            }
+                        }
+                    }
+                }
+            }
+        },
+
+        /**
+         * Helper function for getting the best match from the list of drag 
+         * and drop objects returned by the drag and drop events when we are 
+         * in INTERSECT mode.  It returns either the first object that the 
+         * cursor is over, or the object that has the greatest overlap with 
+         * the dragged element.
+        * @method getBestMatch
+        * @param  {DragDrop[]} dds The array of drag and drop objects 
+         * targeted
+        * @return {DragDrop}       The best single match
+        * @static
+         */
+        getBestMatch: function(dds) {
+            var winner = null;
+
+            var len = dds.length;
+
+            if (len == 1) {
+                winner = dds[0];
+            } else {
+                // Loop through the targeted items
+                for (var i=0; i<len; ++i) {
+                    var dd = dds[i];
+                    // If the cursor is over the object, it wins.  If the 
+                    // cursor is over multiple matches, the first one we come
+                    // to wins.
+                    if (this.mode == this.INTERSECT && dd.cursorIsOver) {
+                        winner = dd;
+                        break;
+                    // Otherwise the object with the most overlap wins
+                    } else {
+                        if (!winner || !winner.overlap || (dd.overlap &&
+                            winner.overlap.getArea() < dd.overlap.getArea())) {
+                            winner = dd;
+                        }
+                    }
+                }
+            }
+
+            return winner;
+        },
+
+        /**
+         * Refreshes the cache of the top-left and bottom-right points of the 
+         * drag and drop objects in the specified group(s).  This is in the
+         * format that is stored in the drag and drop instance, so typical 
+         * usage is:
+         * <code>
+         * YAHOO.util.DragDropMgr.refreshCache(ddinstance.groups);
+         * </code>
+         * Alternatively:
+         * <code>
+         * YAHOO.util.DragDropMgr.refreshCache({group1:true, group2:true});
+         * </code>
+        * @TODO this really should be an indexed array.  Alternatively this
+         * method could accept both.
+        * @method refreshCache
+        * @param {Object} groups an associative array of groups to refresh
+        * @static
+         */
+        refreshCache: function(groups) {
+
+            // refresh everything if group array is not provided
+            var g = groups || this.ids;
+
+            for (var sGroup in g) {
+                if ("string" != typeof sGroup) {
+                    continue;
+                }
+                for (var i in this.ids[sGroup]) {
+                    var oDD = this.ids[sGroup][i];
+
+                    if (this.isTypeOfDD(oDD)) {
+                        var loc = this.getLocation(oDD);
+                        if (loc) {
+                            this.locationCache[oDD.id] = loc;
+                        } else {
+                            delete this.locationCache[oDD.id];
+                        }
+                    }
+                }
+            }
+        },
+
+        /**
+         * This checks to make sure an element exists and is in the DOM.  The
+         * main purpose is to handle cases where innerHTML is used to remove
+         * drag and drop objects from the DOM.  IE provides an 'unspecified
+         * error' when trying to access the offsetParent of such an element
+        * @method verifyEl
+        * @param {HTMLElement} el the element to check
+        * @return {boolean} true if the element looks usable
+        * @static
+         */
+        verifyEl: function(el) {
+            try {
+                if (el) {
+                    var parent = el.offsetParent;
+                    if (parent) {
+                        return true;
+                    }
+                }
+            } catch(e) {
+            }
+
+            return false;
+        },
+        
+        /**
+         * Returns a Region object containing the drag and drop element's position
+         * and size, including the padding configured for it
+        * @method getLocation
+        * @param {DragDrop} oDD the drag and drop object to get the 
+         *                       location for
+        * @return {YAHOO.util.Region} a Region object representing the total area
+         *                             the element occupies, including any padding
+         *                             the instance is configured for.
+        * @static
+         */
+        getLocation: function(oDD) {
+            if (! this.isTypeOfDD(oDD)) {
+                return null;
+            }
+
+            var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l;
+
+            try {
+                pos= YAHOO.util.Dom.getXY(el);
+            } catch (e) { }
+
+            if (!pos) {
+                return null;
+            }
+
+            x1 = pos[0];
+            x2 = x1 + el.offsetWidth;
+            y1 = pos[1];
+            y2 = y1 + el.offsetHeight;
+
+            t = y1 - oDD.padding[0];
+            r = x2 + oDD.padding[1];
+            b = y2 + oDD.padding[2];
+            l = x1 - oDD.padding[3];
+
+            return new YAHOO.util.Region( t, r, b, l );
+        },
+
+        /**
+         * Checks the cursor location to see if it over the target
+        * @method isOverTarget
+        * @param {YAHOO.util.Point} pt The point to evaluate
+        * @param {DragDrop} oTarget the DragDrop object we are inspecting
+        * @param {boolean} intersect true if we are in intersect mode
+        * @param {YAHOO.util.Region} pre-cached location of the dragged element
+        * @return {boolean} true if the mouse is over the target
+        * @private
+        * @static
+         */
+        isOverTarget: function(pt, oTarget, intersect, curRegion) {
+            // use cache if available
+            var loc = this.locationCache[oTarget.id];
+            if (!loc || !this.useCache) {
+                loc = this.getLocation(oTarget);
+                this.locationCache[oTarget.id] = loc;
+
+            }
+
+            if (!loc) {
+                return false;
+            }
+
+            oTarget.cursorIsOver = loc.contains( pt );
+
+            // DragDrop is using this as a sanity check for the initial mousedown
+            // in this case we are done.  In POINT mode, if the drag obj has no
+            // contraints, we are done. Otherwise we need to evaluate the 
+            // region the target as occupies to determine if the dragged element
+            // overlaps with it.
+            
+            var dc = this.dragCurrent;
+            if (!dc || (!intersect && !dc.constrainX && !dc.constrainY)) {
+
+                //if (oTarget.cursorIsOver) {
+                //}
+                return oTarget.cursorIsOver;
+            }
+
+            oTarget.overlap = null;
+
+
+            // Get the current location of the drag element, this is the
+            // location of the mouse event less the delta that represents
+            // where the original mousedown happened on the element.  We
+            // need to consider constraints and ticks as well.
+
+            if (!curRegion) {
+                var pos = dc.getTargetCoord(pt.x, pt.y);
+                var el = dc.getDragEl();
+                curRegion = new YAHOO.util.Region( pos.y, 
+                                                   pos.x + el.offsetWidth,
+                                                   pos.y + el.offsetHeight, 
+                                                   pos.x );
+            }
+
+            var overlap = curRegion.intersect(loc);
+
+            if (overlap) {
+                oTarget.overlap = overlap;
+                return (intersect) ? true : oTarget.cursorIsOver;
+            } else {
+                return false;
+            }
+        },
+
+        /**
+         * unload event handler
+        * @method _onUnload
+        * @private
+        * @static
+         */
+        _onUnload: function(e, me) {
+            this.unregAll();
+        },
+
+        /**
+         * Cleans up the drag and drop events and objects.
+        * @method unregAll
+        * @private
+        * @static
+         */
+        unregAll: function() {
+
+            if (this.dragCurrent) {
+                this.stopDrag();
+                this.dragCurrent = null;
+            }
+
+            this._execOnAll("unreg", []);
+
+            //for (var i in this.elementCache) {
+                //delete this.elementCache[i];
+            //}
+            //this.elementCache = {};
+
+            this.ids = {};
+        },
+
+        /**
+         * A cache of DOM elements
+        * @property elementCache
+        * @private
+        * @static
+        * @deprecated elements are not cached now
+         */
+        elementCache: {},
+        
+        /**
+         * Get the wrapper for the DOM element specified
+        * @method getElWrapper
+        * @param {String} id the id of the element to get
+        * @return {YAHOO.util.DDM.ElementWrapper} the wrapped element
+        * @private
+        * @deprecated This wrapper isn't that useful
+        * @static
+         */
+        getElWrapper: function(id) {
+            var oWrapper = this.elementCache[id];
+            if (!oWrapper || !oWrapper.el) {
+                oWrapper = this.elementCache[id] = 
+                    new this.ElementWrapper(YAHOO.util.Dom.get(id));
+            }
+            return oWrapper;
+        },
+
+        /**
+         * Returns the actual DOM element
+        * @method getElement
+        * @param {String} id the id of the elment to get
+        * @return {Object} The element
+        * @deprecated use YAHOO.util.Dom.get instead
+        * @static
+         */
+        getElement: function(id) {
+            return YAHOO.util.Dom.get(id);
+        },
+        
+        /**
+         * Returns the style property for the DOM element (i.e., 
+         * document.getElById(id).style)
+        * @method getCss
+        * @param {String} id the id of the elment to get
+        * @return {Object} The style property of the element
+        * @deprecated use YAHOO.util.Dom instead
+        * @static
+         */
+        getCss: function(id) {
+            var el = YAHOO.util.Dom.get(id);
+            return (el) ? el.style : null;
+        },
+
+        /**
+         * Inner class for cached elements
+        * @class DragDropMgr.ElementWrapper
+        * @for DragDropMgr
+        * @private
+        * @deprecated
+         */
+        ElementWrapper: function(el) {
+                /**
+                 * The element
+                * @property el
+                 */
+                this.el = el || null;
+                /**
+                 * The element id
+                * @property id
+                 */
+                this.id = this.el && el.id;
+                /**
+                 * A reference to the style property
+                * @property css
+                 */
+                this.css = this.el && el.style;
+            },
+
+        /**
+         * Returns the X position of an html element
+        * @method getPosX
+        * @param el the element for which to get the position
+        * @return {int} the X coordinate
+        * @for DragDropMgr
+        * @deprecated use YAHOO.util.Dom.getX instead
+        * @static
+         */
+        getPosX: function(el) {
+            return YAHOO.util.Dom.getX(el);
+        },
+
+        /**
+         * Returns the Y position of an html element
+        * @method getPosY
+        * @param el the element for which to get the position
+        * @return {int} the Y coordinate
+        * @deprecated use YAHOO.util.Dom.getY instead
+        * @static
+         */
+        getPosY: function(el) {
+            return YAHOO.util.Dom.getY(el); 
+        },
+
+        /**
+         * Swap two nodes.  In IE, we use the native method, for others we 
+         * emulate the IE behavior
+        * @method swapNode
+        * @param n1 the first node to swap
+        * @param n2 the other node to swap
+        * @static
+         */
+        swapNode: function(n1, n2) {
+            if (n1.swapNode) {
+                n1.swapNode(n2);
+            } else {
+                var p = n2.parentNode;
+                var s = n2.nextSibling;
+
+                if (s == n1) {
+                    p.insertBefore(n1, n2);
+                } else if (n2 == n1.nextSibling) {
+                    p.insertBefore(n2, n1);
+                } else {
+                    n1.parentNode.replaceChild(n2, n1);
+                    p.insertBefore(n1, s);
+                }
+            }
+        },
+
+        /**
+         * Returns the current scroll position
+        * @method getScroll
+        * @private
+        * @static
+         */
+        getScroll: function () {
+            var t, l, dde=document.documentElement, db=document.body;
+            if (dde && (dde.scrollTop || dde.scrollLeft)) {
+                t = dde.scrollTop;
+                l = dde.scrollLeft;
+            } else if (db) {
+                t = db.scrollTop;
+                l = db.scrollLeft;
+            } else {
+            }
+            return { top: t, left: l };
+        },
+
+        /**
+         * Returns the specified element style property
+        * @method getStyle
+        * @param {HTMLElement} el          the element
+        * @param {string}      styleProp   the style property
+        * @return {string} The value of the style property
+        * @deprecated use YAHOO.util.Dom.getStyle
+        * @static
+         */
+        getStyle: function(el, styleProp) {
+            return YAHOO.util.Dom.getStyle(el, styleProp);
+        },
+
+        /**
+         * Gets the scrollTop
+        * @method getScrollTop
+        * @return {int} the document's scrollTop
+        * @static
+         */
+        getScrollTop: function () { return this.getScroll().top; },
+
+        /**
+         * Gets the scrollLeft
+        * @method getScrollLeft
+        * @return {int} the document's scrollTop
+        * @static
+         */
+        getScrollLeft: function () { return this.getScroll().left; },
+
+        /**
+         * Sets the x/y position of an element to the location of the
+         * target element.
+        * @method moveToEl
+        * @param {HTMLElement} moveEl      The element to move
+        * @param {HTMLElement} targetEl    The position reference element
+        * @static
+         */
+        moveToEl: function (moveEl, targetEl) {
+            var aCoord = YAHOO.util.Dom.getXY(targetEl);
+            YAHOO.util.Dom.setXY(moveEl, aCoord);
+        },
+
+        /**
+         * Gets the client height
+        * @method getClientHeight
+        * @return {int} client height in px
+        * @deprecated use YAHOO.util.Dom.getViewportHeight instead
+        * @static
+         */
+        getClientHeight: function() {
+            return YAHOO.util.Dom.getViewportHeight();
+        },
+
+        /**
+         * Gets the client width
+        * @method getClientWidth
+        * @return {int} client width in px
+        * @deprecated use YAHOO.util.Dom.getViewportWidth instead
+        * @static
+         */
+        getClientWidth: function() {
+            return YAHOO.util.Dom.getViewportWidth();
+        },
+
+        /**
+         * Numeric array sort function
+        * @method numericSort
+        * @static
+         */
+        numericSort: function(a, b) { return (a - b); },
+
+        /**
+         * Internal counter
+        * @property _timeoutCount
+        * @private
+        * @static
+         */
+        _timeoutCount: 0,
+
+        /**
+         * Trying to make the load order less important.  Without this we get
+         * an error if this file is loaded before the Event Utility.
+        * @method _addListeners
+        * @private
+        * @static
+         */
+        _addListeners: function() {
+            var DDM = YAHOO.util.DDM;
+            if ( YAHOO.util.Event && document ) {
+                DDM._onLoad();
+            } else {
+                if (DDM._timeoutCount > 2000) {
+                } else {
+                    setTimeout(DDM._addListeners, 10);
+                    if (document && document.body) {
+                        DDM._timeoutCount += 1;
+                    }
+                }
+            }
+        },
+
+        /**
+         * Recursively searches the immediate parent and all child nodes for 
+         * the handle element in order to determine wheter or not it was 
+         * clicked.
+        * @method handleWasClicked
+        * @param node the html element to inspect
+        * @static
+         */
+        handleWasClicked: function(node, id) {
+            if (this.isHandle(id, node.id)) {
+                return true;
+            } else {
+                // check to see if this is a text node child of the one we want
+                var p = node.parentNode;
+
+                while (p) {
+                    if (this.isHandle(id, p.id)) {
+                        return true;
+                    } else {
+                        p = p.parentNode;
+                    }
+                }
+            }
+
+            return false;
+        }
+
+    };
+
+}();
+
+// shorter alias, save a few bytes
+YAHOO.util.DDM = YAHOO.util.DragDropMgr;
+YAHOO.util.DDM._addListeners();
+
+}
+
+(function() {
+
+var Event=YAHOO.util.Event; 
+var Dom=YAHOO.util.Dom;
+
+/**
+ * Defines the interface and base operation of items that that can be 
+ * dragged or can be drop targets.  It was designed to be extended, overriding
+ * the event handlers for startDrag, onDrag, onDragOver, onDragOut.
+ * Up to three html elements can be associated with a DragDrop instance:
+ * <ul>
+ * <li>linked element: the element that is passed into the constructor.
+ * This is the element which defines the boundaries for interaction with 
+ * other DragDrop objects.</li>
+ * <li>handle element(s): The drag operation only occurs if the element that 
+ * was clicked matches a handle element.  By default this is the linked 
+ * element, but there are times that you will want only a portion of the 
+ * linked element to initiate the drag operation, and the setHandleElId() 
+ * method provides a way to define this.</li>
+ * <li>drag element: this represents an the element that would be moved along
+ * with the cursor during a drag operation.  By default, this is the linked
+ * element itself as in {@link YAHOO.util.DD}.  setDragElId() lets you define
+ * a separate element that would be moved, as in {@link YAHOO.util.DDProxy}
+ * </li>
+ * </ul>
+ * This class should not be instantiated until the onload event to ensure that
+ * the associated elements are available.
+ * The following would define a DragDrop obj that would interact with any 
+ * other DragDrop obj in the "group1" group:
+ * <pre>
+ *  dd = new YAHOO.util.DragDrop("div1", "group1");
+ * </pre>
+ * Since none of the event handlers have been implemented, nothing would 
+ * actually happen if you were to run the code above.  Normally you would 
+ * override this class or one of the default implementations, but you can 
+ * also override the methods you want on an instance of the class...
+ * <pre>
+ *  dd.onDragDrop = function(e, id) {
+ *  &nbsp;&nbsp;alert("dd was dropped on " + id);
+ *  }
+ * </pre>
+ * @namespace YAHOO.util
+ * @class DragDrop
+ * @constructor
+ * @param {String} id of the element that is linked to this instance
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DragDrop: 
+ *                    padding, isTarget, maintainOffset, primaryButtonOnly,
+ */
+YAHOO.util.DragDrop = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config); 
+    }
+};
+
+YAHOO.util.DragDrop.prototype = {
+    /**
+     * An Object Literal containing the events that we will be using: mouseDown, b4MouseDown, mouseUp, b4StartDrag, startDrag, b4EndDrag, endDrag, mouseUp, drag, b4Drag, invalidDrop, b4DragOut, dragOut, dragEnter, b4DragOver, dragOver, b4DragDrop, dragDrop
+     * By setting any of these to false, then event will not be fired.
+    * @property events
+    * @type object
+     */
+    events: null,
+    /**
+   * @method on
+   * @description Shortcut for EventProvider.subscribe, see <a href="YAHOO.util.EventProvider.html#subscribe">YAHOO.util.EventProvider.subscribe</a>
+    */
+    on: function() {
+        this.subscribe.apply(this, arguments);
+    },
+    /**
+     * The id of the element associated with this object.  This is what we 
+     * refer to as the "linked element" because the size and position of 
+     * this element is used to determine when the drag and drop objects have 
+     * interacted.
+    * @property id
+    * @type String
+     */
+    id: null,
+
+    /**
+     * Configuration attributes passed into the constructor
+    * @property config
+    * @type object
+     */
+    config: null,
+
+    /**
+     * The id of the element that will be dragged.  By default this is same 
+     * as the linked element , but could be changed to another element. Ex: 
+     * YAHOO.util.DDProxy
+    * @property dragElId
+    * @type String
+    * @private
+     */
+    dragElId: null, 
+
+    /**
+     * the id of the element that initiates the drag operation.  By default 
+     * this is the linked element, but could be changed to be a child of this
+     * element.  This lets us do things like only starting the drag when the 
+     * header element within the linked html element is clicked.
+    * @property handleElId
+    * @type String
+    * @private
+     */
+    handleElId: null, 
+
+    /**
+     * An associative array of HTML tags that will be ignored if clicked.
+    * @property invalidHandleTypes
+    * @type {string: string}
+     */
+    invalidHandleTypes: null, 
+
+    /**
+     * An associative array of ids for elements that will be ignored if clicked
+    * @property invalidHandleIds
+    * @type {string: string}
+     */
+    invalidHandleIds: null, 
+
+    /**
+     * An indexted array of css class names for elements that will be ignored
+     * if clicked.
+    * @property invalidHandleClasses
+    * @type string[]
+     */
+    invalidHandleClasses: null, 
+
+    /**
+     * The linked element's absolute X position at the time the drag was 
+     * started
+    * @property startPageX
+    * @type int
+    * @private
+     */
+    startPageX: 0,
+
+    /**
+     * The linked element's absolute X position at the time the drag was 
+     * started
+    * @property startPageY
+    * @type int
+    * @private
+     */
+    startPageY: 0,
+
+    /**
+     * The group defines a logical collection of DragDrop objects that are 
+     * related.  Instances only get events when interacting with other 
+     * DragDrop object in the same group.  This lets us define multiple 
+     * groups using a single DragDrop subclass if we want.
+    * @property groups
+    * @type {string: string}
+     */
+    groups: null,
+
+    /**
+     * Individual drag/drop instances can be locked.  This will prevent 
+     * onmousedown start drag.
+    * @property locked
+    * @type boolean
+    * @private
+     */
+    locked: false,
+
+    /**
+     * Lock this instance
+    * @method lock
+     */
+    lock: function() { this.locked = true; },
+
+    /**
+     * Unlock this instace
+    * @method unlock
+     */
+    unlock: function() { this.locked = false; },
+
+    /**
+     * By default, all instances can be a drop target.  This can be disabled by
+     * setting isTarget to false.
+    * @property isTarget
+    * @type boolean
+     */
+    isTarget: true,
+
+    /**
+     * The padding configured for this drag and drop object for calculating
+     * the drop zone intersection with this object.
+    * @property padding
+    * @type int[]
+     */
+    padding: null,
+    /**
+     * If this flag is true, do not fire drop events. The element is a drag only element (for movement not dropping)
+    * @property dragOnly
+    * @type Boolean
+     */
+    dragOnly: false,
+
+    /**
+     * If this flag is true, a shim will be placed over the screen/viewable area to track mouse events. Should help with dragging elements over iframes and other controls.
+    * @property useShim
+    * @type Boolean
+     */
+    useShim: false,
+
+    /**
+     * Cached reference to the linked element
+    * @property _domRef
+    * @private
+     */
+    _domRef: null,
+
+    /**
+     * Internal typeof flag
+    * @property __ygDragDrop
+    * @private
+     */
+    __ygDragDrop: true,
+
+    /**
+     * Set to true when horizontal contraints are applied
+    * @property constrainX
+    * @type boolean
+    * @private
+     */
+    constrainX: false,
+
+    /**
+     * Set to true when vertical contraints are applied
+    * @property constrainY
+    * @type boolean
+    * @private
+     */
+    constrainY: false,
+
+    /**
+     * The left constraint
+    * @property minX
+    * @type int
+    * @private
+     */
+    minX: 0,
+
+    /**
+     * The right constraint
+    * @property maxX
+    * @type int
+    * @private
+     */
+    maxX: 0,
+
+    /**
+     * The up constraint 
+    * @property minY
+    * @type int
+    * @type int
+    * @private
+     */
+    minY: 0,
+
+    /**
+     * The down constraint 
+    * @property maxY
+    * @type int
+    * @private
+     */
+    maxY: 0,
+
+    /**
+     * The difference between the click position and the source element's location
+    * @property deltaX
+    * @type int
+    * @private
+     */
+    deltaX: 0,
+
+    /**
+     * The difference between the click position and the source element's location
+    * @property deltaY
+    * @type int
+    * @private
+     */
+    deltaY: 0,
+
+    /**
+     * Maintain offsets when we resetconstraints.  Set to true when you want
+     * the position of the element relative to its parent to stay the same
+     * when the page changes
+     *
+    * @property maintainOffset
+    * @type boolean
+     */
+    maintainOffset: false,
+
+    /**
+     * Array of pixel locations the element will snap to if we specified a 
+     * horizontal graduation/interval.  This array is generated automatically
+     * when you define a tick interval.
+    * @property xTicks
+    * @type int[]
+     */
+    xTicks: null,
+
+    /**
+     * Array of pixel locations the element will snap to if we specified a 
+     * vertical graduation/interval.  This array is generated automatically 
+     * when you define a tick interval.
+    * @property yTicks
+    * @type int[]
+     */
+    yTicks: null,
+
+    /**
+     * By default the drag and drop instance will only respond to the primary
+     * button click (left button for a right-handed mouse).  Set to true to
+     * allow drag and drop to start with any mouse click that is propogated
+     * by the browser
+    * @property primaryButtonOnly
+    * @type boolean
+     */
+    primaryButtonOnly: true,
+
+    /**
+     * The availabe property is false until the linked dom element is accessible.
+    * @property available
+    * @type boolean
+     */
+    available: false,
+
+    /**
+     * By default, drags can only be initiated if the mousedown occurs in the
+     * region the linked element is.  This is done in part to work around a
+     * bug in some browsers that mis-report the mousedown if the previous
+     * mouseup happened outside of the window.  This property is set to true
+     * if outer handles are defined.
+     *
+    * @property hasOuterHandles
+    * @type boolean
+    * @default false
+     */
+    hasOuterHandles: false,
+
+    /**
+     * Property that is assigned to a drag and drop object when testing to
+     * see if it is being targeted by another dd object.  This property
+     * can be used in intersect mode to help determine the focus of
+     * the mouse interaction.  DDM.getBestMatch uses this property first to
+     * determine the closest match in INTERSECT mode when multiple targets
+     * are part of the same interaction.
+    * @property cursorIsOver
+    * @type boolean
+     */
+    cursorIsOver: false,
+
+    /**
+     * Property that is assigned to a drag and drop object when testing to
+     * see if it is being targeted by another dd object.  This is a region
+     * that represents the area the draggable element overlaps this target.
+     * DDM.getBestMatch uses this property to compare the size of the overlap
+     * to that of other targets in order to determine the closest match in
+     * INTERSECT mode when multiple targets are part of the same interaction.
+    * @property overlap 
+    * @type YAHOO.util.Region
+     */
+    overlap: null,
+
+    /**
+     * Code that executes immediately before the startDrag event
+    * @method b4StartDrag
+    * @private
+     */
+    b4StartDrag: function(x, y) { },
+
+    /**
+     * Abstract method called after a drag/drop object is clicked
+     * and the drag or mousedown time thresholds have beeen met.
+    * @method startDrag
+    * @param {int} X click location
+    * @param {int} Y click location
+     */
+    startDrag: function(x, y) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDrag event
+    * @method b4Drag
+    * @private
+     */
+    b4Drag: function(e) { },
+
+    /**
+     * Abstract method called during the onMouseMove event while dragging an 
+     * object.
+    * @method onDrag
+    * @param {Event} e the mousemove event
+     */
+    onDrag: function(e) { /* override this */ },
+
+    /**
+     * Abstract method called when this element fist begins hovering over 
+     * another DragDrop obj
+    * @method onDragEnter
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this is hovering over.  In INTERSECT mode, an array of one or more 
+     * dragdrop items being hovered over.
+     */
+    onDragEnter: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragOver event
+    * @method b4DragOver
+    * @private
+     */
+    b4DragOver: function(e) { },
+
+    /**
+     * Abstract method called when this element is hovering over another 
+     * DragDrop obj
+    * @method onDragOver
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this is hovering over.  In INTERSECT mode, an array of dd items 
+     * being hovered over.
+     */
+    onDragOver: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragOut event
+    * @method b4DragOut
+    * @private
+     */
+    b4DragOut: function(e) { },
+
+    /**
+     * Abstract method called when we are no longer hovering over an element
+    * @method onDragOut
+    * @param {Event} e the mousemove event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this was hovering over.  In INTERSECT mode, an array of dd items 
+     * that the mouse is no longer over.
+     */
+    onDragOut: function(e, id) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the onDragDrop event
+    * @method b4DragDrop
+    * @private
+     */
+    b4DragDrop: function(e) { },
+
+    /**
+     * Abstract method called when this item is dropped on another DragDrop 
+     * obj
+    * @method onDragDrop
+    * @param {Event} e the mouseup event
+    * @param {String|DragDrop[]} id In POINT mode, the element
+     * id this was dropped on.  In INTERSECT mode, an array of dd items this 
+     * was dropped on.
+     */
+    onDragDrop: function(e, id) { /* override this */ },
+
+    /**
+     * Abstract method called when this item is dropped on an area with no
+     * drop target
+    * @method onInvalidDrop
+    * @param {Event} e the mouseup event
+     */
+    onInvalidDrop: function(e) { /* override this */ },
+
+    /**
+     * Code that executes immediately before the endDrag event
+    * @method b4EndDrag
+    * @private
+     */
+    b4EndDrag: function(e) { },
+
+    /**
+     * Fired when we are done dragging the object
+    * @method endDrag
+    * @param {Event} e the mouseup event
+     */
+    endDrag: function(e) { /* override this */ },
+
+    /**
+     * Code executed immediately before the onMouseDown event
+    * @method b4MouseDown
+    * @param {Event} e the mousedown event
+    * @private
+     */
+    b4MouseDown: function(e) {  },
+
+    /**
+     * Event handler that fires when a drag/drop obj gets a mousedown
+    * @method onMouseDown
+    * @param {Event} e the mousedown event
+     */
+    onMouseDown: function(e) { /* override this */ },
+
+    /**
+     * Event handler that fires when a drag/drop obj gets a mouseup
+    * @method onMouseUp
+    * @param {Event} e the mouseup event
+     */
+    onMouseUp: function(e) { /* override this */ },
+   
+    /**
+     * Override the onAvailable method to do what is needed after the initial
+     * position was determined.
+    * @method onAvailable
+     */
+    onAvailable: function () { 
+    },
+
+    /**
+     * Returns a reference to the linked element
+    * @method getEl
+    * @return {HTMLElement} the html element 
+     */
+    getEl: function() { 
+        if (!this._domRef) {
+            this._domRef = Dom.get(this.id); 
+        }
+
+        return this._domRef;
+    },
+
+    /**
+     * Returns a reference to the actual element to drag.  By default this is
+     * the same as the html element, but it can be assigned to another 
+     * element. An example of this can be found in YAHOO.util.DDProxy
+    * @method getDragEl
+    * @return {HTMLElement} the html element 
+     */
+    getDragEl: function() {
+        return Dom.get(this.dragElId);
+    },
+
+    /**
+     * Sets up the DragDrop object.  Must be called in the constructor of any
+     * YAHOO.util.DragDrop subclass
+    * @method init
+    * @param id the id of the linked element
+    * @param {String} sGroup the group of related items
+    * @param {object} config configuration attributes
+     */
+    init: function(id, sGroup, config) {
+        this.initTarget(id, sGroup, config);
+        Event.on(this._domRef || this.id, "mousedown", 
+                        this.handleMouseDown, this, true);
+
+        // Event.on(this.id, "selectstart", Event.preventDefault);
+        for (var i in this.events) {
+            this.createEvent(i + 'Event');
+        }
+        
+    },
+
+    /**
+     * Initializes Targeting functionality only... the object does not
+     * get a mousedown handler.
+    * @method initTarget
+    * @param id the id of the linked element
+    * @param {String} sGroup the group of related items
+    * @param {object} config configuration attributes
+     */
+    initTarget: function(id, sGroup, config) {
+
+        // configuration attributes 
+        this.config = config || {};
+
+        this.events = {};
+
+        // create a local reference to the drag and drop manager
+        this.DDM = YAHOO.util.DDM;
+
+        // initialize the groups object
+        this.groups = {};
+
+        // assume that we have an element reference instead of an id if the
+        // parameter is not a string
+        if (typeof id !== "string") {
+            this._domRef = id;
+            id = Dom.generateId(id);
+        }
+
+        // set the id
+        this.id = id;
+
+        // add to an interaction group
+        this.addToGroup((sGroup) ? sGroup : "default");
+
+        // We don't want to register this as the handle with the manager
+        // so we just set the id rather than calling the setter.
+        this.handleElId = id;
+
+        Event.onAvailable(id, this.handleOnAvailable, this, true);
+
+
+        // the linked element is the element that gets dragged by default
+        this.setDragElId(id); 
+
+        // by default, clicked anchors will not start drag operations. 
+        // @TODO what else should be here?  Probably form fields.
+        this.invalidHandleTypes = { A: "A" };
+        this.invalidHandleIds = {};
+        this.invalidHandleClasses = [];
+
+        this.applyConfig();
+    },
+
+    /**
+     * Applies the configuration parameters that were passed into the constructor.
+     * This is supposed to happen at each level through the inheritance chain.  So
+     * a DDProxy implentation will execute apply config on DDProxy, DD, and 
+     * DragDrop in order to get all of the parameters that are available in
+     * each object.
+    * @method applyConfig
+     */
+    applyConfig: function() {
+        this.events = {
+            mouseDown: true,
+            b4MouseDown: true,
+            mouseUp: true,
+            b4StartDrag: true,
+            startDrag: true,
+            b4EndDrag: true,
+            endDrag: true,
+            drag: true,
+            b4Drag: true,
+            invalidDrop: true,
+            b4DragOut: true,
+            dragOut: true,
+            dragEnter: true,
+            b4DragOver: true,
+            dragOver: true,
+            b4DragDrop: true,
+            dragDrop: true
+        };
+        
+        if (this.config.events) {
+            for (var i in this.config.events) {
+                if (this.config.events[i] === false) {
+                    this.events[i] = false;
+                }
+            }
+        }
+
+
+        // configurable properties: 
+        //    padding, isTarget, maintainOffset, primaryButtonOnly
+        this.padding           = this.config.padding || [0, 0, 0, 0];
+        this.isTarget          = (this.config.isTarget !== false);
+        this.maintainOffset    = (this.config.maintainOffset);
+        this.primaryButtonOnly = (this.config.primaryButtonOnly !== false);
+        this.dragOnly = ((this.config.dragOnly === true) ? true : false);
+        this.useShim = ((this.config.useShim === true) ? true : false);
+    },
+
+    /**
+     * Executed when the linked element is available
+    * @method handleOnAvailable
+    * @private
+     */
+    handleOnAvailable: function() {
+        this.available = true;
+        this.resetConstraints();
+        this.onAvailable();
+    },
+
+     /**
+     * Configures the padding for the target zone in px.  Effectively expands
+     * (or reduces) the virtual object size for targeting calculations.  
+     * Supports css-style shorthand; if only one parameter is passed, all sides
+     * will have that padding, and if only two are passed, the top and bottom
+     * will have the first param, the left and right the second.
+    * @method setPadding
+    * @param {int} iTop    Top pad
+    * @param {int} iRight  Right pad
+    * @param {int} iBot    Bot pad
+    * @param {int} iLeft   Left pad
+     */
+    setPadding: function(iTop, iRight, iBot, iLeft) {
+        // this.padding = [iLeft, iRight, iTop, iBot];
+        if (!iRight && 0 !== iRight) {
+            this.padding = [iTop, iTop, iTop, iTop];
+        } else if (!iBot && 0 !== iBot) {
+            this.padding = [iTop, iRight, iTop, iRight];
+        } else {
+            this.padding = [iTop, iRight, iBot, iLeft];
+        }
+    },
+
+    /**
+     * Stores the initial placement of the linked element.
+    * @method setInitialPosition
+    * @param {int} diffX   the X offset, default 0
+    * @param {int} diffY   the Y offset, default 0
+    * @private
+     */
+    setInitPosition: function(diffX, diffY) {
+        var el = this.getEl();
+
+        if (!this.DDM.verifyEl(el)) {
+            if (el && el.style && (el.style.display == 'none')) {
+            } else {
+            }
+            return;
+        }
+
+        var dx = diffX || 0;
+        var dy = diffY || 0;
+
+        var p = Dom.getXY( el );
+
+        this.initPageX = p[0] - dx;
+        this.initPageY = p[1] - dy;
+
+        this.lastPageX = p[0];
+        this.lastPageY = p[1];
+
+
+
+        this.setStartPosition(p);
+    },
+
+    /**
+     * Sets the start position of the element.  This is set when the obj
+     * is initialized, the reset when a drag is started.
+    * @method setStartPosition
+    * @param pos current position (from previous lookup)
+    * @private
+     */
+    setStartPosition: function(pos) {
+        var p = pos || Dom.getXY(this.getEl());
+
+        this.deltaSetXY = null;
+
+        this.startPageX = p[0];
+        this.startPageY = p[1];
+    },
+
+    /**
+     * Add this instance to a group of related drag/drop objects.  All 
+     * instances belong to at least one group, and can belong to as many 
+     * groups as needed.
+    * @method addToGroup
+    * @param sGroup {string} the name of the group
+     */
+    addToGroup: function(sGroup) {
+        this.groups[sGroup] = true;
+        this.DDM.regDragDrop(this, sGroup);
+    },
+
+    /**
+     * Remove's this instance from the supplied interaction group
+    * @method removeFromGroup
+    * @param {string}  sGroup  The group to drop
+     */
+    removeFromGroup: function(sGroup) {
+        if (this.groups[sGroup]) {
+            delete this.groups[sGroup];
+        }
+
+        this.DDM.removeDDFromGroup(this, sGroup);
+    },
+
+    /**
+     * Allows you to specify that an element other than the linked element 
+     * will be moved with the cursor during a drag
+    * @method setDragElId
+    * @param id {string} the id of the element that will be used to initiate the drag
+     */
+    setDragElId: function(id) {
+        this.dragElId = id;
+    },
+
+    /**
+     * Allows you to specify a child of the linked element that should be 
+     * used to initiate the drag operation.  An example of this would be if 
+     * you have a content div with text and links.  Clicking anywhere in the 
+     * content area would normally start the drag operation.  Use this method
+     * to specify that an element inside of the content div is the element 
+     * that starts the drag operation.
+    * @method setHandleElId
+    * @param id {string} the id of the element that will be used to 
+     * initiate the drag.
+     */
+    setHandleElId: function(id) {
+        if (typeof id !== "string") {
+            id = Dom.generateId(id);
+        }
+        this.handleElId = id;
+        this.DDM.regHandle(this.id, id);
+    },
+
+    /**
+     * Allows you to set an element outside of the linked element as a drag 
+     * handle
+    * @method setOuterHandleElId
+    * @param id the id of the element that will be used to initiate the drag
+     */
+    setOuterHandleElId: function(id) {
+        if (typeof id !== "string") {
+            id = Dom.generateId(id);
+        }
+        Event.on(id, "mousedown", 
+                this.handleMouseDown, this, true);
+        this.setHandleElId(id);
+
+        this.hasOuterHandles = true;
+    },
+
+    /**
+     * Remove all drag and drop hooks for this element
+    * @method unreg
+     */
+    unreg: function() {
+        Event.removeListener(this.id, "mousedown", 
+                this.handleMouseDown);
+        this._domRef = null;
+        this.DDM._remove(this);
+    },
+
+    /**
+     * Returns true if this instance is locked, or the drag drop mgr is locked
+     * (meaning that all drag/drop is disabled on the page.)
+    * @method isLocked
+    * @return {boolean} true if this obj or all drag/drop is locked, else 
+     * false
+     */
+    isLocked: function() {
+        return (this.DDM.isLocked() || this.locked);
+    },
+
+    /**
+     * Fired when this object is clicked
+    * @method handleMouseDown
+    * @param {Event} e 
+    * @param {YAHOO.util.DragDrop} oDD the clicked dd object (this dd obj)
+    * @private
+     */
+    handleMouseDown: function(e, oDD) {
+
+        var button = e.which || e.button;
+
+        if (this.primaryButtonOnly && button > 1) {
+            return;
+        }
+
+        if (this.isLocked()) {
+            return;
+        }
+
+
+
+        // firing the mousedown events prior to calculating positions
+        var b4Return = this.b4MouseDown(e),
+        b4Return2 = true;
+
+        if (this.events.b4MouseDown) {
+            b4Return2 = this.fireEvent('b4MouseDownEvent', e);
+        }
+        var mDownReturn = this.onMouseDown(e),
+            mDownReturn2 = true;
+        if (this.events.mouseDown) {
+            mDownReturn2 = this.fireEvent('mouseDownEvent', e);
+        }
+
+        if ((b4Return === false) || (mDownReturn === false) || (b4Return2 === false) || (mDownReturn2 === false)) {
+            return;
+        }
+
+        this.DDM.refreshCache(this.groups);
+        // var self = this;
+        // setTimeout( function() { self.DDM.refreshCache(self.groups); }, 0);
+
+        // Only process the event if we really clicked within the linked 
+        // element.  The reason we make this check is that in the case that 
+        // another element was moved between the clicked element and the 
+        // cursor in the time between the mousedown and mouseup events. When 
+        // this happens, the element gets the next mousedown event 
+        // regardless of where on the screen it happened.  
+        var pt = new YAHOO.util.Point(Event.getPageX(e), Event.getPageY(e));
+        if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) )  {
+        } else {
+            if (this.clickValidator(e)) {
+
+
+                // set the initial element position
+                this.setStartPosition();
+
+                // start tracking mousemove distance and mousedown time to
+                // determine when to start the actual drag
+                this.DDM.handleMouseDown(e, this);
+
+                // this mousedown is mine
+                this.DDM.stopEvent(e);
+            } else {
+
+
+            }
+        }
+    },
+
+    /**
+    * @method clickValidator
+    * @description Method validates that the clicked element
+     * was indeed the handle or a valid child of the handle
+    * @param {Event} e 
+     */
+    clickValidator: function(e) {
+        var target = YAHOO.util.Event.getTarget(e);
+        return ( this.isValidHandleChild(target) &&
+                    (this.id == this.handleElId || 
+                        this.DDM.handleWasClicked(target, this.id)) );
+    },
+
+    /**
+     * Finds the location the element should be placed if we want to move
+     * it to where the mouse location less the click offset would place us.
+    * @method getTargetCoord
+    * @param {int} iPageX the X coordinate of the click
+    * @param {int} iPageY the Y coordinate of the click
+    * @return an object that contains the coordinates (Object.x and Object.y)
+    * @private
+     */
+    getTargetCoord: function(iPageX, iPageY) {
+
+
+        var x = iPageX - this.deltaX;
+        var y = iPageY - this.deltaY;
+
+        if (this.constrainX) {
+            if (x < this.minX) { x = this.minX; }
+            if (x > this.maxX) { x = this.maxX; }
+        }
+
+        if (this.constrainY) {
+            if (y < this.minY) { y = this.minY; }
+            if (y > this.maxY) { y = this.maxY; }
+        }
+
+        x = this.getTick(x, this.xTicks);
+        y = this.getTick(y, this.yTicks);
+
+
+        return {x:x, y:y};
+    },
+
+    /**
+     * Allows you to specify a tag name that should not start a drag operation
+     * when clicked.  This is designed to facilitate embedding links within a
+     * drag handle that do something other than start the drag.
+    * @method addInvalidHandleType
+    * @param {string} tagName the type of element to exclude
+     */
+    addInvalidHandleType: function(tagName) {
+        var type = tagName.toUpperCase();
+        this.invalidHandleTypes[type] = type;
+    },
+
+    /**
+     * Lets you to specify an element id for a child of a drag handle
+     * that should not initiate a drag
+    * @method addInvalidHandleId
+    * @param {string} id the element id of the element you wish to ignore
+     */
+    addInvalidHandleId: function(id) {
+        if (typeof id !== "string") {
+            id = Dom.generateId(id);
+        }
+        this.invalidHandleIds[id] = id;
+    },
+
+
+    /**
+     * Lets you specify a css class of elements that will not initiate a drag
+    * @method addInvalidHandleClass
+    * @param {string} cssClass the class of the elements you wish to ignore
+     */
+    addInvalidHandleClass: function(cssClass) {
+        this.invalidHandleClasses.push(cssClass);
+    },
+
+    /**
+     * Unsets an excluded tag name set by addInvalidHandleType
+    * @method removeInvalidHandleType
+    * @param {string} tagName the type of element to unexclude
+     */
+    removeInvalidHandleType: function(tagName) {
+        var type = tagName.toUpperCase();
+        // this.invalidHandleTypes[type] = null;
+        delete this.invalidHandleTypes[type];
+    },
+    
+    /**
+     * Unsets an invalid handle id
+    * @method removeInvalidHandleId
+    * @param {string} id the id of the element to re-enable
+     */
+    removeInvalidHandleId: function(id) {
+        if (typeof id !== "string") {
+            id = Dom.generateId(id);
+        }
+        delete this.invalidHandleIds[id];
+    },
+
+    /**
+     * Unsets an invalid css class
+    * @method removeInvalidHandleClass
+    * @param {string} cssClass the class of the element(s) you wish to 
+     * re-enable
+     */
+    removeInvalidHandleClass: function(cssClass) {
+        for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) {
+            if (this.invalidHandleClasses[i] == cssClass) {
+                delete this.invalidHandleClasses[i];
+            }
+        }
+    },
+
+    /**
+     * Checks the tag exclusion list to see if this click should be ignored
+    * @method isValidHandleChild
+    * @param {HTMLElement} node the HTMLElement to evaluate
+    * @return {boolean} true if this is a valid tag type, false if not
+     */
+    isValidHandleChild: function(node) {
+
+        var valid = true;
+        // var n = (node.nodeName == "#text") ? node.parentNode : node;
+        var nodeName;
+        try {
+            nodeName = node.nodeName.toUpperCase();
+        } catch(e) {
+            nodeName = node.nodeName;
+        }
+        valid = valid && !this.invalidHandleTypes[nodeName];
+        valid = valid && !this.invalidHandleIds[node.id];
+
+        for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) {
+            valid = !Dom.hasClass(node, this.invalidHandleClasses[i]);
+        }
+
+
+        return valid;
+
+    },
+
+    /**
+     * Create the array of horizontal tick marks if an interval was specified
+     * in setXConstraint().
+    * @method setXTicks
+    * @private
+     */
+    setXTicks: function(iStartX, iTickSize) {
+        this.xTicks = [];
+        this.xTickSize = iTickSize;
+        
+        var tickMap = {};
+
+        for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) {
+            if (!tickMap[i]) {
+                this.xTicks[this.xTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) {
+            if (!tickMap[i]) {
+                this.xTicks[this.xTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        this.xTicks.sort(this.DDM.numericSort) ;
+    },
+
+    /**
+     * Create the array of vertical tick marks if an interval was specified in 
+     * setYConstraint().
+    * @method setYTicks
+    * @private
+     */
+    setYTicks: function(iStartY, iTickSize) {
+        this.yTicks = [];
+        this.yTickSize = iTickSize;
+
+        var tickMap = {};
+
+        for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) {
+            if (!tickMap[i]) {
+                this.yTicks[this.yTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) {
+            if (!tickMap[i]) {
+                this.yTicks[this.yTicks.length] = i;
+                tickMap[i] = true;
+            }
+        }
+
+        this.yTicks.sort(this.DDM.numericSort) ;
+    },
+
+    /**
+     * By default, the element can be dragged any place on the screen.  Use 
+     * this method to limit the horizontal travel of the element.  Pass in 
+     * 0,0 for the parameters if you want to lock the drag to the y axis.
+    * @method setXConstraint
+    * @param {int} iLeft the number of pixels the element can move to the left
+    * @param {int} iRight the number of pixels the element can move to the 
+     * right
+    * @param {int} iTickSize optional parameter for specifying that the 
+     * element
+     * should move iTickSize pixels at a time.
+     */
+    setXConstraint: function(iLeft, iRight, iTickSize) {
+        this.leftConstraint = parseInt(iLeft, 10);
+        this.rightConstraint = parseInt(iRight, 10);
+
+        this.minX = this.initPageX - this.leftConstraint;
+        this.maxX = this.initPageX + this.rightConstraint;
+        if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); }
+
+        this.constrainX = true;
+    },
+
+    /**
+     * Clears any constraints applied to this instance.  Also clears ticks
+     * since they can't exist independent of a constraint at this time.
+    * @method clearConstraints
+     */
+    clearConstraints: function() {
+        this.constrainX = false;
+        this.constrainY = false;
+        this.clearTicks();
+    },
+
+    /**
+     * Clears any tick interval defined for this instance
+    * @method clearTicks
+     */
+    clearTicks: function() {
+        this.xTicks = null;
+        this.yTicks = null;
+        this.xTickSize = 0;
+        this.yTickSize = 0;
+    },
+
+    /**
+     * By default, the element can be dragged any place on the screen.  Set 
+     * this to limit the vertical travel of the element.  Pass in 0,0 for the
+     * parameters if you want to lock the drag to the x axis.
+    * @method setYConstraint
+    * @param {int} iUp the number of pixels the element can move up
+    * @param {int} iDown the number of pixels the element can move down
+    * @param {int} iTickSize optional parameter for specifying that the 
+     * element should move iTickSize pixels at a time.
+     */
+    setYConstraint: function(iUp, iDown, iTickSize) {
+        this.topConstraint = parseInt(iUp, 10);
+        this.bottomConstraint = parseInt(iDown, 10);
+
+        this.minY = this.initPageY - this.topConstraint;
+        this.maxY = this.initPageY + this.bottomConstraint;
+        if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); }
+
+        this.constrainY = true;
+        
+    },
+
+    /**
+     * resetConstraints must be called if you manually reposition a dd element.
+    * @method resetConstraints
+     */
+    resetConstraints: function() {
+
+
+        // Maintain offsets if necessary
+        if (this.initPageX || this.initPageX === 0) {
+            // figure out how much this thing has moved
+            var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
+            var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
+
+            this.setInitPosition(dx, dy);
+
+        // This is the first time we have detected the element's position
+        } else {
+            this.setInitPosition();
+        }
+
+        if (this.constrainX) {
+            this.setXConstraint( this.leftConstraint, 
+                                 this.rightConstraint, 
+                                 this.xTickSize        );
+        }
+
+        if (this.constrainY) {
+            this.setYConstraint( this.topConstraint, 
+                                 this.bottomConstraint, 
+                                 this.yTickSize         );
+        }
+    },
+
+    /**
+     * Normally the drag element is moved pixel by pixel, but we can specify 
+     * that it move a number of pixels at a time.  This method resolves the 
+     * location when we have it set up like this.
+    * @method getTick
+    * @param {int} val where we want to place the object
+    * @param {int[]} tickArray sorted array of valid points
+    * @return {int} the closest tick
+    * @private
+     */
+    getTick: function(val, tickArray) {
+
+        if (!tickArray) {
+            // If tick interval is not defined, it is effectively 1 pixel, 
+            // so we return the value passed to us.
+            return val; 
+        } else if (tickArray[0] >= val) {
+            // The value is lower than the first tick, so we return the first
+            // tick.
+            return tickArray[0];
+        } else {
+            for (var i=0, len=tickArray.length; i<len; ++i) {
+                var next = i + 1;
+                if (tickArray[next] && tickArray[next] >= val) {
+                    var diff1 = val - tickArray[i];
+                    var diff2 = tickArray[next] - val;
+                    return (diff2 > diff1) ? tickArray[i] : tickArray[next];
+                }
+            }
+
+            // The value is larger than the last tick, so we return the last
+            // tick.
+            return tickArray[tickArray.length - 1];
+        }
+    },
+
+    /**
+     * toString method
+    * @method toString
+    * @return {string} string representation of the dd obj
+     */
+    toString: function() {
+        return ("DragDrop " + this.id);
+    }
+
+};
+YAHOO.augment(YAHOO.util.DragDrop, YAHOO.util.EventProvider);
+
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+})();
+/**
+ * A DragDrop implementation where the linked element follows the 
+ * mouse cursor during a drag.
+ * @class DD
+ * @extends YAHOO.util.DragDrop
+ * @constructor
+ * @param {String} id the id of the linked element 
+ * @param {String} sGroup the group of related DragDrop items
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DD: 
+ *                    scroll
+ */
+YAHOO.util.DD = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config);
+    }
+};
+
+YAHOO.extend(YAHOO.util.DD, YAHOO.util.DragDrop, {
+
+    /**
+     * When set to true, the utility automatically tries to scroll the browser
+     * window when a drag and drop element is dragged near the viewport boundary.
+     * Defaults to true.
+    * @property scroll
+    * @type boolean
+     */
+    scroll: true, 
+
+    /**
+     * Sets the pointer offset to the distance between the linked element's top 
+     * left corner and the location the element was clicked
+    * @method autoOffset
+    * @param {int} iPageX the X coordinate of the click
+    * @param {int} iPageY the Y coordinate of the click
+     */
+    autoOffset: function(iPageX, iPageY) {
+        var x = iPageX - this.startPageX;
+        var y = iPageY - this.startPageY;
+        this.setDelta(x, y);
+    },
+
+    /** 
+     * Sets the pointer offset.  You can call this directly to force the 
+     * offset to be in a particular location (e.g., pass in 0,0 to set it 
+     * to the center of the object, as done in YAHOO.widget.Slider)
+    * @method setDelta
+    * @param {int} iDeltaX the distance from the left
+    * @param {int} iDeltaY the distance from the top
+     */
+    setDelta: function(iDeltaX, iDeltaY) {
+        this.deltaX = iDeltaX;
+        this.deltaY = iDeltaY;
+    },
+
+    /**
+     * Sets the drag element to the location of the mousedown or click event, 
+     * maintaining the cursor location relative to the location on the element 
+     * that was clicked.  Override this if you want to place the element in a 
+     * location other than where the cursor is.
+    * @method setDragElPos
+    * @param {int} iPageX the X coordinate of the mousedown or drag event
+    * @param {int} iPageY the Y coordinate of the mousedown or drag event
+     */
+    setDragElPos: function(iPageX, iPageY) {
+        // the first time we do this, we are going to check to make sure
+        // the element has css positioning
+
+        var el = this.getDragEl();
+        this.alignElWithMouse(el, iPageX, iPageY);
+    },
+
+    /**
+     * Sets the element to the location of the mousedown or click event, 
+     * maintaining the cursor location relative to the location on the element 
+     * that was clicked.  Override this if you want to place the element in a 
+     * location other than where the cursor is.
+    * @method alignElWithMouse
+    * @param {HTMLElement} el the element to move
+    * @param {int} iPageX the X coordinate of the mousedown or drag event
+    * @param {int} iPageY the Y coordinate of the mousedown or drag event
+     */
+    alignElWithMouse: function(el, iPageX, iPageY) {
+        var oCoord = this.getTargetCoord(iPageX, iPageY);
+
+        if (!this.deltaSetXY) {
+            var aCoord = [oCoord.x, oCoord.y];
+            YAHOO.util.Dom.setXY(el, aCoord);
+
+            var newLeft = parseInt( YAHOO.util.Dom.getStyle(el, "left"), 10 );
+            var newTop  = parseInt( YAHOO.util.Dom.getStyle(el, "top" ), 10 );
+
+            this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ];
+        } else {
+            YAHOO.util.Dom.setStyle(el, "left", (oCoord.x + this.deltaSetXY[0]) + "px");
+            YAHOO.util.Dom.setStyle(el, "top",  (oCoord.y + this.deltaSetXY[1]) + "px");
+        }
+        
+        this.cachePosition(oCoord.x, oCoord.y);
+        var self = this;
+        setTimeout(function() {
+            self.autoScroll.call(self, oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth);
+        }, 0);
+    },
+
+    /**
+     * Saves the most recent position so that we can reset the constraints and
+     * tick marks on-demand.  We need to know this so that we can calculate the
+     * number of pixels the element is offset from its original position.
+    * @method cachePosition
+    * @param iPageX the current x position (optional, this just makes it so we
+     * don't have to look it up again)
+    * @param iPageY the current y position (optional, this just makes it so we
+     * don't have to look it up again)
+     */
+    cachePosition: function(iPageX, iPageY) {
+        if (iPageX) {
+            this.lastPageX = iPageX;
+            this.lastPageY = iPageY;
+        } else {
+            var aCoord = YAHOO.util.Dom.getXY(this.getEl());
+            this.lastPageX = aCoord[0];
+            this.lastPageY = aCoord[1];
+        }
+    },
+
+    /**
+     * Auto-scroll the window if the dragged object has been moved beyond the 
+     * visible window boundary.
+    * @method autoScroll
+    * @param {int} x the drag element's x position
+    * @param {int} y the drag element's y position
+    * @param {int} h the height of the drag element
+    * @param {int} w the width of the drag element
+    * @private
+     */
+    autoScroll: function(x, y, h, w) {
+
+        if (this.scroll) {
+            // The client height
+            var clientH = this.DDM.getClientHeight();
+
+            // The client width
+            var clientW = this.DDM.getClientWidth();
+
+            // The amt scrolled down
+            var st = this.DDM.getScrollTop();
+
+            // The amt scrolled right
+            var sl = this.DDM.getScrollLeft();
+
+            // Location of the bottom of the element
+            var bot = h + y;
+
+            // Location of the right of the element
+            var right = w + x;
+
+            // The distance from the cursor to the bottom of the visible area, 
+            // adjusted so that we don't scroll if the cursor is beyond the
+            // element drag constraints
+            var toBot = (clientH + st - y - this.deltaY);
+
+            // The distance from the cursor to the right of the visible area
+            var toRight = (clientW + sl - x - this.deltaX);
+
+
+            // How close to the edge the cursor must be before we scroll
+            // var thresh = (document.all) ? 100 : 40;
+            var thresh = 40;
+
+            // How many pixels to scroll per autoscroll op.  This helps to reduce 
+            // clunky scrolling. IE is more sensitive about this ... it needs this 
+            // value to be higher.
+            var scrAmt = (document.all) ? 80 : 30;
+
+            // Scroll down if we are near the bottom of the visible page and the 
+            // obj extends below the crease
+            if ( bot > clientH && toBot < thresh ) { 
+                window.scrollTo(sl, st + scrAmt); 
+            }
+
+            // Scroll up if the window is scrolled down and the top of the object
+            // goes above the top border
+            if ( y < st && st > 0 && y - st < thresh ) { 
+                window.scrollTo(sl, st - scrAmt); 
+            }
+
+            // Scroll right if the obj is beyond the right border and the cursor is
+            // near the border.
+            if ( right > clientW && toRight < thresh ) { 
+                window.scrollTo(sl + scrAmt, st); 
+            }
+
+            // Scroll left if the window has been scrolled to the right and the obj
+            // extends past the left border
+            if ( x < sl && sl > 0 && x - sl < thresh ) { 
+                window.scrollTo(sl - scrAmt, st);
+            }
+        }
+    },
+
+    /*
+     * Sets up config options specific to this class. Overrides
+     * YAHOO.util.DragDrop, but all versions of this method through the 
+     * inheritance chain are called
+     */
+    applyConfig: function() {
+        YAHOO.util.DD.superclass.applyConfig.call(this);
+        this.scroll = (this.config.scroll !== false);
+    },
+
+    /*
+     * Event that fires prior to the onMouseDown event.  Overrides 
+     * YAHOO.util.DragDrop.
+     */
+    b4MouseDown: function(e) {
+        this.setStartPosition();
+        // this.resetConstraints();
+        this.autoOffset(YAHOO.util.Event.getPageX(e), 
+                            YAHOO.util.Event.getPageY(e));
+    },
+
+    /*
+     * Event that fires prior to the onDrag event.  Overrides 
+     * YAHOO.util.DragDrop.
+     */
+    b4Drag: function(e) {
+        this.setDragElPos(YAHOO.util.Event.getPageX(e), 
+                            YAHOO.util.Event.getPageY(e));
+    },
+
+    toString: function() {
+        return ("DD " + this.id);
+    }
+
+    //////////////////////////////////////////////////////////////////////////
+    // Debugging ygDragDrop events that can be overridden
+    //////////////////////////////////////////////////////////////////////////
+    /*
+    startDrag: function(x, y) {
+    },
+
+    onDrag: function(e) {
+    },
+
+    onDragEnter: function(e, id) {
+    },
+
+    onDragOver: function(e, id) {
+    },
+
+    onDragOut: function(e, id) {
+    },
+
+    onDragDrop: function(e, id) {
+    },
+
+    endDrag: function(e) {
+    }
+
+    */
+
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+});
+/**
+ * A DragDrop implementation that inserts an empty, bordered div into
+ * the document that follows the cursor during drag operations.  At the time of
+ * the click, the frame div is resized to the dimensions of the linked html
+ * element, and moved to the exact location of the linked element.
+ *
+ * References to the "frame" element refer to the single proxy element that
+ * was created to be dragged in place of all DDProxy elements on the
+ * page.
+ *
+ * @class DDProxy
+ * @extends YAHOO.util.DD
+ * @constructor
+ * @param {String} id the id of the linked html element
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                Valid properties for DDProxy in addition to those in DragDrop: 
+ *                   resizeFrame, centerFrame, dragElId
+ */
+YAHOO.util.DDProxy = function(id, sGroup, config) {
+    if (id) {
+        this.init(id, sGroup, config);
+        this.initFrame(); 
+    }
+};
+
+/**
+ * The default drag frame div id
+ * @property YAHOO.util.DDProxy.dragElId
+ * @type String
+ * @static
+ */
+YAHOO.util.DDProxy.dragElId = "ygddfdiv";
+
+YAHOO.extend(YAHOO.util.DDProxy, YAHOO.util.DD, {
+
+    /**
+     * By default we resize the drag frame to be the same size as the element
+     * we want to drag (this is to get the frame effect).  We can turn it off
+     * if we want a different behavior.
+    * @property resizeFrame
+    * @type boolean
+     */
+    resizeFrame: true,
+
+    /**
+     * By default the frame is positioned exactly where the drag element is, so
+     * we use the cursor offset provided by YAHOO.util.DD.  Another option that works only if
+     * you do not have constraints on the obj is to have the drag frame centered
+     * around the cursor.  Set centerFrame to true for this effect.
+    * @property centerFrame
+    * @type boolean
+     */
+    centerFrame: false,
+
+    /**
+     * Creates the proxy element if it does not yet exist
+    * @method createFrame
+     */
+    createFrame: function() {
+        var self=this, body=document.body;
+
+        if (!body || !body.firstChild) {
+            setTimeout( function() { self.createFrame(); }, 50 );
+            return;
+        }
+
+        var div=this.getDragEl(), Dom=YAHOO.util.Dom;
+
+        if (!div) {
+            div    = document.createElement("div");
+            div.id = this.dragElId;
+            var s  = div.style;
+
+            s.position   = "absolute";
+            s.visibility = "hidden";
+            s.cursor     = "move";
+            s.border     = "2px solid #aaa";
+            s.zIndex     = 999;
+            s.height     = "25px";
+            s.width      = "25px";
+
+            var _data = document.createElement('div');
+            Dom.setStyle(_data, 'height', '100%');
+            Dom.setStyle(_data, 'width', '100%');
+            /**
+            * If the proxy element has no background-color, then it is considered to the "transparent" by Internet Explorer.
+            * Since it is "transparent" then the events pass through it to the iframe below.
+            * So creating a "fake" div inside the proxy element and giving it a background-color, then setting it to an
+            * opacity of 0, it appears to not be there, however IE still thinks that it is so the events never pass through.
+            */
+            Dom.setStyle(_data, 'background-color', '#ccc');
+            Dom.setStyle(_data, 'opacity', '0');
+            div.appendChild(_data);
+
+            // appendChild can blow up IE if invoked prior to the window load event
+            // while rendering a table.  It is possible there are other scenarios 
+            // that would cause this to happen as well.
+            body.insertBefore(div, body.firstChild);
+        }
+    },
+
+    /**
+     * Initialization for the drag frame element.  Must be called in the
+     * constructor of all subclasses
+    * @method initFrame
+     */
+    initFrame: function() {
+        this.createFrame();
+    },
+
+    applyConfig: function() {
+        YAHOO.util.DDProxy.superclass.applyConfig.call(this);
+
+        this.resizeFrame = (this.config.resizeFrame !== false);
+        this.centerFrame = (this.config.centerFrame);
+        this.setDragElId(this.config.dragElId || YAHOO.util.DDProxy.dragElId);
+    },
+
+    /**
+     * Resizes the drag frame to the dimensions of the clicked object, positions 
+     * it over the object, and finally displays it
+    * @method showFrame
+    * @param {int} iPageX X click position
+    * @param {int} iPageY Y click position
+    * @private
+     */
+    showFrame: function(iPageX, iPageY) {
+        var el = this.getEl();
+        var dragEl = this.getDragEl();
+        var s = dragEl.style;
+
+        this._resizeProxy();
+
+        if (this.centerFrame) {
+            this.setDelta( Math.round(parseInt(s.width,  10)/2), 
+                           Math.round(parseInt(s.height, 10)/2) );
+        }
+
+        this.setDragElPos(iPageX, iPageY);
+
+        YAHOO.util.Dom.setStyle(dragEl, "visibility", "visible"); 
+    },
+
+    /**
+     * The proxy is automatically resized to the dimensions of the linked
+     * element when a drag is initiated, unless resizeFrame is set to false
+    * @method _resizeProxy
+    * @private
+     */
+    _resizeProxy: function() {
+        if (this.resizeFrame) {
+            var DOM    = YAHOO.util.Dom;
+            var el     = this.getEl();
+            var dragEl = this.getDragEl();
+
+            var bt = parseInt( DOM.getStyle(dragEl, "borderTopWidth"    ), 10);
+            var br = parseInt( DOM.getStyle(dragEl, "borderRightWidth"  ), 10);
+            var bb = parseInt( DOM.getStyle(dragEl, "borderBottomWidth" ), 10);
+            var bl = parseInt( DOM.getStyle(dragEl, "borderLeftWidth"   ), 10);
+
+            if (isNaN(bt)) { bt = 0; }
+            if (isNaN(br)) { br = 0; }
+            if (isNaN(bb)) { bb = 0; }
+            if (isNaN(bl)) { bl = 0; }
+
+
+            var newWidth  = Math.max(0, el.offsetWidth  - br - bl);                                                                                           
+            var newHeight = Math.max(0, el.offsetHeight - bt - bb);
+
+
+            DOM.setStyle( dragEl, "width",  newWidth  + "px" );
+            DOM.setStyle( dragEl, "height", newHeight + "px" );
+        }
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4MouseDown: function(e) {
+        this.setStartPosition();
+        var x = YAHOO.util.Event.getPageX(e);
+        var y = YAHOO.util.Event.getPageY(e);
+        this.autoOffset(x, y);
+
+        // This causes the autoscroll code to kick off, which means autoscroll can
+        // happen prior to the check for a valid drag handle.
+        // this.setDragElPos(x, y);
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4StartDrag: function(x, y) {
+        // show the drag frame
+        this.showFrame(x, y);
+    },
+
+    // overrides YAHOO.util.DragDrop
+    b4EndDrag: function(e) {
+        YAHOO.util.Dom.setStyle(this.getDragEl(), "visibility", "hidden"); 
+    },
+
+    // overrides YAHOO.util.DragDrop
+    // By default we try to move the element to the last location of the frame.  
+    // This is so that the default behavior mirrors that of YAHOO.util.DD.  
+    endDrag: function(e) {
+        var DOM = YAHOO.util.Dom;
+        var lel = this.getEl();
+        var del = this.getDragEl();
+
+        // Show the drag frame briefly so we can get its position
+        // del.style.visibility = "";
+        DOM.setStyle(del, "visibility", ""); 
+
+        // Hide the linked element before the move to get around a Safari 
+        // rendering bug.
+        //lel.style.visibility = "hidden";
+        DOM.setStyle(lel, "visibility", "hidden"); 
+        YAHOO.util.DDM.moveToEl(lel, del);
+        //del.style.visibility = "hidden";
+        DOM.setStyle(del, "visibility", "hidden"); 
+        //lel.style.visibility = "";
+        DOM.setStyle(lel, "visibility", ""); 
+    },
+
+    toString: function() {
+        return ("DDProxy " + this.id);
+    }
+/**
+* @event mouseDownEvent
+* @description Provides access to the mousedown event. The mousedown does not always result in a drag operation.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4MouseDownEvent
+* @description Provides access to the mousedown event, before the mouseDownEvent gets fired. Returning false will cancel the drag.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event mouseUpEvent
+* @description Fired from inside DragDropMgr when the drag operation is finished.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4StartDragEvent
+* @description Fires before the startDragEvent, returning false will cancel the startDrag Event.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event startDragEvent
+* @description Occurs after a mouse down and the drag threshold has been met. The drag threshold default is either 3 pixels of mouse movement or 1 full second of holding the mousedown. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event b4EndDragEvent
+* @description Fires before the endDragEvent. Returning false will cancel.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event endDragEvent
+* @description Fires on the mouseup event after a drag has been initiated (startDrag fired).
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+/**
+* @event dragEvent
+* @description Occurs every mousemove event while dragging.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragEvent
+* @description Fires before the dragEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event invalidDropEvent
+* @description Fires when the dragged objects is dropped in a location that contains no drop targets.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOutEvent
+* @description Fires before the dragOutEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOutEvent
+* @description Fires when a dragged object is no longer over an object that had the onDragEnter fire. 
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragEnterEvent
+* @description Occurs when the dragged object first interacts with another targettable drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragOverEvent
+* @description Fires before the dragOverEvent.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragOverEvent
+* @description Fires every mousemove event while over a drag and drop object.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event b4DragDropEvent 
+* @description Fires before the dragDropEvent
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+/**
+* @event dragDropEvent
+* @description Fires when the dragged objects is dropped on another.
+* @type YAHOO.util.CustomEvent See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
+*/
+
+});
+/**
+ * A DragDrop implementation that does not move, but can be a drop 
+ * target.  You would get the same result by simply omitting implementation 
+ * for the event callbacks, but this way we reduce the processing cost of the 
+ * event listener and the callbacks.
+ * @class DDTarget
+ * @extends YAHOO.util.DragDrop 
+ * @constructor
+ * @param {String} id the id of the element that is a drop target
+ * @param {String} sGroup the group of related DragDrop objects
+ * @param {object} config an object containing configurable attributes
+ *                 Valid properties for DDTarget in addition to those in 
+ *                 DragDrop: 
+ *                    none
+ */
+YAHOO.util.DDTarget = function(id, sGroup, config) {
+    if (id) {
+        this.initTarget(id, sGroup, config);
+    }
+};
+
+// YAHOO.util.DDTarget.prototype = new YAHOO.util.DragDrop();
+YAHOO.extend(YAHOO.util.DDTarget, YAHOO.util.DragDrop, {
+    toString: function() {
+        return ("DDTarget " + this.id);
+    }
+});
+YAHOO.register("dragdrop", YAHOO.util.DragDropMgr, {version: "2.8.0r4", build: "2449"});

Property changes on: tags/2.8.3/wb/include/yui/dragdrop/dragdrop.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dragdrop/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/dragdrop/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dragdrop/index.php	(revision 1610)
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ *
+ * @category        framework
+ * @package         yui
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/dragdrop/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dragdrop/dragdrop-min.js
===================================================================
--- tags/2.8.3/wb/include/yui/dragdrop/dragdrop-min.js	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dragdrop/dragdrop-min.js	(revision 1610)
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.8.0r4
+*/
+if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
+}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
+}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
+}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.8.0r4",build:"2449"});
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/dragdrop/dragdrop-min.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/dragdrop/README
===================================================================
--- tags/2.8.3/wb/include/yui/dragdrop/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/dragdrop/README	(revision 1610)
@@ -0,0 +1,162 @@
+Drag and Drop Release Notes
+
+2.4.1
+No change
+
+2.4.0
+  * Added configuration option called "dragOnly". If dragOnly is set to true,
+    all event in the fireEvents method will not fire. These events are:
+        onInvalidDrop
+        b4DragOut & onDragOut
+        onDragEnter
+        b4DragOver & onDragOver
+        b4DragDrop & onDragDrop
+    This config option should be used to drag elements that have no need for
+        drop interaction. They are elements that just need to move.
+
+2.3.1
+  * No change
+
+2.3.0
+  * YAHOO.util.DragDropMgr.stopDrag is now public, and can be used to cancel
+    a drag in progress.  An optional "silent" flag was added to skip the
+    onMouseUp and endDrag functions when needed (eliminating the need to
+    supply mouseup page coordinates to these functions).
+  * DDProxy: the position of the proxy is not set before the drag is confirmed,
+    preventing auto-scroll from distrupting the user experience.
+  * Modified the default proxy so that IE properly registers the proxy as
+    the event target during the drag.
+  * If a dd instance is created using a dom reference rather than an id, that
+    reference is stored and used throughout making it possible to control
+    instances outside the current window.
+  * The document mousemove listener no longer returns true.
+
+2.2.2
+  * No change
+
+2.2.1
+
+  * Added YAHOO.util.DragDropMgr.interactionInfo, which is
+    a repository of interaction information accumulated during
+    the current event loop result, and accessible from the
+    handlers for the events.
+  * The region for the dragged element is now cached while
+    processing the drag and drop events
+  * List example supports moving an item to an empty list
+  * Fixed missing html tags in the examples
+  * The debug version now works when included before the logger is included.
+
+2.2.0
+
+  * onMouseDown event is executed before element positions are calculated
+  * refreshCache refreshes everything if groups array is not provided
+  * setX/setYConstraint doesn't fail when presented ints cast as strings
+
+0.12.2
+
+  * No change
+
+0.12.1
+
+  * Added a STRICT_INTERSECT drag and drop interaction mode.  This alters the
+    behavior of DDM::getBestMatch.  INTERSECT mode first tests the cursor
+    location, and if it is over the target that target wins, otherwise it
+    tests the overlap of the elements.  STRICT_INTERSECT mode tests only 
+    the overlap, the largest overlap wins.
+
+  * getBestMatch will work for targeted elements that have no overlap.
+
+0.12.0
+
+   * The logic to determine if a drag should be initiated has been isolated
+     to the clickValidator method.  This method can be overridden to provide
+     custom valdiation logic.  For example, it is possible to specify hotspots
+     of any dimension or shape.  The provided example shows how to make only
+     a circular region in the middle of the element initiate a drag.
+
+   * Added a new drag and drop event: onInvalidDrop.  This is executed when
+     the dragged element in dropped in a location without a target.  Previously
+     this condition could only detected by implementing handlers for three 
+     other events.
+
+   * Now accepts an element reference in lieu of an id.  Ids will
+     be generated if the element does not have one.
+
+   * Fixed horizontal autoscroll when scrollTop is zero.
+
+   * Added hasOuterHandles property to bypass the isOverTarget check in the
+     mousedown validation routine.  Fixes setOuterHandleElId.
+
+0.11.4
+
+   * YAHOO.util.DragDropMgr.swapNode now handles adjacent nodes properly
+   
+   * Fixed missing variable declarations
+
+0.11.3
+ 
+   * Fixed a JavaScript error that would be generated when trying to implement
+     DDProxy using the default settings and a tiny element.
+
+   * Fixed an error that resulted when constraints were applied to DragDrop 
+     instances.
+
+0.11.2
+
+   * Drag and drop will no longer interfere with selecting text on elements
+     that are not involved in drag and drop.
+
+   * The shared drag and drop proxy element now resizes correctly when autoResize
+     is enabled.
+
+0.11.1
+
+   * Fixes an issue where the setXY cache could get out of sync if the element's
+     offsetParent is changed during onDragDrop.
+
+0.11.0
+
+   * The Dom.util.setXY calculation for the initial placement of the dragged
+     element is cached during the drag, enhancing the drag performance.
+
+   * DDProxy no longer enforces having a single proxy element for all instances.
+     dragElId can be set in the config object in the constructor.  If the
+     element already exists it will use that element, otherwise a new one will
+     be created with that id.
+
+   * DDProxy->borderWidth has been removed. The value is calculated on the fly
+     instead.
+
+   * Added DragDrop->clearTicks and DragDrop->clearConstraints
+
+   * All drag and drop constructors now have an additional, optional parameter
+     call "config".  It is an object that can contain properties for a
+     number of configuration settings.
+
+   * Drag and drop will not be disabled for elements that cannot have their
+     location determined.
+
+   * isLegalTarget won't return dd objects that are not targetable.
+
+   * Added DragDrop->removeFromGroup.
+
+   * Constraints are now applied properly when determining which drag and drop
+     events should fire.
+
+
+0.10.0
+
+   * Improved the performance when in intersect mode
+
+   * It was possible for the drag and drop initialization to be skipped
+     for very slow loading pages.  This was fixed.
+
+   * New methods to exclude regions within your drag and drop element: 
+     addInvalidHandleId(), addInvalidHandleClass()
+
+   * Added an onAvailable handler that is executed after the initial state is set.
+
+   * Drag and drop is more forgiving when the implementer attempts to create the
+     instance prior to the element being in the document, but after the window
+     load event has fired.
+

Property changes on: tags/2.8.3/wb/include/yui/dragdrop/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/index.php
===================================================================
--- tags/2.8.3/wb/include/yui/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/yui/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/yui/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/License.txt
===================================================================
--- tags/2.8.3/wb/include/yui/License.txt	(nonexistent)
+++ tags/2.8.3/wb/include/yui/License.txt	(revision 1610)
@@ -0,0 +1,22 @@
+The actual License of Yahoo YUI
+are here :
+http://developer.yahoo.com/yui/license.html
+
+Software License Agreement (BSD License)
+Copyright (c) 2008, Yahoo! Inc.
+All rights reserved.
+Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the
+following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Yahoo! Inc.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Sources of Intellectual Property Included in the YUI Library
+Where not otherwise indicated, all YUI content is authored by Yahoo! engineers and consists of Yahoo!-owned intellectual property. YUI is issued by Yahoo! under the BSD license above. In some specific instances, YUI will incorporate work done by developers outside of Yahoo! with their express permission. In these instances, copyright is retained by the author; however, in the context of the YUI library it is issued under the BSD license.
+
+Below is the explicit list of external (non-Yahoo) sources of intellectual property in YUI:
+
+Douglas Crockford's JSON parsing and stringifying methods: In the JSON Utility, Douglas Crockford's JSON parsing and stringifying methods are adapted from work published at JSON.org. The adapted work is in the public domain.
+Robert Penner's animation-easing algorithms: In the Animation Utility, YUI makes use of Robert Penner's algorithms for easing.

Property changes on: tags/2.8.3/wb/include/yui/License.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/yui/README
===================================================================
--- tags/2.8.3/wb/include/yui/README	(nonexistent)
+++ tags/2.8.3/wb/include/yui/README	(revision 1610)
@@ -0,0 +1,257 @@
+YUI Library Release Notes
+
+*** version 2.4.1 ***
+
+This release fixes a IE memory leak when attaching listeners
+to iframes/windows, as well as a few example updates.  Of the 
+YUI components, only event has changed since 2.4.0.
+
+*** version 2.4.0 ***
+
+This release introduces five new components into YUI:
+
+   * Selector
+   * Charts Widget
+   * Get Utility
+   * Profiler
+   * JSON Utility
+   
+These new components are introduced as "beta", with the exception of the Charts
+Widget which is released as an experimental component.  Please see the YUI FAQ
+on the definition of beta and experimental at:
+http://developer.yahoo.com/yui/articles/faq/#beta
+
+In addition to new components, you'll find updates and bug fixes throughout the
+library.
+
+*** version 2.3.1 ***
+
+This update contains general fixes to the YUI library.  Please see the README
+file for each component in the build directory for specific updates since
+version 2.3.0.
+
+*** version 2.3.0 ***
+
+This release introduces six new components into YUI:
+
+   * Base CSS
+   * Color Picker Control
+   * ImageLoader Utility
+   * Rich Text Editor
+   * YUI Loader Utility
+   * YUI Test Utility
+   
+These new components are introduced as "beta", with the exception of ImageLoader
+Utility which is released as an experimental component.  Please see the YUI 
+FAQ on the definition of beta and experimental at:
+http://developer.yahoo.com/yui/articles/faq/#beta
+
+In addition to new components, you'll find updates and bug fixes throughout the
+library.
+
+*** version 2.2.2 ***
+
+This update contains general fixes to the YUI library.  Please see the
+README file for each component in the build directory for specific updates since
+version 2.2.1.
+
+*** version 2.2.1 ***
+
+This update contains general fixes to the YUI library.  Please see the
+README file for each component in the build directory for specific updates since
+version 2.2.0.
+
+*** version 2.2.0 ***
+
+This release synchronizes the SourceForge version with Yahoo!'s version of YUI
+-- version number 2.2.0.  Please see the following blog article for information
+on this specific version increment at:
+http://www.yuiblog.com/blog/2007/02/20/yui-220-released
+
+The following new components are introduced with this release:
+
+   * Button
+   * DataTable
+   * Browser History Manager
+
+   The following components are now available as utilities:
+
+   * Element
+   * DataSource
+
+These new components are introduced as "beta", with the exception of Browser
+History Manager as an experimental component.  Please see the YUI FAQ on the
+definition of beta and experimental at:
+http://developer.yahoo.com/yui/articles/faq/#beta
+
+* CSS customizations *
+Calendar, Container, and Menu have been revised to allow image customizations
+through their respective CSS files.  Please refer to each component's README to
+see the full details on affected properties.
+
+Additional details for fixes and updates can be found in the README files for
+each updated component.  All YUI API cheatsheets have been updated for the
+current version and can be found at: yui/docs/assets/cheatsheets.zip.
+
+*** version 0.12.2 ***
+
+This update contains general fixes to the YUI library.  Please see the
+README file for each component in the build directory for specific updates since
+version 0.12.1.  As part of the 0.12.2 update, a number of corrections have been
+made to functional examples that were configured incorrectly in 0.12.1.
+
+*** version 0.12.1 ***
+
+This update contains general fixes to the YUI library.  Please see the
+README file for each component in the build directory for specific updates since
+version 0.12.0.
+
+Beginning with this release, all YUI minification will be performed with JSMin(
+http://www.crockford.com/javascript/jsmin.html).  Line breaks will be preserved.
+
+*** version 0.12.0 ***
+
+This version introduces the Tabview widget as well as general fixes to the YUI
+library.  Additional details can be found in the README files for each updated
+component.  All YUI API cheatsheets have been updated for the current version
+and can be found at: yui/docs/assets/cheatsheets.zip.
+
+* documentation *
+The YUI API documentation format is revised with this release.  This new
+format -- now a flat file structure under yui/docs/ -- implements the YUI
+AutoComplete widget on the main landing page to allow keyword searching of YUI.
+It also contains the full API documentation for all YUI components along with
+the following categories of data for each component(if applicable):
+
+* Inheritance hierarchy for extensions and subclasses.
+* YUI dependencies
+* Properties and methods
+* Events
+* Configuration attributes.
+
+* concatenated files *
+For convenience, three additional, minified variations of YUI are now available
+for your use:
+
+* reset-fonts-grids.css
+* yahoo-dom-event.js
+* utilities.js
+
+* API changes *
+There are interface changes to the Calendar widget.  Please see the 0.12.0
+Calendar upgrade guide at http:// developer.yahoo.com/yui/calendar/upgrade.html
+to see if this update affects your Calendar implementation and instructions on
+upgrading to version 0.12.0.
+
+
+*** version 0.11.4 ***
+
+This update contains some priority bug fixes to the following components:
+
+* Yahoo
+* Container
+* Drag and Drop
+* Event
+
+Additional details can be found in the README files for each updated component.
+
+*** version 0.11.3 ***
+
+This update contains general fixes to the YUI library.  Please see the
+README file for each component in the build directory for updates and fixes
+since version 0.11.2.
+
+*** version 0.11.2 ***
+
+This update contains a high-priority fix to Drag and Drop that prevents text
+selection.  Additional details can be found in the README file for:
+
+* Drag and Drop
+
+*** version 0.11.1 ***
+
+Release 0.11.1 addresses some high-priority bugs reported in the recently
+released version 0.11.0. Additional details can be found in the README files for
+each updated component:
+
+* Animation
+* Dom
+* Drag and Drop
+* Connection Manager
+* Container
+
+*** version 0.11.0 ***
+
+This version introduces the Logger widget.  The YUI cheatsheets for version
+0.11.0 and 0.10.0 are also included in this distribution under docs/assets.
+
+Please see the README file for each component in the build directory for
+updates and fixes since version 0.10.0.
+
+*** version 0.10.0 ***
+
+In this release, the directory structure has been modified to provide more
+component organization.  This is the new format:
+
+yui/
+  |
+  -- build/
+  | |
+  | -- dom/
+  | |
+  | | -- assets/
+  | |
+  | | -- dom.js
+  | |
+  -- docs/
+  | |
+  | -- dom/
+  | |
+  -- examples/
+  | |
+  | -- dom/
+  | |
+  | | -- img/
+
+Notice there are three immediate directories under the
+root YUI.  They are:
+
+*build/*
+This directory contains the source files for each YUI component, and each
+component is presented as a sub-directory under build/.  Notice that there are
+generally two source files: component.js and component-min.js.  The "component"
+source is the raw, commented build and "component-min" is the minified version
+of the same file with comments and whitespace removed.  With some components,
+there is an assets sub-directory.  CSS and image dependencies for each
+component are stored in its assets sub-directory.
+
+Note: If a component makes use of images, the image source path in the
+component's CSS file will point to Akamai.  The physical images are also
+available in the assets/ directory for local availability.  Please modify the
+CSS image references if you wish to use your own image assets.
+
+*docs/*
+This directory contains the jsdoc-generated API reference for every YUI
+component.  Each component is presented as a sub-directory under docs/.
+
+*examples/*
+This directory contains functional examples for each component in the YUI
+Library.  The examples are not part of the formal distribution; rather,
+they provide demonstrations of each component in use.  Each example uses YUI
+Library source files from the build/ directory, while all example-specific
+dependencies are stored in sub-directories (e.g. examples/dom/img).
+Some components, including the AutoComplete Control and Connection Manager,
+make use of PHP to implement certain examples.
+
+For example:
+In yui/examples/dom, the dom.js source file and all YUI .js dependencies
+are drawn from yui/build/ directories.  All other example-specific sources are
+stored as sub-directories: yui/examples/dom/css and yui/examples/dom/img.
+
+Each functional example is also available and functional on
+developer.yahoo.com/yui/.  They reproduced here as part of the distribution
+for your convenience.
+
+
+
+

Property changes on: tags/2.8.3/wb/include/yui/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/phplib/template.inc
===================================================================
--- tags/2.8.3/wb/include/phplib/template.inc	(nonexistent)
+++ tags/2.8.3/wb/include/phplib/template.inc	(revision 1610)
@@ -0,0 +1,1028 @@
+<?php
+
+// $Id$
+
+/*
+ * Session Management for PHP3
+ *
+ * (C) Copyright 1999-2000 NetUSE GmbH
+ *                    Kristian Koehntopp
+ *
+ * $Id$
+ *
+ */
+
+/*
+ * Change log since version 7.2c
+ *
+ * Bug fixes to version 7.2c compiled by Richard Archer <rha@juggernaut.com.au>:
+ * (credits given to first person to post a diff to phplib mailing list)
+ *
+ * Normalised all comments and whitespace (rha)
+ * replaced "$handle" with "$varname" and "$h" with "$v" throughout (from phplib-devel)
+ * added braces around all one-line if statements in: get_undefined, loadfile and halt (rha)
+ * set_var was missing two sets of braces (rha)
+ * added a couple of "return true" statements (rha)
+ * set_unknowns had "keep" as default instead of "remove" (from phplib-devel)
+ * set_file failed to check for empty strings if passed an array of filenames (phplib-devel)
+ * remove @ from call to preg_replace in subst -- report errors if there are any (NickM)
+ * set_block unnecessarily required a newline in the template file (Marc Tardif)
+ * pparse now calls this->finish to replace undefined vars (Layne Weathers)
+ * get_var now checks for unset varnames (NickM & rha)
+ * get_var when passed an array used the array key instead of the value (rha)
+ * get_vars now uses a call to get_var rather than this->varvals to prevent undefined var warning (rha)
+ * in finish, the replacement string referenced an unset variable (rha)
+ * loadfile would try to load a file if the varval had been set to "" (rha)
+ * in get_undefined, only match non-whitespace in variable tags as in finish (Layne Weathers & rha)
+ * more elegant fix to the problem of subst stripping '$n', '\n' and '\\' strings (rha)
+ * parse uses get_var to obtain return value (Jordi via SF)
+ * set_block reports an error if the block could not be extracted (rha)
+ * filename is now windows-pathname aware (krabu @ SF)
+ *
+ *
+ * Changes in functionality which go beyond bug fixes:
+ *
+ * added ability for filename comments to be output (from phplib-users layne)
+ * changed debug handling so set, get and internals can be tracked separately (rha)
+ * added debug statements throughout to track most function calls (rha)
+ * debug output contained raw HTML -- is now escaped with htmlentities (rha)
+ * Alter regex in set_block to remove more whitespace around BEGIN/END tags to improve HTML layout (rha)
+ * Add "append" option to set_var, works just like append in parse (dale at linuxwebpro.com, rha)
+ * Altered parse so that append is honored if passed an array (Brian)
+ * Converted comments and documentation to phpdoc style (rha)
+ * Added clear_var to set the value of variables to "" (rha)
+ * Added unset_var to usset variables (rha)
+ *
+ */
+
+/**
+ * The template class allows you to keep your HTML code in some external files
+ * which are completely free of PHP code, but contain replacement fields.
+ * The class provides you with functions which can fill in the replacement fields
+ * with arbitrary strings. These strings can become very large, e.g. entire tables.
+ *
+ * Note: If you think that this is like FastTemplates, read carefully. It isn't.
+ *
+ * Fixes
+ * Ticket #812 depricated Fix 2009/11/25
+ */
+
+class Template
+{
+ /**
+  * Serialization helper, the name of this class.
+  *
+ * @var       string
+ * @access    public
+  */
+  var $classname = "Template";
+
+ /**
+  * Determines how much debugging output Template will produce.
+  * This is a bitwise mask of available debug levels:
+  * 0 = no debugging
+  * 1 = debug variable assignments
+  * 2 = debug calls to get variable
+  * 4 = debug internals (outputs all function calls with parameters).
+  *
+  * Note: setting $this->debug = true will enable debugging of variable
+  * assignments only which is the same behaviour as versions up to release 7.2d.
+  *
+ * @var       int
+ * @access    public
+  */
+  var $debug    = false;
+
+ /**
+  * Determines whether Template outputs filename comments.
+  * false = no filename outputs
+  * true = HTML comments (e.g. <!-- START FILE $filename -->) placed in output
+  *
+ * @var       int
+ * @access    public
+  */
+  var $filename_comments = false;
+
+ /**
+  * Determines the regular expression used to find unknown variable tags.
+  * "loose"  = traditional match all curly braces with no whitespace between
+  * "strict" = adopts PHP's variable naming rules
+  *              ("loose" has a nasty habit of deleting JavaScript RegEx components)
+  *              (should future major version releases of PHPLib default this "strict"?)
+  *
+ * @var       string
+ * @access    public
+  */
+  var $unknown_regexp = "loose";
+
+ /**
+  * The base directory from which template files are loaded.
+  *
+ * @var       string
+ * @access    private
+ * @see       set_root
+  */
+  var $root     = ".";
+
+ /**
+  * A hash of strings forming a translation table which translates variable names
+  * into names of files containing the variable content.
+  * $file[varname] = "filename";
+  *
+ * @var       array
+ * @access    private
+ * @see       set_file
+  */
+  var $file     = array();
+
+ /**
+  * A hash of strings forming a translation table which translates variable names
+  * into regular expressions for themselves.
+  * $varkeys[varname] = "/varname/"
+  *
+ * @var       array
+ * @access    private
+ * @see       set_var
+  */
+  var $varkeys  = array();
+
+ /**
+  * A hash of strings forming a translation table which translates variable names
+  * into values for their respective varkeys.
+  * $varvals[varname] = "value"
+  *
+ * @var       array
+ * @access    private
+ * @see       set_var
+  */
+  var $varvals  = array();
+
+ /**
+  * Determines how to output variable tags with no assigned value in templates.
+  *
+ * @var       string
+ * @access    private
+ * @see       set_unknowns
+  */
+  var $unknowns = "remove";
+
+ /**
+  * Determines how Template handles error conditions.
+  * "yes"      = the error is reported, then execution is halted
+  * "report"   = the error is reported, then execution continues by returning "false"
+  * "no"       = errors are silently ignored, and execution resumes reporting "false"
+  *
+ * @var       string
+ * @access    public
+ * @see       halt
+  */
+  var $halt_on_error  = "yes";
+
+ /**
+  * The last error message is retained in this variable.
+  *
+ * @var       string
+ * @access    public
+ * @see       halt
+  */
+  var $last_error     = "";
+
+ /******************************************************************************
+  * Class constructor. May be called with two optional parameters.
+  * The first parameter sets the template directory the second parameter
+  * sets the policy regarding handling of unknown variables.
+  *
+  * usage: Template([string $root = "."], [string $unknowns = "remove"])
+  *
+ * @param     $root        path to template directory
+ * @param     $string      what to do with undefined variables
+ * @see       set_root
+ * @see       set_unknowns
+ * @access    public
+ * @return    void
+  */
+  function Template($root = ".", $unknowns = "remove") {
+    if ($this->debug & 4) {
+      echo "<p><b>Template:</b> root = $root, unknowns = $unknowns</p>\n";
+    }
+    $this->set_root($root);
+    $this->set_unknowns($unknowns);
+  }
+
+
+ /******************************************************************************
+  * Checks that $root is a valid directory and if so sets this directory as the
+  * base directory from which templates are loaded by storing the value in
+  * $this->root. Relative filenames are prepended with the path in $this->root.
+  *
+  * Returns true on success, false on error.
+  *
+  * usage: set_root(string $root)
+  *
+ * @param     $root         string containing new template directory
+ * @see       root
+ * @access    public
+ * @return    boolean
+  */
+  function set_root($root) {
+    if(preg_match ('/\/$/', $root)) {
+      $root = substr($root, 0, -1);
+    }
+    if ($this->debug & 4) {
+      echo "<p><b>set_root:</b> root = $root</p>\n";
+    }
+    if (!is_dir($root)) {
+      $this->halt("set_root: $root is not a directory.");
+      return false;
+    }
+
+    $this->root = $root;
+    return true;
+  }
+
+
+ /******************************************************************************
+  * Sets the policy for dealing with unresolved variable names.
+  *
+  * unknowns defines what to do with undefined template variables
+  * "remove"   = remove undefined variables
+  * "comment"  = replace undefined variables with comments
+  * "keep"     = keep undefined variables
+  *
+  * Note: "comment" can cause unexpected results when the variable tag is embedded
+  * inside an HTML tag, for example a tag which is expected to be replaced with a URL.
+  *
+  * usage: set_unknowns(string $unknowns)
+  *
+ * @param     $unknowns         new value for unknowns
+ * @see       unknowns
+ * @access    public
+ * @return    void
+  */
+  function set_unknowns($unknowns = "remove") {
+    if ($this->debug & 4) {
+      echo "<p><b>unknowns:</b> unknowns = $unknowns</p>\n";
+    }
+    $this->unknowns = $unknowns;
+  }
+
+
+ /******************************************************************************
+  * Defines a filename for the initial value of a variable.
+  *
+  * It may be passed either a varname and a file name as two strings or
+  * a hash of strings with the key being the varname and the value
+  * being the file name.
+  *
+  * The new mappings are stored in the array $this->file.
+  * The files are not loaded yet, but only when needed.
+  *
+  * Returns true on success, false on error.
+  *
+  * usage: set_file(array $filelist = (string $varname => string $filename))
+  * or
+  * usage: set_file(string $varname, string $filename)
+  *
+ * @param     $varname      either a string containing a varname or a hash of varname/file name pairs.
+ * @param     $filename     if varname is a string this is the filename otherwise filename is not required
+ * @access    public
+ * @return    boolean
+  */
+  function set_file($varname, $filename = "") {
+    if (!is_array($varname)) {
+      if ($this->debug & 4) {
+        echo "<p><b>set_file:</b> (with scalar) varname = $varname, filename = $filename</p>\n";
+      }
+      if ($filename == "") {
+        $this->halt("set_file: For varname $varname filename is empty.");
+        return false;
+      }
+      $this->file[$varname] = $this->filename($filename);
+    } else {
+      reset($varname);
+      while (list($v, $f) = each($varname)) {
+        if ($this->debug & 4) {
+          echo "<p><b>set_file:</b> (with array) varname = $v, filename = $f</p>\n";
+        }
+        if ($f == "") {
+          $this->halt("set_file: For varname $v filename is empty.");
+          return false;
+        }
+        $this->file[$v] = $this->filename($f);
+      }
+    }
+    return true;
+  }
+
+
+ /******************************************************************************
+  * A variable $parent may contain a variable block defined by:
+  * &lt;!-- BEGIN $varname --&gt; content &lt;!-- END $varname --&gt;. This function removes
+  * that block from $parent and replaces it with a variable reference named $name.
+  * The block is inserted into the varkeys and varvals hashes. If $name is
+  * omitted, it is assumed to be the same as $varname.
+  *
+  * Blocks may be nested but care must be taken to extract the blocks in order
+  * from the innermost block to the outermost block.
+  *
+  * Returns true on success, false on error.
+  *
+  * usage: set_block(string $parent, string $varname, [string $name = ""])
+  *
+ * @param     $parent       a string containing the name of the parent variable
+ * @param     $varname      a string containing the name of the block to be extracted
+ * @param     $name         the name of the variable in which to store the block
+ * @access    public
+ * @return    boolean
+  */
+  function set_block($parent, $varname, $name = "") {
+    if ($this->debug & 4) {
+      echo "<p><b>set_block:</b> parent = $parent, varname = $varname, name = $name</p>\n";
+    }
+    if (!$this->loadfile($parent)) {
+      $this->halt("set_block: unable to load $parent.");
+      return false;
+    }
+    if ($name == "") {
+      $name = $varname;
+    }
+
+    $str = $this->get_var($parent);
+    $reg = "/[ \t]*<!--\s+BEGIN $varname\s+-->\s*?\n?(\s*.*?\n?)\s*<!--\s+END $varname\s+-->\s*?\n?/sm";
+    preg_match_all($reg, $str, $m);
+/* workaround to avoid problems with some WB files/modules (e.g. massmail)
+    if (!isset($m[1][0])) {
+      $this->halt("set_block: unable to set block $varname.");
+      return false;
+    }
+*/
+    $str = preg_replace($reg, "{" . $name . "}", $str);
+    @$this->set_var($varname, $m[1][0]);
+    $this->set_var($parent, $str);
+    return true;
+  }
+
+
+ /******************************************************************************
+  * This functions sets the value of a variable.
+  *
+  * It may be called with either a varname and a value as two strings or an
+  * an associative array with the key being the varname and the value being
+  * the new variable value.
+  *
+  * The function inserts the new value of the variable into the $varkeys and
+  * $varvals hashes. It is not necessary for a variable to exist in these hashes
+  * before calling this function.
+  *
+  * An optional third parameter allows the value for each varname to be appended
+  * to the existing variable instead of replacing it. The default is to replace.
+  * This feature was introduced after the 7.2d release.
+  *
+  *
+  * usage: set_var(string $varname, [string $value = ""], [boolean $append = false])
+  * or
+  * usage: set_var(array $varname = (string $varname => string $value), [mixed $dummy_var], [boolean $append = false])
+  *
+ * @param     $varname      either a string containing a varname or a hash of varname/value pairs.
+ * @param     $value        if $varname is a string this contains the new value for the variable otherwise this parameter is ignored
+ * @param     $append       if true, the value is appended to the variable's existing value
+ * @access    public
+ * @return    void
+  */
+  function set_var($varname, $value = "", $append = false) {
+    if (!is_array($varname)) {
+      if (!empty($varname)) {
+        if ($this->debug & 1) {
+          printf("<b>set_var:</b> (with scalar) <b>%s</b> = '%s'<br>\n", $varname, htmlentities($value));
+        }
+        $this->varkeys[$varname] = "/".$this->varname($varname)."/";
+        if ($append && isset($this->varvals[$varname])) {
+          $this->varvals[$varname] .= $value;
+        } else {
+          $this->varvals[$varname] = $value;
+        }
+      }
+    } else {
+      reset($varname);
+      while (list($k, $v) = each($varname)) {
+        if (!empty($k)) {
+          if ($this->debug & 1) {
+            printf("<b>set_var:</b> (with array) <b>%s</b> = '%s'<br>\n", $k, htmlentities($v));
+          }
+          $this->varkeys[$k] = "/".$this->varname($k)."/";
+          if ($append && isset($this->varvals[$k])) {
+            $this->varvals[$k] .= $v;
+          } else {
+            $this->varvals[$k] = $v;
+          }
+        }
+      }
+    }
+  }
+
+
+ /******************************************************************************
+  * This functions clears the value of a variable.
+  *
+  * It may be called with either a varname as a string or an array with the 
+  * values being the varnames to be cleared.
+  *
+  * The function sets the value of the variable in the $varkeys and $varvals 
+  * hashes to "". It is not necessary for a variable to exist in these hashes
+  * before calling this function.
+  *
+  *
+  * usage: clear_var(string $varname)
+  * or
+  * usage: clear_var(array $varname = (string $varname))
+  *
+ * @param     $varname      either a string containing a varname or an array of varnames.
+ * @access    public
+ * @return    void
+  */
+  function clear_var($varname) {
+    if (!is_array($varname)) {
+      if (!empty($varname)) {
+        if ($this->debug & 1) {
+          printf("<b>clear_var:</b> (with scalar) <b>%s</b><br>\n", $varname);
+        }
+        $this->set_var($varname, "");
+      }
+    } else {
+      reset($varname);
+      while (list($k, $v) = each($varname)) {
+        if (!empty($v)) {
+          if ($this->debug & 1) {
+            printf("<b>clear_var:</b> (with array) <b>%s</b><br>\n", $v);
+          }
+          $this->set_var($v, "");
+        }
+      }
+    }
+  }
+
+
+ /******************************************************************************
+  * This functions unsets a variable completely.
+  *
+  * It may be called with either a varname as a string or an array with the 
+  * values being the varnames to be cleared.
+  *
+  * The function removes the variable from the $varkeys and $varvals hashes.
+  * It is not necessary for a variable to exist in these hashes before calling
+  * this function.
+  *
+  *
+  * usage: unset_var(string $varname)
+  * or
+  * usage: unset_var(array $varname = (string $varname))
+  *
+ * @param     $varname      either a string containing a varname or an array of varnames.
+ * @access    public
+ * @return    void
+  */
+  function unset_var($varname) {
+    if (!is_array($varname)) {
+      if (!empty($varname)) {
+        if ($this->debug & 1) {
+          printf("<b>unset_var:</b> (with scalar) <b>%s</b><br>\n", $varname);
+        }
+        unset($this->varkeys[$varname]);
+        unset($this->varvals[$varname]);
+      }
+    } else {
+      reset($varname);
+      while (list($k, $v) = each($varname)) {
+        if (!empty($v)) {
+          if ($this->debug & 1) {
+            printf("<b>unset_var:</b> (with array) <b>%s</b><br>\n", $v);
+          }
+          unset($this->varkeys[$v]);
+          unset($this->varvals[$v]);
+        }
+      }
+    }
+  }
+
+
+ /******************************************************************************
+  * This function fills in all the variables contained within the variable named
+  * $varname. The resulting value is returned as the function result and the
+  * original value of the variable varname is not changed. The resulting string
+  * is not "finished", that is, the unresolved variable name policy has not been
+  * applied yet.
+  *
+  * Returns: the value of the variable $varname with all variables substituted.
+  *
+  * usage: subst(string $varname)
+  *
+ * @param     $varname      the name of the variable within which variables are to be substituted
+ * @access    public
+ * @return    string
+  */
+  function subst($varname) {
+    $varvals_quoted = array();
+    if ($this->debug & 4) {
+      echo "<p><b>subst:</b> varname = $varname</p>\n";
+    }
+    if (!$this->loadfile($varname)) {
+      $this->halt("subst: unable to load $varname.");
+      return false;
+    }
+
+    // quote the replacement strings to prevent bogus stripping of special chars
+    reset($this->varvals);
+    while (list($k, $v) = each($this->varvals)) {
+      $varvals_quoted[$k] = preg_replace(array('/\\\\/', '/\$/'), array('\\\\\\\\', '\\\\$'), $v);
+    }
+
+    $str = $this->get_var($varname);
+    $str = preg_replace($this->varkeys, $varvals_quoted, $str);
+    return $str;
+  }
+
+
+ /******************************************************************************
+  * This is shorthand for print $this->subst($varname). See subst for further
+  * details.
+  *
+  * Returns: always returns false.
+  *
+  * usage: psubst(string $varname)
+  *
+ * @param     $varname      the name of the variable within which variables are to be substituted
+ * @access    public
+ * @return    false
+ * @see       subst
+  */
+  function psubst($varname) {
+    if ($this->debug & 4) {
+      echo "<p><b>psubst:</b> varname = $varname</p>\n";
+    }
+    print $this->subst($varname);
+
+    return false;
+  }
+
+
+ /******************************************************************************
+  * The function substitutes the values of all defined variables in the variable
+  * named $varname and stores or appends the result in the variable named $target.
+  *
+  * It may be called with either a target and a varname as two strings or a
+  * target as a string and an array of variable names in varname.
+  *
+  * The function inserts the new value of the variable into the $varkeys and
+  * $varvals hashes. It is not necessary for a variable to exist in these hashes
+  * before calling this function.
+  *
+  * An optional third parameter allows the value for each varname to be appended
+  * to the existing target variable instead of replacing it. The default is to
+  * replace.
+  *
+  * If $target and $varname are both strings, the substituted value of the
+  * variable $varname is inserted into or appended to $target.
+  *
+  * If $handle is an array of variable names the variables named by $handle are
+  * sequentially substituted and the result of each substitution step is
+  * inserted into or appended to in $target. The resulting substitution is
+  * available in the variable named by $target, as is each intermediate step
+  * for the next $varname in sequence. Note that while it is possible, it
+  * is only rarely desirable to call this function with an array of varnames
+  * and with $append = true. This append feature was introduced after the 7.2d
+  * release.
+  *
+  * Returns: the last value assigned to $target.
+  *
+  * usage: parse(string $target, string $varname, [boolean $append])
+  * or
+  * usage: parse(string $target, array $varname = (string $varname), [boolean $append])
+  *
+ * @param     $target      a string containing the name of the variable into which substituted $varnames are to be stored
+ * @param     $varname     if a string, the name the name of the variable to substitute or if an array a list of variables to be substituted
+ * @param     $append      if true, the substituted variables are appended to $target otherwise the existing value of $target is replaced
+ * @access    public
+ * @return    string
+ * @see       subst
+  */
+  function parse($target, $varname, $append = false) {
+    if (!is_array($varname)) {
+      if ($this->debug & 4) {
+        echo "<p><b>parse:</b> (with scalar) target = $target, varname = $varname, append = $append</p>\n";
+      }
+      $str = $this->subst($varname);
+      if ($append) {
+        $this->set_var($target, $this->get_var($target) . $str);
+      } else {
+        $this->set_var($target, $str);
+      }
+    } else {
+      reset($varname);
+      while (list($i, $v) = each($varname)) {
+        if ($this->debug & 4) {
+          echo "<p><b>parse:</b> (with array) target = $target, i = $i, varname = $v, append = $append</p>\n";
+        }
+        $str = $this->subst($v);
+        if ($append) {
+          $this->set_var($target, $this->get_var($target) . $str);
+        } else {
+          $this->set_var($target, $str);
+        }
+      }
+    }
+
+    if ($this->debug & 4) {
+      echo "<p><b>parse:</b> completed</p>\n";
+    }
+    return $this->get_var($target);
+  }
+
+
+ /******************************************************************************
+  * This is shorthand for print $this->parse(...) and is functionally identical.
+  * See parse for further details.
+  *
+  * Returns: always returns false.
+  *
+  * usage: pparse(string $target, string $varname, [boolean $append])
+  * or
+  * usage: pparse(string $target, array $varname = (string $varname), [boolean $append])
+  *
+ * @param     $target      a string containing the name of the variable into which substituted $varnames are to be stored
+ * @param     $varname     if a string, the name the name of the variable to substitute or if an array a list of variables to be substituted
+ * @param     $append      if true, the substituted variables are appended to $target otherwise the existing value of $target is replaced
+ * @access    public
+ * @return    false
+ * @see       parse
+  */
+  function pparse($target, $varname, $append = false, $clear = true) { // added $clear: whether to delete undefined vars or not (needed for wb-module code) - thorn
+    if ($this->debug & 4) {
+      echo "<p><b>pparse:</b> passing parameters to parse...</p>\n";
+    }
+		if(!$clear) {
+			$unknowns = $this->unknowns;
+			$this->set_unknowns('keep');
+			print $this->finish($this->parse($target, $varname, $append));
+			$this->set_unknowns($unknowns);
+		} else {
+			print $this->finish($this->parse($target, $varname, $append));
+		}
+		return false;
+  }
+
+
+ /******************************************************************************
+  * This function returns an associative array of all defined variables with the
+  * name as the key and the value of the variable as the value.
+  *
+  * This is mostly useful for debugging. Also note that $this->debug can be used
+  * to echo all variable assignments as they occur and to trace execution.
+  *
+  * Returns: a hash of all defined variable values keyed by their names.
+  *
+  * usage: get_vars()
+  *
+ * @access    public
+ * @return    array
+ * @see       $debug
+  */
+  function get_vars() {
+    if ($this->debug & 4) {
+      echo "<p><b>get_vars:</b> constructing array of vars...</p>\n";
+    }
+    reset($this->varkeys);
+    while (list($k, $v) = each($this->varkeys)) {
+      $result[$k] = $this->get_var($k);
+    }
+    return $result;
+  }
+
+
+ /******************************************************************************
+  * This function returns the value of the variable named by $varname.
+  * If $varname references a file and that file has not been loaded yet, the
+  * variable will be reported as empty.
+  *
+  * When called with an array of variable names this function will return a a
+  * hash of variable values keyed by their names.
+  *
+  * Returns: a string or an array containing the value of $varname.
+  *
+  * usage: get_var(string $varname)
+  * or
+  * usage: get_var(array $varname)
+  *
+ * @param     $varname     if a string, the name the name of the variable to get the value of, or if an array a list of variables to return the value of
+ * @access    public
+ * @return    string or array
+  */
+  function get_var($varname) {
+    if (!is_array($varname)) {
+      if (isset($this->varvals[$varname])) {
+        $str = $this->varvals[$varname];
+      } else {
+        $str = "";
+      }
+      if ($this->debug & 2) {
+        printf ("<b>get_var</b> (with scalar) <b>%s</b> = '%s'<br>\n", $varname, htmlentities($str));
+      }
+      return $str;
+    } else {
+      reset($varname);
+      while (list($k, $v) = each($varname)) {
+        if (isset($this->varvals[$v])) {
+          $str = $this->varvals[$v];
+        } else {
+          $str = "";
+        }
+        if ($this->debug & 2) {
+          printf ("<b>get_var:</b> (with array) <b>%s</b> = '%s'<br>\n", $v, htmlentities($str));
+        }
+        $result[$v] = $str;
+      }
+      return $result;
+    }
+  }
+
+
+ /******************************************************************************
+  * This function returns a hash of unresolved variable names in $varname, keyed
+  * by their names (that is, the hash has the form $a[$name] = $name).
+  *
+  * Returns: a hash of varname/varname pairs or false on error.
+  *
+  * usage: get_undefined(string $varname)
+  *
+ * @param     $varname     a string containing the name the name of the variable to scan for unresolved variables
+ * @access    public
+ * @return    array
+  */
+  function get_undefined($varname) {
+    if ($this->debug & 4) {
+      echo "<p><b>get_undefined:</b> varname = $varname</p>\n";
+    }
+    if (!$this->loadfile($varname)) {
+      $this->halt("get_undefined: unable to load $varname.");
+      return false;
+    }
+
+    preg_match_all(
+        (("loose" == $this->unknown_regexp) ? "/{([^ \t\r\n}]+)}/" : "/{([_a-zA-Z]\\w+)}/"),
+        $this->get_var($varname),
+        $m);
+    $m = $m[1];
+    if (!is_array($m)) {
+      return false;
+    }
+
+    reset($m);
+    while (list($k, $v) = each($m)) {
+      if (!isset($this->varkeys[$v])) {
+        if ($this->debug & 4) {
+         echo "<p><b>get_undefined:</b> undefined: $v</p>\n";
+        }
+        $result[$v] = $v;
+      }
+    }
+
+    if (count($result)) {
+      return $result;
+    } else {
+      return false;
+    }
+  }
+
+
+ /******************************************************************************
+  * This function returns the finished version of $str. That is, the policy
+  * regarding unresolved variable names will be applied to $str.
+  *
+  * Returns: a finished string derived from $str and $this->unknowns.
+  *
+  * usage: finish(string $str)
+  *
+ * @param     $str         a string to which to apply the unresolved variable policy
+ * @access    public
+ * @return    string
+ * @see       set_unknowns
+  */
+  function finish($str) {
+    switch ($this->unknowns) {
+      case "keep":
+      break;
+
+      case "remove":
+        $str = preg_replace(
+            (("loose" == $this->unknown_regexp) ? "/{([^ \t\r\n}]+)}/" : "/{([_a-zA-Z]\\w+)}/"),
+            "",
+            $str);
+      break;
+
+      case "comment":
+        $str = preg_replace(
+             (("loose" == $this->unknown_regexp) ? "/{([^ \t\r\n}]+)}/" : "/{([_a-zA-Z]\\w+)}/"),
+            "<!-- Template variable \\1 undefined -->",
+            $str);
+      break;
+    }
+
+    return $str;
+  }
+
+
+ /******************************************************************************
+  * This function prints the finished version of the value of the variable named
+  * by $varname. That is, the policy regarding unresolved variable names will be
+  * applied to the variable $varname then it will be printed.
+  *
+  * usage: p(string $varname)
+  *
+ * @param     $varname     a string containing the name of the variable to finish and print
+ * @access    public
+ * @return    void
+ * @see       set_unknowns
+ * @see       finish
+  */
+  function p($varname) {
+    print $this->finish($this->get_var($varname));
+  }
+
+
+ /******************************************************************************
+  * This function returns the finished version of the value of the variable named
+  * by $varname. That is, the policy regarding unresolved variable names will be
+  * applied to the variable $varname and the result returned.
+  *
+  * Returns: a finished string derived from the variable $varname.
+  *
+  * usage: get(string $varname)
+  *
+ * @param     $varname     a string containing the name of the variable to finish
+ * @access    public
+ * @return    void
+ * @see       set_unknowns
+ * @see       finish
+  */
+  function get($varname) {
+    return $this->finish($this->get_var($varname));
+  }
+
+
+ /******************************************************************************
+  * When called with a relative pathname, this function will return the pathname
+  * with $this->root prepended. Absolute pathnames are returned unchanged.
+  *
+  * Returns: a string containing an absolute pathname.
+  *
+  * usage: filename(string $filename)
+  *
+ * @param     $filename    a string containing a filename
+ * @access    private
+ * @return    string
+ * @see       set_root
+  */
+  function filename($filename) {
+    if ($this->debug & 4) {
+      echo "<p><b>filename:</b> filename = $filename</p>\n";
+    }
+    if (substr($filename, 0, 1) != "/" 
+       && substr($filename, 0, 1) != "\\"
+       && substr($filename, 1, 2) != ":\\"
+       && substr($filename, 1, 2) != ":/"
+    ) {
+      $filename = $this->root."/".$filename;
+    }
+
+    if (!file_exists($filename)) {
+      $this->halt("filename: file $filename does not exist.");
+    }
+    return $filename;
+  }
+
+
+ /******************************************************************************
+  * This function will construct a regexp for a given variable name with any
+  * special chars quoted.
+  *
+  * Returns: a string containing an escaped variable name.
+  *
+  * usage: varname(string $varname)
+  *
+ * @param     $varname    a string containing a variable name
+ * @access    private
+ * @return    string
+  */
+  function varname($varname) {
+    return preg_quote("{" . $varname . "}");
+  }
+
+
+ /******************************************************************************
+  * If a variable's value is undefined and the variable has a filename stored in
+  * $this->file[$varname] then the backing file will be loaded and the file's
+  * contents will be assigned as the variable's value.
+  *
+  * Note that the behaviour of this function changed slightly after the 7.2d
+  * release. Where previously a variable was reloaded from file if the value
+  * was empty, now this is not done. This allows a variable to be loaded then
+  * set to "", and also prevents attempts to load empty variables. Files are
+  * now only loaded if $this->varvals[$varname] is unset.
+  *
+  * Returns: true on success, false on error.
+  *
+  * usage: loadfile(string $varname)
+  *
+ * @param     $varname    a string containing the name of a variable to load
+ * @access    private
+ * @return    boolean
+ * @see       set_file
+  */
+  function loadfile($varname) {
+    if ($this->debug & 4) {
+      echo "<p><b>loadfile:</b> varname = $varname</p>\n";
+    }
+
+    if (!isset($this->file[$varname])) {
+      // $varname does not reference a file so return
+      if ($this->debug & 4) {
+        echo "<p><b>loadfile:</b> varname $varname does not reference a file</p>\n";
+      }
+      return true;
+    }
+
+    if (isset($this->varvals[$varname])) {
+      // will only be unset if varname was created with set_file and has never been loaded
+      // $varname has already been loaded so return
+      if ($this->debug & 4) {
+        echo "<p><b>loadfile:</b> varname $varname is already loaded</p>\n";
+      }
+      return true;
+    }
+    $filename = $this->file[$varname];
+
+    /* use @file here to avoid leaking filesystem information if there is an error */
+    $str = implode("", @file($filename));
+    if (empty($str)) {
+      $this->halt("loadfile: While loading $varname, $filename does not exist or is empty.");
+      return false;
+    }
+
+    if ($this->filename_comments) {
+      $str = "<!-- START FILE $filename -->\n$str<!-- END FILE $filename -->\n";
+    }
+    if ($this->debug & 4) {
+      printf("<b>loadfile:</b> loaded $filename into $varname<br>\n");
+    }
+    $this->set_var($varname, $str);
+
+    return true;
+  }
+
+
+ /******************************************************************************
+  * This function is called whenever an error occurs and will handle the error
+  * according to the policy defined in $this->halt_on_error. Additionally the
+  * error message will be saved in $this->last_error.
+  *
+  * Returns: always returns false.
+  *
+  * usage: halt(string $msg)
+  *
+ * @param     $msg         a string containing an error message
+ * @access    private
+ * @return    void
+ * @see       $halt_on_error
+  */
+  function halt($msg) {
+    $this->last_error = $msg;
+
+    if ($this->halt_on_error != "no") {
+      $this->haltmsg($msg);
+    }
+
+    if ($this->halt_on_error == "yes") {
+      die("<b>Halted.</b>");
+    }
+
+    return false;
+  }
+
+
+ /******************************************************************************
+  * This function prints an error message.
+  * It can be overridden by your subclass of Template. It will be called with an
+  * error message to display.
+  *
+  * usage: haltmsg(string $msg)
+  *
+ * @param     $msg         a string containing the error message to display
+ * @access    public
+ * @return    void
+ * @see       halt
+  */
+  function haltmsg($msg) {
+    printf("<b>Template Error:</b> %s<br>\n", $msg);
+  }
+
+}
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phplib/template.inc
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/phplib/index.php
===================================================================
--- tags/2.8.3/wb/include/phplib/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/phplib/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/phplib/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/wb-setup.php
===================================================================
--- tags/2.8.3/wb/include/jscalendar/wb-setup.php	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/wb-setup.php	(revision 1610)
@@ -0,0 +1,88 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+	import jscalendar css and scripts
+*/
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+?>
+<!--<style type="text/css">-->
+<?php
+// require_once(WB_PATH.'/include/jscalendar/calendar-system.css');
+?>
+<!--</style>  -->
+<script type="text/javascript" src="<?php echo WB_URL ?>/include/jscalendar/calendar.js"></script>
+<?php // some stuff for jscalendar
+	// language
+	$jscal_lang = defined('LANGUAGE')?strtolower(LANGUAGE):'en';
+	$jscal_lang = $jscal_lang!=''?$jscal_lang:'en';
+	if(!file_exists(WB_PATH."/include/jscalendar/lang/calendar-$jscal_lang.js")) {
+		$jscal_lang = 'en';
+	}
+	// today
+	$jscal_today = gmdate('Y/m/d H:i');
+	// first-day-of-week
+	$jscal_firstday = '1'; // monday
+	if(LANGUAGE=='EN')
+		$jscal_firstday = '0'; // sunday
+	// date and time format for the text-field and for jscal's "ifFormat". We offer dd.mm.yyyy or yyyy-mm-dd or mm/dd/yyyy
+	// ATTN: strtotime() fails with "dd.mm.yyyy" and PHP4. So the string has to be converted to e.g. "yyyy-mm-dd", which will work.
+	switch(DATE_FORMAT) {
+		case 'd.m.Y':
+		case 'd M Y':
+		case 'l, jS F, Y':
+		case 'jS F, Y':
+		case 'D M d, Y':
+		case 'd-m-Y':
+		case 'd/m/Y':
+			$jscal_format = 'd.m.Y'; // dd.mm.yyyy hh:mm
+			$jscal_ifformat = '%d.%m.%Y';
+			break;
+		case 'm/d/Y':
+		case 'm-d-Y':
+		case 'M d Y':
+		case 'm.d.Y':
+			$jscal_format = 'm/d/Y'; // mm/dd/yyyy hh:mm
+			$jscal_ifformat = '%m/%d/%Y';
+			break;
+		default:
+			$jscal_format = 'Y-m-d'; // yyyy-mm-dd hh:mm
+			$jscal_ifformat = '%Y-%m-%d';
+			break;
+	}
+	if(isset($jscal_use_time) && $jscal_use_time==TRUE) {
+		$jscal_format .= ' H:i';
+		$jscal_ifformat .= ' %H:%M';
+	}
+
+	// load scripts for jscalendar
+?>
+<script type="text/javascript" src="<?php echo WB_URL ?>/include/jscalendar/lang/calendar-<?php echo $jscal_lang ?>.js"></script>
+<script type="text/javascript" src="<?php echo WB_URL ?>/include/jscalendar/calendar-setup.js"></script>

Property changes on: tags/2.8.3/wb/include/jscalendar/wb-setup.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/calendar-system.css
===================================================================
--- tags/2.8.3/wb/include/jscalendar/calendar-system.css	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/calendar-system.css	(revision 1610)
@@ -0,0 +1,251 @@
+/* The main calendar widget.  DIV containing a table. */
+
+.calendar {
+  position: relative;
+  display: none;
+  border: 1px solid;
+  border-color: #fff #000 #000 #fff;
+  font-size: 11px;
+  cursor: default;
+  background: Window;
+  color: WindowText;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+.calendar table {
+  border: 1px solid;
+  border-color: #fff #000 #000 #fff;
+  font-size: 11px;
+  cursor: default;
+  background: Window;
+  color: WindowText;
+  font-family: tahoma,verdana,sans-serif;
+}
+
+/* Header part -- contains navigation buttons and day names. */
+
+.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
+  text-align: center;
+  padding: 1px;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+  background: ButtonFace;
+}
+
+.calendar .nav {
+  background: #DDDDDD url(menuarrow.gif) no-repeat 100% 100%;
+}
+
+.calendar thead .title { /* This holds the current "month, year" */
+  font-weight: bold;
+  padding: 1px;
+  border: 1px solid #000;
+  background: ActiveCaption;
+  color: CaptionText;
+  text-align: center;
+}
+
+.calendar thead .headrow { /* Row <TR> containing navigation buttons */
+}
+
+.calendar thead .daynames { /* Row <TR> containing the day names */
+}
+
+.calendar thead .name { /* Cells <TD> containing the day names */
+  border-bottom: 1px solid ButtonShadow;
+  padding: 2px;
+  text-align: center;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar thead .weekend { /* How a weekend day name shows in header */
+  color: #f00;
+}
+
+.calendar thead .hilite { /* How do the buttons in header appear when hover */
+  border: 2px solid;
+  padding: 0px;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+
+.calendar thead .active { /* Active (pressed) buttons in header */
+  border-width: 1px;
+  padding: 2px 0px 0px 2px;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+/* The body part -- contains all the days in month. */
+
+.calendar tbody .day { /* Cells <TD> containing month days dates */
+  width: 2em;
+  text-align: right;
+  padding: 2px 4px 2px 2px;
+}
+.calendar tbody .day.othermonth {
+  font-size: 80%;
+  color: #aaa;
+}
+.calendar tbody .day.othermonth.oweekend {
+  color: #faa;
+}
+
+.calendar table .wn {
+  padding: 2px 3px 2px 2px;
+  border-right: 1px solid ButtonShadow;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar tbody .rowhilite td {
+  background: Highlight;
+  color: HighlightText;
+}
+
+.calendar tbody td.hilite { /* Hovered cells <TD> */
+  padding: 1px 3px 1px 1px;
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+}
+
+.calendar tbody td.active { /* Active (pressed) cells <TD> */
+  padding: 2px 2px 0px 2px;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+}
+
+.calendar tbody td.selected { /* Cell showing selected date */
+  font-weight: bold;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+  padding: 2px 2px 0px 2px;
+  background: ButtonFace;
+  color: ButtonText;
+}
+
+.calendar tbody td.weekend { /* Cells showing weekend days */
+  color: #f00;
+}
+
+.calendar tbody td.today { /* Cell showing today date */
+  font-weight: bold;
+  color: #00f;
+}
+
+.calendar tbody td.disabled { color: GrayText; }
+
+.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
+  visibility: hidden;
+}
+
+.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
+  display: none;
+}
+
+/* The footer part -- status bar and "Close" button */
+
+.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
+}
+
+.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
+  background: ButtonFace;
+  padding: 1px;
+  border: 1px solid;
+  border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
+  color: ButtonText;
+  text-align: center;
+}
+
+.calendar tfoot .hilite { /* Hover style for buttons in footer */
+  border-top: 1px solid #fff;
+  border-right: 1px solid #000;
+  border-bottom: 1px solid #000;
+  border-left: 1px solid #fff;
+  padding: 1px;
+  background: #e4e0d8;
+}
+
+.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
+  padding: 2px 0px 0px 2px;
+  border-top: 1px solid #000;
+  border-right: 1px solid #fff;
+  border-bottom: 1px solid #fff;
+  border-left: 1px solid #000;
+}
+
+/* Combo boxes (menus that display months/years for direct selection) */
+
+.calendar .combo {
+  position: absolute;
+  display: none;
+  width: 4em;
+  top: 0px;
+  left: 0px;
+  cursor: default;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+  background: Menu;
+  color: MenuText;
+  font-size: 90%;
+  padding: 1px;
+  z-index: 100;
+}
+
+.calendar .combo .label,
+.calendar .combo .label-IEfix {
+  text-align: center;
+  padding: 1px;
+}
+
+.calendar .combo .label-IEfix {
+  width: 4em;
+}
+
+.calendar .combo .active {
+  padding: 0px;
+  border: 1px solid #000;
+}
+
+.calendar .combo .hilite {
+  background: Highlight;
+  color: HighlightText;
+}
+
+.calendar td.time {
+  border-top: 1px solid ButtonShadow;
+  padding: 1px 0px;
+  text-align: center;
+  background-color: ButtonFace;
+}
+
+.calendar td.time .hour,
+.calendar td.time .minute,
+.calendar td.time .ampm {
+  padding: 0px 3px 0px 4px;
+  border: 1px solid #889;
+  font-weight: bold;
+  background-color: Menu;
+}
+
+.calendar td.time .ampm {
+  text-align: center;
+}
+
+.calendar td.time .colon {
+  padding: 0px 2px 0px 3px;
+  font-weight: bold;
+}
+
+.calendar td.time span.hilite {
+  border-color: #000;
+  background-color: Highlight;
+  color: HighlightText;
+}
+
+.calendar td.time span.active {
+  border-color: #f00;
+  background-color: #000;
+  color: #0f0;
+}

Property changes on: tags/2.8.3/wb/include/jscalendar/calendar-system.css
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-de.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-de.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-de.js	(revision 1610)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar DE language
+// Author: Jack (tR), <jack@jtr.de>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ "Sonntag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa",
+ "So");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Datum ausw\u00e4hlen:\n" +
+"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
+"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
+"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zeit ausw\u00e4hlen:\n" +
+"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
+"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
+"- oder klicken und festhalten f\u00fcr Schnellauswahl.";
+
+Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\u00e4hlen";
+Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["PREV_MONTH"] = "Voriger Monat (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["GO_TODAY"] = "Heute ausw\u00e4hlen";
+Calendar._TT["NEXT_MONTH"] = "N\u00e4chst. Monat (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["NEXT_YEAR"] = "N\u00e4chst. Jahr (Festhalten f\u00fcr Schnellauswahl)";
+Calendar._TT["SEL_DATE"] = "Datum ausw\u00e4hlen";
+Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
+Calendar._TT["PART_TODAY"] = " (Heute)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Schlie\u00dfen";
+Calendar._TT["TODAY"] = "Heute";
+Calendar._TT["TIME_PART"] = "(Shift-)Klick oder Festhalten und Ziehen um den Wert zu \u00e4ndern";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Zeit:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-de.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/index.php
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-pl.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-pl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-pl.js	(revision 1610)
@@ -0,0 +1,98 @@
+// ** I18N
+
+// Calendar PL language
+// Author: Dariusz Pietrzak, <eyck@ghost.anime.pl>
+// Author: Janusz Piwowarski, <jpiw@go2.pl>
+// Encoding: utf-8
+// Distributed under the same terms as the calendar itself.
+
+Calendar._DN = new Array
+("Niedziela",
+ "Poniedzia\u0142ek",
+ "Wtorek",
+ "\u015aroda",
+ "Czwartek",
+ "Pi\u0105tek",
+ "Sobota",
+ "Niedziela");
+Calendar._SDN = new Array
+("Nie",
+ "Pn",
+ "Wt",
+ "\u015ar",
+ "Cz",
+ "Pt",
+ "So",
+ "Nie");
+Calendar._MN = new Array
+("Stycze\u0144",
+ "Luty",
+ "Marzec",
+ "Kwiecie\u0144",
+ "Maj",
+ "Czerwiec",
+ "Lipiec",
+ "Sierpie\u0144",
+ "Wrzesie\u0144",
+ "Pa\u017adziernik",
+ "Listopad",
+ "Grudzie\u0144");
+Calendar._SMN = new Array
+("Sty",
+ "Lut",
+ "Mar",
+ "Kwi",
+ "Maj",
+ "Cze",
+ "Lip",
+ "Sie",
+ "Wrz",
+ "Pa\u017a",
+ "Lis",
+ "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O kalendarzu";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Aby pobra\u0107 najnowsz\u0105 wersj\u0119, odwied\u017a: http://www.dynarch.com/projects/calendar/\n" +
+"Dost\u0119pny na licencji GNU LGPL. Zobacz szczeg\u00f3\u0142y na http://gnu.org/licenses/lgpl.html." +
+"\n\n" +
+"Wyb\u00f3r daty:\n" +
+"- U\u017cyj przycisk\u00f3w \xab, \xbb by wybra\u0107 rok\n" +
+"- U\u017cyj przycisk\u00f3w " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " by wybra\u0107 miesi\u0105c\n" +
+"- Przytrzymaj klawisz myszy nad jednym z powy\u017cszych przycisk\u00f3w dla szybszego wyboru.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Wyb\u00f3r czasu:\n" +
+"- Kliknij na jednym z p\u00f3l czasu by zwi\u0119kszy\u0107 jego warto\u015b\u0107\n" +
+"- lub kliknij trzymaj\u0105c Shift by zmiejszy\u0107 jego warto\u015b\u0107\n" +
+"- lub kliknij i przeci\u0105gnij dla szybszego wyboru.";
+
+//Calendar._TT["TOGGLE"] = "Zmie\u0144 pierwszy dzie\u0144 tygodnia";
+Calendar._TT["PREV_YEAR"] = "Poprzedni rok (przytrzymaj dla menu)";
+Calendar._TT["PREV_MONTH"] = "Poprzedni miesi\u0105c (przytrzymaj dla menu)";
+Calendar._TT["GO_TODAY"] = "Id\u017a do dzisiaj";
+Calendar._TT["NEXT_MONTH"] = "Nast\u0119pny miesi\u0105c (przytrzymaj dla menu)";
+Calendar._TT["NEXT_YEAR"] = "Nast\u0119pny rok (przytrzymaj dla menu)";
+Calendar._TT["SEL_DATE"] = "Wybierz dat\u0119";
+Calendar._TT["DRAG_TO_MOVE"] = "Przeci\u0105gnij by przesun\u0105\u0107";
+Calendar._TT["PART_TODAY"] = " (dzisiaj)";
+Calendar._TT["MON_FIRST"] = "Wy\u015bwietl poniedzia\u0142ek jako pierwszy";
+Calendar._TT["SUN_FIRST"] = "Wy\u015bwietl niedziel\u0119 jako pierwsz\u0105";
+Calendar._TT["CLOSE"] = "Zamknij";
+Calendar._TT["TODAY"] = "Dzisiaj";
+Calendar._TT["TIME_PART"] = "(Shift-)Kliknij lub przeci\u0105gnij by zmieni\u0107 warto\u015b\u0107";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%e %B, %A";
+
+Calendar._TT["WK"] = "ty";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-pl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-fi.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-fi.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-fi.js	(revision 1610)
@@ -0,0 +1,102 @@
+// ** I18N
+
+// Calendar FI language (Finnish, Suomi)
+// Author: Jarno K\u00e4yhk\u00f6, <gambler@phnet.fi>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Sunnuntai",
+ "Maanantai",
+ "Tiistai",
+ "Keskiviikko",
+ "Torstai",
+ "Perjantai",
+ "Lauantai",
+ "Sunnuntai");
+
+// short day names
+Calendar._SDN = new Array
+("Su",
+ "Ma",
+ "Ti",
+ "Ke",
+ "To",
+ "Pe",
+ "La",
+ "Su");
+
+// full month names
+Calendar._MN = new Array
+("Tammikuu",
+ "Helmikuu",
+ "Maaliskuu",
+ "Huhtikuu",
+ "Toukokuu",
+ "Kes\u00e4kuu",
+ "Hein\u00e4kuu",
+ "Elokuu",
+ "Syyskuu",
+ "Lokakuu",
+ "Marraskuu",
+ "Joulukuu");
+
+// short month names
+Calendar._SMN = new Array
+("Tam",
+ "Hel",
+ "Maa",
+ "Huh",
+ "Tou",
+ "Kes",
+ "Hei",
+ "Elo",
+ "Syy",
+ "Lok",
+ "Mar",
+ "Jou");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Tietoja kalenterista";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Uusin versio osoitteessa: http://www.dynarch.com/projects/calendar/\n" +
+"Julkaistu GNU LGPL lisenssin alaisuudessa. Lis\u00e4tietoja osoitteessa http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 valinta:\n" +
+"- K\u00e4yt\u00e4 \xab, \xbb painikkeita valitaksesi vuosi\n" +
+"- K\u00e4yt\u00e4 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " painikkeita valitaksesi kuukausi\n" +
+"- Pit\u00e4m\u00e4ll\u00e4 hiiren painiketta mink\u00e4 tahansa yll\u00e4 olevan painikkeen kohdalla, saat n\u00e4kyviin valikon nopeampaan siirtymiseen.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Ajan valinta:\n" +
+"- Klikkaa kellonajan numeroita lis\u00e4t\u00e4ksesi aikaa\n" +
+"- tai pit\u00e4m\u00e4ll\u00e4 Shift-n\u00e4pp\u00e4int\u00e4 pohjassa saat aikaa taaksep\u00e4in\n" +
+"- tai klikkaa ja pid\u00e4 hiiren painike pohjassa sek\u00e4 liikuta hiirt\u00e4 muuttaaksesi aikaa nopeasti eteen- ja taaksep\u00e4in.";
+
+Calendar._TT["PREV_YEAR"] = "Edell. vuosi (paina hetki, n\u00e4et valikon)";
+Calendar._TT["PREV_MONTH"] = "Edell. kuukausi (paina hetki, n\u00e4et valikon)";
+Calendar._TT["GO_TODAY"] = "Siirry t\u00e4h\u00e4n p\u00e4iv\u00e4\u00e4n";
+Calendar._TT["NEXT_MONTH"] = "Seur. kuukausi (paina hetki, n\u00e4et valikon)";
+Calendar._TT["NEXT_YEAR"] = "Seur. vuosi (paina hetki, n\u00e4et valikon)";
+Calendar._TT["SEL_DATE"] = "Valitse p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4";
+Calendar._TT["DRAG_TO_MOVE"] = "Siirr\u00e4 kalenterin paikkaa";
+Calendar._TT["PART_TODAY"] = " (t\u00e4n\u00e4\u00e4n)";
+Calendar._TT["MON_FIRST"] = "N\u00e4yt\u00e4 maanantai ensimm\u00e4isen\u00e4";
+Calendar._TT["SUN_FIRST"] = "N\u00e4yt\u00e4 sunnuntai ensimm\u00e4isen\u00e4";
+Calendar._TT["CLOSE"] = "Sulje";
+Calendar._TT["TODAY"] = "T\u00e4n\u00e4\u00e4n";
+Calendar._TT["TIME_PART"] = "(Shift-) Klikkaa tai liikuta muuttaaksesi aikaa";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%d.%m.%Y";
+
+Calendar._TT["WK"] = "Vko";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-fi.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-el.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-el.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-el.js	(revision 1610)
@@ -0,0 +1,93 @@
+\ufeff// ** I18N
+Calendar._DN = new Array
+("\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae",
+ "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1",
+ "\u03a4\u03c1\u03af\u03c4\u03b7",
+ "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7",
+ "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7",
+ "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae",
+ "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf",
+ "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae");
+
+Calendar._SDN = new Array
+("\u039a\u03c5",
+ "\u0394\u03b5",
+ "T\u03c1",
+ "\u03a4\u03b5",
+ "\u03a0\u03b5",
+ "\u03a0\u03b1",
+ "\u03a3\u03b1",
+ "\u039a\u03c5");
+
+Calendar._MN = new Array
+("\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+ "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
+ "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2",
+ "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2",
+ "\u039c\u03ac\u03ca\u03bf\u03c2",
+ "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2",
+ "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2",
+ "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2",
+ "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+ "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2",
+ "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
+ "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2");
+
+Calendar._SMN = new Array
+("\u0399\u03b1\u03bd",
+ "\u03a6\u03b5\u03b2",
+ "\u039c\u03b1\u03c1",
+ "\u0391\u03c0\u03c1",
+ "\u039c\u03b1\u03b9",
+ "\u0399\u03bf\u03c5\u03bd",
+ "\u0399\u03bf\u03c5\u03bb",
+ "\u0391\u03c5\u03b3",
+ "\u03a3\u03b5\u03c0",
+ "\u039f\u03ba\u03c4",
+ "\u039d\u03bf\u03b5",
+ "\u0394\u03b5\u03ba");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u0393\u03b9\u03b1 \u03c4\u03bf \u03b7\u03bc\u03b5\u03c1\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf";
+
+Calendar._TT["ABOUT"] =
+"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03b1\u03c2 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2/\u03ce\u03c1\u03b1\u03c2 \u03c3\u03b5 DHTML\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"\u0393\u03b9\u03b1 \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2:\n" +
+"- \u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac \xab, \xbb \u03b3\u03b9\u03b1 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03ad\u03c4\u03bf\u03c5\u03c2\n" +
+"- \u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " \u03b3\u03b9\u03b1 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03ae\u03bd\u03b1\n" +
+"- \u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03ba\u03bf\u03c5\u03bc\u03c0\u03af \u03c0\u03bf\u03bd\u03c4\u03b9\u03ba\u03bf\u03cd \u03c0\u03b1\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf \u03c3\u03c4\u03b1 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac \u03b3\u03b9\u03b1 \u03c0\u03b9\u03bf \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03ce\u03c1\u03b1\u03c2:\n" +
+"- \u039a\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b1 \u03bc\u03ad\u03c1\u03b7 \u03c4\u03b7\u03c2 \u03ce\u03c1\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03cd\u03be\u03b7\u03c3\u03b7\n" +
+"- \u03ae Shift-\u03ba\u03bb\u03b9\u03ba \u03b3\u03b9\u03b1 \u03bc\u03b5\u03af\u03c9\u03c3\u03b7\n" +
+"- \u03ae \u03ba\u03bb\u03b9\u03ba \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c0\u03b9\u03bf \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae.";
+Calendar._TT["TOGGLE"] = "\u039c\u03c0\u03ac\u03c1\u03b1 \u03c0\u03c1\u03ce\u03c4\u03b7\u03c2 \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03b2\u03b4\u03bf\u03bc\u03ac\u03b4\u03b1\u03c2";
+Calendar._TT["PREV_YEAR"] = "\u03a0\u03c1\u03bf\u03b7\u03b3. \u03ad\u03c4\u03bf\u03c2 (\u03ba\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd)";
+Calendar._TT["PREV_MONTH"] = "\u03a0\u03c1\u03bf\u03b7\u03b3. \u03bc\u03ae\u03bd\u03b1\u03c2 (\u03ba\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd)";
+Calendar._TT["GO_TODAY"] = "\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1";
+Calendar._TT["NEXT_MONTH"] = "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2 (\u03ba\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd)";
+Calendar._TT["NEXT_YEAR"] = "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03ad\u03c4\u03bf\u03c2 (\u03ba\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd)";
+Calendar._TT["SEL_DATE"] = "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1";
+Calendar._TT["DRAG_TO_MOVE"] = "\u03a3\u03cd\u03c1\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bc\u03b5\u03c4\u03b1\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5";
+Calendar._TT["PART_TODAY"] = " (\u03c3\u03ae\u03bc\u03b5\u03c1\u03b1)";
+Calendar._TT["MON_FIRST"] = "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1\u03c2 \u03c0\u03c1\u03ce\u03c4\u03b1";
+Calendar._TT["SUN_FIRST"] = "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae\u03c2 \u03c0\u03c1\u03ce\u03c4\u03b1";
+Calendar._TT["CLOSE"] = "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf";
+Calendar._TT["TODAY"] = "\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1";
+Calendar._TT["TIME_PART"] = "(Shift-)\u03ba\u03bb\u03b9\u03ba \u03ae \u03bc\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
+Calendar._TT["TT_DATE_FORMAT"] = "D, d M";
+
+Calendar._TT["WK"] = "\u03b5\u03b2\u03b4";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-el.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-br.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-br.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-br.js	(revision 1610)
@@ -0,0 +1,107 @@
+\ufeff// ** I18N
+
+// Calendar pt-BR language
+// Author: Fernando Dourado, <fernando.dourado@ig.com.br>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Segunda",
+ "Ter\u00e7a",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sab\u00e1do",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+// [No changes using default values]
+
+// full month names
+Calendar._MN = new Array
+("Janeiro",
+ "Fevereiro",
+ "Mar\u00e7o",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro");
+
+// short month names
+// [No changes using default values]
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre o calend\u00e1rio";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado@ig.com.br)\n" +
+"Tradu\u00e7\u00e3o para o portugu\u00eas Brasil (pt-BR) por Fernando Dourado (fernando.dourado@ig.com.br)" +
+"\n\n" +
+"Selecionar data:\n" +
+"- Use as teclas \xab, \xbb para selecionar o ano\n" +
+"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o m\u00eas\n" +
+"- Clique e segure com o mouse em qualquer bot\u00e3o para selecionar rapidamente.";
+
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecionar hora:\n" +
+"- Clique em qualquer uma das partes da hora para aumentar\n" +
+"- ou Shift-clique para diminuir\n" +
+"- ou clique e arraste para selecionar rapidamente.";
+
+Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
+Calendar._TT["PREV_MONTH"] = "M\u00eas anterior (clique e segure para menu)";
+Calendar._TT["GO_TODAY"] = "Ir para a data atual";
+Calendar._TT["NEXT_MONTH"] = "Pr\u00f3ximo m\u00eas (clique e segure para menu)";
+Calendar._TT["NEXT_YEAR"] = "Pr\u00f3ximo ano (clique e segure para menu)";
+Calendar._TT["SEL_DATE"] = "Selecione uma data";
+Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
+Calendar._TT["PART_TODAY"] = " (hoje)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fechar";
+Calendar._TT["TODAY"] = "Hoje";
+Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
+
+Calendar._TT["WK"] = "sem";
+Calendar._TT["TIME"] = "Hora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-br.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-cs.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-cs.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-cs.js	(revision 1610)
@@ -0,0 +1,65 @@
+/* 
+	calendar-cs-win.js
+	language: Czech
+	encoding: windows-1250
+	author: Lubos Jerabek (xnet@seznam.cz)
+	        Jan Uhlir (espinosa@centrum.cz)
+*/
+
+// ** I18N
+Calendar._DN  = new Array('Ned\u011ble','Pond\u011bl\u00ed','\u00dater\u00fd','St\u0159eda','\u010ctvrtek','P\u00e1tek','Sobota','Ned\u011ble');
+Calendar._SDN = new Array('Ne','Po','\u00dat','St','\u010ct','P\u00e1','So','Ne');
+Calendar._MN  = new Array('Leden','\u00danor','B\u0159ezen','Duben','Kv\u011bten','\u010cerven','\u010cervenec','Srpen','Z\u00e1\u0159\u00ed','\u0158\u00edjen','Listopad','Prosinec');
+Calendar._SMN = new Array('Led','\u00dano','B\u0159e','Dub','Kv\u011b','\u010crv','\u010cvc','Srp','Z\u00e1\u0159','\u0158\u00edj','Lis','Pro');
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O komponent\u011b kalend\u00e1\u0159";
+Calendar._TT["TOGGLE"] = "Zm\u011bna prvn\u00edho dne v t\u00fddnu";
+Calendar._TT["PREV_YEAR"] = "P\u0159edchoz\u00ed rok (p\u0159idr\u017e pro menu)";
+Calendar._TT["PREV_MONTH"] = "P\u0159edchoz\u00ed m\u011bs\u00edc (p\u0159idr\u017e pro menu)";
+Calendar._TT["GO_TODAY"] = "Dne\u0161n\u00ed datum";
+Calendar._TT["NEXT_MONTH"] = "Dal\u0161\u00ed m\u011bs\u00edc (p\u0159idr\u017e pro menu)";
+Calendar._TT["NEXT_YEAR"] = "Dal\u0161\u00ed rok (p\u0159idr\u017e pro menu)";
+Calendar._TT["SEL_DATE"] = "Vyber datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Chy\u0165 a t\u00e1hni, pro p\u0159esun";
+Calendar._TT["PART_TODAY"] = " (dnes)";
+Calendar._TT["MON_FIRST"] = "Uka\u017e jako prvn\u00ed Pond\u011bl\u00ed";
+//Calendar._TT["SUN_FIRST"] = "Uka\u017e jako prvn\u00ed Ned\u011bli";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"V\u00fdb\u011br datumu:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Pou\u017eijte tla\u010d\u00edtka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k v\u00fdb\u011bru m\u011bs\u00edce\n" +
+"- Podr\u017ete tla\u010d\u00edtko my\u0161i na jak\u00e9mkoliv z t\u011bch tla\u010d\u00edtek pro rychlej\u0161\u00ed v\u00fdb\u011br.";
+
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"V\u00fdb\u011br \u010dasu:\n" +
+"- Klikn\u011bte na jakoukoliv z \u010d\u00e1st\u00ed v\u00fdb\u011bru \u010dasu pro zv\u00fd\u0161en\u00ed.\n" +
+"- nebo Shift-click pro sn\u00ed\u017een\u00ed\n" +
+"- nebo klikn\u011bte a t\u00e1hn\u011bte pro rychlej\u0161\u00ed v\u00fdb\u011br.";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Zobraz %s prvn\u00ed";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Zav\u0159\u00edt";
+Calendar._TT["TODAY"] = "Dnes";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo t\u00e1hni pro zm\u011bnu hodnoty";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "\u010cas:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-cs.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-fr.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-fr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-fr.js	(revision 1610)
@@ -0,0 +1,125 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// Translator: David Duret, <pilgrim@mala-template.net> from previous french version
+
+// full day names
+Calendar._DN = new Array
+("Dimanche",
+ "Lundi",
+ "Mardi",
+ "Mercredi",
+ "Jeudi",
+ "Vendredi",
+ "Samedi",
+ "Dimanche");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dim",
+ "Lun",
+ "Mar",
+ "Mar",
+ "Jeu",
+ "Ven",
+ "Sam",
+ "Dim");
+
+// full month names
+Calendar._MN = new Array
+("Janvier",
+ "F\u00e9vrier",
+ "Mars",
+ "Avril",
+ "Mai",
+ "Juin",
+ "Juillet",
+ "Ao\u00fbt",
+ "Septembre",
+ "Octobre",
+ "Novembre",
+ "D\u00e9cembre");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Fev",
+ "Mar",
+ "Avr",
+ "Mai",
+ "Juin",
+ "Juil",
+ "Aout",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "A propos du calendrier";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Heure Selecteur\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Pour la derniere version visitez : http://www.dynarch.com/projects/calendar/\n" +
+"Distribu\u00e9 par GNU LGPL.  Voir http://gnu.org/licenses/lgpl.html pour les details." +
+"\n\n" +
+"Selection de la date :\n" +
+"- Utiliser les bouttons \xab, \xbb  pour selectionner l\'annee\n" +
+"- Utiliser les bouttons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pour selectionner les mois\n" +
+"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selection de l\'heure :\n" +
+"- Cliquer sur heures ou minutes pour incrementer\n" +
+"- ou Maj-clic pour decrementer\n" +
+"- ou clic et glisser-deplacer pour une selection plus rapide";
+
+Calendar._TT["PREV_YEAR"] = "Ann\u00e9e pr\u00e9c. (maintenir pour menu)";
+Calendar._TT["PREV_MONTH"] = "Mois pr\u00e9c. (maintenir pour menu)";
+Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
+Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
+Calendar._TT["NEXT_YEAR"] = "Ann\u00e9e suiv. (maintenir pour menu)";
+Calendar._TT["SEL_DATE"] = "S\u00e9lectionner une date";
+Calendar._TT["DRAG_TO_MOVE"] = "D\u00e9placer";
+Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Afficher %s en premier";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fermer";
+Calendar._TT["TODAY"] = "Aujourd'hui";
+Calendar._TT["TIME_PART"] = "(Maj-)Clic ou glisser pour modifier la valeur";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Sem.";
+Calendar._TT["TIME"] = "Heure :";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-fr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-es.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-es.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-es.js	(revision 1610)
@@ -0,0 +1,129 @@
+// ** I18N
+
+// Calendar ES (spanish) language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Updater: Servilio Afre Puentes <servilios@yahoo.com>
+// Updated: 2004-06-03
+// Encoding: utf-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Lunes",
+ "Martes",
+ "Mi\u00e9rcoles",
+ "Jueves",
+ "Viernes",
+ "S\u00e1bado",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mi\u00e9",
+ "Jue",
+ "Vie",
+ "S\u00e1b",
+ "Dom");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 1;
+
+// full month names
+Calendar._MN = new Array
+("Enero",
+ "Febrero",
+ "Marzo",
+ "Abril",
+ "Mayo",
+ "Junio",
+ "Julio",
+ "Agosto",
+ "Septiembre",
+ "Octubre",
+ "Noviembre",
+ "Diciembre");
+
+// short month names
+Calendar._SMN = new Array
+("Ene",
+ "Feb",
+ "Mar",
+ "Abr",
+ "May",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Acerca del calendario";
+
+Calendar._TT["ABOUT"] =
+"Selector DHTML de Fecha/Hora\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Para conseguir la \u00faltima versi\u00f3n visite: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuido bajo licencia GNU LGPL. Visite http://gnu.org/licenses/lgpl.html para m\u00e1s detalles." +
+"\n\n" +
+"Selecci\u00f3n de fecha:\n" +
+"- Use los botones \xab, \xbb para seleccionar el a\u00f1o\n" +
+"- Use los botones " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
+"- Mantenga pulsado el rat\u00f3n en cualquiera de estos botones para una selecci\u00f3n r\u00e1pida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecci\u00f3n de hora:\n" +
+"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
+"- o pulse las may\u00fasculas mientras hace clic para decrementarla\n" +
+"- o haga clic y arrastre el rat\u00f3n para una selecci\u00f3n m\u00e1s r\u00e1pida.";
+
+Calendar._TT["PREV_YEAR"] = "A\u00f1o anterior (mantener para men\u00fa)";
+Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para men\u00fa)";
+Calendar._TT["GO_TODAY"] = "Ir a hoy";
+Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para men\u00fa)";
+Calendar._TT["NEXT_YEAR"] = "A\u00f1o siguiente (mantener para men\u00fa)";
+Calendar._TT["SEL_DATE"] = "Seleccionar fecha";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar para mover";
+Calendar._TT["PART_TODAY"] = " (hoy)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Hacer %s primer d\u00eda de la semana";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Cerrar";
+Calendar._TT["TODAY"] = "Hoy";
+Calendar._TT["TIME_PART"] = "(May\u00fascula-)Clic o arrastre para cambiar valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
+
+Calendar._TT["WK"] = "sem";
+Calendar._TT["TIME"] = "Hora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-es.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-du.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-du.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-du.js	(revision 1610)
@@ -0,0 +1,51 @@
+// ** I18N
+Calendar._DN = new Array
+("Zondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrijdag",
+ "Zaterdag",
+ "Zondag");
+Calendar._MN = new Array
+("Januari",
+ "Februari",
+ "Maart",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Toggle startdag van de week";
+Calendar._TT["PREV_YEAR"] = "Vorig jaar (indrukken voor menu)";
+Calendar._TT["PREV_MONTH"] = "Vorige month (indrukken voor menu)";
+Calendar._TT["GO_TODAY"] = "Naar Vandaag";
+Calendar._TT["NEXT_MONTH"] = "Volgende Maand (indrukken voor menu)";
+Calendar._TT["NEXT_YEAR"] = "Volgend jaar (indrukken voor menu)";
+Calendar._TT["SEL_DATE"] = "Selecteer datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te verplaatsen";
+Calendar._TT["PART_TODAY"] = " (vandaag)";
+Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
+Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
+Calendar._TT["CLOSE"] = "Sluiten";
+Calendar._TT["TODAY"] = "Vandaag";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
+Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
+
+Calendar._TT["WK"] = "wk";
+
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-du.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-hr.js
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-hr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-si.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-si.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-si.js	(revision 1610)
@@ -0,0 +1,99 @@
+/* Slovenian language file for the DHTML Calendar version 0.9.2 
+* Author David Milost <mercy@volja.net>, January 2004.
+* Feel free to use this script under the terms of the GNU Lesser General
+* Public License, as long as you do not remove or alter this notice.
+*/
+ // full day names
+Calendar._DN = new Array
+("Nedelja",
+ "Ponedeljek",
+ "Torek",
+ "Sreda",
+ "\u010cetrtek",
+ "Petek",
+ "Sobota",
+ "Nedelja");
+ // short day names
+ Calendar._SDN = new Array
+("Ned",
+ "Pon",
+ "Tor",
+ "Sre",
+ "\u010cet",
+ "Pet",
+ "Sob",
+ "Ned");
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Maj",
+ "Jun",
+ "Jul",
+ "Avg",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+  // full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "Marec",
+ "April",
+ "Maj",
+ "Junij",
+ "Julij",
+ "Avgust",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O koledarju";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Za zadnjo verzijo pojdine na naslov: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuirano pod GNU LGPL.  Poglejte http://gnu.org/licenses/lgpl.html za podrobnosti." +
+"\n\n" +
+"Izbor datuma:\n" +
+"- Uporabite \xab, \xbb gumbe za izbor leta\n" +
+"- Uporabite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gumbe za izbor meseca\n" +
+"- Zadr\u017eite klik na kateremkoli od zgornjih gumbov za hiter izbor.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Izbor \u0107asa:\n" +
+"- Kliknite na katerikoli del \u0107asa za pove\u0107. le-tega\n" +
+"- ali Shift-click za zmanj. le-tega\n" +
+"- ali kliknite in povlecite za hiter izbor.";
+
+Calendar._TT["TOGGLE"] = "Spremeni dan s katerim se pri\u0107ne teden";
+Calendar._TT["PREV_YEAR"] = "Predhodnje leto (dolg klik za meni)";
+Calendar._TT["PREV_MONTH"] = "Predhodnji mesec (dolg klik za meni)";
+Calendar._TT["GO_TODAY"] = "Pojdi na teko\u0107i dan";
+Calendar._TT["NEXT_MONTH"] = "Naslednji mesec (dolg klik za meni)";
+Calendar._TT["NEXT_YEAR"] = "Naslednje leto (dolg klik za meni)";
+Calendar._TT["SEL_DATE"] = "Izberite datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Pritisni in povleci za spremembo pozicije";
+Calendar._TT["PART_TODAY"] = " (danes)";
+Calendar._TT["MON_FIRST"] = "Prika\u017ei ponedeljek kot prvi dan";
+Calendar._TT["SUN_FIRST"] = "Prika\u017ei nedeljo kot prvi dan";
+Calendar._TT["CLOSE"] = "Zapri";
+Calendar._TT["TODAY"] = "Danes";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Ted";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-si.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-hu.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-hu.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-hu.js	(revision 1610)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar HU language
+// Author: ???
+// Modifier: KARASZI Istvan, <jscalendar@spam.raszi.hu>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Vas\u00e1rnap",
+ "H\u00e9tf\u0151",
+ "Kedd",
+ "Szerda",
+ "Cs\u00fct\u00f6rt\u00f6k",
+ "P\u00e9ntek",
+ "Szombat",
+ "Vas\u00e1rnap");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("v",
+ "h",
+ "k",
+ "sze",
+ "cs",
+ "p",
+ "szo",
+ "v");
+
+// full month names
+Calendar._MN = new Array
+("janu\u00e1r",
+ "febru\u00e1r",
+ "m\u00e1rcius",
+ "\u00e1prilis",
+ "m\u00e1jus",
+ "j\u00fanius",
+ "j\u00falius",
+ "augusztus",
+ "szeptember",
+ "okt\u00f3ber",
+ "november",
+ "december");
+
+// short month names
+Calendar._SMN = new Array
+("jan",
+ "feb",
+ "m\u00e1r",
+ "\u00e1pr",
+ "m\u00e1j",
+ "j\u00fan",
+ "j\u00fal",
+ "aug",
+ "sze",
+ "okt",
+ "nov",
+ "dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "A kalend\u00e1riumr\u00f3l";
+
+Calendar._TT["ABOUT"] =
+"DHTML d\u00e1tum/id\u0151 kiv\u00e1laszt\u00f3\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"a legfrissebb verzi\u00f3 megtal\u00e1lhat\u00f3: http://www.dynarch.com/projects/calendar/\n" +
+"GNU LGPL alatt terjesztve.  L\u00e1sd a http://gnu.org/licenses/lgpl.html oldalt a r\u00e9szletekhez." +
+"\n\n" +
+"D\u00e1tum v\u00e1laszt\u00e1s:\n" +
+"- haszn\u00e1lja a \xab, \xbb gombokat az \u00e9v kiv\u00e1laszt\u00e1s\u00e1hoz\n" +
+"- haszn\u00e1lja a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gombokat a h\u00f3nap kiv\u00e1laszt\u00e1s\u00e1hoz\n" +
+"- tartsa lenyomva az eg\u00e9rgombot a gyors v\u00e1laszt\u00e1shoz.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Id\u0151 v\u00e1laszt\u00e1s:\n" +
+"- kattintva n\u00f6velheti az id\u0151t\n" +
+"- shift-tel kattintva cs\u00f6kkentheti\n" +
+"- lenyomva tartva \u00e9s h\u00fazva gyorsabban kiv\u00e1laszthatja.";
+
+Calendar._TT["PREV_YEAR"] = "El\u0151z\u0151 \u00e9v (tartsa nyomva a men\u00fch\u00f6z)";
+Calendar._TT["PREV_MONTH"] = "El\u0151z\u0151 h\u00f3nap (tartsa nyomva a men\u00fch\u00f6z)";
+Calendar._TT["GO_TODAY"] = "Mai napra ugr\u00e1s";
+Calendar._TT["NEXT_MONTH"] = "K\u00f6v. h\u00f3nap (tartsa nyomva a men\u00fch\u00f6z)";
+Calendar._TT["NEXT_YEAR"] = "K\u00f6v. \u00e9v (tartsa nyomva a men\u00fch\u00f6z)";
+Calendar._TT["SEL_DATE"] = "V\u00e1lasszon d\u00e1tumot";
+Calendar._TT["DRAG_TO_MOVE"] = "H\u00fazza a mozgat\u00e1shoz";
+Calendar._TT["PART_TODAY"] = " (ma)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "%s legyen a h\u00e9t els\u0151 napja";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Bez\u00e1r";
+Calendar._TT["TODAY"] = "Ma";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikk vagy h\u00faz\u00e1s az \u00e9rt\u00e9k v\u00e1ltoztat\u00e1s\u00e1hoz";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %a";
+
+Calendar._TT["WK"] = "h\u00e9t";
+Calendar._TT["TIME"] = "id\u0151:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-hu.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-no.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-no.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-no.js	(revision 1610)
@@ -0,0 +1,119 @@
+// ** I18N
+
+// Calendar NO language
+// Author: Daniel Holmen, <daniel.holmen@ciber.no>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("S\u00f8ndag",
+ "Mandag",
+ "Tirsdag",
+ "Onsdag",
+ "Torsdag",
+ "Fredag",
+ "L\u00f8rdag",
+ "S\u00f8ndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("S\u00f8n",
+ "Man",
+ "Tir",
+ "Ons",
+ "Tor",
+ "Fre",
+ "L\u00f8r",
+ "S\u00f8n");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+ "Februar",
+ "Mars",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Desember");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om kalenderen";
+
+Calendar._TT["ABOUT"] =
+"DHTML Dato-/Tidsvelger\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For nyeste versjon, g\u00e5 til: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuert under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html for detaljer." +
+"\n\n" +
+"Datovalg:\n" +
+"- Bruk knappene \xab og \xbb for \u00e5 velge \u00e5r\n" +
+"- Bruk knappene " + String.fromCharCode(0x2039) + " og " + String.fromCharCode(0x203a) + " for \u00e5 velge m\u00e5ned\n" +
+"- Hold inne musknappen eller knappene over for raskere valg.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Tidsvalg:\n" +
+"- Klikk p\u00e5 en av tidsdelene for \u00e5 \u00f8ke den\n" +
+"- eller Shift-klikk for \u00e5 senke verdien\n" +
+"- eller klikk-og-dra for raskere valg..";
+
+Calendar._TT["PREV_YEAR"] = "Forrige. \u00e5r (hold for meny)";
+Calendar._TT["PREV_MONTH"] = "Forrige. m\u00e5ned (hold for meny)";
+Calendar._TT["GO_TODAY"] = "G\u00e5 til idag";
+Calendar._TT["NEXT_MONTH"] = "Neste m\u00e5ned (hold for meny)";
+Calendar._TT["NEXT_YEAR"] = "Neste \u00e5r (hold for meny)";
+Calendar._TT["SEL_DATE"] = "Velg dato";
+Calendar._TT["DRAG_TO_MOVE"] = "Dra for \u00e5 flytte";
+Calendar._TT["PART_TODAY"] = " (idag)";
+Calendar._TT["MON_FIRST"] = "Vis mandag f\u00f8rst";
+Calendar._TT["SUN_FIRST"] = "Vis s\u00f8ndag f\u00f8rst";
+Calendar._TT["CLOSE"] = "Lukk";
+Calendar._TT["TODAY"] = "Idag";
+Calendar._TT["TIME_PART"] = "(Shift-)Klikk eller dra for \u00e5 endre verdi";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "uke";
+
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-no.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-it.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-it.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-it.js	(revision 1610)
@@ -0,0 +1,124 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Translator: Fabio Di Bernardini, <altraqua@email.it>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domenica",
+ "Luned\u00ec",
+ "Marted\u00ec",
+ "Mercoled\u00ec",
+ "Gioved\u00ec",
+ "Venerd\u00ec",
+ "Sabato",
+ "Domenica");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Lun",
+ "Mar",
+ "Mer",
+ "Gio",
+ "Ven",
+ "Sab",
+ "Dom");
+
+// full month names
+Calendar._MN = new Array
+("Gennaio",
+ "Febbraio",
+ "Marzo",
+ "Aprile",
+ "Maggio",
+ "Giugno",
+ "Luglio",
+ "Augosto",
+ "Settembre",
+ "Ottobre",
+ "Novembre",
+ "Dicembre");
+
+// short month names
+Calendar._SMN = new Array
+("Gen",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mag",
+ "Giu",
+ "Lug",
+ "Ago",
+ "Set",
+ "Ott",
+ "Nov",
+ "Dic");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Informazioni sul calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Per gli aggiornamenti: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuito sotto licenza GNU LGPL.  Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
+"\n\n" +
+"Selezione data:\n" +
+"- Usa \xab, \xbb per selezionare l'anno\n" +
+"- Usa  " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per i mesi\n" +
+"- Tieni premuto a lungo il mouse per accedere alle funzioni di selezione veloce.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selezione orario:\n" +
+"- Clicca sul numero per incrementarlo\n" +
+"- o Shift+click per decrementarlo\n" +
+"- o click e sinistra o destra per variarlo.";
+
+Calendar._TT["PREV_YEAR"] = "Anno prec.(clicca a lungo per il men\u00f9)";
+Calendar._TT["PREV_MONTH"] = "Mese prec. (clicca a lungo per il men\u00f9)";
+Calendar._TT["GO_TODAY"] = "Oggi";
+Calendar._TT["NEXT_MONTH"] = "Pross. mese (clicca a lungo per il men\u00f9)";
+Calendar._TT["NEXT_YEAR"] = "Pross. anno (clicca a lungo per il men\u00f9)";
+Calendar._TT["SEL_DATE"] = "Seleziona data";
+Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
+Calendar._TT["PART_TODAY"] = " (oggi)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostra prima %s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Chiudi";
+Calendar._TT["TODAY"] = "Oggi";
+Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per cambiare il valore";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
+
+Calendar._TT["WK"] = "set";
+Calendar._TT["TIME"] = "Ora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-it.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-sk.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-sk.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-sk.js	(revision 1610)
@@ -0,0 +1,104 @@
+// ** I18N
+
+// Calendar SK language
+// Author: Peter Valach (pvalach@gmx.net)
+// Encoding: utf-8
+// Last update: 2003/10/29
+// Distributed under the same terms as the calendar itself.
+
+// full day names
+Calendar._DN = new Array
+("Nede\u00c4\u013ea",
+ "Pondelok",
+ "Utorok",
+ "Streda",
+ "\u0139\u00a0tvrtok",
+ "Piatok",
+ "Sobota",
+ "Nede\u00c4\u013ea");
+
+// short day names
+Calendar._SDN = new Array
+("Ned",
+ "Pon",
+ "Uto",
+ "Str",
+ "\u0139\u00a0tv",
+ "Pia",
+ "Sob",
+ "Ned");
+
+// full month names
+Calendar._MN = new Array
+("Janu\u0102\u02c7r",
+ "Febru\u0102\u02c7r",
+ "Marec",
+ "Apr\u0102\u00adl",
+ "M\u0102\u02c7j",
+ "J\u0102\u015fn",
+ "J\u0102\u015fl",
+ "August",
+ "September",
+ "Okt\u0102\u0142ber",
+ "November",
+ "December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "M\u0102\u02c7j",
+ "J\u0102\u015fn",
+ "J\u0102\u015fl",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "O kalend\u0102\u02c7ri";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
+"Posledn\u0102\u015f verziu n\u0102\u02c7jdete na: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuovan\u0102\u00a9 pod GNU LGPL.  Vi\u00c4\u0179 http://gnu.org/licenses/lgpl.html pre detaily." +
+"\n\n" +
+"V\u0102\u02ddber d\u0102\u02c7tumu:\n" +
+"- Pou\u0139\u013eite tla\u00c4\u0164idl\u0102\u02c7 \xab, \xbb pre v\u0102\u02ddber roku\n" +
+"- Pou\u0139\u013eite tla\u00c4\u0164idl\u0102\u02c7 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pre v\u0102\u02ddber mesiaca\n" +
+"- Ak ktor\u0102\u00a9ko\u00c4\u013evek z t\u0102\u02ddchto tla\u00c4\u0164idiel podr\u0139\u013e\u0102\u00adte dlh\u0139\u02c7ie, zobraz\u0102\u00ad sa r\u0102\u02ddchly v\u0102\u02ddber.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"V\u0102\u02ddber \u00c4\u0164asu:\n" +
+"- Kliknutie na niektor\u0102\u015f polo\u0139\u013eku \u00c4\u0164asu ju zv\u0102\u02dd\u0139\u02c7i\n" +
+"- Shift-klik ju zn\u0102\u00ad\u0139\u013ei\n" +
+"- Ak podr\u0139\u013e\u0102\u00adte tla\u00c4\u0164\u0102\u00adtko stla\u00c4\u0164en\u0102\u00a9, pos\u0102\u015fvan\u0102\u00adm men\u0102\u00adte hodnotu.";
+
+Calendar._TT["PREV_YEAR"] = "Predo\u0139\u02c7l\u0102\u02dd rok (podr\u0139\u013ete pre menu)";
+Calendar._TT["PREV_MONTH"] = "Predo\u0139\u02c7l\u0102\u02dd mesiac (podr\u0139\u013ete pre menu)";
+Calendar._TT["GO_TODAY"] = "Prejs\u0139\u0104 na dne\u0139\u02c7ok";
+Calendar._TT["NEXT_MONTH"] = "Nasl. mesiac (podr\u0139\u013ete pre menu)";
+Calendar._TT["NEXT_YEAR"] = "Nasl. rok (podr\u0139\u013ete pre menu)";
+Calendar._TT["SEL_DATE"] = "Zvo\u00c4\u013ete d\u0102\u02c7tum";
+Calendar._TT["DRAG_TO_MOVE"] = "Podr\u0139\u013ean\u0102\u00adm tla\u00c4\u0164\u0102\u00adtka zmen\u0102\u00adte polohu";
+Calendar._TT["PART_TODAY"] = " (dnes)";
+Calendar._TT["MON_FIRST"] = "Zobrazi\u0139\u0104 pondelok ako prv\u0102\u02dd";
+Calendar._TT["SUN_FIRST"] = "Zobrazi\u0139\u0104 nede\u00c4\u013eu ako prv\u0102\u015f";
+Calendar._TT["CLOSE"] = "Zavrie\u0139\u0104";
+Calendar._TT["TODAY"] = "Dnes";
+Calendar._TT["TIME_PART"] = "(Shift-)klik/\u0139\u0104ahanie zmen\u0102\u00ad hodnotu";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "$d. %m. %Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
+
+Calendar._TT["WK"] = "t\u0102\u02dd\u0139\u013e";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-sk.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-lt.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-lt.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-lt.js	(revision 1610)
@@ -0,0 +1,119 @@
+// ** I18N
+
+// Calendar LT language
+// Author: Martynas Majeris, <martynas@solmetra.lt>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sekmadienis",
+ "Pirmadienis",
+ "Antradienis",
+ "Tre\u010diadienis",
+ "Ketvirtadienis",
+ "Pentadienis",
+ "\u0160e\u0161tadienis",
+ "Sekmadienis");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sek",
+ "Pir",
+ "Ant",
+ "Tre",
+ "Ket",
+ "Pen",
+ "\u0160e\u0161",
+ "Sek");
+
+// full month names
+Calendar._MN = new Array
+("Sausis",
+ "Vasaris",
+ "Kovas",
+ "Balandis",
+ "Gegu\u017e\u0117",
+ "Bir\u017eelis",
+ "Liepa",
+ "Rugpj\u016btis",
+ "Rugs\u0117jis",
+ "Spalis",
+ "Lapkritis",
+ "Gruodis");
+
+// short month names
+Calendar._SMN = new Array
+("Sau",
+ "Vas",
+ "Kov",
+ "Bal",
+ "Geg",
+ "Bir",
+ "Lie",
+ "Rgp",
+ "Rgs",
+ "Spa",
+ "Lap",
+ "Gru");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Apie kalendori\u0173";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Naujausi\u0105 versij\u0105 rasite: http://www.dynarch.com/projects/calendar/\n" +
+"Platinamas pagal GNU LGPL licencij\u0105. Aplankykite http://gnu.org/licenses/lgpl.html" +
+"\n\n" +
+"Datos pasirinkimas:\n" +
+"- Met\u0173 pasirinkimas: \xab, \xbb\n" +
+"- M\u0117nesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
+"- Nuspauskite ir laikykite pel\u0117s klavi\u0161\u0105 greitesniam pasirinkimui.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Laiko pasirinkimas:\n" +
+"- Spustelkite ant valand\u0173 arba minu\u010di\u0173 - skai\u010dius padid\u0117s vienetu.\n" +
+"- Jei spausite kartu su Shift, skai\u010dius suma\u017e\u0117s.\n" +
+"- Greitam pasirinkimui spustelkite ir pajudinkite pel\u0119.";
+
+Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
+Calendar._TT["PREV_MONTH"] = "Ankstesnis m\u0117nuo (laikykite, jei norite meniu)";
+Calendar._TT["GO_TODAY"] = "Pasirinkti \u0161iandien\u0105";
+Calendar._TT["NEXT_MONTH"] = "Kitas m\u0117nuo (laikykite, jei norite meniu)";
+Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
+Calendar._TT["SEL_DATE"] = "Pasirinkite dat\u0105";
+Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
+Calendar._TT["PART_TODAY"] = " (\u0161iandien)";
+Calendar._TT["MON_FIRST"] = "Pirma savait\u0117s diena - pirmadienis";
+Calendar._TT["SUN_FIRST"] = "Pirma savait\u0117s diena - sekmadienis";
+Calendar._TT["CLOSE"] = "U\u017edaryti";
+Calendar._TT["TODAY"] = "\u0160iandien";
+Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
+
+Calendar._TT["WK"] = "sav";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-lt.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-ro.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-ro.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-ro.js	(revision 1610)
@@ -0,0 +1,66 @@
+// ** I18N
+Calendar._DN = new Array
+("Duminic\u0103",
+ "Luni",
+ "Mar\u0163i",
+ "Miercuri",
+ "Joi",
+ "Vineri",
+ "S\u00e2mb\u0103t\u0103",
+ "Duminic\u0103");
+Calendar._SDN_len = 2;
+Calendar._MN = new Array
+("Ianuarie",
+ "Februarie",
+ "Martie",
+ "Aprilie",
+ "Mai",
+ "Iunie",
+ "Iulie",
+ "August",
+ "Septembrie",
+ "Octombrie",
+ "Noiembrie",
+ "Decembrie");
+
+// tooltips
+Calendar._TT = {};
+
+Calendar._TT["INFO"] = "Despre calendar";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Pentru ultima versiune vizita\u0163i: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuit sub GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Selec\u0163ia datei:\n" +
+"- Folosi\u0163i butoanele \xab, \xbb pentru a selecta anul\n" +
+"- Folosi\u0163i butoanele " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pentru a selecta luna\n" +
+"- Tine\u0163i butonul mouse-ului ap\u0103sat pentru selec\u0163ie mai rapid\u0103.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selec\u0163ia orei:\n" +
+"- Click pe ora sau minut pentru a m\u0103ri valoarea cu 1\n" +
+"- Sau Shift-Click pentru a mic\u015fora valoarea cu 1\n" +
+"- Sau Click \u015fi drag pentru a selecta mai repede.";
+
+Calendar._TT["PREV_YEAR"] = "Anul precedent (lung pt menu)";
+Calendar._TT["PREV_MONTH"] = "Luna precedent\u0103 (lung pt menu)";
+Calendar._TT["GO_TODAY"] = "Data de azi";
+Calendar._TT["NEXT_MONTH"] = "Luna urm\u0103toare (lung pt menu)";
+Calendar._TT["NEXT_YEAR"] = "Anul urm\u0103tor (lung pt menu)";
+Calendar._TT["SEL_DATE"] = "Selecteaz\u0103 data";
+Calendar._TT["DRAG_TO_MOVE"] = "Trage pentru a mi\u015fca";
+Calendar._TT["PART_TODAY"] = " (ast\u0103zi)";
+Calendar._TT["DAY_FIRST"] = "Afi\u015feaz\u0103 %s prima zi";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["CLOSE"] = "\u00cenchide";
+Calendar._TT["TODAY"] = "Ast\u0103zi";
+Calendar._TT["TIME_PART"] = "(Shift-)Click sau drag pentru a selecta";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%A, %d %B";
+
+Calendar._TT["WK"] = "spt";
+Calendar._TT["TIME"] = "Ora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-ro.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-lv.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-lv.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-lv.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar LV language
+// Author: Juris Valdovskis, <juris@dc.lv>
+// Encoding: cp1257
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sv\u0113tdiena",
+ "Pirmdiena",
+ "Otrdiena",
+ "Tre\u0161diena",
+ "Ceturdiena",
+ "Piektdiena",
+ "Sestdiena",
+ "Sv\u0113tdiena");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sv",
+ "Pr",
+ "Ot",
+ "Tr",
+ "Ce",
+ "Pk",
+ "Se",
+ "Sv");
+
+// full month names
+Calendar._MN = new Array
+("Janv\u0101ris",
+ "Febru\u0101ris",
+ "Marts",
+ "Apr\u012blis",
+ "Maijs",
+ "J\u016bnijs",
+ "J\u016blijs",
+ "Augusts",
+ "Septembris",
+ "Oktobris",
+ "Novembris",
+ "Decembris");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mai",
+ "J\u016bn",
+ "J\u016bl",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Par kalend\u0101ru";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Datuma izv\u0113le:\n" +
+"- Izmanto \xab, \xbb pogas, lai izv\u0113l\u0113tos gadu\n" +
+"- Izmanto " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "pogas, lai izv\u0113l\u0113tos m\u0113nesi\n" +
+"- Turi nospiestu peles pogu uz jebkuru no augst\u0101k min\u0113taj\u0101m pog\u0101m, lai pa\u0101trin\u0101tu izv\u0113li.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Laika izv\u0113le:\n" +
+"- Uzklik\u0161\u0137ini uz jebkuru no laika da\u013c\u0101m, lai palielin\u0101tu to\n" +
+"- vai Shift-klik\u0161\u0137is, lai samazin\u0101tu to\n" +
+"- vai noklik\u0161\u0137ini un velc uz attiec\u012bgo virzienu lai main\u012btu \u0101tr\u0101k.";
+
+Calendar._TT["PREV_YEAR"] = "Iepr. gads (turi izv\u0113lnei)";
+Calendar._TT["PREV_MONTH"] = "Iepr. m\u0113nesis (turi izv\u0113lnei)";
+Calendar._TT["GO_TODAY"] = "\u0160odien";
+Calendar._TT["NEXT_MONTH"] = "N\u0101ko\u0161ais m\u0113nesis (turi izv\u0113lnei)";
+Calendar._TT["NEXT_YEAR"] = "N\u0101ko\u0161ais gads (turi izv\u0113lnei)";
+Calendar._TT["SEL_DATE"] = "Izv\u0113lies datumu";
+Calendar._TT["DRAG_TO_MOVE"] = "Velc, lai p\u0101rvietotu";
+Calendar._TT["PART_TODAY"] = " (\u0161odien)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Att\u0113lot %s k\u0101 pirmo";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "1,7";
+
+Calendar._TT["CLOSE"] = "Aizv\u0113rt";
+Calendar._TT["TODAY"] = "\u0160odien";
+Calendar._TT["TIME_PART"] = "(Shift-)Klik\u0161\u0137is vai p\u0101rvieto, lai main\u012btu";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Laiks:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-lv.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-ca.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-ca.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-ca.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar CA language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Diumenge",
+ "Dilluns",
+ "Dimarts",
+ "Dimecres",
+ "Dijous",
+ "Divendres",
+ "Dissabte",
+ "Diumenge");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Diu",
+ "Dil",
+ "Dmt",
+ "Dmc",
+ "Dij",
+ "Div",
+ "Dis",
+ "Diu");
+
+// full month names
+Calendar._MN = new Array
+("Gener",
+ "Febrer",
+ "Mar\u00e7",
+ "Abril",
+ "Maig",
+ "Juny",
+ "Juliol",
+ "Agost",
+ "Setembre",
+ "Octubre",
+ "Novembre",
+ "Desembre");
+
+// short month names
+Calendar._SMN = new Array
+("Gen",
+ "Feb",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Oct",
+ "Nov",
+ "Des");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre el calendari";
+
+Calendar._TT["ABOUT"] =
+"DHTML Selector de Data/Hora\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Sel.lecci\u00f3 de Dates:\n" +
+"- Fes servir els botons \xab, \xbb per sel.leccionar l'any\n" +
+"- Fes servir els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per se.lecciconar el mes\n" +
+"- Mant\u00e9 el ratol\u00ed apretat en qualsevol dels anteriors per sel.lecci\u00f3 r\u00e0pida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- claca en qualsevol de les parts de la hora per augmentar-les\n" +
+"- o Shift-click per decrementar-la\n" +
+"- or click and arrastra per sel.lecci\u00f3 r\u00e0pida.";
+
+Calendar._TT["PREV_YEAR"] = "Any anterior (Mantenir per menu)";
+Calendar._TT["PREV_MONTH"] = "Mes anterior (Mantenir per menu)";
+Calendar._TT["GO_TODAY"] = "Anar a avui";
+Calendar._TT["NEXT_MONTH"] = "Mes seg\u00fcent (Mantenir per menu)";
+Calendar._TT["NEXT_YEAR"] = "Any seg\u00fcent (Mantenir per menu)";
+Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
+Calendar._TT["PART_TODAY"] = " (avui)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Tanca";
+Calendar._TT["TODAY"] = "Avui";
+Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "st";
+Calendar._TT["TIME"] = "Hora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-ca.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-da.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-da.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-da.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar DA language
+// Author: Michael Thingmand Henriksen, <michael (a) thingmand dot dk>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible. We strongly believe that
+// Unicode is the answer to a real internationalized world. Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("S\u00f8ndag",
+"Mandag",
+"Tirsdag",
+"Onsdag",
+"Torsdag",
+"Fredag",
+"L\u00f8rdag",
+"S\u00f8ndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary. We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+// Calendar._SDN_len = N; // short day name length
+// Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("S\u00f8n",
+"Man",
+"Tir",
+"Ons",
+"Tor",
+"Fre",
+"L\u00f8r",
+"S\u00f8n");
+
+// full month names
+Calendar._MN = new Array
+("Januar",
+"Februar",
+"Marts",
+"April",
+"Maj",
+"Juni",
+"Juli",
+"August",
+"September",
+"Oktober",
+"November",
+"December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+"Feb",
+"Mar",
+"Apr",
+"Maj",
+"Jun",
+"Jul",
+"Aug",
+"Sep",
+"Okt",
+"Nov",
+"Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om Kalenderen";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For den seneste version bes\u00f8g: http://www.dynarch.com/projects/calendar/\n"; +
+"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
+"\n\n" +
+"Valg af dato:\n" +
+"- Brug \xab, \xbb knapperne for at v\u00e6lge \u00e5r\n" +
+"- Brug " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knapperne for at v\u00e6lge m\u00e5ned\n" +
+"- Hold knappen p\u00e5 musen nede p\u00e5 knapperne ovenfor for hurtigere valg.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Valg af tid:\n" +
+"- Klik p\u00e5 en vilk\u00e5rlig del for st\u00f8rre v\u00e6rdi\n" +
+"- eller Shift-klik for for mindre v\u00e6rdi\n" +
+"- eller klik og tr\u00e6k for hurtigere valg.";
+
+Calendar._TT["PREV_YEAR"] = "\u00c9t \u00e5r tilbage (hold for menu)";
+Calendar._TT["PREV_MONTH"] = "\u00c9n m\u00e5ned tilbage (hold for menu)";
+Calendar._TT["GO_TODAY"] = "G\u00e5 til i dag";
+Calendar._TT["NEXT_MONTH"] = "\u00c9n m\u00e5ned frem (hold for menu)";
+Calendar._TT["NEXT_YEAR"] = "\u00c9t \u00e5r frem (hold for menu)";
+Calendar._TT["SEL_DATE"] = "V\u00e6lg dag";
+Calendar._TT["DRAG_TO_MOVE"] = "Tr\u00e6k vinduet";
+Calendar._TT["PART_TODAY"] = " (i dag)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Vis %s f\u00f8rst";
+
+// This may be locale-dependent. It specifies the week-end days, as an array
+// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Luk";
+Calendar._TT["TODAY"] = "I dag";
+Calendar._TT["TIME_PART"] = "(Shift-)klik eller tr\u00e6k for at \u00e6ndre v\u00e6rdi";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Uge";
+Calendar._TT["TIME"] = "Tid:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-da.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-tr.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-tr.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-tr.js	(revision 1610)
@@ -0,0 +1,61 @@
+//////////////////////////////////////////////////////////////////////////////////////////////
+//	Turkish Translation by Nuri AKMAN
+//	Location: Ankara/TURKEY
+//	e-mail	: nuriakman@hotmail.com
+//	Date	: April, 9 2003
+//
+//	Note: if Turkish Characters does not shown on you screen
+//		  please include falowing line your html code:
+//
+//		  <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
+//
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+// ** I18N
+Calendar._DN = new Array
+("Pazar",
+ "Pazartesi",
+ "Sal\u0131",
+ "\u00c7ar\u015famba",
+ "Per\u015fembe",
+ "Cuma",
+ "Cumartesi",
+ "Pazar");
+Calendar._MN = new Array
+("Ocak",
+ "\u015eubat",
+ "Mart",
+ "Nisan",
+ "May\u0131s",
+ "Haziran",
+ "Temmuz",
+ "A\u011fustos",
+ "Eyl\u00fcl",
+ "Ekim",
+ "Kas\u0131m",
+ "Aral\u0131k");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Haftan\u0131n ilk g\u00fcn\u00fcn\u00fc kayd\u0131r";
+Calendar._TT["PREV_YEAR"] = "\u00d6nceki Y\u0131l (Men\u00fc i\u00e7in bas\u0131l\u0131 tutunuz)";
+Calendar._TT["PREV_MONTH"] = "\u00d6nceki Ay (Men\u00fc i\u00e7in bas\u0131l\u0131 tutunuz)";
+Calendar._TT["GO_TODAY"] = "Bug\u00fcn'e git";
+Calendar._TT["NEXT_MONTH"] = "Sonraki Ay (Men\u00fc i\u00e7in bas\u0131l\u0131 tutunuz)";
+Calendar._TT["NEXT_YEAR"] = "Sonraki Y\u0131l (Men\u00fc i\u00e7in bas\u0131l\u0131 tutunuz)";
+Calendar._TT["SEL_DATE"] = "Tarih se\u00e7iniz";
+Calendar._TT["DRAG_TO_MOVE"] = "Ta\u015f\u0131mak i\u00e7in s\u00fcr\u00fckleyiniz";
+Calendar._TT["PART_TODAY"] = " (bug\u00fcn)";
+Calendar._TT["MON_FIRST"] = "Takvim Pazartesi g\u00fcn\u00fcnden ba\u015flas\u0131n";
+Calendar._TT["SUN_FIRST"] = "Takvim Pazar g\u00fcn\u00fcnden ba\u015flas\u0131n";
+Calendar._TT["CLOSE"] = "Kapat";
+Calendar._TT["TODAY"] = "Bug\u00fcn";
+Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
+Calendar._TT["TT_DATE_FORMAT"] = "d MM y, DD";
+Calendar._TT["WK"] = "Hafta";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["TIME"] = "Time:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-tr.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-ru.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-ru.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-ru.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar RU language
+// Translation: Sly Golovanov, http://golovanov.net, <sly@golovanov.net>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435",
+ "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a",
+ "\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
+ "\u0441\u0440\u0435\u0434\u0430",
+ "\u0447\u0435\u0442\u0432\u0435\u0440\u0433",
+ "\u043f\u044f\u0442\u043d\u0438\u0446\u0430",
+ "\u0441\u0443\u0431\u0431\u043e\u0442\u0430",
+ "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("\u0432\u0441\u043a",
+ "\u043f\u043e\u043d",
+ "\u0432\u0442\u0440",
+ "\u0441\u0440\u0434",
+ "\u0447\u0435\u0442",
+ "\u043f\u044f\u0442",
+ "\u0441\u0443\u0431",
+ "\u0432\u0441\u043a");
+
+// full month names
+Calendar._MN = new Array
+("\u044f\u043d\u0432\u0430\u0440\u044c",
+ "\u0444\u0435\u0432\u0440\u0430\u043b\u044c",
+ "\u043c\u0430\u0440\u0442",
+ "\u0430\u043f\u0440\u0435\u043b\u044c",
+ "\u043c\u0430\u0439",
+ "\u0438\u044e\u043d\u044c",
+ "\u0438\u044e\u043b\u044c",
+ "\u0430\u0432\u0433\u0443\u0441\u0442",
+ "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c",
+ "\u043e\u043a\u0442\u044f\u0431\u0440\u044c",
+ "\u043d\u043e\u044f\u0431\u0440\u044c",
+ "\u0434\u0435\u043a\u0430\u0431\u0440\u044c");
+
+// short month names
+Calendar._SMN = new Array
+("\u044f\u043d\u0432",
+ "\u0444\u0435\u0432",
+ "\u043c\u0430\u0440",
+ "\u0430\u043f\u0440",
+ "\u043c\u0430\u0439",
+ "\u0438\u044e\u043d",
+ "\u0438\u044e\u043b",
+ "\u0430\u0432\u0433",
+ "\u0441\u0435\u043d",
+ "\u043e\u043a\u0442",
+ "\u043d\u043e\u044f",
+ "\u0434\u0435\u043a");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u041e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0435...";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"\u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0430\u0442\u0443:\n" +
+"- \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \xab, \xbb \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0433\u043e\u0434\n" +
+"- \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043d\u043e\u043f\u043e\u043a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0441\u044f\u0446\n" +
+"- \u041f\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u044d\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u044b\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u043d\u044e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"\u041a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f:\n" +
+"- \u041f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u0447\u0430\u0441\u0430\u0445 \u0438\u043b\u0438 \u043c\u0438\u043d\u0443\u0442\u0430\u0445 \u043e\u043d\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f\n" +
+"- \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u0441 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439 Shift \u043e\u043d\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f\n" +
+"- \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439 \u0432\u043b\u0435\u0432\u043e/\u0432\u043f\u0440\u0430\u0432\u043e, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435.";
+
+Calendar._TT["PREV_YEAR"] = "\u041d\u0430 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 (\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044e)";
+Calendar._TT["PREV_MONTH"] = "\u041d\u0430 \u043c\u0435\u0441\u044f\u0446 \u043d\u0430\u0437\u0430\u0434 (\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044e)";
+Calendar._TT["GO_TODAY"] = "\u0421\u0435\u0433\u043e\u0434\u043d\u044f";
+Calendar._TT["NEXT_MONTH"] = "\u041d\u0430 \u043c\u0435\u0441\u044f\u0446 \u0432\u043f\u0435\u0440\u0435\u0434 (\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044e)";
+Calendar._TT["NEXT_YEAR"] = "\u041d\u0430 \u0433\u043e\u0434 \u0432\u043f\u0435\u0440\u0435\u0434 (\u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044e)";
+Calendar._TT["SEL_DATE"] = "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0430\u0442\u0443";
+Calendar._TT["DRAG_TO_MOVE"] = "\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0439\u0442\u0435 \u043c\u044b\u0448\u043a\u043e\u0439";
+Calendar._TT["PART_TODAY"] = " (\u0441\u0435\u0433\u043e\u0434\u043d\u044f)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "\u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 %s";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "\u0417\u0430\u043a\u0440\u044b\u0442\u044c";
+Calendar._TT["TODAY"] = "\u0421\u0435\u0433\u043e\u0434\u043d\u044f";
+Calendar._TT["TIME_PART"] = "(Shift-)\u043a\u043b\u0438\u043a \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
+
+Calendar._TT["WK"] = "\u043d\u0435\u0434";
+Calendar._TT["TIME"] = "\u0412\u0440\u0435\u043c\u044f:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-ru.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-af.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-af.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-af.js	(revision 1610)
@@ -0,0 +1,48 @@
+// ** I18N Afrikaans
+Calendar._DN = new Array
+("Sondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrydag",
+ "Saterdag",
+ "Sondag");
+Calendar._MN = new Array
+("Januarie",
+ "Februarie",
+ "Maart",
+ "April",
+ "Mei",
+ "Junie",
+ "Julie",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
+Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
+Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
+Calendar._TT["GO_TODAY"] = "Gaan na vandag";
+Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
+Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
+Calendar._TT["SEL_DATE"] = "Kies datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
+Calendar._TT["PART_TODAY"] = " (vandag)";
+Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
+Calendar._TT["SUN_FIRST"] = "Display Sunday first";
+Calendar._TT["CLOSE"] = "Close";
+Calendar._TT["TODAY"] = "Today";
+
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-af.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-bg.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-bg.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-bg.js	(revision 1610)
@@ -0,0 +1,125 @@
+// ** I18N
+
+// Calendar BG language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Translator: Valentin Sheiretsky, <valio@valio.eu.org>
+// Encoding: Windows-1251
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("\u041d\u0435\u0434\u0435\u043b\u044f",
+ "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
+ "\u0412\u0442\u043e\u0440\u043d\u0438\u043a",
+ "\u0421\u0440\u044f\u0434\u0430",
+ "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
+ "\u041f\u0435\u0442\u044a\u043a",
+ "\u0421\u044a\u0431\u043e\u0442\u0430",
+ "\u041d\u0435\u0434\u0435\u043b\u044f");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("\u041d\u0435\u0434",
+ "\u041f\u043e\u043d",
+ "\u0412\u0442\u043e",
+ "\u0421\u0440\u044f",
+ "\u0427\u0435\u0442",
+ "\u041f\u0435\u0442",
+ "\u0421\u044a\u0431",
+ "\u041d\u0435\u0434");
+
+// full month names
+Calendar._MN = new Array
+("\u042f\u043d\u0443\u0430\u0440\u0438",
+ "\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
+ "\u041c\u0430\u0440\u0442",
+ "\u0410\u043f\u0440\u0438\u043b",
+ "\u041c\u0430\u0439",
+ "\u042e\u043d\u0438",
+ "\u042e\u043b\u0438",
+ "\u0410\u0432\u0433\u0443\u0441\u0442",
+ "\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
+ "\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
+ "\u041d\u043e\u0435\u043c\u0432\u0440\u0438",
+ "\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438");
+
+// short month names
+Calendar._SMN = new Array
+("\u042f\u043d\u0443",
+ "\u0424\u0435\u0432",
+ "\u041c\u0430\u0440",
+ "\u0410\u043f\u0440",
+ "\u041c\u0430\u0439",
+ "\u042e\u043d\u0438",
+ "\u042e\u043b\u0438",
+ "\u0410\u0432\u0433",
+ "\u0421\u0435\u043f",
+ "\u041e\u043a\u0442",
+ "\u041d\u043e\u0435",
+ "\u0414\u0435\u043a");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0430";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "\u041f\u0440\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 (\u0437\u0430\u0434\u0440\u044a\u0436\u0442\u0435 \u0437\u0430 \u043c\u0435\u043d\u044e)";
+Calendar._TT["PREV_MONTH"] = "\u041f\u0440\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446 (\u0437\u0430\u0434\u0440\u044a\u0436\u0442\u0435 \u0437\u0430 \u043c\u0435\u043d\u044e)";
+Calendar._TT["GO_TODAY"] = "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u043d\u0435\u0441";
+Calendar._TT["NEXT_MONTH"] = "\u0421\u043b\u0435\u0434\u0432\u0430\u0449 \u043c\u0435\u0441\u0435\u0446 (\u0437\u0430\u0434\u0440\u044a\u0436\u0442\u0435 \u0437\u0430 \u043c\u0435\u043d\u044e)";
+Calendar._TT["NEXT_YEAR"] = "\u0421\u043b\u0435\u0434\u0432\u0430\u0449\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 (\u0437\u0430\u0434\u0440\u044a\u0436\u0442\u0435 \u0437\u0430 \u043c\u0435\u043d\u044e)";
+Calendar._TT["SEL_DATE"] = "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u0442\u0430";
+Calendar._TT["DRAG_TO_MOVE"] = "\u041f\u0440\u0435\u043c\u0435\u0441\u0442\u0432\u0430\u043d\u0435";
+Calendar._TT["PART_TODAY"] = " (\u0434\u043d\u0435\u0441)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "%s \u043a\u0430\u0442\u043e \u043f\u044a\u0440\u0432\u0438 \u0434\u0435\u043d";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "\u0417\u0430\u0442\u0432\u043e\u0440\u0435\u0442\u0435";
+Calendar._TT["TODAY"] = "\u0414\u043d\u0435\u0441";
+Calendar._TT["TIME_PART"] = "(Shift-)Click \u0438\u043b\u0438 drag \u0437\u0430 \u0434\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u0442\u0430";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
+
+Calendar._TT["WK"] = "\u0421\u0435\u0434\u043c";
+Calendar._TT["TIME"] = "\u0427\u0430\u0441:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-bg.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-sv.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-sv.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-sv.js	(revision 1610)
@@ -0,0 +1,97 @@
+// ** I18N
+
+// Calendar SV language (Swedish, svenska)
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Translation team: <sv@li.org>
+// Translator: Leonard Norrg\u00e5rd <leonard.norrgard@refactor.fi>
+// Last translator: Leonard Norrg\u00e5rd <leonard.norrgard@refactor.fi>
+// Encoding: iso-latin-1
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("s\u00f6ndag",
+ "m\u00e5ndag",
+ "tisdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f6rdag",
+ "s\u00f6ndag");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+Calendar._SDN_len = 2;
+Calendar._SMN_len = 3;
+
+// full month names
+Calendar._MN = new Array
+("januari",
+ "februari",
+ "mars",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "augusti",
+ "september",
+ "oktober",
+ "november",
+ "december");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Om kalendern";
+
+Calendar._TT["ABOUT"] =
+"DHTML Datum/tid-v\u00e4ljare\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"F\u00f6r senaste version g\u00e5 till: http://www.dynarch.com/projects/calendar/\n" +
+"Distribueras under GNU LGPL.  Se http://gnu.org/licenses/lgpl.html f\u00f6r detaljer." +
+"\n\n" +
+"Val av datum:\n" +
+"- Anv\u00e4nd knapparna \xab, \xbb f\u00f6r att v\u00e4lja \u00e5r\n" +
+"- Anv\u00e4nd knapparna " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " f\u00f6r att v\u00e4lja m\u00e5nad\n" +
+"- H\u00e5ll musknappen nedtryckt p\u00e5 n\u00e5gon av ovanst\u00e5ende knappar f\u00f6r snabbare val.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Val av tid:\n" +
+"- Klicka p\u00e5 en del av tiden f\u00f6r att \u00f6ka den delen\n" +
+"- eller skift-klicka f\u00f6r att minska den\n" +
+"- eller klicka och drag f\u00f6r snabbare val.";
+
+Calendar._TT["PREV_YEAR"] = "F\u00f6reg\u00e5ende \u00e5r (h\u00e5ll f\u00f6r menu)";
+Calendar._TT["PREV_MONTH"] = "F\u00f6reg\u00e5ende m\u00e5nad (h\u00e5ll f\u00f6r menu)";
+Calendar._TT["GO_TODAY"] = "G\u00e5 till dagens datum";
+Calendar._TT["NEXT_MONTH"] = "F\u00f6ljande m\u00e5nad (h\u00e5ll f\u00f6r menu)";
+Calendar._TT["NEXT_YEAR"] = "F\u00f6ljande \u00e5r (h\u00e5ll f\u00f6r menu)";
+Calendar._TT["SEL_DATE"] = "V\u00e4lj datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Drag f\u00f6r att flytta";
+Calendar._TT["PART_TODAY"] = " (idag)";
+Calendar._TT["MON_FIRST"] = "Visa m\u00e5ndag f\u00f6rst";
+Calendar._TT["SUN_FIRST"] = "Visa s\u00f6ndag f\u00f6rst";
+Calendar._TT["CLOSE"] = "St\u00e4ng";
+Calendar._TT["TODAY"] = "Idag";
+Calendar._TT["TIME_PART"] = "(Skift-)klicka eller drag f\u00f6r att \u00e4ndra tid";
+
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%A %d %b %Y";
+
+Calendar._TT["WK"] = "vecka";
+
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+Calendar._TT["WEEKEND"] = "0,6";
+Calendar._TT["TIME"] = "Time:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-sv.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-he.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-he.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-he.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Idan Sofer, <idan@idanso.dyndns.org>
+// Encoding: UTF-8
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("\u05e8\u05d0\u05e9\u05d5\u05df",
+ "\u05e9\u05e0\u05d9",
+ "\u05e9\u05dc\u05d9\u05e9\u05d9",
+ "\u05e8\u05d1\u05d9\u05e2\u05d9",
+ "\u05d7\u05de\u05d9\u05e9\u05d9",
+ "\u05e9\u05d9\u05e9\u05d9",
+ "\u05e9\u05d1\u05ea",
+ "\u05e8\u05d0\u05e9\u05d5\u05df");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("\u05d0",
+ "\u05d1",
+ "\u05d2",
+ "\u05d3",
+ "\u05d4",
+ "\u05d5",
+ "\u05e9",
+ "\u05d0");
+
+// full month names
+Calendar._MN = new Array
+("\u05d9\u05e0\u05d5\u05d0\u05e8",
+ "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8",
+ "\u05de\u05e8\u05e5",
+ "\u05d0\u05e4\u05e8\u05d9\u05dc",
+ "\u05de\u05d0\u05d9",
+ "\u05d9\u05d5\u05e0\u05d9",
+ "\u05d9\u05d5\u05dc\u05d9",
+ "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8",
+ "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8",
+ "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8",
+ "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8",
+ "\u05d3\u05e6\u05de\u05d1\u05e8");
+
+// short month names
+Calendar._SMN = new Array
+("\u05d9\u05e0\u05d0",
+ "\u05e4\u05d1\u05e8",
+ "\u05de\u05e8\u05e5",
+ "\u05d0\u05e4\u05e8",
+ "\u05de\u05d0\u05d9",
+ "\u05d9\u05d5\u05e0",
+ "\u05d9\u05d5\u05dc",
+ "\u05d0\u05d5\u05d2",
+ "\u05e1\u05e4\u05d8",
+ "\u05d0\u05d5\u05e7",
+ "\u05e0\u05d5\u05d1",
+ "\u05d3\u05e6\u05de");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "\u05d0\u05d5\u05d3\u05d5\u05ea \u05d4\u05e9\u05e0\u05ea\u05d5\u05df";
+
+Calendar._TT["ABOUT"] =
+"\u05d1\u05d7\u05e8\u05df \u05ea\u05d0\u05e8\u05d9\u05da/\u05e9\u05e2\u05d4 DHTML\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"\u05d4\u05d2\u05d9\u05e8\u05e1\u05d0 \u05d4\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05d6\u05de\u05d9\u05e0\u05d4 \u05d1: http://www.dynarch.com/projects/calendar/\n" +
+"\u05de\u05d5\u05e4\u05e5 \u05ea\u05d7\u05ea \u05d6\u05d9\u05db\u05d9\u05d5\u05df \u05d4 GNU LGPL.  \u05e2\u05d9\u05d9\u05df \u05d1 http://gnu.org/licenses/lgpl.html \u05dc\u05e4\u05e8\u05d8\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd." +
+"\n\n" +
+\u05d1\u05d7\u05d9\u05e8\u05ea \u05ea\u05d0\u05e8\u05d9\u05da:\n" +
+"- \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd \xab, \xbb \u05dc\u05d1\u05d7\u05d9\u05e8\u05ea \u05e9\u05e0\u05d4\n" +
+"- \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " \u05dc\u05d1\u05d7\u05d9\u05e8\u05ea \u05d7\u05d5\u05d3\u05e9\n" +
+"- \u05d4\u05d7\u05d6\u05e7 \u05d4\u05e2\u05db\u05d1\u05e8 \u05dc\u05d7\u05d5\u05e5 \u05de\u05e2\u05dc \u05d4\u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd \u05d4\u05de\u05d5\u05d6\u05db\u05e8\u05d9\u05dd \u05dc\u05e2\u05d9\u05dc \u05dc\u05d1\u05d7\u05d9\u05e8\u05d4 \u05de\u05d4\u05d9\u05e8\u05d4 \u05d9\u05d5\u05ea\u05e8.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"\u05d1\u05d7\u05d9\u05e8\u05ea \u05d6\u05de\u05df:\n" +
+"- \u05dc\u05d7\u05e5 \u05e2\u05dc \u05db\u05dc \u05d0\u05d7\u05d3 \u05de\u05d7\u05dc\u05e7\u05d9 \u05d4\u05d6\u05de\u05df \u05db\u05d3\u05d9 \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3\n" +
+"- \u05d0\u05d5 shift \u05d1\u05e9\u05d9\u05dc\u05d5\u05d1 \u05e2\u05dd \u05dc\u05d7\u05d9\u05e6\u05d4 \u05db\u05d3\u05d9 \u05dc\u05d4\u05d7\u05e1\u05d9\u05e8\n" +
+"- \u05d0\u05d5 \u05dc\u05d7\u05e5 \u05d5\u05d2\u05e8\u05d5\u05e8 \u05dc\u05e4\u05e2\u05d5\u05dc\u05d4 \u05de\u05d4\u05d9\u05e8\u05d4 \u05d9\u05d5\u05ea\u05e8.";
+
+Calendar._TT["PREV_YEAR"] = "\u05e9\u05e0\u05d4 \u05e7\u05d5\u05d3\u05de\u05ea - \u05d4\u05d7\u05d6\u05e7 \u05dc\u05e7\u05d1\u05dc\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8";
+Calendar._TT["PREV_MONTH"] = "\u05d7\u05d5\u05d3\u05e9 \u05e7\u05d5\u05d3\u05dd - \u05d4\u05d7\u05d6\u05e7 \u05dc\u05e7\u05d1\u05dc\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8";
+Calendar._TT["GO_TODAY"] = "\u05e2\u05d1\u05d5\u05e8 \u05dc\u05d4\u05d9\u05d5\u05dd";
+Calendar._TT["NEXT_MONTH"] = "\u05d7\u05d5\u05d3\u05e9 \u05d4\u05d1\u05d0 - \u05d4\u05d7\u05d6\u05e7 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8";
+Calendar._TT["NEXT_YEAR"] = "\u05e9\u05e0\u05d4 \u05d4\u05d1\u05d0\u05d4 - \u05d4\u05d7\u05d6\u05e7 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8";
+Calendar._TT["SEL_DATE"] = "\u05d1\u05d7\u05e8 \u05ea\u05d0\u05e8\u05d9\u05da";
+Calendar._TT["DRAG_TO_MOVE"] = "\u05d2\u05e8\u05d5\u05e8 \u05dc\u05d4\u05d6\u05d6\u05d4";
+Calendar._TT["PART_TODAY"] = " )\u05d4\u05d9\u05d5\u05dd(";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "\u05d4\u05e6\u05d2 %s \u05e7\u05d5\u05d3\u05dd";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "6";
+
+Calendar._TT["CLOSE"] = "\u05e1\u05d2\u05d5\u05e8";
+Calendar._TT["TODAY"] = "\u05d4\u05d9\u05d5\u05dd";
+Calendar._TT["TIME_PART"] = "(\u05e9\u05d9\u05e4\u05d8-)\u05dc\u05d7\u05e5 \u05d5\u05d2\u05e8\u05d5\u05e8 \u05db\u05d3\u05d9 \u05dc\u05e9\u05e0\u05d5\u05ea \u05e2\u05e8\u05da";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "\u05e9\u05e2\u05d4::";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-he.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-al.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-al.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-al.js	(revision 1610)
@@ -0,0 +1,101 @@
+// Calendar ALBANIAN language
+//author Rigels Gordani rige@hotmail.com
+
+// ditet
+Calendar._DN = new Array
+("E Diele",
+"E Hene",
+"E Marte",
+"E Merkure",
+"E Enjte",
+"E Premte",
+"E Shtune",
+"E Diele");
+
+//ditet shkurt
+Calendar._SDN = new Array
+("Die",
+"Hen",
+"Mar",
+"Mer",
+"Enj",
+"Pre",
+"Sht",
+"Die");
+
+// muajt
+Calendar._MN = new Array
+("Janar",
+"Shkurt",
+"Mars",
+"Prill",
+"Maj",
+"Qeshor",
+"Korrik",
+"Gusht",
+"Shtator",
+"Tetor",
+"Nentor",
+"Dhjetor");
+
+// muajte shkurt
+Calendar._SMN = new Array
+("Jan",
+"Shk",
+"Mar",
+"Pri",
+"Maj",
+"Qes",
+"Kor",
+"Gus",
+"Sht",
+"Tet",
+"Nen",
+"Dhj");
+
+// ndihmesa
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Per kalendarin";
+
+Calendar._TT["ABOUT"] =
+"Zgjedhes i ores/dates ne DHTML \n" +
+"\n\n" +"Zgjedhja e Dates:\n" +
+"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
+"- Perdor  butonat" + String.fromCharCode(0x2039) + ", " + 
+String.fromCharCode(0x203a) +
+" per te  zgjedhur muajin\n" +
+"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Zgjedhja e kohes:\n" +
+"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
+"- ose kliko me Shift per ta zvogeluar ate\n" +
+"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
+
+Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
+Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
+Calendar._TT["GO_TODAY"] = "Sot";
+Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
+Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
+Calendar._TT["SEL_DATE"] = "Zgjidh daten";
+Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
+Calendar._TT["PART_TODAY"] = " (sot)";
+
+// "%s" eshte dita e pare e javes
+// %s do te zevendesohet me emrin e dite
+Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
+
+
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Mbyll";
+Calendar._TT["TODAY"] = "Sot";
+Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar 
+vleren";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "Java";
+Calendar._TT["TIME"] = "Koha:";
+

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-al.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-en.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-en.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-en.js	(revision 1610)
@@ -0,0 +1,127 @@
+// ** I18N
+
+// Calendar EN language
+// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ "Sunday");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat",
+ "Sun");
+
+// First day of the week. "0" means display Sunday first, "1" means display
+// Monday first, etc.
+Calendar._FD = 0;
+
+// full month names
+Calendar._MN = new Array
+("January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "About the calendar";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
+"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
+"\n\n" +
+"Date selection:\n" +
+"- Use the \xab, \xbb buttons to select year\n" +
+"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
+"- Hold mouse button on any of the above buttons for faster selection.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Time selection:\n" +
+"- Click on any of the time parts to increase it\n" +
+"- or Shift-click to decrease it\n" +
+"- or click and drag for faster selection.";
+
+Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
+Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
+Calendar._TT["GO_TODAY"] = "Go Today";
+Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
+Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
+Calendar._TT["SEL_DATE"] = "Select date";
+Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
+Calendar._TT["PART_TODAY"] = " (today)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Display %s first";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Close";
+Calendar._TT["TODAY"] = "Today";
+Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Time:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-en.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-nl.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-nl.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-nl.js	(revision 1610)
@@ -0,0 +1,73 @@
+// ** I18N
+Calendar._DN = new Array
+("Zondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrijdag",
+ "Zaterdag",
+ "Zondag");
+
+Calendar._SDN_len = 2;
+
+Calendar._MN = new Array
+("Januari",
+ "Februari",
+ "Maart",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "December");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Info";
+
+Calendar._TT["ABOUT"] =
+"DHTML Datum/Tijd Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
+"Ga voor de meest recente versie naar: http://www.dynarch.com/projects/calendar/\n" +
+"Verspreid onder de GNU LGPL. Zie http://gnu.org/licenses/lgpl.html voor details." +
+"\n\n" +
+"Datum selectie:\n" +
+"- Gebruik de \xab \xbb knoppen om een jaar te selecteren\n" +
+"- Gebruik de " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knoppen om een maand te selecteren\n" +
+"- Houd de muis ingedrukt op de genoemde knoppen voor een snellere selectie.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Tijd selectie:\n" +
+"- Klik op een willekeurig onderdeel van het tijd gedeelte om het te verhogen\n" +
+"- of Shift-klik om het te verlagen\n" +
+"- of klik en sleep voor een snellere selectie.";
+
+//Calendar._TT["TOGGLE"] = "Selecteer de eerste week-dag";
+Calendar._TT["PREV_YEAR"] = "Vorig jaar (ingedrukt voor menu)";
+Calendar._TT["PREV_MONTH"] = "Vorige maand (ingedrukt voor menu)";
+Calendar._TT["GO_TODAY"] = "Ga naar Vandaag";
+Calendar._TT["NEXT_MONTH"] = "Volgende maand (ingedrukt voor menu)";
+Calendar._TT["NEXT_YEAR"] = "Volgend jaar (ingedrukt voor menu)";
+Calendar._TT["SEL_DATE"] = "Selecteer datum";
+Calendar._TT["DRAG_TO_MOVE"] = "Klik en sleep om te verplaatsen";
+Calendar._TT["PART_TODAY"] = " (vandaag)";
+//Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
+//Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
+
+Calendar._TT["DAY_FIRST"] = "Toon %s eerst";
+
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Sluiten";
+Calendar._TT["TODAY"] = "(vandaag)";
+Calendar._TT["TIME_PART"] = "(Shift-)Klik of sleep om de waarde te veranderen";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b %Y";
+
+Calendar._TT["WK"] = "wk";
+Calendar._TT["TIME"] = "Tijd:";
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-nl.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/lang/calendar-pt.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/lang/calendar-pt.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/lang/calendar-pt.js	(revision 1610)
@@ -0,0 +1,123 @@
+// ** I18N
+
+// Calendar pt_BR language
+// Author: Adalberto Machado, <betosm@terra.com.br>
+// Encoding: any
+// Distributed under the same terms as the calendar itself.
+
+// For translators: please use UTF-8 if possible.  We strongly believe that
+// Unicode is the answer to a real internationalized world.  Also please
+// include your contact information in the header, as can be seen above.
+
+// full day names
+Calendar._DN = new Array
+("Domingo",
+ "Segunda",
+ "Terca",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sabado",
+ "Domingo");
+
+// Please note that the following array of short day names (and the same goes
+// for short month names, _SMN) isn't absolutely necessary.  We give it here
+// for exemplification on how one can customize the short day names, but if
+// they are simply the first N letters of the full name you can simply say:
+//
+//   Calendar._SDN_len = N; // short day name length
+//   Calendar._SMN_len = N; // short month name length
+//
+// If N = 3 then this is not needed either since we assume a value of 3 if not
+// present, to be compatible with translation files that were written before
+// this feature.
+
+// short day names
+Calendar._SDN = new Array
+("Dom",
+ "Seg",
+ "Ter",
+ "Qua",
+ "Qui",
+ "Sex",
+ "Sab",
+ "Dom");
+
+// full month names
+Calendar._MN = new Array
+("Janeiro",
+ "Fevereiro",
+ "Marco",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro");
+
+// short month names
+Calendar._SMN = new Array
+("Jan",
+ "Fev",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dez");
+
+// tooltips
+Calendar._TT = {};
+Calendar._TT["INFO"] = "Sobre o calendario";
+
+Calendar._TT["ABOUT"] =
+"DHTML Date/Time Selector\n" +
+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
+"Ultima versao visite: http://www.dynarch.com/projects/calendar/\n" +
+"Distribuido sobre GNU LGPL.  Veja http://gnu.org/licenses/lgpl.html para detalhes." +
+"\n\n" +
+"Selecao de data:\n" +
+"- Use os botoes \xab, \xbb para selecionar o ano\n" +
+"- Use os botoes " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mes\n" +
+"- Segure o botao do mouse em qualquer um desses botoes para selecao rapida.";
+Calendar._TT["ABOUT_TIME"] = "\n\n" +
+"Selecao de hora:\n" +
+"- Clique em qualquer parte da hora para incrementar\n" +
+"- ou Shift-click para decrementar\n" +
+"- ou clique e segure para selecao rapida.";
+
+Calendar._TT["PREV_YEAR"] = "Ant. ano (segure para menu)";
+Calendar._TT["PREV_MONTH"] = "Ant. mes (segure para menu)";
+Calendar._TT["GO_TODAY"] = "Hoje";
+Calendar._TT["NEXT_MONTH"] = "Prox. mes (segure para menu)";
+Calendar._TT["NEXT_YEAR"] = "Prox. ano (segure para menu)";
+Calendar._TT["SEL_DATE"] = "Selecione a data";
+Calendar._TT["DRAG_TO_MOVE"] = "Arraste para mover";
+Calendar._TT["PART_TODAY"] = " (hoje)";
+
+// the following is to inform that "%s" is to be the first day of week
+// %s will be replaced with the day name.
+Calendar._TT["DAY_FIRST"] = "Mostre %s primeiro";
+
+// This may be locale-dependent.  It specifies the week-end days, as an array
+// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
+// means Monday, etc.
+Calendar._TT["WEEKEND"] = "0,6";
+
+Calendar._TT["CLOSE"] = "Fechar";
+Calendar._TT["TODAY"] = "Hoje";
+Calendar._TT["TIME_PART"] = "(Shift-)Click ou arraste para mudar valor";
+
+// date formats
+Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
+Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
+
+Calendar._TT["WK"] = "sm";
+Calendar._TT["TIME"] = "Hora:";

Property changes on: tags/2.8.3/wb/include/jscalendar/lang/calendar-pt.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/jscalendar-functions.php
===================================================================
--- tags/2.8.3/wb/include/jscalendar/jscalendar-functions.php	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/jscalendar-functions.php	(revision 1610)
@@ -0,0 +1,53 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+if(!defined('WB_URL')) { exit(header('Location: ../index.php')); }
+
+// convert string from jscalendar to timestamp.
+// converts dd.mm.yyyy and mm/dd/yyyy, with or without time.
+// strtotime() may fails with e.g. "dd.mm.yyyy" and PHP4
+function jscalendar_to_timestamp($str, $offset='') {
+	$str = trim($str);
+	if($str == '0' || $str == '')
+		return('0');
+	if($offset == '0')
+		$offset = '';
+	// convert to yyyy-mm-dd
+	// "dd.mm.yyyy"?
+	if(preg_match('/^\d{1,2}\.\d{1,2}\.\d{2}(\d{2})?/', $str)) {
+		$str = preg_replace('/^(\d{1,2})\.(\d{1,2})\.(\d{2}(\d{2})?)/', '$3-$2-$1', $str);
+	}
+	// "mm/dd/yyyy"?
+	if(preg_match('#^\d{1,2}/\d{1,2}/(\d{2}(\d{2})?)#', $str)) {
+		$str = preg_replace('#^(\d{1,2})/(\d{1,2})/(\d{2}(\d{2})?)#', '$3-$1-$2', $str);
+	}
+	// use strtotime()
+	if($offset!='')
+		return(strtotime($str, $offset));
+	else
+	return(strtotime($str));
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jscalendar/jscalendar-functions.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/index.php
===================================================================
--- tags/2.8.3/wb/include/jscalendar/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/jscalendar/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/README
===================================================================
--- tags/2.8.3/wb/include/jscalendar/README	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/README	(revision 1610)
@@ -0,0 +1,84 @@
+The DHTML Calendar
+-------------------
+
+  Author: Mihai Bazon, <mihai_bazon@yahoo.com>
+          http://dynarch.com/mishoo/
+
+  This program is free software published under the
+  terms of the GNU Lesser General Public License.
+
+  For the entire license text please refer to
+  http://www.gnu.org/licenses/lgpl.html
+
+Contents
+---------
+
+  calendar.js     -- the main program file
+  lang/*.js       -- internalization files
+  *.css           -- color themes
+  cal.html        -- example usage file
+  doc/            -- documentation, in PDF and HTML
+  simple-1.html   -- quick setup examples [popup calendars]
+  simple-2.html   -- quick setup example for flat calendar
+  calendar.php    -- PHP wrapper
+  test.php        -- test file for the PHP wrapper
+
+Homepage
+---------
+
+  For details and latest versions please refer to calendar
+  homepage, located on my website:
+
+    http://dynarch.com/mishoo/calendar.epl
+
+
+How to use
+-----------
+
+1. enter this code somewhere _above_ the form
+	you can overwrite some vars as descripted below
+--cut-PHP----------------------------------------------------
+	// include jscalendar-setup
+	$jscal_use_time = false; // whether to use a clock, too
+	require_once(WB_PATH."/include/jscalendar/wb-setup.php");
+	// override some vars: (normally, there is no need to change this)
+	//$jscal_lang = "en"; //- calendar-language (default: wb-backend-language)
+	//$jscal_today = ""; // - date the calendar offers if the text-field is empty (default: today)
+	//$jscal_firstday = "0"; // - first-day-of-week (0-sunday, 1-monday, ...) (default: 0(EN) or 1(everything else))
+	//$jscal_format = "Y-m-d"; // - initial-format used for the text-field (default: from wb-backend-date-format)
+	//$jscal_ifformat = "%Y-%m-%d"; // - format for jscalendar (default: from wb-backend-date-format)
+----------------------------------------------------------
+
+
+2. enter this code within your form
+	$date holds the entered date as timestamp
+	the field is called "my_date_field"
+	the calender-trigger is called "my_date_trigger"
+--cut-HTML---------------------------------------------------
+	<input type="text" id="my_date_field" name="my_date_field" value="<?php if($date==0) print ""; else print date($jscal_format, $date)?>" style="width: 120px;" />
+	<img src="<?php echo WB_URL ?>/include/jscalendar/img.gif" id="my_date_trigger" style="cursor: pointer; border: 1px solid red;" title="Calendar" onmouseover="this.style.background='red';" onmouseout="this.style.background=''" />
+----------------------------------------------------------
+
+
+3. enter this code _below_ the form
+	to store the result as timestamp, you have to use  range : [1970, 2037],
+--cut-HTML---------------------------------------------------
+	<script type="text/javascript">
+		Calendar.setup(
+			{
+				inputField  : "my_date_field",
+				ifFormat    : "<?php echo $jscal_ifformat ?>",
+				button      : "my_date_trigger",
+				firstDay    : <?php echo $jscal_firstday ?>,
+				<?php if(isset($jscal_use_time) && $jscal_use_time==TRUE) { ?>
+					showsTime   : "true",
+					timeFormat  : "24",
+				<?php } ?>
+				date        : "<?php echo $jscal_today ?>",
+				range       : [1970, 2037],
+				step        : 1
+			}
+		);
+	</script>
+----------------------------------------------------------
+

Property changes on: tags/2.8.3/wb/include/jscalendar/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/img.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jscalendar/img.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/calendar-setup.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/calendar-setup.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/calendar-setup.js	(revision 1610)
@@ -0,0 +1,203 @@
+/*  Copyright Mihai Bazon, 2002, 2003  |  http://dynarch.com/mishoo/
+ * ---------------------------------------------------------------------------
+ *
+ * The DHTML Calendar
+ *
+ * Details and latest version at:
+ * http://dynarch.com/mishoo/calendar.epl
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ *
+ * This file defines helper functions for setting up the calendar.  They are
+ * intended to help non-programmers get a working calendar on their site
+ * quickly.  This script should not be seen as part of the calendar.  It just
+ * shows you what one can do with the calendar, while in the same time
+ * providing a quick and simple method for setting it up.  If you need
+ * exhaustive customization of the calendar creation process feel free to
+ * modify this code to suit your needs (this is recommended and much better
+ * than modifying calendar.js itself).
+ */
+
+// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $
+
+/**
+ *  This function "patches" an input field (or other element) to use a calendar
+ *  widget for date selection.
+ *
+ *  The "params" is a single object that can have the following properties:
+ *
+ *    prop. name   | description
+ *  -------------------------------------------------------------------------------------------------
+ *   inputField    | the ID of an input field to store the date
+ *   displayArea   | the ID of a DIV or other element to show the date
+ *   button        | ID of a button or other element that will trigger the calendar
+ *   eventName     | event that will trigger the calendar, without the "on" prefix (default: "click")
+ *   ifFormat      | date format that will be stored in the input field
+ *   daFormat      | the date format that will be used to display the date in displayArea
+ *   singleClick   | (true/false) wether the calendar is in single click mode or not (default: true)
+ *   firstDay      | numeric: 0 to 6.  "0" means display Sunday first, "1" means display Monday first, etc.
+ *   align         | alignment (default: "Br"); if you don't know what's this see the calendar documentation
+ *   range         | array with 2 elements.  Default: [1900, 2999] -- the range of years available
+ *   weekNumbers   | (true/false) if it's true (default) the calendar will display week numbers
+ *   flat          | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
+ *   flatCallback  | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
+ *   disableFunc   | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
+ *   onSelect      | function that gets called when a date is selected.  You don't _have_ to supply this (the default is generally okay)
+ *   onClose       | function that gets called when the calendar is closed.  [default]
+ *   onUpdate      | function that gets called after the date is updated in the input field.  Receives a reference to the calendar.
+ *   date          | the date that the calendar will be initially displayed to
+ *   showsTime     | default: false; if true the calendar will include a time selector
+ *   timeFormat    | the time format; can be "12" or "24", default is "12"
+ *   electric      | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
+ *   step          | configures the step of the years in drop-down boxes; default: 2
+ *   position      | configures the calendar absolute position; default: null
+ *   cache         | if "true" (but default: "false") it will reuse the same calendar object, where possible
+ *   showOthers    | if "true" (but default: "false") it will show days from other months too
+ *
+ *  None of them is required, they all have default values.  However, if you
+ *  pass none of "inputField", "displayArea" or "button" you'll get a warning
+ *  saying "nothing to setup".
+ */
+Calendar.setup = function (params) {
+	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
+
+	param_default("inputField",     null);
+	param_default("displayArea",    null);
+	param_default("button",         null);
+	param_default("eventName",      "click");
+	param_default("ifFormat",       "%Y/%m/%d");
+	param_default("daFormat",       "%Y/%m/%d");
+	param_default("singleClick",    true);
+	param_default("disableFunc",    null);
+	param_default("dateStatusFunc", params["disableFunc"]);	// takes precedence if both are defined
+	param_default("dateText",       null);
+	param_default("firstDay",       null);
+	param_default("align",          "Br");
+	param_default("range",          [1900, 2999]);
+	param_default("weekNumbers",    true);
+	param_default("flat",           null);
+	param_default("flatCallback",   null);
+	param_default("onSelect",       null);
+	param_default("onClose",        null);
+	param_default("onUpdate",       null);
+	param_default("date",           null);
+	param_default("showsTime",      false);
+	param_default("timeFormat",     "24");
+	param_default("electric",       true);
+	param_default("step",           2);
+	param_default("position",       null);
+	param_default("cache",          false);
+	param_default("showOthers",     false);
+	param_default("multiple",       null);
+
+	var tmp = ["inputField", "displayArea", "button"];
+	for (var i in tmp) {
+		if (typeof params[tmp[i]] == "string") {
+			params[tmp[i]] = document.getElementById(params[tmp[i]]);
+		}
+	}
+	if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
+		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
+		return false;
+	}
+
+	function onSelect(cal) {
+		var p = cal.params;
+		var update = (cal.dateClicked || p.electric);
+		if (update && p.inputField) {
+			p.inputField.value = cal.date.print(p.ifFormat);
+			if (typeof p.inputField.onchange == "function")
+				p.inputField.onchange();
+		}
+		if (update && p.displayArea)
+			p.displayArea.innerHTML = cal.date.print(p.daFormat);
+		if (update && typeof p.onUpdate == "function")
+			p.onUpdate(cal);
+		if (update && p.flat) {
+			if (typeof p.flatCallback == "function")
+				p.flatCallback(cal);
+		}
+		if (update && p.singleClick && cal.dateClicked)
+			cal.callCloseHandler();
+	};
+
+	if (params.flat != null) {
+		if (typeof params.flat == "string")
+			params.flat = document.getElementById(params.flat);
+		if (!params.flat) {
+			alert("Calendar.setup:\n  Flat specified but can't find parent.");
+			return false;
+		}
+		var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
+		cal.showsOtherMonths = params.showOthers;
+		cal.showsTime = params.showsTime;
+		cal.time24 = (params.timeFormat == "24");
+		cal.params = params;
+		cal.weekNumbers = params.weekNumbers;
+		cal.setRange(params.range[0], params.range[1]);
+		cal.setDateStatusHandler(params.dateStatusFunc);
+		cal.getDateText = params.dateText;
+		if (params.ifFormat) {
+			cal.setDateFormat(params.ifFormat);
+		}
+		if (params.inputField && typeof params.inputField.value == "string") {
+			cal.parseDate(params.inputField.value);
+		}
+		cal.create(params.flat);
+		cal.show();
+		return false;
+	}
+
+	var triggerEl = params.button || params.displayArea || params.inputField;
+	triggerEl["on" + params.eventName] = function() {
+		var dateEl = params.inputField || params.displayArea;
+		var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
+		var mustCreate = false;
+		var cal = window.calendar;
+//		if (dateEl)
+//			params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
+//by nib: checks wether inputfield is empty or not. orig code only checked wether inputfield exists, so param.date was never read!
+if (dateEl.value.replace(/^\s+|\s+$/g,"").length != 0 || dateEl.innerHTML.replace(/^\s+|\s+$/g,"").length != 0)
+params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
+		if (!(cal && params.cache)) {
+			window.calendar = cal = new Calendar(params.firstDay,
+							     params.date,
+							     params.onSelect || onSelect,
+							     params.onClose || function(cal) { cal.hide(); });
+			cal.showsTime = params.showsTime;
+			cal.time24 = (params.timeFormat == "24");
+			cal.weekNumbers = params.weekNumbers;
+			mustCreate = true;
+		} else {
+			if (params.date)
+				cal.setDate(params.date);
+			cal.hide();
+		}
+		if (params.multiple) {
+			cal.multiple = {};
+			for (var i = params.multiple.length; --i >= 0;) {
+				var d = params.multiple[i];
+				var ds = d.print("%Y%m%d");
+				cal.multiple[ds] = d;
+			}
+		}
+		cal.showsOtherMonths = params.showOthers;
+		cal.yearStep = params.step;
+		cal.setRange(params.range[0], params.range[1]);
+		cal.params = params;
+		cal.setDateStatusHandler(params.dateStatusFunc);
+		cal.getDateText = params.dateText;
+		cal.setDateFormat(dateFmt);
+		if (mustCreate)
+			cal.create();
+		cal.refresh();
+		if (!params.position)
+			cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
+		else
+			cal.showAt(params.position[0], params.position[1]);
+		return false;
+	};
+
+	return cal;
+};

Property changes on: tags/2.8.3/wb/include/jscalendar/calendar-setup.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/menuarrow.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jscalendar/menuarrow.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/calendar.js
===================================================================
--- tags/2.8.3/wb/include/jscalendar/calendar.js	(nonexistent)
+++ tags/2.8.3/wb/include/jscalendar/calendar.js	(revision 1610)
@@ -0,0 +1,1806 @@
+/*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
+ * -----------------------------------------------------------
+ *
+ * The DHTML Calendar, version 1.0 "It is happening again"
+ *
+ * Details and latest version at:
+ * www.dynarch.com/projects/calendar
+ *
+ * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
+ *
+ * This script is distributed under the GNU Lesser General Public License.
+ * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
+ */
+
+// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $
+
+/** The Calendar object constructor. */
+Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
+	// member variables
+	this.activeDiv = null;
+	this.currentDateEl = null;
+	this.getDateStatus = null;
+	this.getDateToolTip = null;
+	this.getDateText = null;
+	this.timeout = null;
+	this.onSelected = onSelected || null;
+	this.onClose = onClose || null;
+	this.dragging = false;
+	this.hidden = false;
+	this.minYear = 1970;
+	this.maxYear = 2050;
+	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
+	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
+	this.isPopup = true;
+	this.weekNumbers = true;
+	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
+	this.showsOtherMonths = false;
+	this.dateStr = dateStr;
+	this.ar_days = null;
+	this.showsTime = false;
+	this.time24 = true;
+	this.yearStep = 2;
+	this.hiliteToday = true;
+	this.multiple = null;
+	// HTML elements
+	this.table = null;
+	this.element = null;
+	this.tbody = null;
+	this.firstdayname = null;
+	// Combo boxes
+	this.monthsCombo = null;
+	this.yearsCombo = null;
+	this.hilitedMonth = null;
+	this.activeMonth = null;
+	this.hilitedYear = null;
+	this.activeYear = null;
+	// Information
+	this.dateClicked = false;
+
+	// one-time initializations
+	if (typeof Calendar._SDN == "undefined") {
+		// table of short day names
+		if (typeof Calendar._SDN_len == "undefined")
+			Calendar._SDN_len = 3;
+		var ar = new Array();
+		for (var i = 8; i > 0;) {
+			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
+		}
+		Calendar._SDN = ar;
+		// table of short month names
+		if (typeof Calendar._SMN_len == "undefined")
+			Calendar._SMN_len = 3;
+		ar = new Array();
+		for (var i = 12; i > 0;) {
+			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
+		}
+		Calendar._SMN = ar;
+	}
+};
+
+// ** constants
+
+/// "static", needed for event handlers.
+Calendar._C = null;
+
+/// detect a special case of "web browser"
+Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
+		   !/opera/i.test(navigator.userAgent) );
+
+Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );
+
+/// detect Opera browser
+Calendar.is_opera = /opera/i.test(navigator.userAgent);
+
+/// detect KHTML-based browsers
+Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
+
+// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
+//        library, at some point.
+
+Calendar.getAbsolutePos = function(el) {
+	var SL = 0, ST = 0;
+	var is_div = /^div$/i.test(el.tagName);
+	if (is_div && el.scrollLeft)
+		SL = el.scrollLeft;
+	if (is_div && el.scrollTop)
+		ST = el.scrollTop;
+	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
+	if (el.offsetParent) {
+		var tmp = this.getAbsolutePos(el.offsetParent);
+		r.x += tmp.x;
+		r.y += tmp.y;
+	}
+	return r;
+};
+
+Calendar.isRelated = function (el, evt) {
+	var related = evt.relatedTarget;
+	if (!related) {
+		var type = evt.type;
+		if (type == "mouseover") {
+			related = evt.fromElement;
+		} else if (type == "mouseout") {
+			related = evt.toElement;
+		}
+	}
+	while (related) {
+		if (related == el) {
+			return true;
+		}
+		related = related.parentNode;
+	}
+	return false;
+};
+
+Calendar.removeClass = function(el, className) {
+	if (!(el && el.className)) {
+		return;
+	}
+	var cls = el.className.split(" ");
+	var ar = new Array();
+	for (var i = cls.length; i > 0;) {
+		if (cls[--i] != className) {
+			ar[ar.length] = cls[i];
+		}
+	}
+	el.className = ar.join(" ");
+};
+
+Calendar.addClass = function(el, className) {
+	Calendar.removeClass(el, className);
+	el.className += " " + className;
+};
+
+// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
+Calendar.getElement = function(ev) {
+	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
+	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
+		f = f.parentNode;
+	return f;
+};
+
+Calendar.getTargetElement = function(ev) {
+	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
+	while (f.nodeType != 1)
+		f = f.parentNode;
+	return f;
+};
+
+Calendar.stopEvent = function(ev) {
+	ev || (ev = window.event);
+	if (Calendar.is_ie) {
+		ev.cancelBubble = true;
+		ev.returnValue = false;
+	} else {
+		ev.preventDefault();
+		ev.stopPropagation();
+	}
+	return false;
+};
+
+Calendar.addEvent = function(el, evname, func) {
+	if (el.attachEvent) { // IE
+		el.attachEvent("on" + evname, func);
+	} else if (el.addEventListener) { // Gecko / W3C
+		el.addEventListener(evname, func, true);
+	} else {
+		el["on" + evname] = func;
+	}
+};
+
+Calendar.removeEvent = function(el, evname, func) {
+	if (el.detachEvent) { // IE
+		el.detachEvent("on" + evname, func);
+	} else if (el.removeEventListener) { // Gecko / W3C
+		el.removeEventListener(evname, func, true);
+	} else {
+		el["on" + evname] = null;
+	}
+};
+
+Calendar.createElement = function(type, parent) {
+	var el = null;
+	if (document.createElementNS) {
+		// use the XHTML namespace; IE won't normally get here unless
+		// _they_ "fix" the DOM2 implementation.
+		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
+	} else {
+		el = document.createElement(type);
+	}
+	if (typeof parent != "undefined") {
+		parent.appendChild(el);
+	}
+	return el;
+};
+
+// END: UTILITY FUNCTIONS
+
+// BEGIN: CALENDAR STATIC FUNCTIONS
+
+/** Internal -- adds a set of events to make some element behave like a button. */
+Calendar._add_evs = function(el) {
+	with (Calendar) {
+		addEvent(el, "mouseover", dayMouseOver);
+		addEvent(el, "mousedown", dayMouseDown);
+		addEvent(el, "mouseout", dayMouseOut);
+		if (is_ie) {
+			addEvent(el, "dblclick", dayMouseDblClick);
+			el.setAttribute("unselectable", true);
+		}
+	}
+};
+
+Calendar.findMonth = function(el) {
+	if (typeof el.month != "undefined") {
+		return el;
+	} else if (typeof el.parentNode.month != "undefined") {
+		return el.parentNode;
+	}
+	return null;
+};
+
+Calendar.findYear = function(el) {
+	if (typeof el.year != "undefined") {
+		return el;
+	} else if (typeof el.parentNode.year != "undefined") {
+		return el.parentNode;
+	}
+	return null;
+};
+
+Calendar.showMonthsCombo = function () {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	var cal = cal;
+	var cd = cal.activeDiv;
+	var mc = cal.monthsCombo;
+	if (cal.hilitedMonth) {
+		Calendar.removeClass(cal.hilitedMonth, "hilite");
+	}
+	if (cal.activeMonth) {
+		Calendar.removeClass(cal.activeMonth, "active");
+	}
+	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
+	Calendar.addClass(mon, "active");
+	cal.activeMonth = mon;
+	var s = mc.style;
+	s.display = "block";
+	if (cd.navtype < 0)
+		s.left = cd.offsetLeft + "px";
+	else {
+		var mcw = mc.offsetWidth;
+		if (typeof mcw == "undefined")
+			// Konqueror brain-dead techniques
+			mcw = 50;
+		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
+	}
+	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
+};
+
+Calendar.showYearsCombo = function (fwd) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	var cal = cal;
+	var cd = cal.activeDiv;
+	var yc = cal.yearsCombo;
+	if (cal.hilitedYear) {
+		Calendar.removeClass(cal.hilitedYear, "hilite");
+	}
+	if (cal.activeYear) {
+		Calendar.removeClass(cal.activeYear, "active");
+	}
+	cal.activeYear = null;
+	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
+	var yr = yc.firstChild;
+	var show = false;
+	for (var i = 12; i > 0; --i) {
+		if (Y >= cal.minYear && Y <= cal.maxYear) {
+			yr.innerHTML = Y;
+			yr.year = Y;
+			yr.style.display = "block";
+			show = true;
+		} else {
+			yr.style.display = "none";
+		}
+		yr = yr.nextSibling;
+		Y += fwd ? cal.yearStep : -cal.yearStep;
+	}
+	if (show) {
+		var s = yc.style;
+		s.display = "block";
+		if (cd.navtype < 0)
+			s.left = cd.offsetLeft + "px";
+		else {
+			var ycw = yc.offsetWidth;
+			if (typeof ycw == "undefined")
+				// Konqueror brain-dead techniques
+				ycw = 50;
+			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
+		}
+		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
+	}
+};
+
+// event handlers
+
+Calendar.tableMouseUp = function(ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	if (cal.timeout) {
+		clearTimeout(cal.timeout);
+	}
+	var el = cal.activeDiv;
+	if (!el) {
+		return false;
+	}
+	var target = Calendar.getTargetElement(ev);
+	ev || (ev = window.event);
+	Calendar.removeClass(el, "active");
+	if (target == el || target.parentNode == el) {
+		Calendar.cellClick(el, ev);
+	}
+	var mon = Calendar.findMonth(target);
+	var date = null;
+	if (mon) {
+		date = new Date(cal.date);
+		if (mon.month != date.getMonth()) {
+			date.setMonth(mon.month);
+			cal.setDate(date);
+			cal.dateClicked = false;
+			cal.callHandler();
+		}
+	} else {
+		var year = Calendar.findYear(target);
+		if (year) {
+			date = new Date(cal.date);
+			if (year.year != date.getFullYear()) {
+				date.setFullYear(year.year);
+				cal.setDate(date);
+				cal.dateClicked = false;
+				cal.callHandler();
+			}
+		}
+	}
+	with (Calendar) {
+		removeEvent(document, "mouseup", tableMouseUp);
+		removeEvent(document, "mouseover", tableMouseOver);
+		removeEvent(document, "mousemove", tableMouseOver);
+		cal._hideCombos();
+		_C = null;
+		return stopEvent(ev);
+	}
+};
+
+Calendar.tableMouseOver = function (ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return;
+	}
+	var el = cal.activeDiv;
+	var target = Calendar.getTargetElement(ev);
+	if (target == el || target.parentNode == el) {
+		Calendar.addClass(el, "hilite active");
+		Calendar.addClass(el.parentNode, "rowhilite");
+	} else {
+		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
+			Calendar.removeClass(el, "active");
+		Calendar.removeClass(el, "hilite");
+		Calendar.removeClass(el.parentNode, "rowhilite");
+	}
+	ev || (ev = window.event);
+	if (el.navtype == 50 && target != el) {
+		var pos = Calendar.getAbsolutePos(el);
+		var w = el.offsetWidth;
+		var x = ev.clientX;
+		var dx;
+		var decrease = true;
+		if (x > pos.x + w) {
+			dx = x - pos.x - w;
+			decrease = false;
+		} else
+			dx = pos.x - x;
+
+		if (dx < 0) dx = 0;
+		var range = el._range;
+		var current = el._current;
+		var count = Math.floor(dx / 10) % range.length;
+		for (var i = range.length; --i >= 0;)
+			if (range[i] == current)
+				break;
+		while (count-- > 0)
+			if (decrease) {
+				if (--i < 0)
+					i = range.length - 1;
+			} else if ( ++i >= range.length )
+				i = 0;
+		var newval = range[i];
+		el.innerHTML = newval;
+
+		cal.onUpdateTime();
+	}
+	var mon = Calendar.findMonth(target);
+	if (mon) {
+		if (mon.month != cal.date.getMonth()) {
+			if (cal.hilitedMonth) {
+				Calendar.removeClass(cal.hilitedMonth, "hilite");
+			}
+			Calendar.addClass(mon, "hilite");
+			cal.hilitedMonth = mon;
+		} else if (cal.hilitedMonth) {
+			Calendar.removeClass(cal.hilitedMonth, "hilite");
+		}
+	} else {
+		if (cal.hilitedMonth) {
+			Calendar.removeClass(cal.hilitedMonth, "hilite");
+		}
+		var year = Calendar.findYear(target);
+		if (year) {
+			if (year.year != cal.date.getFullYear()) {
+				if (cal.hilitedYear) {
+					Calendar.removeClass(cal.hilitedYear, "hilite");
+				}
+				Calendar.addClass(year, "hilite");
+				cal.hilitedYear = year;
+			} else if (cal.hilitedYear) {
+				Calendar.removeClass(cal.hilitedYear, "hilite");
+			}
+		} else if (cal.hilitedYear) {
+			Calendar.removeClass(cal.hilitedYear, "hilite");
+		}
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.tableMouseDown = function (ev) {
+	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
+		return Calendar.stopEvent(ev);
+	}
+};
+
+Calendar.calDragIt = function (ev) {
+	var cal = Calendar._C;
+	if (!(cal && cal.dragging)) {
+		return false;
+	}
+	var posX;
+	var posY;
+	if (Calendar.is_ie) {
+		posY = window.event.clientY + document.body.scrollTop;
+		posX = window.event.clientX + document.body.scrollLeft;
+	} else {
+		posX = ev.pageX;
+		posY = ev.pageY;
+	}
+	cal.hideShowCovered();
+	var st = cal.element.style;
+	st.left = (posX - cal.xOffs) + "px";
+	st.top = (posY - cal.yOffs) + "px";
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.calDragEnd = function (ev) {
+	var cal = Calendar._C;
+	if (!cal) {
+		return false;
+	}
+	cal.dragging = false;
+	with (Calendar) {
+		removeEvent(document, "mousemove", calDragIt);
+		removeEvent(document, "mouseup", calDragEnd);
+		tableMouseUp(ev);
+	}
+	cal.hideShowCovered();
+};
+
+Calendar.dayMouseDown = function(ev) {
+	var el = Calendar.getElement(ev);
+	if (el.disabled) {
+		return false;
+	}
+	var cal = el.calendar;
+	cal.activeDiv = el;
+	Calendar._C = cal;
+	if (el.navtype != 300) with (Calendar) {
+		if (el.navtype == 50) {
+			el._current = el.innerHTML;
+			addEvent(document, "mousemove", tableMouseOver);
+		} else
+			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
+		addClass(el, "hilite active");
+		addEvent(document, "mouseup", tableMouseUp);
+	} else if (cal.isPopup) {
+		cal._dragStart(ev);
+	}
+	if (el.navtype == -1 || el.navtype == 1) {
+		if (cal.timeout) clearTimeout(cal.timeout);
+		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
+	} else if (el.navtype == -2 || el.navtype == 2) {
+		if (cal.timeout) clearTimeout(cal.timeout);
+		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
+	} else {
+		cal.timeout = null;
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.dayMouseDblClick = function(ev) {
+	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
+	if (Calendar.is_ie) {
+		document.selection.empty();
+	}
+};
+
+Calendar.dayMouseOver = function(ev) {
+	var el = Calendar.getElement(ev);
+	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
+		return false;
+	}
+	if (el.ttip) {
+		if (el.ttip.substr(0, 1) == "_") {
+			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
+		}
+		el.calendar.tooltips.innerHTML = el.ttip;
+	}
+	if (el.navtype != 300) {
+		Calendar.addClass(el, "hilite");
+		if (el.caldate) {
+			Calendar.addClass(el.parentNode, "rowhilite");
+		}
+	}
+	return Calendar.stopEvent(ev);
+};
+
+Calendar.dayMouseOut = function(ev) {
+	with (Calendar) {
+		var el = getElement(ev);
+		if (isRelated(el, ev) || _C || el.disabled)
+			return false;
+		removeClass(el, "hilite");
+		if (el.caldate)
+			removeClass(el.parentNode, "rowhilite");
+		if (el.calendar)
+			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
+		return stopEvent(ev);
+	}
+};
+
+/**
+ *  A generic "click" handler :) handles all types of buttons defined in this
+ *  calendar.
+ */
+Calendar.cellClick = function(el, ev) {
+	var cal = el.calendar;
+	var closing = false;
+	var newdate = false;
+	var date = null;
+	if (typeof el.navtype == "undefined") {
+		if (cal.currentDateEl) {
+			Calendar.removeClass(cal.currentDateEl, "selected");
+			Calendar.addClass(el, "selected");
+			closing = (cal.currentDateEl == el);
+			if (!closing) {
+				cal.currentDateEl = el;
+			}
+		}
+		cal.date.setDateOnly(el.caldate);
+		date = cal.date;
+		var other_month = !(cal.dateClicked = !el.otherMonth);
+		if (!other_month && !cal.currentDateEl)
+			cal._toggleMultipleDate(new Date(date));
+		else
+			newdate = !el.disabled;
+		// a date was clicked
+		if (other_month)
+			cal._init(cal.firstDayOfWeek, date);
+	} else {
+		if (el.navtype == 200) {
+			Calendar.removeClass(el, "hilite");
+			cal.callCloseHandler();
+			return;
+		}
+		date = new Date(cal.date);
+		if (el.navtype == 0)
+			date.setDateOnly(new Date()); // TODAY
+		// unless "today" was clicked, we assume no date was clicked so
+		// the selected handler will know not to close the calenar when
+		// in single-click mode.
+		// cal.dateClicked = (el.navtype == 0);
+		cal.dateClicked = false;
+		var year = date.getFullYear();
+		var mon = date.getMonth();
+		function setMonth(m) {
+			var day = date.getDate();
+			var max = date.getMonthDays(m);
+			if (day > max) {
+				date.setDate(max);
+			}
+			date.setMonth(m);
+		};
+		switch (el.navtype) {
+		    case 400:
+			Calendar.removeClass(el, "hilite");
+			var text = Calendar._TT["ABOUT"];
+			if (typeof text != "undefined") {
+				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
+			} else {
+				// FIXME: this should be removed as soon as lang files get updated!
+				text = "Help and about box text is not translated into this language.\n" +
+					"If you know this language and you feel generous please update\n" +
+					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
+					"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n" +
+					"Thank you!\n" +
+					"http://dynarch.com/mishoo/calendar.epl\n";
+			}
+			alert(text);
+			return;
+		    case -2:
+			if (year > cal.minYear) {
+				date.setFullYear(year - 1);
+			}
+			break;
+		    case -1:
+			if (mon > 0) {
+				setMonth(mon - 1);
+			} else if (year-- > cal.minYear) {
+				date.setFullYear(year);
+				setMonth(11);
+			}
+			break;
+		    case 1:
+			if (mon < 11) {
+				setMonth(mon + 1);
+			} else if (year < cal.maxYear) {
+				date.setFullYear(year + 1);
+				setMonth(0);
+			}
+			break;
+		    case 2:
+			if (year < cal.maxYear) {
+				date.setFullYear(year + 1);
+			}
+			break;
+		    case 100:
+			cal.setFirstDayOfWeek(el.fdow);
+			return;
+		    case 50:
+			var range = el._range;
+			var current = el.innerHTML;
+			for (var i = range.length; --i >= 0;)
+				if (range[i] == current)
+					break;
+			if (ev && ev.shiftKey) {
+				if (--i < 0)
+					i = range.length - 1;
+			} else if ( ++i >= range.length )
+				i = 0;
+			var newval = range[i];
+			el.innerHTML = newval;
+			cal.onUpdateTime();
+			return;
+		    case 0:
+			// TODAY will bring us here
+			if ((typeof cal.getDateStatus == "function") &&
+			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
+				return false;
+			}
+			break;
+		}
+		if (!date.equalsTo(cal.date)) {
+			cal.setDate(date);
+			newdate = true;
+		} else if (el.navtype == 0)
+			newdate = closing = true;
+	}
+	if (newdate) {
+		ev && cal.callHandler();
+	}
+	if (closing) {
+		Calendar.removeClass(el, "hilite");
+		ev && cal.callCloseHandler();
+	}
+};
+
+// END: CALENDAR STATIC FUNCTIONS
+
+// BEGIN: CALENDAR OBJECT FUNCTIONS
+
+/**
+ *  This function creates the calendar inside the given parent.  If _par is
+ *  null than it creates a popup calendar inside the BODY element.  If _par is
+ *  an element, be it BODY, then it creates a non-popup calendar (still
+ *  hidden).  Some properties need to be set before calling this function.
+ */
+Calendar.prototype.create = function (_par) {
+	var parent = null;
+	if (! _par) {
+		// default parent is the document body, in which case we create
+		// a popup calendar.
+		parent = document.getElementsByTagName("body")[0];
+		this.isPopup = true;
+	} else {
+		parent = _par;
+		this.isPopup = false;
+	}
+	this.date = this.dateStr ? new Date(this.dateStr) : new Date();
+
+	var table = Calendar.createElement("table");
+	this.table = table;
+	table.cellSpacing = 0;
+	table.cellPadding = 0;
+	table.calendar = this;
+	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);
+
+	var div = Calendar.createElement("div");
+	this.element = div;
+	div.className = "calendar";
+	if (this.isPopup) {
+		div.style.position = "absolute";
+		div.style.display = "none";
+	}
+	div.appendChild(table);
+
+	var thead = Calendar.createElement("thead", table);
+	var cell = null;
+	var row = null;
+
+	var cal = this;
+	var hh = function (text, cs, navtype) {
+		cell = Calendar.createElement("td", row);
+		cell.colSpan = cs;
+		cell.className = "button";
+		if (navtype != 0 && Math.abs(navtype) <= 2)
+			cell.className += " nav";
+		Calendar._add_evs(cell);
+		cell.calendar = cal;
+		cell.navtype = navtype;
+		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
+		return cell;
+	};
+
+	row = Calendar.createElement("tr", thead);
+	var title_length = 6;
+	(this.isPopup) && --title_length;
+	(this.weekNumbers) && ++title_length;
+
+	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
+	this.title = hh("", title_length, 300);
+	this.title.className = "title";
+	if (this.isPopup) {
+		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
+		this.title.style.cursor = "move";
+		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
+	}
+
+	row = Calendar.createElement("tr", thead);
+	row.className = "headrow";
+
+	this._nav_py = hh("&#x00ab;", 1, -2);
+	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
+
+	this._nav_pm = hh("&#x2039;", 1, -1);
+	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
+
+	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
+	this._nav_now.ttip = Calendar._TT["GO_TODAY"];
+
+	this._nav_nm = hh("&#x203a;", 1, 1);
+	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
+
+	this._nav_ny = hh("&#x00bb;", 1, 2);
+	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
+
+	// day names
+	row = Calendar.createElement("tr", thead);
+	row.className = "daynames";
+	if (this.weekNumbers) {
+		cell = Calendar.createElement("td", row);
+		cell.className = "name wn";
+		cell.innerHTML = Calendar._TT["WK"];
+	}
+	for (var i = 7; i > 0; --i) {
+		cell = Calendar.createElement("td", row);
+		if (!i) {
+			cell.navtype = 100;
+			cell.calendar = this;
+			Calendar._add_evs(cell);
+		}
+	}
+	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
+	this._displayWeekdays();
+
+	var tbody = Calendar.createElement("tbody", table);
+	this.tbody = tbody;
+
+	for (i = 6; i > 0; --i) {
+		row = Calendar.createElement("tr", tbody);
+		if (this.weekNumbers) {
+			cell = Calendar.createElement("td", row);
+		}
+		for (var j = 7; j > 0; --j) {
+			cell = Calendar.createElement("td", row);
+			cell.calendar = this;
+			Calendar._add_evs(cell);
+		}
+	}
+
+	if (this.showsTime) {
+		row = Calendar.createElement("tr", tbody);
+		row.className = "time";
+
+		cell = Calendar.createElement("td", row);
+		cell.className = "time";
+		cell.colSpan = 2;
+		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";
+
+		cell = Calendar.createElement("td", row);
+		cell.className = "time";
+		cell.colSpan = this.weekNumbers ? 4 : 3;
+
+		(function(){
+			function makeTimePart(className, init, range_start, range_end) {
+				var part = Calendar.createElement("span", cell);
+				part.className = className;
+				part.innerHTML = init;
+				part.calendar = cal;
+				part.ttip = Calendar._TT["TIME_PART"];
+				part.navtype = 50;
+				part._range = [];
+				if (typeof range_start != "number")
+					part._range = range_start;
+				else {
+					for (var i = range_start; i <= range_end; ++i) {
+						var txt;
+						if (i < 10 && range_end >= 10) txt = '0' + i;
+						else txt = '' + i;
+						part._range[part._range.length] = txt;
+					}
+				}
+				Calendar._add_evs(part);
+				return part;
+			};
+			var hrs = cal.date.getHours();
+			var mins = cal.date.getMinutes();
+			var t12 = !cal.time24;
+			var pm = (hrs > 12);
+			if (t12 && pm) hrs -= 12;
+			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
+			var span = Calendar.createElement("span", cell);
+			span.innerHTML = ":";
+			span.className = "colon";
+			var M = makeTimePart("minute", mins, 0, 59);
+			var AP = null;
+			cell = Calendar.createElement("td", row);
+			cell.className = "time";
+			cell.colSpan = 2;
+			if (t12)
+				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
+			else
+				cell.innerHTML = "&nbsp;";
+
+			cal.onSetTime = function() {
+				var pm, hrs = this.date.getHours(),
+					mins = this.date.getMinutes();
+				if (t12) {
+					pm = (hrs >= 12);
+					if (pm) hrs -= 12;
+					if (hrs == 0) hrs = 12;
+					AP.innerHTML = pm ? "pm" : "am";
+				}
+				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
+				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
+			};
+
+			cal.onUpdateTime = function() {
+				var date = this.date;
+				var h = parseInt(H.innerHTML, 10);
+				if (t12) {
+					if (/pm/i.test(AP.innerHTML) && h < 12)
+						h += 12;
+					else if (/am/i.test(AP.innerHTML) && h == 12)
+						h = 0;
+				}
+				var d = date.getDate();
+				var m = date.getMonth();
+				var y = date.getFullYear();
+				date.setHours(h);
+				date.setMinutes(parseInt(M.innerHTML, 10));
+				date.setFullYear(y);
+				date.setMonth(m);
+				date.setDate(d);
+				this.dateClicked = false;
+				this.callHandler();
+			};
+		})();
+	} else {
+		this.onSetTime = this.onUpdateTime = function() {};
+	}
+
+	var tfoot = Calendar.createElement("tfoot", table);
+
+	row = Calendar.createElement("tr", tfoot);
+	row.className = "footrow";
+
+	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
+	cell.className = "ttip";
+	if (this.isPopup) {
+		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
+		cell.style.cursor = "move";
+	}
+	this.tooltips = cell;
+
+	div = Calendar.createElement("div", this.element);
+	this.monthsCombo = div;
+	div.className = "combo";
+	for (i = 0; i < Calendar._MN.length; ++i) {
+		var mn = Calendar.createElement("div");
+		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
+		mn.month = i;
+		mn.innerHTML = Calendar._SMN[i];
+		div.appendChild(mn);
+	}
+
+	div = Calendar.createElement("div", this.element);
+	this.yearsCombo = div;
+	div.className = "combo";
+	for (i = 12; i > 0; --i) {
+		var yr = Calendar.createElement("div");
+		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
+		div.appendChild(yr);
+	}
+
+	this._init(this.firstDayOfWeek, this.date);
+	parent.appendChild(this.element);
+};
+
+/** keyboard navigation, only for popup calendars */
+Calendar._keyEvent = function(ev) {
+	var cal = window._dynarch_popupCalendar;
+	if (!cal || cal.multiple)
+		return false;
+	(Calendar.is_ie) && (ev = window.event);
+	var act = (Calendar.is_ie || ev.type == "keypress"),
+		K = ev.keyCode;
+	if (ev.ctrlKey) {
+		switch (K) {
+		    case 37: // KEY left
+			act && Calendar.cellClick(cal._nav_pm);
+			break;
+		    case 38: // KEY up
+			act && Calendar.cellClick(cal._nav_py);
+			break;
+		    case 39: // KEY right
+			act && Calendar.cellClick(cal._nav_nm);
+			break;
+		    case 40: // KEY down
+			act && Calendar.cellClick(cal._nav_ny);
+			break;
+		    default:
+			return false;
+		}
+	} else switch (K) {
+	    case 32: // KEY space (now)
+		Calendar.cellClick(cal._nav_now);
+		break;
+	    case 27: // KEY esc
+		act && cal.callCloseHandler();
+		break;
+	    case 37: // KEY left
+	    case 38: // KEY up
+	    case 39: // KEY right
+	    case 40: // KEY down
+		if (act) {
+			var prev, x, y, ne, el, step;
+			prev = K == 37 || K == 38;
+			step = (K == 37 || K == 39) ? 1 : 7;
+			function setVars() {
+				el = cal.currentDateEl;
+				var p = el.pos;
+				x = p & 15;
+				y = p >> 4;
+				ne = cal.ar_days[y][x];
+			};setVars();
+			function prevMonth() {
+				var date = new Date(cal.date);
+				date.setDate(date.getDate() - step);
+				cal.setDate(date);
+			};
+			function nextMonth() {
+				var date = new Date(cal.date);
+				date.setDate(date.getDate() + step);
+				cal.setDate(date);
+			};
+			while (1) {
+				switch (K) {
+				    case 37: // KEY left
+					if (--x >= 0)
+						ne = cal.ar_days[y][x];
+					else {
+						x = 6;
+						K = 38;
+						continue;
+					}
+					break;
+				    case 38: // KEY up
+					if (--y >= 0)
+						ne = cal.ar_days[y][x];
+					else {
+						prevMonth();
+						setVars();
+					}
+					break;
+				    case 39: // KEY right
+					if (++x < 7)
+						ne = cal.ar_days[y][x];
+					else {
+						x = 0;
+						K = 40;
+						continue;
+					}
+					break;
+				    case 40: // KEY down
+					if (++y < cal.ar_days.length)
+						ne = cal.ar_days[y][x];
+					else {
+						nextMonth();
+						setVars();
+					}
+					break;
+				}
+				break;
+			}
+			if (ne) {
+				if (!ne.disabled)
+					Calendar.cellClick(ne);
+				else if (prev)
+					prevMonth();
+				else
+					nextMonth();
+			}
+		}
+		break;
+	    case 13: // KEY enter
+		if (act)
+			Calendar.cellClick(cal.currentDateEl, ev);
+		break;
+	    default:
+		return false;
+	}
+	return Calendar.stopEvent(ev);
+};
+
+/**
+ *  (RE)Initializes the calendar to the given date and firstDayOfWeek
+ */
+Calendar.prototype._init = function (firstDayOfWeek, date) {
+	var today = new Date(),
+		TY = today.getFullYear(),
+		TM = today.getMonth(),
+		TD = today.getDate();
+	this.table.style.visibility = "hidden";
+	var year = date.getFullYear();
+	if (year < this.minYear) {
+		year = this.minYear;
+		date.setFullYear(year);
+	} else if (year > this.maxYear) {
+		year = this.maxYear;
+		date.setFullYear(year);
+	}
+	this.firstDayOfWeek = firstDayOfWeek;
+	this.date = new Date(date);
+	var month = date.getMonth();
+	var mday = date.getDate();
+	var no_days = date.getMonthDays();
+
+	// calendar voodoo for computing the first day that would actually be
+	// displayed in the calendar, even if it's from the previous month.
+	// WARNING: this is magic. ;-)
+	date.setDate(1);
+	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
+	if (day1 < 0)
+		day1 += 7;
+	date.setDate(-day1);
+	date.setDate(date.getDate() + 1);
+
+	var row = this.tbody.firstChild;
+	var MN = Calendar._SMN[month];
+	var ar_days = this.ar_days = new Array();
+	var weekend = Calendar._TT["WEEKEND"];
+	var dates = this.multiple ? (this.datesCells = {}) : null;
+	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
+		var cell = row.firstChild;
+		if (this.weekNumbers) {
+			cell.className = "day wn";
+			cell.innerHTML = date.getWeekNumber();
+			cell = cell.nextSibling;
+		}
+		row.className = "daysrow";
+		var hasdays = false, iday, dpos = ar_days[i] = [];
+		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
+			iday = date.getDate();
+			var wday = date.getDay();
+			cell.className = "day";
+			cell.pos = i << 4 | j;
+			dpos[j] = cell;
+			var current_month = (date.getMonth() == month);
+			if (!current_month) {
+				if (this.showsOtherMonths) {
+					cell.className += " othermonth";
+					cell.otherMonth = true;
+				} else {
+					cell.className = "emptycell";
+					cell.innerHTML = "&nbsp;";
+					cell.disabled = true;
+					continue;
+				}
+			} else {
+				cell.otherMonth = false;
+				hasdays = true;
+			}
+			cell.disabled = false;
+			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
+			if (dates)
+				dates[date.print("%Y%m%d")] = cell;
+			if (this.getDateStatus) {
+				var status = this.getDateStatus(date, year, month, iday);
+				if (this.getDateToolTip) {
+					var toolTip = this.getDateToolTip(date, year, month, iday);
+					if (toolTip)
+						cell.title = toolTip;
+				}
+				if (status === true) {
+					cell.className += " disabled";
+					cell.disabled = true;
+				} else {
+					if (/disabled/i.test(status))
+						cell.disabled = true;
+					cell.className += " " + status;
+				}
+			}
+			if (!cell.disabled) {
+				cell.caldate = new Date(date);
+				cell.ttip = "_";
+				if (!this.multiple && current_month
+				    && iday == mday && this.hiliteToday) {
+					cell.className += " selected";
+					this.currentDateEl = cell;
+				}
+				if (date.getFullYear() == TY &&
+				    date.getMonth() == TM &&
+				    iday == TD) {
+					cell.className += " today";
+					cell.ttip += Calendar._TT["PART_TODAY"];
+				}
+				if (weekend.indexOf(wday.toString()) != -1)
+					cell.className += cell.otherMonth ? " oweekend" : " weekend";
+			}
+		}
+		if (!(hasdays || this.showsOtherMonths))
+			row.className = "emptyrow";
+	}
+	this.title.innerHTML = Calendar._MN[month] + ", " + year;
+	this.onSetTime();
+	this.table.style.visibility = "visible";
+	this._initMultipleDates();
+	// PROFILE
+	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
+};
+
+Calendar.prototype._initMultipleDates = function() {
+	if (this.multiple) {
+		for (var i in this.multiple) {
+			var cell = this.datesCells[i];
+			var d = this.multiple[i];
+			if (!d)
+				continue;
+			if (cell)
+				cell.className += " selected";
+		}
+	}
+};
+
+Calendar.prototype._toggleMultipleDate = function(date) {
+	if (this.multiple) {
+		var ds = date.print("%Y%m%d");
+		var cell = this.datesCells[ds];
+		if (cell) {
+			var d = this.multiple[ds];
+			if (!d) {
+				Calendar.addClass(cell, "selected");
+				this.multiple[ds] = date;
+			} else {
+				Calendar.removeClass(cell, "selected");
+				delete this.multiple[ds];
+			}
+		}
+	}
+};
+
+Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
+	this.getDateToolTip = unaryFunction;
+};
+
+/**
+ *  Calls _init function above for going to a certain date (but only if the
+ *  date is different than the currently selected one).
+ */
+Calendar.prototype.setDate = function (date) {
+	if (!date.equalsTo(this.date)) {
+		this._init(this.firstDayOfWeek, date);
+	}
+};
+
+/**
+ *  Refreshes the calendar.  Useful if the "disabledHandler" function is
+ *  dynamic, meaning that the list of disabled date can change at runtime.
+ *  Just * call this function if you think that the list of disabled dates
+ *  should * change.
+ */
+Calendar.prototype.refresh = function () {
+	this._init(this.firstDayOfWeek, this.date);
+};
+
+/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */
+Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
+	this._init(firstDayOfWeek, this.date);
+	this._displayWeekdays();
+};
+
+/**
+ *  Allows customization of what dates are enabled.  The "unaryFunction"
+ *  parameter must be a function object that receives the date (as a JS Date
+ *  object) and returns a boolean value.  If the returned value is true then
+ *  the passed date will be marked as disabled.
+ */
+Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
+	this.getDateStatus = unaryFunction;
+};
+
+/** Customization of allowed year range for the calendar. */
+Calendar.prototype.setRange = function (a, z) {
+	this.minYear = a;
+	this.maxYear = z;
+};
+
+/** Calls the first user handler (selectedHandler). */
+Calendar.prototype.callHandler = function () {
+	if (this.onSelected) {
+		this.onSelected(this, this.date.print(this.dateFormat));
+	}
+};
+
+/** Calls the second user handler (closeHandler). */
+Calendar.prototype.callCloseHandler = function () {
+	if (this.onClose) {
+		this.onClose(this);
+	}
+	this.hideShowCovered();
+};
+
+/** Removes the calendar object from the DOM tree and destroys it. */
+Calendar.prototype.destroy = function () {
+	var el = this.element.parentNode;
+	el.removeChild(this.element);
+	Calendar._C = null;
+	window._dynarch_popupCalendar = null;
+};
+
+/**
+ *  Moves the calendar element to a different section in the DOM tree (changes
+ *  its parent).
+ */
+Calendar.prototype.reparent = function (new_parent) {
+	var el = this.element;
+	el.parentNode.removeChild(el);
+	new_parent.appendChild(el);
+};
+
+// This gets called when the user presses a mouse button anywhere in the
+// document, if the calendar is shown.  If the click was outside the open
+// calendar this function closes it.
+Calendar._checkCalendar = function(ev) {
+	var calendar = window._dynarch_popupCalendar;
+	if (!calendar) {
+		return false;
+	}
+	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
+	for (; el != null && el != calendar.element; el = el.parentNode);
+	if (el == null) {
+		// calls closeHandler which should hide the calendar.
+		window._dynarch_popupCalendar.callCloseHandler();
+		return Calendar.stopEvent(ev);
+	}
+};
+
+/** Shows the calendar. */
+Calendar.prototype.show = function () {
+	var rows = this.table.getElementsByTagName("tr");
+	for (var i = rows.length; i > 0;) {
+		var row = rows[--i];
+		Calendar.removeClass(row, "rowhilite");
+		var cells = row.getElementsByTagName("td");
+		for (var j = cells.length; j > 0;) {
+			var cell = cells[--j];
+			Calendar.removeClass(cell, "hilite");
+			Calendar.removeClass(cell, "active");
+		}
+	}
+	this.element.style.display = "block";
+	this.hidden = false;
+	if (this.isPopup) {
+		window._dynarch_popupCalendar = this;
+		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
+		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
+		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
+	}
+	this.hideShowCovered();
+};
+
+/**
+ *  Hides the calendar.  Also removes any "hilite" from the class of any TD
+ *  element.
+ */
+Calendar.prototype.hide = function () {
+	if (this.isPopup) {
+		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
+		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
+		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
+	}
+	this.element.style.display = "none";
+	this.hidden = true;
+	this.hideShowCovered();
+};
+
+/**
+ *  Shows the calendar at a given absolute position (beware that, depending on
+ *  the calendar element style -- position property -- this might be relative
+ *  to the parent's containing rectangle).
+ */
+Calendar.prototype.showAt = function (x, y) {
+	var s = this.element.style;
+	s.left = x + "px";
+	s.top = y + "px";
+	this.show();
+};
+
+/** Shows the calendar near a given element. */
+Calendar.prototype.showAtElement = function (el, opts) {
+	var self = this;
+	var p = Calendar.getAbsolutePos(el);
+	if (!opts || typeof opts != "string") {
+		this.showAt(p.x, p.y + el.offsetHeight);
+		return true;
+	}
+	function fixPosition(box) {
+		if (box.x < 0)
+			box.x = 0;
+		if (box.y < 0)
+			box.y = 0;
+		var cp = document.createElement("div");
+		var s = cp.style;
+		s.position = "absolute";
+		s.right = s.bottom = s.width = s.height = "0px";
+		document.body.appendChild(cp);
+		var br = Calendar.getAbsolutePos(cp);
+		document.body.removeChild(cp);
+		if (Calendar.is_ie) {
+			br.y += document.body.scrollTop;
+			br.x += document.body.scrollLeft;
+		} else {
+			br.y += window.scrollY;
+			br.x += window.scrollX;
+		}
+		var tmp = box.x + box.width - br.x;
+		if (tmp > 0) box.x -= tmp;
+		tmp = box.y + box.height - br.y;
+		if (tmp > 0) box.y -= tmp;
+	};
+	this.element.style.display = "block";
+	Calendar.continuation_for_the_fucking_khtml_browser = function() {
+		var w = self.element.offsetWidth;
+		var h = self.element.offsetHeight;
+		self.element.style.display = "none";
+		var valign = opts.substr(0, 1);
+		var halign = "l";
+		if (opts.length > 1) {
+			halign = opts.substr(1, 1);
+		}
+		// vertical alignment
+		switch (valign) {
+		    case "T": p.y -= h; break;
+		    case "B": p.y += el.offsetHeight; break;
+		    case "C": p.y += (el.offsetHeight - h) / 2; break;
+		    case "t": p.y += el.offsetHeight - h; break;
+		    case "b": break; // already there
+		}
+		// horizontal alignment
+		switch (halign) {
+		    case "L": p.x -= w; break;
+		    case "R": p.x += el.offsetWidth; break;
+		    case "C": p.x += (el.offsetWidth - w) / 2; break;
+		    case "l": p.x += el.offsetWidth - w; break;
+		    case "r": break; // already there
+		}
+		p.width = w;
+		p.height = h + 40;
+		self.monthsCombo.style.display = "none";
+		fixPosition(p);
+		self.showAt(p.x, p.y);
+	};
+	if (Calendar.is_khtml)
+		setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10);
+	else
+		Calendar.continuation_for_the_fucking_khtml_browser();
+};
+
+/** Customizes the date format. */
+Calendar.prototype.setDateFormat = function (str) {
+	this.dateFormat = str;
+};
+
+/** Customizes the tooltip date format. */
+Calendar.prototype.setTtDateFormat = function (str) {
+	this.ttDateFormat = str;
+};
+
+/**
+ *  Tries to identify the date represented in a string.  If successful it also
+ *  calls this.setDate which moves the calendar to the given date.
+ */
+Calendar.prototype.parseDate = function(str, fmt) {
+	if (!fmt)
+		fmt = this.dateFormat;
+	this.setDate(Date.parseDate(str, fmt));
+};
+
+Calendar.prototype.hideShowCovered = function () {
+	if (!Calendar.is_ie && !Calendar.is_opera)
+		return;
+	function getVisib(obj){
+		var value = obj.style.visibility;
+		if (!value) {
+			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
+				if (!Calendar.is_khtml)
+					value = document.defaultView.
+						getComputedStyle(obj, "").getPropertyValue("visibility");
+				else
+					value = '';
+			} else if (obj.currentStyle) { // IE
+				value = obj.currentStyle.visibility;
+			} else
+				value = '';
+		}
+		return value;
+	};
+
+	var tags = new Array("applet", "iframe", "select");
+	var el = this.element;
+
+	var p = Calendar.getAbsolutePos(el);
+	var EX1 = p.x;
+	var EX2 = el.offsetWidth + EX1;
+	var EY1 = p.y;
+	var EY2 = el.offsetHeight + EY1;
+
+	for (var k = tags.length; k > 0; ) {
+		var ar = document.getElementsByTagName(tags[--k]);
+		var cc = null;
+
+		for (var i = ar.length; i > 0;) {
+			cc = ar[--i];
+
+			p = Calendar.getAbsolutePos(cc);
+			var CX1 = p.x;
+			var CX2 = cc.offsetWidth + CX1;
+			var CY1 = p.y;
+			var CY2 = cc.offsetHeight + CY1;
+
+			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
+				if (!cc.__msh_save_visibility) {
+					cc.__msh_save_visibility = getVisib(cc);
+				}
+				cc.style.visibility = cc.__msh_save_visibility;
+			} else {
+				if (!cc.__msh_save_visibility) {
+					cc.__msh_save_visibility = getVisib(cc);
+				}
+				cc.style.visibility = "hidden";
+			}
+		}
+	}
+};
+
+/** Internal function; it displays the bar with the names of the weekday. */
+Calendar.prototype._displayWeekdays = function () {
+	var fdow = this.firstDayOfWeek;
+	var cell = this.firstdayname;
+	var weekend = Calendar._TT["WEEKEND"];
+	for (var i = 0; i < 7; ++i) {
+		cell.className = "day name";
+		var realday = (i + fdow) % 7;
+		if (i) {
+			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
+			cell.navtype = 100;
+			cell.calendar = this;
+			cell.fdow = realday;
+			Calendar._add_evs(cell);
+		}
+		if (weekend.indexOf(realday.toString()) != -1) {
+			Calendar.addClass(cell, "weekend");
+		}
+		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
+		cell = cell.nextSibling;
+	}
+};
+
+/** Internal function.  Hides all combo boxes that might be displayed. */
+Calendar.prototype._hideCombos = function () {
+	this.monthsCombo.style.display = "none";
+	this.yearsCombo.style.display = "none";
+};
+
+/** Internal function.  Starts dragging the element. */
+Calendar.prototype._dragStart = function (ev) {
+	if (this.dragging) {
+		return;
+	}
+	this.dragging = true;
+	var posX;
+	var posY;
+	if (Calendar.is_ie) {
+		posY = window.event.clientY + document.body.scrollTop;
+		posX = window.event.clientX + document.body.scrollLeft;
+	} else {
+		posY = ev.clientY + window.scrollY;
+		posX = ev.clientX + window.scrollX;
+	}
+	var st = this.element.style;
+	this.xOffs = posX - parseInt(st.left);
+	this.yOffs = posY - parseInt(st.top);
+	with (Calendar) {
+		addEvent(document, "mousemove", calDragIt);
+		addEvent(document, "mouseup", calDragEnd);
+	}
+};
+
+// BEGIN: DATE OBJECT PATCHES
+
+/** Adds the number of days array to the Date object. */
+Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
+
+/** Constants used for time computations */
+Date.SECOND = 1000 /* milliseconds */;
+Date.MINUTE = 60 * Date.SECOND;
+Date.HOUR   = 60 * Date.MINUTE;
+Date.DAY    = 24 * Date.HOUR;
+Date.WEEK   =  7 * Date.DAY;
+
+Date.parseDate = function(str, fmt) {
+	var today = new Date();
+	var y = 0;
+	var m = -1;
+	var d = 0;
+	var a = str.split(/\W+/);
+	var b = fmt.match(/%./g);
+	var i = 0, j = 0;
+	var hr = 0;
+	var min = 0;
+	for (i = 0; i < a.length; ++i) {
+		if (!a[i])
+			continue;
+		switch (b[i]) {
+		    case "%d":
+		    case "%e":
+			d = parseInt(a[i], 10);
+			break;
+
+		    case "%m":
+			m = parseInt(a[i], 10) - 1;
+			break;
+
+		    case "%Y":
+		    case "%y":
+			y = parseInt(a[i], 10);
+			(y < 100) && (y += (y > 29) ? 1900 : 2000);
+			break;
+
+		    case "%b":
+		    case "%B":
+			for (j = 0; j < 12; ++j) {
+				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
+			}
+			break;
+
+		    case "%H":
+		    case "%I":
+		    case "%k":
+		    case "%l":
+			hr = parseInt(a[i], 10);
+			break;
+
+		    case "%P":
+		    case "%p":
+			if (/pm/i.test(a[i]) && hr < 12)
+				hr += 12;
+			else if (/am/i.test(a[i]) && hr >= 12)
+				hr -= 12;
+			break;
+
+		    case "%M":
+			min = parseInt(a[i], 10);
+			break;
+		}
+	}
+	if (isNaN(y)) y = today.getFullYear();
+	if (isNaN(m)) m = today.getMonth();
+	if (isNaN(d)) d = today.getDate();
+	if (isNaN(hr)) hr = today.getHours();
+	if (isNaN(min)) min = today.getMinutes();
+	if (y != 0 && m != -1 && d != 0)
+		return new Date(y, m, d, hr, min, 0);
+	y = 0; m = -1; d = 0;
+	for (i = 0; i < a.length; ++i) {
+		if (a[i].search(/[a-zA-Z]+/) != -1) {
+			var t = -1;
+			for (j = 0; j < 12; ++j) {
+				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
+			}
+			if (t != -1) {
+				if (m != -1) {
+					d = m+1;
+				}
+				m = t;
+			}
+		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
+			m = a[i]-1;
+		} else if (parseInt(a[i], 10) > 31 && y == 0) {
+			y = parseInt(a[i], 10);
+			(y < 100) && (y += (y > 29) ? 1900 : 2000);
+		} else if (d == 0) {
+			d = a[i];
+		}
+	}
+	if (y == 0)
+		y = today.getFullYear();
+	if (m != -1 && d != 0)
+		return new Date(y, m, d, hr, min, 0);
+	return today;
+};
+
+/** Returns the number of days in the current month */
+Date.prototype.getMonthDays = function(month) {
+	var year = this.getFullYear();
+	if (typeof month == "undefined") {
+		month = this.getMonth();
+	}
+	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
+		return 29;
+	} else {
+		return Date._MD[month];
+	}
+};
+
+/** Returns the number of day in the year. */
+Date.prototype.getDayOfYear = function() {
+	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
+	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
+	var time = now - then;
+	return Math.floor(time / Date.DAY);
+};
+
+/** Returns the number of the week in year, as defined in ISO 8601. */
+Date.prototype.getWeekNumber = function() {
+	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
+	var DoW = d.getDay();
+	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
+	var ms = d.valueOf(); // GMT
+	d.setMonth(0);
+	d.setDate(4); // Thu in Week 1
+	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
+};
+
+/** Checks date and time equality */
+Date.prototype.equalsTo = function(date) {
+	return ((this.getFullYear() == date.getFullYear()) &&
+		(this.getMonth() == date.getMonth()) &&
+		(this.getDate() == date.getDate()) &&
+		(this.getHours() == date.getHours()) &&
+		(this.getMinutes() == date.getMinutes()));
+};
+
+/** Set only the year, month, date parts (keep existing time) */
+Date.prototype.setDateOnly = function(date) {
+	var tmp = new Date(date);
+	this.setDate(1);
+	this.setFullYear(tmp.getFullYear());
+	this.setMonth(tmp.getMonth());
+	this.setDate(tmp.getDate());
+};
+
+/** Prints the date in a string according to the given format. */
+Date.prototype.print = function (str) {
+	var m = this.getMonth();
+	var d = this.getDate();
+	var y = this.getFullYear();
+	var wn = this.getWeekNumber();
+	var w = this.getDay();
+	var s = {};
+	var hr = this.getHours();
+	var pm = (hr >= 12);
+	var ir = (pm) ? (hr - 12) : hr;
+	var dy = this.getDayOfYear();
+	if (ir == 0)
+		ir = 12;
+	var min = this.getMinutes();
+	var sec = this.getSeconds();
+	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
+	s["%A"] = Calendar._DN[w]; // full weekday name
+	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
+	s["%B"] = Calendar._MN[m]; // full month name
+	// FIXME: %c : preferred date and time representation for the current locale
+	s["%C"] = 1 + Math.floor(y / 100); // the century number
+	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
+	s["%e"] = d; // the day of the month (range 1 to 31)
+	// FIXME: %D : american date style: %m/%d/%y
+	// FIXME: %E, %F, %G, %g, %h (man strftime)
+	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
+	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
+	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)
+	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
+	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
+	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
+	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
+	s["%n"] = "\n";		// a newline character
+	s["%p"] = pm ? "PM" : "AM";
+	s["%P"] = pm ? "pm" : "am";
+	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
+	// FIXME: %R : the time in 24-hour notation %H:%M
+	s["%s"] = Math.floor(this.getTime() / 1000);
+	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
+	s["%t"] = "\t";		// a tab character
+	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
+	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
+	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
+	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
+	// FIXME: %x : preferred date representation for the current locale without the time
+	// FIXME: %X : preferred time representation for the current locale without the date
+	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
+	s["%Y"] = y;		// year with the century
+	s["%%"] = "%";		// a literal '%' character
+
+	var re = /%./g;
+	if (!Calendar.is_ie5 && !Calendar.is_khtml)
+		return str.replace(re, function (par) { return s[par] || par; });
+
+	var a = str.match(re);
+	for (var i = 0; i < a.length; i++) {
+		var tmp = s[a[i]];
+		if (tmp) {
+			re = new RegExp(a[i], 'g');
+			str = str.replace(re, tmp);
+		}
+	}
+
+	return str;
+};
+
+Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
+Date.prototype.setFullYear = function(y) {
+	var d = new Date(this);
+	d.__msh_oldSetFullYear(y);
+	if (d.getMonth() != this.getMonth())
+		this.setDate(28);
+	this.__msh_oldSetFullYear(y);
+};
+
+// END: DATE OBJECT PATCHES
+
+
+// global object that remembers the calendar
+window._dynarch_popupCalendar = null;

Property changes on: tags/2.8.3/wb/include/jscalendar/calendar.js
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/jscalendar/menuarrow2.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/include/jscalendar/menuarrow2.gif
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/include/pclzip/readme.txt
===================================================================
--- tags/2.8.3/wb/include/pclzip/readme.txt	(nonexistent)
+++ tags/2.8.3/wb/include/pclzip/readme.txt	(revision 1610)
@@ -0,0 +1,421 @@
+// --------------------------------------------------------------------------------
+// PclZip 2.8.2 - readme.txt
+// --------------------------------------------------------------------------------
+// License GNU/LGPL - August 2009
+// Vincent Blavet - vincent@phpconcept.net
+// http://www.phpconcept.net
+// --------------------------------------------------------------------------------
+// $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $
+// --------------------------------------------------------------------------------
+
+
+
+0 - Sommaire
+============
+    1 - Introduction
+    2 - What's new
+    3 - Corrected bugs
+    4 - Known bugs or limitations
+    5 - License
+    6 - Warning
+    7 - Documentation
+    8 - Author
+    9 - Contribute
+
+1 - Introduction
+================
+
+  PclZip is a library that allow you to manage a Zip archive.
+
+  Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip
+
+2 - What's new
+==============
+
+  Version 2.8.2 :
+    - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with 
+      extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string
+      can also be modified in the post-extract call back.
+    **Bugs correction :
+    - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly    
+    - Remove use of eval() and do direct call to callback functions
+    - Correct support of 64bits systems (Thanks to WordPress team)
+
+  Version 2.8.1 :
+    - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is
+      deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will
+      automatically replace it by PCLZIP_OPT_BY_PREG.
+  
+  Version 2.8 :
+    - Improve extraction of zip archive for large files by using temporary files
+      This feature is working like the one defined in r2.7.
+      Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF,
+      PCLZIP_OPT_TEMP_FILE_THRESHOLD
+    - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto
+      sense of temporary file use.
+    - Bug correction : Reduce filepath in returned file list to remove ennoying
+      './/' preambule in file path.
+
+  Version 2.7 :
+    - Improve creation of zip archive for large files :
+      PclZip will now autosense the configured memory and use temporary files
+      when large file is suspected.
+      This feature can also ne triggered by manual options in create() and add()
+      methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files,
+      'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, 
+      'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size
+      threshold to use temporary files.
+      Using "temporary files" rather than "memory" might take more time, but
+      might give the ability to zip very large files :
+      Tested on my win laptop with a 88Mo file :
+        Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo)
+        Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo)
+    - Replace use of mktime() by time() to limit the E_STRICT error messages.
+    - Bug correction : When adding files with full windows path (drive letter)
+      PclZip is now working. Before, if the drive letter is not the default
+      path, PclZip was not able to add the file.
+
+  Version 2.6 :
+    - Code optimisation
+    - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to
+      add a comment for a specific file. (Don't really know if this is usefull)
+    - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string 
+      as a file.
+    - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with
+      a file.
+    - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted
+      with current time
+    - Add CRC value in the informations returned back for each file after an
+      action.
+    - Add missing closedir() statement.
+    - When adding a folder, and removing the path of this folder, files were
+      incorrectly added with a '/' at the beginning. Which means files are 
+      related to root in unix systems. Corrected.
+    - Add conditional if before constant definition. This will allow users
+      to redefine constants without changing the file, and then improve
+      upgrade of pclzip code for new versions.
+  
+  Version 2.5 :
+    - Introduce the ability to add file/folder with individual properties (file descriptor).
+      This gives for example the ability to change the filename of a zipped file.
+      . Able to add files individually
+      . Able to change full name
+      . Able to change short name
+      . Compatible with global options
+    - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME
+    - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE
+    - Add a security control feature. PclZip can extract any file in any folder
+      of a system. People may use this to upload a zip file and try to override
+      a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the
+      ability to forgive any directory transversal behavior.
+    - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path
+    - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION
+    - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend
+      by current path (getcwd())
+  
+  Version 2.4 :
+    - Code improvment : try to speed up the code by removing unusefull call to pack()
+    - Correct bug in delete() : delete() should be called with no argument. This was not
+      the case in 2.3. This is corrected in 2.4.
+    - Correct a bug in path_inclusion function. When the path has several '../../', the
+      result was bad.
+    - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will 
+      disable it while working and det it back to its original value.
+      This resolve a lots of bad formated archive errors.
+    - Bug correction : PclZip now correctly unzip file in some specific situation,
+      when compressed content has same size as uncompressed content.
+    - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', 
+      directories are not any more created.
+    - Code improvment : correct unclosed opendir(), better handling of . and .. in
+      loops.
+
+
+  Version 2.3 :
+    - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not
+      give the same result in PHP4 and PHP5 ....
+
+  Version 2.2 :
+    - Try development of PCLZIP_OPT_CRYPT .....
+      However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers,
+      the result (greater than a long) is not supported by PHP. Even the use of bcmath
+      functions does not help. I did not find yet a solution ...;
+    - Add missing '/' at end of directory entries
+    - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or
+      error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION.
+    - Corrected : Bad "version need to extract" field in local file header
+    - Add private method privCheckFileHeaders() in order to check local and central
+      file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives
+      the ability to have a local file header without size, compressed size and crc filled.
+    - Add a generic status 'error' for file status
+    - Add control of compression type. PclZip only support deflate compression method.
+      Before v2.2, PclZip does not check the compression method used in an archive while
+      extracting. With v2.2 PclZip returns a new error status for a file using an unsupported
+      compression method. New status is "unsupported_compression". New error code is
+      PCLZIP_ERR_UNSUPPORTED_COMPRESSION.
+    - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files
+      when errors like 'a folder with same name exists' or 'a newer file exists' or
+      'a write protected file' exists, rather than set a status for the concerning file
+      and resume the extract of the zip.
+    - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the
+      replacement of the file, even if a  newer version of the file exists.
+      Note that today if a file with the same name already exists but is older it will be
+      replaced by the extracted one.
+    - Improve PclZipUtilOption()
+    - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central
+      directory structure is the last data in the archive. Crypt encryption/decryption of
+      zip archive put trailing 0 bytes after decryption. PclZip is now supporting this.
+
+  Version 2.1 :
+    - Add the ability to abort the extraction by using a user callback function.
+      The user can now return the value '2' in its callback which indicates to stop the
+      extraction. For a pre call-back extract is stopped before the extration of the current
+      file. For a post call back, the extraction is stopped after.
+    - Add the ability to extract a file (or several files) directly in the standard output.
+      This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract().
+    - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT,
+      PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments
+      in the zip archive.
+    - When merging two archives, the comments are not any more lost, but merged, with a 
+      blank space separator.
+    - Corrected bug : Files are not deleted when all files are asked to be deleted.
+    - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature.
+
+
+  Version 2.0 :
+    ***** Warning : Some new features may break the backward compatibility for your scripts.
+                    Please carefully read the readme file.
+    - Add the ability to delete by Index, name and regular expression. This feature is 
+      performed by the method delete(), which uses the optional parameters
+      PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG.
+    - Add the ability to extract by regular expression. To extract by regexp you must use the method
+      extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG 
+      (depending if you want to use ereg() or preg_match() syntax) followed by the 
+      regular expression pattern.
+    - Add the ability to extract by index, directly with the extract() method. This is a
+      code improvment of the extractByIndex() method.
+    - Add the ability to extract by name. To extract by name you must use the method
+      extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to
+      extract or an array of filenames to extract. To extract all a folder, use the folder
+      name rather than the filename with a '/' at the end.
+    - Add the ability to add files without compression. This is done with a new attribute
+      which is PCLZIP_OPT_NO_COMPRESSION.
+    - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly
+      in a string without using any file (or temporary file).
+    - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string.
+      The default separator is now a comma (,) and not any more a blank space.
+      THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with
+      your script.
+    - Improve algorythm performance by removing the use of temporary files when adding or 
+      extracting files in an archive.
+    - Add (correct) detection of empty filename zipping. This can occurs when the removed
+      path is the same
+      as a zipped dir. The dir is not zipped (['status'] = filtered), only its content.
+    - Add better support for windows paths (thanks for help from manus@manusfreedom.com).
+    - Corrected bug : When the archive file already exists with size=0, the add() method
+      fails. Corrected in 2.0.
+    - Remove the use of OS_WINDOWS constant. Use php_uname() function rather.
+    - Control the order of index ranges in extract by index feature.
+    - Change the internal management of folders (better handling of internal flag).
+
+
+  Version 1.3 :
+    - Removing the double include check. This is now done by include_once() and require_once()
+      PHP directives.
+    - Changing the error handling mecanism : Remove the use of an external error library.
+      The former PclError...() functions are replaced by internal equivalent methods.
+      By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library.
+      Introducing the use of constants for error codes rather than integer values. This will help
+      in futur improvment.
+      Introduction of error handling functions like errorCode(), errorName() and errorInfo().
+    - Remove the deprecated use of calling function with arguments passed by reference.
+    - Add the calling of extract(), extractByIndex(), create() and add() functions
+      with variable options rather than fixed arguments.
+    - Add the ability to remove all the file path while extracting or adding,
+      without any need to specify the path to remove.
+      This is available for extract(), extractByIndex(), create() and add() functionS by using
+      the new variable options parameters :
+      - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct.
+    - Ability to change the mode of a file after the extraction (chmod()).
+      This is available for extract() and extractByIndex() functionS by using
+      the new variable options parameters.
+      - PCLZIP_OPT_SET_CHMOD : by setting the value of this option.
+    - Ability to definition call-back options. These call-back will be called during the adding,
+      or the extracting of file (extract(), extractByIndex(), create() and add() functions) :
+      - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user
+        can trigerred the change the filename of the extracted file. The user can triggered the
+        skip of the extraction. This is adding a 'skipped' status in the file list result value.
+      - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file.
+        Nothing can be triggered from that point.
+      - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user
+        can trigerred the change the stored filename of the added file. The user can triggered the
+        skip of the add. This is adding a 'skipped' status in the file list result value.
+      - PCLZIP_CB_POST_ADD : will be called after each add of a file.
+        Nothing can be triggered from that point.
+    - Two status are added in the file list returned as function result : skipped & filename_too_long
+      'skipped' is used when a call-back function ask for skipping the file.
+      'filename_too_long' is used while adding a file with a too long filename to archive (the file is
+      not added)
+    - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into
+      a directory.
+    - Add a check of the presence of the archive file before some actions (like list, ...)
+    - Add the initialisation of field "index" in header array. This means that by
+      default index will be -1 when not explicitly set by the methods.
+
+  Version 1.2 :
+    - Adding a duplicate function.
+    - Adding a merge function. The merge function is a "quick merge" function,
+      it just append the content of an archive at the end of the first one. There
+      is no check for duplicate files or more recent files.
+    - Improve the search of the central directory end.
+
+  Version 1.1.2 :
+
+    - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license
+      (see License section).
+    - Adding the optional support of a static temporary directory. You will need to configure
+      the constant PCLZIP_TEMPORARY_DIR if you want to use this feature.
+    - Improving the rename() function. In some cases rename() does not work (different
+      Filesystems), so it will be replaced by a copy() + unlink() functions.
+
+  Version 1.1.1 :
+
+    - Maintenance release, no new feature.
+
+  Version 1.1 :
+
+    - New method Add() : adding files in the archive
+    - New method ExtractByIndex() : partial extract of the archive, files are identified by
+      their index in the archive
+    - New method DeleteByIndex() : delete some files/folder entries from the archive,
+      files are identified by their index in the archive.
+    - Adding a test of the zlib extension presence. If not present abort the script.
+
+  Version 1.0.1 :
+
+    - No new feature
+
+
+3 - Corrected bugs
+==================
+
+  Corrected in Version 2.0 :
+    - Corrected : During an extraction, if a call-back fucntion is used and try to skip
+                  a file, all the extraction process is stopped. 
+
+  Corrected in Version 1.3 :
+    - Corrected : Support of static synopsis for method extract() is broken.
+    - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF).
+    - Corrected : When an extract is done with a remove_path parameter, the entry for
+      the directory with exactly the same path is not skipped/filtered.
+    - Corrected : extractByIndex() and deleteByIndex() were not managing index in the
+      right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This
+      is due to a sort of the index resulting table that puts 11 before 3-5 (sort on
+      string and not interger). The sort is temporarilly removed, this means that
+      you must provide a sorted list of index ranges.
+
+  Corrected in Version 1.2 :
+
+    - Nothing.
+
+  Corrected in Version 1.1.2 :
+
+    - Corrected : Winzip is unable to delete or add new files in a PclZip created archives.
+
+  Corrected in Version 1.1.1 :
+
+    - Corrected : When archived file is not compressed (0% compression), the
+      extract method fails.
+
+  Corrected in Version 1.1 :
+
+    - Corrected : Adding a complete tree of folder may result in a bad archive
+      creation.
+
+  Corrected in Version 1.0.1 :
+
+    - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
+
+
+4 - Known bugs or limitations
+=============================
+
+  Please publish bugs reports in SourceForge :
+    http://sourceforge.net/tracker/?group_id=40254&atid=427564
+
+  In Version 2.x :
+    - PclZip does only support file uncompressed or compressed with deflate (compression method 8)
+    - PclZip does not support password protected zip archive
+    - Some concern were seen when changing mtime of a file while archiving. 
+      Seems to be linked to Daylight Saving Time (PclTest_changing_mtime).
+
+  In Version 1.2 :
+
+    - merge() methods does not check for duplicate files or last date of modifications.
+
+  In Version 1.1 :
+
+    - Limitation : Using 'extract' fields in the file header in the zip archive is not supported.
+    - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to
+      add a file in a PclZip created archive. (Corrected in v.1.2)
+
+  In Version 1.0.1 :
+
+    - Adding a complete tree of folder may result in a bad archive
+      creation. (Corrected in V.1.1).
+    - Path given to methods must be in the unix format (/) and not the Windows format (\).
+      Workaround : Use only / directory separators.
+    - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz
+      added suffix. Files with these names may already exist and may be overwritten.
+      Workaround : none.
+    - PclZip does not check if the zlib extension is present. If it is absent, the zip
+      file is not created and the lib abort without warning.
+      Workaround : enable the zlib extension on the php install
+
+  In Version 1.0 :
+
+    - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024).
+      (Corrected in v.1.0.1)
+    - Limitation : Multi-disk zip archive are not supported.
+
+
+5 - License
+===========
+
+  Since version 1.1.2, PclZip Library is released under GNU/LGPL license.
+  This library is free, so you can use it at no cost.
+
+  HOWEVER, if you release a script, an application, a library or any kind of
+  code using PclZip library (or a part of it), YOU MUST :
+  - Indicate in the documentation (or a readme file), that your work
+    uses PclZip Library, and make a reference to the author and the web site
+    http://www.phpconcept.net
+  - Gives the ability to the final user to update the PclZip libary.
+
+  I will also appreciate that you send me a mail (vincent@phpconcept.net), just to
+  be aware that someone is using PclZip.
+
+  For more information about GNU/LGPL license : http://www.gnu.org
+
+6 - Warning
+=================
+
+  This library and the associated files are non commercial, non professional work.
+  It should not have unexpected results. However if any damage is caused by this software
+  the author can not be responsible.
+  The use of this software is at the risk of the user.
+
+7 - Documentation
+=================
+  PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php
+  A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/
+
+8 - Author
+==========
+
+  This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time.
+
+9 - Contribute
+==============
+  If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net.
+  If you can help in financing PhpConcept hosting service, please go to
+  http://www.phpconcept.net/soutien.php

Property changes on: tags/2.8.3/wb/include/pclzip/readme.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/pclzip/pclzip.lib.php
===================================================================
--- tags/2.8.3/wb/include/pclzip/pclzip.lib.php	(nonexistent)
+++ tags/2.8.3/wb/include/pclzip/pclzip.lib.php	(revision 1610)
@@ -0,0 +1,5694 @@
+<?php
+// --------------------------------------------------------------------------------
+// PhpConcept Library - Zip Module 2.8.2
+// --------------------------------------------------------------------------------
+// License GNU/LGPL - Vincent Blavet - August 2009
+// http://www.phpconcept.net
+// --------------------------------------------------------------------------------
+//
+// Presentation :
+//   PclZip is a PHP library that manage ZIP archives.
+//   So far tests show that archives generated by PclZip are readable by
+//   WinZip application and other tools.
+//
+// Description :
+//   See readme.txt and http://www.phpconcept.net
+//
+// Warning :
+//   This library and the associated files are non commercial, non professional
+//   work.
+//   It should not have unexpected results. However if any damage is caused by
+//   this software the author can not be responsible.
+//   The use of this software is at the risk of the user.
+//
+// --------------------------------------------------------------------------------
+// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $
+// --------------------------------------------------------------------------------
+
+  // ----- Constants
+  if (!defined('PCLZIP_READ_BLOCK_SIZE')) {
+    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );
+  }
+  
+  // ----- File list separator
+  // In version 1.x of PclZip, the separator for file list is a space
+  // (which is not a very smart choice, specifically for windows paths !).
+  // A better separator should be a comma (,). This constant gives you the
+  // abilty to change that.
+  // However notice that changing this value, may have impact on existing
+  // scripts, using space separated filenames.
+  // Recommanded values for compatibility with older versions :
+  //define( 'PCLZIP_SEPARATOR', ' ' );
+  // Recommanded values for smart separation of filenames.
+  if (!defined('PCLZIP_SEPARATOR')) {
+    define( 'PCLZIP_SEPARATOR', ',' );
+  }
+
+  // ----- Error configuration
+  // 0 : PclZip Class integrated error handling
+  // 1 : PclError external library error handling. By enabling this
+  //     you must ensure that you have included PclError library.
+  // [2,...] : reserved for futur use
+  if (!defined('PCLZIP_ERROR_EXTERNAL')) {
+    define( 'PCLZIP_ERROR_EXTERNAL', 0 );
+  }
+
+  // ----- Optional static temporary directory
+  //       By default temporary files are generated in the script current
+  //       path.
+  //       If defined :
+  //       - MUST BE terminated by a '/'.
+  //       - MUST be a valid, already created directory
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );
+  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );
+  if (!defined('PCLZIP_TEMPORARY_DIR')) {
+    define( 'PCLZIP_TEMPORARY_DIR', '' );
+  }
+
+  // ----- Optional threshold ratio for use of temporary files
+  //       Pclzip sense the size of the file to add/extract and decide to
+  //       use or not temporary file. The algorythm is looking for 
+  //       memory_limit of PHP and apply a ratio.
+  //       threshold = memory_limit * ratio.
+  //       Recommended values are under 0.5. Default 0.47.
+  //       Samples :
+  // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 );
+  if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {
+    define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );
+  }
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****
+// --------------------------------------------------------------------------------
+
+  // ----- Global variables
+  $g_pclzip_version = "2.8.2";
+
+  // ----- Error codes
+  //   -1 : Unable to open file in binary write mode
+  //   -2 : Unable to open file in binary read mode
+  //   -3 : Invalid parameters
+  //   -4 : File does not exist
+  //   -5 : Filename is too long (max. 255)
+  //   -6 : Not a valid zip file
+  //   -7 : Invalid extracted file size
+  //   -8 : Unable to create directory
+  //   -9 : Invalid archive extension
+  //  -10 : Invalid archive format
+  //  -11 : Unable to delete file (unlink)
+  //  -12 : Unable to rename file (rename)
+  //  -13 : Invalid header checksum
+  //  -14 : Invalid archive size
+  define( 'PCLZIP_ERR_USER_ABORTED', 2 );
+  define( 'PCLZIP_ERR_NO_ERROR', 0 );
+  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
+  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
+  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
+  define( 'PCLZIP_ERR_MISSING_FILE', -4 );
+  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
+  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
+  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
+  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
+  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
+  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
+  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
+  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
+  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
+  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
+  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );
+  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );
+  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );
+  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );
+  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );
+  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );
+
+  // ----- Options values
+  define( 'PCLZIP_OPT_PATH', 77001 );
+  define( 'PCLZIP_OPT_ADD_PATH', 77002 );
+  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );
+  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );
+  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );
+  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );
+  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );
+  define( 'PCLZIP_OPT_BY_NAME', 77008 );
+  define( 'PCLZIP_OPT_BY_INDEX', 77009 );
+  define( 'PCLZIP_OPT_BY_EREG', 77010 );
+  define( 'PCLZIP_OPT_BY_PREG', 77011 );
+  define( 'PCLZIP_OPT_COMMENT', 77012 );
+  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );
+  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );
+  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );
+  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );
+  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );
+  // Having big trouble with crypt. Need to multiply 2 long int
+  // which is not correctly supported by PHP ...
+  //define( 'PCLZIP_OPT_CRYPT', 77018 );
+  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );
+  define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias
+  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );
+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias
+  
+  // ----- File description attributes
+  define( 'PCLZIP_ATT_FILE_NAME', 79001 );
+  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );
+  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );
+  define( 'PCLZIP_ATT_FILE_MTIME', 79004 );
+  define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );
+  define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );
+
+  // ----- Call backs values
+  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );
+  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );
+  define( 'PCLZIP_CB_PRE_ADD', 78003 );
+  define( 'PCLZIP_CB_POST_ADD', 78004 );
+  /* For futur use
+  define( 'PCLZIP_CB_PRE_LIST', 78005 );
+  define( 'PCLZIP_CB_POST_LIST', 78006 );
+  define( 'PCLZIP_CB_PRE_DELETE', 78007 );
+  define( 'PCLZIP_CB_POST_DELETE', 78008 );
+  */
+
+  // --------------------------------------------------------------------------------
+  // Class : PclZip
+  // Description :
+  //   PclZip is the class that represent a Zip archive.
+  //   The public methods allow the manipulation of the archive.
+  // Attributes :
+  //   Attributes must not be accessed directly.
+  // Methods :
+  //   PclZip() : Object creator
+  //   create() : Creates the Zip archive
+  //   listContent() : List the content of the Zip archive
+  //   extract() : Extract the content of the archive
+  //   properties() : List the properties of the archive
+  // --------------------------------------------------------------------------------
+  class PclZip
+  {
+    // ----- Filename of the zip file
+    var $zipname = '';
+
+    // ----- File descriptor of the zip file
+    var $zip_fd = 0;
+
+    // ----- Internal error handling
+    var $error_code = 1;
+    var $error_string = '';
+    
+    // ----- Current status of the magic_quotes_runtime
+    // This value store the php configuration for magic_quotes
+    // The class can then disable the magic_quotes and reset it after
+    var $magic_quotes_status;
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZip()
+  // Description :
+  //   Creates a PclZip object and set the name of the associated Zip archive
+  //   filename.
+  //   Note that no real action is taken, if the archive does not exist it is not
+  //   created. Use create() for that.
+  // --------------------------------------------------------------------------------
+  function PclZip($p_zipname)
+  {
+
+    // ----- Tests the zlib
+    if (!function_exists('gzopen'))
+    {
+      die('Abort '.basename(__FILE__).' : Missing zlib extensions');
+    }
+
+    // ----- Set the attributes
+    $this->zipname = $p_zipname;
+    $this->zip_fd = 0;
+    $this->magic_quotes_status = -1;
+
+    // ----- Return
+    return;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   create($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   create($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two different synopsis. The first one is historical.
+  //   This method creates a Zip Archive. The Zip file is created in the
+  //   filesystem. The files and directories indicated in $p_filelist
+  //   are added in the archive. See the parameters description for the
+  //   supported format of $p_filelist.
+  //   When a directory is in the list, the directory and its content is added
+  //   in the archive.
+  //   In this synopsis, the function takes an optional variable list of
+  //   options. See bellow the supported options.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function create($p_filelist)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove from the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+                                             ));
+        if ($v_result != 1) {
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Invalid number / type of arguments");
+          return 0;
+        }
+      }
+    }
+    
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        if ($v_string != '') {
+          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+        }
+        else {
+        }
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Return
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   add($p_filelist, $p_add_dir="", $p_remove_dir="")
+  //   add($p_filelist, $p_option, $p_option_value, ...)
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This methods add the list of files in an existing archive.
+  //   If a file with the same name already exists, it is added at the end of the
+  //   archive, the first one is still present.
+  //   If the archive does not exist, it is created.
+  // Parameters :
+  //   $p_filelist : An array containing file or directory names, or
+  //                 a string containing one filename or one directory name, or
+  //                 a string containing a list of filenames and/or directory
+  //                 names separated by spaces.
+  //   $p_add_dir : A path to add before the real path of the archived file,
+  //                in order to have it memorized in the archive.
+  //   $p_remove_dir : A path to remove from the real path of the file to archive,
+  //                   in order to have a shorter path memorized in the archive.
+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir
+  //                   is removed first, before $p_add_dir is added.
+  // Options :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_COMMENT :
+  //   PCLZIP_OPT_ADD_COMMENT :
+  //   PCLZIP_OPT_PREPEND_COMMENT :
+  //   PCLZIP_CB_PRE_ADD :
+  //   PCLZIP_CB_POST_ADD :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the added files, with a status of the add action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function add($p_filelist)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Set default values
+    $v_options = array();
+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_ADD => 'optional',
+                                                   PCLZIP_CB_POST_ADD => 'optional',
+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',
+                                                   PCLZIP_OPT_COMMENT => 'optional',
+                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',
+                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+                                                   //, PCLZIP_OPT_CRYPT => 'optional'
+												   ));
+        if ($v_result != 1) {
+          return 0;
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Init
+    $v_string_list = array();
+    $v_att_list = array();
+    $v_filedescr_list = array();
+    $p_result_list = array();
+    
+    // ----- Look if the $p_filelist is really an array
+    if (is_array($p_filelist)) {
+    
+      // ----- Look if the first element is also an array
+      //       This will mean that this is a file description entry
+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
+        $v_att_list = $p_filelist;
+      }
+      
+      // ----- The list is a list of string names
+      else {
+        $v_string_list = $p_filelist;
+      }
+    }
+
+    // ----- Look if the $p_filelist is a string
+    else if (is_string($p_filelist)) {
+      // ----- Create a list from the string
+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
+    }
+
+    // ----- Invalid variable type for $p_filelist
+    else {
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");
+      return 0;
+    }
+    
+    // ----- Reformat the string list
+    if (sizeof($v_string_list) != 0) {
+      foreach ($v_string_list as $v_string) {
+        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;
+      }
+    }
+    
+    // ----- For each file in the list check the attributes
+    $v_supported_attributes
+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'
+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'
+             ,PCLZIP_ATT_FILE_MTIME => 'optional'
+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'
+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'
+						);
+    foreach ($v_att_list as $v_entry) {
+      $v_result = $this->privFileDescrParseAtt($v_entry,
+                                               $v_filedescr_list[],
+                                               $v_options,
+                                               $v_supported_attributes);
+      if ($v_result != 1) {
+        return 0;
+      }
+    }
+
+    // ----- Expand the filelist (expand directories)
+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Call the create fct
+    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);
+    if ($v_result != 1) {
+      return 0;
+    }
+
+    // ----- Return
+    return $p_result_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : listContent()
+  // Description :
+  //   This public method, gives the list of the files and directories, with their
+  //   properties.
+  //   The properties of each entries in the list are (used also in other functions) :
+  //     filename : Name of the file. For a create or add action it is the filename
+  //                given by the user. For an extract function it is the filename
+  //                of the extracted file.
+  //     stored_filename : Name of the file / directory stored in the archive.
+  //     size : Size of the stored file.
+  //     compressed_size : Size of the file's data compressed in the archive
+  //                       (without the headers overhead)
+  //     mtime : Last known modification date of the file (UNIX timestamp)
+  //     comment : Comment associated with the file
+  //     folder : true | false
+  //     index : index of the file in the archive
+  //     status : status of the action (depending of the action) :
+  //              Values are :
+  //                ok : OK !
+  //                filtered : the file / dir is not extracted (filtered by user)
+  //                already_a_directory : the file can not be extracted because a
+  //                                      directory with the same name already exists
+  //                write_protected : the file can not be extracted because a file
+  //                                  with the same name already exists and is
+  //                                  write protected
+  //                newer_exist : the file was not extracted because a newer file exists
+  //                path_creation_fail : the file is not extracted because the folder
+  //                                     does not exist and can not be created
+  //                write_error : the file was not extracted because there was a
+  //                              error while writing the file
+  //                read_error : the file was not extracted because there was a error
+  //                             while reading the file
+  //                invalid_header : the file was not extracted because of an archive
+  //                                 format error (bad file header)
+  //   Note that each time a method can continue operating when there
+  //   is an action error on a file, the error is only logged in the file status.
+  // Return Values :
+  //   0 on an unrecoverable failure,
+  //   The list of the files in the archive.
+  // --------------------------------------------------------------------------------
+  function listContent()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    if (($v_result = $this->privList($p_list)) != 1)
+    {
+      unset($p_list);
+      return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extract($p_path="./", $p_remove_path="")
+  //   extract([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method extract all the files / directories from the archive to the
+  //   folder indicated in $p_path.
+  //   If you want to ignore the 'root' part of path of the memorized files
+  //   you can indicate this in the optional $p_remove_path parameter.
+  //   By default, if a newer file with the same name already exists, the
+  //   file is not extracted.
+  //
+  //   If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions
+  //   are used, the path indicated in PCLZIP_OPT_ADD_PATH is append
+  //   at the end of the path value of PCLZIP_OPT_PATH.
+  // Parameters :
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 or a negative value on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function extract()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_BY_NAME => 'optional',
+                                                   PCLZIP_OPT_BY_EREG => 'optional',
+                                                   PCLZIP_OPT_BY_PREG => 'optional',
+                                                   PCLZIP_OPT_BY_INDEX => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												    ));
+        if ($v_result != 1) {
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Trace
+
+    // ----- Call the extracting fct
+    $p_list = array();
+    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,
+	                                     $v_remove_all_path, $v_options);
+    if ($v_result < 1) {
+      unset($p_list);
+      return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   extractByIndex($p_index, $p_path="./", $p_remove_path="")
+  //   extractByIndex($p_index, [$p_option, $p_option_value, ...])
+  // Description :
+  //   This method supports two synopsis. The first one is historical.
+  //   This method is doing a partial extract of the archive.
+  //   The extracted files or folders are identified by their index in the
+  //   archive (from 0 to n).
+  //   Note that if the index identify a folder, only the folder entry is
+  //   extracted, not all the files included in the archive.
+  // Parameters :
+  //   $p_index : A single index (integer) or a string of indexes of files to
+  //              extract. The form of the string is "0,4-6,8-12" with only numbers
+  //              and '-' for range or ',' to separate ranges. No spaces or ';'
+  //              are allowed.
+  //   $p_path : Path where the files and directories are to be extracted
+  //   $p_remove_path : First part ('root' part) of the memorized path
+  //                    (if any similar) to remove while extracting.
+  // Options :
+  //   PCLZIP_OPT_PATH :
+  //   PCLZIP_OPT_ADD_PATH :
+  //   PCLZIP_OPT_REMOVE_PATH :
+  //   PCLZIP_OPT_REMOVE_ALL_PATH :
+  //   PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and
+  //     not as files.
+  //     The resulting content is in a new field 'content' in the file
+  //     structure.
+  //     This option must be used alone (any other options are ignored).
+  //   PCLZIP_CB_PRE_EXTRACT :
+  //   PCLZIP_CB_POST_EXTRACT :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the extracted files, with a status of the action.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  //function extractByIndex($p_index, options...)
+  function extractByIndex($p_index)
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+//    $v_path = "./";
+    $v_path = '';
+    $v_remove_path = "";
+    $v_remove_all_path = false;
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Default values for option
+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+
+    // ----- Look for arguments
+    if ($v_size > 1) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Remove form the options list the first argument
+      array_shift($v_arg_list);
+      $v_size--;
+
+      // ----- Look for first arg
+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
+
+        // ----- Parse the options
+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                            array (PCLZIP_OPT_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',
+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
+                                                   PCLZIP_OPT_ADD_PATH => 'optional',
+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',
+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',
+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',
+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'
+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'
+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',
+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'
+												   ));
+        if ($v_result != 1) {
+          return 0;
+        }
+
+        // ----- Set the arguments
+        if (isset($v_options[PCLZIP_OPT_PATH])) {
+          $v_path = $v_options[PCLZIP_OPT_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {
+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+        }
+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {
+          // ----- Check for '/' in last path char
+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {
+            $v_path .= '/';
+          }
+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];
+        }
+        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {
+          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;
+        }
+        else {
+        }
+      }
+
+      // ----- Look for 2 args
+      // Here we need to support the first historic synopsis of the
+      // method.
+      else {
+
+        // ----- Get the first argument
+        $v_path = $v_arg_list[0];
+
+        // ----- Look for the optional second argument
+        if ($v_size == 2) {
+          $v_remove_path = $v_arg_list[1];
+        }
+        else if ($v_size > 2) {
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");
+
+          // ----- Return
+          return 0;
+        }
+      }
+    }
+
+    // ----- Trace
+
+    // ----- Trick
+    // Here I want to reuse extractByRule(), so I need to parse the $p_index
+    // with privParseOptions()
+    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);
+    $v_options_trick = array();
+    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,
+                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));
+    if ($v_result != 1) {
+        return 0;
+    }
+    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];
+
+    // ----- Look for default option values
+    $this->privOptionDefaultThreshold($v_options);
+
+    // ----- Call the extracting fct
+    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {
+        return(0);
+    }
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function :
+  //   delete([$p_option, $p_option_value, ...])
+  // Description :
+  //   This method removes files from the archive.
+  //   If no parameters are given, then all the archive is emptied.
+  // Parameters :
+  //   None or optional arguments.
+  // Options :
+  //   PCLZIP_OPT_BY_INDEX :
+  //   PCLZIP_OPT_BY_NAME :
+  //   PCLZIP_OPT_BY_EREG : 
+  //   PCLZIP_OPT_BY_PREG :
+  // Return Values :
+  //   0 on failure,
+  //   The list of the files which are still present in the archive.
+  //   (see PclZip::listContent() for list entry format)
+  // --------------------------------------------------------------------------------
+  function delete()
+  {
+    $v_result=1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Set default values
+    $v_options = array();
+
+    // ----- Look for variable options arguments
+    $v_size = func_num_args();
+
+    // ----- Look for arguments
+    if ($v_size > 0) {
+      // ----- Get the arguments
+      $v_arg_list = func_get_args();
+
+      // ----- Parse the options
+      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,
+                                        array (PCLZIP_OPT_BY_NAME => 'optional',
+                                               PCLZIP_OPT_BY_EREG => 'optional',
+                                               PCLZIP_OPT_BY_PREG => 'optional',
+                                               PCLZIP_OPT_BY_INDEX => 'optional' ));
+      if ($v_result != 1) {
+          return 0;
+      }
+    }
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Call the delete fct
+    $v_list = array();
+    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {
+      $this->privSwapBackMagicQuotes();
+      unset($v_list);
+      return(0);
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : deleteByIndex()
+  // Description :
+  //   ***** Deprecated *****
+  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.
+  // --------------------------------------------------------------------------------
+  function deleteByIndex($p_index)
+  {
+    
+    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);
+
+    // ----- Return
+    return $p_list;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : properties()
+  // Description :
+  //   This method gives the properties of the archive.
+  //   The properties are :
+  //     nb : Number of files in the archive
+  //     comment : Comment associated with the archive file
+  //     status : not_exist, ok
+  // Parameters :
+  //   None
+  // Return Values :
+  //   0 on failure,
+  //   An array with the archive properties.
+  // --------------------------------------------------------------------------------
+  function properties()
+  {
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      $this->privSwapBackMagicQuotes();
+      return(0);
+    }
+
+    // ----- Default properties
+    $v_prop = array();
+    $v_prop['comment'] = '';
+    $v_prop['nb'] = 0;
+    $v_prop['status'] = 'not_exist';
+
+    // ----- Look if file exists
+    if (@is_file($this->zipname))
+    {
+      // ----- Open the zip file
+      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+      {
+        $this->privSwapBackMagicQuotes();
+        
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+        // ----- Return
+        return 0;
+      }
+
+      // ----- Read the central directory informations
+      $v_central_dir = array();
+      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        return 0;
+      }
+
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Set the user attributes
+      $v_prop['comment'] = $v_central_dir['comment'];
+      $v_prop['nb'] = $v_central_dir['entries'];
+      $v_prop['status'] = 'ok';
+    }
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_prop;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : duplicate()
+  // Description :
+  //   This method creates an archive by copying the content of an other one. If
+  //   the archive already exist, it is replaced by the new one without any warning.
+  // Parameters :
+  //   $p_archive : The filename of a valid archive, or
+  //                a valid PclZip object.
+  // Return Values :
+  //   1 on success.
+  //   0 or a negative value on error (error code).
+  // --------------------------------------------------------------------------------
+  function duplicate($p_archive)
+  {
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the $p_archive is a PclZip object
+    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))
+    {
+
+      // ----- Duplicate the archive
+      $v_result = $this->privDuplicate($p_archive->zipname);
+    }
+
+    // ----- Look if the $p_archive is a string (so a filename)
+    else if (is_string($p_archive))
+    {
+
+      // ----- Check that $p_archive is a valid zip file
+      // TBC : Should also check the archive format
+      if (!is_file($p_archive)) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");
+        $v_result = PCLZIP_ERR_MISSING_FILE;
+      }
+      else {
+        // ----- Duplicate the archive
+        $v_result = $this->privDuplicate($p_archive);
+      }
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : merge()
+  // Description :
+  //   This method merge the $p_archive_to_add archive at the end of the current
+  //   one ($this).
+  //   If the archive ($this) does not exist, the merge becomes a duplicate.
+  //   If the $p_archive_to_add archive does not exist, the merge is a success.
+  // Parameters :
+  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,
+  //                       or a PclZip object archive.
+  // Return Values :
+  //   1 on success,
+  //   0 or negative values on error (see below).
+  // --------------------------------------------------------------------------------
+  function merge($p_archive_to_add)
+  {
+    $v_result = 1;
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Check archive
+    if (!$this->privCheckFormat()) {
+      return(0);
+    }
+
+    // ----- Look if the $p_archive_to_add is a PclZip object
+    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))
+    {
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($p_archive_to_add);
+    }
+
+    // ----- Look if the $p_archive_to_add is a string (so a filename)
+    else if (is_string($p_archive_to_add))
+    {
+
+      // ----- Create a temporary archive
+      $v_object_archive = new PclZip($p_archive_to_add);
+
+      // ----- Merge the archive
+      $v_result = $this->privMerge($v_object_archive);
+    }
+
+    // ----- Invalid variable
+    else
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");
+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : errorCode()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorCode()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorCode());
+    }
+    else {
+      return($this->error_code);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorName()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorName($p_with_code=false)
+  {
+    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
+                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
+                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
+                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
+                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
+                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
+                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
+                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
+                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
+                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
+                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
+                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
+                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
+                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
+                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
+                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',
+                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',
+                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',
+                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'
+                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'
+                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'
+                    );
+
+    if (isset($v_name[$this->error_code])) {
+      $v_value = $v_name[$this->error_code];
+    }
+    else {
+      $v_value = 'NoName';
+    }
+
+    if ($p_with_code) {
+      return($v_value.' ('.$this->error_code.')');
+    }
+    else {
+      return($v_value);
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : errorInfo()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function errorInfo($p_full=false)
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      return(PclErrorString());
+    }
+    else {
+      if ($p_full) {
+        return($this->errorName(true)." : ".$this->error_string);
+      }
+      else {
+        return($this->error_string." [code ".$this->error_code."]");
+      }
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+
+// --------------------------------------------------------------------------------
+// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****
+// *****                                                        *****
+// *****       THESES FUNCTIONS MUST NOT BE USED DIRECTLY       *****
+// --------------------------------------------------------------------------------
+
+
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFormat()
+  // Description :
+  //   This method check that the archive exists and is a valid zip archive.
+  //   Several level of check exists. (futur)
+  // Parameters :
+  //   $p_level : Level of check. Default 0.
+  //              0 : Check the first bytes (magic codes) (default value))
+  //              1 : 0 + Check the central directory (futur)
+  //              2 : 1 + Check each file header (futur)
+  // Return Values :
+  //   true on success,
+  //   false on error, the error code is set.
+  // --------------------------------------------------------------------------------
+  function privCheckFormat($p_level=0)
+  {
+    $v_result = true;
+
+	// ----- Reset the file system cache
+    clearstatcache();
+
+    // ----- Reset the error handler
+    $this->privErrorReset();
+
+    // ----- Look if the file exits
+    if (!is_file($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");
+      return(false);
+    }
+
+    // ----- Check that the file is readeable
+    if (!is_readable($this->zipname)) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");
+      return(false);
+    }
+
+    // ----- Check the magic code
+    // TBC
+
+    // ----- Check the central header
+    // TBC
+
+    // ----- Check each file header
+    // TBC
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privParseOptions()
+  // Description :
+  //   This internal methods reads the variable list of arguments ($p_options_list,
+  //   $p_size) and generate an array with the options and values ($v_result_list).
+  //   $v_requested_options contains the options that can be present and those that
+  //   must be present.
+  //   $v_requested_options is an array, with the option value as key, and 'optional',
+  //   or 'mandatory' as value.
+  // Parameters :
+  //   See above.
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)
+  {
+    $v_result=1;
+    
+    // ----- Read the options
+    $i=0;
+    while ($i<$p_size) {
+
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$p_options_list[$i]])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for next option
+      switch ($p_options_list[$i]) {
+        // ----- Look for options that request a path value
+        case PCLZIP_OPT_PATH :
+        case PCLZIP_OPT_REMOVE_PATH :
+        case PCLZIP_OPT_ADD_PATH :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_THRESHOLD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            return PclZip::errorCode();
+          }
+          
+          // ----- Check the value
+          $v_value = $p_options_list[$i+1];
+          if ((!is_integer($v_value)) || ($v_value<0)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value (and convert it in bytes)
+          $v_result_list[$p_options_list[$i]] = $v_value*1048576;
+          $i++;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_ON :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        case PCLZIP_OPT_TEMP_FILE_OFF :
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");
+            return PclZip::errorCode();
+          }
+          // ----- Check for incompatible options
+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");
+            return PclZip::errorCode();
+          }
+          
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (   is_string($p_options_list[$i+1])
+              && ($p_options_list[$i+1] != '')) {
+            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);
+            $i++;
+          }
+          else {
+          }
+        break;
+
+        // ----- Look for options that request an array of string for value
+        case PCLZIP_OPT_BY_NAME :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that request an EREG or PREG expression
+        case PCLZIP_OPT_BY_EREG :
+          // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG
+          // to PCLZIP_OPT_BY_PREG
+          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;
+        case PCLZIP_OPT_BY_PREG :
+        //case PCLZIP_OPT_CRYPT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_OPT_COMMENT :
+        case PCLZIP_OPT_ADD_COMMENT :
+        case PCLZIP_OPT_PREPEND_COMMENT :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,
+			                     "Missing parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          if (is_string($p_options_list[$i+1])) {
+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,
+			                     "Wrong parameter value for option '"
+								 .PclZipUtilOptionText($p_options_list[$i])
+								 ."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          $i++;
+        break;
+
+        // ----- Look for options that request an array of index
+        case PCLZIP_OPT_BY_INDEX :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_work_list = array();
+          if (is_string($p_options_list[$i+1])) {
+
+              // ----- Remove spaces
+              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');
+
+              // ----- Parse items
+              $v_work_list = explode(",", $p_options_list[$i+1]);
+          }
+          else if (is_integer($p_options_list[$i+1])) {
+              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];
+          }
+          else if (is_array($p_options_list[$i+1])) {
+              $v_work_list = $p_options_list[$i+1];
+          }
+          else {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+          
+          // ----- Reduce the index list
+          // each index item in the list must be a couple with a start and
+          // an end value : [0,3], [5-5], [8-10], ...
+          // ----- Check the format of each item
+          $v_sort_flag=false;
+          $v_sort_value=0;
+          for ($j=0; $j<sizeof($v_work_list); $j++) {
+              // ----- Explode the item
+              $v_item_list = explode("-", $v_work_list[$j]);
+              $v_size_item_list = sizeof($v_item_list);
+              
+              // ----- TBC : Here we might check that each item is a
+              // real integer ...
+              
+              // ----- Look for single value
+              if ($v_size_item_list == 1) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];
+              }
+              elseif ($v_size_item_list == 2) {
+                  // ----- Set the option value
+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];
+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];
+              }
+              else {
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  return PclZip::errorCode();
+              }
+
+
+              // ----- Look for list sort
+              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {
+                  $v_sort_flag=true;
+
+                  // ----- TBC : An automatic sort should be writen ...
+                  // ----- Error log
+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+                  // ----- Return
+                  return PclZip::errorCode();
+              }
+              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];
+          }
+          
+          // ----- Sort the items
+          if ($v_sort_flag) {
+              // TBC : To Be Completed
+          }
+
+          // ----- Next option
+          $i++;
+        break;
+
+        // ----- Look for options that request no value
+        case PCLZIP_OPT_REMOVE_ALL_PATH :
+        case PCLZIP_OPT_EXTRACT_AS_STRING :
+        case PCLZIP_OPT_NO_COMPRESSION :
+        case PCLZIP_OPT_EXTRACT_IN_OUTPUT :
+        case PCLZIP_OPT_REPLACE_NEWER :
+        case PCLZIP_OPT_STOP_ON_ERROR :
+          $v_result_list[$p_options_list[$i]] = true;
+        break;
+
+        // ----- Look for options that request an octal value
+        case PCLZIP_OPT_SET_CHMOD :
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];
+          $i++;
+        break;
+
+        // ----- Look for options that request a call-back
+        case PCLZIP_CB_PRE_EXTRACT :
+        case PCLZIP_CB_POST_EXTRACT :
+        case PCLZIP_CB_PRE_ADD :
+        case PCLZIP_CB_POST_ADD :
+        /* for futur use
+        case PCLZIP_CB_PRE_DELETE :
+        case PCLZIP_CB_POST_DELETE :
+        case PCLZIP_CB_PRE_LIST :
+        case PCLZIP_CB_POST_LIST :
+        */
+          // ----- Check the number of parameters
+          if (($i+1) >= $p_size) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Get the value
+          $v_function_name = $p_options_list[$i+1];
+
+          // ----- Check that the value is a valid existing function
+          if (!function_exists($v_function_name)) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+
+          // ----- Set the attribute
+          $v_result_list[$p_options_list[$i]] = $v_function_name;
+          $i++;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                       "Unknown parameter '"
+							   .$p_options_list[$i]."'");
+
+          // ----- Return
+          return PclZip::errorCode();
+      }
+
+      // ----- Next options
+      $i++;
+    }
+
+    // ----- Look for mandatory options
+    if ($v_requested_options !== false) {
+      for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+        // ----- Look for mandatory option
+        if ($v_requested_options[$key] == 'mandatory') {
+          // ----- Look if present
+          if (!isset($v_result_list[$key])) {
+            // ----- Error log
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+
+            // ----- Return
+            return PclZip::errorCode();
+          }
+        }
+      }
+    }
+    
+    // ----- Look for default values
+    if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {
+      
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOptionDefaultThreshold()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privOptionDefaultThreshold(&$p_options)
+  {
+    $v_result=1;
+    
+    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {
+      return $v_result;
+    }
+    
+    // ----- Get 'memory_limit' configuration value
+    $v_memory_limit = ini_get('memory_limit');
+    $v_memory_limit = trim($v_memory_limit);
+    $last = strtolower(substr($v_memory_limit, -1));
+ 
+    if($last == 'g')
+        //$v_memory_limit = $v_memory_limit*1024*1024*1024;
+        $v_memory_limit = $v_memory_limit*1073741824;
+    if($last == 'm')
+        //$v_memory_limit = $v_memory_limit*1024*1024;
+        $v_memory_limit = $v_memory_limit*1048576;
+    if($last == 'k')
+        $v_memory_limit = $v_memory_limit*1024;
+            
+    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);
+    
+
+    // ----- Sanity check : No threshold if value lower than 1M
+    if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {
+      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);
+    }
+          
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrParseAtt()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)
+  {
+    $v_result=1;
+    
+    // ----- For each file in the list check the attributes
+    foreach ($p_file_list as $v_key => $v_value) {
+    
+      // ----- Check if the option is supported
+      if (!isset($v_requested_options[$v_key])) {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Look for attribute
+      switch ($v_key) {
+        case PCLZIP_ATT_FILE_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);
+          
+          if ($p_filedescr['filename'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_SHORT_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);
+
+          if ($p_filedescr['new_short_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+        break;
+
+        case PCLZIP_ATT_FILE_NEW_FULL_NAME :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);
+
+          if ($p_filedescr['new_full_name'] == '') {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+        break;
+
+        // ----- Look for options that takes a string
+        case PCLZIP_ATT_FILE_COMMENT :
+          if (!is_string($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['comment'] = $v_value;
+        break;
+
+        case PCLZIP_ATT_FILE_MTIME :
+          if (!is_integer($v_value)) {
+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");
+            return PclZip::errorCode();
+          }
+
+          $p_filedescr['mtime'] = $v_value;
+        break;
+
+        case PCLZIP_ATT_FILE_CONTENT :
+          $p_filedescr['content'] = $v_value;
+        break;
+
+        default :
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,
+		                           "Unknown parameter '".$v_key."'");
+
+          // ----- Return
+          return PclZip::errorCode();
+      }
+
+      // ----- Look for mandatory options
+      if ($v_requested_options !== false) {
+        for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {
+          // ----- Look for mandatory option
+          if ($v_requested_options[$key] == 'mandatory') {
+            // ----- Look if present
+            if (!isset($p_file_list[$key])) {
+              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");
+              return PclZip::errorCode();
+            }
+          }
+        }
+      }
+    
+    // end foreach
+    }
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privFileDescrExpand()
+  // Description :
+  //   This method look for each item of the list to see if its a file, a folder
+  //   or a string to be added as file. For any other type of files (link, other)
+  //   just ignore the item.
+  //   Then prepare the information that will be stored for that file.
+  //   When its a folder, expand the folder with all the files that are in that 
+  //   folder (recursively).
+  // Parameters :
+  // Return Values :
+  //   1 on success.
+  //   0 on failure.
+  // --------------------------------------------------------------------------------
+  function privFileDescrExpand(&$p_filedescr_list, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Create a result list
+    $v_result_list = array();
+    
+    // ----- Look each entry
+    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {
+      
+      // ----- Get filedescr
+      $v_descr = $p_filedescr_list[$i];
+      
+      // ----- Reduce the filename
+      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);
+      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);
+      
+      // ----- Look for real file or folder
+      if (file_exists($v_descr['filename'])) {
+        if (@is_file($v_descr['filename'])) {
+          $v_descr['type'] = 'file';
+        }
+        else if (@is_dir($v_descr['filename'])) {
+          $v_descr['type'] = 'folder';
+        }
+        else if (@is_link($v_descr['filename'])) {
+          // skip
+          continue;
+        }
+        else {
+          // skip
+          continue;
+        }
+      }
+      
+      // ----- Look for string added as file
+      else if (isset($v_descr['content'])) {
+        $v_descr['type'] = 'virtual_file';
+      }
+      
+      // ----- Missing file
+      else {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+      
+      // ----- Calculate the stored filename
+      $this->privCalculateStoredFilename($v_descr, $p_options);
+      
+      // ----- Add the descriptor in result list
+      $v_result_list[sizeof($v_result_list)] = $v_descr;
+      
+      // ----- Look for folder
+      if ($v_descr['type'] == 'folder') {
+        // ----- List of items in folder
+        $v_dirlist_descr = array();
+        $v_dirlist_nb = 0;
+        if ($v_folder_handler = @opendir($v_descr['filename'])) {
+          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {
+
+            // ----- Skip '.' and '..'
+            if (($v_item_handler == '.') || ($v_item_handler == '..')) {
+                continue;
+            }
+            
+            // ----- Compose the full filename
+            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;
+            
+            // ----- Look for different stored filename
+            // Because the name of the folder was changed, the name of the
+            // files/sub-folders also change
+            if (($v_descr['stored_filename'] != $v_descr['filename'])
+                 && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {
+              if ($v_descr['stored_filename'] != '') {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;
+              }
+              else {
+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;
+              }
+            }
+      
+            $v_dirlist_nb++;
+          }
+          
+          @closedir($v_folder_handler);
+        }
+        else {
+          // TBC : unable to open folder in read mode
+        }
+        
+        // ----- Expand each element of the list
+        if ($v_dirlist_nb != 0) {
+          // ----- Expand
+          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {
+            return $v_result;
+          }
+          
+          // ----- Concat the resulting list
+          $v_result_list = array_merge($v_result_list, $v_dirlist_descr);
+        }
+        else {
+        }
+          
+        // ----- Free local array
+        unset($v_dirlist_descr);
+      }
+    }
+    
+    // ----- Get the result list
+    $p_filedescr_list = $v_result_list;
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCreate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+    
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the file in write mode
+    if (($v_result = $this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Add the list of files
+    $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAdd()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Look if the archive exists or is empty
+    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))
+    {
+
+      // ----- Do a create
+      $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);
+
+      // ----- Return
+      return $v_result;
+    }
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      fclose($v_zip_temp_fd);
+      $this->privCloseFd();
+      @unlink($v_zip_temp_name);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Create the Central Dir files header
+    for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          fclose($v_zip_temp_fd);
+          $this->privCloseFd();
+          @unlink($v_zip_temp_name);
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Return
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = $v_central_dir['comment'];
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
+      $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];
+    }
+    if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privOpenFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privOpenFd($p_mode)
+  {
+    $v_result=1;
+
+    // ----- Look if already open
+    if ($this->zip_fd != 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Open the zip file
+    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCloseFd()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privCloseFd()
+  {
+    $v_result=1;
+
+    if ($this->zip_fd != 0)
+      @fclose($this->zip_fd);
+    $this->zip_fd = 0;
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddList()
+  // Description :
+  //   $p_add_dir and $p_remove_dir will give the ability to memorize a path which is
+  //   different from the real path of the file. This is usefull if you want to have PclTar
+  //   running in any directory, and memorize relative path from an other directory.
+  // Parameters :
+  //   $p_list : An array containing the file or directory names to add in the tar
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  //   $p_add_dir : Path to add in the filename path archived
+  //   $p_remove_dir : Path to remove in the filename path archived
+  // Return Values :
+  // --------------------------------------------------------------------------------
+//  function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)
+  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Add the files
+    $v_header_list = array();
+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($this->zip_fd);
+
+    // ----- Create the Central Dir files header
+    for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)
+    {
+      // ----- Create the file header
+      if ($v_header_list[$i]['status'] == 'ok') {
+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+          // ----- Return
+          return $v_result;
+        }
+        $v_count++;
+      }
+
+      // ----- Transform the header to a 'usable' info
+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+    }
+
+    // ----- Zip file comment
+    $v_comment = '';
+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+    }
+
+    // ----- Calculate the size of the central header
+    $v_size = @ftell($this->zip_fd)-$v_offset;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)
+    {
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileList()
+  // Description :
+  // Parameters :
+  //   $p_filedescr_list : An array containing the file description 
+  //                      or directory names to add in the zip
+  //   $p_result_list : list of added files with their properties (specially the status field)
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_header = array();
+
+    // ----- Recuperate the current number of elt in list
+    $v_nb = sizeof($p_result_list);
+
+    // ----- Loop on the files
+    for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {
+      // ----- Format the filename
+      $p_filedescr_list[$j]['filename']
+      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);
+      
+
+      // ----- Skip empty file names
+      // TBC : Can this be possible ? not checked in DescrParseAtt ?
+      if ($p_filedescr_list[$j]['filename'] == "") {
+        continue;
+      }
+
+      // ----- Check the filename
+      if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')
+          && (!file_exists($p_filedescr_list[$j]['filename']))) {
+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist");
+        return PclZip::errorCode();
+      }
+
+      // ----- Look if it is a file or a dir with no all path remove option
+      // or a dir with all its path removed
+//      if (   (is_file($p_filedescr_list[$j]['filename']))
+//          || (   is_dir($p_filedescr_list[$j]['filename'])
+      if (   ($p_filedescr_list[$j]['type'] == 'file')
+          || ($p_filedescr_list[$j]['type'] == 'virtual_file')
+          || (   ($p_filedescr_list[$j]['type'] == 'folder')
+              && (   !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])
+                  || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))
+          ) {
+
+        // ----- Add the file
+        $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,
+                                       $p_options);
+        if ($v_result != 1) {
+          return $v_result;
+        }
+
+        // ----- Store the file infos
+        $p_result_list[$v_nb++] = $v_header;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFile($p_filedescr, &$p_header, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+    // TBC : Already done in the fileAtt check ... ?
+    if ($p_filename == "") {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+  
+    // ----- Look for a stored different filename 
+    /* TBC : Removed
+    if (isset($p_filedescr['stored_filename'])) {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+    }
+    else {
+      $v_stored_filename = $p_filedescr['stored_filename'];
+    }
+    */
+
+    // ----- Set the file properties
+    clearstatcache();
+    $p_header['version'] = 20;
+    $p_header['version_extracted'] = 10;
+    $p_header['flag'] = 0;
+    $p_header['compression'] = 0;
+    $p_header['crc'] = 0;
+    $p_header['compressed_size'] = 0;
+    $p_header['filename_len'] = strlen($p_filename);
+    $p_header['extra_len'] = 0;
+    $p_header['disk'] = 0;
+    $p_header['internal'] = 0;
+    $p_header['offset'] = 0;
+    $p_header['filename'] = $p_filename;
+// TBC : Removed    $p_header['stored_filename'] = $v_stored_filename;
+    $p_header['stored_filename'] = $p_filedescr['stored_filename'];
+    $p_header['extra'] = '';
+    $p_header['status'] = 'ok';
+    $p_header['index'] = -1;
+
+    // ----- Look for regular file
+    if ($p_filedescr['type']=='file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for regular folder
+    else if ($p_filedescr['type']=='folder') {
+      $p_header['external'] = 0x00000010;
+      $p_header['mtime'] = filemtime($p_filename);
+      $p_header['size'] = filesize($p_filename);
+    }
+    
+    // ----- Look for virtual file
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['external'] = 0x00000000;
+      $p_header['size'] = strlen($p_filedescr['content']);
+    }
+    
+
+    // ----- Look for filetime
+    if (isset($p_filedescr['mtime'])) {
+      $p_header['mtime'] = $p_filedescr['mtime'];
+    }
+    else if ($p_filedescr['type'] == 'virtual_file') {
+      $p_header['mtime'] = time();
+    }
+    else {
+      $p_header['mtime'] = filemtime($p_filename);
+    }
+
+    // ------ Look for file comment
+    if (isset($p_filedescr['comment'])) {
+      $p_header['comment_len'] = strlen($p_filedescr['comment']);
+      $p_header['comment'] = $p_filedescr['comment'];
+    }
+    else {
+      $p_header['comment_len'] = 0;
+      $p_header['comment'] = '';
+    }
+
+    // ----- Look for pre-add callback
+    if (isset($p_options[PCLZIP_CB_PRE_ADD])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_header['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {
+        $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);
+      }
+    }
+
+    // ----- Look for empty stored filename
+    if ($p_header['stored_filename'] == "") {
+      $p_header['status'] = "filtered";
+    }
+    
+    // ----- Check the path length
+    if (strlen($p_header['stored_filename']) > 0xFF) {
+      $p_header['status'] = 'filename_too_long';
+    }
+
+    // ----- Look if no error, or file not skipped
+    if ($p_header['status'] == 'ok') {
+
+      // ----- Look for a file
+      if ($p_filedescr['type'] == 'file') {
+        // ----- Look for using temporary file to zip
+        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+            && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                    && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) {
+          $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options);
+          if ($v_result < PCLZIP_ERR_NO_ERROR) {
+            return $v_result;
+          }
+        }
+        
+        // ----- Use "in memory" zip algo
+        else {
+
+        // ----- Open the source file
+        if (($v_file = @fopen($p_filename, "rb")) == 0) {
+          PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+          return PclZip::errorCode();
+        }
+
+        // ----- Read the file content
+        $v_content = @fread($v_file, $p_header['size']);
+
+        // ----- Close the file
+        @fclose($v_file);
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+
+        }
+
+      }
+
+      // ----- Look for a virtual file (a file from string)
+      else if ($p_filedescr['type'] == 'virtual_file') {
+          
+        $v_content = $p_filedescr['content'];
+
+        // ----- Calculate the CRC
+        $p_header['crc'] = @crc32($v_content);
+        
+        // ----- Look for no compression
+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {
+          // ----- Set header parameters
+          $p_header['compressed_size'] = $p_header['size'];
+          $p_header['compression'] = 0;
+        }
+        
+        // ----- Look for normal compression
+        else {
+          // ----- Compress the content
+          $v_content = @gzdeflate($v_content);
+
+          // ----- Set header parameters
+          $p_header['compressed_size'] = strlen($v_content);
+          $p_header['compression'] = 8;
+        }
+        
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+          @fclose($v_file);
+          return $v_result;
+        }
+
+        // ----- Write the compressed (or not) content
+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);
+      }
+
+      // ----- Look for a directory
+      else if ($p_filedescr['type'] == 'folder') {
+        // ----- Look for directory last '/'
+        if (@substr($p_header['stored_filename'], -1) != '/') {
+          $p_header['stored_filename'] .= '/';
+        }
+
+        // ----- Set the file properties
+        $p_header['size'] = 0;
+        //$p_header['external'] = 0x41FF0010;   // Value for a folder : to be checked
+        $p_header['external'] = 0x00000010;   // Value for a folder : to be checked
+
+        // ----- Call the header generation
+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)
+        {
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Look for post-add callback
+    if (isset($p_options[PCLZIP_CB_POST_ADD])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Ignored
+        $v_result = 1;
+      }
+
+      // ----- Update the informations
+      // Nothing can be modified
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privAddFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)
+  {
+    $v_result=PCLZIP_ERR_NO_ERROR;
+    
+    // ----- Working variable
+    $p_filename = $p_filedescr['filename'];
+
+
+    // ----- Open the source file
+    if (($v_file = @fopen($p_filename, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");
+      return PclZip::errorCode();
+    }
+
+    // ----- Creates a compressed temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = filesize($p_filename);
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @gzputs($v_file_compressed, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file);
+    @gzclose($v_file_compressed);
+
+    // ----- Check the minimum file size
+    if (filesize($v_gzip_temp_name) < 18) {
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the compressed attributes
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the gzip file header
+    $v_binary_data = @fread($v_file_compressed, 10);
+    $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);
+
+    // ----- Check some parameters
+    $v_data_header['os'] = bin2hex($v_data_header['os']);
+
+    // ----- Read the gzip file footer
+    @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);
+    $v_binary_data = @fread($v_file_compressed, 8);
+    $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);
+
+    // ----- Set the attributes
+    $p_header['compression'] = ord($v_data_header['cm']);
+    //$p_header['mtime'] = $v_data_header['mtime'];
+    $p_header['crc'] = $v_data_footer['crc'];
+    $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Call the header generation
+    if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {
+      return $v_result;
+    }
+
+    // ----- Add the compressed data
+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)
+    {
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    fseek($v_file_compressed, 10);
+    $v_size = $p_header['compressed_size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($v_file_compressed, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close the file
+    @fclose($v_file_compressed);
+
+    // ----- Unlink the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCalculateStoredFilename()
+  // Description :
+  //   Based on file descriptor properties and global options, this method
+  //   calculate the filename that will be stored in the archive.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privCalculateStoredFilename(&$p_filedescr, &$p_options)
+  {
+    $v_result=1;
+    
+    // ----- Working variables
+    $p_filename = $p_filedescr['filename'];
+    if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {
+      $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];
+    }
+    else {
+      $p_add_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {
+      $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];
+    }
+    else {
+      $p_remove_dir = '';
+    }
+    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {
+      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];
+    }
+    else {
+      $p_remove_all_dir = 0;
+    }
+
+
+    // ----- Look for full name change
+    if (isset($p_filedescr['new_full_name'])) {
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);
+    }
+    
+    // ----- Look for path and/or short name change
+    else {
+
+      // ----- Look for short name change
+      // Its when we cahnge just the filename but not the path
+      if (isset($p_filedescr['new_short_name'])) {
+        $v_path_info = pathinfo($p_filename);
+        $v_dir = '';
+        if ($v_path_info['dirname'] != '') {
+          $v_dir = $v_path_info['dirname'].'/';
+        }
+        $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];
+      }
+      else {
+        // ----- Calculate the stored filename
+        $v_stored_filename = $p_filename;
+      }
+
+      // ----- Look for all path to remove
+      if ($p_remove_all_dir) {
+        $v_stored_filename = basename($p_filename);
+      }
+      // ----- Look for partial path remove
+      else if ($p_remove_dir != "") {
+        if (substr($p_remove_dir, -1) != '/')
+          $p_remove_dir .= "/";
+
+        if (   (substr($p_filename, 0, 2) == "./")
+            || (substr($p_remove_dir, 0, 2) == "./")) {
+            
+          if (   (substr($p_filename, 0, 2) == "./")
+              && (substr($p_remove_dir, 0, 2) != "./")) {
+            $p_remove_dir = "./".$p_remove_dir;
+          }
+          if (   (substr($p_filename, 0, 2) != "./")
+              && (substr($p_remove_dir, 0, 2) == "./")) {
+            $p_remove_dir = substr($p_remove_dir, 2);
+          }
+        }
+
+        $v_compare = PclZipUtilPathInclusion($p_remove_dir,
+                                             $v_stored_filename);
+        if ($v_compare > 0) {
+          if ($v_compare == 2) {
+            $v_stored_filename = "";
+          }
+          else {
+            $v_stored_filename = substr($v_stored_filename,
+                                        strlen($p_remove_dir));
+          }
+        }
+      }
+      
+      // ----- Remove drive letter if any
+      $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);
+      
+      // ----- Look for path to add
+      if ($p_add_dir != "") {
+        if (substr($p_add_dir, -1) == "/")
+          $v_stored_filename = $p_add_dir.$v_stored_filename;
+        else
+          $v_stored_filename = $p_add_dir."/".$v_stored_filename;
+      }
+    }
+
+    // ----- Filename (reduce the path of stored name)
+    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);
+    $p_filedescr['stored_filename'] = $v_stored_filename;
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Store the offset position of the file
+    $p_header['offset'] = ftell($this->zip_fd);
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,
+	                      $p_header['version_extracted'], $p_header['flag'],
+                          $p_header['compression'], $v_mtime, $v_mdate,
+                          $p_header['crc'], $p_header['compressed_size'],
+						  $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len']);
+
+    // ----- Write the first 148 bytes of the header in the archive
+    fputs($this->zip_fd, $v_binary_data, 30);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // TBC
+    //for(reset($p_header); $key = key($p_header); next($p_header)) {
+    //}
+
+    // ----- Transform UNIX mtime to DOS format mdate/mtime
+    $v_date = getdate($p_header['mtime']);
+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;
+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];
+
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,
+	                      $p_header['version'], $p_header['version_extracted'],
+                          $p_header['flag'], $p_header['compression'],
+						  $v_mtime, $v_mdate, $p_header['crc'],
+                          $p_header['compressed_size'], $p_header['size'],
+                          strlen($p_header['stored_filename']),
+						  $p_header['extra_len'], $p_header['comment_len'],
+                          $p_header['disk'], $p_header['internal'],
+						  $p_header['external'], $p_header['offset']);
+
+    // ----- Write the 42 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 46);
+
+    // ----- Write the variable fields
+    if (strlen($p_header['stored_filename']) != 0)
+    {
+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));
+    }
+    if ($p_header['extra_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);
+    }
+    if ($p_header['comment_len'] != 0)
+    {
+      fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privWriteCentralHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)
+  {
+    $v_result=1;
+
+    // ----- Packed data
+    $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,
+	                      $p_nb_entries, $p_size,
+						  $p_offset, strlen($p_comment));
+
+    // ----- Write the 22 bytes of the header in the zip file
+    fputs($this->zip_fd, $v_binary_data, 22);
+
+    // ----- Write the variable fields
+    if (strlen($p_comment) != 0)
+    {
+      fputs($this->zip_fd, $p_comment, strlen($p_comment));
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privList()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privList(&$p_list)
+  {
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Open the zip file
+    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)
+    {
+      // ----- Magic quotes trick
+      $this->privSwapBackMagicQuotes();
+      
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of Central Dir
+    @rewind($this->zip_fd);
+    if (@fseek($this->zip_fd, $v_central_dir['offset']))
+    {
+      $this->privSwapBackMagicQuotes();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read each entry
+    for ($i=0; $i<$v_central_dir['entries']; $i++)
+    {
+      // ----- Read the file header
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        $this->privSwapBackMagicQuotes();
+        return $v_result;
+      }
+      $v_header['index'] = $i;
+
+      // ----- Get the only interesting attributes
+      $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);
+      unset($v_header);
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+
+    // ----- Magic quotes trick
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privConvertHeader2FileInfo()
+  // Description :
+  //   This function takes the file informations from the central directory
+  //   entries and extract the interesting parameters that will be given back.
+  //   The resulting file infos are set in the array $p_info
+  //     $p_info['filename'] : Filename with full path. Given by user (add),
+  //                           extracted in the filesystem (extract).
+  //     $p_info['stored_filename'] : Stored filename in the archive.
+  //     $p_info['size'] = Size of the file.
+  //     $p_info['compressed_size'] = Compressed size of the file.
+  //     $p_info['mtime'] = Last modification date of the file.
+  //     $p_info['comment'] = Comment associated with the file.
+  //     $p_info['folder'] = true/false : indicates if the entry is a folder or not.
+  //     $p_info['status'] = status of the action on the file.
+  //     $p_info['crc'] = CRC of the file content.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privConvertHeader2FileInfo($p_header, &$p_info)
+  {
+    $v_result=1;
+
+    // ----- Get the interesting attributes
+    $v_temp_path = PclZipUtilPathReduction($p_header['filename']);
+    $p_info['filename'] = $v_temp_path;
+    $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']);
+    $p_info['stored_filename'] = $v_temp_path;
+    $p_info['size'] = $p_header['size'];
+    $p_info['compressed_size'] = $p_header['compressed_size'];
+    $p_info['mtime'] = $p_header['mtime'];
+    $p_info['comment'] = $p_header['comment'];
+    $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);
+    $p_info['index'] = $p_header['index'];
+    $p_info['status'] = $p_header['status'];
+    $p_info['crc'] = $p_header['crc'];
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractByRule()
+  // Description :
+  //   Extract a file or directory depending of rules (by index, by name, ...)
+  // Parameters :
+  //   $p_file_list : An array where will be placed the properties of each
+  //                  extracted file
+  //   $p_path : Path to add while writing the extracted files
+  //   $p_remove_path : Path to remove (from the file memorized path) while writing the
+  //                    extracted files. If the path does not match the file path,
+  //                    the file is extracted with its memorized path.
+  //                    $p_remove_path does not apply to 'list' mode.
+  //                    $p_path and $p_remove_path are commulative.
+  // Return Values :
+  //   1 on success,0 or less on error (see error code list)
+  // --------------------------------------------------------------------------------
+  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Magic quotes trick
+    $this->privDisableMagicQuotes();
+
+    // ----- Check the path
+    if (   ($p_path == "")
+	    || (   (substr($p_path, 0, 1) != "/")
+		    && (substr($p_path, 0, 3) != "../")
+			&& (substr($p_path,1,2)!=":/")))
+      $p_path = "./".$p_path;
+
+    // ----- Reduce the path last (and duplicated) '/'
+    if (($p_path != "./") && ($p_path != "/"))
+    {
+      // ----- Look for the path end '/'
+      while (substr($p_path, -1) == "/")
+      {
+        $p_path = substr($p_path, 0, strlen($p_path)-1);
+      }
+    }
+
+    // ----- Look for path to remove format (should end by /)
+    if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))
+    {
+      $p_remove_path .= '/';
+    }
+    $p_remove_path_size = strlen($p_remove_path);
+
+    // ----- Open the zip file
+    if (($v_result = $this->privOpenFd('rb')) != 1)
+    {
+      $this->privSwapBackMagicQuotes();
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+      $this->privSwapBackMagicQuotes();
+
+      return $v_result;
+    }
+
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+
+    // ----- Read each entry
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+
+      // ----- Read next Central dir entry
+      @rewind($this->zip_fd);
+      if (@fseek($this->zip_fd, $v_pos_entry))
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read the file header
+      $v_header = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+        $this->privSwapBackMagicQuotes();
+
+        return $v_result;
+      }
+
+      // ----- Store the index
+      $v_header['index'] = $i;
+
+      // ----- Store the file position
+      $v_pos_entry = ftell($this->zip_fd);
+
+      // ----- Look for the specific extract rules
+      $v_extract = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_extract = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  $v_extract = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      // ereg() is deprecated with PHP 5.3
+      /* 
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {
+              $v_extract = true;
+          }
+      }
+      */
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {
+              $v_extract = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+          
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  $v_extract = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  break;
+              }
+          }
+      }
+
+      // ----- Look for no rule, which means extract all the archive
+      else {
+          $v_extract = true;
+      }
+
+	  // ----- Check compression method
+	  if (   ($v_extract)
+	      && (   ($v_header['compression'] != 8)
+		      && ($v_header['compression'] != 0))) {
+          $v_header['status'] = 'unsupported_compression';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+              $this->privSwapBackMagicQuotes();
+              
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,
+			                       "Filename '".$v_header['stored_filename']."' is "
+				  	    	  	   ."compressed by an unsupported compression "
+				  	    	  	   ."method (".$v_header['compression'].") ");
+
+              return PclZip::errorCode();
+		  }
+	  }
+	  
+	  // ----- Check encrypted files
+	  if (($v_extract) && (($v_header['flag'] & 1) == 1)) {
+          $v_header['status'] = 'unsupported_encryption';
+
+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+              $this->privSwapBackMagicQuotes();
+
+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,
+			                       "Unsupported encryption for "
+				  	    	  	   ." filename '".$v_header['stored_filename']
+								   ."'");
+
+              return PclZip::errorCode();
+		  }
+    }
+
+      // ----- Look for real extraction
+      if (($v_extract) && ($v_header['status'] != 'ok')) {
+          $v_result = $this->privConvertHeader2FileInfo($v_header,
+		                                        $p_file_list[$v_nb_extracted++]);
+          if ($v_result != 1) {
+              $this->privCloseFd();
+              $this->privSwapBackMagicQuotes();
+              return $v_result;
+          }
+
+          $v_extract = false;
+      }
+      
+      // ----- Look for real extraction
+      if ($v_extract)
+      {
+
+        // ----- Go to the file position
+        @rewind($this->zip_fd);
+        if (@fseek($this->zip_fd, $v_header['offset']))
+        {
+          // ----- Close the zip file
+          $this->privCloseFd();
+
+          $this->privSwapBackMagicQuotes();
+
+          // ----- Error log
+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+          // ----- Return
+          return PclZip::errorCode();
+        }
+
+        // ----- Look for extraction as string
+        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {
+
+          $v_string = '';
+
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            return $v_result;
+          }
+
+          // ----- Set the file content
+          $p_file_list[$v_nb_extracted]['content'] = $v_string;
+
+          // ----- Next extracted file
+          $v_nb_extracted++;
+          
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for extraction in standard output
+        elseif (   (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))
+		        && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {
+          // ----- Extracting the file in standard output
+          $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+        // ----- Look for normal extraction
+        else {
+          // ----- Extracting the file
+          $v_result1 = $this->privExtractFile($v_header,
+		                                      $p_path, $p_remove_path,
+											  $p_remove_all_path,
+											  $p_options);
+          if ($v_result1 < 1) {
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+            return $v_result1;
+          }
+
+          // ----- Get the only interesting attributes
+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)
+          {
+            // ----- Close the zip file
+            $this->privCloseFd();
+            $this->privSwapBackMagicQuotes();
+
+            return $v_result;
+          }
+
+          // ----- Look for user callback abort
+          if ($v_result1 == 2) {
+          	break;
+          }
+        }
+      }
+    }
+
+    // ----- Close the zip file
+    $this->privCloseFd();
+    $this->privSwapBackMagicQuotes();
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //
+  // 1 : ... ?
+  // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback
+  // --------------------------------------------------------------------------------
+  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for all path to remove
+    if ($p_remove_all_path == true) {
+        // ----- Look for folder entry that not need to be extracted
+        if (($p_entry['external']&0x00000010)==0x00000010) {
+
+            $p_entry['status'] = "filtered";
+
+            return $v_result;
+        }
+
+        // ----- Get the basename of the path
+        $p_entry['filename'] = basename($p_entry['filename']);
+    }
+
+    // ----- Look for path to remove
+    else if ($p_remove_path != "")
+    {
+      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "filtered";
+
+        // ----- Return
+        return $v_result;
+      }
+
+      $p_remove_path_size = strlen($p_remove_path);
+      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)
+      {
+
+        // ----- Remove the path
+        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);
+
+      }
+    }
+
+    // ----- Add the path
+    if ($p_path != '') {
+      $p_entry['filename'] = $p_path."/".$p_entry['filename'];
+    }
+    
+    // ----- Check a base_dir_restriction
+    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {
+      $v_inclusion
+      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],
+                                $p_entry['filename']); 
+      if ($v_inclusion == 0) {
+
+        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");
+
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+    // ----- Look for specific actions while the file exist
+    if (file_exists($p_entry['filename']))
+    {
+
+      // ----- Look if file is a directory
+      if (is_dir($p_entry['filename']))
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "already_a_directory";
+        
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,
+			                     "Filename '".$p_entry['filename']."' is "
+								 ."already used by an existing directory");
+
+            return PclZip::errorCode();
+		    }
+      }
+      // ----- Look if file is write protected
+      else if (!is_writeable($p_entry['filename']))
+      {
+
+        // ----- Change the file status
+        $p_entry['status'] = "write_protected";
+
+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+        // For historical reason first PclZip implementation does not stop
+        // when this kind of error occurs.
+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			                     "Filename '".$p_entry['filename']."' exists "
+								 ."and is write protected");
+
+            return PclZip::errorCode();
+		    }
+      }
+
+      // ----- Look if the extracted file is older
+      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])
+      {
+        // ----- Change the file status
+        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))
+		    && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {
+	  	  }
+		    else {
+            $p_entry['status'] = "newer_exist";
+
+            // ----- Look for PCLZIP_OPT_STOP_ON_ERROR
+            // For historical reason first PclZip implementation does not stop
+            // when this kind of error occurs.
+            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))
+		        && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {
+
+                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,
+			             "Newer version of '".$p_entry['filename']."' exists "
+					    ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");
+
+                return PclZip::errorCode();
+		      }
+		    }
+      }
+      else {
+      }
+    }
+
+    // ----- Check the directory availability and create it if necessary
+    else {
+      if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))
+        $v_dir_to_check = $p_entry['filename'];
+      else if (!strstr($p_entry['filename'], "/"))
+        $v_dir_to_check = "";
+      else
+        $v_dir_to_check = dirname($p_entry['filename']);
+
+        if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {
+  
+          // ----- Change the file status
+          $p_entry['status'] = "path_creation_fail";
+  
+          // ----- Return
+          //return $v_result;
+          $v_result = 1;
+        }
+      }
+    }
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010))
+      {
+        // ----- Look for not compressed file
+        if ($p_entry['compression'] == 0) {
+
+    		  // ----- Opening destination file
+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)
+          {
+
+            // ----- Change the file status
+            $p_entry['status'] = "write_error";
+
+            // ----- Return
+            return $v_result;
+          }
+
+
+          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+          $v_size = $p_entry['compressed_size'];
+          while ($v_size != 0)
+          {
+            $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+            $v_buffer = @fread($this->zip_fd, $v_read_size);
+            /* Try to speed up the code
+            $v_binary_data = pack('a'.$v_read_size, $v_buffer);
+            @fwrite($v_dest_file, $v_binary_data, $v_read_size);
+            */
+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            
+            $v_size -= $v_read_size;
+          }
+
+          // ----- Closing the destination file
+          fclose($v_dest_file);
+
+          // ----- Change the file mtime
+          touch($p_entry['filename'], $p_entry['mtime']);
+          
+
+        }
+        else {
+          // ----- TBC
+          // Need to be finished
+          if (($p_entry['flag'] & 1) == 1) {
+            PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');
+            return PclZip::errorCode();
+          }
+
+
+          // ----- Look for using temporary file to unzip
+          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 
+              && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])
+                  || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])
+                      && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) {
+            $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options);
+            if ($v_result < PCLZIP_ERR_NO_ERROR) {
+              return $v_result;
+            }
+          }
+          
+          // ----- Look for extract in memory
+          else {
+
+          
+            // ----- Read the compressed file in a buffer (one shot)
+            $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+            
+            // ----- Decompress the file
+            $v_file_content = @gzinflate($v_buffer);
+            unset($v_buffer);
+            if ($v_file_content === FALSE) {
+  
+              // ----- Change the file status
+              // TBC
+              $p_entry['status'] = "error";
+              
+              return $v_result;
+            }
+            
+            // ----- Opening destination file
+            if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+  
+              // ----- Change the file status
+              $p_entry['status'] = "write_error";
+  
+              return $v_result;
+            }
+  
+            // ----- Write the uncompressed data
+            @fwrite($v_dest_file, $v_file_content, $p_entry['size']);
+            unset($v_file_content);
+  
+            // ----- Closing the destination file
+            @fclose($v_dest_file);
+            
+          }
+
+          // ----- Change the file mtime
+          @touch($p_entry['filename'], $p_entry['mtime']);
+        }
+
+        // ----- Look for chmod option
+        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {
+
+          // ----- Change the mode of the file
+          @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);
+        }
+
+      }
+    }
+
+  	// ----- Change abort status
+  	if ($p_entry['status'] == "aborted") {
+        $p_entry['status'] = "skipped";
+  	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileUsingTempFile()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileUsingTempFile(&$p_entry, &$p_options)
+  {
+    $v_result=1;
+        
+    // ----- Creates a temporary file
+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';
+    if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) {
+      fclose($v_file);
+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');
+      return PclZip::errorCode();
+    }
+
+
+    // ----- Write gz file format header
+    $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
+    @fwrite($v_dest_file, $v_binary_data, 10);
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['compressed_size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Write gz file format footer
+    $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']);
+    @fwrite($v_dest_file, $v_binary_data, 8);
+
+    // ----- Close the temporary file
+    @fclose($v_dest_file);
+
+    // ----- Opening destination file
+    if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {
+      $p_entry['status'] = "write_error";
+      return $v_result;
+    }
+
+    // ----- Open the temporary gz file
+    if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) {
+      @fclose($v_dest_file);
+      $p_entry['status'] = "read_error";
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');
+      return PclZip::errorCode();
+    }
+
+
+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks
+    $v_size = $p_entry['size'];
+    while ($v_size != 0) {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @gzread($v_src_file, $v_read_size);
+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);
+      @fwrite($v_dest_file, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+    @fclose($v_dest_file);
+    @gzclose($v_src_file);
+
+    // ----- Delete the temporary file
+    @unlink($v_gzip_temp_name);
+    
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileInOutput()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileInOutput(&$p_entry, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+    // ----- Trace
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+        if ($p_entry['compressed_size'] == $p_entry['size']) {
+
+          // ----- Read the file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+
+          // ----- Send the file to the output
+          echo $v_buffer;
+          unset($v_buffer);
+        }
+        else {
+
+          // ----- Read the compressed file in a buffer (one shot)
+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          $v_file_content = gzinflate($v_buffer);
+          unset($v_buffer);
+
+          // ----- Send the file to the output
+          echo $v_file_content;
+          unset($v_file_content);
+        }
+      }
+    }
+
+	// ----- Change abort status
+	if ($p_entry['status'] == "aborted") {
+      $p_entry['status'] = "skipped";
+	}
+
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privExtractFileAsString()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privExtractFileAsString(&$p_entry, &$p_string, &$p_options)
+  {
+    $v_result=1;
+
+    // ----- Read the file header
+    $v_header = array();
+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+
+    // ----- Check that the file header is coherent with $p_entry info
+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {
+        // TBC
+    }
+
+    // ----- Look for pre-extract callback
+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);
+      if ($v_result == 0) {
+        // ----- Change the file status
+        $p_entry['status'] = "skipped";
+        $v_result = 1;
+      }
+      
+      // ----- Look for abort result
+      if ($v_result == 2) {
+        // ----- This status is internal and will be changed in 'skipped'
+        $p_entry['status'] = "aborted";
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+
+      // ----- Update the informations
+      // Only some fields can be modified
+      $p_entry['filename'] = $v_local_header['filename'];
+    }
+
+
+    // ----- Look if extraction should be done
+    if ($p_entry['status'] == 'ok') {
+
+      // ----- Do the extraction (if not a folder)
+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {
+        // ----- Look for not compressed file
+  //      if ($p_entry['compressed_size'] == $p_entry['size'])
+        if ($p_entry['compression'] == 0) {
+  
+          // ----- Reading the file
+          $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);
+        }
+        else {
+  
+          // ----- Reading the file
+          $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
+          
+          // ----- Decompress the file
+          if (($p_string = @gzinflate($v_data)) === FALSE) {
+              // TBC
+          }
+        }
+  
+        // ----- Trace
+      }
+      else {
+          // TBC : error : can not extract a folder in a string
+      }
+      
+    }
+
+  	// ----- Change abort status
+  	if ($p_entry['status'] == "aborted") {
+        $p_entry['status'] = "skipped";
+  	}
+	
+    // ----- Look for post-extract callback
+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {
+
+      // ----- Generate a local information
+      $v_local_header = array();
+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);
+      
+      // ----- Swap the content to header
+      $v_local_header['content'] = $p_string;
+      $p_string = '';
+
+      // ----- Call the callback
+      // Here I do not use call_user_func() because I need to send a reference to the
+      // header.
+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');
+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);
+
+      // ----- Swap back the content to header
+      $p_string = $v_local_header['content'];
+      unset($v_local_header['content']);
+
+      // ----- Look for abort result
+      if ($v_result == 2) {
+      	$v_result = PCLZIP_ERR_USER_ABORTED;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    $v_data = unpack('Vid', $v_binary_data);
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x04034b50)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 26);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 26)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);
+
+    // ----- Get filename
+    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);
+
+    // ----- Get extra_fields
+    if ($v_data['extra_len'] != 0) {
+      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);
+    }
+    else {
+      $p_header['extra'] = '';
+    }
+
+    // ----- Extract properties
+    $p_header['version_extracted'] = $v_data['version'];
+    $p_header['compression'] = $v_data['compression'];
+    $p_header['size'] = $v_data['size'];
+    $p_header['compressed_size'] = $v_data['compressed_size'];
+    $p_header['crc'] = $v_data['crc'];
+    $p_header['flag'] = $v_data['flag'];
+    $p_header['filename_len'] = $v_data['filename_len'];
+
+    // ----- Recuperate date in UNIX format
+    $p_header['mdate'] = $v_data['mdate'];
+    $p_header['mtime'] = $v_data['mtime'];
+    if ($p_header['mdate'] && $p_header['mtime'])
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+    }
+
+    // TBC
+    //for(reset($v_data); $key = key($v_data); next($v_data)) {
+    //}
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set the status field
+    $p_header['status'] = "ok";
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadCentralFileHeader()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadCentralFileHeader(&$p_header)
+  {
+    $v_result=1;
+
+    // ----- Read the 4 bytes signature
+    $v_binary_data = @fread($this->zip_fd, 4);
+    $v_data = unpack('Vid', $v_binary_data);
+
+    // ----- Check signature
+    if ($v_data['id'] != 0x02014b50)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read the first 42 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 42);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 42)
+    {
+      $p_header['filename'] = "";
+      $p_header['status'] = "invalid_header";
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);
+
+    // ----- Get filename
+    if ($p_header['filename_len'] != 0)
+      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);
+    else
+      $p_header['filename'] = '';
+
+    // ----- Get extra
+    if ($p_header['extra_len'] != 0)
+      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);
+    else
+      $p_header['extra'] = '';
+
+    // ----- Get comment
+    if ($p_header['comment_len'] != 0)
+      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);
+    else
+      $p_header['comment'] = '';
+
+    // ----- Extract properties
+
+    // ----- Recuperate date in UNIX format
+    //if ($p_header['mdate'] && $p_header['mtime'])
+    // TBC : bug : this was ignoring time with 0/0/0
+    if (1)
+    {
+      // ----- Extract time
+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;
+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;
+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;
+
+      // ----- Extract date
+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;
+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;
+      $v_day = $p_header['mdate'] & 0x001F;
+
+      // ----- Get UNIX date format
+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);
+
+    }
+    else
+    {
+      $p_header['mtime'] = time();
+    }
+
+    // ----- Set the stored filename
+    $p_header['stored_filename'] = $p_header['filename'];
+
+    // ----- Set default status to ok
+    $p_header['status'] = 'ok';
+
+    // ----- Look if it is a directory
+    if (substr($p_header['filename'], -1) == '/') {
+      //$p_header['external'] = 0x41FF0010;
+      $p_header['external'] = 0x00000010;
+    }
+
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privCheckFileHeaders()
+  // Description :
+  // Parameters :
+  // Return Values :
+  //   1 on success,
+  //   0 on error;
+  // --------------------------------------------------------------------------------
+  function privCheckFileHeaders(&$p_local_header, &$p_central_header)
+  {
+    $v_result=1;
+
+  	// ----- Check the static values
+  	// TBC
+  	if ($p_local_header['filename'] != $p_central_header['filename']) {
+  	}
+  	if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {
+  	}
+  	if ($p_local_header['flag'] != $p_central_header['flag']) {
+  	}
+  	if ($p_local_header['compression'] != $p_central_header['compression']) {
+  	}
+  	if ($p_local_header['mtime'] != $p_central_header['mtime']) {
+  	}
+  	if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {
+  	}
+  
+  	// ----- Look for flag bit 3
+  	if (($p_local_header['flag'] & 8) == 8) {
+          $p_local_header['size'] = $p_central_header['size'];
+          $p_local_header['compressed_size'] = $p_central_header['compressed_size'];
+          $p_local_header['crc'] = $p_central_header['crc'];
+  	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privReadEndCentralDir()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privReadEndCentralDir(&$p_central_dir)
+  {
+    $v_result=1;
+
+    // ----- Go to the end of the zip file
+    $v_size = filesize($this->zipname);
+    @fseek($this->zip_fd, $v_size);
+    if (@ftell($this->zip_fd) != $v_size)
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- First try : look if this is an archive with no commentaries (most of the time)
+    // in this case the end of central dir is at 22 bytes of the file end
+    $v_found = 0;
+    if ($v_size > 26) {
+      @fseek($this->zip_fd, $v_size-22);
+      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read for bytes
+      $v_binary_data = @fread($this->zip_fd, 4);
+      $v_data = @unpack('Vid', $v_binary_data);
+
+      // ----- Check signature
+      if ($v_data['id'] == 0x06054b50) {
+        $v_found = 1;
+      }
+
+      $v_pos = ftell($this->zip_fd);
+    }
+
+    // ----- Go back to the maximum possible size of the Central Dir End Record
+    if (!$v_found) {
+      $v_maximum_size = 65557; // 0xFFFF + 22;
+      if ($v_maximum_size > $v_size)
+        $v_maximum_size = $v_size;
+      @fseek($this->zip_fd, $v_size-$v_maximum_size);
+      if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))
+      {
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+
+      // ----- Read byte per byte in order to find the signature
+      $v_pos = ftell($this->zip_fd);
+      $v_bytes = 0x00000000;
+      while ($v_pos < $v_size)
+      {
+        // ----- Read a byte
+        $v_byte = @fread($this->zip_fd, 1);
+
+        // -----  Add the byte
+        //$v_bytes = ($v_bytes << 8) | Ord($v_byte);
+        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 
+        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 
+        $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 
+
+        // ----- Compare the bytes
+        if ($v_bytes == 0x504b0506)
+        {
+          $v_pos++;
+          break;
+        }
+
+        $v_pos++;
+      }
+
+      // ----- Look if not found end of central dir
+      if ($v_pos == $v_size)
+      {
+
+        // ----- Error log
+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");
+
+        // ----- Return
+        return PclZip::errorCode();
+      }
+    }
+
+    // ----- Read the first 18 bytes of the header
+    $v_binary_data = fread($this->zip_fd, 18);
+
+    // ----- Look for invalid block size
+    if (strlen($v_binary_data) != 18)
+    {
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Extract the values
+    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);
+
+    // ----- Check the global size
+    if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {
+
+	  // ----- Removed in release 2.2 see readme file
+	  // The check of the file size is a little too strict.
+	  // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.
+	  // While decrypted, zip has training 0 bytes
+	  if (0) {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,
+	                       'The central dir is not at the end of the archive.'
+						   .' Some trailing bytes exists after the archive.');
+
+      // ----- Return
+      return PclZip::errorCode();
+	  }
+    }
+
+    // ----- Get comment
+    if ($v_data['comment_size'] != 0) {
+      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);
+    }
+    else
+      $p_central_dir['comment'] = '';
+
+    $p_central_dir['entries'] = $v_data['entries'];
+    $p_central_dir['disk_entries'] = $v_data['disk_entries'];
+    $p_central_dir['offset'] = $v_data['offset'];
+    $p_central_dir['size'] = $v_data['size'];
+    $p_central_dir['disk'] = $v_data['disk'];
+    $p_central_dir['disk_start'] = $v_data['disk_start'];
+
+    // TBC
+    //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
+    //}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDeleteByRule()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDeleteByRule(&$p_result_list, &$p_options)
+  {
+    $v_result=1;
+    $v_list_detail = array();
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Scan all the files
+    // ----- Start at beginning of Central Dir
+    $v_pos_entry = $v_central_dir['offset'];
+    @rewind($this->zip_fd);
+    if (@fseek($this->zip_fd, $v_pos_entry))
+    {
+      // ----- Close the zip file
+      $this->privCloseFd();
+
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Read each entry
+    $v_header_list = array();
+    $j_start = 0;
+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)
+    {
+
+      // ----- Read the file header
+      $v_header_list[$v_nb_extracted] = array();
+      if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)
+      {
+        // ----- Close the zip file
+        $this->privCloseFd();
+
+        return $v_result;
+      }
+
+
+      // ----- Store the index
+      $v_header_list[$v_nb_extracted]['index'] = $i;
+
+      // ----- Look for the specific extract rules
+      $v_found = false;
+
+      // ----- Look for extract by name rule
+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))
+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {
+
+          // ----- Look if the filename is in the list
+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {
+
+              // ----- Look for a directory
+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {
+
+                  // ----- Look if the directory is in the filename path
+                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))
+                      && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_found = true;
+                  }
+                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */
+                          && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {
+                      $v_found = true;
+                  }
+              }
+              // ----- Look for a filename
+              elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {
+                  $v_found = true;
+              }
+          }
+      }
+
+      // ----- Look for extract by ereg rule
+      // ereg() is deprecated with PHP 5.3
+      /*
+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))
+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {
+
+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              $v_found = true;
+          }
+      }
+      */
+
+      // ----- Look for extract by preg rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))
+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {
+
+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {
+              $v_found = true;
+          }
+      }
+
+      // ----- Look for extract by index rule
+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))
+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {
+
+          // ----- Look if the index is in the list
+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {
+
+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {
+                  $v_found = true;
+              }
+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {
+                  $j_start = $j+1;
+              }
+
+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {
+                  break;
+              }
+          }
+      }
+      else {
+      	$v_found = true;
+      }
+
+      // ----- Look for deletion
+      if ($v_found)
+      {
+        unset($v_header_list[$v_nb_extracted]);
+      }
+      else
+      {
+        $v_nb_extracted++;
+      }
+    }
+
+    // ----- Look if something need to be deleted
+    if ($v_nb_extracted > 0) {
+
+        // ----- Creates a temporay file
+        $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+        // ----- Creates a temporary zip archive
+        $v_temp_zip = new PclZip($v_zip_temp_name);
+
+        // ----- Open the temporary zip file in write mode
+        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {
+            $this->privCloseFd();
+
+            // ----- Return
+            return $v_result;
+        }
+
+        // ----- Look which file need to be kept
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+
+            // ----- Calculate the position of the header
+            @rewind($this->zip_fd);
+            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Error log
+                PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');
+
+                // ----- Return
+                return PclZip::errorCode();
+            }
+
+            // ----- Read the file header
+            $v_local_header = array();
+            if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+            
+            // ----- Check that local file header is same as central file header
+            if ($this->privCheckFileHeaders($v_local_header,
+			                                $v_header_list[$i]) != 1) {
+                // TBC
+            }
+            unset($v_local_header);
+
+            // ----- Write the file header
+            if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+
+            // ----- Read/write the data block
+            if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {
+                // ----- Close the zip file
+                $this->privCloseFd();
+                $v_temp_zip->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+        }
+
+        // ----- Store the offset of the central dir
+        $v_offset = @ftell($v_temp_zip->zip_fd);
+
+        // ----- Re-Create the Central Dir files header
+        for ($i=0; $i<sizeof($v_header_list); $i++) {
+            // ----- Create the file header
+            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
+                $v_temp_zip->privCloseFd();
+                $this->privCloseFd();
+                @unlink($v_zip_temp_name);
+
+                // ----- Return
+                return $v_result;
+            }
+
+            // ----- Transform the header to a 'usable' info
+            $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
+        }
+
+
+        // ----- Zip file comment
+        $v_comment = '';
+        if (isset($p_options[PCLZIP_OPT_COMMENT])) {
+          $v_comment = $p_options[PCLZIP_OPT_COMMENT];
+        }
+
+        // ----- Calculate the size of the central header
+        $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;
+
+        // ----- Create the central dir footer
+        if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {
+            // ----- Reset the file list
+            unset($v_header_list);
+            $v_temp_zip->privCloseFd();
+            $this->privCloseFd();
+            @unlink($v_zip_temp_name);
+
+            // ----- Return
+            return $v_result;
+        }
+
+        // ----- Close
+        $v_temp_zip->privCloseFd();
+        $this->privCloseFd();
+
+        // ----- Delete the zip file
+        // TBC : I should test the result ...
+        @unlink($this->zipname);
+
+        // ----- Rename the temporary file
+        // TBC : I should test the result ...
+        //@rename($v_zip_temp_name, $this->zipname);
+        PclZipUtilRename($v_zip_temp_name, $this->zipname);
+    
+        // ----- Destroy the temporary archive
+        unset($v_temp_zip);
+    }
+    
+    // ----- Remove every files : reset the file
+    else if ($v_central_dir['entries'] != 0) {
+        $this->privCloseFd();
+
+        if (($v_result = $this->privOpenFd('wb')) != 1) {
+          return $v_result;
+        }
+
+        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {
+          return $v_result;
+        }
+
+        $this->privCloseFd();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDirCheck()
+  // Description :
+  //   Check if a directory exists, if not it creates it and all the parents directory
+  //   which may be useful.
+  // Parameters :
+  //   $p_dir : Directory path to check.
+  // Return Values :
+  //    1 : OK
+  //   -1 : Unable to create directory
+  // --------------------------------------------------------------------------------
+  function privDirCheck($p_dir, $p_is_dir=false)
+  {
+    $v_result = 1;
+
+
+    // ----- Remove the final '/'
+    if (($p_is_dir) && (substr($p_dir, -1)=='/'))
+    {
+      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);
+    }
+
+    // ----- Check the directory availability
+    if ((is_dir($p_dir)) || ($p_dir == ""))
+    {
+      return 1;
+    }
+
+    // ----- Extract parent directory
+    $p_parent_dir = dirname($p_dir);
+
+    // ----- Just a check
+    if ($p_parent_dir != $p_dir)
+    {
+      // ----- Look for parent directory
+      if ($p_parent_dir != "")
+      {
+        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)
+        {
+          return $v_result;
+        }
+      }
+    }
+
+    // ----- Create the directory
+    if (!@mkdir($p_dir, 0777))
+    {
+      // ----- Error log
+      PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privMerge()
+  // Description :
+  //   If $p_archive_to_add does not exist, the function exit with a success result.
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privMerge(&$p_archive_to_add)
+  {
+    $v_result=1;
+
+    // ----- Look if the archive_to_add exists
+    if (!is_file($p_archive_to_add->zipname))
+    {
+
+      // ----- Nothing to merge, so merge is a success
+      $v_result = 1;
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Look if the archive exists
+    if (!is_file($this->zipname))
+    {
+
+      // ----- Do a duplicate
+      $v_result = $this->privDuplicate($p_archive_to_add->zipname);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('rb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir = array();
+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)
+    {
+      $this->privCloseFd();
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($this->zip_fd);
+
+    // ----- Open the archive_to_add file
+    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)
+    {
+      $this->privCloseFd();
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Read the central directory informations
+    $v_central_dir_to_add = array();
+    if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      return $v_result;
+    }
+
+    // ----- Go to beginning of File
+    @rewind($p_archive_to_add->zip_fd);
+
+    // ----- Creates a temporay file
+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = $v_central_dir['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the files from the archive_to_add into the temporary file
+    $v_size = $v_central_dir_to_add['offset'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Store the offset of the central dir
+    $v_offset = @ftell($v_zip_temp_fd);
+
+    // ----- Copy the block of file headers from the old archive
+    $v_size = $v_central_dir['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($this->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Copy the block of file headers from the archive_to_add
+    $v_size = $v_central_dir_to_add['size'];
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Merge the file comments
+    $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];
+
+    // ----- Calculate the size of the (new) central header
+    $v_size = @ftell($v_zip_temp_fd)-$v_offset;
+
+    // ----- Swap the file descriptor
+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use
+    // the following methods on the temporary fil and not the real archive fd
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Create the central dir footer
+    if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)
+    {
+      $this->privCloseFd();
+      $p_archive_to_add->privCloseFd();
+      @fclose($v_zip_temp_fd);
+      $this->zip_fd = null;
+
+      // ----- Reset the file list
+      unset($v_header_list);
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Swap back the file descriptor
+    $v_swap = $this->zip_fd;
+    $this->zip_fd = $v_zip_temp_fd;
+    $v_zip_temp_fd = $v_swap;
+
+    // ----- Close
+    $this->privCloseFd();
+    $p_archive_to_add->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Delete the zip file
+    // TBC : I should test the result ...
+    @unlink($this->zipname);
+
+    // ----- Rename the temporary file
+    // TBC : I should test the result ...
+    //@rename($v_zip_temp_name, $this->zipname);
+    PclZipUtilRename($v_zip_temp_name, $this->zipname);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDuplicate()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDuplicate($p_archive_filename)
+  {
+    $v_result=1;
+
+    // ----- Look if the $p_archive_filename exists
+    if (!is_file($p_archive_filename))
+    {
+
+      // ----- Nothing to duplicate, so duplicate is a success.
+      $v_result = 1;
+
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the zip file
+    if (($v_result=$this->privOpenFd('wb')) != 1)
+    {
+      // ----- Return
+      return $v_result;
+    }
+
+    // ----- Open the temporary file in write mode
+    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)
+    {
+      $this->privCloseFd();
+
+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');
+
+      // ----- Return
+      return PclZip::errorCode();
+    }
+
+    // ----- Copy the files from the archive to the temporary file
+    // TBC : Here I should better append the file and go back to erase the central dir
+    $v_size = filesize($p_archive_filename);
+    while ($v_size != 0)
+    {
+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);
+      $v_buffer = fread($v_zip_temp_fd, $v_read_size);
+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);
+      $v_size -= $v_read_size;
+    }
+
+    // ----- Close
+    $this->privCloseFd();
+
+    // ----- Close the temporary file
+    @fclose($v_zip_temp_fd);
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorLog()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorLog($p_error_code=0, $p_error_string='')
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclError($p_error_code, $p_error_string);
+    }
+    else {
+      $this->error_code = $p_error_code;
+      $this->error_string = $p_error_string;
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privErrorReset()
+  // Description :
+  // Parameters :
+  // --------------------------------------------------------------------------------
+  function privErrorReset()
+  {
+    if (PCLZIP_ERROR_EXTERNAL == 1) {
+      PclErrorReset();
+    }
+    else {
+      $this->error_code = 0;
+      $this->error_string = '';
+    }
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privDisableMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privDisableMagicQuotes()
+  {
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      return $v_result;
+	}
+
+    // ----- Look if already done
+    if ($this->magic_quotes_status != -1) {
+      return $v_result;
+	}
+
+	// ----- Get and memorize the magic_quote value
+	$this->magic_quotes_status = @get_magic_quotes_runtime();
+
+	// ----- Disable magic_quotes
+	if ($this->magic_quotes_status == 1) {
+	  @set_magic_quotes_runtime(0);
+	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : privSwapBackMagicQuotes()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function privSwapBackMagicQuotes()
+  {
+    $v_result=1;
+
+    // ----- Look if function exists
+    if (   (!function_exists("get_magic_quotes_runtime"))
+	    || (!function_exists("set_magic_quotes_runtime"))) {
+      return $v_result;
+	}
+
+    // ----- Look if something to do
+    if ($this->magic_quotes_status != -1) {
+      return $v_result;
+	}
+
+	// ----- Swap back magic_quotes
+	if ($this->magic_quotes_status == 1) {
+  	  @set_magic_quotes_runtime($this->magic_quotes_status);
+	}
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  }
+  // End of class
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathReduction()
+  // Description :
+  // Parameters :
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathReduction($p_dir)
+  {
+    $v_result = "";
+
+    // ----- Look for not empty path
+    if ($p_dir != "") {
+      // ----- Explode path by directory names
+      $v_list = explode("/", $p_dir);
+
+      // ----- Study directories from last to first
+      $v_skip = 0;
+      for ($i=sizeof($v_list)-1; $i>=0; $i--) {
+        // ----- Look for current path
+        if ($v_list[$i] == ".") {
+          // ----- Ignore this directory
+          // Should be the first $i=0, but no check is done
+        }
+        else if ($v_list[$i] == "..") {
+		  $v_skip++;
+        }
+        else if ($v_list[$i] == "") {
+		  // ----- First '/' i.e. root slash
+		  if ($i == 0) {
+            $v_result = "/".$v_result;
+		    if ($v_skip > 0) {
+		        // ----- It is an invalid path, so the path is not modified
+		        // TBC
+		        $v_result = $p_dir;
+                $v_skip = 0;
+		    }
+		  }
+		  // ----- Last '/' i.e. indicates a directory
+		  else if ($i == (sizeof($v_list)-1)) {
+            $v_result = $v_list[$i];
+		  }
+		  // ----- Double '/' inside the path
+		  else {
+            // ----- Ignore only the double '//' in path,
+            // but not the first and last '/'
+		  }
+        }
+        else {
+		  // ----- Look for item to skip
+		  if ($v_skip > 0) {
+		    $v_skip--;
+		  }
+		  else {
+            $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");
+		  }
+        }
+      }
+      
+      // ----- Look for skip
+      if ($v_skip > 0) {
+        while ($v_skip > 0) {
+            $v_result = '../'.$v_result;
+            $v_skip--;
+        }
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilPathInclusion()
+  // Description :
+  //   This function indicates if the path $p_path is under the $p_dir tree. Or,
+  //   said in an other way, if the file or sub-dir $p_path is inside the dir
+  //   $p_dir.
+  //   The function indicates also if the path is exactly the same as the dir.
+  //   This function supports path with duplicated '/' like '//', but does not
+  //   support '.' or '..' statements.
+  // Parameters :
+  // Return Values :
+  //   0 if $p_path is not inside directory $p_dir
+  //   1 if $p_path is inside directory $p_dir
+  //   2 if $p_path is exactly the same as $p_dir
+  // --------------------------------------------------------------------------------
+  function PclZipUtilPathInclusion($p_dir, $p_path)
+  {
+    $v_result = 1;
+    
+    // ----- Look for path beginning by ./
+    if (   ($p_dir == '.')
+        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {
+      $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);
+    }
+    if (   ($p_path == '.')
+        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {
+      $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);
+    }
+
+    // ----- Explode dir and path by directory separator
+    $v_list_dir = explode("/", $p_dir);
+    $v_list_dir_size = sizeof($v_list_dir);
+    $v_list_path = explode("/", $p_path);
+    $v_list_path_size = sizeof($v_list_path);
+
+    // ----- Study directories paths
+    $i = 0;
+    $j = 0;
+    while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {
+
+      // ----- Look for empty dir (path reduction)
+      if ($v_list_dir[$i] == '') {
+        $i++;
+        continue;
+      }
+      if ($v_list_path[$j] == '') {
+        $j++;
+        continue;
+      }
+
+      // ----- Compare the items
+      if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {
+        $v_result = 0;
+      }
+
+      // ----- Next items
+      $i++;
+      $j++;
+    }
+
+    // ----- Look if everything seems to be the same
+    if ($v_result) {
+      // ----- Skip all the empty items
+      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;
+      while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;
+
+      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {
+        // ----- There are exactly the same
+        $v_result = 2;
+      }
+      else if ($i < $v_list_dir_size) {
+        // ----- The path is shorter than the dir
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilCopyBlock()
+  // Description :
+  // Parameters :
+  //   $p_mode : read/write compression mode
+  //             0 : src & dest normal
+  //             1 : src gzip, dest normal
+  //             2 : src normal, dest gzip
+  //             3 : src & dest gzip
+  // Return Values :
+  // --------------------------------------------------------------------------------
+  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)
+  {
+    $v_result = 1;
+
+    if ($p_mode==0)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @fread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==1)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @fwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==2)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @fread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+    else if ($p_mode==3)
+    {
+      while ($p_size != 0)
+      {
+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);
+        $v_buffer = @gzread($p_src, $v_read_size);
+        @gzwrite($p_dest, $v_buffer, $v_read_size);
+        $p_size -= $v_read_size;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilRename()
+  // Description :
+  //   This function tries to do a simple rename() function. If it fails, it
+  //   tries to copy the $p_src file in a new $p_dest file and then unlink the
+  //   first one.
+  // Parameters :
+  //   $p_src : Old filename
+  //   $p_dest : New filename
+  // Return Values :
+  //   1 on success, 0 on failure.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilRename($p_src, $p_dest)
+  {
+    $v_result = 1;
+
+    // ----- Try to rename the files
+    if (!@rename($p_src, $p_dest)) {
+
+      // ----- Try to copy & unlink the src
+      if (!@copy($p_src, $p_dest)) {
+        $v_result = 0;
+      }
+      else if (!@unlink($p_src)) {
+        $v_result = 0;
+      }
+    }
+
+    // ----- Return
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilOptionText()
+  // Description :
+  //   Translate option value in text. Mainly for debug purpose.
+  // Parameters :
+  //   $p_option : the option value.
+  // Return Values :
+  //   The option text value.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilOptionText($p_option)
+  {
+    
+    $v_list = get_defined_constants();
+    for (reset($v_list); $v_key = key($v_list); next($v_list)) {
+	    $v_prefix = substr($v_key, 0, 10);
+	    if ((   ($v_prefix == 'PCLZIP_OPT')
+           || ($v_prefix == 'PCLZIP_CB_')
+           || ($v_prefix == 'PCLZIP_ATT'))
+	        && ($v_list[$v_key] == $p_option)) {
+        return $v_key;
+	    }
+    }
+    
+    $v_result = 'Unknown';
+
+    return $v_result;
+  }
+  // --------------------------------------------------------------------------------
+
+  // --------------------------------------------------------------------------------
+  // Function : PclZipUtilTranslateWinPath()
+  // Description :
+  //   Translate windows path by replacing '\' by '/' and optionally removing
+  //   drive letter.
+  // Parameters :
+  //   $p_path : path to translate.
+  //   $p_remove_disk_letter : true | false
+  // Return Values :
+  //   The path translated.
+  // --------------------------------------------------------------------------------
+  function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)
+  {
+    if (stristr(php_uname(), 'windows')) {
+      // ----- Look for potential disk letter
+      if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {
+          $p_path = substr($p_path, $v_position+1);
+      }
+      // ----- Change potential windows directory separator
+      if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {
+          $p_path = strtr($p_path, '\\', '/');
+      }
+    }
+    return $p_path;
+  }
+  // --------------------------------------------------------------------------------
+
+
+?>

Property changes on: tags/2.8.3/wb/include/pclzip/pclzip.lib.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/pclzip/index.php
===================================================================
--- tags/2.8.3/wb/include/pclzip/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/pclzip/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/pclzip/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/pclzip/gnu-lgpl.txt
===================================================================
--- tags/2.8.3/wb/include/pclzip/gnu-lgpl.txt	(nonexistent)
+++ tags/2.8.3/wb/include/pclzip/gnu-lgpl.txt	(revision 1610)
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

Property changes on: tags/2.8.3/wb/include/pclzip/gnu-lgpl.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: tags/2.8.3/wb/include/captcha.php
===================================================================
--- tags/2.8.3/wb/include/captcha.php	(nonexistent)
+++ tags/2.8.3/wb/include/captcha.php	(revision 1610)
@@ -0,0 +1,83 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+
+Captcha generator
+
+This file generates a captcha image.
+Credits to http://php.webmaster-kit.com/ for the original code.
+
+*/
+
+require_once("../config.php");
+
+if(extension_loaded('gd') AND function_exists('imageCreateFromJpeg') AND isset($_SESSION['captcha'])) {
+	
+	$image = imagecreate(120, 30);
+	
+	$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
+	$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
+	$darkgray = imagecolorallocate($image, 0x50, 0x50, 0x50);
+	
+	srand((double)microtime()*1000000);
+	
+	for($i = 0; $i < 30; $i++) {
+		$x1 = rand(0,120);
+		$y1 = rand(0,30);
+		$x2 = rand(0,120);
+		$y2 = rand(0,30);
+		imageline($image, $x1, $y1, $x2, $y2 , $gray);  
+	}
+	
+	$x = 0;
+	for($i = 0; $i < 5; $i++) {
+		$fnt = rand(3,5);
+		$x = $x + rand(12 , 20);
+		$y = rand(7 , 12); 
+		imagestring($image, $fnt, $x, $y, substr($_SESSION['captcha'], $i, 1), $darkgray); 
+	}
+	
+	// start buffering for size determination
+	ob_start();
+	// add no cache headers
+	header("Expires: Mon, 1 Jan 1990 05:00:00 GMT");
+	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
+	header("Cache-Control: no-store, no-cache, must-revalidate");
+	header("Cache-Control: post-check=0, pre-check=0", false);
+	header("Pragma: no-cache");
+	header("Content-type: image/png");
+	// Make image
+	imagepng($image);
+	// Fetch length
+	header("Content-Length: " . ob_get_length());
+	// send image and turn off buffering
+	ob_end_flush();
+	// clear memory
+	imagedestroy($image);
+
+}
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/captcha.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/include/index.php
===================================================================
--- tags/2.8.3/wb/include/index.php	(nonexistent)
+++ tags/2.8.3/wb/include/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/include/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/languages/EN.php
===================================================================
--- tags/2.8.3/wb/languages/EN.php	(nonexistent)
+++ tags/2.8.3/wb/languages/EN.php	(revision 1610)
@@ -0,0 +1,683 @@
+<?php
+/**
+ *
+ * @category        backend
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'EN';
+$language_name = 'English';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Ryan Djurovich, Christian Sommer';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Access';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Add-ons';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Retrieve Login Details';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Groups';
+$MENU['HELP'] = 'Help';
+$MENU['LANGUAGES'] = 'Languages';
+$MENU['LOGIN'] = 'Login';
+$MENU['LOGOUT'] = 'Log-out';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Modules';
+$MENU['PAGES'] = 'Pages';
+$MENU['PREFERENCES'] = 'Preferences';
+$MENU['SETTINGS'] = 'Settings';
+$MENU['START'] = 'Start';
+$MENU['TEMPLATES'] = 'Templates';
+$MENU['USERS'] = 'Users';
+$MENU['VIEW'] = 'View';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Account Sign-Up';
+$TEXT['ACTIONS'] = 'Actions';
+$TEXT['ACTIVE'] = 'Active';
+$TEXT['ADD'] = 'Add';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Add Section';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administration';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administration tool';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administrators';
+$TEXT['ADVANCED'] = 'Advanced';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Allow Multiple Selections';
+$TEXT['ALL_WORDS'] = 'All Words';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonymous';
+$TEXT['ANY_WORDS'] = 'Any Words';
+$TEXT['APP_NAME'] = 'Application Name';
+$TEXT['ARE_YOU_SURE'] = 'Are you sure?';
+$TEXT['AUTHOR'] = 'Author';
+$TEXT['BACK'] = 'Back';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Backup Database';
+$TEXT['BACKUP_MEDIA'] = 'Backup Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'Basic';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Calendar';
+$TEXT['CANCEL'] = 'Cancel';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Verification';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Change';
+$TEXT['CHANGES'] = 'Changes';
+$TEXT['CHANGE_SETTINGS'] = 'Change Settings';
+$TEXT['CHARSET'] = 'Charset';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox Group';
+$TEXT['CLOSE'] = 'Close';
+$TEXT['CODE'] = 'Code';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Collapse';
+$TEXT['COMMENT'] = 'Comment';
+$TEXT['COMMENTING'] = 'Commenting';
+$TEXT['COMMENTS'] = 'Comments';
+$TEXT['CREATE_FOLDER'] = 'Create Folder';
+$TEXT['CURRENT'] = 'Current';
+$TEXT['CURRENT_FOLDER'] = 'Current Folder';
+$TEXT['CURRENT_PAGE'] = 'Current Page';
+$TEXT['CURRENT_PASSWORD'] = 'Current Password';
+$TEXT['CUSTOM'] = 'Custom';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Date';
+$TEXT['DATE_FORMAT'] = 'Date Format';
+$TEXT['DEFAULT'] = 'Default';
+$TEXT['DEFAULT_CHARSET'] = 'Default Charset';
+$TEXT['DEFAULT_TEXT'] = 'Default Text';
+$TEXT['DELETE'] = 'Delete';
+$TEXT['DELETED'] = 'Deleted';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Description';
+$TEXT['DESIGNED_FOR'] = 'Designed For';
+$TEXT['DIRECTORIES'] = 'Directories';
+$TEXT['DIRECTORY_MODE'] = 'Directory Mode';
+$TEXT['DISABLED'] = 'Disabled';
+$TEXT['DISPLAY_NAME'] = 'Display Name';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Email Address';
+$TEXT['EMPTY_TRASH'] = 'Empty Trash';
+$TEXT['ENABLED'] = 'Enabled';
+$TEXT['END'] = 'End';
+$TEXT['ERROR'] = 'Error';
+$TEXT['EXACT_MATCH'] = 'Exact Match';
+$TEXT['EXECUTE'] = 'Execute';
+$TEXT['EXPAND'] = 'Expand';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Field';
+$TEXT['FILE'] = 'File';
+$TEXT['FILES'] = 'Files';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Filesystem Permissions';
+$TEXT['FILE_MODE'] = 'File Mode';
+$TEXT['FINISH_PUBLISHING'] = 'Finish Publishing';
+$TEXT['FOLDER'] = 'Folder';
+$TEXT['FOLDERS'] = 'Folders';
+$TEXT['FOOTER'] = 'Footer';
+$TEXT['FORGOTTEN_DETAILS'] = 'Forgotten your details?';
+$TEXT['FORGOT_DETAILS'] = 'Forgot Details?';
+$TEXT['FROM'] = 'From';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Full Name';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Group';
+$TEXT['HEADER'] = 'Header';
+$TEXT['HEADING'] = 'Heading';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Height';
+$TEXT['HIDDEN'] = 'Hidden';
+$TEXT['HIDE'] = 'Hide';
+$TEXT['HIDE_ADVANCED'] = 'Hide Advanced Options';
+$TEXT['HOME'] = 'Home';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage Redirection';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Icon';
+$TEXT['IMAGE'] = 'Image';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Install';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['INSTALLATION_PATH'] = 'Installation Path';
+$TEXT['INSTALLATION_URL'] = 'Installation URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = 'Intro Page';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Keywords';
+$TEXT['LANGUAGE'] = 'Language';
+$TEXT['LAST_UPDATED_BY'] = 'Last Updated By';
+$TEXT['LENGTH'] = 'Length';
+$TEXT['LEVEL'] = 'Level';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix based';
+$TEXT['LIST_OPTIONS'] = 'List Options';
+$TEXT['LOGGED_IN'] = 'Logged-In';
+$TEXT['LOGIN'] = 'Login';
+$TEXT['LONG'] = 'Long';
+$TEXT['LONG_TEXT'] = 'Long Text';
+$TEXT['LOOP'] = 'Loop';
+$TEXT['MAIN'] = 'Main';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MANAGE'] = 'Manage';
+$TEXT['MANAGE_GROUPS'] = 'Manage Groups';
+$TEXT['MANAGE_USERS'] = 'Manage Users';
+$TEXT['MATCH'] = 'Match';
+$TEXT['MATCHING'] = 'Matching';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Submissions Per Hour';
+$TEXT['MEDIA_DIRECTORY'] = 'Media Directory';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Menu Title';
+$TEXT['MESSAGE'] = 'Message';
+$TEXT['MODIFY'] = 'Modify';
+$TEXT['MODIFY_CONTENT'] = 'Modify Content';
+$TEXT['MODIFY_SETTINGS'] = 'Modify Settings';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Module Permissions';
+$TEXT['MORE'] = 'More';
+$TEXT['MOVE_DOWN'] = 'Move Down';
+$TEXT['MOVE_UP'] = 'Move Up';
+$TEXT['MULTIPLE_MENUS'] = 'Multiple Menus';
+$TEXT['MULTISELECT'] = 'Multi-select';
+$TEXT['NAME'] = 'Name';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Need to log-in?';
+$TEXT['NEW_PASSWORD'] = 'New Password';
+$TEXT['NEW_WINDOW'] = 'New Window';
+$TEXT['NEXT'] = 'Next';
+$TEXT['NEXT_PAGE'] = 'Next Page';
+$TEXT['NO'] = 'No';
+$TEXT['NONE'] = 'None';
+$TEXT['NONE_FOUND'] = 'None Found';
+$TEXT['NOT_FOUND'] = 'Not Found';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'No Results';
+$TEXT['OF'] = 'Of';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Option';
+$TEXT['OTHERS'] = 'Others';
+$TEXT['OUT_OF'] = 'Out Of';
+$TEXT['OVERWRITE_EXISTING'] = 'Overwrite existing';
+$TEXT['PAGE'] = 'Page';
+$TEXT['PAGES_DIRECTORY'] = 'Pages Directory';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Page Extension';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Page Languages';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Page Level Limit';
+$TEXT['PAGE_SPACER'] = 'Page Spacer';
+$TEXT['PAGE_TITLE'] = 'Page Title';
+$TEXT['PAGE_TRASH'] = 'Page Trash';
+$TEXT['PARENT'] = 'Parent';
+$TEXT['PASSWORD'] = 'Password';
+$TEXT['PATH'] = 'Path';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Please select';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Posts Per Page';
+$TEXT['POST_FOOTER'] = 'Post Footer';
+$TEXT['POST_HEADER'] = 'Post Header';
+$TEXT['PREVIOUS'] = 'Previous';
+$TEXT['PREVIOUS_PAGE'] = 'Previous Page';
+$TEXT['PRIVATE'] = 'Private';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Viewers';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Public';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button Group';
+$TEXT['READ'] = 'Read';
+$TEXT['READ_MORE'] = 'Read More';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registered';
+$TEXT['REGISTERED_VIEWERS'] = 'Registered Viewers';
+$TEXT['RELOAD'] = 'Reload';
+$TEXT['REMEMBER_ME'] = 'Remember Me';
+$TEXT['RENAME'] = 'Rename';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Required';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Reset';
+$TEXT['RESIZE'] = 'Re-size';
+$TEXT['RESIZE_IMAGE_TO'] = 'Resize Image To';
+$TEXT['RESTORE'] = 'Restore';
+$TEXT['RESTORE_DATABASE'] = 'Restore Database';
+$TEXT['RESTORE_MEDIA'] = 'Restore Media';
+$TEXT['RESULTS'] = 'Results';
+$TEXT['RESULTS_FOOTER'] = 'Results Footer';
+$TEXT['RESULTS_FOR'] = 'Results For';
+$TEXT['RESULTS_HEADER'] = 'Results Header';
+$TEXT['RESULTS_LOOP'] = 'Results Loop';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Re-type New Password';
+$TEXT['RETYPE_PASSWORD'] = 'Re-type Password';
+$TEXT['SAME_WINDOW'] = 'Same Window';
+$TEXT['SAVE'] = 'Save';
+$TEXT['SEARCH'] = 'Search';
+$TEXT['SEARCHING'] = 'Searching';
+$TEXT['SECTION'] = 'Section';
+$TEXT['SECTION_BLOCKS'] = 'Section Blocks';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Select Box';
+$TEXT['SEND_DETAILS'] = 'Send Details';
+$TEXT['SEPARATE'] = 'Separate';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'Server Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server Operating System';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Identifier';
+$TEXT['SETTINGS'] = 'Settings';
+$TEXT['SHORT'] = 'Short';
+$TEXT['SHORT_TEXT'] = 'Short Text';
+$TEXT['SHOW'] = 'Show';
+$TEXT['SHOW_ADVANCED'] = 'Show Advanced Options';
+$TEXT['SIGNUP'] = 'Sign-up';
+$TEXT['SIZE'] = 'Size';
+$TEXT['SMART_LOGIN'] = 'Smart Login';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Start Publishing';
+$TEXT['SUBJECT'] = 'Subject';
+$TEXT['SUBMISSIONS'] = 'Submissions';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Submissions Stored In Database';
+$TEXT['SUBMISSION_ID'] = 'Submission ID';
+$TEXT['SUBMITTED'] = 'Submitted';
+$TEXT['SUCCESS'] = 'Success';
+$TEXT['SYSTEM_DEFAULT'] = 'System Default';
+$TEXT['SYSTEM_PERMISSIONS'] = 'System Permissions';
+$TEXT['TABLE_PREFIX'] = 'Table Prefix';
+$TEXT['TARGET'] = 'Target';
+$TEXT['TARGET_FOLDER'] = 'Target folder';
+$TEXT['TEMPLATE'] = 'Template';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Template Permissions';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['TEXTFIELD'] = 'Textfield';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Time';
+$TEXT['TIMEZONE'] = 'Timezone';
+$TEXT['TIME_FORMAT'] = 'Time Format';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Title';
+$TEXT['TO'] = 'To';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = 'Trash Emptied';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Type';
+$TEXT['UNDER_CONSTRUCTION'] = 'Under Construction';
+$TEXT['UNINSTALL'] = 'Uninstall';
+$TEXT['UNKNOWN'] = 'Unknown';
+$TEXT['UNLIMITED'] = 'Unlimited';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Up';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Upload File(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'User';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verification';
+$TEXT['VERSION'] = 'Version';
+$TEXT['VIEW'] = 'View';
+$TEXT['VIEW_DELETED_PAGES'] = 'View Deleted Pages';
+$TEXT['VIEW_DETAILS'] = 'View Details';
+$TEXT['VISIBILITY'] = 'Visibility';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Website Description';
+$TEXT['WEBSITE_FOOTER'] = 'Website Footer';
+$TEXT['WEBSITE_HEADER'] = 'Website Header';
+$TEXT['WEBSITE_KEYWORDS'] = 'Website Keywords';
+$TEXT['WEBSITE_TITLE'] = 'Website Title';
+$TEXT['WELCOME_BACK'] = 'Welcome back';
+$TEXT['WIDTH'] = 'Width';
+$TEXT['WINDOW'] = 'Window';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
+$TEXT['WRITE'] = 'Write';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['YES'] = 'Yes';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Add Group';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Add Heading';
+$HEADING['ADD_PAGE'] = 'Add Page';
+$HEADING['ADD_USER'] = 'Add User';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administration Tools';
+$HEADING['BROWSE_MEDIA'] = 'Browse Media';
+$HEADING['CREATE_FOLDER'] = 'Create Folder';
+$HEADING['DEFAULT_SETTINGS'] = 'Default Settings';
+$HEADING['DELETED_PAGES'] = 'Deleted Pages';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Filesystem Settings';
+$HEADING['GENERAL_SETTINGS'] = 'General Settings';
+$HEADING['INSTALL_LANGUAGE'] = 'Install Language';
+$HEADING['INSTALL_MODULE'] = 'Install Module';
+$HEADING['INSTALL_TEMPLATE'] = 'Install Template';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Language Details';
+$HEADING['MANAGE_SECTIONS'] = 'Manage Sections';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modify Advanced Page Settings';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modify/Delete Group';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modify/Delete Page';
+$HEADING['MODIFY_DELETE_USER'] = 'Modify/Delete User';
+$HEADING['MODIFY_GROUP'] = 'Modify Group';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modify Intro Page';
+$HEADING['MODIFY_PAGE'] = 'Modify Page';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modify Page Settings';
+$HEADING['MODIFY_USER'] = 'Modify User';
+$HEADING['MODULE_DETAILS'] = 'Module Details';
+$HEADING['MY_EMAIL'] = 'My Email';
+$HEADING['MY_PASSWORD'] = 'My Password';
+$HEADING['MY_SETTINGS'] = 'My Settings';
+$HEADING['SEARCH_SETTINGS'] = 'Search Settings';
+$HEADING['SERVER_SETTINGS'] = 'Server Settings';
+$HEADING['TEMPLATE_DETAILS'] = 'Template Details';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Uninstall Language';
+$HEADING['UNINSTALL_MODULE'] = 'Uninstall Module';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Uninstall Template';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Upload File(s)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Insufficient privelliges to be here';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Password cannot be reset more than once per hour, sorry';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Unable to email password, please contact system administrator';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'The email that you entered cannot be found in the database';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Please enter your email address below';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Sorry, you do not have permissions to view this page';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Already installed';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Unable to write to the target directory';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Cannot uninstall';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Cannot Uninstall: the selected file is in use';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Cannot unzip file';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Cannot upload file';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Error opening file.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Please note that the file you upload must be of the following format:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Please note that the file you upload must be in one of the following formats:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Please go back and fill-in all fields';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installed successfully';
+$MESSAGE['GENERIC_INVALID'] = 'The file you uploaded is invalid';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Not installed';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Please be patient, this might take a while.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Please check back soon...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Uninstalled successfully';
+$MESSAGE['GENERIC_UPGRADED'] = 'Upgraded successfully';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GROUPS_ADDED'] = 'Group added successfully';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Are you sure you want to delete the selected group (and any users that belong to it)?';
+$MESSAGE['GROUPS_DELETED'] = 'Group deleted successfully';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Group name is blank';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Group name already exists';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'No groups found';
+$MESSAGE['GROUPS_SAVED'] = 'Group saved successfully';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Please enter a password';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Supplied password to long';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Supplied password to short';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'You did not enter a file extension';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'You did not enter a new name';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Cannot delete the selected folder';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Cannot delete the selected file';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Rename unsuccessful';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Are you sure you want to delete the following file or folder?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Folder deleted successfully';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'File deleted successfully';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Cannot include ../ in the folder name';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'A folder matching the name you entered already exists';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Folder created successfully';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Unable to create folder';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'A file matching the name you entered already exists';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'File not found';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Cannot include ../ in the name';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Cannot use index.php as the name';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED']='No file was recieved';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'No media found in the current folder';
+$MESSAGE['MEDIA_RENAMED'] = 'Rename successful';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' file was successfully uploaded';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Cannot have ../ in the folder target';
+$MESSAGE['MEDIA_UPLOADED'] = ' files were successfully uploaded';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'You must enter details for the following fields';
+$MESSAGE['PAGES_ADDED'] = 'Page added successfully';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Page heading added successfully';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Please enter a menu title';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Please enter a page title';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Error creating access file in the /pages directory (insufficient privileges)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Error deleting access file in the /pages directory (insufficient privileges)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Error re-ordering page';
+$MESSAGE['PAGES_DELETED'] = 'Page deleted successfully';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Are you sure you want to delete the selected page (and all of its sub-pages)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'You do not have permissions to modify this page';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Click HERE to modify the intro page';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Cannot write to file /pages/intro.php (insufficient privileges)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Intro page saved successfully';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Last modification by';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Page not found';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Error saving page';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'A page with the same or similar title exists';
+$MESSAGE['PAGES_REORDERED'] = 'Page re-ordered successfully';
+$MESSAGE['PAGES_RESTORED'] = 'Page restored successfully';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Return to pages';
+$MESSAGE['PAGES_SAVED'] = 'Page saved successfully';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Page settings saved successfully';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Section properties saved successfully';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'The (current) password you entered is incorrect';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Details saved successfully';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email updated successfully';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Password changed successfully';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Please Note: Pressing this button resets all unsaved changes';
+$MESSAGE['SETTINGS_SAVED'] = 'Settings saved successfully';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Unable to open the configuration file';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Cannot write to configuration file';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Please note: this is only recommended for testing environments';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'You must enter an email address';
+$MESSAGE['START_CURRENT_USER'] = 'You are currently logged in as:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Warning, Installation Directory Still Exists!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Welcome to WebsiteBaker Administration';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Please note: to change the template you must go to the Settings section';
+
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+
+$MESSAGE['USERS_ADDED'] = 'User added successfully';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Please note: You should only enter values in the above fields if you wish to change this users password';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Are you sure you want to delete the selected user?';
+$MESSAGE['USERS_DELETED'] = 'User deleted successfully';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'The email you entered is already in use';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'The email address you entered is invalid';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'No group was selected';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'The passwords you entered do not match';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'The password you entered was too short';
+$MESSAGE['USERS_SAVED'] = 'User saved successfully';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Manage user groups and their system permissions...';
+$OVERVIEW['HELP'] = 'Got a questions? Find your answer...';
+$OVERVIEW['LANGUAGES'] = 'Manage WebsiteBaker languages...';
+$OVERVIEW['MEDIA'] = 'Manage files stored in the media folder...';
+$OVERVIEW['MODULES'] = 'Manage WebsiteBaker modules...';
+$OVERVIEW['PAGES'] = 'Manage your websites pages...';
+$OVERVIEW['PREFERENCES'] = 'Change preferences such as email address, password, etc... ';
+$OVERVIEW['SETTINGS'] = 'Changes settings for WebsiteBaker...';
+$OVERVIEW['START'] = 'Administration overview';
+$OVERVIEW['TEMPLATES'] = 'Change the look and feel of your website with templates...';
+$OVERVIEW['USERS'] = 'Manage users who can log-in to WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Quickly view and browse your website in a new window...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/EN.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/FI.php
===================================================================
--- tags/2.8.3/wb/languages/FI.php	(nonexistent)
+++ tags/2.8.3/wb/languages/FI.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'FI';
+$language_name = 'Suomi';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Jontse';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'K&auml;ytt&auml;j&auml;t';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Lis&auml;osat';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Salasana unohtunut';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Ryhm&auml;';
+$MENU['HELP'] = 'Apu';
+$MENU['LANGUAGES'] = 'Kielet';
+$MENU['LOGIN'] = 'Kirjaudu';
+$MENU['LOGOUT'] = 'Kirjaudu ulos';
+$MENU['MEDIA'] = 'Tiedostot';
+$MENU['MODULES'] = 'Moduulit';
+$MENU['PAGES'] = 'Sivut';
+$MENU['PREFERENCES'] = 'Omat tiedot';
+$MENU['SETTINGS'] = 'Asetukset';
+$MENU['START'] = 'Alku';
+$MENU['TEMPLATES'] = 'Sivupohjat';
+$MENU['USERS'] = 'K&auml;ytt&auml;j&auml;t';
+$MENU['VIEW'] = 'Katsele';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Kirjaunut';
+$TEXT['ACTIONS'] = 'Tila';
+$TEXT['ACTIVE'] = 'K&auml;yt&ouml;ss&auml;';
+$TEXT['ADD'] = 'Lis&auml;&auml;';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Asenna osa';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administration';
+$TEXT['ADMINISTRATION_TOOL'] = 'Ty&ouml;kalu';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'P&auml;&auml;k&auml;ytt&auml;j&auml;t';
+$TEXT['ADVANCED'] = 'Lis&auml;asetukset';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Salli monivalinta';
+$TEXT['ALL_WORDS'] = 'Joka sana';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonyymi';
+$TEXT['ANY_WORDS'] = 'Jokin sanoista';
+$TEXT['APP_NAME'] = 'Sovelluksen nimi';
+$TEXT['ARE_YOU_SURE'] = 'Oletko varma?';
+$TEXT['AUTHOR'] = 'Luonut';
+$TEXT['BACK'] = 'Paluu';
+$TEXT['BACKUP'] = 'Varmuuskopioi';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Varmista tietokanta';
+$TEXT['BACKUP_MEDIA'] = 'Varmista...';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'Perus';
+$TEXT['BLOCK'] = 'Tekstialue';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Peruuta';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha varmistus';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Muuta';
+$TEXT['CHANGES'] = 'Muutokset';
+$TEXT['CHANGE_SETTINGS'] = 'Muuta asetuksia';
+$TEXT['CHARSET'] = 'Merkist&ouml;';
+$TEXT['CHECKBOX_GROUP'] = 'Valintaryhm&auml;';
+$TEXT['CLOSE'] = 'Sulje';
+$TEXT['CODE'] = 'Koodi';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Kutista';
+$TEXT['COMMENT'] = 'Kommentti';
+$TEXT['COMMENTING'] = 'Kommentoi';
+$TEXT['COMMENTS'] = 'Kommentit';
+$TEXT['CREATE_FOLDER'] = 'Luo kansio';
+$TEXT['CURRENT'] = 'Nykyinen';
+$TEXT['CURRENT_FOLDER'] = 'Nykyinen kansio';
+$TEXT['CURRENT_PAGE'] = 'Nykyinen sivu';
+$TEXT['CURRENT_PASSWORD'] = 'Vanha salasana';
+$TEXT['CUSTOM'] = 'Asiakas';
+$TEXT['DATABASE'] = 'Tietokanta';
+$TEXT['DATE'] = 'P&auml;iv&auml;ys';
+$TEXT['DATE_FORMAT'] = 'P&auml;iv&auml;yksen muoto';
+$TEXT['DEFAULT'] = 'Nykyinen';
+$TEXT['DEFAULT_CHARSET'] = 'Oletusmerkrkist&ouml;';
+$TEXT['DEFAULT_TEXT'] = 'Oletusteksti';
+$TEXT['DELETE'] = 'Poista';
+$TEXT['DELETED'] = 'Poistettu';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Kuvaus';
+$TEXT['DESIGNED_FOR'] = 'Suunniteltu';
+$TEXT['DIRECTORIES'] = 'Kansiot';
+$TEXT['DIRECTORY_MODE'] = 'Kansion muoto';
+$TEXT['DISABLED'] = 'Poistettu k&auml;yt&ouml;st&auml;';
+$TEXT['DISPLAY_NAME'] = 'Nimi';
+$TEXT['EMAIL'] = 'S&auml;hk&ouml;posti';
+$TEXT['EMAIL_ADDRESS'] = 'S&auml;hk&ouml;postiosoite';
+$TEXT['EMPTY_TRASH'] = 'Tyhjenn&auml; roskakori';
+$TEXT['ENABLED'] = 'Salli';
+$TEXT['END'] = 'Loppu';
+$TEXT['ERROR'] = 'Virhe';
+$TEXT['EXACT_MATCH'] = 'Tarkalleen';
+$TEXT['EXECUTE'] = 'Suorita';
+$TEXT['EXPAND'] = 'Laajenna';
+$TEXT['EXTENSION'] = 'Lis&auml;osa';
+$TEXT['FIELD'] = 'Kentt&auml;';
+$TEXT['FILE'] = 'Tiedosto';
+$TEXT['FILES'] = 'Tiedostot';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Tiedosto-oikeudet';
+$TEXT['FILE_MODE'] = 'Tiedostomuoto';
+$TEXT['FINISH_PUBLISHING'] = 'Lopeta julkaisu';
+$TEXT['FOLDER'] = 'Kansio';
+$TEXT['FOLDERS'] = 'Kansiot';
+$TEXT['FOOTER'] = 'Alatunniste';
+$TEXT['FORGOTTEN_DETAILS'] = 'Salasana unohtunut?';
+$TEXT['FORGOT_DETAILS'] = 'Peruuta tiedot?';
+$TEXT['FROM'] = 'Mist&auml;';
+$TEXT['FRONTEND'] = 'Johdanto';
+$TEXT['FULL_NAME'] = 'Nimi';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Ryhm&auml;';
+$TEXT['HEADER'] = 'Yl&auml;tunniste';
+$TEXT['HEADING'] = 'Otsikko';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Korkeus';
+$TEXT['HIDDEN'] = 'Piilotettu';
+$TEXT['HIDE'] = 'Piilota';
+$TEXT['HIDE_ADVANCED'] = 'Piilota lis&auml;asetukset';
+$TEXT['HOME'] = 'Koti';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Kotisivun uudelleen ohjaus';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Palvelin';
+$TEXT['ICON'] = 'Kuvake';
+$TEXT['IMAGE'] = 'Kuva';
+$TEXT['INLINE'] = 'Per&auml;kk&auml;in';
+$TEXT['INSTALL'] = 'Asenna';
+$TEXT['INSTALLATION'] = 'Asentaminen';
+$TEXT['INSTALLATION_PATH'] = 'Asennuspolku';
+$TEXT['INSTALLATION_URL'] = 'Asennus URL';
+$TEXT['INSTALLED'] = 'Asennettu';
+$TEXT['INTRO'] = 'Esisivu';
+$TEXT['INTRO_PAGE'] = 'Esisivu';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Avainsanat';
+$TEXT['LANGUAGE'] = 'Kieli';
+$TEXT['LAST_UPDATED_BY'] = 'P&auml;ivitetty';
+$TEXT['LENGTH'] = 'Pituus';
+$TEXT['LEVEL'] = 'Taso';
+$TEXT['LINK'] = 'Linkki';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Listan tyyppi';
+$TEXT['LOGGED_IN'] = 'Kirjautunut';
+$TEXT['LOGIN'] = 'Kirjaudu';
+$TEXT['LONG'] = 'Lis&auml;&auml;';
+$TEXT['LONG_TEXT'] = 'Tarkemmin';
+$TEXT['LOOP'] = 'Silmukka';
+$TEXT['MAIN'] = 'P&auml;&auml;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Hallinnoi';
+$TEXT['MANAGE_GROUPS'] = 'Ryhmien hallinta';
+$TEXT['MANAGE_USERS'] = 'K&auml;ytt&auml;j&auml;hallinta';
+$TEXT['MATCH'] = 'Vastaavuus';
+$TEXT['MATCHING'] = 'Etsii';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Salasana l&auml;hetet&auml;&auml;n vain kerran tunnissa';
+$TEXT['MEDIA_DIRECTORY'] = 'Tiedostokansio';
+$TEXT['MENU'] = 'Valikko';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Valikkoteksti';
+$TEXT['MESSAGE'] = 'Viesti';
+$TEXT['MODIFY'] = 'Muokkaa';
+$TEXT['MODIFY_CONTENT'] = 'Muokkaa sis&auml;lt&ouml;&auml;t';
+$TEXT['MODIFY_SETTINGS'] = 'Muuta asetuksia';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Moduulien hallinta';
+$TEXT['MORE'] = 'Lis&auml;&auml;';
+$TEXT['MOVE_DOWN'] = 'Aiirr&auml; alas';
+$TEXT['MOVE_UP'] = 'Siirr&auml; yl&ouml;s';
+$TEXT['MULTIPLE_MENUS'] = 'Monivalikko';
+$TEXT['MULTISELECT'] = 'Monivalinta';
+$TEXT['NAME'] = 'Nimi';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Kirjautuminen vaadittu';
+$TEXT['NEW_PASSWORD'] = 'Uusi salasana';
+$TEXT['NEW_WINDOW'] = 'Uuteen ikkunaan';
+$TEXT['NEXT'] = 'Seuraava';
+$TEXT['NEXT_PAGE'] = 'Seuraava sivu';
+$TEXT['NO'] = 'Ei';
+$TEXT['NONE'] = 'Ei mik&auml;&auml;n';
+$TEXT['NONE_FOUND'] = 'Ei l&ouml;ytynyt';
+$TEXT['NOT_FOUND'] = 'Ei l&ouml;ytynyt';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Ei l&ouml;ytynyt';
+$TEXT['OF'] = 'Of';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Lis&auml;asteus';
+$TEXT['OTHERS'] = 'Muut';
+$TEXT['OUT_OF'] = 'Out Of';
+$TEXT['OVERWRITE_EXISTING'] = 'Korvaa';
+$TEXT['PAGE'] = 'Sivu';
+$TEXT['PAGES_DIRECTORY'] = 'Sivukansio';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Sivun tarkennin';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Sivun kieli';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Tasoja enint&auml;&auml;n';
+$TEXT['PAGE_SPACER'] = 'Sivujen erotin ';
+$TEXT['PAGE_TITLE'] = 'Sivun otsikko';
+$TEXT['PAGE_TRASH'] = 'Roskakori';
+$TEXT['PARENT'] = 'Is&auml;nt&auml;';
+$TEXT['PASSWORD'] = 'Salasana';
+$TEXT['PATH'] = 'Polku';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP:n virheraportointitapa';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Valitset';
+$TEXT['POST'] = 'Liite';
+$TEXT['POSTS_PER_PAGE'] = 'Osaa sivulla';
+$TEXT['POST_FOOTER'] = 'Lis&auml;alaviite';
+$TEXT['POST_HEADER'] = 'Alaotsikko';
+$TEXT['PREVIOUS'] = 'Edellinen';
+$TEXT['PREVIOUS_PAGE'] = 'Edellinen sivu';
+$TEXT['PRIVATE'] = 'Yksityinen';
+$TEXT['PRIVATE_VIEWERS'] = 'Yksityiset';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Julkinen';
+$TEXT['PUBL_END_DATE'] = 'Julkaisun poistop&auml;iv&auml;';
+$TEXT['PUBL_START_DATE'] = 'Julkaisup&auml;iv&auml;';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radiopainikkeet';
+$TEXT['READ'] = 'Lue';
+$TEXT['READ_MORE'] = 'Lue lis&auml;&auml;..';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Rekister&ouml;itynyt';
+$TEXT['REGISTERED_VIEWERS'] = 'Rekister&ouml;ity';
+$TEXT['RELOAD'] = 'Lataa uudelleen';
+$TEXT['REMEMBER_ME'] = 'Palauta ';
+$TEXT['RENAME'] = 'Nime&auml; uudelleen';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Pakollinen';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Peruuta';
+$TEXT['RESIZE'] = 'Muuta kokoa';
+$TEXT['RESIZE_IMAGE_TO'] = 'Muuta kuvan koko';
+$TEXT['RESTORE'] = 'Palauta';
+$TEXT['RESTORE_DATABASE'] = 'Palauta tietokanta';
+$TEXT['RESTORE_MEDIA'] = 'Palauta...';
+$TEXT['RESULTS'] = 'Tulokset';
+$TEXT['RESULTS_FOOTER'] = 'Alatuniste';
+$TEXT['RESULTS_FOR'] = 'Tulokset';
+$TEXT['RESULTS_HEADER'] = 'Tulokset';
+$TEXT['RESULTS_LOOP'] = 'Tulossilmukka';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Kirjoita uudelleen';
+$TEXT['RETYPE_PASSWORD'] = 'Kirjoita uudeleen';
+$TEXT['SAME_WINDOW'] = 'Nykyiseen ikkunaan';
+$TEXT['SAVE'] = 'Talleta';
+$TEXT['SEARCH'] = 'Etsi';
+$TEXT['SEARCHING'] = 'Etsii..';
+$TEXT['SECTION'] = 'Osa';
+$TEXT['SECTION_BLOCKS'] = 'Osa';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Valinta';
+$TEXT['SEND_DETAILS'] = 'L&auml;het&auml; tiedot';
+$TEXT['SEPARATE'] = 'Erill&auml;&auml;n';
+$TEXT['SEPERATOR'] = 'Erotin';
+$TEXT['SERVER_EMAIL'] = 'Palvelimen s&auml;hk&ouml;posti';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Palvelimen k&auml;ytt&ouml;j&auml;rjestelm&auml;';
+$TEXT['SESSION_IDENTIFIER'] = 'Tunniste';
+$TEXT['SETTINGS'] = 'Asetukset';
+$TEXT['SHORT'] = 'Lyhyesti';
+$TEXT['SHORT_TEXT'] = 'Lyhyesti';
+$TEXT['SHOW'] = 'N&auml;yt&auml;';
+$TEXT['SHOW_ADVANCED'] = 'N&auml;yt&auml; lis&auml;asetukset';
+$TEXT['SIGNUP'] = 'Rekister&ouml;ityminen';
+$TEXT['SIZE'] = 'Koko';
+$TEXT['SMART_LOGIN'] = 'Kirjautuminen';
+$TEXT['START'] = 'Alku';
+$TEXT['START_PUBLISHING'] = 'Julkaise';
+$TEXT['SUBJECT'] = 'Aihe';
+$TEXT['SUBMISSIONS'] = 'Alasivu';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Salasana talletettu tietokantaan';
+$TEXT['SUBMISSION_ID'] = 'Alasivun ID';
+$TEXT['SUBMITTED'] = 'Siirretty alisivuksi';
+$TEXT['SUCCESS'] = 'Onnistui';
+$TEXT['SYSTEM_DEFAULT'] = 'Oletus';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Oikeudet';
+$TEXT['TABLE_PREFIX'] = 'Taulukon ominaisuudet';
+$TEXT['TARGET'] = 'Kohde';
+$TEXT['TARGET_FOLDER'] = 'Kohdekansio';
+$TEXT['TEMPLATE'] = 'Sivupohja';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Sivupohjat';
+$TEXT['TEXT'] = 'Teksti';
+$TEXT['TEXTAREA'] = 'Tekstialue';
+$TEXT['TEXTFIELD'] = 'Tekstikentt&auml;';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Aika';
+$TEXT['TIMEZONE'] = 'Aikavy&ouml;hyke';
+$TEXT['TIME_FORMAT'] = 'Ajan muoto ';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Otsikko';
+$TEXT['TO'] = 'Minne';
+$TEXT['TOP_FRAME'] = 'Frameset sprengen';
+$TEXT['TRASH_EMPTIED'] = 'Tyhjennetty';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tyyppi';
+$TEXT['UNDER_CONSTRUCTION'] = 'Ty&ouml;n alla';
+$TEXT['UNINSTALL'] = 'Poista';
+$TEXT['UNKNOWN'] = 'Tuntematon';
+$TEXT['UNLIMITED'] = 'Rajaton';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Yl&ouml;s';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Lataa palvelimelle';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'K&auml;ytt&auml;j&auml;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Varmistus';
+$TEXT['VERSION'] = 'Versio';
+$TEXT['VIEW'] = 'Katsele';
+$TEXT['VIEW_DELETED_PAGES'] = 'N&auml;yt&auml; poistetut';
+$TEXT['VIEW_DETAILS'] = 'N&auml;yt&auml; tiedot';
+$TEXT['VISIBILITY'] = 'N&auml;kyvyys';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'www-sivu';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Sivuston kuvaus';
+$TEXT['WEBSITE_FOOTER'] = 'Alatunniste';
+$TEXT['WEBSITE_HEADER'] = 'Johdanto';
+$TEXT['WEBSITE_KEYWORDS'] = 'Sivusaton avainsanat';
+$TEXT['WEBSITE_TITLE'] = 'Sivuston otsikko';
+$TEXT['WELCOME_BACK'] = 'N&auml;kemiin';
+$TEXT['WIDTH'] = 'Leveys';
+$TEXT['WINDOW'] = 'Ikkuna';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Kirjoitusoikeudet';
+$TEXT['WRITE'] = 'Kirjoita';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG muokkain';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG tyyli';
+$TEXT['YES'] = 'Kyll&auml;';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Lis&auml;&auml; ryhm&auml;';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Lis&auml;&auml; otsikko';
+$HEADING['ADD_PAGE'] = 'Lis&auml;&auml; sivu';
+$HEADING['ADD_USER'] = 'Lis&auml;&auml; k&auml;ytt&auml;j&auml;';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Ty&ouml;kalut';
+$HEADING['BROWSE_MEDIA'] = 'Selaa tiedostoja';
+$HEADING['CREATE_FOLDER'] = 'Luo kansio';
+$HEADING['DEFAULT_SETTINGS'] = 'Oletusasetukset';
+$HEADING['DELETED_PAGES'] = 'Poistetut sivut';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Tiedostoj&auml;rjestelm&auml;';
+$HEADING['GENERAL_SETTINGS'] = 'Asetukset';
+$HEADING['INSTALL_LANGUAGE'] = 'Asenna kieli';
+$HEADING['INSTALL_MODULE'] = 'Asenna moduuli';
+$HEADING['INSTALL_TEMPLATE'] = 'Asenna sivupohja';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Kielen tiedot';
+$HEADING['MANAGE_SECTIONS'] = 'Muokkaa osia';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Muuta sivun lis&auml;asetuksia';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Muokkaa/poista ryhm&auml;';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Muokkaa/poista sivu';
+$HEADING['MODIFY_DELETE_USER'] = 'Muokkaa/poista k&auml;ytt&auml;j&auml;';
+$HEADING['MODIFY_GROUP'] = 'Muokkaa ryhm&auml;&auml;';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Muokkaa esisivua';
+$HEADING['MODIFY_PAGE'] = 'Muokkaa sivua';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Muuta sivun asetuksia';
+$HEADING['MODIFY_USER'] = 'Muokkaa k&auml;ytt&auml;j&auml;&auml;';
+$HEADING['MODULE_DETAILS'] = 'Moduulin tietoja';
+$HEADING['MY_EMAIL'] = 'S&auml;hk&ouml;postiosoite';
+$HEADING['MY_PASSWORD'] = 'Salasana';
+$HEADING['MY_SETTINGS'] = 'Omat tiedot';
+$HEADING['SEARCH_SETTINGS'] = 'Etsinn&auml;n asetukset';
+$HEADING['SERVER_SETTINGS'] = 'Palvelimen asetukset';
+$HEADING['TEMPLATE_DETAILS'] = 'Sivupohjan info';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Poista kieli';
+$HEADING['UNINSTALL_MODULE'] = 'Poista moduuli';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Poista sivupohja';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Lataa palvelimelle';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Oikeutesi eiv&auml;t riit&auml;...';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Salasanan vaiho vain kerran tunnissa!';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Salasanan postitus ei onnistu, ota yhteytt&auml; p&auml;&auml;k&auml;ytt&auml;j&auml;&auml;n';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Virheellinen s&auml;hk&ouml;postiosoite';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Anna s&auml;hk&ouml;postiosoite';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Oikeutesi eiv&auml;t riit&auml;...';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Asennettu, uudelleen asennus ei onnistu';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kohdekansioon ei voi kirjoittaa';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Ei voi poistaa';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Tiedosto k&auml;yt&ouml;ss&auml;, tiedostoa ei voi poistaa';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Zip-tiedostoa ei voi purkaa';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Lataus ei onnistu';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Virhe tiedostoa avattaessa.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Tiedostotyypin tulee olla jokin seuraavista:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Tiedostotyypin tulee olla jjokin seuraavista:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Palaa ja t&auml;yt&auml; kaikki kent&auml;t';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Asennettu';
+$MESSAGE['GENERIC_INVALID'] = 'Ladatussa tiedostossa virhe';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Ei ole asennettu';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Hetkinen...';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Tervetuloa my&ouml;hemmin...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Poistettu';
+$MESSAGE['GENERIC_UPGRADED'] = 'P&auml;ivitetty';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Verkkosivusto on ty&ouml;n alla';
+$MESSAGE['GROUPS_ADDED'] = 'Ryhm&auml;n lis&auml;ys onnistui';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Haluatko poistaa ryhm&auml;n ja kakki sen k&auml;ytt&auml;j&auml;t?';
+$MESSAGE['GROUPS_DELETED'] = 'Ryhm&auml; poistettu';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Ryhm&auml;n nimi puuttuu';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Ryhm&auml;n nimi varattu';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Ryhm&auml;&auml; ei l&ouml;ydy';
+$MESSAGE['GROUPS_SAVED'] = 'Rym&auml; talletettu';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Salasana';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Liian pitk&auml; salasana';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Salasana liian lyhyt';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Et kirjoittanut tiedoston tarkennetta';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Et antanut nime&auml;';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Kansion poistamienen ei onnistu';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Tiedostoa ei voi poistaa';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Ei voinut uudelleen nimet&auml;';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Halutko poistaa tiedoston/kansion?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Kansio poistettu';
+$MESSAGE['MEDIA_DELETED_FILE'] = ' Tiedosto pistettu';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Kansion nimi varattu';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Merkki ../ ei kelpaa ';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Saman niminen kansio olemassa';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Kansio luotu';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Kansiota ei voi luoda';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Saman niminen tiedosto olemassa';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Tiedostoa ei l&ouml;ydy';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Merkki&auml; ../ ei voi k&auml;ytt&auml;&auml;';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nimi index.php ei kelpaa';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Tiedostokansio tyhj&auml;';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Udelleen nimetty';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' tiedosto ladattu';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Merkki&auml; ../ ei voi k&auml;ytt&auml;&auml; ';
+$MESSAGE['MEDIA_UPLOADED'] = ' tiedostot ladattu';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Rajoitus voimassa, yrit&auml; tunnin kuluttua uudelleen';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'T&auml;yt&auml; kent&auml;t';
+$MESSAGE['PAGES_ADDED'] = 'Sivu lis&auml;tty';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Otsikko lis&auml;tty';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Kirjoita valikkon tule teksti';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Kirjoita sivun nimi';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'K&auml;ytt&ouml;oiketesi eiv&auml;t riit&auml;';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Oikeutesi eiv&auml;t riit&auml;';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Sivujen j&auml;rjestely ei onnistu';
+$MESSAGE['PAGES_DELETED'] = 'Sivu poistettu';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Poistetaanko sivu ja sen alisivut?';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Oikeutesi eiv&auml;t riit&auml;';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Muuta esisivua';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Ei voi kirjoittaa /pages/intro.php (oikeutesi eiv&auml;t riit&auml;)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Esisivu tallennettu';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'P&auml;ivitt&auml;nyt';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Sivua ei l&ouml;ydy';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Tannennusvirhe!';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Otsikko k&auml;yt&ouml;ss&auml;';
+$MESSAGE['PAGES_REORDERED'] = 'Sivut j&auml;rjestelty uudelleen';
+$MESSAGE['PAGES_RESTORED'] = 'Sivusto tallennettu';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Palaa sivuille...';
+$MESSAGE['PAGES_SAVED'] = 'Sivu tallennettu';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Sivun asetukset tallennettu';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Asetukset tallennettu';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Nykyinen salasana v&auml;&auml;r&auml;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Tiedot tallennettu';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'S&auml;hp&ouml;stiosoite p&auml;ivitetty';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Salasanan vaiho onnistui';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Klikattaessa h&auml;vi&auml;v&auml;t kaikki tallettamattomat muutokset';
+$MESSAGE['SETTINGS_SAVED'] = 'Asetusten talletus onnitui';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Konfigurointitiedostoa ei voi vavata';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Konfiguraation kirjoitus ei onnistu';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Susitellaan ainoastaan testitarkoituksiin';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Anna s&auml;hk&ouml;postiosoite';
+$MESSAGE['START_CURRENT_USER'] = 'Olet kirjautunut nimell&auml;:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Poista asennuskansio!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Tervetuloa sivuston hallintaan';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Sivupohjan voi vaihtaa asetukset-kohdasta';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Lis&auml;tty';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Jos haluat vaihtaa salasanan, t&auml;yt&auml; vain ko kent&auml;t';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Haluatko poistaa k&auml;ytt&auml;j&auml;n?';
+$MESSAGE['USERS_DELETED'] = 'Poistettu';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'S&auml;hk&ouml;postiosoite k&auml;yt&ouml;ss&auml;!';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Virheellinen s&auml;hk&ouml;postiosoite';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Valitse ryhm&auml;!';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Salasanat eiv&auml;t t&auml;sm&auml;&auml;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Salasana liian lyhyt';
+$MESSAGE['USERS_SAVED'] = 'Talletettu';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'k&auml;ytt&auml;j&auml;ryhm&auml;t...';
+$OVERVIEW['HELP'] = 'Kysymykset, vastaukset...';
+$OVERVIEW['LANGUAGES'] = 'Muuta kieli...';
+$OVERVIEW['MEDIA'] = 'Tiedostojen hallinta...';
+$OVERVIEW['MODULES'] = 'Moduulien hallinta...';
+$OVERVIEW['PAGES'] = 'Sivujen hallinta...';
+$OVERVIEW['PREFERENCES'] = 'S&auml;hk&ouml;postiosoite, salsana... ';
+$OVERVIEW['SETTINGS'] = 'WebsiteBakerin asetukset...';
+$OVERVIEW['START'] = 'P&auml;&auml;k&auml;ytt&auml;j&auml;tila';
+$OVERVIEW['TEMPLATES'] = 'Muuta sivupohjaa...';
+$OVERVIEW['USERS'] = 'K&auml;ytt&auml;j&auml;hallinta...';
+$OVERVIEW['VIEW'] = 'Tarkastele sivuja...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/FI.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/TR.php
===================================================================
--- tags/2.8.3/wb/languages/TR.php	(nonexistent)
+++ tags/2.8.3/wb/languages/TR.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'TR';
+$language_name = 'T&uuml;rk';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Atakan KO&Ccedil;';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Giri&thorn;';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Eklentiler';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Giri&thorn; Bilgilerini Gerial';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Gruplar';
+$MENU['HELP'] = 'Yard&yacute;m';
+$MENU['LANGUAGES'] = 'Diller';
+$MENU['LOGIN'] = 'Giri&thorn;';
+$MENU['LOGOUT'] = '&Ccedil;&yacute;k&yacute;&thorn;';
+$MENU['MEDIA'] = 'Resimler';
+$MENU['MODULES'] = 'Mod&uuml;ller';
+$MENU['PAGES'] = 'Sayfalar';
+$MENU['PREFERENCES'] = 'Tercihler';
+$MENU['SETTINGS'] = 'Ayarlar';
+$MENU['START'] = 'Ba&thorn;lat';
+$MENU['TEMPLATES'] = 'Kal&yacute;plar';
+$MENU['USERS'] = 'Kullan&yacute;c&yacute;lar';
+$MENU['VIEW'] = 'G&ouml;r&uuml;nt&uuml;le';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Kull&yacute;c&yacute; Kay&yacute;t Ol';
+$TEXT['ACTIONS'] = 'Hareketler';
+$TEXT['ACTIVE'] = 'Aktif';
+$TEXT['ADD'] = 'Ekle';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'K&yacute;s&yacute;m Ekle';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Y&ouml;netici';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administration tool';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Y&ouml;nerici';
+$TEXT['ADVANCED'] = '&Yacute;leri';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = '&Ccedil;oklu se&ccedil;imlere izin ver';
+$TEXT['ALL_WORDS'] = 'B&uuml;t&uuml;n Kelimeler';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Bilinmeyen';
+$TEXT['ANY_WORDS'] = 'Herhangi bir s&ouml;zc&uuml;k';
+$TEXT['APP_NAME'] = 'Application Ad&yacute;';
+$TEXT['ARE_YOU_SURE'] = 'eminmisin?';
+$TEXT['AUTHOR'] = 'Yazar';
+$TEXT['BACK'] = 'Geri';
+$TEXT['BACKUP'] = 'Yedek Al';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Database Yedekle';
+$TEXT['BACKUP_MEDIA'] = 'Media Yedekle';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'Ba&thorn;lang&yacute;&ccedil;';
+$TEXT['BLOCK'] = 'Blok';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = '&Yacute;ptal';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Verification';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'De&eth;i&thorn;tir';
+$TEXT['CHANGES'] = 'De&eth;i&thorn;iklikler';
+$TEXT['CHANGE_SETTINGS'] = 'Ayarlar&yacute; De&eth;i&thorn;tir';
+$TEXT['CHARSET'] = 'Charset';
+$TEXT['CHECKBOX_GROUP'] = 'T&yacute;klamal&yacute; Se&ccedil;im';
+$TEXT['CLOSE'] = 'Kapat';
+$TEXT['CODE'] = 'Kod';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Daralt';
+$TEXT['COMMENT'] = 'Yorum';
+$TEXT['COMMENTING'] = 'Yorum yapan';
+$TEXT['COMMENTS'] = 'Yorumlar';
+$TEXT['CREATE_FOLDER'] = 'Dizin Yarat';
+$TEXT['CURRENT'] = 'Kullan&yacute;lan';
+$TEXT['CURRENT_FOLDER'] = 'Kullan&yacute;lan Dizin';
+$TEXT['CURRENT_PAGE'] = 'Kullan&yacute;lan Sayfa';
+$TEXT['CURRENT_PASSWORD'] = 'Kullan&yacute;lan &THORN;ifre';
+$TEXT['CUSTOM'] = 'Custom';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Tarih';
+$TEXT['DATE_FORMAT'] = 'Tarih Format&yacute;';
+$TEXT['DEFAULT'] = 'Varsay&yacute;lan';
+$TEXT['DEFAULT_CHARSET'] = 'Default Charset';
+$TEXT['DEFAULT_TEXT'] = 'Varsay&yacute;lan Yaz&yacute;';
+$TEXT['DELETE'] = 'Sil';
+$TEXT['DELETED'] = 'Silindi';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'A&ccedil;&yacute;klama';
+$TEXT['DESIGNED_FOR'] = 'D&uuml;zenleyen';
+$TEXT['DIRECTORIES'] = 'Dizinler';
+$TEXT['DIRECTORY_MODE'] = 'Dizin Modu';
+$TEXT['DISABLED'] = '&Yacute;ptal';
+$TEXT['DISPLAY_NAME'] = 'G&ouml;r&uuml;n&uuml;m Ad&yacute;';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Email Adresi';
+$TEXT['EMPTY_TRASH'] = '&Ccedil;&ouml;p kutusu bo&thorn;';
+$TEXT['ENABLED'] = '&Yacute;zin Ver';
+$TEXT['END'] = 'Son';
+$TEXT['ERROR'] = 'Hata';
+$TEXT['EXACT_MATCH'] = 'Tam Bul';
+$TEXT['EXECUTE'] = '&Ccedil;al&yacute;&thorn;t&yacute;r';
+$TEXT['EXPAND'] = 'Geni&thorn;let';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Alan';
+$TEXT['FILE'] = 'Dosya';
+$TEXT['FILES'] = 'Dosyalar';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Dosya Sistemi &Yacute;zinleri';
+$TEXT['FILE_MODE'] = 'Dosya &Yacute;zini';
+$TEXT['FINISH_PUBLISHING'] = 'Yay&yacute;n&yacute; Bitir';
+$TEXT['FOLDER'] = 'Dizin';
+$TEXT['FOLDERS'] = 'Dizinler';
+$TEXT['FOOTER'] = 'Alt K&yacute;s&yacute;m';
+$TEXT['FORGOTTEN_DETAILS'] = 'Sizin Ayr&yacute;nt&yacute;l&yacute; Detaylar&yacute;n&yacute;z?';
+$TEXT['FORGOT_DETAILS'] = 'Detay Hat&yacute;rlat?';
+$TEXT['FROM'] = 'From';
+$TEXT['FRONTEND'] = 'Son Kullan&yacute;c&yacute;';
+$TEXT['FULL_NAME'] = 'Tam Ad&yacute;n&yacute;z';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grup';
+$TEXT['HEADER'] = '&Uuml;st K&yacute;s&yacute;m';
+$TEXT['HEADING'] = 'Ba&thorn;l&yacute;k';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Y&uuml;kseklik';
+$TEXT['HIDDEN'] = 'Gizli';
+$TEXT['HIDE'] = 'Gizle';
+$TEXT['HIDE_ADVANCED'] = '&Yacute;leri Se&ccedil;enekleri Gizle';
+$TEXT['HOME'] = 'Ana Sayfa';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Ana sayfa y&ouml;nlendir';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Ikon';
+$TEXT['IMAGE'] = 'Resim';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Y&uuml;kle';
+$TEXT['INSTALLATION'] = 'Y&uuml;kle';
+$TEXT['INSTALLATION_PATH'] = 'Y&uuml;kleme Yolu';
+$TEXT['INSTALLATION_URL'] = 'Y&uuml;keleme URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Demo';
+$TEXT['INTRO_PAGE'] = 'Demo Sayfas&yacute;';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Keywords';
+$TEXT['LANGUAGE'] = 'Dil';
+$TEXT['LAST_UPDATED_BY'] = 'Son G&uuml;ncelleyen';
+$TEXT['LENGTH'] = 'Uzunluk';
+$TEXT['LEVEL'] = 'Limit';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix tabanl&yacute;';
+$TEXT['LIST_OPTIONS'] = 'Liste se&ccedil;enekleri';
+$TEXT['LOGGED_IN'] = 'Giri&thorn; Kaydet';
+$TEXT['LOGIN'] = 'Giri&thorn;';
+$TEXT['LONG'] = 'Uzun';
+$TEXT['LONG_TEXT'] = 'Uzun Yaz&yacute;';
+$TEXT['LOOP'] = 'S&uuml;rekli';
+$TEXT['MAIN'] = 'Ana';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Y&ouml;net';
+$TEXT['MANAGE_GROUPS'] = 'Grup Y&ouml;netimi';
+$TEXT['MANAGE_USERS'] = 'Kullan&yacute;c&yacute; Y&ouml;netimi';
+$TEXT['MATCH'] = 'Bul';
+$TEXT['MATCHING'] = 'Bulunanlar';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maksimum Saat Ba&thorn;&yacute; Sunum';
+$TEXT['MEDIA_DIRECTORY'] = 'Resim Dizini';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Menu Ba&thorn;l&yacute;&eth;&yacute;';
+$TEXT['MESSAGE'] = 'Mesaj';
+$TEXT['MODIFY'] = 'D&uuml;zenle';
+$TEXT['MODIFY_CONTENT'] = 'D&uuml;zeni De&eth;i&thorn;tir';
+$TEXT['MODIFY_SETTINGS'] = 'Ayarlar&yacute; De&eth;i&thorn;tir';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Mod&uuml;l &Yacute;zinleri';
+$TEXT['MORE'] = 'Daha &Ccedil;ok';
+$TEXT['MOVE_DOWN'] = 'A&thorn;a&eth;&yacute; Ta&thorn;&yacute;';
+$TEXT['MOVE_UP'] = 'Yukar&yacute; Ta&thorn;&yacute;';
+$TEXT['MULTIPLE_MENUS'] = '&Ccedil;oklu men&uuml;ler';
+$TEXT['MULTISELECT'] = '&Ccedil;oklu Se&ccedil;im';
+$TEXT['NAME'] = '&Yacute;sim';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Need to log-in?';
+$TEXT['NEW_PASSWORD'] = 'Yeni &THORN;ifre';
+$TEXT['NEW_WINDOW'] = 'Yeni Pencere';
+$TEXT['NEXT'] = 'Sonraki';
+$TEXT['NEXT_PAGE'] = 'Sonraki Sayfa';
+$TEXT['NO'] = 'Hay&yacute;r';
+$TEXT['NONE'] = 'Yok';
+$TEXT['NONE_FOUND'] = 'Hi&ccedil;biri bulmad&yacute;';
+$TEXT['NOT_FOUND'] = 'Bulunamad&yacute;';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Bulunamad&yacute;';
+$TEXT['OF'] = 'Of';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Se&ccedil;enekler';
+$TEXT['OTHERS'] = 'Di&eth;erleri';
+$TEXT['OUT_OF'] = 'D&yacute;&thorn;ar&yacute;';
+$TEXT['OVERWRITE_EXISTING'] = '&Uuml;st&uuml;ne Yaz';
+$TEXT['PAGE'] = 'Sayfa';
+$TEXT['PAGES_DIRECTORY'] = 'Sayfa Dizini';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Sayfa Uzant&yacute;s&yacute;';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Sayfa Dili';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Sayfa Alt Limiti';
+$TEXT['PAGE_SPACER'] = 'Sayfa Bo&thorn;lu&eth;u';
+$TEXT['PAGE_TITLE'] = 'Sayfa Ba&thorn;l&yacute;&eth;&yacute;';
+$TEXT['PAGE_TRASH'] = 'Sayfay&yacute; Sil';
+$TEXT['PARENT'] = 'Ana Grup';
+$TEXT['PASSWORD'] = '&THORN;ifre';
+$TEXT['PATH'] = 'Yol';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Hata Rapor D&uuml;zeyi';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'L&uuml;tfen Se&ccedil;in';
+$TEXT['POST'] = 'Mesaj';
+$TEXT['POSTS_PER_PAGE'] = 'Sayfa ba&thorn;&yacute;na mesajlar';
+$TEXT['POST_FOOTER'] = 'Alt Mesaj';
+$TEXT['POST_HEADER'] = '&Uuml;st Mesaj&yacute;';
+$TEXT['PREVIOUS'] = '&Ouml;nceki';
+$TEXT['PREVIOUS_PAGE'] = '&Ouml;nceki Sayfa';
+$TEXT['PRIVATE'] = '&Ouml;zel';
+$TEXT['PRIVATE_VIEWERS'] = '&Ouml;zel izleyiciler';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Herkez';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radyo D&uuml;&eth;meleri';
+$TEXT['READ'] = 'Oku';
+$TEXT['READ_MORE'] = 'Oku';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Kay&yacute;tl&yacute; Kullan&yacute;c&yacute;';
+$TEXT['REGISTERED_VIEWERS'] = '&Yacute;zleyiciler kaydetti';
+$TEXT['RELOAD'] = 'Tekrarla';
+$TEXT['REMEMBER_ME'] = 'Haz&yacute;rla';
+$TEXT['RENAME'] = 'Yeni isim ver';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Gerekli';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'S&yacute;f&yacute;rla';
+$TEXT['RESIZE'] = 'Tekrar Boyutland&yacute;r';
+$TEXT['RESIZE_IMAGE_TO'] = 'Boyutland&yacute;r resimi';
+$TEXT['RESTORE'] = 'Yede&eth;i y&uuml;kle';
+$TEXT['RESTORE_DATABASE'] = 'Database Geri Y&uuml;kle';
+$TEXT['RESTORE_MEDIA'] = 'Media Geri Y&uuml;kle';
+$TEXT['RESULTS'] = 'Sonu&ccedil;lar';
+$TEXT['RESULTS_FOOTER'] = 'Bulundu&eth;unda Alt K&yacute;s&yacute;m';
+$TEXT['RESULTS_FOR'] = 'Sonu&ccedil;lar';
+$TEXT['RESULTS_HEADER'] = 'Bulundu&eth;unda &Uuml;st K&yacute;s&yacute;m';
+$TEXT['RESULTS_LOOP'] = 'Bulundu&eth;unda D&ouml;ng&uuml;';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Tekrarla Yeni &THORN;ifre';
+$TEXT['RETYPE_PASSWORD'] = '&THORN;ifreyi Tekrarla';
+$TEXT['SAME_WINDOW'] = 'Ayn&yacute; Pencere';
+$TEXT['SAVE'] = 'Kay&yacute;t et';
+$TEXT['SEARCH'] = 'Ara';
+$TEXT['SEARCHING'] = 'Arama';
+$TEXT['SECTION'] = 'K&yacute;s&yacute;m';
+$TEXT['SECTION_BLOCKS'] = 'K&yacute;s&yacute;m bloklar&yacute;';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Se&ccedil;meli Men&uuml;';
+$TEXT['SEND_DETAILS'] = 'Detaylar&yacute; G&ouml;nder';
+$TEXT['SEPARATE'] = 'Ay&yacute;r&yacute;c&yacute;';
+$TEXT['SEPERATOR'] = 'B&ouml;l&uuml;c&uuml;';
+$TEXT['SERVER_EMAIL'] = 'Server Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server &Yacute;&thorn;letim Sistemi';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Identifier';
+$TEXT['SETTINGS'] = 'Ayarlar';
+$TEXT['SHORT'] = 'K&yacute;sa';
+$TEXT['SHORT_TEXT'] = 'K&yacute;sa Yaz&yacute;';
+$TEXT['SHOW'] = 'G&ouml;ster';
+$TEXT['SHOW_ADVANCED'] = '&Yacute;leri Se&ccedil;enekleri G&ouml;ster';
+$TEXT['SIGNUP'] = 'Kay&yacute;t Ol';
+$TEXT['SIZE'] = 'Boyut';
+$TEXT['SMART_LOGIN'] = 'G&uuml;venli Giri&thorn;';
+$TEXT['START'] = 'Ba&thorn;lat';
+$TEXT['START_PUBLISHING'] = 'Yay&yacute;na Ba&thorn;la';
+$TEXT['SUBJECT'] = 'Konu';
+$TEXT['SUBMISSIONS'] = 'Sunu&thorn;lar';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Sunu&thorn;lar, veritaban&yacute;nda depolad&yacute;';
+$TEXT['SUBMISSION_ID'] = 'Sunu&thorn;lar ID';
+$TEXT['SUBMITTED'] = 'G&ouml;nderildi';
+$TEXT['SUCCESS'] = '&Yacute;&thorn;lem Ba&thorn;ar&yacute;ld&yacute;';
+$TEXT['SYSTEM_DEFAULT'] = 'Sistem Varsay&yacute;lan&yacute;';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Sistem &Yacute;zinleri';
+$TEXT['TABLE_PREFIX'] = 'Table D&uuml;zen Ad&yacute;';
+$TEXT['TARGET'] = 'Hedef';
+$TEXT['TARGET_FOLDER'] = 'Hedef Dizin';
+$TEXT['TEMPLATE'] = 'Kal&yacute;p';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Kal&yacute;p &Yacute;zinleri';
+$TEXT['TEXT'] = 'Yaz&yacute;';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['TEXTFIELD'] = 'Textfield';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Saat';
+$TEXT['TIMEZONE'] = 'Zaman Dilimi';
+$TEXT['TIME_FORMAT'] = 'Saat Format&yacute;';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Ba&thorn;l&yacute;k';
+$TEXT['TO'] = 'To';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = '&Ccedil;&ouml;p kutusu bo&thorn;alt&yacute;ld&yacute;';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tip';
+$TEXT['UNDER_CONSTRUCTION'] = 'Yap&yacute;m A&thorn;amas&yacute;nda';
+$TEXT['UNINSTALL'] = 'Kald&yacute;r';
+$TEXT['UNKNOWN'] = 'Bilinmeyen';
+$TEXT['UNLIMITED'] = 'S&yacute;n&yacute;rs&yacute;z';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Yukar&yacute;';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Dosya Y&uuml;kle';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Kullan&yacute;c&yacute;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verification';
+$TEXT['VERSION'] = 'Versiyon';
+$TEXT['VIEW'] = 'G&ouml;r&uuml;n&uuml;&thorn;';
+$TEXT['VIEW_DELETED_PAGES'] = 'Silinen Sayfay&yacute; G&ouml;ster';
+$TEXT['VIEW_DETAILS'] = 'Detaylar';
+$TEXT['VISIBILITY'] = 'G&ouml;r&uuml;n&uuml;rl&uuml;k';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Website A&ccedil;&yacute;klamas&yacute;';
+$TEXT['WEBSITE_FOOTER'] = 'Website Alt K&yacute;s&yacute;m';
+$TEXT['WEBSITE_HEADER'] = 'Website &Uuml;st K&yacute;s&yacute;m';
+$TEXT['WEBSITE_KEYWORDS'] = 'Website Keywords';
+$TEXT['WEBSITE_TITLE'] = 'Website Ba&thorn;l&yacute;&eth;&yacute;';
+$TEXT['WELCOME_BACK'] = 'Ho&thorn;geldiniz';
+$TEXT['WIDTH'] = 'Geni&thorn;lik';
+$TEXT['WINDOW'] = 'Pencere';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Yaz&yacute;labilir dosya izinleri';
+$TEXT['WRITE'] = 'Yaz';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['YES'] = 'Evet';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Grup Ekle';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Ba&thorn;l&yacute;k Ekle';
+$HEADING['ADD_PAGE'] = 'Sayfa Ekle';
+$HEADING['ADD_USER'] = 'Kullan&yacute;c&yacute; Ekle';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administration Ara&ccedil;lar&yacute;';
+$HEADING['BROWSE_MEDIA'] = 'Resimleri Y&ouml;netme';
+$HEADING['CREATE_FOLDER'] = 'Dizin Yarat';
+$HEADING['DEFAULT_SETTINGS'] = 'Varsay&yacute;lan Ayarlar';
+$HEADING['DELETED_PAGES'] = 'Sayfay&yacute; Sil';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Dosya Sistemi Ayarlar&yacute;';
+$HEADING['GENERAL_SETTINGS'] = 'Genel Ayarlar';
+$HEADING['INSTALL_LANGUAGE'] = 'Dil Y&uuml;kle';
+$HEADING['INSTALL_MODULE'] = 'Mod&uuml;l Y&uuml;kle';
+$HEADING['INSTALL_TEMPLATE'] = 'Kal&yacute;p Y&uuml;kle';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Dil A&ccedil;&yacute;klamas&yacute;';
+$HEADING['MANAGE_SECTIONS'] = 'K&yacute;s&yacute;mlar&yacute; Y&ouml;net';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Geli&thorn;tirilmi&thorn; Sayfa Ayarlar&yacute;n&yacute; De&eth;i&thorn;tir';
+$HEADING['MODIFY_DELETE_GROUP'] = 'De&eth;i&thorn;tir/Sil Grup';
+$HEADING['MODIFY_DELETE_PAGE'] = 'De&eth;i&thorn;tir/Sil Sayfa';
+$HEADING['MODIFY_DELETE_USER'] = 'De&eth;i&thorn;tir/Sil kullan&yacute;c&yacute;';
+$HEADING['MODIFY_GROUP'] = 'Grup D&uuml;zenle';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Ba&thorn;lang&yacute;&ccedil; Sayfas&yacute;n&yacute; D&uuml;zenle';
+$HEADING['MODIFY_PAGE'] = 'Sayfay&yacute; De&eth;i&thorn;tir';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Sayfa Ayarlar&yacute;n&yacute; De&eth;i&thorn;tir';
+$HEADING['MODIFY_USER'] = 'Kullan&yacute;c&yacute; D&uuml;zenle';
+$HEADING['MODULE_DETAILS'] = 'Mod&uuml;l A&ccedil;&yacute;klamas&yacute;';
+$HEADING['MY_EMAIL'] = 'Emailim';
+$HEADING['MY_PASSWORD'] = '&THORN;ifrem';
+$HEADING['MY_SETTINGS'] = 'Ayarlar&yacute;m';
+$HEADING['SEARCH_SETTINGS'] = 'Arama Ayarlar&yacute;';
+$HEADING['SERVER_SETTINGS'] = 'Server Ayarlar&yacute;';
+$HEADING['TEMPLATE_DETAILS'] = 'Kal&yacute;p A&ccedil;&yacute;klamas&yacute;';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Dil Kald&yacute;r';
+$HEADING['UNINSTALL_MODULE'] = 'Mod&uuml;l Kald&yacute;r';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Kal&yacute;p Kald&yacute;r';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Dosya Y&uuml;kle';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Insufficient privelliges to be here';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Paralonuzu 1 saat aral&yacute;klarla de&eth;i&thorn;tirebilirsiniz.';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Uygunsuz email &thorn;ifresi, L&uuml;tfen Y&ouml;netici ile Kontak kurun';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Bu email adresi veritaban&yacute;nda bulunamad&yacute;';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'L&uuml;tfen email adresini girin';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = '&Uuml;zg&uuml;n&uuml;m, bu sayfay&yacute; g&ouml;r&uuml;nt&uuml;lemeye yetkiniz yok';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Daha &ouml;nce y&uuml;klenmi&thorn;ti';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Uygunsuz, hedef dizin yaz&yacute;lam&yacute;yor';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Kald&yacute;r&yacute;lam&yacute;yor';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Kald&yacute;rama: Se&ccedil;ilen dosya, kullan&yacute;mdad&yacute;r';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Dosya unzip edilemiyor';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Dosya Y&uuml;klenemiyor';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Dosya a&ccedil;arken hata.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Y&uuml;kledi&eth;in dosyan&yacute;n izin verilen dosya olmas&yacute;na dikkat edin:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Y&uuml;kledi&eth;in dosyalar&yacute;n izin verilen dosya olmas&yacute;na dikkat edin:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'L&uuml;tfen geri d&ouml;n&uuml;p b&uuml;t&uuml;n alanlar&yacute; doldurunuz';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde yerle&thorn;tirildi';
+$MESSAGE['GENERIC_INVALID'] = 'Senin y&uuml;kledi&eth;in dosya, ge&ccedil;ersizdir';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Y&uuml;klenemiyor';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Ol hasta memnun et, bu, bir anda alabilirdi.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'L&uuml;tfen daha sonra kontrol edin...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kald&yacute;r&yacute;ld&yacute;';
+$MESSAGE['GENERIC_UPGRADED'] = 'G&uuml;ncelleme ba&thorn;ar&yacute;l&yacute; bir&thorn;ekilde yap&yacute;ld&yacute;';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GROUPS_ADDED'] = 'Grup, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde ekledi';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Se&ccedil;ti&eth;iniz grubu silmek istedi&eth;inizden eminmisiniz? (ve bu gruba ekli kullan&yacute;c&yacute;lar&yacute;)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grup, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde silindi';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Grup ad&yacute; bo&thorn;';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Bu grup ad&yacute; zaten var';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Hi&ccedil;bir grup bulmad&yacute;';
+$MESSAGE['GROUPS_SAVED'] = 'Grup, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'L&uuml;tfen &thorn;ifre girin';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = '&THORN;ifreniz &ccedil;ok uzun';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = '&THORN;ifreniz &ccedil;ok k&yacute;sa';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Mutlaka bir uzant&yacute; girmelisinz';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Mutlaka bir isim girmelisiniz';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Se&ccedil;ti&eth;iniz dizin silinemiyor';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Se&ccedil;ti&eth;iniz dosya silinemiyor';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Yeni isim ver ba&thorn;ar&yacute;s&yacute;z';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Dosya ve dizinleri silmek istedi&eth;inizden eminmisiniz?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Dizin, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde silindi';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Dosya, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde silindi';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Giremezsiniz ../ i&ccedil;indeki dizin ad&yacute;';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Girmi&thorn; oldu&eth;unuz dizin zaten var';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Dizin, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde yaratt&yacute;';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Dizin yaratma ba&thorn;ar&yacute;s&yacute;z';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Girmi&thorn; oldu&eth;unuz dosya zaten var';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Dosya Bulunamad&yacute;';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Giremezsiniz ../ ismine';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'index.php isimini kullanamazs&yacute;n&yacute;z';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'No media found in the current folder';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Yeni isim ver ba&thorn;ar&yacute;l&yacute;.';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' Dosya ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde y&uuml;klendi';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Cannot have ../ in the folder target';
+$MESSAGE['MEDIA_UPLOADED'] = ' Dosyalar ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde y&uuml;klendi';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Sorry, this form has been submitted too many times so far this hour. Please retry in the next hour.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'You must enter details for the following fields';
+$MESSAGE['PAGES_ADDED'] = 'Sayfa, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde ekledi';
+$MESSAGE['PAGES_ADDED_HEADING'] = '&Uuml;st sayfa, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde ekledi';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'L&uuml;tfen men&uuml; ba&thorn;l&yacute;&eth;&yacute;n&yacute; girin';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'L&uuml;tfen sayfa ba&thorn;l&yacute;&eth;&yacute;n&yacute; girin';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Yarat&yacute;rken hatal&yacute; giri&thorn; /pages dizini i&ccedil;in (Yetersiz yetki)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Silinirken hatal&yacute; giri&thorn; /pages dizini i&ccedil;in (Yetersiz yetki)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Yenilenen sayfada hata var';
+$MESSAGE['PAGES_DELETED'] = 'Sayfa, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde silindi';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Se&ccedil;ti&eth;iniz sayfay&yacute; silmek istedi&eth;inizden eminmisiniz (B&uuml;t&uuml;n alt sayfalar silinecektir)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Sizin bu sayfay&yacute; de&eth;i&thorn;tirme izininiz yok';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Buraya t&yacute;klayarak Giri&thorn; Sayfas&yacute;n&yacute; D&uuml;zenleye Bilirsiniz.';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Dosyaya yaz&yacute;lam&yacute;yor /pages/intro.php (Yetersiz yetki)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Giri&thorn; sayfas&yacute; ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Son de&eth;i&thorn;iklik yapan';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Sayfa bulunamad&yacute;';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Kay&yacute;t edilen sayfa hatal&yacute;';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Bu sayfa veya dosya zaten var.';
+$MESSAGE['PAGES_REORDERED'] = 'Ba&thorn;ar&yacute;l&yacute; bi&ccedil;imde yenilendi';
+$MESSAGE['PAGES_RESTORED'] = 'Sayfa, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kurtar&yacute;ld&yacute;';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Sayfaya Git';
+$MESSAGE['PAGES_SAVED'] = 'Sayfa, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Sayfa ayarlar&yacute; ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Section properties saved successfully';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Girdi&eth;iniz &thorn;ifre yanl&yacute;&thorn;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Ayr&yacute;nt&yacute;lar, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde g&uuml;ncelle&thorn;tirdi';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Parola, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde de&eth;i&thorn;tirdi';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Not Edin: Bu buton b&uuml;t&uuml;n de&eth;i&thorn;iklikleri ilk haline geri getirir';
+$MESSAGE['SETTINGS_SAVED'] = 'Ayarlar ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Unable to open the configuration file';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Cannot write to configuration file';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Please note: this is only recommended for testing environments';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Bir email adresi girmelisiniz.';
+$MESSAGE['START_CURRENT_USER'] = 'Sizin kulland&yacute;&eth;&yacute;n&yacute;z giri&thorn; ismi:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Uyar&yacute;! Y&uuml;kleme dizini halen duruyor!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Ho&thorn;geldiniz WebsiteBaker Y&ouml;netimine';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Please note: to change the template you must go to the Settings section';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Kullan&yacute;c&yacute;, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde ekledi';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Not Edin: Sen sadece yukar&yacute;daki alanlara de&eth;erleri gir. E&eth;er bu kullan&yacute;c&yacute;lar&yacute; dile de&eth;i&thorn;tirseydin.';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Se&ccedil;ti&eth;iniz kullan&yacute;c&yacute;lar&yacute; silmek istedi&eth;inizden eminmisiniz?';
+$MESSAGE['USERS_DELETED'] = 'Kullan&yacute;c&yacute;, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde silindi';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Girdi&eth;iniz email ba&thorn;kas&yacute; taraf&yacute;ndan kullan&yacute;l&yacute;yor';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Girdi&eth;iniz email adresi ge&ccedil;ersiz';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Hi&ccedil;bir grup se&ccedil;ilmedi';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Girdi&eth;iniz &thorn;ifre bulunamad&yacute;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Girdi&eth;iniz &thorn;ifre k&yacute;sa';
+$MESSAGE['USERS_SAVED'] = 'Kullan&yacute;c&yacute;, ba&thorn;ar&yacute;l&yacute; bir &thorn;ekilde kay&yacute;t edildi';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Kullan&yacute;c&yacute; Gruplar&yacute;n&yacute;n &Yacute;zinlerini D&uuml;zenleme...';
+$OVERVIEW['HELP'] = 'Sorular&yacute;n&yacute;z? Cevaplar&yacute;...';
+$OVERVIEW['LANGUAGES'] = 'WebsiteBaker Dilleri D&uuml;zenleme...';
+$OVERVIEW['MEDIA'] = 'Resim Deposundaki Dosyalar&yacute; Y&ouml;netme...';
+$OVERVIEW['MODULES'] = 'WebsiteBaker Mod&uuml;llerini Y&ouml;netme...';
+$OVERVIEW['PAGES'] = 'Website Sayfalar&yacute;n&yacute; Y&ouml;netme...';
+$OVERVIEW['PREFERENCES'] = 'Email, &THORN;ifre gibi ayarlar&yacute; d&uuml;zenleme... ';
+$OVERVIEW['SETTINGS'] = 'WebsiteBaker i&ccedil;in ayarlar&yacute; d&uuml;zenleme...';
+$OVERVIEW['START'] = 'Y&ouml;netici G&ouml;r&uuml;n&uuml;m&uuml;';
+$OVERVIEW['TEMPLATES'] = 'Websitenizdeki Kal&yacute;plar&yacute; De&eth;i&thorn;tirme Ve D&uuml;zenleme...';
+$OVERVIEW['USERS'] = 'WebsiteBaker kullan&yacute;c&yacute;lar&yacute;n&yacute; d&uuml;zenleme...';
+$OVERVIEW['VIEW'] = 'Yeni bir pencerede sitenizin &ouml;ng&ouml;r&uuml;n&uuml;m&uuml;...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/TR.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/DE.php
===================================================================
--- tags/2.8.3/wb/languages/DE.php	(nonexistent)
+++ tags/2.8.3/wb/languages/DE.php	(revision 1610)
@@ -0,0 +1,679 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.website baker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED'))
+{
+	define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'DE';
+$language_name = 'Deutsch';
+$language_version = '3.0';
+$language_platform = '2.9';
+$language_author = 'Stefan Braunewell, Matthias Gallas';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Benutzerverwaltung';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Erweiterungen';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'Sie sind hier: ';
+$MENU['FORGOT'] = 'Anmelde-Details anfordern';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Gruppen';
+$MENU['HELP'] = 'Hilfe';
+$MENU['LANGUAGES'] = 'Sprachen';
+$MENU['LOGIN'] = 'Anmeldung';
+$MENU['LOGOUT'] = 'Abmelden';
+$MENU['MEDIA'] = 'Medien';
+$MENU['MODULES'] = 'Module';
+$MENU['PAGES'] = 'Seiten';
+$MENU['PREFERENCES'] = 'Einstellungen';
+$MENU['SETTINGS'] = 'Optionen';
+$MENU['START'] = 'Start';
+$MENU['TEMPLATES'] = 'Designvorlagen';
+$MENU['USERS'] = 'Benutzer';
+$MENU['VIEW'] = 'Ansicht';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registrierung';
+$TEXT['ACTIONS'] = 'Aktionen';
+$TEXT['ACTIVE'] = 'Aktiv';
+$TEXT['ADD'] = 'Hinzuf&uuml;gen';
+$TEXT['ADDON'] = 'Addon';
+$TEXT['ADD_SECTION'] = 'Abschnitt hinzuf&uuml;gen';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Verwaltung';
+$TEXT['ADMINISTRATION_TOOL'] = 'Verwaltungsprogramme';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratoren';
+$TEXT['ADVANCED'] = 'Erweitert';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Erlaubte Dateitypen f&uuml;r Hochladen';
+$TEXT['ALLOWED_VIEWERS'] = 'genehmigter Besucher';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Mehrfachauswahl';
+$TEXT['ALL_WORDS'] = 'Alle W&ouml;rter';
+$TEXT['ANCHOR'] = 'Anker';
+$TEXT['ANONYMOUS'] = 'Anonym';
+$TEXT['ANY_WORDS'] = 'Einzelne W&ouml;rter';
+$TEXT['APP_NAME'] = 'Verwaltungswerkzeuge';
+$TEXT['ARE_YOU_SURE'] = 'Sind Sie sicher?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Zur&uuml;ck';
+$TEXT['BACKUP'] = 'Sichern';
+$TEXT['BACKUP_ALL_TABLES'] = 'komplette Datenbank sichern';
+$TEXT['BACKUP_DATABASE'] = 'Datenbank sichern';
+$TEXT['BACKUP_MEDIA'] = 'Dateien sichern';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'nur WB Tabellen sichern';
+$TEXT['BASIC'] = 'Einfach';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Kalender';
+$TEXT['CANCEL'] = 'Abbrechen';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Kann sich selber l&ouml;schen';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Pr&uuml;fziffer';
+$TEXT['CAP_EDIT_CSS'] = 'Bearbeite CSS';
+$TEXT['CHANGE'] = '&Auml;ndern';
+$TEXT['CHANGES'] = '&Auml;nderungen';
+$TEXT['CHANGE_SETTINGS'] = 'Einstellungen &auml;ndern';
+$TEXT['CHARSET'] = 'Zeichensatz';
+$TEXT['CHECKBOX_GROUP'] = 'Kontrollk&auml;stchen';
+$TEXT['CLOSE'] = 'Schlie&szlig;en';
+$TEXT['CODE'] = 'Code';
+$TEXT['CODE_SNIPPET'] = 'Funktionserweiterung';
+$TEXT['COLLAPSE'] = 'Reduzieren';
+$TEXT['COMMENT'] = 'Kommentar';
+$TEXT['COMMENTING'] = 'kommentieren';
+$TEXT['COMMENTS'] = 'Kommentare';
+$TEXT['CREATE_FOLDER'] = 'Ordner anlegen';
+$TEXT['CURRENT'] = 'Aktuell';
+$TEXT['CURRENT_FOLDER'] = 'Aktueller Ordner';
+$TEXT['CURRENT_PAGE'] = 'Aktuelle Seite';
+$TEXT['CURRENT_PASSWORD'] = 'Bisheriges Passwort';
+$TEXT['CUSTOM'] = 'Benutzerdefiniert';
+$TEXT['DATABASE'] = 'Datenbank';
+$TEXT['DATE'] = 'Datum';
+$TEXT['DATE_FORMAT'] = 'Datumsformat';
+$TEXT['DEFAULT'] = 'Standard';
+$TEXT['DEFAULT_CHARSET'] = 'Standard Zeichensatz';
+$TEXT['DEFAULT_TEXT'] = 'Standardtext';
+$TEXT['DELETE'] = 'Entfernen';
+$TEXT['DELETED'] = 'Gel&ouml;scht';
+$TEXT['DELETE_DATE'] = 'Datum l&ouml;schen';
+$TEXT['DELETE_ZIP'] = 'Zip-Archiv nach dem entpacken l&ouml;schen';
+$TEXT['DESCRIPTION'] = 'Beschreibung';
+$TEXT['DESIGNED_FOR'] = 'Entworfen f&uuml;r';
+$TEXT['DIRECTORIES'] = 'Verzeichnisse';
+$TEXT['DIRECTORY_MODE'] = 'Verzeichnismodus';
+$TEXT['DISABLED'] = 'Ausgeschaltet';
+$TEXT['DISPLAY_NAME'] = 'Angezeigter Name';
+$TEXT['EMAIL'] = 'E-Mail';
+$TEXT['EMAIL_ADDRESS'] = 'E-Mail Adresse';
+$TEXT['EMPTY_TRASH'] = 'M&uuml;lleimer leeren';
+$TEXT['ENABLED'] = 'Eingeschaltet';
+$TEXT['END'] = 'Ende';
+$TEXT['ERROR'] = 'Fehler';
+$TEXT['EXACT_MATCH'] = 'Genaue Wortfolge';
+$TEXT['EXECUTE'] = 'Ausf&uuml;hren';
+$TEXT['EXPAND'] = 'Erweitern';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Feld';
+$TEXT['FILE'] = 'Datei';
+$TEXT['FILES'] = 'Dateien';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Zugriffsrechte';
+$TEXT['FILE_MODE'] = 'Dateimodus';
+$TEXT['FINISH_PUBLISHING'] = 'Ende der Ver&ouml;ffentlichung';
+$TEXT['FOLDER'] = 'Ordner';
+$TEXT['FOLDERS'] = 'Ordner';
+$TEXT['FOOTER'] = 'Fu&szlig;zeile';
+$TEXT['FORGOTTEN_DETAILS'] = 'Haben Sie Ihre pers&ouml;nlichen Daten vergessen?';
+$TEXT['FORGOT_DETAILS'] = 'Haben Sie Ihre pers&ouml;nlichen Daten vergessen?';
+$TEXT['FROM'] = 'von';
+$TEXT['FRONTEND'] = 'Frontend';
+$TEXT['FULL_NAME'] = 'Voller Name';
+$TEXT['FUNCTION'] = 'Funktion';
+$TEXT['GROUP'] = 'Gruppe';
+$TEXT['HEADER'] = 'Kopfzeile';
+$TEXT['HEADING'] = '&Uuml;berschrift';
+$TEXT['HEADING_CSS_FILE'] = 'Aktuelle Moduldatei: ';
+$TEXT['HEIGHT'] = 'H&ouml;he';
+$TEXT['HIDDEN'] = 'Versteckt';
+$TEXT['HIDE'] = 'verstecken';
+$TEXT['HIDE_ADVANCED'] = 'Erweiterte Optionen verdecken';
+$TEXT['HOME'] = 'Home';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'URL Umleitung zur Homepage';
+$TEXT['HOME_FOLDER'] = 'Pers&ouml;nlicher Ordner';
+$TEXT['HOME_FOLDERS'] = 'Pers&ouml;nliche Ordner';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Symbol';
+$TEXT['IMAGE'] = 'Bild';
+$TEXT['INLINE'] = 'Integriert';
+$TEXT['INSTALL'] = 'Installieren';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['INSTALLATION_PATH'] = 'Installationspfad';
+$TEXT['INSTALLATION_URL'] = 'Installationsadresse(URL)';
+$TEXT['INSTALLED'] = 'installiert';
+$TEXT['INTRO'] = 'Eingangs';
+$TEXT['INTRO_PAGE'] = 'Eingangsseite';
+$TEXT['INVALID_SIGNS'] = 'muss mit einem Buchstaben beginnen oder hat ung&uuml;ltige Zeichen';
+$TEXT['KEYWORDS'] = 'Schl&uuml;sselw&ouml;rter';
+$TEXT['LANGUAGE'] = 'Sprache';
+$TEXT['LAST_UPDATED_BY'] = 'zuletzt ge&auml;ndert von';
+$TEXT['LENGTH'] = 'L&auml;nge';
+$TEXT['LEVEL'] = 'Ebene';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix basierend';
+$TEXT['LIST_OPTIONS'] = 'Auswahlliste';
+$TEXT['LOGGED_IN'] = 'Angemeldet';
+$TEXT['LOGIN'] = 'Anmeldung';
+$TEXT['LONG'] = 'Lang';
+$TEXT['LONG_TEXT'] = 'Langtext';
+$TEXT['LOOP'] = 'Schleife';
+$TEXT['MAIN'] = 'Hauptblock';
+$TEXT['MAINTENANCE_OFF'] = 'Wartung aus';
+$TEXT['MAINTENANCE_ON'] = 'Wartung an';
+$TEXT['MANAGE'] = 'Manage';
+$TEXT['MANAGE_GROUPS'] = 'Gruppen verwalten';
+$TEXT['MANAGE_USERS'] = 'Benutzer verwalten';
+$TEXT['MATCH'] = '&Uuml;bereinstimmung';
+$TEXT['MATCHING'] = 'passende';
+$TEXT['MAX_EXCERPT'] = 'Max Anzahl Zitate pro Seite';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Eintragungen pro Stunde';
+$TEXT['MEDIA_DIRECTORY'] = 'Medienverzeichnis';
+$TEXT['MENU'] = 'Men&uuml;';
+$TEXT['MENU_ICON_0'] = 'Men&uuml;-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Men&uuml;-Icon hover';
+$TEXT['MENU_TITLE'] = 'Men&uuml;titel';
+$TEXT['MESSAGE'] = 'Nachricht';
+$TEXT['MODIFY'] = '&Auml;ndern';
+$TEXT['MODIFY_CONTENT'] = 'Inhalt &auml;ndern';
+$TEXT['MODIFY_SETTINGS'] = 'Optionen &auml;ndern';
+$TEXT['MODULE_ORDER'] = 'Modulreihenfolge f&uuml;r die Suche';
+$TEXT['MODULE_PERMISSIONS'] = 'Modulberechtigungen';
+$TEXT['MORE'] = 'Mehr';
+$TEXT['MOVE_DOWN'] = 'Abw&auml;rts verschieben';
+$TEXT['MOVE_UP'] = 'Aufw&auml;rts verschieben';
+$TEXT['MULTIPLE_MENUS'] = 'Mehrere Men&uuml;s';
+$TEXT['MULTISELECT'] = 'Mehrfachauswahl';
+$TEXT['NAME'] = 'Name';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'mit aktuellem Passwort best&auml;tigen';
+$TEXT['NEED_TO_LOGIN'] = 'M&uuml;ssen Sie sich einloggen?';
+$TEXT['NEW_PASSWORD'] = 'Neues Passwort';
+$TEXT['NEW_WINDOW'] = 'Neues Fenster';
+$TEXT['NEXT'] = 'n&auml;chste';
+$TEXT['NEXT_PAGE'] = 'n&auml;chste Seite';
+$TEXT['NO'] = 'Nein';
+$TEXT['NONE'] = 'Keine';
+$TEXT['NONE_FOUND'] = 'Keine gefunden';
+$TEXT['NOT_FOUND'] = 'Nicht gefunden';
+$TEXT['NOT_INSTALLED'] = 'nicht installiert';
+$TEXT['NO_IMAGE_SELECTED'] = 'Kein Bild ausgew&auml;hlt';
+$TEXT['NO_RESULTS'] = 'Keine Ergebnisse';
+$TEXT['OF'] = 'von';
+$TEXT['ON'] = 'Am';
+$TEXT['OPEN'] = '&Ouml;ffnen';
+$TEXT['OPTION'] = 'Option';
+$TEXT['OTHERS'] = 'Alle';
+$TEXT['OUT_OF'] = 'von';
+$TEXT['OVERWRITE_EXISTING'] = '&Uuml;berschreibe bestehende';
+$TEXT['PAGE'] = 'Seite';
+$TEXT['PAGES_DIRECTORY'] = 'Seitenverzeichnis';
+$TEXT['PAGES_PERMISSION'] = 'Seitenberechtigung';
+$TEXT['PAGES_PERMISSIONS'] = 'Seitenerechtigungen';
+$TEXT['PAGE_EXTENSION'] = 'Dateiendungen';
+$TEXT['PAGE_ICON'] = 'Seitenbild';
+$TEXT['PAGE_ICON_DIR'] = 'Verzeichnis f&uuml;r Seiten-/Menuebilder';
+$TEXT['PAGE_LANGUAGES'] = 'Seitensprache';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limit der Seitenebenen';
+$TEXT['PAGE_SPACER'] = 'Leerzeichen';
+$TEXT['PAGE_TITLE'] = 'Seitentitel';
+$TEXT['PAGE_TRASH'] = 'Seiten M&uuml;lleimer';
+$TEXT['PARENT'] = '&Uuml;bergeordnete Datei';
+$TEXT['PASSWORD'] = 'Passwort';
+$TEXT['PATH'] = 'Pfad';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Fehlerberichte';
+$TEXT['PLEASE_LOGIN'] = 'Bitte anmelden';
+$TEXT['PLEASE_SELECT'] = 'Bitte ausw&auml;hlen';
+$TEXT['POST'] = 'Beitrag';
+$TEXT['POSTS_PER_PAGE'] = 'Nachrichten pro Seite';
+$TEXT['POST_FOOTER'] = 'Nachricht Fu&szlig;zeile';
+$TEXT['POST_HEADER'] = 'Nachricht Kopfzeile';
+$TEXT['PREVIOUS'] = 'vorherige';
+$TEXT['PREVIOUS_PAGE'] = 'vorherige Seite';
+$TEXT['PRIVATE'] = 'Privat';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Nutzer';
+$TEXT['PROFILES_EDIT'] = 'Profil &auml;ndern';
+$TEXT['PUBLIC'] = '&Ouml;ffentlich';
+$TEXT['PUBL_END_DATE'] = 'End Datum';
+$TEXT['PUBL_START_DATE'] = 'Start Datum';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Optionsfeld';
+$TEXT['READ'] = 'Lesen';
+$TEXT['READ_MORE'] = 'Weiterlesen';
+$TEXT['REDIRECT_AFTER'] = 'Weiterleitung nach';
+$TEXT['REGISTERED'] = 'registriert';
+$TEXT['REGISTERED_VIEWERS'] = 'registrierter Besucher';
+$TEXT['RELOAD'] = 'Neu laden';
+$TEXT['REMEMBER_ME'] = 'Passwort speichern';
+$TEXT['RENAME'] = 'Umbenennen';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'Diese Dateitypen nicht hochladen';
+$TEXT['REQUIRED'] = 'Erforderlich';
+$TEXT['REQUIREMENT'] = 'Voraussetzung';
+$TEXT['RESET'] = 'Zur&uuml;cksetzen';
+$TEXT['RESIZE'] = 'Gr&ouml;&szlig;e &auml;ndern';
+$TEXT['RESIZE_IMAGE_TO'] = 'Bildgr&ouml;&szlig;e ver&auml;ndern auf';
+$TEXT['RESTORE'] = 'Wiederherstellen';
+$TEXT['RESTORE_DATABASE'] = 'Datenbank wiederherstellen';
+$TEXT['RESTORE_MEDIA'] = 'Dateien wiederherstellen';
+$TEXT['RESULTS'] = 'Resultate';
+$TEXT['RESULTS_FOOTER'] = 'Ergebnisse Fu&szlig;zeile';
+$TEXT['RESULTS_FOR'] = 'Ergebnisse f&uuml;r';
+$TEXT['RESULTS_HEADER'] = 'Ergebnisse &Uuml;berschrift';
+$TEXT['RESULTS_LOOP'] = 'Ergebnisse Schleife';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Neues Passwort wiederholen';
+$TEXT['RETYPE_PASSWORD'] = 'Geben Sie bitte Ihr Passwort nochmal ein';
+$TEXT['SAME_WINDOW'] = 'Gleiches Fenster';
+$TEXT['SAVE'] = 'Speichern';
+$TEXT['SEARCH'] = 'Suche';
+$TEXT['SEARCHING'] = 'suchen';
+$TEXT['SECTION'] = 'Abschnitt';
+$TEXT['SECTION_BLOCKS'] = 'Bl&ouml;cke';
+$TEXT['SEC_ANCHOR'] = 'Abschnitts-Anker Text';
+$TEXT['SELECT_BOX'] = 'Auswahlliste';
+$TEXT['SEND_DETAILS'] = 'Anmeldedaten senden';
+$TEXT['SEPARATE'] = 'Separat';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'Server E-Mail';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server Betriebssystem';
+$TEXT['SESSION_IDENTIFIER'] = 'Sitzungs ID';
+$TEXT['SETTINGS'] = 'Optionen';
+$TEXT['SHORT'] = 'Kurz';
+$TEXT['SHORT_TEXT'] = 'Kurztext';
+$TEXT['SHOW'] = 'zeigen';
+$TEXT['SHOW_ADVANCED'] = 'Erweiterte Optionen anzeigen';
+$TEXT['SIGNUP'] = 'Registrierung';
+$TEXT['SIZE'] = 'Gr&ouml;&szlig;e';
+$TEXT['SMART_LOGIN'] = 'Intelligente Anmeldung';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Beginn der Ver&ouml;ffentlichung';
+$TEXT['SUBJECT'] = 'Betreff';
+$TEXT['SUBMISSIONS'] = 'Eintragungen';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Max. gespeicherte Eintragungen';
+$TEXT['SUBMISSION_ID'] = 'Eintragungs-ID';
+$TEXT['SUBMITTED'] = 'eingetragen';
+$TEXT['SUCCESS'] = 'Erfolgreich';
+$TEXT['SYSTEM_DEFAULT'] = 'Standardeinstellung';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Zugangsberechtigungen';
+$TEXT['TABLE_PREFIX'] = 'TabellenPr&auml;fix';
+$TEXT['TARGET'] = 'Ziel';
+$TEXT['TARGET_FOLDER'] = 'Zielordner';
+$TEXT['TEMPLATE'] = 'Template';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Zugriffsrechte f&uuml;r Vorlagen';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = 'Langtext';
+$TEXT['TEXTFIELD'] = 'Kurztext';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Zeit';
+$TEXT['TIMEZONE'] = 'Zeitzone';
+$TEXT['TIME_FORMAT'] = 'Zeitformat';
+$TEXT['TIME_LIMIT'] = 'Zeitlimit zur Erstellung der Zitate pro Modul';
+$TEXT['TITLE'] = 'Titel';
+$TEXT['TO'] = 'an';
+$TEXT['TOP_FRAME'] = 'Frameset sprengen';
+$TEXT['TRASH_EMPTIED'] = 'M&uuml;lleimer geleert';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Bearbeite die CSS Definitionen im nachfolgenden Textfeld.';
+$TEXT['TYPE'] = 'Art';
+$TEXT['UNDER_CONSTRUCTION'] = 'In Bearbeitung';
+$TEXT['UNINSTALL'] = 'Deinstallieren';
+$TEXT['UNKNOWN'] = 'Unbekannt';
+$TEXT['UNLIMITED'] = 'Unbegrenzt';
+$TEXT['UNZIP_FILE'] = 'Zip-Archiv hochladen und entpacken';
+$TEXT['UP'] = 'Aufw&auml;rts';
+$TEXT['UPGRADE'] = 'Aktualisieren';
+$TEXT['UPLOAD_FILES'] = 'Datei(en) &uuml;bertragen';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Benutzer';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'Benutzer ist aktiv';
+$TEXT['USERS_CAN_SELFDELETE'] = 'Selbstl&ouml;schung m&ouml;glich';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'Benutzer kann eigene Einstellungen &auml;ndern';
+$TEXT['USERS_DELETED'] = 'Benutzer ist als gel&ouml;scht markiert';
+$TEXT['USERS_FLAGS'] = 'Benutzerflags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'Benutzer kann erweitertes Profil anlegen';
+$TEXT['VERIFICATION'] = 'Pr&uuml;fziffer';
+$TEXT['VERSION'] = 'Version';
+$TEXT['VIEW'] = 'Ansicht';
+$TEXT['VIEW_DELETED_PAGES'] = 'gel&ouml;schte Seiten anschauen';
+$TEXT['VIEW_DETAILS'] = 'Details';
+$TEXT['VISIBILITY'] = 'Sichtbarkeit';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Standard "VON" Adresse';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Standard Absender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Bitte geben Sie eine Standard "VON" Adresse und einen Sendernamen an. Als Absender Adresse empfiehlt sich ein Format wie: <strong>admin@IhreWebseite.de</strong>. Manche E-Mail Provider (z.B. <em>mail.de</em>) stellen keine E-Mails zu, die nicht &uuml;ber den Provider selbst verschickt wurden, in der Absender Adresse aber den Namen des E-Mail Providers <em>name@mail.de</em> enthalten. Die Standard Werte werden nur verwendet, wenn keine anderen Werte von WebsiteBaker gesetzt wurden. Wenn Ihr Service Provider <acronym title="Simple Mail Transfer Protocol">SMTP</acronym> anbietet, sollten Sie diese Option f&uuml;r ausgehende E-Mails verwenden.';
+$TEXT['WBMAILER_FUNCTION'] = 'E-Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Maileinstellungen:</strong><br />Die nachfolgenden Einstellungen m&uuml;ssen nur angepasst werden, wenn Sie E-Mail &uuml;ber <acronym title="Simple Mail Transfer Protocol">SMTP</acronym> verschicken wollen. Wenn Sie Ihren SMTP Server nicht kennen, oder Sie sich unsicher bei den Einstellungen sind, verwenden Sie einfach die Standard E-Mail Routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentifikation';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'nur aktivieren, wenn SMTP Authentifikation ben&ouml;tigt wird';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Passwort';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Webseite';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Webseitenbeschreibung';
+$TEXT['WEBSITE_FOOTER'] = 'Fu&szlig;zeile';
+$TEXT['WEBSITE_HEADER'] = 'Kopfzeile';
+$TEXT['WEBSITE_KEYWORDS'] = 'Schl&uuml;sselw&ouml;rter';
+$TEXT['WEBSITE_TITLE'] = 'Webseitentitel';
+$TEXT['WELCOME_BACK'] = 'Willkommen zur&uuml;ck';
+$TEXT['WIDTH'] = 'Breite';
+$TEXT['WINDOW'] = 'Fenster';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Einstellungen f&uuml;r Schreibrechte';
+$TEXT['WRITE'] = 'Schreiben';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Stil';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On Voraussetzungen nicht erf&uuml;llt';
+$HEADING['ADD_CHILD_PAGE'] = 'Unterseite hinzuf&uuml;gen';
+$HEADING['ADD_GROUP'] = 'Gruppe hinzuf&uuml;gen';
+$HEADING['ADD_GROUPS'] = 'Gruppen hinzuf&uuml;gen';
+$HEADING['ADD_HEADING'] = 'Kopf hinzuf&uuml;gen';
+$HEADING['ADD_PAGE'] = 'Seite hinzuf&uuml;gen';
+$HEADING['ADD_USER'] = 'Benutzer hinzuf&uuml;gen';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Verwaltungsprogramme';
+$HEADING['BROWSE_MEDIA'] = 'Medien durchsuchen';
+$HEADING['CREATE_FOLDER'] = 'Ordner erstellen';
+$HEADING['DEFAULT_SETTINGS'] = 'Standardeinstellungen';
+$HEADING['DELETED_PAGES'] = 'gel&ouml;schte Seiten';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Dateisystemoptionen';
+$HEADING['GENERAL_SETTINGS'] = 'Allgemeine Optionen';
+$HEADING['INSTALL_LANGUAGE'] = 'Sprache hinzuf&uuml;gen';
+$HEADING['INSTALL_MODULE'] = 'Modul installieren';
+$HEADING['INSTALL_TEMPLATE'] = 'Designvorlage installieren';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Sprachdateien manuell ausf&uuml;hren';
+$HEADING['INVOKE_MODULE_FILES'] = 'Moduldateien manuell ausf&uuml;hren';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Templatedateien manuell ausf&uuml;hren';
+$HEADING['LANGUAGE_DETAILS'] = 'Details zur Sprache';
+$HEADING['MANAGE_SECTIONS'] = 'Abschnitte verwalten';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Erweiterte Seitenoptionen &auml;ndern';
+$HEADING['MODIFY_DELETE_GROUP'] = '&Auml;ndern/L&ouml;schen von Gruppen';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Seite &auml;ndern/Seite l&ouml;schen';
+$HEADING['MODIFY_DELETE_USER'] = '&Auml;ndern/L&ouml;schen von Benutzern';
+$HEADING['MODIFY_GROUP'] = 'Gruppe &auml;ndern';
+$HEADING['MODIFY_GROUPS'] = 'Gruppen &auml;ndern';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Eingangsseite &auml;ndern';
+$HEADING['MODIFY_PAGE'] = 'Seite &auml;ndern';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Seitenoptionen &auml;ndern';
+$HEADING['MODIFY_USER'] = 'Benutzer &auml;ndern';
+$HEADING['MODULE_DETAILS'] = 'Details zum Modul';
+$HEADING['MY_EMAIL'] = 'E-Mail Adresse';
+$HEADING['MY_PASSWORD'] = 'Passwort';
+$HEADING['MY_SETTINGS'] = 'Einstellungen';
+$HEADING['SEARCH_SETTINGS'] = 'Suchoptionen';
+$HEADING['SERVER_SETTINGS'] = 'Servereinstellungen';
+$HEADING['TEMPLATE_DETAILS'] = 'Details zur Designvorlage';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Sprache l&ouml;schen';
+$HEADING['UNINSTALL_MODULE'] = 'Modul deinstallieren';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Designvorlage deinstallieren';
+$HEADING['UPGRADE_LANGUAGE'] = 'Sprache registrieren/aktualisieren (Upgrade)';
+$HEADING['UPLOAD_FILES'] = 'Datei(en) &uuml;bertragen';
+$HEADING['WBMAILER_SETTINGS'] = 'Maileinstellungen';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Fehler beim Abgleich der Addon Informationen.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Sprachen erfolgreich geladen';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ACHTUNG!</strong> &Uuml;berspielen Sie Sprachdateien aus Sicherheitsgr&uuml;nden nur &uuml;ber FTP in den Ordner /languages/ und benutzen die Upgrade Funktion zum Registrieren oder Aktualisieren.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warnung: Eventuell vorhandene Datenbankeintr&auml;ge eines Moduls gehen verloren. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'Beim Hochladen oder L&ouml;schen von Modulen per FTP (nicht empfohlen), werden eventuell vorhandene Modulfunktionen <tt>install</tt>, <tt>upgrade</tt> oder <tt>uninstall</tt> nicht automatisch ausgef&uuml;hrt. Solche Module funktionieren daher meist nicht richtig, oder hinterlassen Datenbankeintr&auml;ge beim L&ouml;schen per FTP.<br /><br /> Nachfolgend k&ouml;nnen die Modulfunktionen von per FTP hochgeladenen Modulen manuell ausgef&uuml;hrt werden.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warnung: Eventuell vorhandene Datenbankeintr&auml;ge eines Moduls gehen verloren. Bitte nur bei Problemen mit per FTP hochgeladenen Modulen verwenden. ';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warnung: Eventuell vorhandene Datenbankeintr&auml;ge eines Moduls gehen verloren. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Module erfolgreich geladen';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = '&Uuml;berschreibe neuere Dateien';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Installation fehlgeschlagen. Ihr System erf&uuml;llt nicht alle Voraussetzungen die f&uuml;r diese Erweiterung ben&ouml;tigt werden. Um diese Erweiterung nutzen zu k&ouml;nnen, m&uuml;ssen nachfolgende Updates durchgef&uuml;hrt werden.';
+$MESSAGE['ADDON_RELOAD'] = 'Abgleich der Datenbank mit den Informationen aus den Addon-Dateien (z.B. nach FTP Upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Designvorlagen erfolgreich geladen';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Ungen&uuml;gende Zugangsberechtigungen';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Das Passwort kann nur einmal pro Stunde zur&uuml;ckgesetzt werden';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Das Passwort konnte nicht versendet werden, bitte kontaktieren Sie den Systemadministrator';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Die angegebene E-Mail Adresse wurde nicht in der Datenbank gefunden';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Bitte geben Sie nachfolgend Ihre E-Mail Adresse an';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Ihr Loginname und Ihr Passwort wurden an Ihre E-Mail Adresse gesendet';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Kein aktiver Inhalt auf dieser Seite vorhanden';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Sie sind nicht berechtigt, diese Seite zu sehen';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Bereits installiert';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kann im Zielverzeichnis nicht schreiben';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Bitte haben Sie etwas Geduld.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Deinstallation fehlgeschlagen';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Deinstallation nicht m&ouml;glich: Datei wird benutzt';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = 'Das {{type}} <strong>{{type_name}}</strong> kann nicht deinstalliert werden, weil es auf {{pages}} benutzt wird:';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'folgender Seite;folgenden Seiten';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Das Template <strong>{{name}}</strong> kann nicht deinstalliert werden, weil es das Standardtemplate ist!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Das Template <strong>{{name}}</strong> kann nicht deinstalliert werden, weil es das Standardbackendtheme ist!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Fehler beim Entpacken';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Die Datei kann nicht &uuml;bertragen werden';
+$MESSAGE['GENERIC_COMPARE'] = ' erfolgreich';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Fehler beim &Ouml;ffnen der Datei.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' fehlgeschlagen';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Bitte beachten Sie, dass Sie nur den folgenden Dateityp ausw&auml;hlen k&ouml;nnen:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Bitte beachten Sie, dass Sie nur folgende Dateitypen ausw&auml;hlen k&ouml;nnen:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Bitte alle Felder ausf&uuml;llen';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'Sie haben keine Auswahl getroffen!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Erfolgreich installiert';
+$MESSAGE['GENERIC_INVALID'] = 'Die &uuml;bertragene Datei ist ung&uuml;ltig';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Ung&uuml;ltige WebsiteBaker Installationsdatei. Bitte *.zip Format pr&uuml;fen.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Ung&uuml;ltige WebsiteBaker Sprachdatei. Bitte Textdatei pr&uuml;fen.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Ung&uuml;ltige WebsiteBaker Moduledatei. Bitte Textdatei pr&uuml;fen.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Ung&uuml;ltige WebsiteBaker Templatedatei. Bitte Textdatei pr&uuml;fen.';
+$MESSAGE['GENERIC_IN_USE'] = ' aber benutzt in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Fehlende Archivdatei!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'Das Modul ist nicht ordnungsgem&auml;ss installiert!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' nicht m&ouml;glich';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nicht installiert';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Aktualisierung nicht m&ouml;glich';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Die Datenbanksicherung kann je nach Gr&ouml;&szlig;e der Datenbank einige Zeit dauern.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Bitte versuchen Sie es sp&auml;ter noch einmal ...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Sicherheitsverletzung!! Zugriff wurde verweigert!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Sicherheitsverletzung!! Das Speichern der Daten wurde verweigert!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Erfolgreich deinstalliert';
+$MESSAGE['GENERIC_UPGRADED'] = 'Erfolgreich aktualisiert';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Versionsabgleich';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade erforderlich!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'Diese Seite ist f&uuml;r Wartungsarbeiten vor&uuml;bergehend geschlossen';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Momentan in Bearbeitung';
+$MESSAGE['GROUPS_ADDED'] = 'Die Gruppe wurde erfolgreich hinzugef&uuml;gt';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Sind Sie sicher, dass Sie die ausgew&auml;hlte Gruppe l&ouml;schen m&ouml;chten (und alle Benutzer, die dazugeh&ouml;ren)?';
+$MESSAGE['GROUPS_DELETED'] = 'Die Gruppe wurde erfolgreich gel&ouml;scht';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Der Gruppenname wurde nicht angegeben';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Der Gruppenname existiert bereits';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Keine Gruppen gefunden';
+$MESSAGE['GROUPS_SAVED'] = 'Die Gruppe wurde erfolgreich gespeichert';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Der Loginname oder das Passwort ist nicht korrekt';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Bitte geben Sie unten Ihren Loginnamen und Passwort ein';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Bitte geben Sie Ihr Passwort ein';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Das angegebene Passwort ist zu lang';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Das angegebene Passwort ist zu kurz';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Bitte geben Sie Ihren Loginnamen ein';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Der angegebene Loginname ist zu lang';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Der angegebene Loginname ist zu kurz';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Sie haben keine Dateiendung angegeben';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Sie haben keinen neuen Namen angegeben';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Das ausgew&auml;hlte Verzeichnis konnte nicht gel&ouml;scht werden';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Die ausgew&auml;hlte Datei konnte nicht gel&ouml;scht werden';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Das Umbenennen war nicht erfolgreich';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Sind Sie sicher, dass Sie die folgende Datei oder Verzeichnis l&ouml;schen m&ouml;chten?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Das Verzeichnis wurde gel&ouml;scht';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Die Datei wurde gel&ouml;scht';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Verzeichnis existiert nicht oder Zugriff verweigert.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Verzeichnis existiert nicht';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Der Verzeichnisname darf nicht ../ enthalten';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Ein Verzeichnis mit dem angegebenen Namen existiert bereits';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Das Verzeichnis wurde erfolgreich angelegt';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Das Verzeichnis konnte nicht angelegt werden';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Eine Datei mit dem angegebenen Namen existiert bereits';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Die Datei konnte nicht gefunden werden';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Der Name darf nicht ../ enthalten';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Der Dateiname index.php kann nicht verwendet werden';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Im aktuellen Verzeichnis konnten keine Dateien (z.B. Bilder) gefunden werden';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'Es wurde keine Datei empfangen';
+$MESSAGE['MEDIA_RENAMED'] = 'Das Umbenennen war erfolgreich';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = 'Datei wurde erfolgreich &uuml;bertragen';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Der Name des Zielverzeichnisses darf nicht ../ enthalten';
+$MESSAGE['MEDIA_UPLOADED'] = 'Dateien wurden erfolgreich &uuml;bertragen';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Dieses Formular wurde zu oft aufgerufen. Bitte versuchen Sie es in einer Stunde noch einmal.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Die eingegebene Pr&uuml;fziffer stimmt nicht &uuml;berein. Wenn Sie Probleme mit dem Lesen der Pr&uuml;fziffer haben, bitte schreiben Sie eine E-Mail an uns: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Bitte folgende Angaben erg&auml;nzen';
+$MESSAGE['PAGES_ADDED'] = 'Die Seite wurde erfolgreich hinzugef&uuml;gt';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Seitenkopf erfolgreich hinzugef&uuml;gt';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Bitte geben Sie einen Men&uuml;titel ein';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Bitte geben Sie einen Titel f&uuml;r die Seite ein';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Beim Anlegen der Zugangsdatei im Verzeichnis /pages ist ein Fehler aufgetreten (Ungen&uuml;gende Zugangsrechte)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Beim L&ouml;schen der Zugangsdatei im Verzeichnis /pages ist ein Fehler aufgetreten (Ungen&uuml;gende Zugangsrechte)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Bei der Zusammenstellung der Seite ist ein Fehler aufgetreten';
+$MESSAGE['PAGES_DELETED'] = 'Die Seite wurde erfolgreich gel&ouml;scht';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Sind Sie sicher, dass Sie die ausgew&auml;hlte Seite l&ouml;schen m&ouml;chten ( und deren Unterseiten )';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Sie haben keine Berechtigung, diese Seite zu &auml;ndern';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Bitte klicken Sie HIER um die Eingangsseite zu &auml;ndern';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Es konnte nicht in die Datei /pages/intro.php geschrieben werden (ungen&uuml;gende Zugangsrechte)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Eingangsseite wurde erfolgreich gespeichert';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Die letzte &Auml;nderung wurde durchgef&uuml;hrt von';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Die Seite konnte nicht gefunden werden';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Beim Speichern der Seite ist ein Fehler aufgetreten';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Eine Seite mit einem &auml;hnlichen oder demselben Titel existiert bereits';
+$MESSAGE['PAGES_REORDERED'] = 'Die Seite wurde erfolgreich neu zusammengestellt';
+$MESSAGE['PAGES_RESTORED'] = 'Die Seite wurde erfolgreich wiederhergestellt';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Zur&uuml;ck zum Seitenmen&uuml;';
+$MESSAGE['PAGES_SAVED'] = 'Die Seite wurde erfolgreich gespeichert';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Die Seiteneinstellungen wurden erfolgreich gespeichert';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Einstellungen f&uuml;r diesen Abschnitt erfolgreich gespeichert';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Das Passwort, das Sie angegeben haben, ist ung&uuml;ltig';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Pers&ouml;nliche Daten wurden erfolgreich gespeichert';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-Mail Einstellung ge&auml;ndert';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Es wurden ung&uuml;ltige Zeichen f&uuml;r des Passwort verwendet';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Das Passwort wurde erfolgreich ge&auml;ndert';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = '&Auml;nderung des Datensatzes ist fehlgeschlagen.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'Ge&auml;nderter Datensatz wurde erfolgreich aktualisiert.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Hinzuf&uuml;gen eines neuen Datensatzes ist fehlgeschlagen.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'Neuer Datensatz wurde erfolgreich hinzugef&uuml;gt.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Bitte beachten Sie: Wenn Sie dieses Feld anklicken, werden alle ungespeicherten &Auml;nderungen zur&uuml;ckgesetzt';
+$MESSAGE['SETTINGS_SAVED'] = 'Die Optionen wurden erfolgreich gespeichert';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Konfigurationsdatei konnte nicht ge&ouml;ffnet werden';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Die Konfigurationsdatei konnte nicht geschrieben werden';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Bitte beachten Sie: Dies wird nur zu Testzwecken empfohlen';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+Es wurde ein neuer User regisriert.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adresse: {LOGIN_IP}
+Anmeldedatum: {SIGNUP_DATE}
+----------------------------------------
+Diese E-Mail wurde automatisch erstellt!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hallo {LOGIN_DISPLAY_NAME},
+
+Sie erhalten diese E-Mail, weil sie ein neues Passwort angefordert haben.
+
+Ihre neuen Logindaten f&uuml;r {LOGIN_WEBSITE_TITLE} lauten:
+
+Loginname: {LOGIN_NAME}
+Passwort: {LOGIN_PASSWORD}
+
+Das bisherige Passwort wurde durch das neue Passwort oben ersetzt.
+
+Sollten Sie kein neues Kennwort angefordert haben, l&ouml;schen Sie bitte diese E-Mail.
+
+Mit freundlichen Gr&uuml;ssen
+----------------------------------------
+Diese E-Mail wurde automatisch erstellt!
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hallo {LOGIN_DISPLAY_NAME},
+
+Herzlich willkommen bei \'{LOGIN_WEBSITE_TITLE}\'
+
+Ihre Logindaten f&uuml;r \'{LOGIN_WEBSITE_TITLE}\' lauten:
+Loginname: {LOGIN_NAME}
+Passwort: {LOGIN_PASSWORD}
+
+Vielen Dank f&uuml;r Ihre Registrierung
+
+Wenn Sie dieses E-Mail versehentlich erhalten haben, l&ouml;schen Sie bitte diese E-Mail.
+----------------------------------------
+Diese E-Mail wurde automatisch erstellt!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Deine WB Logindaten ...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Bitte geben Sie Ihre E-Mail Adresse an';
+$MESSAGE['START_CURRENT_USER'] = 'Sie sind momentan angemeldet als:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Das Installations-Verzeichnis "/install" existiert noch! Dies stellt ein Sicherheitsrisiko dar. Bitte l&ouml;schen.';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Bitte die Datei "upgrade-script.php" vom Webserver l&ouml;schen.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Willkommen in der WebsiteBaker Verwaltung';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Bitte beachten Sie: Um eine andere Designvorlage auszuw&auml;hlen, benutzen Sie den Bereich "Optionen"';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unbekannter Upload Fehler';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Konnte Datei nicht schreiben. Fehlende Schreibrechte.';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'Erweiterungsfehler';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'Die hochgeladene Datei &uum;berschreitet die in dem HTML Formular mittels der Anweisung MAX_FILE_SIZE angegebene maximale Dateigr&oum;sse. ';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'Die hochgeladene Datei &uum;berschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Gr&oum;sse';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'Es wurde keine Datei hochgeladen';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Fehlender tempor&auml;rer Ordner';
+$MESSAGE['UPLOAD_ERR_OK'] = 'Die Datei wurde erfolgreich hochgeladen';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'Die Datei wurde nur teilweise hochgeladen';
+$MESSAGE['USERS_ADDED'] = 'Der Benutzer wurde erfolgreich hinzugef&uuml;gt';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Funktion abgelehnt, Sie k&ouml;nnen sich nicht selbst l&ouml;schen!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Bitte beachten Sie: Sie sollten in die obigen Felder nur Werte eingeben, wenn Sie das Passwort dieses Benutzers &auml;ndern m&ouml;chten';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Sind Sie sicher, dass Sie den ausgew&auml;hlten Benutzer l&ouml;schen m&ouml;chten?';
+$MESSAGE['USERS_DELETED'] = 'Der Benutzer wurde erfolgreich gel&ouml;scht';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Die angegebene E-Mail Adresse wird bereits verwendet';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Die angegebene E-Mail Adresse ist ung&uuml;ltig';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Es wurden ung&uuml;ltige Zeichen f&uuml;r den Loginnamen verwendet';
+$MESSAGE['USERS_NO_GROUP'] = 'Es wurde keine Gruppe ausgew&auml;hlt';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Das angegebene Passwort ist ung&uuml;ltig';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Das eingegebene Passwort war zu kurz';
+$MESSAGE['USERS_SAVED'] = 'Der Benutzer wurde erfolgreich gespeichert';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'Der angegebene Loginname wird bereits verwendet';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'Der eingegebene Loginname war zu kurz';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Zugriff auf die WebsiteBaker Verwaltungsprogramme...';
+$OVERVIEW['GROUPS'] = 'Verwaltung von Gruppen und Ihrer Zugangsberechtigungen...';
+$OVERVIEW['HELP'] = 'Noch Fragen? Hier finden Sie Antworten';
+$OVERVIEW['LANGUAGES'] = 'Sprachen verwalten...';
+$OVERVIEW['MEDIA'] = 'Verwaltung der im Medienordner gespeicherten Dateien...';
+$OVERVIEW['MODULES'] = 'Verwaltung der WebsiteBaker Module...';
+$OVERVIEW['PAGES'] = 'Verwaltung Ihrer Webseiten...';
+$OVERVIEW['PREFERENCES'] = '&Auml;ndern pers&ouml;nlicher Einstellungen wie E-Mail Adresse, Passwort, usw.... ';
+$OVERVIEW['SETTINGS'] = '&Auml;ndern der Optionen f&uuml;r WebsiteBaker...';
+$OVERVIEW['START'] = '&Uuml;berblick &uuml;ber die Verwaltung';
+$OVERVIEW['TEMPLATES'] = '&Auml;ndern des Designs Ihrer Webseite mit Vorlagen...';
+$OVERVIEW['USERS'] = 'Verwaltung von Benutzern, die sich in WebsiteBaker einloggen d&uuml;rfen...';
+$OVERVIEW['VIEW'] = 'Ansicht Ihrer Webseite in einem neuen Fenster...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}
+

Property changes on: tags/2.8.3/wb/languages/DE.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/CS.php
===================================================================
--- tags/2.8.3/wb/languages/CS.php	(nonexistent)
+++ tags/2.8.3/wb/languages/CS.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'CS';
+$language_name = '&#268;e&scaron;tina';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'WebStep, s.r.o.';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'P&#345;&iacute;stup';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Roz&scaron;&iacute;&#345;en&iacute;';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Z&iacute;skat zapomenut&eacute; p&#345;ihla&scaron;ovac&iacute; &uacute;daje';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Skupiny';
+$MENU['HELP'] = 'N&aacute;pov&#283;da';
+$MENU['LANGUAGES'] = 'Jazyky';
+$MENU['LOGIN'] = 'P&#345;ihl&aacute;&scaron;en&iacute;';
+$MENU['LOGOUT'] = 'Odhl&aacute;sit';
+$MENU['MEDIA'] = 'M&eacute;dia';
+$MENU['MODULES'] = 'Moduly';
+$MENU['PAGES'] = 'Str&aacute;nky';
+$MENU['PREFERENCES'] = 'Mo&#382;nosti';
+$MENU['SETTINGS'] = 'Nastaven&iacute;';
+$MENU['START'] = '&Uacute;vod';
+$MENU['TEMPLATES'] = '&Scaron;ablony';
+$MENU['USERS'] = 'U&#382;ivatel&eacute;';
+$MENU['VIEW'] = 'Zobrazit';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registrace &uacute;&#269;tu';
+$TEXT['ACTIONS'] = 'Akce';
+$TEXT['ACTIVE'] = 'Aktivn&iacute;';
+$TEXT['ADD'] = 'P&#345;idat';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'P&#345;idat sekci';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administrace';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administra&#269;n&iacute; n&aacute;stroje';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Spr&aacute;vci';
+$TEXT['ADVANCED'] = 'Pokro&#269;il&yacute;';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Opr&aacute;vn&#283;n&iacute; k prohl&iacute;&#382;en&iacute;';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Povolit v&iacute;cen&aacute;sobn&eacute; v&yacute;b&#283;ry';
+$TEXT['ALL_WORDS'] = 'V&scaron;echna slova';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonymn&iacute;';
+$TEXT['ANY_WORDS'] = 'Cokoliv';
+$TEXT['APP_NAME'] = 'N&aacute;zev aplikace';
+$TEXT['ARE_YOU_SURE'] = 'Jste si jisti?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Zp&#283;t';
+$TEXT['BACKUP'] = 'Z&aacute;lohov&aacute;n&iacute;';
+$TEXT['BACKUP_ALL_TABLES'] = 'Z&aacute;lohovat v&scaron;echny tabulky v datab&aacute;zi';
+$TEXT['BACKUP_DATABASE'] = 'Z&aacute;lohovat datab&aacute;zi';
+$TEXT['BACKUP_MEDIA'] = 'Zaz&aacute;lohovat m&eacute;dia';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Z&aacute;lohovat pouze tabulky WebsiteBakeru';
+$TEXT['BASIC'] = 'Z&aacute;kladn&iacute;';
+$TEXT['BLOCK'] = 'Blok';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Zru&scaron;it';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Kontrola obr. k&oacute;dem';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Zm&#283;nit';
+$TEXT['CHANGES'] = 'Zm&#283;ny';
+$TEXT['CHANGE_SETTINGS'] = 'Zm&#283;nit nastaven&iacute;';
+$TEXT['CHARSET'] = 'K&oacute;dov&aacute; str&aacute;nka';
+$TEXT['CHECKBOX_GROUP'] = 'Skupina zatrh&aacute;vac&iacute;ch pol&iacute;';
+$TEXT['CLOSE'] = 'Zav&#345;&iacute;t';
+$TEXT['CODE'] = 'K&oacute;d jazyka';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Sbalit';
+$TEXT['COMMENT'] = 'Koment&aacute;&#345;';
+$TEXT['COMMENTING'] = 'Koment&aacute;&#345;e';
+$TEXT['COMMENTS'] = 'Koment&aacute;&#345;e';
+$TEXT['CREATE_FOLDER'] = 'Vytvo&#345;it adres&aacute;&#345;';
+$TEXT['CURRENT'] = 'Sou&#269;asn&yacute;';
+$TEXT['CURRENT_FOLDER'] = 'Sou&#269;asn&yacute; adres&aacute;&#345;';
+$TEXT['CURRENT_PAGE'] = 'Str&aacute;nka';
+$TEXT['CURRENT_PASSWORD'] = 'Sou&#269;asn&eacute; heslo';
+$TEXT['CUSTOM'] = 'Vlastn&iacute; nastaven&iacute;';
+$TEXT['DATABASE'] = 'Datab&aacute;ze';
+$TEXT['DATE'] = 'Datum';
+$TEXT['DATE_FORMAT'] = 'Form&aacute;t data';
+$TEXT['DEFAULT'] = 'V&yacute;choz&iacute;';
+$TEXT['DEFAULT_CHARSET'] = 'V&yacute;choz&iacute; k&oacute;dov&aacute; str&aacute;nka';
+$TEXT['DEFAULT_TEXT'] = 'V&yacute;choz&iacute; text';
+$TEXT['DELETE'] = 'Smazat';
+$TEXT['DELETED'] = 'Smaz&aacute;no';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Popis';
+$TEXT['DESIGNED_FOR'] = 'Vyvinuto pro';
+$TEXT['DIRECTORIES'] = 'Adres&aacute;&#345;e';
+$TEXT['DIRECTORY_MODE'] = 'M&oacute;d adres&aacute;&#345;&#367;';
+$TEXT['DISABLED'] = 'Vypnuto';
+$TEXT['DISPLAY_NAME'] = 'Jm&eacute;no';
+$TEXT['EMAIL'] = 'E-mail';
+$TEXT['EMAIL_ADDRESS'] = 'E-mailov&aacute; adresa';
+$TEXT['EMPTY_TRASH'] = 'Vypr&aacute;zdnit ko&scaron;';
+$TEXT['ENABLED'] = 'Zapnuto';
+$TEXT['END'] = 'Konec';
+$TEXT['ERROR'] = 'Chyba';
+$TEXT['EXACT_MATCH'] = 'P&#345;esn&aacute; shoda';
+$TEXT['EXECUTE'] = 'Spu&scaron;t&#283;n&iacute;';
+$TEXT['EXPAND'] = 'Rozbalit';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Pole';
+$TEXT['FILE'] = 'soubor';
+$TEXT['FILES'] = 'soubory';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Pr&aacute;va souborov&eacute;ho syst&eacute;mu';
+$TEXT['FILE_MODE'] = 'M&oacute;d soubor&#367;';
+$TEXT['FINISH_PUBLISHING'] = 'Konec publikace';
+$TEXT['FOLDER'] = 'adres&aacute;&#345;';
+$TEXT['FOLDERS'] = 'adres&aacute;&#345;e';
+$TEXT['FOOTER'] = 'Z&aacute;pat&iacute;';
+$TEXT['FORGOTTEN_DETAILS'] = 'Zapom&#283;li jste svoje p&#345;ihla&scaron;ovac&iacute; &uacute;daje?';
+$TEXT['FORGOT_DETAILS'] = 'Zapomnenut&eacute; heslo?';
+$TEXT['FROM'] = 'od';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Cel&eacute; jm&eacute;no';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Skup.';
+$TEXT['HEADER'] = 'Z&aacute;hlav&iacute;';
+$TEXT['HEADING'] = 'Z&aacute;hlav&iacute;';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'V&yacute;&scaron;ka';
+$TEXT['HIDDEN'] = 'Skryt&aacute;';
+$TEXT['HIDE'] = 'Skr&yacute;t';
+$TEXT['HIDE_ADVANCED'] = 'Skr&yacute;t pokro&#269;il&eacute; volby';
+$TEXT['HOME'] = 'Dom&#367;';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'P&#345;esm&#283;rov&aacute;n&iacute; homepage';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Hostitel';
+$TEXT['ICON'] = 'Ikona';
+$TEXT['IMAGE'] = 'Obr&aacute;zek';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Instalovat';
+$TEXT['INSTALLATION'] = 'Instalace';
+$TEXT['INSTALLATION_PATH'] = 'Cesta instalace';
+$TEXT['INSTALLATION_URL'] = 'URL instalace';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = '&Uacute;vodn&iacute; (intro) str&aacute;nka';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Kl&iacute;&#269;ov&aacute; slova';
+$TEXT['LANGUAGE'] = 'Jazyk';
+$TEXT['LAST_UPDATED_BY'] = 'Posledn&iacute; zm&#283;na:';
+$TEXT['LENGTH'] = 'D&eacute;lka';
+$TEXT['LEVEL'] = '&Uacute;rove&#328;';
+$TEXT['LINK'] = 'Odkaz';
+$TEXT['LINUX_UNIX_BASED'] = 'Zalo&#382;en na Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Seznam voleb';
+$TEXT['LOGGED_IN'] = 'p&#345;ihl&aacute;&scaron;en';
+$TEXT['LOGIN'] = 'P&#345;ihl&aacute;sit';
+$TEXT['LONG'] = 'Dlouh&yacute; popis';
+$TEXT['LONG_TEXT'] = 'Dlouh&yacute; text';
+$TEXT['LOOP'] = 'T&#283;lo';
+$TEXT['MAIN'] = 'Hlavn&iacute;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Spravovat';
+$TEXT['MANAGE_GROUPS'] = 'Spravovat skupiny';
+$TEXT['MANAGE_USERS'] = 'Spravovat u&#382;ivatele';
+$TEXT['MATCH'] = 'Shoda';
+$TEXT['MATCHING'] = 'Odpov&iacute;daj&iacute;c&iacute;';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. po&#269;et odesl&aacute;n&iacute; za hodinu';
+$TEXT['MEDIA_DIRECTORY'] = 'Adres&aacute;&#345; m&eacute;di&iacute;';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Titulek menu';
+$TEXT['MESSAGE'] = 'Zpr&aacute;va';
+$TEXT['MODIFY'] = 'Zm&#283;nit';
+$TEXT['MODIFY_CONTENT'] = 'Zm&#283;nit obsah';
+$TEXT['MODIFY_SETTINGS'] = 'Zm&#283;nit nastaven&iacute;';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Opr&aacute;vn&#283;n&iacute; k modul&#367;m';
+$TEXT['MORE'] = 'V&iacute;ce';
+$TEXT['MOVE_DOWN'] = 'Posunout dol&#367;';
+$TEXT['MOVE_UP'] = 'Posunout nahoru';
+$TEXT['MULTIPLE_MENUS'] = 'V&iacute;cen&aacute;sobn&aacute; menu';
+$TEXT['MULTISELECT'] = 'V&iacute;cen&aacute;sobn&eacute; v&yacute;b&#283;rov&eacute; pole';
+$TEXT['NAME'] = 'N&aacute;zev';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Chcete se p&#345;ihl&aacute;sit?';
+$TEXT['NEW_PASSWORD'] = 'Nov&eacute; heslo';
+$TEXT['NEW_WINDOW'] = 'nov&eacute;ho okna';
+$TEXT['NEXT'] = 'N&aacute;sleduj&iacute;c&iacute;';
+$TEXT['NEXT_PAGE'] = 'N&aacute;sleduj&iacute;c&iacute; str&aacute;nka';
+$TEXT['NO'] = 'Ne';
+$TEXT['NONE'] = 'Nen&iacute;';
+$TEXT['NONE_FOUND'] = 'Nic nenalezeno';
+$TEXT['NOT_FOUND'] = 'Nenalezeno';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = '&#381;&aacute;dn&yacute; v&yacute;sledek';
+$TEXT['OF'] = 'Z';
+$TEXT['ON'] = 'Na';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Volby';
+$TEXT['OTHERS'] = 'Ostatn&iacute;';
+$TEXT['OUT_OF'] = 'Z';
+$TEXT['OVERWRITE_EXISTING'] = 'P&#345;epsat existuj&iacute;c&iacute;';
+$TEXT['PAGE'] = 'Str&aacute;nka';
+$TEXT['PAGES_DIRECTORY'] = 'Adres&aacute;&#345; str&aacute;nek';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Seitenerechtigungen';
+$TEXT['PAGE_EXTENSION'] = 'P&#345;&iacute;pona str&aacute;nek';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Jazykov&eacute; verze str&aacute;nek';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limit &uacute;rovn&iacute; str&aacute;nek';
+$TEXT['PAGE_SPACER'] = 'Znak mezery';
+$TEXT['PAGE_TITLE'] = 'Titulek str&aacute;nky';
+$TEXT['PAGE_TRASH'] = 'Ko&scaron; str&aacute;nek';
+$TEXT['PARENT'] = 'Nad&#345;azen&yacute;';
+$TEXT['PASSWORD'] = 'Heslo';
+$TEXT['PATH'] = 'Cesta';
+$TEXT['PHP_ERROR_LEVEL'] = '&Uacute;rove&#328; hl&aacute;&scaron;en&iacute; chyb PHP';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Vyberte pros&iacute;m';
+$TEXT['POST'] = 'p&#345;&iacute;sp&#283;vek';
+$TEXT['POSTS_PER_PAGE'] = 'P&#345;&iacute;sp&#283;vk&#367; na str&aacute;nku';
+$TEXT['POST_FOOTER'] = 'Z&aacute;pat&iacute; p&#345;&iacute;sp&#283;vku';
+$TEXT['POST_HEADER'] = 'Z&aacute;hlav&iacute; p&#345;&iacute;sp&#283;vku';
+$TEXT['PREVIOUS'] = 'P&#345;edchoz&iacute;';
+$TEXT['PREVIOUS_PAGE'] = 'P&#345;edchoz&iacute; str&aacute;nka';
+$TEXT['PRIVATE'] = 'Soukrom&aacute;';
+$TEXT['PRIVATE_VIEWERS'] = 'Opr&aacute;vn&#283;n&iacute; k prohl&iacute;&#382;en&iacute;';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Ve&#345;ejn&aacute;';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Skupina radio-pol&iacute;';
+$TEXT['READ'] = '&#268;ten&iacute;';
+$TEXT['READ_MORE'] = 'v&iacute;ce...';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Pro registrovan&eacute;';
+$TEXT['REGISTERED_VIEWERS'] = 'Opr&aacute;vn&#283;n&iacute; k prohl&iacute;&#382;en&iacute;';
+$TEXT['RELOAD'] = 'Obnovit';
+$TEXT['REMEMBER_ME'] = 'Zapamatovat &uacute;daje';
+$TEXT['RENAME'] = 'P&#345;ejm.';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Povinn&yacute;';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Vy&#269;istit';
+$TEXT['RESIZE'] = 'Zm&#283;na velikosti';
+$TEXT['RESIZE_IMAGE_TO'] = 'Zm&#283;nit velikost obr&aacute;zku na';
+$TEXT['RESTORE'] = 'Obnova ze z&aacute;lohy';
+$TEXT['RESTORE_DATABASE'] = 'Obnovit datab&aacute;zi ze z&aacute;lohy';
+$TEXT['RESTORE_MEDIA'] = 'Obnovit m&eacute;dia ze z&aacute;lohy';
+$TEXT['RESULTS'] = 'V&yacute;sledky';
+$TEXT['RESULTS_FOOTER'] = 'Z&aacute;pat&iacute; v&yacute;sledk&#367;';
+$TEXT['RESULTS_FOR'] = 'V&yacute;sledky pro';
+$TEXT['RESULTS_HEADER'] = 'Z&aacute;hlav&iacute; v&yacute;sledk&#367;';
+$TEXT['RESULTS_LOOP'] = 'Polo&#382;ka v&yacute;sledk&#367;';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Znovu nov&eacute; heslo';
+$TEXT['RETYPE_PASSWORD'] = 'Znovu heslo';
+$TEXT['SAME_WINDOW'] = 'p&#367;vodn&iacute;ho okna';
+$TEXT['SAVE'] = 'Ulo&#382;it';
+$TEXT['SEARCH'] = 'Vyhled&aacute;v&aacute;n&iacute;';
+$TEXT['SEARCHING'] = 'Vyhled&aacute;v&aacute;n&iacute;';
+$TEXT['SECTION'] = 'Sekce';
+$TEXT['SECTION_BLOCKS'] = 'Bloky sekc&iacute;';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'V&yacute;b&#283;rov&eacute; pole';
+$TEXT['SEND_DETAILS'] = 'Zaslat p&#345;ihla&scaron;ovac&iacute; &uacute;daje';
+$TEXT['SEPARATE'] = 'Odd&#283;len&#283;';
+$TEXT['SEPERATOR'] = 'Odd&#283;lova&#269;';
+$TEXT['SERVER_EMAIL'] = 'Syt&eacute;mov&yacute; e-mail';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Opera&#269;n&iacute; syst&eacute;m serveru';
+$TEXT['SESSION_IDENTIFIER'] = 'Identifik&aacute;tor session';
+$TEXT['SETTINGS'] = 'Nastaven&iacute;';
+$TEXT['SHORT'] = 'Kr&aacute;tk&yacute; popis';
+$TEXT['SHORT_TEXT'] = 'Kr&aacute;tk&yacute; text';
+$TEXT['SHOW'] = 'Zobrazit';
+$TEXT['SHOW_ADVANCED'] = 'Zobrazit pokro&#269;il&eacute; volby';
+$TEXT['SIGNUP'] = 'Registrace';
+$TEXT['SIZE'] = 'Velikost';
+$TEXT['SMART_LOGIN'] = 'Chytr&eacute; p&#345;ihl&aacute;&scaron;en&iacute;';
+$TEXT['START'] = 'Za&#269;&aacute;tek';
+$TEXT['START_PUBLISHING'] = 'Za&#269;&aacute;tek publikace';
+$TEXT['SUBJECT'] = 'P&#345;edm&#283;t';
+$TEXT['SUBMISSIONS'] = 'Odeslan&eacute; formul&aacute;&#345;e';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Odeslan&eacute; formul&aacute;&#345;e';
+$TEXT['SUBMISSION_ID'] = 'ID formul&aacute;&#345;e';
+$TEXT['SUBMITTED'] = 'Odesl&aacute;no';
+$TEXT['SUCCESS'] = '&Uacute;sp&#283;&scaron;n&#283; provedeno';
+$TEXT['SYSTEM_DEFAULT'] = 'Implicitn&iacute; v syst&eacute;mu';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Syst&eacute;mov&aacute; opr&aacute;vn&#283;n&iacute;';
+$TEXT['TABLE_PREFIX'] = 'Prefix tabulek';
+$TEXT['TARGET'] = 'Sm&#283;&#345;uje do';
+$TEXT['TARGET_FOLDER'] = 'C&iacute;lov&yacute; adres&aacute;&#345;';
+$TEXT['TEMPLATE'] = '&Scaron;ablona';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Pr&aacute;va k &scaron;ablon&#283;';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = 'Vstupn&iacute; pole';
+$TEXT['TEXTFIELD'] = 'Vstupn&iacute; &#345;&aacute;dek';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = '&#268;as';
+$TEXT['TIMEZONE'] = '&#268;asov&eacute; p&aacute;smo';
+$TEXT['TIME_FORMAT'] = 'Form&aacute;t &#269;asu';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'N&aacute;zev';
+$TEXT['TO'] = 'na';
+$TEXT['TOP_FRAME'] = 'svrchn&iacute;ho r&aacute;mu';
+$TEXT['TRASH_EMPTIED'] = 'Ko&scaron; vypr&aacute;zdn&#283;n';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Typ';
+$TEXT['UNDER_CONSTRUCTION'] = 'Ve v&yacute;stavb&#283;';
+$TEXT['UNINSTALL'] = 'Odinstalovat';
+$TEXT['UNKNOWN'] = 'Nezn&aacute;m&yacute;';
+$TEXT['UNLIMITED'] = 'Neomezen&yacute;';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Nahoru';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Nahr&aacute;t soubor(y)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'U&#382;ivatel';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifikace';
+$TEXT['VERSION'] = 'Verze';
+$TEXT['VIEW'] = 'Zobrazit';
+$TEXT['VIEW_DELETED_PAGES'] = 'Zobrazit smazan&eacute; str&aacute;nky';
+$TEXT['VIEW_DETAILS'] = 'Zobrazit';
+$TEXT['VISIBILITY'] = 'Viditelnost';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'WWW';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Popis webu';
+$TEXT['WEBSITE_FOOTER'] = 'Z&aacute;pat&iacute; webu';
+$TEXT['WEBSITE_HEADER'] = 'Z&aacute;hlav&iacute; webu';
+$TEXT['WEBSITE_KEYWORDS'] = 'Kl&iacute;&#269;ov&aacute; slova';
+$TEXT['WEBSITE_TITLE'] = 'N&aacute;zev webu';
+$TEXT['WELCOME_BACK'] = 'V&iacute;tejte';
+$TEXT['WIDTH'] = '&Scaron;&iacute;&#345;ka';
+$TEXT['WINDOW'] = 'Okno';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Pr&aacute;va z&aacute;pisu &amp;quot;pro cel&yacute; sv&#283;t&amp;quot;';
+$TEXT['WRITE'] = 'Z&aacute;pis';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG styl';
+$TEXT['YES'] = 'Ano';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'P&#345;idat skupinu';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'P&#345;idat z&aacute;hlav&iacute;';
+$HEADING['ADD_PAGE'] = 'P&#345;idat str&aacute;nku';
+$HEADING['ADD_USER'] = 'P&#345;idat u&#382;ivatele';
+$HEADING['ADMINISTRATION_TOOLS'] = 'N&aacute;stroje administrace';
+$HEADING['BROWSE_MEDIA'] = 'Prohl&iacute;&#382;e&#269; m&eacute;di&iacute;';
+$HEADING['CREATE_FOLDER'] = 'Vytvo&#345;it adres&aacute;&#345;';
+$HEADING['DEFAULT_SETTINGS'] = 'Implicitn&iacute; nastaven&iacute;';
+$HEADING['DELETED_PAGES'] = 'Smazan&eacute; str&aacute;nky';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Nastaven&iacute; syst&eacute;mu soubor&#367;';
+$HEADING['GENERAL_SETTINGS'] = 'Obecn&aacute; nastaven&iacute;';
+$HEADING['INSTALL_LANGUAGE'] = 'Nainstalovat jazyk';
+$HEADING['INSTALL_MODULE'] = 'Nainstalovat modul';
+$HEADING['INSTALL_TEMPLATE'] = 'Nainstalovat &scaron;ablonu';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detaily jazyka';
+$HEADING['MANAGE_SECTIONS'] = 'Spravovat sekce';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Zm&#283;nit pokro&#269;il&aacute; nastaven&iacute; str&aacute;nky';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Zm&#283;nit/Smazat skupinu';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Zm&#283;nit/Smazat str&aacute;nku';
+$HEADING['MODIFY_DELETE_USER'] = 'Zm&#283;nit/Smazat u&#382;ivatele';
+$HEADING['MODIFY_GROUP'] = 'Zm&#283;nit skupinu';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Zm&#283;nit &uacute;vodn&iacute; (intro) str&aacute;nku';
+$HEADING['MODIFY_PAGE'] = 'Upravit str&aacute;nku';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Zm&#283;nit nastaven&iacute; str&aacute;nky';
+$HEADING['MODIFY_USER'] = 'Zm&#283;nit u&#382;ivatele';
+$HEADING['MODULE_DETAILS'] = 'Detaily modulu';
+$HEADING['MY_EMAIL'] = 'M&#367;j e-mail';
+$HEADING['MY_PASSWORD'] = 'Moje heslo';
+$HEADING['MY_SETTINGS'] = 'Moje nastaven&iacute;';
+$HEADING['SEARCH_SETTINGS'] = 'Nastaven&iacute; vyhled&aacute;v&aacute;n&iacute;';
+$HEADING['SERVER_SETTINGS'] = 'Nastaven&iacute; serveru';
+$HEADING['TEMPLATE_DETAILS'] = 'Detaily &scaron;ablony';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Odinstalovat jazyk';
+$HEADING['UNINSTALL_MODULE'] = 'Odinstalovat modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Odinstalovat &scaron;ablonu';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Nahr&aacute;t soubor(y)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Nedostate&#269;n&aacute; opr&aacute;vn&#283;n&iacute;';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Heslo nem&#367;&#382;e b&yacute;t p&#345;enastaveno v&iacute;cekr&aacute;t b&#283;hem jedn&eacute; hodiny';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Nelze odeslat heslo e-mailem, kontaktujte pros&iacute;m spr&aacute;vce syst&eacute;mu';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Zadan&aacute; e-mailov&aacute; adresa nebyla nalezena';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Zadejte svoji e-mailovou adresu:';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Nem&aacute;te opr&aacute;vn&#283;n&iacute; prohl&iacute;&#382;et tuto str&aacute;nku';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Ji&#382; d&#345;&iacute;ve nainstalov&aacute;no';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Nelze zapisovat do c&iacute;lov&eacute;ho adres&aacute;&#345;e';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Nelze odinstalovat';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Nelze odinstalovat: soubor je pr&aacute;v&#283; pou&#382;&iacute;v&aacute;n';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Nelze rozbalit (rozzipovat) soubor';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Nelze nahr&aacute;t soubor';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Do&scaron;lo k chyb&#283; p&#345;i otev&iacute;r&aacute;n&iacute; souboru.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Nahr&aacute;van&yacute; soubory mus&iacute; b&yacute;t n&aacute;sleduj&iacute;c&iacute;ho form&aacute;tu:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Nahr&aacute;van&yacute; soubor mus&iacute; m&iacute;t jeden z n&aacute;sleduj&iacute;c&iacute;ch form&aacute;t&#367;:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Pros&iacute;m vra&#357;te se zp&#283;t a vypl&#328;te v&scaron;echna pole';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Instalace prob&#283;hla &uacute;sp&#283;&scaron;n&#283;';
+$MESSAGE['GENERIC_INVALID'] = 'Nahr&aacute;van&yacute; soubor je neplatn&yacute;';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nenainstalov&aacute;no';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = '&#268;ekejte pros&iacute;m, operace m&#367;&#382;e chv&iacute;li trvat.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Zkuste to p&#345;&iacute;&scaron;t&#283;...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Odinstalace prob&#283;hla &uacute;sp&#283;&scaron;n&#283;';
+$MESSAGE['GENERIC_UPGRADED'] = 'Aktualizace prob&#283;hla &uacute;sp&#283;&scaron;n&#283;';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Str&aacute;nky jsou ve v&yacute;stavb&#283;';
+$MESSAGE['GROUPS_ADDED'] = 'Skupina byla &uacute;sp&#283;&scaron;n&#283; p&#345;id&aacute;na';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Jste si jisti, &#382;e chcete smazat tuto skupimu (a v&scaron;echny jej&iacute; u&#382;ivatele)?';
+$MESSAGE['GROUPS_DELETED'] = 'Skupina byla &uacute;sp&#283;&scaron;n&#283; smaz&aacute;na';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'N&aacute;zev skupiny je pr&aacute;zdn&yacute;';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Tato skupina ji&#382; existuje';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Nenalezena &#382;&aacute;dn&aacute; skupina';
+$MESSAGE['GROUPS_SAVED'] = 'Skupina byla &uacute;sp&#283;&scaron;n&#283; ulo&#382;ena';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Zadejte sv&eacute; heslo';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Zadan&eacute; heslo je p&#345;&iacute;li&scaron; dlouh&eacute;';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Zadan&eacute; heslo je p&#345;&iacute;li&scaron; kr&aacute;tk&eacute;';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Nezadali jste p&#345;&iacute;ponu souboru';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Nezadali jste nov&yacute; n&aacute;zev';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Nelze smazat vybran&yacute; adres&aacute;&#345;';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Nelze smazat vybran&yacute; soubor';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'P&#345;ejmenov&aacute;n&iacute; se nezda&#345;ilo';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Jste si jisti, &#382;e chcete smazat n&aacute;sleduj&iacute;c&iacute; soubory nebo adres&aacute;&#345;e?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Adres&aacute;&#345; byl &uacute;sp&#283;&scaron;n&#283; smaz&aacute;n';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Soubor byl &uacute;sp&#283;&scaron;n&#283; smaz&aacute;n';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Adres&aacute;&#345; neexistuje';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Nelze pou&#382;&iacute;t ../ v n&aacute;zvu adres&aacute;&#345;e';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Adres&aacute;&#345; se stejn&yacute;m n&aacute;zvem ji&#382; existuje';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Adres&aacute;&#345; byl &uacute;sp&#283;&scaron;n&#283; vytvo&#345;en';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Nelze vytvo&#345;it adres&aacute;&#345;';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Soubor se stejn&yacute;m n&aacute;zvem ji&#382; existuje';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Soubor nenalezen';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Nelze pou&#382;&iacute;t ../ v n&aacute;zvu';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nelze pou&#382;&iacute;t index.php jako n&aacute;zev';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nenalezen &#382;&aacute;dn&yacute; soubor';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'P&#345;ejmenov&aacute;n&iacute; prob&#283;hlo &uacute;sp&#283;&scaron;n&#283;';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' soubor byl &uacute;sp&#283;&scaron;n&#283; nahr&aacute;n';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Nelze pou&#382;&iacute;t ../ v c&iacute;lov&eacute;m adres&aacute;&#345;i';
+$MESSAGE['MEDIA_UPLOADED'] = ' soubory byly &uacute;sp&#283;&scaron;n&#283; nahr&aacute;ny';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Omlouv&aacute;me se, ale tento formul&aacute;&#345; dos&aacute;hl limitu povolen&yacute;ch odesl&aacute;n&iacute; pro tuto hodinu. Pros&iacute;m zkuste to znovu v dal&scaron;&iacute; hodin&#283;..';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Kontroln&iacute; k&oacute;d (zn&aacute;m&yacute; jako Captcha) neodpov&iacute;d&aacute;. Pokud m&aacute;te probl&eacute;my s p&#345;e&#269;ten&iacute;m tohoto k&oacute;du, kontaktujte <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Mus&iacute;te vyplnit n&aacute;sleduj&iacute;c&iacute; pole';
+$MESSAGE['PAGES_ADDED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; p&#345;id&aacute;na';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Z&aacute;hlav&iacute; str&aacute;nky bylo &uacute;sp&#283;&scaron;n&#283; p&#345;id&aacute;no';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Zadejte n&aacute;zev v menu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Zadejte n&aacute;zev str&aacute;nky';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Do&scaron;lo k chyb&#283; p&#345;i vytv&aacute;&#345;en&iacute; p&#345;&iacute;supov&eacute;ho souboru v adres&aacute;&#345;i str&aacute;nek (nedostate&#269;n&aacute; opr&aacute;vn&#283;n&iacute;)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Do&scaron;lo k chyb&#283; p&#345;i maz&aacute;n&iacute; p&#345;&iacute;supov&eacute;ho souboru v adres&aacute;&#345;i str&aacute;nek (nedostate&#269;n&aacute; opr&aacute;vn&#283;n&iacute;)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Do&scaron;lo k chyb&#283; p&#345;i zm&#283;n&#283; po&#345;ad&iacute; str&aacute;nky';
+$MESSAGE['PAGES_DELETED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; smaz&aacute;na';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Jste si jisti, &#382;e chcete smazat tuto str&aacute;nku (a v&scaron;echny podstr&aacute;nky)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Nem&aacute;te opr&aacute;vn&#283;n&iacute; ke zm&#283;n&#283; t&eacute;to str&aacute;nky';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Zm&#283;nit &uacute;vodn&iacute; (intro) str&aacute;nku';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Nelze zapisovat do souboru /pages/intro.php (nedostate&#269;n&aacute; opr&aacute;vn&#283;n&iacute;)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; ulo&#382;ena';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Posledn&iacute; zm&#283;na:';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Str&aacute;nka nenalezena';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Do&scaron;lo k chyb&#283; p&#345;i ukl&aacute;d&aacute;n&iacute; str&aacute;nky';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Str&aacute;nka se stejn&yacute;m nebo podobn&yacute;m n&aacute;zvem ji&#382; existuje';
+$MESSAGE['PAGES_REORDERED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; p&#345;esunuta';
+$MESSAGE['PAGES_RESTORED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; obnovena';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Zp&#283;t na str&aacute;nky';
+$MESSAGE['PAGES_SAVED'] = 'Str&aacute;nka byla &uacute;sp&#283;&scaron;n&#283; ulo&#382;ena';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Nastaven&iacute; str&aacute;nky bylo &uacute;sp&#283;&scaron;n&#283; ulo&#382;eno';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Nastaven&iacute; sekce bylo &uacute;sp&#283;&scaron;n&#283; ulo&#382;eno';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Sou&#269;asn&eacute; heslo neodpov&iacute;d&aacute;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detaily byly &uacute;sp&#283;&scaron;n&#283; ulo&#382;eny';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-mail byl &uacute;sp&#283;&scaron;n&#283; ulo&#382;en';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Heslo bylo &uacute;sp&#283;&scaron;n&#283; zm&#283;n&#283;no';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Pozn.: stisknut&iacute;m tohoto tla&#269;&iacute;tka dojde k zahozen&iacute; neulo&#382;en&yacute;ch zm&#283;n';
+$MESSAGE['SETTINGS_SAVED'] = 'Nastaven&iacute; bylo &uacute;sp&#283;&scaron;n&#283; ulo&#382;eno';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Nelze otev&#345;&iacute;t soubor s konfigurac&iacute;';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Nelze zapisovat do souboru s konfigurac&iacute;';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Pozn.: zapnut&iacute; t&eacute;to volby se doporu&#269;uje jen v testovac&iacute;m prost&#345;ed&iacute;';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Mus&iacute;te zadat e-mailovou adresu';
+$MESSAGE['START_CURRENT_USER'] = 'Jste p&#345;ihl&aacute;&scaron;eni jako:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Pozor, st&aacute;le existuje instala&#269;n&iacute; adres&aacute;&#345;!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'V&iacute;tejte v Administra&#269;n&iacute; &#269;&aacute;sti';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Pozn.: zm&#283;na &scaron;ablony se prov&aacute;d&iacute; v sekci Nastaven&iacute;';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'U&#382;ivatel byl &uacute;sp&#283;&scaron;n&#283; p&#345;id&aacute;n';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Pozn.: vypl&#328;te pouze hodnoty v&yacute;&scaron;e pokud si p&#345;ejete zm&#283;nit heslo';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Jste si jisti, &#382;e chcete smazat tohoto u&#382;ivatele?';
+$MESSAGE['USERS_DELETED'] = 'U&#382;ivatel byl &uacute;sp&#283;&scaron;n&#283; smaz&aacute;n';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Zadan&aacute; e-mailov&aacute; adresa je ji&#382; pou&#382;&iacute;v&aacute;na';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Zadan&aacute; e-mailov&aacute; adresa je neplatn&aacute;';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Nebyla vybr&aacute;na skupina';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Zadan&aacute; hesla nejsou shodn&aacute;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Zadan&eacute; heslo je p&#345;&iacute;li&scaron; kr&aacute;tk&eacute;';
+$MESSAGE['USERS_SAVED'] = 'U&#382;ivatel byl &uacute;sp&#283;&scaron;n&#283; ulo&#382;en';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Spravovat skupiny u&#382;ivatel&#367; a jejich opr&aacute;vn&#283;n&iacute;...';
+$OVERVIEW['HELP'] = 'M&aacute;te ot&aacute;zku? Hledejte odpov&#283;&#271;...';
+$OVERVIEW['LANGUAGES'] = 'Spravovat jazyky WebsiteBakeru...';
+$OVERVIEW['MEDIA'] = 'Spravovat soubory v adres&aacute;&#345;i m&eacute;di&iacute;...';
+$OVERVIEW['MODULES'] = 'Spravovat moduly WebsiteBakeru...';
+$OVERVIEW['PAGES'] = 'Spravovat webov&eacute; str&aacute;nky...';
+$OVERVIEW['PREFERENCES'] = 'Zm&#283;na nastaven&iacute; e-mailov&eacute; adresy, hesla, atd... ';
+$OVERVIEW['SETTINGS'] = 'Zm&#283;na nastaven&iacute; WebsiteBakeru...';
+$OVERVIEW['START'] = 'Administra&#269;n&iacute; p&#345;ehled';
+$OVERVIEW['TEMPLATES'] = 'Zm&#283;nit vzhled a chov&aacute;n&iacute; webu pomoc&iacute; &scaron;ablon...';
+$OVERVIEW['USERS'] = 'Spravovat u&#382;ivate WebsiteBakeru...';
+$OVERVIEW['VIEW'] = 'Rychle prohl&eacute;dhout str&aacute;nky v nov&eacute;m okn&#283;...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/CS.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/SE.php
===================================================================
--- tags/2.8.3/wb/languages/SE.php	(nonexistent)
+++ tags/2.8.3/wb/languages/SE.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'SE';
+$language_name = 'Svenska';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Markus Eriksson, Peppe Bergqvist';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'R&auml;ttigheter';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Till&auml;gg';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Skicka inloggningsuppgifter';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupper';
+$MENU['HELP'] = 'Hj&auml;lp';
+$MENU['LANGUAGES'] = 'Spr&aring;k';
+$MENU['LOGIN'] = 'Logga in';
+$MENU['LOGOUT'] = 'Logga ut';
+$MENU['MEDIA'] = 'Mediabibliotek';
+$MENU['MODULES'] = 'Moduler';
+$MENU['PAGES'] = 'Sidor';
+$MENU['PREFERENCES'] = 'Mina uppgifter';
+$MENU['SETTINGS'] = 'Inst&auml;llningar';
+$MENU['START'] = 'Hem';
+$MENU['TEMPLATES'] = 'Mallar';
+$MENU['USERS'] = 'Anv&auml;ndare';
+$MENU['VIEW'] = 'Visa sida';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Kontoregistrering';
+$TEXT['ACTIONS'] = '&Aring;tg&auml;rder';
+$TEXT['ACTIVE'] = 'Aktiv';
+$TEXT['ADD'] = 'L&auml;gg till';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'L&auml;gg till sektion';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administration';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administrationsverktyg';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratorer';
+$TEXT['ADVANCED'] = 'Avancerat';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Till&aring;tna att se';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Till&aring;t flera val';
+$TEXT['ALL_WORDS'] = 'Alla ord';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonym';
+$TEXT['ANY_WORDS'] = 'N&aring;got ord';
+$TEXT['APP_NAME'] = 'Namn p&aring; applikation';
+$TEXT['ARE_YOU_SURE'] = '&Auml;r du s&auml;ker?';
+$TEXT['AUTHOR'] = 'F&ouml;rfattare';
+$TEXT['BACK'] = 'Tillbaka';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup av samtliga tabeller i databasen';
+$TEXT['BACKUP_DATABASE'] = 'Backup av databas';
+$TEXT['BACKUP_MEDIA'] = 'Backup av media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup av endast tabeller f&ouml;r WB';
+$TEXT['BASIC'] = 'Standard';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Avbryt';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captchaverifiering (&auml;ven kallat verifierings nummer) ';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = '&Auml;ndra';
+$TEXT['CHANGES'] = '&Auml;ndringar';
+$TEXT['CHANGE_SETTINGS'] = '&Auml;ndra inst&auml;llningar';
+$TEXT['CHARSET'] = 'Typsnitt';
+$TEXT['CHECKBOX_GROUP'] = 'Valruta flera';
+$TEXT['CLOSE'] = 'St&auml;ng';
+$TEXT['CODE'] = 'Kod';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'St&auml;ng';
+$TEXT['COMMENT'] = 'Kommentar';
+$TEXT['COMMENTING'] = 'Kommenterar';
+$TEXT['COMMENTS'] = 'Kommentarer';
+$TEXT['CREATE_FOLDER'] = 'Skapa mapp';
+$TEXT['CURRENT'] = 'Nuvarande';
+$TEXT['CURRENT_FOLDER'] = 'Nuvarande mapp';
+$TEXT['CURRENT_PAGE'] = 'Nuvarande sida';
+$TEXT['CURRENT_PASSWORD'] = 'Nuvarande l&ouml;senord';
+$TEXT['CUSTOM'] = 'Sedvanlig';
+$TEXT['DATABASE'] = 'Databas';
+$TEXT['DATE'] = 'Datum';
+$TEXT['DATE_FORMAT'] = 'Datumformat';
+$TEXT['DEFAULT'] = 'Standard';
+$TEXT['DEFAULT_CHARSET'] = 'Standardtypsnitt';
+$TEXT['DEFAULT_TEXT'] = 'Standardtext';
+$TEXT['DELETE'] = 'Radera';
+$TEXT['DELETED'] = 'Raderat';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Beskrivning';
+$TEXT['DESIGNED_FOR'] = 'Skapad f&ouml;r';
+$TEXT['DIRECTORIES'] = 'Mappar';
+$TEXT['DIRECTORY_MODE'] = 'Mappar s&auml;tt';
+$TEXT['DISABLED'] = 'Inaktiverad';
+$TEXT['DISPLAY_NAME'] = 'Visa namn';
+$TEXT['EMAIL'] = 'E-post';
+$TEXT['EMAIL_ADDRESS'] = 'E-postadress';
+$TEXT['EMPTY_TRASH'] = 'T&ouml;m papperskorgen';
+$TEXT['ENABLED'] = 'Aktiverad';
+$TEXT['END'] = 'Stopp';
+$TEXT['ERROR'] = 'FEL';
+$TEXT['EXACT_MATCH'] = 'Exakt matchning';
+$TEXT['EXECUTE'] = 'K&ouml;ra script';
+$TEXT['EXPAND'] = '&Ouml;ppna';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'F&auml;lt';
+$TEXT['FILE'] = 'Fil';
+$TEXT['FILES'] = 'Filer';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'R&auml;ttigheter filsystem';
+$TEXT['FILE_MODE'] = 'Fil s&auml;tt';
+$TEXT['FINISH_PUBLISHING'] = 'Avsluta publicering';
+$TEXT['FOLDER'] = 'Mapp';
+$TEXT['FOLDERS'] = 'Mappar';
+$TEXT['FOOTER'] = 'Fot';
+$TEXT['FORGOTTEN_DETAILS'] = 'Gl&ouml;mt dina uppgifter?';
+$TEXT['FORGOT_DETAILS'] = 'Gl&ouml;mt dina uppgifter?';
+$TEXT['FROM'] = 'Fr&aring;n';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Ditt hela namn';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupp';
+$TEXT['HEADER'] = 'Huvud';
+$TEXT['HEADING'] = 'Rubrik';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'H&ouml;jd';
+$TEXT['HIDDEN'] = 'G&ouml;md';
+$TEXT['HIDE'] = 'G&ouml;m';
+$TEXT['HIDE_ADVANCED'] = 'G&ouml;m avancerade val';
+$TEXT['HOME'] = 'Hem';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Omstyrning hemsida';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Icon';
+$TEXT['IMAGE'] = 'Bild';
+$TEXT['INLINE'] = 'Aktiverad';
+$TEXT['INSTALL'] = 'Installera';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['INSTALLATION_PATH'] = 'Installation s&ouml;kv&auml;g';
+$TEXT['INSTALLATION_URL'] = 'Installation URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Inledning';
+$TEXT['INTRO_PAGE'] = 'F&ouml;rstasida';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Nyckelord';
+$TEXT['LANGUAGE'] = 'Spr&aring;k';
+$TEXT['LAST_UPDATED_BY'] = 'Senast uppdaterad av';
+$TEXT['LENGTH'] = 'L&auml;ngd';
+$TEXT['LEVEL'] = 'Niv&aring;';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Visa val';
+$TEXT['LOGGED_IN'] = 'Inloggad';
+$TEXT['LOGIN'] = 'Logga In';
+$TEXT['LONG'] = 'Br&ouml;dtext';
+$TEXT['LONG_TEXT'] = 'L&aring;ng text';
+$TEXT['LOOP'] = 'Loop';
+$TEXT['MAIN'] = 'Huvudmenyn';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Behandla';
+$TEXT['MANAGE_GROUPS'] = 'Behandla grupper';
+$TEXT['MANAGE_USERS'] = 'Behandla anv&auml;ndare';
+$TEXT['MATCH'] = 'Matcha';
+$TEXT['MATCHING'] = 'Matching';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max poster per timme';
+$TEXT['MEDIA_DIRECTORY'] = 'Media mapp';
+$TEXT['MENU'] = 'Meny';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Menyns titel';
+$TEXT['MESSAGE'] = 'Meddelande';
+$TEXT['MODIFY'] = '&Auml;ndra';
+$TEXT['MODIFY_CONTENT'] = 'Redigera inneh&aring;ll';
+$TEXT['MODIFY_SETTINGS'] = 'Redigera inst&auml;llningar';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Modultill&aring;telse';
+$TEXT['MORE'] = 'Mer';
+$TEXT['MOVE_DOWN'] = 'Flytta Ner';
+$TEXT['MOVE_UP'] = 'Flytta Upp';
+$TEXT['MULTIPLE_MENUS'] = 'Flera menyer';
+$TEXT['MULTISELECT'] = 'Flerval';
+$TEXT['NAME'] = 'Namn';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Logga in?';
+$TEXT['NEW_PASSWORD'] = 'Nytt l&ouml;senord';
+$TEXT['NEW_WINDOW'] = 'Nytt f&ouml;nster';
+$TEXT['NEXT'] = 'N&auml;sta';
+$TEXT['NEXT_PAGE'] = 'N&auml;sta sida';
+$TEXT['NO'] = 'Nej';
+$TEXT['NONE'] = 'Ingen';
+$TEXT['NONE_FOUND'] = 'Inget hittades';
+$TEXT['NOT_FOUND'] = 'Hittades inte';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Inget resultat';
+$TEXT['OF'] = 'Av';
+$TEXT['ON'] = 'Den';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Val';
+$TEXT['OTHERS'] = 'Andra';
+$TEXT['OUT_OF'] = 'Utav';
+$TEXT['OVERWRITE_EXISTING'] = 'Skriv &ouml;ver nuvarande';
+$TEXT['PAGE'] = 'Sida';
+$TEXT['PAGES_DIRECTORY'] = 'Sidors mapp';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Sidors fil&auml;ndelse';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Sidors spr&aring;k';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Sidniv&aring; gr&auml;ns';
+$TEXT['PAGE_SPACER'] = 'Mellanrum sida';
+$TEXT['PAGE_TITLE'] = 'Sidans titel';
+$TEXT['PAGE_TRASH'] = 'Papperskorg';
+$TEXT['PARENT'] = 'Underliggande till';
+$TEXT['PASSWORD'] = 'L&ouml;senord';
+$TEXT['PATH'] = 'S&ouml;kv&auml;g';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP felrapport niv&aring;';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'V&auml;nligen v&auml;lj';
+$TEXT['POST'] = 'Nyhet';
+$TEXT['POSTS_PER_PAGE'] = 'Inl&auml;gg per sida';
+$TEXT['POST_FOOTER'] = 'Nyhet fot';
+$TEXT['POST_HEADER'] = 'Nyhet huvud';
+$TEXT['PREVIOUS'] = 'F&ouml;reg&aring;ende';
+$TEXT['PREVIOUS_PAGE'] = 'F&ouml;reg&aring;ende sida';
+$TEXT['PRIVATE'] = 'Privat';
+$TEXT['PRIVATE_VIEWERS'] = 'Privata anv&auml;ndare';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Offentligt';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radioknapp flera';
+$TEXT['READ'] = 'L&auml;s';
+$TEXT['READ_MORE'] = 'L&auml;s mer';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrerad';
+$TEXT['REGISTERED_VIEWERS'] = 'Registrerade anv&auml;ndare';
+$TEXT['RELOAD'] = 'Ladda Om';
+$TEXT['REMEMBER_ME'] = 'Kom ih&aring;g mig';
+$TEXT['RENAME'] = 'D&ouml;p om';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Obligatoriskt';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = '&Aring;ngra';
+$TEXT['RESIZE'] = 'Storleks&auml;ndra';
+$TEXT['RESIZE_IMAGE_TO'] = 'Storleks&auml;ndra bilden till';
+$TEXT['RESTORE'] = '&Aring;terst&auml;ll';
+$TEXT['RESTORE_DATABASE'] = '&Aring;terst&auml;ll databas';
+$TEXT['RESTORE_MEDIA'] = '&Aring;terst&auml;ll media';
+$TEXT['RESULTS'] = 'Resultat';
+$TEXT['RESULTS_FOOTER'] = 'Resultat fot';
+$TEXT['RESULTS_FOR'] = 'Resultat f&ouml;r';
+$TEXT['RESULTS_HEADER'] = 'Resultat huvud';
+$TEXT['RESULTS_LOOP'] = 'Resultat loop';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Nytt l&ouml;senord igen';
+$TEXT['RETYPE_PASSWORD'] = 'Skriv l&ouml;senordet igen';
+$TEXT['SAME_WINDOW'] = 'Samma f&ouml;nster';
+$TEXT['SAVE'] = 'Spara';
+$TEXT['SEARCH'] = 'S&ouml;k';
+$TEXT['SEARCHING'] = 'S&ouml;ker';
+$TEXT['SECTION'] = 'Sektion';
+$TEXT['SECTION_BLOCKS'] = 'Sektioner block';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Valruta';
+$TEXT['SEND_DETAILS'] = 'Skicka uppgifter';
+$TEXT['SEPARATE'] = 'Separerat';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'Server e-post';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Serveroperativsystem';
+$TEXT['SESSION_IDENTIFIER'] = 'Sessionsidentifierare';
+$TEXT['SETTINGS'] = 'Inst&auml;llningar';
+$TEXT['SHORT'] = 'Ingress';
+$TEXT['SHORT_TEXT'] = 'Kort text';
+$TEXT['SHOW'] = 'Visa';
+$TEXT['SHOW_ADVANCED'] = 'Visa avancerade val';
+$TEXT['SIGNUP'] = 'Registrera';
+$TEXT['SIZE'] = 'Storlek';
+$TEXT['SMART_LOGIN'] = 'Smart inloggning';
+$TEXT['START'] = 'Starta';
+$TEXT['START_PUBLISHING'] = 'Starta publicering';
+$TEXT['SUBJECT'] = '&Auml;mne';
+$TEXT['SUBMISSIONS'] = 'Inskickningar';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Poster som sparas i databasen';
+$TEXT['SUBMISSION_ID'] = 'Inskickning ID';
+$TEXT['SUBMITTED'] = 'Inskickat';
+$TEXT['SUCCESS'] = 'Lyckades';
+$TEXT['SYSTEM_DEFAULT'] = 'Systemets standard';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Systemtill&aring;telse';
+$TEXT['TABLE_PREFIX'] = 'Tabell prefix';
+$TEXT['TARGET'] = 'M&aring;lf&ouml;nster';
+$TEXT['TARGET_FOLDER'] = 'M&aring;lmapp';
+$TEXT['TEMPLATE'] = 'Mall';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Till&aring;telse mallar';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = 'Textruta';
+$TEXT['TEXTFIELD'] = 'Textrad';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Tid';
+$TEXT['TIMEZONE'] = 'Tidzon';
+$TEXT['TIME_FORMAT'] = 'Tidsformat';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Titel';
+$TEXT['TO'] = 'Till';
+$TEXT['TOP_FRAME'] = 'Top frame';
+$TEXT['TRASH_EMPTIED'] = 'Papperskorgen t&ouml;md';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Typ';
+$TEXT['UNDER_CONSTRUCTION'] = 'Under uppbygnad.... Kommer snart';
+$TEXT['UNINSTALL'] = 'Avinstallera';
+$TEXT['UNKNOWN'] = 'Ok&auml;nd';
+$TEXT['UNLIMITED'] = 'Obegr&auml;nsat';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Upp';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Ladda upp filer';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Anv&auml;ndare';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifikation';
+$TEXT['VERSION'] = 'Version';
+$TEXT['VIEW'] = 'Visa';
+$TEXT['VIEW_DELETED_PAGES'] = 'Visa raderade sidor';
+$TEXT['VIEW_DETAILS'] = 'Visa detaljer';
+$TEXT['VISIBILITY'] = 'Synlighetsgrad';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Websida';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Websitens beskrivning';
+$TEXT['WEBSITE_FOOTER'] = 'Websitens fot';
+$TEXT['WEBSITE_HEADER'] = 'Websitens huvud';
+$TEXT['WEBSITE_KEYWORDS'] = 'Websitens nyckelord';
+$TEXT['WEBSITE_TITLE'] = 'Websitens titel';
+$TEXT['WELCOME_BACK'] = 'V&auml;lkommen tillbaka';
+$TEXT['WIDTH'] = 'Bredd';
+$TEXT['WINDOW'] = 'F&ouml;nster';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Skrivr&auml;ttigheter filer';
+$TEXT['WRITE'] = 'Skriv';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG redigerare';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG stil';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Skapa ny grupp';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Rubrik';
+$HEADING['ADD_PAGE'] = 'Skapa ny sida';
+$HEADING['ADD_USER'] = 'Skapa ny anv&auml;ndare';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administrationsverktyg';
+$HEADING['BROWSE_MEDIA'] = 'Mediabibliotek';
+$HEADING['CREATE_FOLDER'] = 'Skapa ny mapp';
+$HEADING['DEFAULT_SETTINGS'] = 'Standardinst&auml;llningar';
+$HEADING['DELETED_PAGES'] = 'Raderade sidor';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Inst&auml;llningar f&ouml;r Filsystem';
+$HEADING['GENERAL_SETTINGS'] = 'Generella inst&auml;llningar';
+$HEADING['INSTALL_LANGUAGE'] = 'Installera spr&aring;k';
+$HEADING['INSTALL_MODULE'] = 'Installera modul';
+$HEADING['INSTALL_TEMPLATE'] = 'Installera mall';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Spr&aring;kdetaljer';
+$HEADING['MANAGE_SECTIONS'] = 'Redigera sektioner';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = '&Auml;ndra avancerade inst&auml;llningar f&ouml;r sidan';
+$HEADING['MODIFY_DELETE_GROUP'] = '&Auml;ndra/radera grupp';
+$HEADING['MODIFY_DELETE_PAGE'] = '&Auml;ndra/radera sida';
+$HEADING['MODIFY_DELETE_USER'] = '&Auml;ndra/radera anv&auml;ndare';
+$HEADING['MODIFY_GROUP'] = '&Auml;ndra grupp';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = '&Auml;ndra F&ouml;rstasidan';
+$HEADING['MODIFY_PAGE'] = '&Auml;ndra sida';
+$HEADING['MODIFY_PAGE_SETTINGS'] = '&Auml;ndra sidans inst&auml;llningar';
+$HEADING['MODIFY_USER'] = '&Auml;ndra anv&auml;ndare';
+$HEADING['MODULE_DETAILS'] = 'Moduldetaljer';
+$HEADING['MY_EMAIL'] = 'Min e-post';
+$HEADING['MY_PASSWORD'] = 'Mitt l&ouml;senord';
+$HEADING['MY_SETTINGS'] = 'Mina uppgifter';
+$HEADING['SEARCH_SETTINGS'] = 'S&ouml;kinst&auml;llningar';
+$HEADING['SERVER_SETTINGS'] = 'Server Inst&auml;llningar';
+$HEADING['TEMPLATE_DETAILS'] = 'Malldetaljer';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Avinstallera spr&aring;k';
+$HEADING['UNINSTALL_MODULE'] = 'Avinstallera modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Avinstallera mall';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Ladda Upp fil(er)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Du har inte till&aring;telse att vara h&auml;r';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'L&ouml;senordet kan bara &auml;ndras max en g&aring;ng per timme';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Kunde inte skicka l&ouml;senordet, v&auml;nligen kontakta administratat&ouml;ren';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'E-postadressen som du skrev in kan inte hittas i v&aring;r databas';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Skriv din e-postadress';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Tyv&auml;rr, du har inte till&aring;telse att titta p&aring; denna sida';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Redan installerat';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kan inte skriva i m&aring;lmappen';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Kan inte avinstallera';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Kan inte avinstallera: filen anv&auml;nds just nu';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Kan inte packa upp filen';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Kan inte ladda upp fil';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Fel vid &ouml;ppnande av fil.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Observera att filen du laddar upp m&aring;ste vara i formatet:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Observera att filen du laddar upp m&aring;ste vara i ett av f&ouml;ljande format:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'G&aring; tillbaka och fyll i alla f&auml;lt';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installerat';
+$MESSAGE['GENERIC_INVALID'] = 'Filen du laddade upp &auml;r ogilltig';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Inte installerat';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'V&auml;nligen ha t&aring;lamod, det h&auml;r kan ta en stund.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'V&auml;nligen kom tillbaka snart...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Avinstallerat';
+$MESSAGE['GENERIC_UPGRADED'] = 'Uppgradering genomf&ouml;rd';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GROUPS_ADDED'] = 'Gruppen lades till';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Vill du verkligen radera gruppen med alla dess anv&auml;ndare?';
+$MESSAGE['GROUPS_DELETED'] = 'Gruppen raderades';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Gruppen m&aring;ste ha ett namn';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Gruppnamnet finns redan';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Ingen grupp hittades';
+$MESSAGE['GROUPS_SAVED'] = 'Gruppen sparades';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Skriv ditt l&ouml;senord';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'L&ouml;senordet &auml;r f&ouml;r l&aring;ngt';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'L&ouml;senordet &auml;r f&ouml;r kort';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Du skrev ingen fil&auml;ndelse';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Du skrev inget nytt namn';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Kan inte radera mappen';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Kan inte radera filen';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Namn&auml;ndring utf&ouml;rdes INTE';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Vill du verkligen radera f&auml;ljande fil/mapp?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Mappen raderades';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Filen raderades';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Mappen finns inte';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Kan inte inkludera ../ i mappens namn';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Det finns redan en mapp med samma namn';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Mappen skapades';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Kunde inte skapa mapp';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Det finns redan en fil med samma namn';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Filen hittades inte';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Kan inte inkludera ../ i namnet';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Kan inte anv&auml;nda index.php som Namn';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Ingen media hittades i mappen';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Namn&auml;ndring utf&ouml;rdes';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' filen laddades upp';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Kan inte ha ../ i mappens m&aring;l';
+$MESSAGE['MEDIA_UPLOADED'] = ' filerna laddades upp';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Tyv&auml;rr, detta formul&auml;r har skickats f&ouml;r m&aring;nga g&aring;nger inom denna timme. F&ouml;rs&ouml;k igen om ett tag.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Verifieringsnumret (ocks&aring; k&auml;nt som Captcha) som du angav &auml;r felaktigt. Om du har problem med att l&auml;sa ut Captcha, v&auml;nligen s&auml;nd email till: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Du m&aring;ste fylla i f&ouml;ljande f&auml;lt';
+$MESSAGE['PAGES_ADDED'] = 'Sidan lades till';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Sidans huvud lades till';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Skriv en titel p&aring; menyn';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Skriv en titel p&aring; sidan';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Fel vid skapande av fil (otillr&auml;cklig till&aring;telse)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Fel vid radering av fil (otillr&auml;cklig till&aring;telse)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Fel vid omordning av sidorna';
+$MESSAGE['PAGES_DELETED'] = 'Sidan raderades';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Vill du verkligen radera sidan med alla dess undersidor?';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Du har inte til&aring;telse att redigera denna sida';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Klicka h&auml;r f&ouml;r att redigera F&ouml;rstasidan';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Kan inte skriva till filen /pages/intro.php (otillr&auml;klig till&aring;telse)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'F&ouml;rstasidan sparades';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Senast redigerad av';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Sidan hittades inte';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Fel n&auml;r sidan sparades';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'En sida med samma eller liknande titel finns redan';
+$MESSAGE['PAGES_REORDERED'] = 'Sidorna omordnades';
+$MESSAGE['PAGES_RESTORED'] = 'Sidan &aring;terskapades';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Tillbaka till Sidor';
+$MESSAGE['PAGES_SAVED'] = 'Sidan sparades';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Sidans inst&auml;llningar sparades';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Sektionens inst&auml;llningar sparades';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Det (nuvarande) l&ouml;senordet du skrev &auml;r inte r&auml;tt';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Uppgifterna sparades';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-postadressen uppdaterades';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'L&ouml;senordet &auml;ndrades';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Observera: Om du klickar p&aring; denna knapp s&aring; f&ouml;rsvinner all ny information som inte sparats';
+$MESSAGE['SETTINGS_SAVED'] = 'Inst&auml;llningarna sparades';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Kunde inte &ouml;ppna konfigurationsfilen';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Kan inte skriva till konfigurationsfilen';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Observera: detta rekomenderas endast f&ouml;r tillf&auml;llig pr&ouml;vning av sidorna';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Du m&aring;ste skriva en e-postadress';
+$MESSAGE['START_CURRENT_USER'] = 'Du &auml;r inloggad som:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'VARNING, installationsmappen finns fortfarande kvar!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'V&auml;lkommen till administrationen av WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Observera: f&ouml;r att &auml;ndra Mall, m&aring;ste du g&aring; till Sektionen Inst&auml;llningar';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Anv&auml;ndaren lades till';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Observera: Dessa f&auml;lt ska du bara skriva i om du vill &Auml;NDRA L&ouml;senordet';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Vill du verkligen radera anv&auml;ndaren?';
+$MESSAGE['USERS_DELETED'] = 'Anv&auml;ndaren Raderades';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'E-post adressen du skrev finns redan i v&aring;r Databas';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'E-post adressen &auml;r felaktig';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Ingen grupp valdes';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'L&ouml;senorden du skrev var inte lika';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'L&ouml;senordet &auml;r for kort';
+$MESSAGE['USERS_SAVED'] = 'Anv&auml;ndaren sparades';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Behandla anv&auml;ndargrupper och deras system&aring;tkomst...';
+$OVERVIEW['HELP'] = 'Hitta svar p&aring; dina fr&aring;gor (p&aring; engelska)...';
+$OVERVIEW['LANGUAGES'] = 'Behandla WebsiteBaker spr&aring;k...';
+$OVERVIEW['MEDIA'] = 'Redigera inneh&aring;ll i mediabiblioteket...';
+$OVERVIEW['MODULES'] = 'Behandla WebsiteBaker moduler...';
+$OVERVIEW['PAGES'] = 'Redigera dina sidor...';
+$OVERVIEW['PREFERENCES'] = '&Auml;ndra inst&auml;llningar som e-postadress, l&ouml;senord, etc... ';
+$OVERVIEW['SETTINGS'] = '&Auml;ndra inst&auml;llningar f&ouml;r WebsiteBaker...';
+$OVERVIEW['START'] = 'Administration &ouml;versyn';
+$OVERVIEW['TEMPLATES'] = '&Auml;ndra utseendet med mallar...';
+$OVERVIEW['USERS'] = 'Behandla anv&auml;ndare som kan logga in till WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Titta p&aring; dina sidor i ett nytt f&ouml;nster...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/SE.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/ES.php
===================================================================
--- tags/2.8.3/wb/languages/ES.php	(nonexistent)
+++ tags/2.8.3/wb/languages/ES.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'ES';
+$language_name = 'Spanish';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Samuel Mateo, Jr. | samuelmateo.com';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Acceso';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Add-ons';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Recuperar los detalles de registro';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupos';
+$MENU['HELP'] = 'Ayuda';
+$MENU['LANGUAGES'] = 'Lenguajes';
+$MENU['LOGIN'] = 'Entrar';
+$MENU['LOGOUT'] = 'Salir';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'M&oacute;dulos';
+$MENU['PAGES'] = 'P&aacute;ginas';
+$MENU['PREFERENCES'] = 'Preferencias';
+$MENU['SETTINGS'] = 'Configuraci&oacute;n';
+$MENU['START'] = 'Inicio';
+$MENU['TEMPLATES'] = 'Plantillas';
+$MENU['USERS'] = 'Usuarios';
+$MENU['VIEW'] = 'Vista Preliminar';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Abrir Cuenta';
+$TEXT['ACTIONS'] = 'Acciones';
+$TEXT['ACTIVE'] = 'Activo';
+$TEXT['ADD'] = 'Agregar';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Agregar Secci&oacute;n';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administraci&oacute;n';
+$TEXT['ADMINISTRATION_TOOL'] = 'Herramienta de Administraci&oacute;n';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administradores';
+$TEXT['ADVANCED'] = 'Avanzado';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Espectadores Permitidos';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Selecciones M&uacute;ltiples';
+$TEXT['ALL_WORDS'] = 'Todas las palabras';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'An&oacute;nimo';
+$TEXT['ANY_WORDS'] = 'Alguna de las palabras';
+$TEXT['APP_NAME'] = 'Nombre de aplicaci&oacute;n';
+$TEXT['ARE_YOU_SURE'] = '&iquest;Esta seguro?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Volver';
+$TEXT['BACKUP'] = 'Copia de seguridad';
+$TEXT['BACKUP_ALL_TABLES'] = 'Reserva todas las Tablas de la Base de Datos';
+$TEXT['BACKUP_DATABASE'] = 'Base de datos de seguridad';
+$TEXT['BACKUP_MEDIA'] = 'Copia de seguridad de los Medios';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Reserva solamente las tablas de WB';
+$TEXT['BASIC'] = 'Basico';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Cancelar';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Verificaci&oacute;n de Captcha (clave)';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Cambiar';
+$TEXT['CHANGES'] = 'Cambios';
+$TEXT['CHANGE_SETTINGS'] = 'Cambiar Configuraci&oacute;n';
+$TEXT['CHARSET'] = 'Conjunto de Caraceteres';
+$TEXT['CHECKBOX_GROUP'] = 'Grupo de Checkbox ';
+$TEXT['CLOSE'] = 'Cerrar';
+$TEXT['CODE'] = 'C&oacute;digo';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Colapsar';
+$TEXT['COMMENT'] = 'Comentario';
+$TEXT['COMMENTING'] = 'Comentando';
+$TEXT['COMMENTS'] = 'Comentarios';
+$TEXT['CREATE_FOLDER'] = 'Crear Carpeta';
+$TEXT['CURRENT'] = 'Corriente';
+$TEXT['CURRENT_FOLDER'] = 'Carpeta Actual';
+$TEXT['CURRENT_PAGE'] = 'P&aacute;gina Actual';
+$TEXT['CURRENT_PASSWORD'] = 'Contrase&ntilde;a Actual';
+$TEXT['CUSTOM'] = 'Personalizado';
+$TEXT['DATABASE'] = 'Base de datos';
+$TEXT['DATE'] = 'Fecha';
+$TEXT['DATE_FORMAT'] = 'Formato de Fecha';
+$TEXT['DEFAULT'] = 'Original';
+$TEXT['DEFAULT_CHARSET'] = 'Conjunto de caracteres por defecto';
+$TEXT['DEFAULT_TEXT'] = 'Texto Predeterminado';
+$TEXT['DELETE'] = 'Eliminar';
+$TEXT['DELETED'] = 'Eliminado';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Descripci&oacute;n';
+$TEXT['DESIGNED_FOR'] = 'Dise&ntilde;ado para';
+$TEXT['DIRECTORIES'] = 'Directorios';
+$TEXT['DIRECTORY_MODE'] = 'Modo de Directorios';
+$TEXT['DISABLED'] = 'Deshabilitado';
+$TEXT['DISPLAY_NAME'] = 'Mostrar Nombre';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Direcci&oacute;n de Email';
+$TEXT['EMPTY_TRASH'] = 'Vaciar Papelera';
+$TEXT['ENABLED'] = 'Habilitado';
+$TEXT['END'] = 'Fin';
+$TEXT['ERROR'] = 'Error';
+$TEXT['EXACT_MATCH'] = 'Frase exacta';
+$TEXT['EXECUTE'] = 'Ejecuci&oacute;n';
+$TEXT['EXPAND'] = 'Expandir';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Campo';
+$TEXT['FILE'] = 'Archivo';
+$TEXT['FILES'] = 'Archivos';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Permisos del Sistema de Archivos';
+$TEXT['FILE_MODE'] = 'Modo de Archivo';
+$TEXT['FINISH_PUBLISHING'] = 'Terminar Publicaci&oacute;n';
+$TEXT['FOLDER'] = 'Carpeta';
+$TEXT['FOLDERS'] = 'Carpetas';
+$TEXT['FOOTER'] = 'Pie de p&aacute;gina';
+$TEXT['FORGOTTEN_DETAILS'] = '&iquest;Lo ha olvidado?';
+$TEXT['FORGOT_DETAILS'] = '&iquest;Olvid&oacute; los detalles?';
+$TEXT['FROM'] = 'De';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Nombre Completo';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupo';
+$TEXT['HEADER'] = 'Encabezado';
+$TEXT['HEADING'] = 'Encabezado';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Altura';
+$TEXT['HIDDEN'] = 'Oculto';
+$TEXT['HIDE'] = 'Ocultar';
+$TEXT['HIDE_ADVANCED'] = 'Ocultar Opciones Avanzadas';
+$TEXT['HOME'] = 'Inicio';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirecci&oacute;n a la p&aacute;gina de Inicio';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Icono';
+$TEXT['IMAGE'] = 'Imagen';
+$TEXT['INLINE'] = 'En l&iacute;nea';
+$TEXT['INSTALL'] = 'Instalar';
+$TEXT['INSTALLATION'] = 'Instalaci&oacute;n';
+$TEXT['INSTALLATION_PATH'] = 'Ruta de Instalaci&oacute;n';
+$TEXT['INSTALLATION_URL'] = 'URL de Instalaci&oacute;n';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = 'P&aacute;gina Intro';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Palabras Clave';
+$TEXT['LANGUAGE'] = 'Lenguaje';
+$TEXT['LAST_UPDATED_BY'] = 'Editado por';
+$TEXT['LENGTH'] = 'Largo';
+$TEXT['LEVEL'] = 'Nivel';
+$TEXT['LINK'] = 'Enlace';
+$TEXT['LINUX_UNIX_BASED'] = 'basado en Linux/Unix ';
+$TEXT['LIST_OPTIONS'] = 'Opciones de Lista';
+$TEXT['LOGGED_IN'] = 'Conectado';
+$TEXT['LOGIN'] = 'Entrar';
+$TEXT['LONG'] = 'Largo';
+$TEXT['LONG_TEXT'] = 'Texto largo';
+$TEXT['LOOP'] = 'Bucle';
+$TEXT['MAIN'] = 'Principal';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Administrar';
+$TEXT['MANAGE_GROUPS'] = 'Administrar Grupos';
+$TEXT['MANAGE_USERS'] = 'Administrar Usuarios';
+$TEXT['MATCH'] = 'Coincidencia';
+$TEXT['MATCHING'] = 'Coincidencia';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Presentaciones por hora';
+$TEXT['MEDIA_DIRECTORY'] = 'Directorio de Media';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'T&iacute;tulo del Men&uacute;';
+$TEXT['MESSAGE'] = 'Mensaje';
+$TEXT['MODIFY'] = 'Modificar';
+$TEXT['MODIFY_CONTENT'] = 'Modificar Contenido';
+$TEXT['MODIFY_SETTINGS'] = 'Cambiar Configuraci&oacute;n';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Permisos de Modulo';
+$TEXT['MORE'] = 'M&aacute;s';
+$TEXT['MOVE_DOWN'] = 'Bajar';
+$TEXT['MOVE_UP'] = 'Subir';
+$TEXT['MULTIPLE_MENUS'] = 'Men&uacute;s M&uacute;ltiples';
+$TEXT['MULTISELECT'] = 'Multi-selecci&oacute;n';
+$TEXT['NAME'] = 'nombre';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = '&iquest;Necesita Entrar?';
+$TEXT['NEW_PASSWORD'] = 'Nueva Contrase&ntilde;a';
+$TEXT['NEW_WINDOW'] = 'Nueva Ventana';
+$TEXT['NEXT'] = 'Siguiente';
+$TEXT['NEXT_PAGE'] = 'Siguiente P&aacute;gina';
+$TEXT['NO'] = 'No';
+$TEXT['NONE'] = 'Ninguno';
+$TEXT['NONE_FOUND'] = 'Ninguna';
+$TEXT['NOT_FOUND'] = 'No Encontrado.';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Ning&uacute;n Resultado';
+$TEXT['OF'] = 'De';
+$TEXT['ON'] = 'En';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Opci&oacute;n';
+$TEXT['OTHERS'] = 'Otros';
+$TEXT['OUT_OF'] = 'Fuera De';
+$TEXT['OVERWRITE_EXISTING'] = 'Sobreescribir';
+$TEXT['PAGE'] = 'P&aacute;gina';
+$TEXT['PAGES_DIRECTORY'] = 'Directorio de P&aacute;ginas';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Extensi&oacute;n de P&aacute;gina';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Lenguages de P&aacute;gina';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Niveles de P&aacute;ginas';
+$TEXT['PAGE_SPACER'] = 'Separador de P&aacute;gina';
+$TEXT['PAGE_TITLE'] = 'T&iacute;tulo de la P&aacute;gina';
+$TEXT['PAGE_TRASH'] = 'Papelera en P&aacute;gina';
+$TEXT['PARENT'] = 'Padre';
+$TEXT['PASSWORD'] = 'Contrase&ntilde;a';
+$TEXT['PATH'] = 'Ruta de acceso';
+$TEXT['PHP_ERROR_LEVEL'] = 'Nivel de Reporte de Errores de PHP';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Elegir';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Posts Por P&aacute;gina';
+$TEXT['POST_FOOTER'] = 'Post Pie';
+$TEXT['POST_HEADER'] = 'Post Encabezado';
+$TEXT['PREVIOUS'] = 'Anterior';
+$TEXT['PREVIOUS_PAGE'] = 'P&aacute;gina Anterior';
+$TEXT['PRIVATE'] = 'Privada';
+$TEXT['PRIVATE_VIEWERS'] = 'Usuarios privados';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'P&uacute;blica';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Gupo Bot&oacute;n de Radio';
+$TEXT['READ'] = 'Lectura';
+$TEXT['READ_MORE'] = 'M&aacute;s Informaci&oacute;n';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrado';
+$TEXT['REGISTERED_VIEWERS'] = 'Visitantes Registrados';
+$TEXT['RELOAD'] = 'Recargar';
+$TEXT['REMEMBER_ME'] = 'Recu&eacute;rdame';
+$TEXT['RENAME'] = 'Renombrar';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Obligatorio';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Reiniciar';
+$TEXT['RESIZE'] = 'Tama&ntilde;o';
+$TEXT['RESIZE_IMAGE_TO'] = 'Redimensionar imagen a';
+$TEXT['RESTORE'] = 'Restaurar';
+$TEXT['RESTORE_DATABASE'] = 'Restaurar base de datos';
+$TEXT['RESTORE_MEDIA'] = 'Restaurar Medios';
+$TEXT['RESULTS'] = 'Resultados';
+$TEXT['RESULTS_FOOTER'] = 'Pie de P&aacute;gina de Resultados';
+$TEXT['RESULTS_FOR'] = 'Resultados para';
+$TEXT['RESULTS_HEADER'] = 'Encabezado de Resultados';
+$TEXT['RESULTS_LOOP'] = 'Bucle de Resultados';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Repetir Nueva Contrase&ntilde;a';
+$TEXT['RETYPE_PASSWORD'] = 'Repetir Contrase&ntilde;a';
+$TEXT['SAME_WINDOW'] = 'Misma Ventana';
+$TEXT['SAVE'] = 'Guardar';
+$TEXT['SEARCH'] = 'Buscar';
+$TEXT['SEARCHING'] = 'Buscando';
+$TEXT['SECTION'] = 'Secci&oacute;n';
+$TEXT['SECTION_BLOCKS'] = 'Bloques de la Secci&oacute;n';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Caja de selecci&oacute;n';
+$TEXT['SEND_DETAILS'] = 'Enviar Detalles';
+$TEXT['SEPARATE'] = 'Separado';
+$TEXT['SEPERATOR'] = 'Separador';
+$TEXT['SERVER_EMAIL'] = 'Servidor de Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Sistema Operativo del Servidor';
+$TEXT['SESSION_IDENTIFIER'] = 'Identificador de Sesi&oacute;n';
+$TEXT['SETTINGS'] = 'Configuraci&oacute;n';
+$TEXT['SHORT'] = 'Corto';
+$TEXT['SHORT_TEXT'] = 'Texto Corto';
+$TEXT['SHOW'] = 'Ver';
+$TEXT['SHOW_ADVANCED'] = 'Ver Opciones Avanzadas';
+$TEXT['SIGNUP'] = 'Firmar';
+$TEXT['SIZE'] = 'Tama&ntilde;o';
+$TEXT['SMART_LOGIN'] = 'Entrada Inteligente';
+$TEXT['START'] = 'Inicio';
+$TEXT['START_PUBLISHING'] = 'Iniciar Publicaci&oacute;n';
+$TEXT['SUBJECT'] = 'Asunto';
+$TEXT['SUBMISSIONS'] = 'Presentaciones';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Presenciaciones Guardadas en la base de datos';
+$TEXT['SUBMISSION_ID'] = 'Presentaci&oacute;n ID';
+$TEXT['SUBMITTED'] = 'Presentado';
+$TEXT['SUCCESS'] = '&Eacute;xito';
+$TEXT['SYSTEM_DEFAULT'] = 'Original del Sistema';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Permisos de Sistema';
+$TEXT['TABLE_PREFIX'] = 'Prefijo de tablas';
+$TEXT['TARGET'] = 'Objetivo';
+$TEXT['TARGET_FOLDER'] = 'Carpeta';
+$TEXT['TEMPLATE'] = 'Plantilla';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Permisos de plantilla';
+$TEXT['TEXT'] = 'Texto';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['TEXTFIELD'] = 'Campo de texto';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Hora';
+$TEXT['TIMEZONE'] = 'Huso Horario';
+$TEXT['TIME_FORMAT'] = 'Formato de Hora';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'T&iacute;tulo';
+$TEXT['TO'] = 'Para';
+$TEXT['TOP_FRAME'] = 'Marco Superior';
+$TEXT['TRASH_EMPTIED'] = 'Papelera Vac&iacute;a';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tipo';
+$TEXT['UNDER_CONSTRUCTION'] = 'En Construcci&oacute;n';
+$TEXT['UNINSTALL'] = 'Desinstalar';
+$TEXT['UNKNOWN'] = 'Desconocido';
+$TEXT['UNLIMITED'] = 'Ilimitado';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Arriba';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Subir Archivo(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Ususario';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verificaci&oacute;n';
+$TEXT['VERSION'] = 'Versi&oacute;n';
+$TEXT['VIEW'] = 'Ver';
+$TEXT['VIEW_DELETED_PAGES'] = 'Ver P&aacute;ginas Eliminadas';
+$TEXT['VIEW_DETAILS'] = 'Ver Detalles';
+$TEXT['VISIBILITY'] = 'Visibilidad';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Descripci&oacute;n del Web';
+$TEXT['WEBSITE_FOOTER'] = 'Pie de p&aacute;gina del Web';
+$TEXT['WEBSITE_HEADER'] = 'Encabezado del Web';
+$TEXT['WEBSITE_KEYWORDS'] = 'Palabras Clave del Web';
+$TEXT['WEBSITE_TITLE'] = 'T&iacute;tulo del Web';
+$TEXT['WELCOME_BACK'] = 'Bienvenido';
+$TEXT['WIDTH'] = 'Ancho';
+$TEXT['WINDOW'] = 'Ventana';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Permisos de escritura para todos';
+$TEXT['WRITE'] = 'Escritura';
+$TEXT['WYSIWYG_EDITOR'] = 'Editor WYSIWYG';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG';
+$TEXT['YES'] = 'Si';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Agregar Grupo';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Agregar Encabezado';
+$HEADING['ADD_PAGE'] = 'Agregar P&aacute;gina';
+$HEADING['ADD_USER'] = 'Agregar Usuario';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Herramientas de administraci&oacute;n';
+$HEADING['BROWSE_MEDIA'] = 'Explorar Media';
+$HEADING['CREATE_FOLDER'] = 'Crear Carpeta';
+$HEADING['DEFAULT_SETTINGS'] = 'Configuraci&oacute;n Original';
+$HEADING['DELETED_PAGES'] = 'P&aacute;ginas Eliminadas';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Configuraci&oacute;n del sistema de Ficheros';
+$HEADING['GENERAL_SETTINGS'] = 'Configuraci&oacute;n General';
+$HEADING['INSTALL_LANGUAGE'] = 'Instalar Lenguaje';
+$HEADING['INSTALL_MODULE'] = 'Instalar M&oacute;dulo';
+$HEADING['INSTALL_TEMPLATE'] = 'Instalar Plantilla';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detalles del Lenguaje';
+$HEADING['MANAGE_SECTIONS'] = 'Administrar Secciones';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modificar Configuraci&oacute;n Avanzada de P&aacute;gina';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modificar/Eliminar Grupo';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modificar/Eliminar P&aacute;gina';
+$HEADING['MODIFY_DELETE_USER'] = 'Modificar/Eliminar Usuario';
+$HEADING['MODIFY_GROUP'] = 'Modificar Grupo';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modificar P&aacute;gina Intro';
+$HEADING['MODIFY_PAGE'] = 'Modificar P&aacute;gina';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modificar Configuraci&oacute;n de P&aacute;gina';
+$HEADING['MODIFY_USER'] = 'Modificar Usuario';
+$HEADING['MODULE_DETAILS'] = 'Detalles de M&oacute;dulo';
+$HEADING['MY_EMAIL'] = 'Mi Email';
+$HEADING['MY_PASSWORD'] = 'Mi Contrase&ntilde;a';
+$HEADING['MY_SETTINGS'] = 'Mi Configuraci&oacute;n';
+$HEADING['SEARCH_SETTINGS'] = 'Configuraci&oacute;n del Search';
+$HEADING['SERVER_SETTINGS'] = 'Configuraci&oacute;n del Servidor';
+$HEADING['TEMPLATE_DETAILS'] = 'Detalles de Plantilla';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Desinstalar Lenguaje';
+$HEADING['UNINSTALL_MODULE'] = 'Desinstalar M&oacute;dulo';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Desinstalar Plantilla';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Subir Archivo(s)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Privilegios insuficientes para estar aqu&iacute;';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'La contrase&ntilde;a no puede ser cambiada m&aacute;s de una vez por hora';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'No puedo enviarle la contrase&ntilde;a, contacte a su Administrador';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Email no encontrado en base de datos';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Por favor ingrese su direccion de email';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Perd&oacute;n, no tiene permiso para ver esta p&aacute;gina';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Ya instalado';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'No se pudo escribir en el directorio';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'No se puede desinstalar';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Desinstalaci&oacute;n erronea: el archivo seleccionado est&aacute; en uso';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br />No se puede desinstalar el {{type}} <b>{{type_name}}</b>, dado que se est&aacute; utilizando {{pages}}:<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'en la p&aacute;gina siguiente;en las p&aacute;ginas siguientes';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'No se puede desinstalar el template {{name}} dado que se trata del template est&aacute;ndar.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'No se pudo descomprimir (zip)';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'No se pudos subir archivo';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Error abriendo fichero.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'El archivo a subir debe ser del siguiente formato:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'El archivo a subir debe ser de uno de los siguientes formatos:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Vuelva y complete todos los campos';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Instalaci&oacute;n correcta';
+$MESSAGE['GENERIC_INVALID'] = 'Archivo inv&aacute;lido';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'No instalado';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Por favor, sea paciente. Esto puede tardar un rato.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Vuelva pronto...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Desinstalaci&oacute;n correcta';
+$MESSAGE['GENERIC_UPGRADED'] = 'Actualizaci&oacute;n Completada';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GROUPS_ADDED'] = 'Nuevo grupo agregado';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = '&iquest;Est&aacute; seguro que desea eliminar el grupo selecciondo (y los usuarios que lo componen)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupo eliminado';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'El nombre del grupo est&aacute; vaci&oacute;';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Nombre de grupo ya existe';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'No hay ning&ntilde;n grupo';
+$MESSAGE['GROUPS_SAVED'] = 'Grupo guardado';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'ingrese su Contrase&ntilde;a';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Contrase&ntilde;a muy larga';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Contrase&ntilde;a muy corta';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'No ha ingresado una extensi&oacute;n de archivo';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'No ha ingresado un nombre nuevo';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'No se puede eliminar la carpeta seleccionada';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'No se puede eliminar el archivo seleccionado';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'El Nombre no ha sido cambiado';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = '&iquest;Est&aacute; seguro que desea eliminar la siguiente carpeta o archivo?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Carpeta eliminada';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Archivo eliminado';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'El directorio no existe';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'No puede incluir ../ en el nombre de carpeta';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Esa carpeta ya existe';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Carpeta creada';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'No se pudo crear carpeta';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Ese archivo ya existe';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Archivo no encontrado';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'No puede incluir ../ en el nombre';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'No se puede usar index.php como nombre';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'No hay medias en esta carpeta';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'El Nombre ha sido cambiado';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' archivo recibido correctamente';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'No puede tener ../ en el nombre de carpeta';
+$MESSAGE['MEDIA_UPLOADED'] = ' archivos recibidos correctamente';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Disculpe este formulario ha sido enviado demasiadas veces seguidas. Vuelva a intentarlo en una hora.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'El n&uacute;mero de verificaci&oacute;n que ha introducido es incorrecto. Si est&aacute;s teniendo problemas ley&eacute;ndolo, por favor, env&iacute;e un e-mail a: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Debe completar los siguiente campos';
+$MESSAGE['PAGES_ADDED'] = 'P&aacute;gina agregada';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Encabezado de P&aacute;gina agregado';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Inagrese un t&iacute;tulo de men&uacute;';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Ingrese un t&iacute;tulo de p&aacute;gina';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Error creando archivo de acceso en el directorio /pages (privilegios insuficientes)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Error eliminando archivo de acceso en el directorio /pages (privilegios insuficientes)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Error reordenando la p&aacute;gina';
+$MESSAGE['PAGES_DELETED'] = 'P&aacute;gina eliminada';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Est&aacute; seguro que desea eliminar esta p&aacute;gina y todas sus sub-p&aacute;ginas';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Usted no tiene permiso para modificar esta p&aacute;gina';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Pinche aqu&iacute; para modificar Intro';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'No se pudo escribir en el archivo /pages/intro.php (privilegios insuficientes)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Intro guardada';
+$MESSAGE['PAGES_LAST_MODIFIED'] = '&Uacute;ltima modificaci&oacute;n hecha por';
+$MESSAGE['PAGES_NOT_FOUND'] = 'No se ha encontrado la p&aacute;gina';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Error guardando la p&aacute;gina';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Ya existe una p&aacute;gina con un t&iacute;tulo igual o similar';
+$MESSAGE['PAGES_REORDERED'] = 'Orden de p&aacute;gina cambiado';
+$MESSAGE['PAGES_RESTORED'] = 'P&aacute;gina recuperada';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Volver a las p&aacute;ginas';
+$MESSAGE['PAGES_SAVED'] = 'P&aacute;gina guardada correctamente';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Configuraci&oacute;n de P&aacute;gina guardada';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Propiedades de la secci&oacute;n guardadas';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'El (actual) es incorrecto';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detalles guardados';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email guardado';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Contrase&ntilde;a cambiada';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Atenci&oacute;n: Este bot&oacute;n eliminar&aacute; los cambios que no hayan sido guardados.';
+$MESSAGE['SETTINGS_SAVED'] = 'Configuraci&oacute;n guardada';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'No se pudo abrir el archivo de configuraci&oacute;n';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'No se pudo escribir en el archivo de configuraci&oacute;n';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Atenci&oacute;n: S&oacute;lo recomendado para entornos de prueba';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Debe ingresar una direccion de email';
+$MESSAGE['START_CURRENT_USER'] = 'Est&aacute;s conectado como:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'El directorio de instalaci&oacute;n todav&iacute;a existe. Es buena idea eliminarlo!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Bienvenido a la consola de Administraci&oacute;n';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Atenci&oacute;n: para cambiar la plantilla ir a la secci&oacute;n de Configuraci&oacute;n';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Nuevo usuario agregado';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Atenci&oacute;n: Solo debe escribir en estos campos si desea cambiar la contrase&ntilde;a de este usuario.';
+$MESSAGE['USERS_CONFIRM_DELETE'] = '&iquest;Esta seguro que desea eliminar el usuario?';
+$MESSAGE['USERS_DELETED'] = 'Usuario eliminado';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Email en uso';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Email inv&aacute;lido';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Ning&uacute;n grupo fue seleccionado';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Las contrase&ntilde;as no coinciden';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Contrase&ntilde;a muy corta';
+$MESSAGE['USERS_SAVED'] = 'Usuario guardado';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Administrar groups de usuarios y sus permisos...';
+$OVERVIEW['HELP'] = 'Respuestas a tus preguntas...';
+$OVERVIEW['LANGUAGES'] = 'Administrar lenguajes...';
+$OVERVIEW['MEDIA'] = 'Administrar archivos en la carpeta Media...';
+$OVERVIEW['MODULES'] = 'Administrar m&oacute;dulos de WebsiteBaker...';
+$OVERVIEW['PAGES'] = 'Administrar p&aacute;ginas del web...';
+$OVERVIEW['PREFERENCES'] = 'Cambiar preferencias de email, contrase&ntilde;a, etc... ';
+$OVERVIEW['SETTINGS'] = 'Configurar WebsiteBaker...';
+$OVERVIEW['START'] = 'Administraci&oacute;n General';
+$OVERVIEW['TEMPLATES'] = 'Administrar plantillas de apariencia...';
+$OVERVIEW['USERS'] = 'Administrar acceso de usuarios a WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Ver y explorar tu sitio en una nueva ventana...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/ES.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/FR.php
===================================================================
--- tags/2.8.3/wb/languages/FR.php	(nonexistent)
+++ tags/2.8.3/wb/languages/FR.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'FR';
+$language_name = 'Fran&ccedil;ais';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Marin Susac';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Acc&egrave;s';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Extensions';
+$MENU['ADMINTOOLS'] = 'Outils d&apos;administration';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Retrouver vos identifiants de connexion';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Groupes';
+$MENU['HELP'] = 'Aide';
+$MENU['LANGUAGES'] = 'Langues';
+$MENU['LOGIN'] = 'Connexion';
+$MENU['LOGOUT'] = 'D&eacute;connexion';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Modules';
+$MENU['PAGES'] = 'Contenu';
+$MENU['PREFERENCES'] = 'Pr&eacute;f&eacute;rences';
+$MENU['SETTINGS'] = 'R&eacute;glages';
+$MENU['START'] = 'Accueil';
+$MENU['TEMPLATES'] = 'Th&egrave;mes';
+$MENU['USERS'] = 'Utilisateurs';
+$MENU['VIEW'] = 'Voir le site';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Cr&eacute;er un compte';
+$TEXT['ACTIONS'] = 'Actions';
+$TEXT['ACTIVE'] = 'Actif';
+$TEXT['ADD'] = 'Ajouter';
+$TEXT['ADDON'] = 'Extension';
+$TEXT['ADD_SECTION'] = 'Ajouter une rubrique';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administration';
+$TEXT['ADMINISTRATION_TOOL'] = 'Outils d&apos;administration';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administrateurs';
+$TEXT['ADVANCED'] = 'Avanc&eacute;';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Visiteurs autoris&eacute;s';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Autoriser la s&eacute;lection multiple';
+$TEXT['ALL_WORDS'] = 'Tous les mots';
+$TEXT['ANCHOR'] = 'Ancre';
+$TEXT['ANONYMOUS'] = 'Anonyme';
+$TEXT['ANY_WORDS'] = 'Chaque mot';
+$TEXT['APP_NAME'] = 'Nom de l&apos;application';
+$TEXT['ARE_YOU_SURE'] = 'Etes-vous s&ucirc;r ?';
+$TEXT['AUTHOR'] = 'Auteur';
+$TEXT['BACK'] = 'Retour';
+$TEXT['BACKUP'] = 'Sauvegarde';
+$TEXT['BACKUP_ALL_TABLES'] = 'Sauvegarder toutes les tables de la base de donn&eacute;es';
+$TEXT['BACKUP_DATABASE'] = 'Sauvegarde de la base de donn&eacute;es';
+$TEXT['BACKUP_MEDIA'] = 'Sauvegarde des fichiers media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Sauvegarder uniquement les tables li&eacute;es &agrave; WebsiteBaker';
+$TEXT['BASIC'] = 'Classique';
+$TEXT['BLOCK'] = 'Bloc';
+$TEXT['CALENDAR'] = 'Calendrier';
+$TEXT['CANCEL'] = 'Annuler';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Ne peut pas se supprimer lui-m&ecirc;me';
+$TEXT['CAPTCHA_VERIFICATION'] = 'V&eacute;rification par captcha ';
+$TEXT['CAP_EDIT_CSS'] = 'Editer la feuille CSS';
+$TEXT['CHANGE'] = 'Changer';
+$TEXT['CHANGES'] = 'Modifications';
+$TEXT['CHANGE_SETTINGS'] = 'Modifier les r&eacute;glages';
+$TEXT['CHARSET'] = 'Encodage';
+$TEXT['CHECKBOX_GROUP'] = 'Groupe de checkbox';
+$TEXT['CLOSE'] = 'Fermer';
+$TEXT['CODE'] = 'Code';
+$TEXT['CODE_SNIPPET'] = 'Extrait de code';
+$TEXT['COLLAPSE'] = 'Contracter';
+$TEXT['COMMENT'] = 'Commentaire';
+$TEXT['COMMENTING'] = 'Commentaire en cours';
+$TEXT['COMMENTS'] = 'Commentaires';
+$TEXT['CREATE_FOLDER'] = 'Cr&eacute;er un dossier';
+$TEXT['CURRENT'] = 'Courant';
+$TEXT['CURRENT_FOLDER'] = 'Dossier courant';
+$TEXT['CURRENT_PAGE'] = 'Page courante';
+$TEXT['CURRENT_PASSWORD'] = 'Mot de passe actuel';
+$TEXT['CUSTOM'] = 'Adapter';
+$TEXT['DATABASE'] = 'Base de donn&eacute;es';
+$TEXT['DATE'] = 'Date';
+$TEXT['DATE_FORMAT'] = 'Format de la date';
+$TEXT['DEFAULT'] = 'D&eacute;faut';
+$TEXT['DEFAULT_CHARSET'] = 'Encodage par d&eacute;faut';
+$TEXT['DEFAULT_TEXT'] = 'Texte par d&eacute;faut';
+$TEXT['DELETE'] = 'Supprimer';
+$TEXT['DELETED'] = 'Supprim&eacute;';
+$TEXT['DELETE_DATE'] = 'Date de suppression';
+$TEXT['DELETE_ZIP'] = 'Effacer l&apos;archive zip apr&egrave;s d&eacute;compression';
+$TEXT['DESCRIPTION'] = 'Description';
+$TEXT['DESIGNED_FOR'] = 'Cr&eacute;&eacute; par';
+$TEXT['DIRECTORIES'] = 'R&eacute;pertoires';
+$TEXT['DIRECTORY_MODE'] = 'Propri&eacute;t&eacute;s des r&eacute;pertoires';
+$TEXT['DISABLED'] = 'D&eacute;sactiv&eacute;';
+$TEXT['DISPLAY_NAME'] = 'Afficher le nom';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Adresse email';
+$TEXT['EMPTY_TRASH'] = 'Vider la corbeille';
+$TEXT['ENABLED'] = 'Activ&eacute;';
+$TEXT['END'] = 'Fin';
+$TEXT['ERROR'] = 'Erreur';
+$TEXT['EXACT_MATCH'] = 'Terme exact';
+$TEXT['EXECUTE'] = 'Executer';
+$TEXT['EXPAND'] = 'D&eacute;ployer';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Champ';
+$TEXT['FILE'] = 'Fichier';
+$TEXT['FILES'] = 'Fichiers';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Permissions des fichiers syst&egrave;me';
+$TEXT['FILE_MODE'] = 'Propri&eacute;t&eacute;s des fichiers';
+$TEXT['FINISH_PUBLISHING'] = 'Fin de publication';
+$TEXT['FOLDER'] = 'Dossier';
+$TEXT['FOLDERS'] = 'Dossiers';
+$TEXT['FOOTER'] = 'Pied de page';
+$TEXT['FORGOTTEN_DETAILS'] = 'Identifiants oubli&eacute;s ?';
+$TEXT['FORGOT_DETAILS'] = 'Identifiants oubli&eacute;s ?';
+$TEXT['FROM'] = 'de';
+$TEXT['FRONTEND'] = 'Page d&apos;accueil';
+$TEXT['FULL_NAME'] = 'Nom complet';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Groupe';
+$TEXT['HEADER'] = 'Ent&ecirc;te';
+$TEXT['HEADING'] = 'Haut de page';
+$TEXT['HEADING_CSS_FILE'] = 'Feuille css actuelle : ';
+$TEXT['HEIGHT'] = 'Hauteur';
+$TEXT['HIDDEN'] = 'Cach&eacute;';
+$TEXT['HIDE'] = 'Cacher';
+$TEXT['HIDE_ADVANCED'] = 'Cacher les options avanc&eacute;es';
+$TEXT['HOME'] = 'Accueil';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirection de la page d&apos;accueil';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'H&ocirc;te';
+$TEXT['ICON'] = 'Ic&ocirc;ne';
+$TEXT['IMAGE'] = 'Image';
+$TEXT['INLINE'] = 'En ligne';
+$TEXT['INSTALL'] = 'Installer';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['INSTALLATION_PATH'] = 'Chemin d&apos;installation';
+$TEXT['INSTALLATION_URL'] = 'Adresse d&apos;installation (URL)';
+$TEXT['INSTALLED'] = 'install&eacute;';
+$TEXT['INTRO'] = 'Introduction';
+$TEXT['INTRO_PAGE'] = 'Page d&apos;introduction';
+$TEXT['INVALID_SIGNS'] = 'doit d&eacute;buter par une lettre ou comporte des caract&egrave;res invalides';
+$TEXT['KEYWORDS'] = 'Mots cl&eacute;s';
+$TEXT['LANGUAGE'] = 'Langue';
+$TEXT['LAST_UPDATED_BY'] = 'Mis &agrave; jour par';
+$TEXT['LENGTH'] = 'Longueur';
+$TEXT['LEVEL'] = 'Niveau';
+$TEXT['LINK'] = 'Lien';
+$TEXT['LINUX_UNIX_BASED'] = 'Bas&eacute; sur linux/unix';
+$TEXT['LIST_OPTIONS'] = 'Liste des options';
+$TEXT['LOGGED_IN'] = 'Connect&eacute;';
+$TEXT['LOGIN'] = 'Connexion';
+$TEXT['LONG'] = 'Long';
+$TEXT['LONG_TEXT'] = 'Texte long';
+$TEXT['LOOP'] = 'Boucle';
+$TEXT['MAIN'] = 'Principal';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'G&eacute;rer';
+$TEXT['MANAGE_GROUPS'] = 'Gestion des groupes';
+$TEXT['MANAGE_USERS'] = 'Gestion des utilisateurs';
+$TEXT['MATCH'] = 'correspond';
+$TEXT['MATCHING'] = 'Correspondance';
+$TEXT['MAX_EXCERPT'] = 'Nombre maximum de ligne &agrave; retourner';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maximum de soumissions par heure';
+$TEXT['MEDIA_DIRECTORY'] = 'R&eacute;pertoire des fichiers media';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Titre du menu';
+$TEXT['MESSAGE'] = 'Message';
+$TEXT['MODIFY'] = 'Modifier';
+$TEXT['MODIFY_CONTENT'] = 'Modifier le contenu';
+$TEXT['MODIFY_SETTINGS'] = 'Modifier les r&eacute;glages';
+$TEXT['MODULE_ORDER'] = 'Ordre de recherche dans les modules';
+$TEXT['MODULE_PERMISSIONS'] = 'Permissions sur les modules';
+$TEXT['MORE'] = 'Plus';
+$TEXT['MOVE_DOWN'] = 'Au dessous';
+$TEXT['MOVE_UP'] = 'Au dessus';
+$TEXT['MULTIPLE_MENUS'] = 'Menus multiples';
+$TEXT['MULTISELECT'] = 'Multi-s&eacute;lection';
+$TEXT['NAME'] = 'Nom';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'veuillez confirmer votre mot de passe';
+$TEXT['NEED_TO_LOGIN'] = 'Identification obligatoire';
+$TEXT['NEW_PASSWORD'] = 'Nouveau mot de passe';
+$TEXT['NEW_WINDOW'] = 'Nouvelle fen&ecirc;tre';
+$TEXT['NEXT'] = 'Suivant';
+$TEXT['NEXT_PAGE'] = 'Page suivante';
+$TEXT['NO'] = 'Non';
+$TEXT['NONE'] = 'Aucun';
+$TEXT['NONE_FOUND'] = 'Aucune occurence trouv&eacute;e';
+$TEXT['NOT_FOUND'] = 'Non trouv&eacute;';
+$TEXT['NOT_INSTALLED'] = 'non install&eacute;';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Aucun r&eacute;sultat';
+$TEXT['OF'] = 'De';
+$TEXT['ON'] = 'Sur';
+$TEXT['OPEN'] = 'Ouvert';
+$TEXT['OPTION'] = 'Option';
+$TEXT['OTHERS'] = 'Autres';
+$TEXT['OUT_OF'] = 'Hors de';
+$TEXT['OVERWRITE_EXISTING'] = 'Ecraser les donn&eacute;es (si d&eacute;j&agrave; existantes)';
+$TEXT['PAGE'] = 'Page';
+$TEXT['PAGES_DIRECTORY'] = 'R&eacute;pertoire des pages';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Extension des pages';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Langues des pages';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limite de niveau de page';
+$TEXT['PAGE_SPACER'] = 'Espacement de page';
+$TEXT['PAGE_TITLE'] = 'Titre de la page';
+$TEXT['PAGE_TRASH'] = 'Corbeille pour les pages supprim&eacute;es';
+$TEXT['PARENT'] = 'Parent';
+$TEXT['PASSWORD'] = 'Mot de passe';
+$TEXT['PATH'] = 'Chemin';
+$TEXT['PHP_ERROR_LEVEL'] = 'Niveau d&apos;erreur PHP';
+$TEXT['PLEASE_LOGIN'] = 'Merci de vous identifier';
+$TEXT['PLEASE_SELECT'] = 'S&eacute;lectionnez';
+$TEXT['POST'] = 'Actualit&eacute;';
+$TEXT['POSTS_PER_PAGE'] = 'Nombre d&apos;actualit&eacute; par page';
+$TEXT['POST_FOOTER'] = 'Pied de page de l&apos;actualit&eacute;';
+$TEXT['POST_HEADER'] = 'Ent&ecirc;te de l&apos;actualit&eacute;';
+$TEXT['PREVIOUS'] = 'Pr&eacute;c&eacute;dent';
+$TEXT['PREVIOUS_PAGE'] = 'Page pr&eacute;c&eacute;dente';
+$TEXT['PRIVATE'] = 'Priv&eacute;e';
+$TEXT['PRIVATE_VIEWERS'] = 'Utilisateurs priv&eacute;s';
+$TEXT['PROFILES_EDIT'] = 'Modifier le profil';
+$TEXT['PUBLIC'] = 'Publique';
+$TEXT['PUBL_END_DATE'] = 'Date de fin';
+$TEXT['PUBL_START_DATE'] = 'Date de d&eacute;but';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Groupe de boutons radio';
+$TEXT['READ'] = 'Lire';
+$TEXT['READ_MORE'] = 'En savoir plus';
+$TEXT['REDIRECT_AFTER'] = 'Redirection apr&egrave;s coup';
+$TEXT['REGISTERED'] = 'Enregistr&eacute;';
+$TEXT['REGISTERED_VIEWERS'] = 'Utilisateurs enregistr&eacute;s';
+$TEXT['RELOAD'] = 'Actualiser';
+$TEXT['REMEMBER_ME'] = 'Se souvenir de moi';
+$TEXT['RENAME'] = 'Renommer';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Obligatoire';
+$TEXT['REQUIREMENT'] = 'Param&egrave;tres requis';
+$TEXT['RESET'] = 'R&eacute;initialiser';
+$TEXT['RESIZE'] = 'Redimensionner';
+$TEXT['RESIZE_IMAGE_TO'] = 'Redimensionner l&apos;image';
+$TEXT['RESTORE'] = 'Restaurer';
+$TEXT['RESTORE_DATABASE'] = 'Restauration de la base de donn&eacute;es';
+$TEXT['RESTORE_MEDIA'] = 'Restauration des fichiers media';
+$TEXT['RESULTS'] = 'R&eacute;sultats';
+$TEXT['RESULTS_FOOTER'] = 'Pied de page du mod&egrave;le de recherche';
+$TEXT['RESULTS_FOR'] = 'R&eacute;sultats';
+$TEXT['RESULTS_HEADER'] = 'Ent&ecirc;te du mod&egrave;le de recherche';
+$TEXT['RESULTS_LOOP'] = 'Mod&egrave;le d&apos;affichage de la boucle de recherche';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Saisissez &agrave; nouveau votre nouveau mot de passe';
+$TEXT['RETYPE_PASSWORD'] = 'Saisissez &agrave; nouveau votre mot de passe';
+$TEXT['SAME_WINDOW'] = 'Fen&ecirc;tre actuelle (this frame)';
+$TEXT['SAVE'] = 'Sauvegarder';
+$TEXT['SEARCH'] = 'Rechercher';
+$TEXT['SEARCHING'] = 'Rechercher';
+$TEXT['SECTION'] = 'Rubrique';
+$TEXT['SECTION_BLOCKS'] = 'Bloc de rubrique';
+$TEXT['SEC_ANCHOR'] = 'Section d&apos;ancre';
+$TEXT['SELECT_BOX'] = 'S&eacute;lection des bo&icirc;tes';
+$TEXT['SEND_DETAILS'] = 'Valider';
+$TEXT['SEPARATE'] = 'S&eacute;parer';
+$TEXT['SEPERATOR'] = 'S&eacute;parateur';
+$TEXT['SERVER_EMAIL'] = 'Serveur de mail';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Syst&egrave;me d&apos;exploitation du serveur';
+$TEXT['SESSION_IDENTIFIER'] = 'Identifiant de session';
+$TEXT['SETTINGS'] = 'R&eacute;glages';
+$TEXT['SHORT'] = 'Court';
+$TEXT['SHORT_TEXT'] = 'Texte court';
+$TEXT['SHOW'] = 'Montrer';
+$TEXT['SHOW_ADVANCED'] = 'Afficher les options avanc&eacute;es';
+$TEXT['SIGNUP'] = 'Cr&eacute;er un compte';
+$TEXT['SIZE'] = 'Taille';
+$TEXT['SMART_LOGIN'] = 'Identification rapide';
+$TEXT['START'] = 'D&eacute;but';
+$TEXT['START_PUBLISHING'] = 'D&eacute;but de publication';
+$TEXT['SUBJECT'] = 'Sujet';
+$TEXT['SUBMISSIONS'] = 'Soumissions';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Enregistrement des soumissions dans la base de donn&eacute;es';
+$TEXT['SUBMISSION_ID'] = 'Identifiant';
+$TEXT['SUBMITTED'] = 'Envoy&eacute;';
+$TEXT['SUCCESS'] = 'Op&eacute;ration r&eacute;ussie';
+$TEXT['SYSTEM_DEFAULT'] = 'Syst&egrave;me par d&eacute;faut';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Permissions syst&egrave;me';
+$TEXT['TABLE_PREFIX'] = 'Pr&eacute;fixe du nom des tables';
+$TEXT['TARGET'] = 'Cible';
+$TEXT['TARGET_FOLDER'] = 'Dossier de destination';
+$TEXT['TEMPLATE'] = 'Th&egrave;me';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Permissions sur les th&egrave;mes';
+$TEXT['TEXT'] = 'Texte';
+$TEXT['TEXTAREA'] = 'Zone de texte';
+$TEXT['TEXTFIELD'] = 'Champ de texte';
+$TEXT['THEME'] = 'Th&egrave;me graphique de l&apos;interface d&apos;administration';
+$TEXT['TIME'] = 'Heure';
+$TEXT['TIMEZONE'] = 'Fuseau horaire';
+$TEXT['TIME_FORMAT'] = 'Format de l&apos;heure';
+$TEXT['TIME_LIMIT'] = 'D&eacute;lai maximal de recherche par module';
+$TEXT['TITLE'] = 'Titre';
+$TEXT['TO'] = 'vers';
+$TEXT['TOP_FRAME'] = 'Fen&ecirc;tre actuelle compl&egrave;te (top frame)';
+$TEXT['TRASH_EMPTIED'] = 'Corbeille vid&eacute;e';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Editer les styles CSS dans la zone de texte ci-dessous.';
+$TEXT['TYPE'] = 'Type';
+$TEXT['UNDER_CONSTRUCTION'] = 'En construction';
+$TEXT['UNINSTALL'] = 'D&eacute;sinstaller';
+$TEXT['UNKNOWN'] = 'Inconnu';
+$TEXT['UNLIMITED'] = 'Illimit&eacute;';
+$TEXT['UNZIP_FILE'] = 'Uploader et d&eacute;compresser l&apos;archive zip';
+$TEXT['UP'] = 'Haut';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Uploader un/des fichier(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Utilisateur';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'V&eacute;rification';
+$TEXT['VERSION'] = 'Version';
+$TEXT['VIEW'] = 'Aper&ccedil;u';
+$TEXT['VIEW_DELETED_PAGES'] = 'Voir les pages supprim&eacute;es';
+$TEXT['VIEW_DETAILS'] = 'Propri&eacute;t&eacute;s';
+$TEXT['VISIBILITY'] = 'Visibilit&eacute;';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Adresse d&apos;exp&eacute;diteur par d&eacute;faut';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Nom d&apos;exp&eacute;diteur par d&eacute;faut';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Merci d&apos;indiquer un nom et une adresse d&apos;exp&eacute;diteur par d&eacute;faut. Il est recommand&eacute; d&apos;utiliser une adresse d&apos;exp&eacute;diteur de la forme : <strong>admin@yourdomain.com</strong>. Certains op&eacute;rateurs de mail (comme <em>mail.com</em>) peuvent rejeter les mails dont l&apos;adresse d&apos;exp&eacute;diteur est de la forme <em>name@mail.com</em> envoy&eacute;s via un relai, c&apos;est leur mani&egrave;re de lutter contre le spam.<br /><br />Les valeurs par d&eacute;faut sont uniquement utilis&eacute;es si aucune autre valeur n&apos;est sp&eacute;cifi&eacute;e par WebsiteBaker. Si votre serveur supporte <acronym title="Simple mail transfer protocol">SMTP</acronym>, vous pouvez utiliser cette option pour l&apos;envoi d&apos;emails.';
+$TEXT['WBMAILER_FUNCTION'] = 'M&eacute;canisme d&apos;envoi de mail';
+$TEXT['WBMAILER_NOTICE'] = '<strong>Param&egrave;tres du serveur SMTP :</strong><br />Les param&egrave;tres ci-dessous sont uniquement requis si vous souhaitez envoyer des mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. Si vous ne connaissez pas votre serveur SMTP ou si vous n&apos;&ecirc;tes pas s&ucirc;r de la valeur des param&egrave;tres requis, conservez simplement le m&eacute;canisme par d&eacute;faut : PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'Authentification SMTP';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'n&apos;utilisez l&apos;authentification que si votre seveur SMTP ne l&apos;exige';
+$TEXT['WBMAILER_SMTP_HOST'] = 'H&ocirc;te SMTP';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'mot de passe SMTP';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Site internet';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Description du site';
+$TEXT['WEBSITE_FOOTER'] = 'Pied de page du site';
+$TEXT['WEBSITE_HEADER'] = 'Ent&ecirc;te du site';
+$TEXT['WEBSITE_KEYWORDS'] = 'Mots cl&eacute;s du site';
+$TEXT['WEBSITE_TITLE'] = 'Titre du site';
+$TEXT['WELCOME_BACK'] = 'Bienvenue';
+$TEXT['WIDTH'] = 'Largeur';
+$TEXT['WINDOW'] = 'Fen&ecirc;tre';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Permissions d&apos;&eacute;criture sur fichier';
+$TEXT['WRITE'] = 'Ecrire';
+$TEXT['WYSIWYG_EDITOR'] = 'Editeur WYSIWYG';
+$TEXT['WYSIWYG_STYLE'] = 'Style WYSIWYG';
+$TEXT['YES'] = 'Oui';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Les param&egrave;tres requis de l&apos;extension ne sont pas v&eacute;rifi&eacute;s';
+$HEADING['ADD_CHILD_PAGE'] = 'Ajouter une sous-page';
+$HEADING['ADD_GROUP'] = 'Ajouter un groupe';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Ajouter un ent&ecirc;te';
+$HEADING['ADD_PAGE'] = 'Ajouter une page';
+$HEADING['ADD_USER'] = 'Ajouter un utilisateur';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Outils d&apos;administration';
+$HEADING['BROWSE_MEDIA'] = 'Parcourir le dossier media';
+$HEADING['CREATE_FOLDER'] = 'Cr&eacute;er un dossier';
+$HEADING['DEFAULT_SETTINGS'] = 'R&eacute;glages par d&eacute;faut';
+$HEADING['DELETED_PAGES'] = 'Pages effac&eacute;es';
+$HEADING['FILESYSTEM_SETTINGS'] = 'R&eacute;glages des fichiers syst&egrave;mes';
+$HEADING['GENERAL_SETTINGS'] = 'R&eacute;glages';
+$HEADING['INSTALL_LANGUAGE'] = 'Installer une langue';
+$HEADING['INSTALL_MODULE'] = 'Installer un module';
+$HEADING['INSTALL_TEMPLATE'] = 'Installer un th&egrave;me';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Ex&eacute;cuter manuellement les fichiers module';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Propri&eacute;t&eacute;s de la langue';
+$HEADING['MANAGE_SECTIONS'] = 'Gestion des rubriques';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modifier les propri&eacute;t&eacute;s avanc&eacute;es de la page';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modifier/Supprimer un groupe';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modifier/Supprimer une page';
+$HEADING['MODIFY_DELETE_USER'] = 'Modifier/Supprimer un utilisateur';
+$HEADING['MODIFY_GROUP'] = 'Modifier un groupe';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modifier la page d&apos;accueil';
+$HEADING['MODIFY_PAGE'] = 'Modifier une page';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modifier les propri&eacute;t&eacute;s de la page';
+$HEADING['MODIFY_USER'] = 'Modifier un utilisateur';
+$HEADING['MODULE_DETAILS'] = 'Propri&eacute;t&eacute;s du module';
+$HEADING['MY_EMAIL'] = 'Mon email';
+$HEADING['MY_PASSWORD'] = 'Mon mot de passe';
+$HEADING['MY_SETTINGS'] = 'Mes pr&eacute;f&eacute;rences';
+$HEADING['SEARCH_SETTINGS'] = 'R&eacute;glages de la recherche';
+$HEADING['SERVER_SETTINGS'] = 'R&eacute;glages du serveur';
+$HEADING['TEMPLATE_DETAILS'] = 'Propri&eacute;t&eacute;s du th&egrave;me';
+$HEADING['UNINSTALL_LANGUAGE'] = 'D&eacute;sinstaller une langue';
+$HEADING['UNINSTALL_MODULE'] = 'D&eacute;sinstaller un module';
+$HEADING['UNINSTALL_TEMPLATE'] = 'D&eacute;sinstaller un th&egrave;me';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Uploader des fichiers';
+$HEADING['WBMAILER_SETTINGS'] = 'R&eacute;glages de l&apos;envoi de mail';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Droits insuffisants pour &ecirc;tre ici';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'D&eacute;sol&eacute;, vous ne pouvez pas modifier votre mot de passe plus d&apos;une fois par heure';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Impossible de vous renvoyer vos identifiants, merci de contacter l&apos;administrateur du site';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'L&apos;adresse email que vous avez saisi est introuvable dans la base de donn&eacute;es';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Merci de saisir votre adresse email';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'D&eacute;sol&eacute;, aucun contenu actif &agrave; afficher';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'D&eacute;sol&eacute;, vous n&apos;avez pas les droits pour visualiser cette page';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'D&eacute;j&agrave; install&eacute;';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Impossible d&apos;&eacute;crire dans le r&eacute;pertoire cible';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Impossible de d&eacute;sinstaller';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'D&eacute;sinstallation impossible : fichier en cours d&apos;utilisation';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> ne peut pas &ecirc;tre d&eacute;sinstall&eacute; car il est actuellement en cours d&apos;utilisation dans les pages {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'cette page;ces pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Impossible de d&eacute;sinstaller le mod&egrave;le <b>{{name}}</b> parce que c\'est le mod&egrave;le par d&eacute;faut !';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Impossible de d&eacute;zipper le fichier';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Impossible d&apos;uploader le fichier';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Erreur lors de l&apos;ouverture du fichier';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Les fichiers charg&eacute;s doivent avoir les extensions suivantes : ';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Les fichiers charg&eacute;s doivent &ecirc;tre aux formats suivants : ';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Merci de remplir tous les champs';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installation r&eacute;ussie';
+$MESSAGE['GENERIC_INVALID'] = 'Le fichier charg&eacute; est invalide';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Fichier d&apos;extension incorrect. V&eacute;rifiez le fichier zip .';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Fichier de langue incorrect. V&eacute;rifiez le fichier de langue.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Non install&eacte;';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Merci de patienter';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Merci de revenir plus tard';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Violation de s&eacute;curit&eacute;!! l&apos;enregistrement des donn&eacute;es a &eacute;t&eacute; refus&eacute;!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'D&eacute;sinstallation r&eacute;ussie';
+$MESSAGE['GENERIC_UPGRADED'] = 'Mise &agrave; jour r&eacute;ussie';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Site en construction';
+$MESSAGE['GROUPS_ADDED'] = 'Groupe ajout&eacute; avec succ&egrave;s';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Etes-vous s&ucirc;r de vouloir supprimer ce groupe (ainsi que tous les utilisateurs de ce groupe) ?';
+$MESSAGE['GROUPS_DELETED'] = 'Groupe supprim&eacute; avec succ&egrave;s';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Le nom du groupe est vide';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Le nom du groupe est d&eacute;ja existant';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Groupe introuvable';
+$MESSAGE['GROUPS_SAVED'] = 'Groupe sauvegard&eacute; avec succ&egrave;s';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Merci de saisir votre mot de passe';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Votre mot de passe est trop long';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Votre mot de passe est trop court';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Vous n&apos;avez pas entr&eacute; d&apos;extension';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Vous n&apos;avezpas entr&eacute; de nouveau nom';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Impossible de supprimer le dossier s&eacute;lctionn&eacute;';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Impossible de supprimer le fichier s&eacute;lectionn&eacute;';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Impossible de renommer';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Etes-vous s&ucirc;r de vouloir supprimer ce fichier/dossier ?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Dossier supprim&eacute; avec succ&egrave;s';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Fichier supprim&eacute; avec succ&egrave;s';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Le r&eacute;pertoire n&apos;existe pas';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Impossible d&apos;inclure ../ dans le nom du dossier';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Un dossier portant ce nom est d&eacute;j&agrave; existant';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Dossier cr&eacute;&eacute; avec succ&egrave;s';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Impossible de cr&eacute;er le dossier';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Un fichier portant ce nom est d&eacute;j&agrave; existant';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Fichier introuvable';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Impossible d&apos;inclure ../ dans le nom';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Vous ne pouvez pas utiliser index.php comme nom';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Aucun media trouv&eacute; dans ce dossier';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Renommage r&eacute;ussi avec succ&egrave;s';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = 'Le fichier a &eacute;t&eacute; upload&eacute; avec succ&egrave;s';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Impossible d&apos;avoir ../ dans le nom du dossier cible';
+$MESSAGE['MEDIA_UPLOADED'] = 'Les fichiers ont &eacute;t&eacute; upload&eacute;s avec succ&egrave;s';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'D&eacute;sol&eacute; mais ce formulaire est utilis&eacute; trop fr&eacute;quemment en ce moment. Afin de nous aider &agrave; lutter contre le spam, merci de r&eacute;essayer plus tard';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Le num&eacute;ro de v&eacute;rification (Captcha) que vous avez entr&eacute; est incorrect. Si vous rencontrez des probl&egrave;mes quant &agrave; la lecture de ce num&eacute;ro, merci d&apos;envoyer un email &agrave; : <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Vous devez renseigner les champs suivants';
+$MESSAGE['PAGES_ADDED'] = 'Page ajout&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'L&apos;ent&ecirc;te de la page a &eacute;t&eacute; ajout&eacute; avec succ&egrave;s';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Entrez un titre de menu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Entrez un titre de page';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Erreur lors de la cr&eacute;ation d&apos;un fichier dans le r&eacute;pertoire des pages (privil&egrave;ges insuffisants)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Erreur lors de la suppression d&apos;un fichier dans le r&eacute;pertoire des pages (privil&egrave;ges insuffisants)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Erreur lors du r&eacute;agencement des pages';
+$MESSAGE['PAGES_DELETED'] = 'Page supprim&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Etes-vous s&ucirc;r de vouloir supprimer la page s&eacute;lectionn&eacute;e (ainsi que ses sous-rubriques)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Vous n&apos;avez pas les droits pour modifier cette pages';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Cliquez ici pour modifier la page d&apos;introduction';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Impossible d&apos;&eacute;crire dans la page d&apos;introduction (privil&egrave;ges insuffisants)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Page d&apos;introduction sauvegard&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Mis &agrave; jour par';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Page introuvable';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Erreur lors de la sauvegarde de la page';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Une page avec le m&ecirc;me nom existe d&eacute;j&agrave;';
+$MESSAGE['PAGES_REORDERED'] = 'Page r&eacute;ordonn&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_RESTORED'] = 'Page restaur&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Retour au contenu';
+$MESSAGE['PAGES_SAVED'] = 'Page sauvegard&eacute;e avec succ&egrave;s';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Param&egrave;tres de la page sauvegard&eacute;s avec succ&egrave;s';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Les propri&eacute;t&eacute;s de la rubrique ont &eacute;t&eacute; sauvegard&eacute;es avec succ&egrave;s';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Le mot de passe entr&eacute; est incorrect';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Donn&eacute;es sauvegard&eacute;es avec succ&egrave;s';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Adresse email sauvegard&eacute;e avec succ&egrave;s';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Caract&egrave;res invalides utilis&eacute;s dans le mot de passe';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Mot de passe modifi&eacute; avec succ&egrave;s';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'La mise &agrave; jour de l&apos;enregistrement a &eacute;chou&eacute;.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'L&apos;enregistrement a &eacute;t&eacute; mis &agrave; jour avec succ&egrave;s.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'L&apos;ajout d&apos;un nouvel enregistrement a &eacute;chou&eacute;.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'Nouvel enregistrement ajout&eacute; avec succ&egrave;s.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Attention : en cliquant sur ce bouton, vous ne sauvegardez pas vos modifications';
+$MESSAGE['SETTINGS_SAVED'] = 'R&eacute;glages sauvegard&eacute;s avec succ&egrave;s';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Impossible de lire le fichier de configuration';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Impossible d&apos;&eacute;crire dans le fichier de configuration';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Recommand&eacute; uniquement pour les environnement de test';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+Enregistrement d&apos;un nouvel utilisateur.
+
+Loginname: {LOGIN_NAME}
+Code utilisateur: {LOGIN_ID}
+Adresse email: {LOGIN_EMAIL}
+Adresse IP: {LOGIN_IP}
+Date d&apos;enregistrement: {SIGNUP_DATE}
+----------------------------------------
+Ce message &agrave; &eacute;t&eacute; g&eacute;n&eacute;r&eacute; automatiquement!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Bonjour {LOGIN_DISPLAY_NAME},
+
+Vous avez re&ccedil;u ce message car vous avez utilis&eacute; la fonction \'Retrouver vos identifiants de connexion\' depuis votre compte.
+
+Voici vos nouveaux param&egrave;tres de connexion pour \'{LOGIN_WEBSITE_TITLE}\':
+
+Loginname: {LOGIN_NAME}
+Mot de Passe: {LOGIN_PASSWORD}
+
+Nous vous avons attribu&eacute; le mot de passe ci-dessus.
+Cela signifie que vous ne pouvez plus vous servir de votre ancien mot de passe!
+Si vous avez des probl&egrave;mes ou des questions concernant vos nouveaux param&egrave;tres de connexion
+veuillez contacter l&apos;administrateur du site ou l&apos;&eacute;quipe de \'{LOGIN_WEBSITE_TITLE}\'.
+Pensez &agrave; vider le cache de votre navigateur avant de vous reconnecter pour &eacute;viter toute probl&egrave;me &eacute;ventuel.
+
+Bien cordialement
+-------------------------------------
+Ce message &agrave; &eacute;t&eacute; g&eacute;n&eacute;r&eacute; automatiquement!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Bonjour {LOGIN_DISPLAY_NAME},
+
+Bienvenue chez \'{LOGIN_WEBSITE_TITLE}\'.
+
+Voici vos param&egrave;tres de connexion pour \'{LOGIN_WEBSITE_TITLE}\':
+Loginname: {LOGIN_NAME}
+Mot de Passe: {LOGIN_PASSWORD}
+
+Bien cordialement
+
+Remarque:
+Si vous pensez avoir re&ccedil;u ce message par erreur, veuillez l&apos;effacer et ne pas en tenir compte!
+-------------------------------------
+Ce message &agrave; &eacute;t&eacute; g&eacute;n&eacute;r&eacute; automatiquement!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Param&egrave;tres de votre connexion ...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'L&apos;adresse email est obligatoire';
+$MESSAGE['START_CURRENT_USER'] = 'Vous &ecirc;tes connect&eacute; en tant que : ';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Attention : le r&eacute;pertoire d&apos;installation existe toujours';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Bienvenue dans la zone d&apos;administration';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Pour modifier le th&egrave;me du site, vous devez vous rendre dans la rubrique R&eacute;glages';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Utilisateur ajout&eacute; avec succ&egrave;s';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Action refus&eacute;e, Vous ne pouvez pas vous supprimer vous-m&ecirc;me!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Vous ne devez modifier les valeurs ci-dessus uniquement lors d&apos;une modification de mot de passe';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Etes-vous s&ucirc;r de vouloir supprimer cet utilisateur ?';
+$MESSAGE['USERS_DELETED'] = 'Utilisateur supprim&eacute; avec succ&egrave;s';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'L&apos;adresse email est d&eacute;ja utilis&eacute;e';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'L&apos;adresse email n&apos;est pas valide';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Aucun groupe n&apos;a &eacute;t&eacute; s&eacute;lectionn&eacute;';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Le mot de passe est introuvable';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Le mot de passe est trop court';
+$MESSAGE['USERS_SAVED'] = 'Utilisateur sauvegard&eacute; avec succ&egrave;s';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Acc&egrave;s aux outils d&apos;administration de WebsiteBaker...';
+$OVERVIEW['GROUPS'] = 'Gestions des groupes d&apos;utilisateurs et des permissions';
+$OVERVIEW['HELP'] = 'Aide et FAQ sur l&apos;utilisation du site';
+$OVERVIEW['LANGUAGES'] = 'Gestion des langues du site';
+$OVERVIEW['MEDIA'] = 'Gestion des fichiers media (images, t&eacute;l&eacute;chargements...)';
+$OVERVIEW['MODULES'] = 'Gestion des modules du site';
+$OVERVIEW['PAGES'] = 'Gestion du contenu du site';
+$OVERVIEW['PREFERENCES'] = 'Gestion de vos pr&eacute;f&eacute;rences (email, mot de passe...) ';
+$OVERVIEW['SETTINGS'] = 'Configuration du site';
+$OVERVIEW['START'] = 'Pr&eacute;sentation de l&apos;administration';
+$OVERVIEW['TEMPLATES'] = 'Gestion des th&egrave;mes et modification de l&apos;apparence du site';
+$OVERVIEW['USERS'] = 'Gestion des acc&egrave;s au site';
+$OVERVIEW['VIEW'] = 'Aper&ccedil;u du site dans une nouvelle fen&ecirc;tre';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/FR.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/ET.php
===================================================================
--- tags/2.8.3/wb/languages/ET.php	(nonexistent)
+++ tags/2.8.3/wb/languages/ET.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'ET';
+$language_name = 'Eesti';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Heiko H&auml;ng';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Ligip&auml;&auml;s';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Lisad';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Retrieve Login Details';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupid';
+$MENU['HELP'] = 'Abi';
+$MENU['LANGUAGES'] = 'Keeled';
+$MENU['LOGIN'] = 'Logi Sisse';
+$MENU['LOGOUT'] = 'Logi V&auml;lja';
+$MENU['MEDIA'] = 'Meedia';
+$MENU['MODULES'] = 'Moodulid';
+$MENU['PAGES'] = 'Lehed';
+$MENU['PREFERENCES'] = 'Valikud';
+$MENU['SETTINGS'] = 'Seaded';
+$MENU['START'] = 'Start';
+$MENU['TEMPLATES'] = 'Kujundused';
+$MENU['USERS'] = 'Kasutajad';
+$MENU['VIEW'] = 'Vaata';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registreerimine';
+$TEXT['ACTIONS'] = 'Actions';
+$TEXT['ACTIVE'] = 'Aktiivne';
+$TEXT['ADD'] = 'Lisa';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Lisa Sektsioon';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administratsioon';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administration tool';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administraatorid';
+$TEXT['ADVANCED'] = 'Arenenud';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Luba Arvukad Valikud';
+$TEXT['ALL_WORDS'] = 'K&otilde;ik S&otilde;nad';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anon&uuml;&uuml;mne';
+$TEXT['ANY_WORDS'] = 'Mistages S&otilde;nad';
+$TEXT['APP_NAME'] = 'Application Name';
+$TEXT['ARE_YOU_SURE'] = 'Oled sa kindel?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Tagasi';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Backup Database';
+$TEXT['BACKUP_MEDIA'] = 'Backup Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'Alus';
+$TEXT['BLOCK'] = 'Blokeeri';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Katkesta';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Verification';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Muuda';
+$TEXT['CHANGES'] = 'Muudatused';
+$TEXT['CHANGE_SETTINGS'] = 'Muuda Seadeid';
+$TEXT['CHARSET'] = 'Charset';
+$TEXT['CHECKBOX_GROUP'] = 'M&auml;rkeruut Grupp';
+$TEXT['CLOSE'] = 'Sulge';
+$TEXT['CODE'] = 'Kood';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Kollaps';
+$TEXT['COMMENT'] = 'Kommentaar';
+$TEXT['COMMENTING'] = 'Kommenteerimine';
+$TEXT['COMMENTS'] = 'Kommentaarid';
+$TEXT['CREATE_FOLDER'] = 'Loo Kaust';
+$TEXT['CURRENT'] = 'Praegune';
+$TEXT['CURRENT_FOLDER'] = 'Praegune Kaust';
+$TEXT['CURRENT_PAGE'] = 'Praegune Lehek&uuml;lg';
+$TEXT['CURRENT_PASSWORD'] = 'Praegune Parool';
+$TEXT['CUSTOM'] = 'Tava';
+$TEXT['DATABASE'] = 'Andmebaas';
+$TEXT['DATE'] = 'Kuup&auml;ev';
+$TEXT['DATE_FORMAT'] = 'Kuup&auml;eva Formaat';
+$TEXT['DEFAULT'] = 'Vaikimisi';
+$TEXT['DEFAULT_CHARSET'] = 'Default Charset';
+$TEXT['DEFAULT_TEXT'] = 'Vaikimisi Tekst';
+$TEXT['DELETE'] = 'Kustuta';
+$TEXT['DELETED'] = 'Kustutatud';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Kirjeldus';
+$TEXT['DESIGNED_FOR'] = 'Kavandatud';
+$TEXT['DIRECTORIES'] = 'Kataloogid';
+$TEXT['DIRECTORY_MODE'] = 'Kataloogi T&ouml;&ouml;reziim';
+$TEXT['DISABLED'] = 'Blokeeritud';
+$TEXT['DISPLAY_NAME'] = 'Vaate Nimi';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Emaili Aadress';
+$TEXT['EMPTY_TRASH'] = 'T&uuml;hi Pr&uuml;gikast';
+$TEXT['ENABLED'] = 'Lubatud';
+$TEXT['END'] = 'L&otilde;pp';
+$TEXT['ERROR'] = 'Viga';
+$TEXT['EXACT_MATCH'] = 'T&auml;pne Sobivus';
+$TEXT['EXECUTE'] = 'T&auml;ida';
+$TEXT['EXPAND'] = 'Laienda';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'V&auml;li';
+$TEXT['FILE'] = 'Fail';
+$TEXT['FILES'] = 'Failid';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Failis&uuml;steemi &Otilde;igused';
+$TEXT['FILE_MODE'] = 'Faili T&ouml;&ouml;reziim';
+$TEXT['FINISH_PUBLISHING'] = 'L&otilde;peta Avaldamine';
+$TEXT['FOLDER'] = 'Kaust';
+$TEXT['FOLDERS'] = 'Kaustad';
+$TEXT['FOOTER'] = 'Jalus';
+$TEXT['FORGOTTEN_DETAILS'] = 'Unustasid oma detailid?';
+$TEXT['FORGOT_DETAILS'] = 'Unustasid Andmed?';
+$TEXT['FROM'] = 'Kellelt';
+$TEXT['FRONTEND'] = 'Frondi-l&otilde;pp';
+$TEXT['FULL_NAME'] = 'T&auml;isnimi';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupp';
+$TEXT['HEADER'] = 'P&auml;is';
+$TEXT['HEADING'] = 'P&auml;is';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'K&otilde;rgus';
+$TEXT['HIDDEN'] = 'Varjatud';
+$TEXT['HIDE'] = 'Peida';
+$TEXT['HIDE_ADVANCED'] = 'Peida Arenenud Valikud';
+$TEXT['HOME'] = 'Kodu';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Kodulehe &Uuml;mbersuunamine';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Hostia';
+$TEXT['ICON'] = 'Ikoon';
+$TEXT['IMAGE'] = 'Pilt';
+$TEXT['INLINE'] = 'Rivis';
+$TEXT['INSTALL'] = 'Paigalda';
+$TEXT['INSTALLATION'] = 'Installatsioon';
+$TEXT['INSTALLATION_PATH'] = 'Installatsiooni Rada';
+$TEXT['INSTALLATION_URL'] = 'Installatsiooni URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = 'Intro Lehek&uuml;lg';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'M&auml;rks&otilde;nad';
+$TEXT['LANGUAGE'] = 'Keel';
+$TEXT['LAST_UPDATED_BY'] = 'Viimati Uuendatud';
+$TEXT['LENGTH'] = 'Pikkus';
+$TEXT['LEVEL'] = 'Tase';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix tuginev';
+$TEXT['LIST_OPTIONS'] = 'Nimekirja Valikud';
+$TEXT['LOGGED_IN'] = 'Sisse Logitud';
+$TEXT['LOGIN'] = 'Logi Sisse';
+$TEXT['LONG'] = 'Pikk';
+$TEXT['LONG_TEXT'] = 'Pikk Tekst';
+$TEXT['LOOP'] = 'Ts&uuml;kkel';
+$TEXT['MAIN'] = 'Peamine';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Halda';
+$TEXT['MANAGE_GROUPS'] = 'Halda Gruppe';
+$TEXT['MANAGE_USERS'] = 'Halda Kasutajaid';
+$TEXT['MATCH'] = 'Sobima';
+$TEXT['MATCHING'] = 'Sobiv';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Kaast&ouml;id Tunnis';
+$TEXT['MEDIA_DIRECTORY'] = 'Meedia Kataloog';
+$TEXT['MENU'] = 'Men&uuml;&uuml;';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Men&uuml;&uuml; Pealkiri';
+$TEXT['MESSAGE'] = 'Teade';
+$TEXT['MODIFY'] = 'Muuda';
+$TEXT['MODIFY_CONTENT'] = 'Muuda Sisu';
+$TEXT['MODIFY_SETTINGS'] = 'Muuda Seadeid';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Mooduli &Otilde;igused';
+$TEXT['MORE'] = 'Rohkem';
+$TEXT['MOVE_DOWN'] = 'Liigu Alla';
+$TEXT['MOVE_UP'] = 'Liigu &Uuml;lesse';
+$TEXT['MULTIPLE_MENUS'] = 'Arvukas Men&uuml;&uuml;\'s';
+$TEXT['MULTISELECT'] = 'Multi-valik';
+$TEXT['NAME'] = 'Nimi';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Vajad sisselogimist?';
+$TEXT['NEW_PASSWORD'] = 'Uus Parool';
+$TEXT['NEW_WINDOW'] = 'Uus Aken';
+$TEXT['NEXT'] = 'J&auml;rgmine';
+$TEXT['NEXT_PAGE'] = 'J&auml;rgmine Lehek&uuml;lg';
+$TEXT['NO'] = 'Ei';
+$TEXT['NONE'] = 'Mitte &Uuml;kski';
+$TEXT['NONE_FOUND'] = 'Ei Leitud';
+$TEXT['NOT_FOUND'] = 'Ei Leitud';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Tulemusi Ei Ole';
+$TEXT['OF'] = 'Of';
+$TEXT['ON'] = 'Edasi';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Valikud';
+$TEXT['OTHERS'] = 'Teise';
+$TEXT['OUT_OF'] = 'Out Of';
+$TEXT['OVERWRITE_EXISTING'] = 'Kirjuta olemasolev &uuml;le';
+$TEXT['PAGE'] = 'Lehek&uuml;lg';
+$TEXT['PAGES_DIRECTORY'] = 'Lehek&uuml;lgede Kataloog';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Lehek&uuml;lje Ulatus';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Lehek&uuml;lje Keeled';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Lehek&uuml;lje Taseme Limiit';
+$TEXT['PAGE_SPACER'] = 'Lehek&uuml;lje Vahepuks';
+$TEXT['PAGE_TITLE'] = 'Lehek&uuml;lje Pealkiri';
+$TEXT['PAGE_TRASH'] = 'Lehek&uuml;lje Pr&uuml;gi';
+$TEXT['PARENT'] = 'Vanem';
+$TEXT['PASSWORD'] = 'Parool';
+$TEXT['PATH'] = 'Rada';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Vea Esitamise Tase';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Palun vali';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Postitusi Lehele';
+$TEXT['POST_FOOTER'] = 'Posti Jalus';
+$TEXT['POST_HEADER'] = 'Posti P&auml;is';
+$TEXT['PREVIOUS'] = 'Eelmine';
+$TEXT['PREVIOUS_PAGE'] = 'Eelmine lehek&uuml;lg';
+$TEXT['PRIVATE'] = 'Privaatne';
+$TEXT['PRIVATE_VIEWERS'] = 'Privaatsed Vaatajad';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Avalik';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Nupu Grupp';
+$TEXT['READ'] = 'Loe';
+$TEXT['READ_MORE'] = 'Loe Rohkem';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registreeritud';
+$TEXT['REGISTERED_VIEWERS'] = 'Registered Viewers';
+$TEXT['RELOAD'] = 'Lae Uuesti';
+$TEXT['REMEMBER_ME'] = 'Pea Mind Meeles';
+$TEXT['RENAME'] = 'Nimeta &Uuml;mber';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Required';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Tagasta';
+$TEXT['RESIZE'] = 'Re-size';
+$TEXT['RESIZE_IMAGE_TO'] = 'Resize Image To';
+$TEXT['RESTORE'] = 'Restore';
+$TEXT['RESTORE_DATABASE'] = 'Restore Database';
+$TEXT['RESTORE_MEDIA'] = 'Restore Media';
+$TEXT['RESULTS'] = 'Tulemused';
+$TEXT['RESULTS_FOOTER'] = 'Tulemuste Jalus';
+$TEXT['RESULTS_FOR'] = 'Tulemused';
+$TEXT['RESULTS_HEADER'] = 'Tulemuste P&auml;is';
+$TEXT['RESULTS_LOOP'] = 'Tulemuste Ts&uuml;kkel';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Korda Uut Parooli';
+$TEXT['RETYPE_PASSWORD'] = 'Korda Parooli';
+$TEXT['SAME_WINDOW'] = 'Sama Aken';
+$TEXT['SAVE'] = 'Salvesta';
+$TEXT['SEARCH'] = 'Otsi';
+$TEXT['SEARCHING'] = 'Otsib';
+$TEXT['SECTION'] = 'Sektsioon';
+$TEXT['SECTION_BLOCKS'] = 'Sektsiooni Blokid';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Selekteeri Kast';
+$TEXT['SEND_DETAILS'] = 'Saada detailid';
+$TEXT['SEPARATE'] = 'Eralduma';
+$TEXT['SEPERATOR'] = 'Seperator';
+$TEXT['SERVER_EMAIL'] = 'Serveri Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Serveri Operatsioonis&uuml;steem';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Identifier';
+$TEXT['SETTINGS'] = 'Seaded';
+$TEXT['SHORT'] = 'L&uuml;hike';
+$TEXT['SHORT_TEXT'] = 'L&uuml;hike Tekst';
+$TEXT['SHOW'] = 'N&auml;ita';
+$TEXT['SHOW_ADVANCED'] = 'N&auml;ita Arenenud Valikuid';
+$TEXT['SIGNUP'] = 'Registreeri';
+$TEXT['SIZE'] = 'Suurus';
+$TEXT['SMART_LOGIN'] = 'Nutikas Sisselogimine';
+$TEXT['START'] = 'Alusta';
+$TEXT['START_PUBLISHING'] = 'Alusta Avaldamist';
+$TEXT['SUBJECT'] = 'Pealkiri';
+$TEXT['SUBMISSIONS'] = 'Kaast&ouml;&ouml;d';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Kaast&ouml;&ouml;d Salvestatud Andmebaasi';
+$TEXT['SUBMISSION_ID'] = 'Kaast&ouml;&ouml; ID';
+$TEXT['SUBMITTED'] = 'Saadetud';
+$TEXT['SUCCESS'] = 'Edu';
+$TEXT['SYSTEM_DEFAULT'] = 'S&uuml;steemi Vaikimisi Valik';
+$TEXT['SYSTEM_PERMISSIONS'] = 'S&uuml;steemi &Otilde;igused';
+$TEXT['TABLE_PREFIX'] = 'Tabelite Prefiks';
+$TEXT['TARGET'] = 'Sihtm&auml;rk';
+$TEXT['TARGET_FOLDER'] = 'Siht kaust';
+$TEXT['TEMPLATE'] = 'Kujundus';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Kujunduse &Otilde;igused';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Tekstikast';
+$TEXT['TEXTFIELD'] = 'Tekstilahter';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Aeg';
+$TEXT['TIMEZONE'] = 'Ajatsoon';
+$TEXT['TIME_FORMAT'] = 'Aja Formaat';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Pealkiri';
+$TEXT['TO'] = 'Kellele';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = 'Pr&uuml;gikast T&uuml;hjendatud';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'T&uuml;&uuml;p';
+$TEXT['UNDER_CONSTRUCTION'] = 'Ehitamisel';
+$TEXT['UNINSTALL'] = 'Eemalda';
+$TEXT['UNKNOWN'] = 'Teadmata';
+$TEXT['UNLIMITED'] = 'Piiramatu';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = '&Uuml;lesse';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Saada Fail(id)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Kasutaja';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verification';
+$TEXT['VERSION'] = 'Versioon';
+$TEXT['VIEW'] = 'Vaata';
+$TEXT['VIEW_DELETED_PAGES'] = 'Vaata Kustutatud Lehek&uuml;lgi';
+$TEXT['VIEW_DETAILS'] = 'Vaata Detaile';
+$TEXT['VISIBILITY'] = 'N&auml;htavus';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Veebisait';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Veebisaidi Kirjeldus';
+$TEXT['WEBSITE_FOOTER'] = 'Veebisaidi Jalus';
+$TEXT['WEBSITE_HEADER'] = 'Veebisaidi P&auml;is';
+$TEXT['WEBSITE_KEYWORDS'] = 'Veebisaidi M&auml;rks&otilde;nad';
+$TEXT['WEBSITE_TITLE'] = 'Veebisaidi Pealkiri';
+$TEXT['WELCOME_BACK'] = 'Teretulemast tagasi';
+$TEXT['WIDTH'] = 'Laius';
+$TEXT['WINDOW'] = 'Aken';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
+$TEXT['WRITE'] = 'Kirjuta';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Stiil';
+$TEXT['YES'] = 'Jah';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Lisa Grupp';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Add Heading';
+$HEADING['ADD_PAGE'] = 'Lisa Leht';
+$HEADING['ADD_USER'] = 'Lisa Kasutaja';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administration Tools';
+$HEADING['BROWSE_MEDIA'] = 'Sirvi Meediat';
+$HEADING['CREATE_FOLDER'] = 'Loo Kaust';
+$HEADING['DEFAULT_SETTINGS'] = 'Vaikimisi Seaded';
+$HEADING['DELETED_PAGES'] = 'Kustutatud Lehed';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Failis&uuml;steemi Seaded';
+$HEADING['GENERAL_SETTINGS'] = '&Uuml;ldised Seaded';
+$HEADING['INSTALL_LANGUAGE'] = 'Paigalda Keel';
+$HEADING['INSTALL_MODULE'] = 'Paigalda Moodul';
+$HEADING['INSTALL_TEMPLATE'] = 'Paigalda Kujundus';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Keele Detailid';
+$HEADING['MANAGE_SECTIONS'] = 'Muuda Sektsioone';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Muuda Arenenud Lehe Seadeid';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Muuda/Kustuta Grupp';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Muuda/Kustuta Leht';
+$HEADING['MODIFY_DELETE_USER'] = 'Muuda/Kustuta Kasutaja';
+$HEADING['MODIFY_GROUP'] = 'Muuda Gruppi';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Muuda Intro Lehte';
+$HEADING['MODIFY_PAGE'] = 'Muuda Lehte';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Muuda Lehe Seadeid';
+$HEADING['MODIFY_USER'] = 'Muuda Kasutajat';
+$HEADING['MODULE_DETAILS'] = 'Mooduli Detailid';
+$HEADING['MY_EMAIL'] = 'Minu Email';
+$HEADING['MY_PASSWORD'] = 'Minu Parool';
+$HEADING['MY_SETTINGS'] = 'Minu Seaded';
+$HEADING['SEARCH_SETTINGS'] = 'Otsingu Seaded';
+$HEADING['SERVER_SETTINGS'] = 'Server Settings';
+$HEADING['TEMPLATE_DETAILS'] = 'Kujunduse Detailid';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Eemalda Keel';
+$HEADING['UNINSTALL_MODULE'] = 'Eemalda Moodul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Eemalda Kujundus';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Saada Fail(id)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Insufficient privelliges to be here';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Parooliei saa taastada rohkem kui &uuml;ks kord tunnis, vabandame';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'V&otilde;imetu emailima parooli, palun kontakteeru s&uuml;steemi administraatoriga';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Sisestatud emaili eileitud andmebaasist';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Palun sisesta oma emaili aadress allapoole';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Vabandame, sul ei ole &otilde;igusi selle lehe vaatamiseks';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Juba paigaldatud';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'V&otilde;imetu kirjutama siht kataloogi';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Cannot uninstall';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Ei saa eemaldada: selekteeritud fail on kasutuses';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Ei saa faili lahti pakkida';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Ei saa faili &uuml;les laadida';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Error opening file.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Pea meeles et &uuml;les laetav fail peab olema j&auml;rgmistes formaatides:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Pea meeles et &uuml;les laetavad failid peavad olema j&auml;rgmistes formaatides:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Palun mine tagasi ja t&auml;ida k&otilde;ik v&auml;ljad';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Edukalt paigaldatud';
+$MESSAGE['GENERIC_INVALID'] = '&Uuml;les laetud fail on vigane';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Ei ole paigaldatud';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Please be patient, this might take a while.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'K&uuml;lasta hiljem uuesti...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Edukalt eemaldatud';
+$MESSAGE['GENERIC_UPGRADED'] = 'Upgraded successfully';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GROUPS_ADDED'] = 'Grupp edukalt lisatud';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Oled sa kindel et tahad seda gruppi kustutada (ja k&otilde;ik kasutajad mis kuuluvad selle alla)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupp edukalt kustutatud';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Grupi nimi on t&uuml;hi';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Group name already exists';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Gruppe ei leitud';
+$MESSAGE['GROUPS_SAVED'] = 'Grupp edukalt salvestatud';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Palun sisesta parool';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Sisestatud parool on liiga pikk';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Sisestatud parool on liiga l&uuml;hike';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Sa ei sisestanud faili ulatust';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Sa ei sisestanud uut nime';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Ei saa selekteeritud kausta kustutada';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Ei saa selekteeritud faili kustutada';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = '&Uuml;mbernimetamine eba&otilde;nnestus';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Oled sa kindel et tahad kustutada j&auml;rgnevat faili v&otilde;i kausta?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Kaust edukalt kustutatud';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Fail edukalt kustutatud';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Ei saa sisaldada ../ kausta nimes';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Sisestatud kausta nimi eksisteerib';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Kaust edukalt loodud';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'V&otilde;imetu looma kausta';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Sisestatud faili nimi eksisteerib';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Faili ei leitud';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Ei saa sisaldada ../ nimes';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Ei saa kasutada index.php nimena';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Meediat ei leitud praeguses kataloogis';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Edukalt &uuml;mber nimetatud';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' fail edukalt &uuml;les laetud';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Cannot have ../ in the folder target';
+$MESSAGE['MEDIA_UPLOADED'] = ' failid edukalt &uuml;les laetud';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Vabandame, see vorm on juba liiga palju kordi selle tunni jooksul saadetud. Palun proovi j&auml;rgmine tund uuesti.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Sa pead detailid sisestama j&auml;rgnevatesse lahtritesse';
+$MESSAGE['PAGES_ADDED'] = 'Lehek&uuml;lg edukalt lisatud';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Lehek&uuml;lje p&auml;is edukalt lisatud';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Sisesta men&uuml;&uuml; pealkiri';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Sisesta lehek&uuml;lje pealkiri';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Viga faili tekitamisel kausta /pages kataloog';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Viga faili kustutamisel kaustast /pages kataloog';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Viga lehek&uuml;lje taaskorrastamisel';
+$MESSAGE['PAGES_DELETED'] = 'Lehek&uuml;lg edukalt kustutatud';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Oled sa kindel et tahad seda lehek&uuml;lge kustutada (ja k&otilde;iki selle alamlehti ka)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Sul pole selle lehek&uuml;lje muutmiseks &otilde;igusi';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Vajuta siia et muta intro lehek&uuml;lge';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Ei saa kirjutada faili /pages/intro.php';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Intro lehek&uuml;lg edukalt salvestatud';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Vimane muudatus';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Lehek&uuml;lge ei leitud';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Viga lehek&uuml;lje salvestamisel';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Lehek&uuml;lg sama v&otilde;i sarnase pealkirjaga eksisteerib';
+$MESSAGE['PAGES_REORDERED'] = 'Lehek&uuml;lje taaskorrastamine &otilde;nnestus';
+$MESSAGE['PAGES_RESTORED'] = 'Lehek&uuml;lg edukalt taastatud';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Naase lehek&uuml;lgedele';
+$MESSAGE['PAGES_SAVED'] = 'Lehek&uuml;lg edukalt salvestatud';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Lehek&uuml;lje seaded edukalt salvestatud';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Sektsiooni atribuudud edukalt salvestatud';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Pragune parool mida sa sisestasid on vigane';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detailid edukalt salvestatud';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email edukalt uuendatud';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Parool edukalt muudetud';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'M&auml;rge: Selle nupu vajutamine algseadistab k&otilde;ik salvestamata failid';
+$MESSAGE['SETTINGS_SAVED'] = 'Seaded edukalt salvestatud';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'V&otilde;imetu avama konfiguratsioonifaili';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Ei saa kirjutada konfiguratsioonifaili';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'M&auml;rge: see on vajalik ainult &uuml;mbruse testimiseks';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Sa pead sisestama emaili aadressi';
+$MESSAGE['START_CURRENT_USER'] = 'Sa oled praegu sisse logitud:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Hoiatus, Installatsiooni kataloog eksisteerib!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Teretulemast WebsiteBaker Administratsiooni';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'M&auml;rge: kujunduse muutmiseks sa pead minema Seadete sektsiooni';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Kasutaja edukalt lisatud';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'M&auml;rge: Sa pead ainult sisestama p&otilde;him&otilde;tted alumistesse lahtritesse kui sa tahad muuta selle kasutaja parooli';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Kas sa oled kindel et tahad seda kasutajat kustutada?';
+$MESSAGE['USERS_DELETED'] = 'Kasutaja edukalt kustutatud';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Sisestatud e-mail on juba kasutusel';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Sisestatud emaili aadress on vigane';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Grupp selekteerimata';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Sisestatud paroolid ei kattu';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Sisestatud parool on liiga l&uuml;hike';
+$MESSAGE['USERS_SAVED'] = 'Kasutaja edukalt salvestatud';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Halda kasutajate gruppe ja nende &otilde;iguseid...';
+$OVERVIEW['HELP'] = 'On k&uuml;simusi? Leia oma vastus...';
+$OVERVIEW['LANGUAGES'] = 'Halda WebsiteBakeri keeli...';
+$OVERVIEW['MEDIA'] = 'Halda faile mis on media kaustas...';
+$OVERVIEW['MODULES'] = 'Halda WebsiteBakeri mooduleid...';
+$OVERVIEW['PAGES'] = 'Halda oma veebisaidi lehek&uuml;lgi...';
+$OVERVIEW['PREFERENCES'] = 'Muuda eelistusi nagu emaili aadress, parool, jne... ';
+$OVERVIEW['SETTINGS'] = 'Muuda seadeid WebsiteBakeri jaoks...';
+$OVERVIEW['START'] = 'Administratsiooni &uuml;levaade';
+$OVERVIEW['TEMPLATES'] = 'Change the look and feel of your website with templates...';
+$OVERVIEW['USERS'] = 'Halda kasutajaid kes saavad logida WebsiteBakerisse...';
+$OVERVIEW['VIEW'] = 'Kiirelt vaata ja lehitse oma veebisaiti uues aknas...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/ET.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/HR.php
===================================================================
--- tags/2.8.3/wb/languages/HR.php	(nonexistent)
+++ tags/2.8.3/wb/languages/HR.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'HR';
+$language_name = 'Hrvatski';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Vedran Presecki';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Pristup';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Dodaci';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Dobivanje detalja lozinke';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupe';
+$MENU['HELP'] = 'Pomo&aelig;';
+$MENU['LANGUAGES'] = 'Jezici';
+$MENU['LOGIN'] = 'Logiranje';
+$MENU['LOGOUT'] = 'Odlogiranje';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Moduli';
+$MENU['PAGES'] = 'Stranice';
+$MENU['PREFERENCES'] = 'Pode&scaron;avanja';
+$MENU['SETTINGS'] = 'Postavke';
+$MENU['START'] = 'Start';
+$MENU['TEMPLATES'] = 'Predlo&scaron;ci';
+$MENU['USERS'] = 'Korisnici';
+$MENU['VIEW'] = 'Pogled';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Logiranje na Account';
+$TEXT['ACTIONS'] = 'Akcije';
+$TEXT['ACTIVE'] = 'Aktivan';
+$TEXT['ADD'] = 'Dodaj';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Dodaj sekciju';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administracija';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administracijski alati';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratori';
+$TEXT['ADVANCED'] = 'Napredno';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Dopu&scaron;teni promatra&egrave;i';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Dopusti vi&scaron;estruki odabir';
+$TEXT['ALL_WORDS'] = 'Sve rije&egrave;i';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'anoniman';
+$TEXT['ANY_WORDS'] = 'Neke rije&egrave;i';
+$TEXT['APP_NAME'] = 'Ime aplikacije';
+$TEXT['ARE_YOU_SURE'] = 'Jeste li sigurni?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Nazad';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backupiraj sve tablice u bazi podataka';
+$TEXT['BACKUP_DATABASE'] = 'Backup baze podataka';
+$TEXT['BACKUP_MEDIA'] = 'Backup Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backupiraj samo WB-specificirane tablice';
+$TEXT['BASIC'] = 'Osnovno';
+$TEXT['BLOCK'] = 'Blokiraj';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Otka&#382;i';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha verifikacija';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Izmjeni';
+$TEXT['CHANGES'] = 'Izmjene';
+$TEXT['CHANGE_SETTINGS'] = 'Promjeni postavke';
+$TEXT['CHARSET'] = 'Postavka znakova';
+$TEXT['CHECKBOX_GROUP'] = 'Ozna&egrave;i kvadrat grupe';
+$TEXT['CLOSE'] = 'Zatvori';
+$TEXT['CODE'] = 'Kod';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Kolaps';
+$TEXT['COMMENT'] = 'Komentar';
+$TEXT['COMMENTING'] = 'Komentiranje';
+$TEXT['COMMENTS'] = 'Komentari';
+$TEXT['CREATE_FOLDER'] = 'napravi direktorij';
+$TEXT['CURRENT'] = 'Postoje&aelig;i';
+$TEXT['CURRENT_FOLDER'] = 'Postoje&aelig;i direktorij';
+$TEXT['CURRENT_PAGE'] = 'Trenutna stranica';
+$TEXT['CURRENT_PASSWORD'] = 'Potoje&aelig;a lozinka';
+$TEXT['CUSTOM'] = 'Korisni&egrave;ki';
+$TEXT['DATABASE'] = 'Baza podataka';
+$TEXT['DATE'] = 'Datum';
+$TEXT['DATE_FORMAT'] = 'Format datuma';
+$TEXT['DEFAULT'] = 'Postoje&aelig;i';
+$TEXT['DEFAULT_CHARSET'] = 'Po&egrave;etna postavka znakova';
+$TEXT['DEFAULT_TEXT'] = 'Postoje&aelig;i tekstt';
+$TEXT['DELETE'] = 'Obri&scaron;i';
+$TEXT['DELETED'] = 'Obrisan';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Opis';
+$TEXT['DESIGNED_FOR'] = 'Dizajniran za';
+$TEXT['DIRECTORIES'] = 'direktoriji';
+$TEXT['DIRECTORY_MODE'] = 'Mod direktorija';
+$TEXT['DISABLED'] = 'Onesposobljen';
+$TEXT['DISPLAY_NAME'] = 'Prika&#382;i ime';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Email adresa';
+$TEXT['EMPTY_TRASH'] = 'Isprazni sme&aelig;e';
+$TEXT['ENABLED'] = 'Omogu&aelig;en';
+$TEXT['END'] = 'Kraj';
+$TEXT['ERROR'] = 'Gre&scaron;ka';
+$TEXT['EXACT_MATCH'] = 'To&egrave;no odgovara';
+$TEXT['EXECUTE'] = 'Izvr&scaron;i';
+$TEXT['EXPAND'] = 'Pro&scaron;iri';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Polje';
+$TEXT['FILE'] = 'File';
+$TEXT['FILES'] = 'Fileovi';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Dopu&scaron;tanja sitema fileova';
+$TEXT['FILE_MODE'] = 'File Mod';
+$TEXT['FINISH_PUBLISHING'] = 'Zavr&scaron;i objavljivanje';
+$TEXT['FOLDER'] = 'Direktorij';
+$TEXT['FOLDERS'] = 'Direktoriji';
+$TEXT['FOOTER'] = 'Podno&#382;je';
+$TEXT['FORGOTTEN_DETAILS'] = 'Zaboravili ste va&scaron;e podatke?';
+$TEXT['FORGOT_DETAILS'] = 'Zaboravili ste datelje?';
+$TEXT['FROM'] = 'Od';
+$TEXT['FRONTEND'] = 'Po&egrave;etak-kraj';
+$TEXT['FULL_NAME'] = 'Puno ime';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupa';
+$TEXT['HEADER'] = 'Zaglavlje';
+$TEXT['HEADING'] = 'Zaglavlje';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Visina';
+$TEXT['HIDDEN'] = 'Skriven';
+$TEXT['HIDE'] = 'Sakrij';
+$TEXT['HIDE_ADVANCED'] = 'Sakrij napredne opcije';
+$TEXT['HOME'] = 'Po&egrave;etak';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirekcija po&egrave;etne stranice';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Ikona';
+$TEXT['IMAGE'] = 'Slika';
+$TEXT['INLINE'] = 'U liniji';
+$TEXT['INSTALL'] = 'Instaliraj';
+$TEXT['INSTALLATION'] = 'Instalacija';
+$TEXT['INSTALLATION_PATH'] = 'Instalacijski dio';
+$TEXT['INSTALLATION_URL'] = 'Instalacija URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = 'Intro Stranica';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Klju&egrave;ne rije&egrave;i';
+$TEXT['LANGUAGE'] = 'Jezik';
+$TEXT['LAST_UPDATED_BY'] = 'Zadnje izmjenjen od';
+$TEXT['LENGTH'] = 'Du&#382;ina';
+$TEXT['LEVEL'] = 'Nivo';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix baziran';
+$TEXT['LIST_OPTIONS'] = 'Lista opcija';
+$TEXT['LOGGED_IN'] = 'Logiran';
+$TEXT['LOGIN'] = 'Logiranje';
+$TEXT['LONG'] = 'Dugo';
+$TEXT['LONG_TEXT'] = 'Dugi tekst';
+$TEXT['LOOP'] = 'Petlja';
+$TEXT['MAIN'] = 'Glevni';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Upravljaj';
+$TEXT['MANAGE_GROUPS'] = 'Upravljanje grupama';
+$TEXT['MANAGE_USERS'] = 'Upravljanje korisnicima';
+$TEXT['MATCH'] = 'Usporedi';
+$TEXT['MATCHING'] = 'Podudaranje';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maximalan podpristup po satu';
+$TEXT['MEDIA_DIRECTORY'] = 'Direktorij medije';
+$TEXT['MENU'] = 'Meni';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Naslov menia';
+$TEXT['MESSAGE'] = 'Poruka';
+$TEXT['MODIFY'] = 'Izmjeni';
+$TEXT['MODIFY_CONTENT'] = 'Izmjeni sadr&#382;aj';
+$TEXT['MODIFY_SETTINGS'] = 'Izmjeni postavke';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Modulske dozvole';
+$TEXT['MORE'] = 'Vi&scaron;e';
+$TEXT['MOVE_DOWN'] = 'Spusti dolje';
+$TEXT['MOVE_UP'] = 'Podigni gore';
+$TEXT['MULTIPLE_MENUS'] = 'Ve&scaron;estruki menii';
+$TEXT['MULTISELECT'] = 'Vi&scaron;estruki odabir';
+$TEXT['NAME'] = 'Ime';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Molimo logirajte se?';
+$TEXT['NEW_PASSWORD'] = 'Nova lozinka';
+$TEXT['NEW_WINDOW'] = 'Novi prozor';
+$TEXT['NEXT'] = 'Slijede&aelig;i';
+$TEXT['NEXT_PAGE'] = 'Nova stranica';
+$TEXT['NO'] = 'Ne';
+$TEXT['NONE'] = 'Nijedan';
+$TEXT['NONE_FOUND'] = 'Nijedan na&eth;en';
+$TEXT['NOT_FOUND'] = 'Neprona&eth;eno';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Nema rezultata';
+$TEXT['OF'] = 'Of';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Opcija';
+$TEXT['OTHERS'] = 'Drugi';
+$TEXT['OUT_OF'] = 'Izvan Of';
+$TEXT['OVERWRITE_EXISTING'] = 'Napi&scaron;ite preko postoje&aelig;eg';
+$TEXT['PAGE'] = 'Strenica';
+$TEXT['PAGES_DIRECTORY'] = 'Direktorij stranica';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'EKstenzije stranice';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Jezici stranice';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Nivo limita stranice';
+$TEXT['PAGE_SPACER'] = 'Razmaknica stranica';
+$TEXT['PAGE_TITLE'] = 'Naslov stranice';
+$TEXT['PAGE_TRASH'] = 'Sme&aelig;e stranice';
+$TEXT['PARENT'] = 'Vezan';
+$TEXT['PASSWORD'] = 'Lozinka';
+$TEXT['PATH'] = 'Dio';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Gre&scaron;ka Izvje&scaron;taj nivoa';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Odaberite';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Broj objava po stranici';
+$TEXT['POST_FOOTER'] = 'Objavi podno&#382;je';
+$TEXT['POST_HEADER'] = 'Objavi zaglavlje';
+$TEXT['PREVIOUS'] = 'Prethodni';
+$TEXT['PREVIOUS_PAGE'] = 'Prethodna stranica';
+$TEXT['PRIVATE'] = 'Privatni';
+$TEXT['PRIVATE_VIEWERS'] = 'Privatni pregledatelji';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Javni';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio gumb grupe';
+$TEXT['READ'] = '&Egrave;itaj';
+$TEXT['READ_MORE'] = '&Egrave;itaj vi&scaron;e';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registriran';
+$TEXT['REGISTERED_VIEWERS'] = 'Registrirani promatra&egrave;i';
+$TEXT['RELOAD'] = 'Ponovo u&egrave;itavanje';
+$TEXT['REMEMBER_ME'] = 'Sjeti me';
+$TEXT['RENAME'] = 'Preimenuj';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Tra&#382;eno';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Resetiraj';
+$TEXT['RESIZE'] = 'Izmjeni veli&egrave;inu';
+$TEXT['RESIZE_IMAGE_TO'] = 'Izmjeni veli&egrave;inu slike na';
+$TEXT['RESTORE'] = 'Povrati';
+$TEXT['RESTORE_DATABASE'] = 'Povrati bazu podataka';
+$TEXT['RESTORE_MEDIA'] = 'Povrati Media';
+$TEXT['RESULTS'] = 'Rezultati';
+$TEXT['RESULTS_FOOTER'] = 'Rezultati podno&#382;ja';
+$TEXT['RESULTS_FOR'] = 'Rezultati za';
+$TEXT['RESULTS_HEADER'] = 'Rezultati zaglavlja';
+$TEXT['RESULTS_LOOP'] = 'Rezultati petlje';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Ponovo otipkaj novu lozinku';
+$TEXT['RETYPE_PASSWORD'] = 'Ponovo otipkaj novu lozinku';
+$TEXT['SAME_WINDOW'] = 'Isti prozor';
+$TEXT['SAVE'] = 'Snimi';
+$TEXT['SEARCH'] = 'Tra&#382;i';
+$TEXT['SEARCHING'] = 'Pretra&#382;ivanje';
+$TEXT['SECTION'] = 'Dio';
+$TEXT['SECTION_BLOCKS'] = 'Kvadrati sekcije';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Ozna&egrave;i kvadrat';
+$TEXT['SEND_DETAILS'] = '&Scaron;aljite podatke';
+$TEXT['SEPARATE'] = 'Odvojen';
+$TEXT['SEPERATOR'] = 'Odvajanje';
+$TEXT['SERVER_EMAIL'] = 'Server Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Serverski operacijski sutav';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Identifier';
+$TEXT['SETTINGS'] = 'Postavke';
+$TEXT['SHORT'] = 'Kratko';
+$TEXT['SHORT_TEXT'] = 'Kratki tekst';
+$TEXT['SHOW'] = 'Prika&#382;i';
+$TEXT['SHOW_ADVANCED'] = 'Prika&#382;i napredne opcije';
+$TEXT['SIGNUP'] = 'Upi&scaron;i se';
+$TEXT['SIZE'] = 'Veli&egrave;ina';
+$TEXT['SMART_LOGIN'] = 'Inteligentno logiranje';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Zapo&egrave;ni objavljivanje';
+$TEXT['SUBJECT'] = 'Subjekt';
+$TEXT['SUBMISSIONS'] = 'Podpristupe';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Podpristupi pohranjeni u bazi podataka';
+$TEXT['SUBMISSION_ID'] = 'Podpristupni ID';
+$TEXT['SUBMITTED'] = 'Pristupljen';
+$TEXT['SUCCESS'] = 'Uspjeh';
+$TEXT['SYSTEM_DEFAULT'] = 'Postoje&aelig;i sistem';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Sistemske dozvole';
+$TEXT['TABLE_PREFIX'] = 'Prefix tablice';
+$TEXT['TARGET'] = 'Cilj';
+$TEXT['TARGET_FOLDER'] = 'Ciljani direktorij';
+$TEXT['TEMPLATE'] = 'Predlo&#382;ak';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Pristup predlo&scaron;cima';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Podru&egrave;je teksta';
+$TEXT['TEXTFIELD'] = 'Pole teksta';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Vrijeme';
+$TEXT['TIMEZONE'] = 'Vremenska zona';
+$TEXT['TIME_FORMAT'] = 'Format vrmena';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Naslov';
+$TEXT['TO'] = 'Za';
+$TEXT['TOP_FRAME'] = 'Gornji okvir';
+$TEXT['TRASH_EMPTIED'] = 'Sme&aelig;e ispra&#382;njeno';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tip';
+$TEXT['UNDER_CONSTRUCTION'] = 'U izradi';
+$TEXT['UNINSTALL'] = 'Deinstaliraj';
+$TEXT['UNKNOWN'] = 'Nepoznat';
+$TEXT['UNLIMITED'] = 'Neograni&egrave;en';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Gore';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Nasnimi fajlove)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Korisnik';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifikacija';
+$TEXT['VERSION'] = 'VVerzija';
+$TEXT['VIEW'] = 'Pogled';
+$TEXT['VIEW_DELETED_PAGES'] = 'Pogledaj obrisane stranice';
+$TEXT['VIEW_DETAILS'] = 'Vidi detalje';
+$TEXT['VISIBILITY'] = 'Vidljivost';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Web stranica';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Opis web stranice';
+$TEXT['WEBSITE_FOOTER'] = 'Podno&#382;je web stranice';
+$TEXT['WEBSITE_HEADER'] = 'Zaglavlje web stranice';
+$TEXT['WEBSITE_KEYWORDS'] = 'Klju&egrave;ne rije&egrave;i web stranice';
+$TEXT['WEBSITE_TITLE'] = 'Ime web stranice';
+$TEXT['WELCOME_BACK'] = 'Dobro do&scaron;li nazad';
+$TEXT['WIDTH'] = '&Scaron;irina';
+$TEXT['WINDOW'] = 'Prozor';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-zapisuju&aelig;i prisup fileovima';
+$TEXT['WRITE'] = 'Pi&scaron;i';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['YES'] = 'Da';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Dodaj grupu';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Dodaj zaglavlje';
+$HEADING['ADD_PAGE'] = 'Dodaj stranicu';
+$HEADING['ADD_USER'] = 'Dodaj korisnika';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administracijski alati';
+$HEADING['BROWSE_MEDIA'] = 'Pogledaj Mediu';
+$HEADING['CREATE_FOLDER'] = 'napravi direktorij';
+$HEADING['DEFAULT_SETTINGS'] = 'Prija&scaron;nje postavke';
+$HEADING['DELETED_PAGES'] = 'Obrisane stranice';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Postavke sistema direktorija';
+$HEADING['GENERAL_SETTINGS'] = 'Glavne postavke';
+$HEADING['INSTALL_LANGUAGE'] = 'Instaliraj jezik';
+$HEADING['INSTALL_MODULE'] = 'Instaliraj module';
+$HEADING['INSTALL_TEMPLATE'] = 'Instaliraj predlo&#382;ak';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detalji jezika';
+$HEADING['MANAGE_SECTIONS'] = 'Upravljaj dijelovima';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Mijenjaj napredne postavke stranice';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Izmjeni/Obri&scaron;i Grupu';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Izmenj/Obri&scaron;i stranicu';
+$HEADING['MODIFY_DELETE_USER'] = 'Izmjeni/Obri&scaron;i korisnika';
+$HEADING['MODIFY_GROUP'] = 'Izmjeni grupu';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modificiraj intro stranicu';
+$HEADING['MODIFY_PAGE'] = 'Izmjeni stranicu';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Mijenjaj postavke stranice';
+$HEADING['MODIFY_USER'] = 'Izmjeni korisnika';
+$HEADING['MODULE_DETAILS'] = 'Detalji modula';
+$HEADING['MY_EMAIL'] = 'Moj Email';
+$HEADING['MY_PASSWORD'] = 'Moja Lozinka';
+$HEADING['MY_SETTINGS'] = 'Moje postavke';
+$HEADING['SEARCH_SETTINGS'] = 'Tra&#382;enje postavki';
+$HEADING['SERVER_SETTINGS'] = 'Postavke servera';
+$HEADING['TEMPLATE_DETAILS'] = 'Detalji predlo&scaron;ka';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Deinstaliraj jezik';
+$HEADING['UNINSTALL_MODULE'] = 'Deinstaliraj module';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Deinstaliraj predlo&#382;ak';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Nasnimi fileove';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Nedovoljne privilegije tu';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Na&#382;alost lozinka ne mo&#382;e biti resetirana/izmjenjena vi&scaron;e od jednom u jednom satu';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Ne mo&#382;emo vam emailom poslati lozinku, molimo kontakirajte sistemskog administratora';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Email adresu koju ste unjeli nemamo upisanu u bazi';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Unesite svoju email adresu ispod';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Nemate dopu&scaron;tenje za gledanje ove stranice';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Ve&aelig; instalirano';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Ne mo&#382;e zapisati u ciljani direktorij';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Ne mo&#382;e deinstalirati';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Ne mo&#382;e deinstalirati: odabrani file je trenutno u upotrebi';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Ne mo&#382;e unzipirati file';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Ne mo&#382;e nasnimiti file';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Gre&scaron;ka pri otvaranju filea.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'File koji nasnimavate mora biti slijede&aelig;eg formata:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'File koji nasnimavate mora biti u jednom od slijede&aelig;ih formata:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Molimo, vratite se nazad i popunite sva polja';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Instaliran uspje&scaron;no';
+$MESSAGE['GENERIC_INVALID'] = 'Instaliran file je nevaljal';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nije instalirano';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Budite strpljivo, ovo mo&#382;e potrajati.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Molimo poku&scaron;ajte ponovo za&egrave;as...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Deinstaliran uspje&scaron;no';
+$MESSAGE['GENERIC_UPGRADED'] = 'Nadogra&eth;en uspje&scaron;no';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Webstranica u izradi';
+$MESSAGE['GROUPS_ADDED'] = 'Grupa je uspje&scaron;no dodana';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Jeste li sigurni da &#382;elite obrisati odabranu gurupu i sve korisnike koji joj pripadaju?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupa je uspje&scaron;no obrisana';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Ime grupe je prazno';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Ime grupe ve&aelig; postoji';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Grupa nije na&eth;ena';
+$MESSAGE['GROUPS_SAVED'] = 'Grupa je uspje&scaron;no snimljena';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Molimo unesite svoju lozinku';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Lozinka je preduga';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Lozinka je prekratka';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Niste unjeli ekstenziju file-a';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Niste unjeli novo ime';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Ne mo&#382;e obrisati odabrani direktorij';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Ne mo&#382;e obrisati odabrani file';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Preimenovanje je neuspje&scaron;no';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Jeste li sigurni da &#382;elite obrisati file ili direktorij?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Folder je uspje&scaron;no obrisan';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'File je uspje&scaron;no obrisan';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Direktorij ne postoji';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Ne mo&#382;e uklju&egrave;iti ../ u ime direktorija';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Direktorij se podudara s imenom koje ste unjeli, a koje ve&aelig; postoji';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Direktorij je uspje&scaron;no stvoren';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Ne mo&#382;e napraviti direktorij';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'File se podudara s imenom koje ste unjeli, a koje ve&aelig; postoji';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'File nije prona&eth;en';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Ne mo&#382;e uklju&egrave;iti ../ u ime';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Ne mo&#382;e koristiti index.php kao ime';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Ni jedna medija nije na&eth;ena u postoje&aelig;em direktoriju';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Preimenovanje je uspje&scaron;no';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' file je uspje&scaron;no nasnimljen';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Ne mo&#382;e ../ u cilj direktorija';
+$MESSAGE['MEDIA_UPLOADED'] = ' fileovi su supje&scaron;no nasnimljeni';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Ova forma je pregledavana previ&scaron;e puta u jednom satu. Molimo poku&scaron;ajte slijede&aelig;i sat.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Broj provjere (poznat kao Captcha) neto&egrave;no je une&scaron;en. Ako imate problema s &egrave;itanjem Captcha, molimo po&scaron;aljite email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Morate unjeti detaljen podatke u nadoilaze&aelig;a polja';
+$MESSAGE['PAGES_ADDED'] = 'Stranica je uspje&scaron;no dodana';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Zaglavlje stranice uspje&scaron;no je dodano';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Unesite naziv menia';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Unesite naslov stranice';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Gre&scaron;ka pri stvaranju pristupnog filea u stranicama direktorija(nedovoljne privilegije)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Gre&scaron;ka pri brisanju pristupnog filea u stranicama direktorija(nedovoljne privilegije)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Gre&scaron;ka pri re-ordering stranice';
+$MESSAGE['PAGES_DELETED'] = 'Stranice su supje&scaron;no obrisane';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Jeste li sigurni da &#382;elite obrisati odabranu stranicu i sve njene podstranice';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Nemate dopu&scaron;tenje za izmjenu stranice';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Kliknite OVDJE za izmjenu intro stranice';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Ne mo&#382;e pisati file /pages/intro.php (nedovoljne privilegije)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Intro stranica je uspje&scaron;no snimljena';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Zadnje izmjene';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Stranica nije na&eth;ena';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Gre&scaron;ka pri snimanju stranice';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Stranica s sli&egrave;nim ili istim imenom ve&aelig; postoji';
+$MESSAGE['PAGES_REORDERED'] = 'Stranice re-ordered uspje&scaron;no';
+$MESSAGE['PAGES_RESTORED'] = 'Stranice su supje&scaron;no obnovljene';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Povratak na stranice';
+$MESSAGE['PAGES_SAVED'] = 'Stranica je uspje&scaron;no snimljena';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Postavke stranice uspje&scaron;no su snimljene';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Sekcijske postavke snimljene uspje&scaron;no';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Une&scaron;ena lozinka nije to&egrave;na';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detalji su uspje&scaron;no snimljeni';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email je snimljen uspje&scaron;no';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Lozinka je uspje&scaron;no izmjenjena';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Obavijest: Pritisnite ovaj gumb za reset svih nesnimljenih izmjena';
+$MESSAGE['SETTINGS_SAVED'] = 'Postavke su uspje&scaron;no snimljene';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Nemogu&aelig;e je otvoriti konfiguracijski file';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Ne mo&#382;e zapisivati u konfiguracijski file';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Obavijest: ovo je preporu&egrave;ljivo samo za uvijete testiranja';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Unesite email adresu';
+$MESSAGE['START_CURRENT_USER'] = 'Trenutno ste logirani kao:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Upozorenje, instalacijski direktoriji nije jo&scaron; obrisan!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Dobro do&scaron;li u WebsiteBaker administraciju';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Obavijest: Za promjenu predlo&scaron;ka idite na dio s Postavkama';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Korisnik je dodan supje&scaron;no';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Obavijest: Trebate samo unjeti vrijednosti u polja ispod ako &#382;elite izmjeniti korisni&egrave;ku lozinku';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Jeste li sigurni da &#382;elite obrisati odabranog korisnika?';
+$MESSAGE['USERS_DELETED'] = 'Korisnik je uspje&scaron;no obrisan';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Une&scaron;en email je ve&aelig; u upotrebi';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Une&scaron;ena email adresa je nepotpuna';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Niti jedna grupa nije odabrana';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Une&scaron;ena lozinka ne odgovara';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Predlo&#382;ena lozinka je prekratka';
+$MESSAGE['USERS_SAVED'] = 'Korisnik je snimljen uspje&scaron;no';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Upravljajte grupama korisnika i njihovim sistemskim dopu&scaron;tenjima.';
+$OVERVIEW['HELP'] = 'Imate pitanje? Prona&eth;ite odgovor...';
+$OVERVIEW['LANGUAGES'] = 'Uredite WebsiteBaker jezike...';
+$OVERVIEW['MEDIA'] = 'Uredite fileove pohranjene u direktoriju "Media"...';
+$OVERVIEW['MODULES'] = 'Uredite WebsiteBaker module...';
+$OVERVIEW['PAGES'] = 'Uredite va&scaron;e web stranice...';
+$OVERVIEW['PREFERENCES'] = 'Izmjenite postavke email adresa, lozinka i sl.... ';
+$OVERVIEW['SETTINGS'] = 'Promjenite postavke za WebsiteBaker...';
+$OVERVIEW['START'] = 'Pregled administracije';
+$OVERVIEW['TEMPLATES'] = 'Promijenite izgled i do&#382;ivljaj va&scaron;eg weba s predlo&scaron;cima...';
+$OVERVIEW['USERS'] = 'Upravljajte korisnicima koji se mogu logirati na WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Brzo pogledajte i listajte Va&scaron; web u novom prozoru...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/HR.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/NL.php
===================================================================
--- tags/2.8.3/wb/languages/NL.php	(nonexistent)
+++ tags/2.8.3/wb/languages/NL.php	(revision 1610)
@@ -0,0 +1,679 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'NL';
+$language_name = 'Nederlands';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Bramus, CodeALot, Luckyluke, Argos';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Toegang';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Extra&rsquo;s';
+$MENU['ADMINTOOLS'] = 'Beheerfuncties';
+$MENU['BREADCRUMB'] = 'U bent hier: ';
+$MENU['FORGOT'] = 'Inloggegevens opnieuw aanvragen';
+$MENU['GROUP'] = 'Groep';
+$MENU['GROUPS'] = 'Groepen';
+$MENU['HELP'] = 'Help';
+$MENU['LANGUAGES'] = 'Talen';
+$MENU['LOGIN'] = 'Inloggen';
+$MENU['LOGOUT'] = 'Uitloggen';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Modules';
+$MENU['PAGES'] = 'Pagina&rsquo;s';
+$MENU['PREFERENCES'] = 'Profiel';
+$MENU['SETTINGS'] = 'Instellingen';
+$MENU['START'] = 'Naar het hoofdmenu';
+$MENU['TEMPLATES'] = 'Templates';
+$MENU['USERS'] = 'Gebruikers';
+$MENU['VIEW'] = 'Website';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Aanmelden als gebruiker';
+$TEXT['ACTIONS'] = 'Acties';
+$TEXT['ACTIVE'] = 'Actief';
+$TEXT['ADD'] = 'Toevoegen';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Toevoegen sectie';
+$TEXT['ADMIN'] = 'Beheer';
+$TEXT['ADMINISTRATION'] = 'Beheer';
+$TEXT['ADMINISTRATION_TOOL'] = 'Beheeropties';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Beheerders';
+$TEXT['ADVANCED'] = 'Geavanceerd';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Toegestane upload-bestanden';
+$TEXT['ALLOWED_VIEWERS'] = 'Toegestane kijkers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Meerdere selecties toestaan';
+$TEXT['ALL_WORDS'] = 'Term of deel van term';
+$TEXT['ANCHOR'] = 'Anker';
+$TEXT['ANONYMOUS'] = 'Anoniem';
+$TEXT['ANY_WORDS'] = 'E&eacute;n van de termen';
+$TEXT['APP_NAME'] = 'Applicatienaam';
+$TEXT['ARE_YOU_SURE'] = 'Weet u het zeker?';
+$TEXT['AUTHOR'] = 'Auteur';
+$TEXT['BACK'] = 'Terug';
+$TEXT['BACKUP'] = 'Backup maken';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup van alle tabellen in de database';
+$TEXT['BACKUP_DATABASE'] = 'Backup van de database maken';
+$TEXT['BACKUP_MEDIA'] = 'Backup van de Media-map maken';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup van alleen WB-gerelateerde tabellen';
+$TEXT['BASIC'] = 'Basis';
+$TEXT['BLOCK'] = 'Blok';
+$TEXT['CALENDAR'] = 'Kalender';
+$TEXT['CANCEL'] = 'Annuleren';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Kan zichzelf verwijderen';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha-verificatie';
+$TEXT['CAP_EDIT_CSS'] = 'Wijzig CSS';
+$TEXT['CHANGE'] = 'Verander';
+$TEXT['CHANGES'] = 'Veranderingen';
+$TEXT['CHANGE_SETTINGS'] = 'Wijzig instellingen';
+$TEXT['CHARSET'] = 'Tekenset';
+$TEXT['CHECKBOX_GROUP'] = 'Aankruisvakjes';
+$TEXT['CLOSE'] = 'Sluiten';
+$TEXT['CODE'] = 'Code';
+$TEXT['CODE_SNIPPET'] = 'Code snippet';
+$TEXT['COLLAPSE'] = 'Inklappen';
+$TEXT['COMMENT'] = 'Reageren';
+$TEXT['COMMENTING'] = 'Reactie-opties';
+$TEXT['COMMENTS'] = 'Reacties';
+$TEXT['CREATE_FOLDER'] = 'Cre&euml;er map';
+$TEXT['CURRENT'] = 'Huidig(e)';
+$TEXT['CURRENT_FOLDER'] = 'Huidige map';
+$TEXT['CURRENT_PAGE'] = 'Huidige pagina';
+$TEXT['CURRENT_PASSWORD'] = 'Huidig wachtwoord';
+$TEXT['CUSTOM'] = 'Handmatige invoer';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Datum';
+$TEXT['DATE_FORMAT'] = 'Datumweergave';
+$TEXT['DEFAULT'] = 'Standaard';
+$TEXT['DEFAULT_CHARSET'] = 'Standaard tekenset';
+$TEXT['DEFAULT_TEXT'] = 'Standaardtekst';
+$TEXT['DELETE'] = 'Verwijderen';
+$TEXT['DELETED'] = 'Verwijderd';
+$TEXT['DELETE_DATE'] = 'Wis datum';
+$TEXT['DELETE_ZIP'] = 'Verwijder ZIP van server na uitpakken';
+$TEXT['DESCRIPTION'] = 'Metatag "Description"';
+$TEXT['DESIGNED_FOR'] = 'Ontworpen voor';
+$TEXT['DIRECTORIES'] = 'Mappen';
+$TEXT['DIRECTORY_MODE'] = 'Directory-modus';
+$TEXT['DISABLED'] = 'Uit';
+$TEXT['DISPLAY_NAME'] = 'Naamweergave';
+$TEXT['EMAIL'] = 'E-mail';
+$TEXT['EMAIL_ADDRESS'] = 'E-mailadres';
+$TEXT['EMPTY_TRASH'] = 'Prullenbak legen';
+$TEXT['ENABLED'] = 'Aan';
+$TEXT['END'] = 'Einde';
+$TEXT['ERROR'] = 'Fout';
+$TEXT['EXACT_MATCH'] = 'Exacte term';
+$TEXT['EXECUTE'] = 'Uitvoeren';
+$TEXT['EXPAND'] = 'Uitklappen';
+$TEXT['EXTENSION'] = 'Extensie';
+$TEXT['FIELD'] = 'Veld';
+$TEXT['FILE'] = 'Bestand';
+$TEXT['FILES'] = 'bestanden';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Bestandssysteembevoegdheden';
+$TEXT['FILE_MODE'] = 'Bestandsmodus';
+$TEXT['FINISH_PUBLISHING'] = 'Einde publicatie';
+$TEXT['FOLDER'] = 'Map';
+$TEXT['FOLDERS'] = 'Mappen';
+$TEXT['FOOTER'] = 'Footer';
+$TEXT['FORGOTTEN_DETAILS'] = 'Gegevens vergeten?';
+$TEXT['FORGOT_DETAILS'] = 'Gegevens vergeten?';
+$TEXT['FROM'] = 'Van';
+$TEXT['FRONTEND'] = 'Website';
+$TEXT['FULL_NAME'] = 'Volledige naam';
+$TEXT['FUNCTION'] = 'Functie';
+$TEXT['GROUP'] = 'Groep';
+$TEXT['HEADER'] = 'Header';
+$TEXT['HEADING'] = 'Titel';
+$TEXT['HEADING_CSS_FILE'] = 'Actuele modulebestand: ';
+$TEXT['HEIGHT'] = 'Hoogte';
+$TEXT['HIDDEN'] = 'Verborgen';
+$TEXT['HIDE'] = 'Verbergen';
+$TEXT['HIDE_ADVANCED'] = 'Verberg geavanceerde opties';
+$TEXT['HOME'] = 'Home';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage-omleiding';
+$TEXT['HOME_FOLDER'] = 'Persoonlijke folder';
+$TEXT['HOME_FOLDERS'] = 'Persoonlijke folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Icoon';
+$TEXT['IMAGE'] = 'Afbeelding';
+$TEXT['INLINE'] = 'Inline';
+$TEXT['INSTALL'] = 'Installeren';
+$TEXT['INSTALLATION'] = 'Installatie';
+$TEXT['INSTALLATION_PATH'] = 'Installatiepad';
+$TEXT['INSTALLATION_URL'] = 'Installatie-URL';
+$TEXT['INSTALLED'] = 'ge&iuml;nstalleerd';
+$TEXT['INTRO'] = 'Introductie';
+$TEXT['INTRO_PAGE'] = 'Introductiepagina';
+$TEXT['INVALID_SIGNS'] = 'moet met een letter beginnen, of heeft een ongeldig teken';
+$TEXT['KEYWORDS'] = 'Metatag "Keywords"';
+$TEXT['LANGUAGE'] = 'Taal';
+$TEXT['LAST_UPDATED_BY'] = 'Laatste wijzigingen door';
+$TEXT['LENGTH'] = 'Lengte';
+$TEXT['LEVEL'] = 'Niveau';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Lijstopties';
+$TEXT['LOGGED_IN'] = 'Ingelogd';
+$TEXT['LOGIN'] = 'Inloggen';
+$TEXT['LONG'] = 'Lang';
+$TEXT['LONG_TEXT'] = 'Lange tekst';
+$TEXT['LOOP'] = '"Loop"';
+$TEXT['MAIN'] = 'Primair(e)';
+$TEXT['MAINTENANCE_OFF'] = 'Onderhoud uit';
+$TEXT['MAINTENANCE_ON'] = 'Onderhoud aan';
+$TEXT['MANAGE'] = 'Beheren';
+$TEXT['MANAGE_GROUPS'] = 'Groepenbeheer';
+$TEXT['MANAGE_USERS'] = 'Gebruikersbeheer';
+$TEXT['MATCH'] = 'Gelijk aan';
+$TEXT['MATCHING'] = 'Overeenkomend';
+$TEXT['MAX_EXCERPT'] = 'Maximaal aantal gelijktijdige zoekacties';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maximaal aantal inzendingen per uur';
+$TEXT['MEDIA_DIRECTORY'] = 'Media-map';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-icoon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-icoon hover';
+$TEXT['MENU_TITLE'] = 'Menutitel';
+$TEXT['MESSAGE'] = 'Bericht';
+$TEXT['MODIFY'] = 'Wijzigen';
+$TEXT['MODIFY_CONTENT'] = 'Wijzig inhoud';
+$TEXT['MODIFY_SETTINGS'] = 'Wijzig instellingen';
+$TEXT['MODULE_ORDER'] = 'Modules doorzoeken';
+$TEXT['MODULE_PERMISSIONS'] = 'Modulebevoegdheden';
+$TEXT['MORE'] = 'Meer';
+$TEXT['MOVE_DOWN'] = 'Naar beneden';
+$TEXT['MOVE_UP'] = 'Naar boven';
+$TEXT['MULTIPLE_MENUS'] = 'Meerdere menu&rsquo;s';
+$TEXT['MULTISELECT'] = 'Meervoudige selectie';
+$TEXT['NAME'] = 'Naam';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'Huidig wachtwoord';
+$TEXT['NEED_TO_LOGIN'] = 'Inloggen?';
+$TEXT['NEW_PASSWORD'] = 'Nieuw wachtwoord';
+$TEXT['NEW_WINDOW'] = 'Nieuw scherm';
+$TEXT['NEXT'] = 'Volgende';
+$TEXT['NEXT_PAGE'] = 'Volgende pagina';
+$TEXT['NO'] = 'Nee';
+$TEXT['NONE'] = 'Geen';
+$TEXT['NONE_FOUND'] = 'Niet gevonden';
+$TEXT['NOT_FOUND'] = 'Niet gevonden';
+$TEXT['NOT_INSTALLED'] = 'niet ge&iuml;nstalleerd';
+$TEXT['NO_IMAGE_SELECTED'] = 'geen afbeelding geselecteerd';
+$TEXT['NO_RESULTS'] = 'Geen resultaten';
+$TEXT['OF'] = 'van de';
+$TEXT['ON'] = 'Op';
+$TEXT['OPEN'] = 'Openen';
+$TEXT['OPTION'] = 'Optie';
+$TEXT['OTHERS'] = 'Anderen';
+$TEXT['OUT_OF'] = 'Buiten';
+$TEXT['OVERWRITE_EXISTING'] = 'Overschrijf bestaand(e)';
+$TEXT['PAGE'] = 'Pagina';
+$TEXT['PAGES_DIRECTORY'] = 'Pagina&rsquo;s-map';
+$TEXT['PAGES_PERMISSION'] = 'Paginapermissie';
+$TEXT['PAGES_PERMISSIONS'] = 'Paginapermissies';
+$TEXT['PAGE_EXTENSION'] = 'Pagina-extensie';
+$TEXT['PAGE_ICON'] = 'Pagina-afbeelding';
+$TEXT['PAGE_ICON_DIR'] = 'Pad naar pagina- en menu-afbeeldingen';
+$TEXT['PAGE_LANGUAGES'] = 'Meerdere talen';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Paginaniveaulimiet';
+$TEXT['PAGE_SPACER'] = 'Pagina-spacer';
+$TEXT['PAGE_TITLE'] = 'Paginatitel';
+$TEXT['PAGE_TRASH'] = 'Paginaprullenbak';
+$TEXT['PARENT'] = 'Ouder';
+$TEXT['PASSWORD'] = 'Wachtwoord';
+$TEXT['PATH'] = 'Pad';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP-foutmeldingsniveau';
+$TEXT['PLEASE_LOGIN'] = 'Inloggen aub';
+$TEXT['PLEASE_SELECT'] = 'Selecteer';
+$TEXT['POST'] = 'Bericht';
+$TEXT['POSTS_PER_PAGE'] = 'Berichten per pagina';
+$TEXT['POST_FOOTER'] = 'Bericht-footer';
+$TEXT['POST_HEADER'] = 'Bericht-header';
+$TEXT['PREVIOUS'] = 'Vorige';
+$TEXT['PREVIOUS_PAGE'] = 'Vorige pagina';
+$TEXT['PRIVATE'] = 'Aangemeld';
+$TEXT['PRIVATE_VIEWERS'] = 'Aangemelde bezoekers';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Iedereen';
+$TEXT['PUBL_END_DATE'] = 'Einddatum';
+$TEXT['PUBL_START_DATE'] = 'Startdatum';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio buttons';
+$TEXT['READ'] = 'Lees';
+$TEXT['READ_MORE'] = 'Lees verder';
+$TEXT['REDIRECT_AFTER'] = 'Omleiding na (sec.)';
+$TEXT['REGISTERED'] = 'Geregistreerd';
+$TEXT['REGISTERED_VIEWERS'] = 'Geregistreerde bezoekers';
+$TEXT['RELOAD'] = 'Vernieuwen';
+$TEXT['REMEMBER_ME'] = 'Onthoud mijn gegevens.';
+$TEXT['RENAME'] = 'Hernoemen';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Verplicht';
+$TEXT['REQUIREMENT'] = 'Benodigd';
+$TEXT['RESET'] = 'Opnieuw';
+$TEXT['RESIZE'] = 'Veranderen grootte';
+$TEXT['RESIZE_IMAGE_TO'] = 'Verander afbeeldingsgrootte naar';
+$TEXT['RESTORE'] = 'Backup terugzetten';
+$TEXT['RESTORE_DATABASE'] = 'Backup van de database terugzetten';
+$TEXT['RESTORE_MEDIA'] = 'Backup van de Media-map terugzetten';
+$TEXT['RESULTS'] = 'Resultaten';
+$TEXT['RESULTS_FOOTER'] = 'Zoekresultaten-footer';
+$TEXT['RESULTS_FOR'] = 'Resultaten voor';
+$TEXT['RESULTS_HEADER'] = 'Resultaten-header';
+$TEXT['RESULTS_LOOP'] = 'Zoekresultaten';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Herhaal nieuw wachtwoord';
+$TEXT['RETYPE_PASSWORD'] = 'Herhaal wachtwoord';
+$TEXT['SAME_WINDOW'] = 'Zelfde scherm';
+$TEXT['SAVE'] = 'Opslaan';
+$TEXT['SEARCH'] = 'Zoeken';
+$TEXT['SEARCHING'] = 'Zoekfunctie';
+$TEXT['SECTION'] = 'Sectie';
+$TEXT['SECTION_BLOCKS'] = 'Sectieblokken';
+$TEXT['SEC_ANCHOR'] = 'Sessie-voorvoegsel';
+$TEXT['SELECT_BOX'] = 'Selectiemenu';
+$TEXT['SEND_DETAILS'] = 'Stuur gegevens';
+$TEXT['SEPARATE'] = 'Gescheiden';
+$TEXT['SEPERATOR'] = 'Scheidingsteken tussen opties (HTML toegestaan)';
+$TEXT['SERVER_EMAIL'] = 'Server e-mail';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Serverbesturingssysteem';
+$TEXT['SESSION_IDENTIFIER'] = 'Sessie-identificatie';
+$TEXT['SETTINGS'] = 'Instellingen';
+$TEXT['SHORT'] = 'Kort';
+$TEXT['SHORT_TEXT'] = 'Korte tekst';
+$TEXT['SHOW'] = 'Tonen';
+$TEXT['SHOW_ADVANCED'] = 'Bekijk geavanceerde opties';
+$TEXT['SIGNUP'] = 'Primaire aanmeldgroep';
+$TEXT['SIZE'] = 'Grootte';
+$TEXT['SMART_LOGIN'] = 'Snel inloggen';
+$TEXT['START'] = 'Aanvang';
+$TEXT['START_PUBLISHING'] = 'Aanvang publicatie';
+$TEXT['SUBJECT'] = 'Onderwerp';
+$TEXT['SUBMISSIONS'] = 'Inzendingen';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Maximaal aantal te bewaren inzendingen';
+$TEXT['SUBMISSION_ID'] = 'Ingezonden bericht';
+$TEXT['SUBMITTED'] = 'Ingezonden';
+$TEXT['SUCCESS'] = 'Succes';
+$TEXT['SYSTEM_DEFAULT'] = 'Standaardinstellingen';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Systeembevoegdheden';
+$TEXT['TABLE_PREFIX'] = 'Tabelvoorvoegsel';
+$TEXT['TARGET'] = 'Doel';
+$TEXT['TARGET_FOLDER'] = 'Doelmap';
+$TEXT['TEMPLATE'] = 'Template';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Templatebevoegdheden';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Tekstveld';
+$TEXT['TEXTFIELD'] = 'Tekstregel';
+$TEXT['THEME'] = 'Thema Website-beheer';
+$TEXT['TIME'] = 'Tijd';
+$TEXT['TIMEZONE'] = 'Tijdzone';
+$TEXT['TIME_FORMAT'] = 'Tijdweergave';
+$TEXT['TIME_LIMIT'] = 'Maximale zoektijd per module';
+$TEXT['TITLE'] = 'Titel';
+$TEXT['TO'] = 'Aan';
+$TEXT['TOP_FRAME'] = 'Bovenste frame';
+$TEXT['TRASH_EMPTIED'] = 'Prullenbak geleegd';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Wijzig de CSS-definities in het tekstveld hieronder.';
+$TEXT['TYPE'] = 'Type';
+$TEXT['UNDER_CONSTRUCTION'] = 'In bewerking';
+$TEXT['UNINSTALL'] = 'Verwijderen';
+$TEXT['UNKNOWN'] = 'Onbekend(e)';
+$TEXT['UNLIMITED'] = 'Ongelimiteerd';
+$TEXT['UNZIP_FILE'] = 'Uploaden en uitpakken van ZIP-bestand';
+$TEXT['UP'] = 'Omhoog';
+$TEXT['UPGRADE'] = 'Upgraden';
+$TEXT['UPLOAD_FILES'] = 'Upload bestand(en)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Gebruiker';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'gebruiker is op actief gezet';
+$TEXT['USERS_CAN_SELFDELETE'] = 'gebruiker kan zijn eigen account verwijderen';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'Gebruiker kan de eigen instellingen aanpassen';
+$TEXT['USERS_DELETED'] = 'Gebruiker is gemarkeerd als verwijderd';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'Gebruiker kan uitgebreid profiel aanmaken';
+$TEXT['VERIFICATION'] = 'Verificatie';
+$TEXT['VERSION'] = 'Versie';
+$TEXT['VIEW'] = 'Bekijken';
+$TEXT['VIEW_DELETED_PAGES'] = 'Bekijk verwijderde pagina&rsquo;s';
+$TEXT['VIEW_DETAILS'] = 'Gegevens bekijken';
+$TEXT['VISIBILITY'] = 'Zichtbaarheid';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Standaard afzendermailadres';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Standaard afzendernaam';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Specificeer hieronder een standaard afzenderadres en afzendernaam. Het is aanbevolen om een afzenderadres als: <strong>admin@uwdomein.nl</strong> te gebruiken. Om verspreiding van spam tegen te gaan, kunnen sommige mailproviders (bijv. <em>mail.com</em>) mails verwerpen met een afzenderadres als <em>name@mail.com</em>, die verzonden worden vanaf een relay-server. Onderstaande standaardwaarden worden enkel gebruikt indien geen andere waarden gespecifieerd worden door WebsiteBaker. Indien uw server <acronym title="Simple mail transfer protocol">SMTP</acronym> ondersteunt kunt u deze optie gebruiken voor het versturen van uitgaande mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mailafhandeling';
+$TEXT['WBMAILER_NOTICE'] = '<strong>Instellingen SMTP Mailer:</strong><br />Onderstaande instellingen zijn alleen van toepassing indien u mails wilt verzenden via <acronym title="Simple mail transfer protocol">SMTP</acronym>. Indien u de naam of instellingen van de SMTP-server niet kent, selecteer dan bij de standaard mailroutine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP-authenticatie';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'Alleen wanneer men zich dient aan te melden bij de SMTP-host';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP-host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP-wachtwoord';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Metatag "Description"';
+$TEXT['WEBSITE_FOOTER'] = 'Website-footer';
+$TEXT['WEBSITE_HEADER'] = 'Website-header';
+$TEXT['WEBSITE_KEYWORDS'] = 'Metatag "Keywords"';
+$TEXT['WEBSITE_TITLE'] = 'Metatag "Title"';
+$TEXT['WELCOME_BACK'] = 'Welkom terug';
+$TEXT['WIDTH'] = 'Breedte';
+$TEXT['WINDOW'] = 'Scherm';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'CHMOD 777 alle bestanden';
+$TEXT['WRITE'] = 'Schrijf';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG-editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG-stijl';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Module voldoet niet aan de eisen';
+$HEADING['ADD_CHILD_PAGE'] = 'Toevoegen subpagina';
+$HEADING['ADD_GROUP'] = 'Toevoegen groep';
+$HEADING['ADD_GROUPS'] = 'Toevoegen groepen';
+$HEADING['ADD_HEADING'] = 'Toevoegen titel';
+$HEADING['ADD_PAGE'] = 'Toevoegen nieuwe pagina';
+$HEADING['ADD_USER'] = 'Toevoegen gebruiker';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Beheerfuncties';
+$HEADING['BROWSE_MEDIA'] = 'Bladeren door Media-map';
+$HEADING['CREATE_FOLDER'] = 'Toevoegen nieuwe map';
+$HEADING['DEFAULT_SETTINGS'] = 'Standaardinstellingen';
+$HEADING['DELETED_PAGES'] = 'Verwijderde pagina&rsquo;s';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Bestandssysteeminstellingen';
+$HEADING['GENERAL_SETTINGS'] = 'Algemene instellingen';
+$HEADING['INSTALL_LANGUAGE'] = 'Toevoegen taalbestand';
+$HEADING['INSTALL_MODULE'] = 'Toevoegen module';
+$HEADING['INSTALL_TEMPLATE'] = 'Toevoegen template';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Taal-bestanden handmatig inschakelen';
+$HEADING['INVOKE_MODULE_FILES'] = 'Handmatige module-installatie';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Template-bestanden handmatig inschakelen';
+$HEADING['LANGUAGE_DETAILS'] = 'Taalbestandgegevens';
+$HEADING['MANAGE_SECTIONS'] = 'Sectiebeheer';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Geavanceerde pagina-instellingen';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Beheren groep';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Beheren bestaande pagina&rsquo;s';
+$HEADING['MODIFY_DELETE_USER'] = 'Beheren gebruikers';
+$HEADING['MODIFY_GROUP'] = 'Groepsgegevens';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Wijzigen introductiepagina';
+$HEADING['MODIFY_PAGE'] = 'Aanpassen pagina';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Pagina-instellingen';
+$HEADING['MODIFY_USER'] = 'Gebruikersgegevens';
+$HEADING['MODULE_DETAILS'] = 'Modulegegevens';
+$HEADING['MY_EMAIL'] = 'Mijn e-mailadres';
+$HEADING['MY_PASSWORD'] = 'Mijn wachtwoord';
+$HEADING['MY_SETTINGS'] = 'Mijn gegevens';
+$HEADING['SEARCH_SETTINGS'] = 'Zoekinstellingen';
+$HEADING['SERVER_SETTINGS'] = 'Serverinstellingen';
+$HEADING['TEMPLATE_DETAILS'] = 'Templategegevens';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Verwijderen taalbestand';
+$HEADING['UNINSTALL_MODULE'] = 'Verwijderen module';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Verwijderen template';
+$HEADING['UPGRADE_LANGUAGE'] = 'Upgraden/inschakelen taalbestand';
+$HEADING['UPLOAD_FILES'] = 'Uploaden bestanden';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer-instellingen';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Fout tijdens het updaten van de add-onbestanden.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Taalbestanden succesvol herladen';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTIE!</strong> Om veiligheidsredenen dient u de taalbestanden in de folder /languages/ via FTP te uploaden en vervolgens de Upgrade-functie te gebruiken om ze aan het systeem toe te voegen.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Waarschuwing: bestaande module database-informatie zal verloren gaan! ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Waarschuwing: de bestaande module database-informatie zal verloren gaan! Gebruik deze optie alleen indien u ervaring heeft met modules die zijn geupload via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Waarschuwing: de bestaande module database-informatie zal verloren gaan! ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules succesvol herladen';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Nieuwere bestanden overschrijven';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installatie mislukt. Uw systeem voldoet niet aan de eisen van deze add-on. Om deze situatie te veranderen kunt u de informatie hieronder toepassen.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database met informatie uit de add-on bestanden (bijvoorbeeld na FTP-upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates succesvol herladen';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Onvoldoende rechten om hier te zijn';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Sorry, het wachtwoord kan maximaal eens per uur worden aangepast.';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Het is niet mogelijk uw wachtwoord per e-mail te versturen. Neem contact op met de beheerder';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Het door u opgegeven e-mailadres is niet gevonden in onze database';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Vult u alstublieft uw e-mailadres hieronder in';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, er is niets om af te beelden';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Sorry, u heeft geen bevoegdheden om deze pagina te bekijken';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Is al ge&iuml;nstalleerd';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kan niet schrijven naar doelmap';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Kan niet de&iuml;nstalleren';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Kan niet de&iuml;nstalleren: het geselecteerde bestand is in gebruik';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />De {{type}} <b>{{type_name}}</b> kan niet verwijderd worden omdat het in gebruik is op {{pages}}:<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'volgende pagina;volgende pagina\'s';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'De template <b>{{name}}</b> kan niet verwijderd worden omdat het de standaard-template is.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Het is niet mogelijk de template <b>{{name}}</b> te verwijderen omdat het het standaard admin-thema is.';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Kan het bestand niet uitpakken';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Kan niet uploaden';
+$MESSAGE['GENERIC_COMPARE'] = ' succesvol';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Kan bestand niet openen.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' mislukt';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Let op: het bestand moet het volgende formaat hebben:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Let op: de bestanden moeten het volgende formaat hebben:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Niet alle velden zijn ingevuld. Probeert u het nog eens';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'U heeft niets geselecteerd!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installatie voltooid';
+$MESSAGE['GENERIC_INVALID'] = 'Ongeldig bestand';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Ongeldig WebsiteBaker installatiebestand. Controleer het *.zip bestand.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Ongeldig WebsiteBaker taalbestand. Controleer het tekstbestand.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Ongeldig WebsiteBaker modulebestand. Controleer het tekstbestand';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Ongeldig WebsiteBaker template-bestand. Controleer het tekstbestand';
+$MESSAGE['GENERIC_IN_USE'] = ' gebruikt in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Ontbrekend archiefbestand!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'De module is niet juist ge&iuml;nstalleerd!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' niet mogelijk';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Niet ge&iuml;nstalleerd';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualisatie niet mogelijk';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Even geduld aub, dit kan even duren.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Probeert u het a.u.b. binnenkort nog eens.';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Veiligheidsrisico! Toegang geweigerd!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Veiligheidsrisico! Data-opslag geweigerd!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'De&iuml;nstallatie voltooid';
+$MESSAGE['GENERIC_UPGRADED'] = 'Upgrade voltooid';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Versievergelijking';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade noodzakelijk!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'Deze site is tijdelijk offline wegens onderhoud.';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website in bewerking';
+$MESSAGE['GROUPS_ADDED'] = 'Groep toegevoegd';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Weet u zeker dat u de geselecteerde groep wilt verwijderen (en alle daarbij behorende gebruikers)?';
+$MESSAGE['GROUPS_DELETED'] = 'Groep verwijderd';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Groepsnaam is niet ingevuld';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Groepnaam is reeds in gebruik';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Geen groep gevonden';
+$MESSAGE['GROUPS_SAVED'] = 'Groep opgeslagen';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Vul uw wachtwoord in';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Dit wachtwoord is te lang';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Dit wachtwoord is te kort';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'U heeft geen bestandsextensie opgegeven';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'U heeft geen nieuwe naam opgegeven';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Kan geselecteerde map niet verwijderen';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Kan geselecteerde bestand niet verwijderen';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Hernoemen niet gelukt';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Weet u zeker dat u het volgende bestand of map wilt verwijderen?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Map verwijderd';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Bestand verwijderd';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Map bestaat niet';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Gebruik van ../ in de mapnaam is niet toegestaan';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Opgegeven naam van de map bestaat al';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Map aangemaakt';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Aanmaken map mislukt';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Opgegeven bestandsnaam bestaat al';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Bestand niet gevonden';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Gebruik van ../ in de naam is niet toegestaan';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'index.php als naam is niet toegestaan';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Geen mediabestanden gevonden in de huidige map';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'geen bestand(en) ontvangen';
+$MESSAGE['MEDIA_RENAMED'] = 'Hernoemen geslaagd';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' geupload';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Gebruik van ../ in de map is niet toegestaan';
+$MESSAGE['MEDIA_UPLOADED'] = ' geupload';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Dit formulier is te vaak verstuurd binnen dit uur. Probeert u het over een uur nog eens.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Het verificatienummer (ook wel Captcha genoemd) dat u hebt ingevoerd is incorrect. Als u de Captcha niet goed kunt lezen, stuur dan een e-mail naar: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'De volgende velden zijn verplicht';
+$MESSAGE['PAGES_ADDED'] = 'Pagina toegevoegd';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Paginatitel opgeslagen';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Vul a.u.b. een menutitel in';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Vul a.u.b. een paginatitel in';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Kan geen bestanden opslaan in de /pages-map (onvoldoende rechten)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Kan geen bestanden verwijderen uit de /pages-map (onvoldoende rechten)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Fout bij herordenen pagina';
+$MESSAGE['PAGES_DELETED'] = 'Pagina verwijderd';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Weet u zeker dat u deze pagina wilt verwijderen (en al zijn subpagina&rsquo;s)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'U heeft niet de rechten om deze pagina aan te passen';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Klik hier om de introductiepagina aan te passen';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Kan instellingen niet opslaan in het bestand /pages/intro.php (onvoldoende rechten)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Introductiepagina opgeslagen';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Als laatste aangepast door';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Pagina niet gevonden';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Fout tijdens opslaan pagina';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Een pagina met dezelfde naam bestaat al';
+$MESSAGE['PAGES_REORDERED'] = 'Pagina herordend';
+$MESSAGE['PAGES_RESTORED'] = 'Pagina teruggehaald';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Keer terug naar pagina&rsquo;s';
+$MESSAGE['PAGES_SAVED'] = 'Pagina opgeslagen';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Pagina-instellingen opgeslagen';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Sectie-instellingen opgeslagen';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Het (huidige) ingevoerde wachtwoord is niet correct';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Details opgeslagen';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-mail gewijzigd';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Ongeldige wachtwoordtekens gebruikt';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Wachtwoord gewijzigd';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'De aanpassing is mislukt.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'De aanpassing is opgeslagen.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'De toevoeging is mislukt.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'De toevoeging is opgeslagen';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Opgelet: sla eerst de wijzigingen op die u eventueel zojuist heeft aangebracht!';
+$MESSAGE['SETTINGS_SAVED'] = 'Instellingen opgeslagen';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Het configuratiebestand kan niet worden geopend';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Het configuratiebestand kan niet worden opgeslagen';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Opgelet: dit is alleen bedoeld voor testdoeleinden!';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+Een nieuwe gebruiker heeft zich aangemeld.
+
+Loginname: {LOGIN_NAME}
+Gebruiker Id: {LOGIN_ID}
+E-mail: {LOGIN_EMAIL}
+IP-adres: {LOGIN_IP}
+Registratiedatum: {SIGNUP_DATE}
+----------------------------------------
+Dit bericht is automatisch aangemaakt!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Beste {LOGIN_DISPLAY_NAME},
+
+deze mail is aan u verzonden omdat u de \'wachtwoord vergeten\' functie heeft gebruikt.
+
+Uw nieuwe \'{LOGIN_WEBSITE_TITLE}\' inloggegevens zijn:
+
+Loginname: {LOGIN_NAME}
+Wachtwoord: {LOGIN_PASSWORD}
+
+Let op: dit is een automatisch aangemaakt nieuw wachtwoord. Uw oude wachtwoord is niet meer geldig!
+Heeft u vragen of opmerkingen, neem dan contact op met de websitebeheerder.
+
+Het is aan te raden om uw browser-cache te legen voordat u het nieuwe wachtwoord gebruikt.
+
+Vriendelijke groet
+
+------------------------------------
+Dit bericht is automatisch aangemaakt!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Beste {LOGIN_DISPLAY_NAME},
+
+Welkom bij \'{LOGIN_WEBSITE_TITLE}\'.
+
+Uw \'{LOGIN_WEBSITE_TITLE}\' inloggegevens zijn:
+Loginname: {LOGIN_NAME}
+Wachtwoord: {LOGIN_PASSWORD}
+
+Vriendelijke groet
+
+-------------------------------------
+Dit bericht is automatisch aangemaakt!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Uw inloggegevens...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'U moet een e-mailadres invullen';
+$MESSAGE['START_CURRENT_USER'] = 'U bent ingelogd als';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Waarschuwing, de installatiemap bestaat nog steeds. U dient deze te verwijderen om veiligheidsrisico&rsquo;s te vermijden!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Welkom bij het websitebeheer';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Attentie: om de template aan te passen moet u naar de instellingensectie';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Gebruiker toegevoegd';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Functie geweigerd. U kunt zichzelf niet verwijderen!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Attentie: vul alleen de bovenstaande velden in wanneer u het wachtwoord van de gebruiker wilt veranderen';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Weet u zeker dat u de geselecteerde gebruiker wilt verwijderen?';
+$MESSAGE['USERS_DELETED'] = 'Gebruiker verwijderd';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Het ingevoerde e-mailadres is al in gebruik';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Het ingevoerde e-mailadres is niet correct';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Geen groep geselecteerd';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'De ingevoerde wachtwoorden komen niet overeen';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Het ingevoerde wachtwoord is te kort';
+$MESSAGE['USERS_SAVED'] = 'Gebruiker opgeslagen';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Diverse extra beheerinstellingen.';
+$OVERVIEW['GROUPS'] = 'Beheren van de gebruikersgroepen en hun rechten.';
+$OVERVIEW['HELP'] = 'Uitgebreide hulp voor het gebruik van dit systeem.';
+$OVERVIEW['LANGUAGES'] = 'Beheren van de aanwezige taalbestanden.';
+$OVERVIEW['MEDIA'] = 'Beheren van bestanden in de Media-map.';
+$OVERVIEW['MODULES'] = 'Beheren van modules die extra functies toevoegen aan uw site.';
+$OVERVIEW['PAGES'] = 'Aanmaken en beheren van de sitestructuur en pagina&rsquo;s.';
+$OVERVIEW['PREFERENCES'] = 'Beheren van uw persoonlijk profiel.';
+$OVERVIEW['SETTINGS'] = 'Beheren van de technische website-instellingen.';
+$OVERVIEW['START'] = 'Websitebeheer';
+$OVERVIEW['TEMPLATES'] = 'Beheren van de templates die u kunt toepassen.';
+$OVERVIEW['USERS'] = 'Beheren van de gebruikers van uw website.';
+$OVERVIEW['VIEW'] = 'Bekijk uw website zoals deze voor bezoekers te zien is (in een afzonderlijk venster).';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/NL.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/PL.php
===================================================================
--- tags/2.8.3/wb/languages/PL.php	(nonexistent)
+++ tags/2.8.3/wb/languages/PL.php	(revision 1610)
@@ -0,0 +1,680 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'PL';
+$language_name = 'Polski';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Marek Stepien;';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Dostep';
+$MENU['ADDON'] = 'Dodatek';
+$MENU['ADDONS'] = 'Dodatki';
+$MENU['ADMINTOOLS'] = 'Narzedzia admina';
+$MENU['BREADCRUMB'] = 'Jestes tu: ';
+$MENU['FORGOT'] = 'Odzyskaj dane logowania';
+$MENU['GROUP'] = 'Groupa';
+$MENU['GROUPS'] = 'Grupy';
+$MENU['HELP'] = 'Pomoc';
+$MENU['LANGUAGES'] = 'Jezyki';
+$MENU['LOGIN'] = 'Zaloguj sie';
+$MENU['LOGOUT'] = 'Wyloguj';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Moduly';
+$MENU['PAGES'] = 'Strony';
+$MENU['PREFERENCES'] = 'Preferencje';
+$MENU['SETTINGS'] = 'Ustawienia';
+$MENU['START'] = 'Poczatek';
+$MENU['TEMPLATES'] = 'Szablony';
+$MENU['USERS'] = 'Uzytkownicy';
+$MENU['VIEW'] = 'Podglad';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Nowe konto';
+$TEXT['ACTIONS'] = 'Czynnosci';
+$TEXT['ACTIVE'] = 'Aktywne';
+$TEXT['ADD'] = 'Dodaj';
+$TEXT['ADDON'] = 'Dodatek';
+$TEXT['ADD_SECTION'] = 'Dodaj sekcji;';
+$TEXT['ADMIN'] = 'Administrator';
+$TEXT['ADMINISTRATION'] = 'Administracja';
+$TEXT['ADMINISTRATION_TOOL'] = 'Narzedzie administracyjne';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratorzy';
+$TEXT['ADVANCED'] = 'Zaawansowane';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Dozwolone pliki do uploadu';
+$TEXT['ALLOWED_VIEWERS'] = 'Dozwoleni obserwatorzy';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Pozwól na wielokrotne wybory';
+$TEXT['ALL_WORDS'] = 'Wszystkie slowa';
+$TEXT['ANCHOR'] = 'Kotwica';
+$TEXT['ANONYMOUS'] = 'Anonimowy';
+$TEXT['ANY_WORDS'] = 'Dowolne ze slów';
+$TEXT['APP_NAME'] = 'Nazwa aplikacji';
+$TEXT['ARE_YOU_SURE'] = 'Czy aby na pewno?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Wstecz';
+$TEXT['BACKUP'] = 'Kopia zapasowa';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Kopia zapasowa bazy danych';
+$TEXT['BACKUP_MEDIA'] = 'Kopia zapasowa mediów';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Kopia zapasowa tylko tabel WB_';
+$TEXT['BASIC'] = 'Podstawowe';
+$TEXT['BLOCK'] = 'Blokuj';
+$TEXT['CALENDAR'] = 'Calentarz';
+$TEXT['CANCEL'] = 'Anuluj';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Weryfikacja Captcha';
+$TEXT['CAP_EDIT_CSS'] = 'Edytuj CSS';
+$TEXT['CHANGE'] = 'Zmien;';
+$TEXT['CHANGES'] = 'Zmiany';
+$TEXT['CHANGE_SETTINGS'] = 'Zmien ustawienia';
+$TEXT['CHARSET'] = 'Kodowanie znaków';
+$TEXT['CHECKBOX_GROUP'] = 'Grupa pól zaznaczanych';
+$TEXT['CLOSE'] = 'Zamknij';
+$TEXT['CODE'] = 'Kod';
+$TEXT['CODE_SNIPPET'] = 'Kod snippeta';
+$TEXT['COLLAPSE'] = 'Zwin;';
+$TEXT['COMMENT'] = 'Komentarz';
+$TEXT['COMMENTING'] = 'Komentowanie';
+$TEXT['COMMENTS'] = 'Komentarze';
+$TEXT['CREATE_FOLDER'] = 'Utwórz folder';
+$TEXT['CURRENT'] = 'Biezacy';
+$TEXT['CURRENT_FOLDER'] = 'Biezacy folder';
+$TEXT['CURRENT_PAGE'] = 'Biezaca strona';
+$TEXT['CURRENT_PASSWORD'] = 'Biezace haslo';
+$TEXT['CUSTOM'] = 'Wlasny';
+$TEXT['DATABASE'] = 'Baza danych';
+$TEXT['DATE'] = 'Data';
+$TEXT['DATE_FORMAT'] = 'Format daty';
+$TEXT['DEFAULT'] = 'Domyslne';
+$TEXT['DEFAULT_CHARSET'] = 'Domyslne kodowanie znaków';
+$TEXT['DEFAULT_TEXT'] = 'Domyslny tekst';
+$TEXT['DELETE'] = 'Usun;';
+$TEXT['DELETED'] = 'Usuniete';
+$TEXT['DELETE_DATE'] = 'Usun date';
+$TEXT['DELETE_ZIP'] = 'Usun archiwum zip po rozpakowaniu';
+$TEXT['DESCRIPTION'] = 'Opis';
+$TEXT['DESIGNED_FOR'] = 'Zaprojektowane dla';
+$TEXT['DIRECTORIES'] = 'Katalogi';
+$TEXT['DIRECTORY_MODE'] = 'Tryb katalogów';
+$TEXT['DISABLED'] = 'Wylaczone';
+$TEXT['DISPLAY_NAME'] = 'Nazwa';
+$TEXT['EMAIL'] = 'E-mail';
+$TEXT['EMAIL_ADDRESS'] = 'Adres e-mail';
+$TEXT['EMPTY_TRASH'] = 'Opróznij smietnik';
+$TEXT['ENABLED'] = 'Wlaczone';
+$TEXT['END'] = 'Koniec';
+$TEXT['ERROR'] = 'Blad';
+$TEXT['EXACT_MATCH'] = 'Dopasowanie dokladne';
+$TEXT['EXECUTE'] = 'Wykonaj';
+$TEXT['EXPAND'] = 'Rozwin';
+$TEXT['EXTENSION'] = 'Rozszerzenie';
+$TEXT['FIELD'] = 'Pole';
+$TEXT['FILE'] = 'plik';
+$TEXT['FILES'] = 'pliki';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Uprawnienia systemu plików';
+$TEXT['FILE_MODE'] = 'Tryb plikw';
+$TEXT['FINISH_PUBLISHING'] = 'Zakoncz publikowanie';
+$TEXT['FOLDER'] = 'folder';
+$TEXT['FOLDERS'] = 'foldery';
+$TEXT['FOOTER'] = 'Stopka';
+$TEXT['FORGOTTEN_DETAILS'] = 'Zapomniales(-as) hasla?';
+$TEXT['FORGOT_DETAILS'] = 'Zapomniales(-as) szczególów?';
+$TEXT['FROM'] = 'Od';
+$TEXT['FRONTEND'] = 'Panel przedni';
+$TEXT['FULL_NAME'] = 'Imie i nazwisko';
+$TEXT['FUNCTION'] = 'Funkcja';
+$TEXT['GROUP'] = 'Grupa';
+$TEXT['HEADER'] = 'Naglówek';
+$TEXT['HEADING'] = 'Naglówek';
+$TEXT['HEADING_CSS_FILE'] = 'Aktualny plik modulu: ';
+$TEXT['HEIGHT'] = 'Wysokosc;';
+$TEXT['HIDDEN'] = 'Ukryty';
+$TEXT['HIDE'] = 'Schowaj';
+$TEXT['HIDE_ADVANCED'] = 'Schowaj opcje zaawansowane';
+$TEXT['HOME'] = 'Strona domowa';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Przekierowanie strony domowej';
+$TEXT['HOME_FOLDER'] = 'Osobisty Folder';
+$TEXT['HOME_FOLDERS'] = 'Osobiste Foldery';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Ikona';
+$TEXT['IMAGE'] = 'Obrazek';
+$TEXT['INLINE'] = 'Inline';
+$TEXT['INSTALL'] = 'Zainstaluj';
+$TEXT['INSTALLATION'] = 'Instalacja';
+$TEXT['INSTALLATION_PATH'] = 'Sciezka instalacji';
+$TEXT['INSTALLATION_URL'] = 'URL instalacji';
+$TEXT['INSTALLED'] = 'zainstalowano';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = 'Strona wprowadzajaca';
+$TEXT['INVALID_SIGNS'] = 'musi zaczynac sie od litery badz niedozwolonych znaków';
+$TEXT['KEYWORDS'] = 'slow kluczowe';
+$TEXT['LANGUAGE'] = 'Jezyk';
+$TEXT['LAST_UPDATED_BY'] = 'Ostatnio zmienione przez';
+$TEXT['LENGTH'] = 'Dlugosc';
+$TEXT['LEVEL'] = 'Poziom';
+$TEXT['LINK'] = 'Odnosnik';
+$TEXT['LINUX_UNIX_BASED'] = 'oparty na Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Listuj opcje';
+$TEXT['LOGGED_IN'] = 'Zalogowany';
+$TEXT['LOGIN'] = 'Zaloguj';
+$TEXT['LONG'] = 'Dlugi';
+$TEXT['LONG_TEXT'] = 'Dlugi tekst';
+$TEXT['LOOP'] = 'Petla';
+$TEXT['MAIN'] = 'Glówny';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Zarzadzaj';
+$TEXT['MANAGE_GROUPS'] = 'Zarzadzaj grupami';
+$TEXT['MANAGE_USERS'] = 'Zarzadzaj uzytkownikami';
+$TEXT['MATCH'] = 'Dopasuj';
+$TEXT['MATCHING'] = 'Pasujace';
+$TEXT['MAX_EXCERPT'] = 'Maksymalny fragment linii';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maks. zgloszen na godzine';
+$TEXT['MEDIA_DIRECTORY'] = 'Katalog mediów';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Tytul menu';
+$TEXT['MESSAGE'] = 'Wiadomosc';
+$TEXT['MODIFY'] = 'Zmien';
+$TEXT['MODIFY_CONTENT'] = 'Zmien zawartosc';
+$TEXT['MODIFY_SETTINGS'] = 'Zmien ustawienia';
+$TEXT['MODULE_ORDER'] = 'Modul- kolejnosc wyszukiwania';
+$TEXT['MODULE_PERMISSIONS'] = 'Uprawnienia do modulów';
+$TEXT['MORE'] = 'Wiecej';
+$TEXT['MOVE_DOWN'] = 'W dól';
+$TEXT['MOVE_UP'] = 'Do góry';
+$TEXT['MULTIPLE_MENUS'] = 'Wielokrotne menu';
+$TEXT['MULTISELECT'] = 'Wybór wielokrotny';
+$TEXT['NAME'] = 'Nazwa';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'potwierdz obecne haslo';
+$TEXT['NEED_TO_LOGIN'] = 'Potrzebujesz sie zalogowac?';
+$TEXT['NEW_PASSWORD'] = 'Nowe haslo';
+$TEXT['NEW_WINDOW'] = 'Nowe okno';
+$TEXT['NEXT'] = 'Nastepny';
+$TEXT['NEXT_PAGE'] = 'Nastepna strona';
+$TEXT['NO'] = 'Nie';
+$TEXT['NONE'] = 'Brak';
+$TEXT['NONE_FOUND'] = 'Nie odnaleziono';
+$TEXT['NOT_FOUND'] = 'Nie odnaleziono';
+$TEXT['NOT_INSTALLED'] = 'nie zainstalowano';
+$TEXT['NO_IMAGE_SELECTED'] = 'nie wybrano obrazu';
+$TEXT['NO_RESULTS'] = 'Brak wyników';
+$TEXT['OF'] = 'z';
+$TEXT['ON'] = 'dnia';
+$TEXT['OPEN'] = 'Otwórz';
+$TEXT['OPTION'] = 'Opcja';
+$TEXT['OTHERS'] = 'Inni';
+$TEXT['OUT_OF'] = 'z poza';
+$TEXT['OVERWRITE_EXISTING'] = 'Nadpisz istniejacy(-e)';
+$TEXT['PAGE'] = 'Strona';
+$TEXT['PAGES_DIRECTORY'] = 'Katalog stron';
+$TEXT['PAGES_PERMISSION'] = 'Prawa do strony';
+$TEXT['PAGES_PERMISSIONS'] = 'Prawa do stron';
+$TEXT['PAGE_EXTENSION'] = 'Rozszerzenie strony';
+$TEXT['PAGE_ICON'] = 'Obrazek strony';
+$TEXT['PAGE_ICON_DIR'] = 'Sciezka stron/obrazki menu';
+$TEXT['PAGE_LANGUAGES'] = 'Jezyki stron';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limit poziomów stron';
+$TEXT['PAGE_SPACER'] = 'Odstep strony';
+$TEXT['PAGE_TITLE'] = 'Tytul strony';
+$TEXT['PAGE_TRASH'] = 'Smietnik stron';
+$TEXT['PARENT'] = 'Nadrzedny';
+$TEXT['PASSWORD'] = 'Haslo';
+$TEXT['PATH'] = 'Sciezka';
+$TEXT['PHP_ERROR_LEVEL'] = 'Poziom raportowania bledów PHP';
+$TEXT['PLEASE_LOGIN'] = 'Podaj login';
+$TEXT['PLEASE_SELECT'] = 'Prosze wybrac';
+$TEXT['POST'] = 'Wiadomosc';
+$TEXT['POSTS_PER_PAGE'] = 'Wiadomosci na strone';
+$TEXT['POST_FOOTER'] = 'Stopka wiadomosci';
+$TEXT['POST_HEADER'] = 'Naglówek wiadomosci';
+$TEXT['PREVIOUS'] = 'Poprzedni';
+$TEXT['PREVIOUS_PAGE'] = 'Poprzednia strona';
+$TEXT['PRIVATE'] = 'Prywatna';
+$TEXT['PRIVATE_VIEWERS'] = 'Prywatni obserwatorzy';
+$TEXT['PROFILES_EDIT'] = 'Zmien profil';
+$TEXT['PUBLIC'] = 'Publiczna';
+$TEXT['PUBL_END_DATE'] = 'Data zakonczenia';
+$TEXT['PUBL_START_DATE'] = 'Data rozpoczecia';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Grupa pól przelaczanych';
+$TEXT['READ'] = 'Odczytaj';
+$TEXT['READ_MORE'] = 'Czytaj dalej';
+$TEXT['REDIRECT_AFTER'] = 'Przekierowanie po';
+$TEXT['REGISTERED'] = 'Zarejestrowany';
+$TEXT['REGISTERED_VIEWERS'] = 'Zarejestrowani obserwatorzy';
+$TEXT['RELOAD'] = 'Przeladuj, odswiez';
+$TEXT['REMEMBER_ME'] = 'Zapamietaj mnie';
+$TEXT['RENAME'] = 'Zmien nazwe';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Wymagany';
+$TEXT['REQUIREMENT'] = 'Wymagania';
+$TEXT['RESET'] = 'Resetuj';
+$TEXT['RESIZE'] = 'Zmien rozmiar';
+$TEXT['RESIZE_IMAGE_TO'] = 'Zmien rozmiar obrazków na';
+$TEXT['RESTORE'] = 'Przywróc';
+$TEXT['RESTORE_DATABASE'] = 'Przywróc baze danych';
+$TEXT['RESTORE_MEDIA'] = 'Przywróc media';
+$TEXT['RESULTS'] = 'Wyniki';
+$TEXT['RESULTS_FOOTER'] = 'Stopka wyników';
+$TEXT['RESULTS_FOR'] = 'Wyniki dla';
+$TEXT['RESULTS_HEADER'] = 'Naglówek wyników';
+$TEXT['RESULTS_LOOP'] = 'Petla wyników';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Powtórz nowe haslo';
+$TEXT['RETYPE_PASSWORD'] = 'Powtórz haslo';
+$TEXT['SAME_WINDOW'] = 'To samo okno';
+$TEXT['SAVE'] = 'Zapisz';
+$TEXT['SEARCH'] = 'Szukaj';
+$TEXT['SEARCHING'] = 'Wyszukiwanie';
+$TEXT['SECTION'] = 'Sekcja';
+$TEXT['SECTION_BLOCKS'] = 'Bloki sekcji';
+$TEXT['SEC_ANCHOR'] = 'Przedrostek tabeli (prefix)';
+$TEXT['SELECT_BOX'] = 'Pole wyboru';
+$TEXT['SEND_DETAILS'] = 'Wyslij szczególy';
+$TEXT['SEPARATE'] = 'Osobno';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'E-mail serwera';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'System operacyjny serwera';
+$TEXT['SESSION_IDENTIFIER'] = 'Identyfikator sesji';
+$TEXT['SETTINGS'] = 'Ustawienia';
+$TEXT['SHORT'] = 'Krótki';
+$TEXT['SHORT_TEXT'] = 'Krótki tekst';
+$TEXT['SHOW'] = 'Wyswietl';
+$TEXT['SHOW_ADVANCED'] = 'Wyswietl opcje zaawansowane';
+$TEXT['SIGNUP'] = 'Zapisz sie';
+$TEXT['SIZE'] = 'Rozmiar';
+$TEXT['SMART_LOGIN'] = 'Inteligentne logowanie';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Rozpocznij publikowanie';
+$TEXT['SUBJECT'] = 'Temat';
+$TEXT['SUBMISSIONS'] = 'Zgloszenia';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Zgloszenia przechowywane w bazie danych';
+$TEXT['SUBMISSION_ID'] = 'ID zgloszenia';
+$TEXT['SUBMITTED'] = 'Zgloszone';
+$TEXT['SUCCESS'] = 'Sukces';
+$TEXT['SYSTEM_DEFAULT'] = 'Domyslne ustawienia systemu';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Uprawnienia systemowe';
+$TEXT['TABLE_PREFIX'] = 'Przedrostek tabeli';
+$TEXT['TARGET'] = 'Cel';
+$TEXT['TARGET_FOLDER'] = 'Folder docelowy';
+$TEXT['TEMPLATE'] = 'Szablon';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Uprawnienia szablonów';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Obszar tekstowy';
+$TEXT['TEXTFIELD'] = 'Pole tekstowe';
+$TEXT['THEME'] = 'Szablon panelu administracji';
+$TEXT['TIME'] = 'Czas';
+$TEXT['TIMEZONE'] = 'Strefa czasowa';
+$TEXT['TIME_FORMAT'] = 'Format czasu';
+$TEXT['TIME_LIMIT'] = 'Maksymalny czas potrzebny na fragment modulu';
+$TEXT['TITLE'] = 'Tytul';
+$TEXT['TO'] = 'Do';
+$TEXT['TOP_FRAME'] = 'Glówna ramka';
+$TEXT['TRASH_EMPTIED'] = 'Smietnik opróniony';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edycja CSS w polu tekstowym ponizej.';
+$TEXT['TYPE'] = 'Rodzaj';
+$TEXT['UNDER_CONSTRUCTION'] = 'W trakcie tworzenia';
+$TEXT['UNINSTALL'] = 'Odinstaluj';
+$TEXT['UNKNOWN'] = 'Nieznany';
+$TEXT['UNLIMITED'] = 'Nieograniczony';
+$TEXT['UNZIP_FILE'] = 'Wrzuc i rozpakuj archiwum';
+$TEXT['UP'] = 'Góra';
+$TEXT['UPGRADE'] = 'Aktualizuj';
+$TEXT['UPLOAD_FILES'] = 'Zaladuj plik(i)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Uzytkownik';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'Aktywni uzytkownicy';
+$TEXT['USERS_CAN_SELFDELETE'] = 'Uzytkownik moze usunac sie sam';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'Uzytkownik moze zmienic swoje ustawienia';
+$TEXT['USERS_DELETED'] = 'Uzytkownicy usunieci';
+$TEXT['USERS_FLAGS'] = 'Flagi uzytkowników';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'Uzytkownik moze tworzyc profil rozszerzony';
+$TEXT['VERIFICATION'] = 'Weryfikacja';
+$TEXT['VERSION'] = 'Wersja';
+$TEXT['VIEW'] = 'Widok';
+$TEXT['VIEW_DELETED_PAGES'] = 'Wyswietl usuniete strony';
+$TEXT['VIEW_DETAILS'] = 'Pokaz szczególy';
+$TEXT['VISIBILITY'] = 'Widocznosc';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Domyslny mail nadawcy';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Domyslna nazwa nadawcy';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Okresl domyslny adres odbiorcy "FROM" i nadawcy "SENDER". Zaleca sie stosowanie ODBIORCY tak jak na przykladzie: <strong>admin@yourdomain.com</strong>. Niektórzy dostawcy maili (np. <em>mail.com</em>) moga odrzucic maile od ODBIORCY adresu takiego jak np <em>name@mail.com</em> ze wzgledu na potraktowanie tego jako spam.<br /><br /> Wartosci domyslne sa uzywane tylko wtedy inne wartosci sa okreslone przez WebsiteBakera. Jesli twój serwer obsluguje <acronym title="Prosty protokól przesylania poczty">SMTP</acronym>, mozesz skorzystac z tej funkcji.';
+$TEXT['WBMAILER_FUNCTION'] = 'Funkcja maila';
+$TEXT['WBMAILER_NOTICE'] = '<strong>Ustawienia poczty SMTP:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'mail PHP';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'Weryfikacja SMTP';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'Aktywuj tylko jesli serwer wymaga uwierzytelnienia SMTP';
+$TEXT['WBMAILER_SMTP_HOST'] = ' Host SMTP';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'Haslo poczty SMTP';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Witryna';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Opis witryny';
+$TEXT['WEBSITE_FOOTER'] = 'Stopka witryny';
+$TEXT['WEBSITE_HEADER'] = 'Naglówek witryny';
+$TEXT['WEBSITE_KEYWORDS'] = 'Slowa kluczowe witryny';
+$TEXT['WEBSITE_TITLE'] = 'Tytul witryny';
+$TEXT['WELCOME_BACK'] = 'Witamy ponownie';
+$TEXT['WIDTH'] = 'Szerokosc';
+$TEXT['WINDOW'] = 'Okno';
+$TEXT['WINDOWS'] = 'Okna';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Uprawnienia zapisywania plików przez wszystkich';
+$TEXT['WRITE'] = 'Zapisz';
+$TEXT['WYSIWYG_EDITOR'] = 'Edytor WYSIWYG';
+$TEXT['WYSIWYG_STYLE'] = 'Styl WYSIWYG';
+$TEXT['YES'] = 'Tak';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Wymagania dodatku nie zostaly spelnione';
+$HEADING['ADD_CHILD_PAGE'] = 'Dodaj strone dziecko"';
+$HEADING['ADD_GROUP'] = 'Dodaj grupe';
+$HEADING['ADD_GROUPS'] = 'Dodak grupy';
+$HEADING['ADD_HEADING'] = 'Dodaj naglówek';
+$HEADING['ADD_PAGE'] = 'Dodaj strone';
+$HEADING['ADD_USER'] = 'Dodaj uzytkownika';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Narzedzia administracyjne';
+$HEADING['BROWSE_MEDIA'] = 'Przegladaj media';
+$HEADING['CREATE_FOLDER'] = 'Utwórz folder';
+$HEADING['DEFAULT_SETTINGS'] = 'Ustawienia domyslne';
+$HEADING['DELETED_PAGES'] = 'Usuniete strony';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Ustawienia systemu plików';
+$HEADING['GENERAL_SETTINGS'] = 'Ustawienia ogólne';
+$HEADING['INSTALL_LANGUAGE'] = 'Zainstaluj jezyk';
+$HEADING['INSTALL_MODULE'] = 'Zainstaluj moduól';
+$HEADING['INSTALL_TEMPLATE'] = 'Zainstaluj szablon';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Uaktywnij pliki jezykowe recznie';
+$HEADING['INVOKE_MODULE_FILES'] = 'Uaktywnij pliki modulów recznie';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Uaktywnij pliki szablonów recznie';
+$HEADING['LANGUAGE_DETAILS'] = 'Szczególy jezyka';
+$HEADING['MANAGE_SECTIONS'] = 'Zarzadzaj sekcjami';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Zmien zaawansowane ustawienia strony';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Zmien/usun grupe';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Zmien/Usun strone';
+$HEADING['MODIFY_DELETE_USER'] = 'Zmien/usun uzytkownika';
+$HEADING['MODIFY_GROUP'] = 'Zmien grupe';
+$HEADING['MODIFY_GROUPS'] = 'Zmien grupy';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Zmien strone poczatkowa';
+$HEADING['MODIFY_PAGE'] = 'Zmien strone';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Zmien ustawienia strony';
+$HEADING['MODIFY_USER'] = 'Zmien uzytkownika';
+$HEADING['MODULE_DETAILS'] = 'Szczególy modulu';
+$HEADING['MY_EMAIL'] = 'Mój e-mail';
+$HEADING['MY_PASSWORD'] = 'Moje haslo';
+$HEADING['MY_SETTINGS'] = 'Moje ustawienia';
+$HEADING['SEARCH_SETTINGS'] = 'Ustawienia wyszukiwania';
+$HEADING['SERVER_SETTINGS'] = 'Ustawienia serwera';
+$HEADING['TEMPLATE_DETAILS'] = 'Szczególy szablonu';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Odinstaluj jezyk';
+$HEADING['UNINSTALL_MODULE'] = 'Odinstaluj modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Odinstaluj szablon';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Zaladuj plik(i)';
+$HEADING['WBMAILER_SETTINGS'] = 'Ustawienia rozsylania maili';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Blad podczas aktualizacji dodatku.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Pomyslnie zainstalowano ponownie pliki jezykowe';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>UWAGA!</strong> Ze wzgledów bezpieczenstwa przeslanie plików jezykowych do folderu /languages/ powinno odbyc sie tylko przez FTP.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Uwaga istniejace wpisy modulu moga zostac utracone w bazie danych.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'Jesli moduly sa przesylane za pomoca protokolu FTP (nie polecane), to funkcje takie jak <tt>instalacja</tt>, <tt>aktualizacja</tt> lub <tt>odinstalowanie</tt> moga nie dzialac prawidlowo. <br /><br />';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Uwaga istniejace wpisy modulu moga zostac utracone w bazie danych. Uzyj tej opcji tylko wtedy gdy masz problemy z przeslaniem przez FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Uwaga istniejace wpisy modulu moga zostac utracone w bazie danych.';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Pomyslnie zainstalowano ponownie moduly';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Zastap nowsze pliki';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Instalacja dodatku. Twój system nie spelnia wymogów niniejszego dodatku. Aby system pracowal z tym dodatkiem nalezy rozwiazac kwestie przedstawione ponizej.';
+$MESSAGE['ADDON_RELOAD'] = 'Aktualizacja bazy danych z informacjami dodatków (np. po FTP).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Szablony zostaly pomyslnie zaladowane ponownie';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Niewystarczajace uprawnienia do ogladania tej strony.';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Haslo mozna resetowac tylko raz na godzine';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Nie udalo sie wyslac hasla, prosze sie skontaktowac z administratorem';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Wprowadzonego adresu e-mail nie ma w bazie danych';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Prosze wprowadzic ponizej swój adres e-mail';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Niestety, nie ma aktywnej zawartosci do wyswietlenia';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Niestety, nie masz uprawnien do ogladania tej strony.';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Juz zainstalowany';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Nie moza zapisac do katalogu docelowego';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Prosimy o cierpliwosc';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Nie mozna odinstalowac';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Nie mozna odinstalowac: wybrany plik jest obecnie uzywany';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> nie moze byc odinstalowany, poniewaz jest uzywany przez {{pages}}:<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'nastepujaca strone;nastepujace strony';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Szablon <b>{{name}}</b> nie moze byc odinstalowany, poniewaz jest ustawiony jako szablon domyslny!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Nie mozna odinstalowac szablonu <b>{{name}}</b>, poniewaz jest ustawiony jako domyslny!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Nie mozna rozpakowac pliku';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Nie mozna zaladowac pliku';
+$MESSAGE['GENERIC_COMPARE'] = ' pomyslnie';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Blad podczas otwierania pliku.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' niepomyslnie';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Prosze zwrócic uwage, ze ladowany plik musi byc w formacie:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Prosze zwrócic uwage, ze ladowany plik musi byc w jednym z formatów:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Prosze sie cofnac i wypelnic wszystkie pola';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'Nie dokonano zadnego wyboru!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Zainstalowano pomyslnie';
+$MESSAGE['GENERIC_INVALID'] = 'Zaladowany plik jest nieprawidlowy';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Nieprawidlowy plik instalacyjny Websidebakera. Sprawdz format *.zip.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Nieprawidlowy plik jezykowy Websidebakera. Prosze sprawdzic w pliku tekstowym.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Nieprawidlowy plik modulu Websidebakera. Prosze sprawdzic w pliku tekstowym.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Nieprawidlowy plik szablonu Websidebakera. Prosze sprawdzic w pliku tekstowym.';
+$MESSAGE['GENERIC_IN_USE'] = ' moze byc uzyte w ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Brak archiwum pliku!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'Modul nie jest poprawnie zainstalowany! Bledna wersja!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = 'nie jest mozliwe';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Niezainstalowano';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Aktualizacja nie moze nastapic';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Prosimy o cierpliwosc, to moze troche potrwac.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Zapraszamy wkrótce...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Naruszenie bezpieczenstwa!! Odmowa dostepu!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Naruszenia bezpieczenstwa! Przechowywanie danych zostalo odrzucone!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Odinstalowano pomyslnie';
+$MESSAGE['GENERIC_UPGRADED'] = 'Zaktualizowano pomyslnie';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Porównyanie wersji';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Wymagana aktualizacja!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Aktualizacja do nizszej wersji';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'Ta strona jest chwilowo niedostepna';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Witryna w trakcie tworzenia';
+$MESSAGE['GROUPS_ADDED'] = 'Grupa zostala dodana';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Czy aby na pewno usunac wybrana grupe (i wszystkich uzytkowników, którzy do niej naleza)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupa zostala usunieta';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Nazwa grupy jest pusta';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Grupa o takiej nazwie juz istnieje';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Nie odnaleziono zadnych grup';
+$MESSAGE['GROUPS_SAVED'] = 'Grupa zostala zapisana';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Prosze wprowadzic haslo';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Wprowadzone haslo jest zbyt krótkie';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Wprowadzone haslo jest zbyt krótkie';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Nie wprowadzono rozszerzenia pliku';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Nie wprowadzono nazwy uzytkownika';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Nie mozna usunac wybranego folderu';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Nie mozna usunac wybranego pliku';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Nie udalo sie zmienic nazwy';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Czy aby na pewno usunac nastepujace pliki lub foldery?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Folder zostal usuniety';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Plik zostal usuniety';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Okreslony katalog nie istnieje lub nie jest dozwolony.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Katalog nie istnieje';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Nazwa folderu nie moze zawierac ../';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Folder pasujacy do wprowadzonej nazwy juz istnieje';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Folder zostal utworzony';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Nie udalo sie utworzyc folderu';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Plik pasujacy do wprowadzonej nazwy juz istnieje';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Plik nieodnaleziony';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Nazwa nie moze zawierac ../';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nie mozna uzyc index.php jako nazwy';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nie odnaleziono zadnych mediów w biezacym folderze';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'Nie przyjeto pliku';
+$MESSAGE['MEDIA_RENAMED'] = 'Nazwa zostala zmieniona';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' plik zostal pomyslnie zaladowany';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Folder docelowy nie moze zawierac ../';
+$MESSAGE['MEDIA_UPLOADED'] = ' pliki zostaly pomyslnie zaladowane';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Niestety, ten formularz zostal wyslany zbyt wiele razy w ciagu tej godziny. Prosimy spróbowac ponownie za godzine.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Wprowadzony numer weryfikacyjny (tzw. Captcha) jest nieprawidlowy. Jesli masz problemy z odczytaniem Captcha, napisz do: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Nalezy wprowadzic szczególy dla nastepujacych pól';
+$MESSAGE['PAGES_ADDED'] = 'Strona zostala dodana';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Naglówek strony zostal dodany';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Prosze wprowadzic tytul menu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Prosze wprowadzic tytul strony';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Blad podczas tworzenia pliku dostepowego w katalogu /pages (niewystarczajace uprawnienia)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Blad podczas usuwania pliku dostepowego w katalogu /pages (niewystarczajace uprawnienia)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Blad podczas zmieniania kolejnosci stron';
+$MESSAGE['PAGES_DELETED'] = 'Strona zostala usunieta';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Czy aby na pewno usunac wybrana strone (i wszystkie jej podstrony)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Nie masz uprawnien do modyfikowania tej strony';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Kliknij TUTAJ by zmienic strone wprowadzajaca';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Nie mozna zapisac pliku /pages/intro.php (niewystarczajace uprawnienia)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Strona wprowadzajaca zostala zapisana';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Ostatnio zmodyfikowane przez';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Strona nie znaleziona';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Blad podczas zapisywania strony';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Strona o tym lub podobnym tytule juz istnieje';
+$MESSAGE['PAGES_REORDERED'] = 'Zmieniono kolejnosc stron';
+$MESSAGE['PAGES_RESTORED'] = 'Strona zostala przywrócona';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Powrót do stron';
+$MESSAGE['PAGES_SAVED'] = 'Strona zostala zapisana';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Ustawienia strony zostaly zapisane';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Wlasciwosci sekcji zostaly zapisane';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = '(Biezace) haslo jest nieprawidlowe';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Szczególy zostaly zapisane';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-mail zostal zaktualizowany';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Blad. Haslo zawiera nieprawidlowe znaki';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Haslo zostalo zmienione';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'Zmiana tego rekordu nie powiodla sie';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'Zmiana rekordu zostala zaktualizowana pomyslnie.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Dodanie nowego rekordu sie nie powiodlo.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'Nowy rekord zostal dodany pomyslnie.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Uwaga: nacisniecie tego przycisku resetuje wszystkie niezapisane zmiany';
+$MESSAGE['SETTINGS_SAVED'] = 'Ustawienia zostaly zapisane';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Nie mozna otworzyc pliku konfiguracyjnego';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Nie mozna zapisac pliku konfiguracyjnego';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Uwaga: zalecane wylacznie w srodowiskach testowych';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+Nowe konto uzytkownika zostalo utworzone.
+
+Loginname: {LOGIN_NAME}
+ID uzytkownika: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+Adres IP: {LOGIN_IP}
+Data rejestracji: {SIGNUP_DATE}
+----------------------------------------
+Ta wiadomosc zostala wygenerowana automatycznie.
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Witaj {LOGIN_DISPLAY_NAME},
+
+Ten mail zostal wyslany poniewaz\'zapomiano hasla\' funkcja odzyskania twojego konta zostala uruchomiona.
+
+Szczególy twojego nowego konta \'{LOGIN_WEBSITE_TITLE}\' ponizej:
+
+Loginname: {LOGIN_NAME}
+Haslo: {LOGIN_PASSWORD}
+
+Powyzej zostalo podane twoje haslo.
+Oznacza to, ze stare haslo nie bedzie juz dzialac!
+Jesli masz pytania badz problemy z nowym loginem lub haslem skontaktuj sie z administratorem \'{LOGIN_WEBSITE_TITLE}\'.
+Aby uniknac nieoczekiwanych awarii prosze pamietac o czyszczeniu pamieci podrecznej cache przegladarki
+
+Pozdrawiamy
+------------------------------------
+Ta wiadomosc zostala wygenerowana automatycznie.
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Witamy \'{LOGIN_WEBSITE_TITLE}\'.
+
+Szczególy konta \'{LOGIN_WEBSITE_TITLE}\' ponizej:
+Loginname: {LOGIN_NAME}
+Haslo: {LOGIN_PASSWORD}
+
+Pozdrawiamy
+
+Prosba:
+Jesli otrzymales te wiadomosc przez pomylke, usun ja niezwlocznie!
+-------------------------------------
+Ta wiadomosc zostala wygenerowana automatycznie!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Twoje dane logowania...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Nalezy wprowadzic adres e-mail';
+$MESSAGE['START_CURRENT_USER'] = 'Jestes obecnie zalogowany(-a) jako:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Uwaga: katalog instalacyjny wciaz istnieje!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Witamy w panelu administracyjnym WebsiteBakera';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Uwaga: aby zmienic szablon, nalezy przejsc do sekcji Ustawienia';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Uzytkownik zostal dodany';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Zadanie odrzucone, Nie mozesz usunac sam siebie!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Uwaga: Powyzsze pola nalezy wypelnic tylko, jesli chce sie zmienic haslo tego uzytkownika';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Czy aby na pewno usunac wybranego uzytkownika?';
+$MESSAGE['USERS_DELETED'] = 'Uzytkownik zostal usuniety';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Wprowadzony adres e-mail jest juz uzywany';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Wprowadzony adres e-mail jest nieprawidlowy';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Nie wybrano grupy';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Wprowadzone hasla nie pasuja';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Wprowadzone haslo bylo za krótkie';
+$MESSAGE['USERS_SAVED'] = 'Uzytkownik zostal zapisany';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Narzedzia administracji WebsiteBakera...';
+$OVERVIEW['GROUPS'] = 'Zarzadzaj grupami uzytkowników i ich uprawnieniami systemowymi...';
+$OVERVIEW['HELP'] = 'Masz pytania? Znajdz odpowiedzi...';
+$OVERVIEW['LANGUAGES'] = 'Zarzadzaj jezykami WebsiteBakera...';
+$OVERVIEW['MEDIA'] = 'Zarzadzaj plikami przechowywanymi w folderze mediów...';
+$OVERVIEW['MODULES'] = 'Zarzadzaj modulami WebsiteBakera...';
+$OVERVIEW['PAGES'] = 'Zarzadzaj stronami...';
+$OVERVIEW['PREFERENCES'] = 'Zmien preferencje, takie jak adres e-mail, haslo itp... ';
+$OVERVIEW['SETTINGS'] = 'Zmien ustawienia WebsiteBakera...';
+$OVERVIEW['START'] = 'Panel administracyjny';
+$OVERVIEW['TEMPLATES'] = 'Zmien wyglad swojej strony za pomoca szablonów...';
+$OVERVIEW['USERS'] = 'Zarzadzaj uzytkownikami mogacymi logowac sie do WebsiteBakera...';
+$OVERVIEW['VIEW'] = 'Podglad witryny w nowym oknie...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/PL.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/HU.php
===================================================================
--- tags/2.8.3/wb/languages/HU.php	(nonexistent)
+++ tags/2.8.3/wb/languages/HU.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'HU';
+$language_name = 'Magyar';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Zsolt + Robert';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Jogosults&aacute;gok';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Kieg&eacute;sz&iacute;t-?-?';
+$MENU['ADMINTOOLS'] = 'Admin-Eszk&ouml;z&ouml;k';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Elfelejtett jelsz&oacute;';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Csoportok';
+$MENU['HELP'] = 'S&uacute;g&oacute;';
+$MENU['LANGUAGES'] = 'Nyelvek';
+$MENU['LOGIN'] = 'Bel&eacute;p&eacute;s';
+$MENU['LOGOUT'] = 'Kil&eacute;p&eacute;s';
+$MENU['MEDIA'] = 'M&eacute;dia';
+$MENU['MODULES'] = 'Modulok';
+$MENU['PAGES'] = 'Weblapok';
+$MENU['PREFERENCES'] = 'Saj&aacute;t adatok';
+$MENU['SETTINGS'] = 'Param&eacute;terek';
+$MENU['START'] = 'Kezd-?-?ap';
+$MENU['TEMPLATES'] = 'Sablonok';
+$MENU['USERS'] = 'Felhaszn&aacute;l&oacute;k';
+$MENU['VIEW'] = 'Port&aacute;l n&eacute;zet';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Fi&oacute;k L&eacute;trehoz&aacute;s';
+$TEXT['ACTIONS'] = 'Tev&eacute;kenys&eacute;gek';
+$TEXT['ACTIVE'] = 'Akt&iacute;v';
+$TEXT['ADD'] = 'Hozz&aacute;ad';
+$TEXT['ADDON'] = 'Kig&eacute;sz&iacute;t&ccedil;';
+$TEXT['ADD_SECTION'] = 'Szakasz hozz&aacute;ad&aacute;sa';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Adminisztr&aacute;l&aacute;s';
+$TEXT['ADMINISTRATION_TOOL'] = 'Adminisztr&aacute;ci&oacute;s Eszk&ouml;z';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Adminisztr&aacute;torok';
+$TEXT['ADVANCED'] = 'B-?-¦&iacute;tett';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Enged&eacute;lyezett l&aacute;togat&oacute;k';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'T&ouml;bbet is kiv&aacute;laszthat';
+$TEXT['ALL_WORDS'] = 'Minden sz&oacute;';
+$TEXT['ANCHOR'] = 'Horgony';
+$TEXT['ANONYMOUS'] = 'N&eacute;vtelen';
+$TEXT['ANY_WORDS'] = 'B&aacute;rmely sz&oacute;';
+$TEXT['APP_NAME'] = 'Alkalmaz&aacute;s Neve';
+$TEXT['ARE_YOU_SURE'] = 'Biztos hogy ezt akarja?';
+$TEXT['AUTHOR'] = 'Szerz&ccedil;';
+$TEXT['BACK'] = 'Vissza';
+$TEXT['BACKUP'] = 'Biztons&aacute;gi Ment&eacute;s';
+$TEXT['BACKUP_ALL_TABLES'] = 'Minden adatb&aacute;zis t&aacute;bla ment&eacute;se';
+$TEXT['BACKUP_DATABASE'] = 'Adatb&aacute;zis Ment&eacute;se';
+$TEXT['BACKUP_MEDIA'] = 'Biztons&aacute;gi ment&eacute;s M&eacute;dia';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Csak WB specifikus adatb&aacute;zis t&aacute;bla ment&eacute;se';
+$TEXT['BASIC'] = 'Alap';
+$TEXT['BLOCK'] = 'Blokk';
+$TEXT['CALENDAR'] = 'Napt&aacute;r';
+$TEXT['CANCEL'] = 'M&eacute;gse';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Ellen&ouml;rz&eacute;s';
+$TEXT['CAP_EDIT_CSS'] = 'CSS Szerkeszt&eacute;se';
+$TEXT['CHANGE'] = 'M&oacute;dos&iacute;t';
+$TEXT['CHANGES'] = 'V&aacute;toz&aacute;sok';
+$TEXT['CHANGE_SETTINGS'] = 'Be&aacute;ll&iacute;t&aacute;sok megv&aacute;ltoztat&aacute;sa';
+$TEXT['CHARSET'] = 'Karakterk&eacute;szlet';
+$TEXT['CHECKBOX_GROUP'] = 'Jel&ouml;l&agrave;n&eacute;gyzet csoport';
+$TEXT['CLOSE'] = 'Bez&aacute;r';
+$TEXT['CODE'] = 'K&oacute;d';
+$TEXT['CODE_SNIPPET'] = 'Code-r&eacute;szlet';
+$TEXT['COLLAPSE'] = '&sup3;szecsuk';
+$TEXT['COMMENT'] = 'Megjegyz&eacute;s';
+$TEXT['COMMENTING'] = 'Komment&aacute;l&aacute;s';
+$TEXT['COMMENTS'] = 'Megjegyz&eacute;sek';
+$TEXT['CREATE_FOLDER'] = 'K&ouml;nyvt&aacute;r l&eacute;trehoz&aacute;sa';
+$TEXT['CURRENT'] = 'Aktu&aacute;lis';
+$TEXT['CURRENT_FOLDER'] = 'Aktu&aacute;lis k&ouml;nyvt&aacute;r';
+$TEXT['CURRENT_PAGE'] = 'Aktu&aacute;lis Lap';
+$TEXT['CURRENT_PASSWORD'] = 'Aktu&aacute;lis Jelsz&oacute;';
+$TEXT['CUSTOM'] = 'Egy&eacute;ni';
+$TEXT['DATABASE'] = 'Adatb&aacute;zis';
+$TEXT['DATE'] = 'D&aacute;tum';
+$TEXT['DATE_FORMAT'] = 'D&aacute;tum form&aacute;tum';
+$TEXT['DEFAULT'] = 'Alap&eacute;rtelmezett';
+$TEXT['DEFAULT_CHARSET'] = 'Alap&eacute;rtelmezett Karakterrk&eacute;szlet';
+$TEXT['DEFAULT_TEXT'] = 'Alap&eacute;rtelmezett sz&ouml;veg';
+$TEXT['DELETE'] = 'T&ouml;rl&eacute;s';
+$TEXT['DELETED'] = 'T&ouml;r&ouml;lve';
+$TEXT['DELETE_DATE'] = 'D&aacute;tum t&ouml;rl&eacute;se';
+$TEXT['DELETE_ZIP'] = 'ZIP arch&iacute;vum t&ouml;rl&eacute;se kicsomagol&aacute;s ut&aacute;n&amp;';
+$TEXT['DESCRIPTION'] = 'Le&iacute;r&aacute;s';
+$TEXT['DESIGNED_FOR'] = 'Tervezve';
+$TEXT['DIRECTORIES'] = 'K&ouml;nyvt&aacute;rak';
+$TEXT['DIRECTORY_MODE'] = 'K&ouml;nyvt&aacute;r m&oacute;d';
+$TEXT['DISABLED'] = 'Letiltva';
+$TEXT['DISPLAY_NAME'] = 'Megjelen&agrave;N&eacute;v';
+$TEXT['EMAIL'] = 'E-mail';
+$TEXT['EMAIL_ADDRESS'] = 'E-mail C&iacute;m';
+$TEXT['EMPTY_TRASH'] = 'Kuka &uuml;r&iacute;t&eacute;s';
+$TEXT['ENABLED'] = 'Enged&eacute;lyezve';
+$TEXT['END'] = 'V&eacute;ge';
+$TEXT['ERROR'] = 'Hiba';
+$TEXT['EXACT_MATCH'] = 'Pontos egyez&eacute;s';
+$TEXT['EXECUTE'] = 'V&eacute;grehajt&aacute;s';
+$TEXT['EXPAND'] = 'Kibont';
+$TEXT['EXTENSION'] = 'B-?-¦&iacute;tm&eacute;ny';
+$TEXT['FIELD'] = 'Mez&ccedil;';
+$TEXT['FILE'] = 'F&aacute;jl';
+$TEXT['FILES'] = 'F&aacute;jlok';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'File rendszer jogosults&aacute;gok';
+$TEXT['FILE_MODE'] = 'File M&oacute;d';
+$TEXT['FINISH_PUBLISHING'] = 'Publik&aacute;l&aacute;s v&eacute;ge';
+$TEXT['FOLDER'] = 'K&ouml;nyvt&aacute;r';
+$TEXT['FOLDERS'] = 'K&ouml;nyvt&aacute;rak';
+$TEXT['FOOTER'] = 'L&aacute;bl&eacute;c';
+$TEXT['FORGOTTEN_DETAILS'] = 'Mi is a jelsz&oacute;?';
+$TEXT['FORGOT_DETAILS'] = 'Elfelejtettem a jelsz&oacute;t.';
+$TEXT['FROM'] = 'Felad&oacute;';
+$TEXT['FRONTEND'] = 'Megjelen&agrave;fel&uuml;let';
+$TEXT['FULL_NAME'] = 'Teljes n&eacute;v';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Csoport';
+$TEXT['HEADER'] = 'Fejl&eacute;c';
+$TEXT['HEADING'] = 'C&iacute;msor';
+$TEXT['HEADING_CSS_FILE'] = 'Aktu&aacute;lis Modul F&aacute;jl: ';
+$TEXT['HEIGHT'] = 'Magass&aacute;g';
+$TEXT['HIDDEN'] = 'Rejtett';
+$TEXT['HIDE'] = 'Elrejt';
+$TEXT['HIDE_ADVANCED'] = 'Speci&aacute;lis be&aacute;ll&iacute;t&aacute;sok elrejt&eacute;se';
+$TEXT['HOME'] = 'Kezd-?-?ap';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Honlap &aacute;tir&aacute;ny&iacute;t&aacute;s';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Ikon';
+$TEXT['IMAGE'] = 'K&eacute;p';
+$TEXT['INLINE'] = 'Sorban';
+$TEXT['INSTALL'] = 'Telep&iacute;t';
+$TEXT['INSTALLATION'] = 'Telep&iacute;t&eacute;s';
+$TEXT['INSTALLATION_PATH'] = 'Telep&iacute;t&eacute;si &uacute;tvonal';
+$TEXT['INSTALLATION_URL'] = 'Telep&iacute;t&eacute;si URL';
+$TEXT['INSTALLED'] = 'telep&iacute;tve';
+$TEXT['INTRO'] = 'Bevezet&ccedil;';
+$TEXT['INTRO_PAGE'] = 'Bevezet&agrave;Lap';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Kulcsszavak';
+$TEXT['LANGUAGE'] = 'Nyelv';
+$TEXT['LAST_UPDATED_BY'] = 'M&oacute;dos&iacute;totta';
+$TEXT['LENGTH'] = 'Hossz';
+$TEXT['LEVEL'] = 'Szint';
+$TEXT['LINK'] = 'Hivatkoz&aacute;s';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Lista opci&oacute;k';
+$TEXT['LOGGED_IN'] = 'Bejelentkezve';
+$TEXT['LOGIN'] = 'Bel&eacute;p&eacute;s';
+$TEXT['LONG'] = 'Hossz-?-¦';
+$TEXT['LONG_TEXT'] = 'Hossz&uacute; sz&ouml;veg';
+$TEXT['LOOP'] = 'ism&eacute;tl-?-?&uuml;/br&gt; t&ouml;rzs szakasz';
+$TEXT['MAIN'] = 'F&ccedil;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Kezel';
+$TEXT['MANAGE_GROUPS'] = 'Csoportok kezel&eacute;se';
+$TEXT['MANAGE_USERS'] = 'Felhaszn&aacute;l&oacute;k kezel&eacute;se';
+$TEXT['MATCH'] = 'Egyezik';
+$TEXT['MATCHING'] = 'Egyez&eacute;s';
+$TEXT['MAX_EXCERPT'] = 'Maximum tal&aacute;lat';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. bek&uuml;ld&eacute;s &oacute;r&aacute;nk&eacute;nt';
+$TEXT['MEDIA_DIRECTORY'] = 'M&eacute;dia k&ouml;nyvt&aacute;r';
+$TEXT['MENU'] = 'Men&uuml;';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Menu C&iacute;m';
+$TEXT['MESSAGE'] = '&ordm;enet';
+$TEXT['MODIFY'] = 'M&oacute;dos&iacute;t&aacute;s';
+$TEXT['MODIFY_CONTENT'] = 'Tartalom m&oacute;dos&iacute;t&aacute;sa';
+$TEXT['MODIFY_SETTINGS'] = 'Be&aacute;ll&iacute;t&aacute;sok m&oacute;dos&iacute;t&aacute;sa';
+$TEXT['MODULE_ORDER'] = 'Modul sorrend keres&eacute;sn&eacute;l';
+$TEXT['MODULE_PERMISSIONS'] = 'Modul enged&eacute;lyek';
+$TEXT['MORE'] = 'B-?-¦ebben';
+$TEXT['MOVE_DOWN'] = 'Mozgat Le';
+$TEXT['MOVE_UP'] = 'Mozgat Fel';
+$TEXT['MULTIPLE_MENUS'] = 'T&ouml;bbszint-?-¦ men&uuml;';
+$TEXT['MULTISELECT'] = 'T&ouml;bb v&aacute;laszt&aacute;sos';
+$TEXT['NAME'] = 'N&eacute;v';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Vissza a bel&eacute;p&eacute;shez';
+$TEXT['NEW_PASSWORD'] = '&ordf; Jelsz&oacute;';
+$TEXT['NEW_WINDOW'] = '&ordf; ablak';
+$TEXT['NEXT'] = 'K&ouml;vetke&ccedil;';
+$TEXT['NEXT_PAGE'] = 'K&ouml;vetke&agrave;oldal';
+$TEXT['NO'] = 'Nem';
+$TEXT['NONE'] = 'Egyik sem';
+$TEXT['NONE_FOUND'] = 'Nem tal&aacute;lhat&oacute;';
+$TEXT['NOT_FOUND'] = 'Nem tal&aacute;lhat&oacute;';
+$TEXT['NOT_INSTALLED'] = 'nincs telep&iacute;tve';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Nincs eredm&eacute;ny';
+$TEXT['OF'] = '&ouml;sszesen:';
+$TEXT['ON'] = 'Be';
+$TEXT['OPEN'] = 'Megnyit&aacute;s';
+$TEXT['OPTION'] = 'Opci&oacute;k';
+$TEXT['OTHERS'] = 'Egyebek';
+$TEXT['OUT_OF'] = 'T&uacute;l';
+$TEXT['OVERWRITE_EXISTING'] = 'Megl&eacute;v&agrave;fel&uuml;l&iacute;r&aacute;sa';
+$TEXT['PAGE'] = 'Lap';
+$TEXT['PAGES_DIRECTORY'] = 'Lap k&ouml;nyvt&aacute;r';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Lap kiterjeszt&eacute;s';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Lap nyelv';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Lap szint limit';
+$TEXT['PAGE_SPACER'] = 'Lap filen&eacute;v elv&aacute;laszt&oacute;';
+$TEXT['PAGE_TITLE'] = 'Lap c&iacute;m';
+$TEXT['PAGE_TRASH'] = 'Lap kuka';
+$TEXT['PARENT'] = 'Almen&uuml;je ennek';
+$TEXT['PASSWORD'] = 'Jelsz&oacute;';
+$TEXT['PATH'] = '&acute;vonal';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP hibajelent&eacute;si szint';
+$TEXT['PLEASE_LOGIN'] = 'K&eacute;rem l&eacute;pjen be';
+$TEXT['PLEASE_SELECT'] = 'K&eacute;rem v&aacute;lasszon';
+$TEXT['POST'] = 'Cikk';
+$TEXT['POSTS_PER_PAGE'] = '&ordm;enetek laponk&eacute;nt';
+$TEXT['POST_FOOTER'] = '&ordm;enet l&aacute;bl&eacute;c';
+$TEXT['POST_HEADER'] = '&ordm;enet fejbl&eacute;c';
+$TEXT['PREVIOUS'] = 'El-?-?&ccedil;';
+$TEXT['PREVIOUS_PAGE'] = 'El-?-?&agrave;oldal';
+$TEXT['PRIVATE'] = 'Priv&aacute;t';
+$TEXT['PRIVATE_VIEWERS'] = 'Priv&aacute;t jogosultak';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Publikus';
+$TEXT['PUBL_END_DATE'] = 'Z&aacute;r&oacute; d&aacute;tum';
+$TEXT['PUBL_START_DATE'] = 'Kezd&agrave;d&aacute;tum';
+$TEXT['RADIO_BUTTON_GROUP'] = 'V&aacute;laszt&oacute; gomb csoport';
+$TEXT['READ'] = 'Olr&aacute;s';
+$TEXT['READ_MORE'] = '&lt;/br&gt;Tov&aacute;bb...&lt;/br&gt;';
+$TEXT['REDIRECT_AFTER'] = '&acute;ir&aacute;ny&iacute;t&aacute;s';
+$TEXT['REGISTERED'] = 'Regisztr&aacute;lva';
+$TEXT['REGISTERED_VIEWERS'] = 'Regisztr&aacute;lt l&aacute;togat&oacute;k';
+$TEXT['RELOAD'] = '&ordf;rat&ouml;lt&eacute;s';
+$TEXT['REMEMBER_ME'] = 'Eml&eacute;kezzen';
+$TEXT['RENAME'] = '&acute;nevez';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'K&ouml;telez&ccedil;';
+$TEXT['REQUIREMENT'] = 'K&ouml;vetelem&eacute;ny';
+$TEXT['RESET'] = 'Visszavon';
+$TEXT['RESIZE'] = '&ordf;ra m&eacute;retez';
+$TEXT['RESIZE_IMAGE_TO'] = 'K&eacute;p &aacute;tm&eacute;retez&eacute;se';
+$TEXT['RESTORE'] = 'Vissza&aacute;ll&iacute;t&aacute;s';
+$TEXT['RESTORE_DATABASE'] = 'Adatb&aacute;zis Vissza&aacute;ll&iacute;t&aacute;sa';
+$TEXT['RESTORE_MEDIA'] = 'Vissza&aacute;ll&iacute;t&aacute;si M&eacute;dia';
+$TEXT['RESULTS'] = 'Eredm&eacute;nyek';
+$TEXT['RESULTS_FOOTER'] = 'Eredm&eacute;nyek l&aacute;bl&eacute;c';
+$TEXT['RESULTS_FOR'] = 'Keresett';
+$TEXT['RESULTS_HEADER'] = 'Eredm&eacute;nyek fejl&eacute;c';
+$TEXT['RESULTS_LOOP'] = 'Eredm&eacute;nyek ciklus';
+$TEXT['RETYPE_NEW_PASSWORD'] = '&ordf; Jelsz&oacute; m&eacute;gegyszer';
+$TEXT['RETYPE_PASSWORD'] = 'Jelsz&oacute; m&eacute;gegyszer';
+$TEXT['SAME_WINDOW'] = 'Azonos Ablak';
+$TEXT['SAVE'] = 'Ment&eacute;s';
+$TEXT['SEARCH'] = 'Keres&eacute;s';
+$TEXT['SEARCHING'] = 'Keres&eacute;s...';
+$TEXT['SECTION'] = 'Szakasz';
+$TEXT['SECTION_BLOCKS'] = 'Szakaszok';
+$TEXT['SEC_ANCHOR'] = 'Szekci&oacute;-Horgony sz&ouml;veg';
+$TEXT['SELECT_BOX'] = 'Jel&ouml;l&agrave;n&eacute;gyzet';
+$TEXT['SEND_DETAILS'] = 'Jelsz&oacute; elk&uuml;ld&eacute;se';
+$TEXT['SEPARATE'] = 'K&uuml;l&ouml;n&aacute;ll&oacute;';
+$TEXT['SEPERATOR'] = 'Elv&aacute;laszt&oacute;';
+$TEXT['SERVER_EMAIL'] = 'Port&aacute;l E-mail c&iacute;me';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Szerver Oper&aacute;ci&oacute;s Rendszer';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Azonos&iacute;t&oacute;';
+$TEXT['SETTINGS'] = 'Be&aacute;ll&iacute;t&aacute;s';
+$TEXT['SHORT'] = 'R&ouml;vid';
+$TEXT['SHORT_TEXT'] = 'R&ouml;vid sz&ouml;veg';
+$TEXT['SHOW'] = 'Mutat';
+$TEXT['SHOW_ADVANCED'] = 'Speci&aacute;lis be&aacute;ll&iacute;t&aacute;sok mutat&aacute;sa';
+$TEXT['SIGNUP'] = 'Regisztr&aacute;l&aacute;s...';
+$TEXT['SIZE'] = 'M&eacute;ret';
+$TEXT['SMART_LOGIN'] = 'Okos bejelentkez&eacute;s';
+$TEXT['START'] = 'Kezd&eacute;s';
+$TEXT['START_PUBLISHING'] = 'Publik&aacute;l&aacute;s kezdete';
+$TEXT['SUBJECT'] = 'T&aacute;rgy';
+$TEXT['SUBMISSIONS'] = 'Bek&uuml;ld&eacute;sek';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'T&aacute;rolva az adatb&aacute;zisban';
+$TEXT['SUBMISSION_ID'] = 'Bek&uuml;ld&eacute;s azonos&iacute;t&oacute;';
+$TEXT['SUBMITTED'] = 'Elk&uuml;ldve';
+$TEXT['SUCCESS'] = 'Sikeres';
+$TEXT['SYSTEM_DEFAULT'] = 'Rendszer alap&eacute;rtelmezett';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Rendszer enged&eacute;lyek';
+$TEXT['TABLE_PREFIX'] = 'T&aacute;bla el-?-?ag';
+$TEXT['TARGET'] = 'C&eacute;l';
+$TEXT['TARGET_FOLDER'] = 'C&eacute;l k&ouml;nyvt&aacute;r';
+$TEXT['TEMPLATE'] = 'Weboldal Sablon';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Sablon jogosults&aacute;gok';
+$TEXT['TEXT'] = 'Sz&ouml;veg';
+$TEXT['TEXTAREA'] = 'Sz&ouml;vegter&uuml;let';
+$TEXT['TEXTFIELD'] = 'Sz&ouml;vegmez&ccedil;';
+$TEXT['THEME'] = 'Admin T&eacute;ma';
+$TEXT['TIME'] = 'Id&ccedil;';
+$TEXT['TIMEZONE'] = 'Id-?-?&oacute;na';
+$TEXT['TIME_FORMAT'] = 'Id&agrave;form&aacute;tum';
+$TEXT['TIME_LIMIT'] = 'Maxim&aacute;lis id&agrave;a modulonk&eacute;nti tal&aacute;latra';
+$TEXT['TITLE'] = 'C&iacute;m';
+$TEXT['TO'] = 'C&iacute;mzett';
+$TEXT['TOP_FRAME'] = 'Fels&agrave;Keret';
+$TEXT['TRASH_EMPTIED'] = 'Kuka ki&uuml;r&iacute;tve';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Itt szerkesztheted a CSS defin&iacute;ci&oacute;kat.';
+$TEXT['TYPE'] = 'T&iacute;pus';
+$TEXT['UNDER_CONSTRUCTION'] = 'Fejleszt&eacute;s alatt';
+$TEXT['UNINSTALL'] = 'Elt&aacute;vol&iacute;t';
+$TEXT['UNKNOWN'] = 'Ismeretlen';
+$TEXT['UNLIMITED'] = 'V&eacute;gtelen';
+$TEXT['UNZIP_FILE'] = 'ZIP arch&iacute;vum felt&ouml;lt&eacute;se &eacute;s kicsomagol&aacute;sa';
+$TEXT['UP'] = 'Fel';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'F&aacute;jl felt&ouml;lt&eacute;s';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Felhaszn&aacute;l&oacute;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Ellen&ouml;rz&eacute;s';
+$TEXT['VERSION'] = 'Verzi&oacute;';
+$TEXT['VIEW'] = 'N&eacute;zet';
+$TEXT['VIEW_DELETED_PAGES'] = 'T&ouml;r&ouml;lt Lapok megtekint&eacute;se';
+$TEXT['VIEW_DETAILS'] = 'Inf&oacute;t megn&eacute;z';
+$TEXT['VISIBILITY'] = 'Megjelen&eacute;s';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'K&uuml;ld&agrave;email';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'K&uuml;ld&agrave;szem&eacute;ly';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'K&eacute;rlek add meg az alap&eacute;rtelmezett "K&uuml;ld&agrave;email" c&iacute;met &eacute;s a "K&uuml;ld&agrave;szem&eacute;ly" mez-?-?. Aj&aacute;nlott az al&aacute;bbi foszn&aacute;lata: &lt;strong&gt;admin@tedomained.hu&lt;/strong&gt;. N&eacute;mely szolg&aacute;ltat&oacute; (e.g. &lt;em&gt;mail.com&lt;/em&gt;) Visszautas&iacute;thatja a leveleket az olyan k&uuml;ld&agrave;c&iacute;mt-?-? mint &lt;@mail.com&lt;/em&gt; ez az&eacute;rt van hogy megakad&aacute;lyozz&aacute;k a SPAM k&uuml;ld&eacute;st.&lt;br /&gt;&lt;br /&gt;Az alap&eacute;rtelmezett &eacute;rt&eacute;kek csak akkor &eacute;rv&eacute;nyesek,ha nincs m&aacute;s megadva aker-ben. Ha a szervered t&aacute;mogatja &lt;acronym title="Simple mail transfer protocol"&gt;SMTP&lt;/acronym&gt;protokolt, akkor haszn&aacute;lhatod ezt az opci&oacute;t lev&eacute;l k&uuml;ld&eacute;;hez.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Rutin';
+$TEXT['WBMAILER_NOTICE'] = '&lt;strong&gt;SMTP Mailer Be&aacute;ll&iacute;t&aacute;sok:&lt;/strong&gt;&lt;br /&gt;Ezek a be&aacute;ll&iacute;t&aacute;sok csak akkor sz&uuml;ks&eacute;gesek, ha emailt akarsz k&uuml;ldeni &lt;acro="Simple mail transfer protocol"&gt;SMTP&lt;/acronym&gt; protokollon kereszt&uuml;l. Ha nem tudod az SMTP kiszolg&aacute;l&oacute;dat, vagy nem vagy biztos a k&ouml;vetlem&eacute;nyekben, akkoszer-?-¦en maradj az alap be&aacute;ll&iacute;t&aacute;sn&aacute;l: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Azonos&iacute;t&aacute;s';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'csak akkor aktiv&aacute;ld ha az SMTP host azonos&iacute;t&aacute;st k&eacute;r';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Jelsz&oacute;';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Weblap';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Weblap le&iacute;r&aacute;s';
+$TEXT['WEBSITE_FOOTER'] = 'Weblap l&aacute;bl&eacute;c';
+$TEXT['WEBSITE_HEADER'] = 'Weblap fejl&eacute;c';
+$TEXT['WEBSITE_KEYWORDS'] = 'Weblap kulcsszavak';
+$TEXT['WEBSITE_TITLE'] = 'Weblap C&iacute;m';
+$TEXT['WELCOME_BACK'] = '&curren;v';
+$TEXT['WIDTH'] = 'Sz&eacute;less&eacute;g';
+$TEXT['WINDOW'] = 'Ablak';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Mindenki &aacute;ltal &iacute;rhat&oacute; file jogok';
+$TEXT['WRITE'] = 'g';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Szerkeszt&ccedil;';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG St&iacute;lus';
+$TEXT['YES'] = 'Igen';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Kieg&eacute;sz&iacute;t&agrave;k&ouml;vetelm&eacute;nyek nem megfelel-?-?k';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Csoport m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Fejl&eacute;c hozz&aacute;ad&aacute;sa';
+$HEADING['ADD_PAGE'] = 'Lap hozz&aacute;ad&aacute;sa';
+$HEADING['ADD_USER'] = 'Felhaszn&aacute;l&oacute; hozz&aacute;ad&aacute;sa';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Adminisztr&aacute;ci&oacute;s eszk&ouml;z&ouml;k';
+$HEADING['BROWSE_MEDIA'] = 'M&eacute;dia b&ouml;ng&eacute;sz&eacute;se';
+$HEADING['CREATE_FOLDER'] = '&ordf; k&ouml;nyvt&aacute;r';
+$HEADING['DEFAULT_SETTINGS'] = 'Alap&eacute;rtelmezett Be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['DELETED_PAGES'] = 'T&ouml;r&ouml;lt Lapok';
+$HEADING['FILESYSTEM_SETTINGS'] = 'F&aacute;jl Rendszer';
+$HEADING['GENERAL_SETTINGS'] = '&not;tal&aacute;nos be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['INSTALL_LANGUAGE'] = 'Nyelv telep&iacute;t&eacute;s';
+$HEADING['INSTALL_MODULE'] = 'Modul telep&iacute;t&eacute;s';
+$HEADING['INSTALL_TEMPLATE'] = 'Sablon telep&iacute;t&eacute;s';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Modul f&aacute;jlok v&eacute;grehajt&aacute;sa manu&aacute;lisan';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Nyelv Inf&oacute;';
+$HEADING['MANAGE_SECTIONS'] = 'Szakaszok kezel&eacute;se';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Speci&aacute;lis be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Csoport m&oacute;dos&iacute;t&aacute;sa/t&ouml;rl&eacute;se';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Lap m&oacute;dos&iacute;t&aacute;sa/T&ouml;rl&eacute;se';
+$HEADING['MODIFY_DELETE_USER'] = 'Felhaszn&aacute;l&oacute; m&oacute;dos&iacute;t&aacute;sa/t&ouml;rl&eacute;se';
+$HEADING['MODIFY_GROUP'] = 'Csoport m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Bevezet&agrave;lap m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['MODIFY_PAGE'] = 'Lap m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Lap be&aacute;ll&iacute;t&aacute;sainak m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['MODIFY_USER'] = 'Felhaszn&aacute;l&oacute; m&oacute;dos&iacute;t&aacute;sa';
+$HEADING['MODULE_DETAILS'] = 'Modul inf&oacute;';
+$HEADING['MY_EMAIL'] = 'E-mail';
+$HEADING['MY_PASSWORD'] = 'Jelsz&oacute;';
+$HEADING['MY_SETTINGS'] = 'Be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['SEARCH_SETTINGS'] = 'Keres&eacute;si be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['SERVER_SETTINGS'] = 'Szerver be&aacute;ll&iacute;t&aacute;sok';
+$HEADING['TEMPLATE_DETAILS'] = 'Sablon inf&oacute;';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Nyelv elt&aacute;vol&iacute;t&aacute;s';
+$HEADING['UNINSTALL_MODULE'] = 'Modul elt&aacute;vol&iacute;t&aacute;s';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Sablon elt&aacute;vol&iacute;t&aacute;s';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'F&aacute;jl(ok) felt&ouml;lt&eacute;se';
+$HEADING['WBMAILER_SETTINGS'] = 'Levelez&agrave;Be&aacute;ll&iacute;t&aacute;sok';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Itt nincs elegend&agrave;jogosults&aacute;god!';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Sajn&aacute;ljuk, de a jelsz&oacute;t nem lehet egy &oacute;r&aacute;n bel&uuml;l t&ouml;bbsz&ouml;r &uacute;jrak&eacute;rni';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Az E-mail k&uuml;ld&eacute;s probl&eacute;m&aacute;ba &uuml;tk&ouml;z&ouml;tt, k&eacute;rem vegye fel a kapcsolatot az adminisztr&aacute;torral';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Az &reg; &aacute;ltal megadott E-mail c&iacute;m nem talalhat&oacute; adatb&aacute;zisunkban';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'K&eacute;rem &iacute;rja be az E-mail c&iacute;m&eacute;t';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sajnos nincs megjelen&iacute;thet&agrave;tartalom';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Sajn&aacute;ljuk, de a megjelen&iacute;t&eacute;shez nincs jogosults&aacute;ga!';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'M&aacute;r telep&iacute;tve';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'A c&eacute;l k&ouml;nyvt&aacute;r nem &iacute;rhat&oacute;';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Nem lehet elt&aacute;vol&iacute;tani';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Nem lehet elt&aacute;volt&iacute;tani! A file haszn&aacute;latban van.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '&lt;br /&gt;&lt;br /&gt;{{type}} &lt;b&gt;{{type_name}}&lt;/b&gt; nem lehet elt&aacute;vol&iacute;tani, mert m&eacute;g haszn&aacute;latban van a k&ouml;v&agrave;oldalon: {{pages}}.&lt;br /&gt;&lt;br /&gt;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'ez az oldal;ezek az oldalak';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Nem lehet elt&aacute;vol&iacute;tani ezt a sablont: &lt;b&gt;{{name}}&lt;/b&gt;, mert ez az alap&eacute;rtelmezett!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Kicsomagol&aacute;s nem lehets&eacute;ges';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'File felt&ouml;lt&eacute;s nem lehets&eacute;ges';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'F&aacute;jl megnyit&aacute;s hiba.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'A felt&ouml;lt&ouml;tt file csak ilyen form&aacute;tum&uacute; lehet:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'A felt&ouml;lt&ouml;tt file-ok csak a k&ouml;vetkez&agrave;form&aacute;tumuak lehetnek:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'K&eacute;rem t&eacute;rjen vissza &eacute;s t&ouml;lts&ouml;n ki minden mez-?-?';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Telep&iacute;t&eacute;s sikeres';
+$MESSAGE['GENERIC_INVALID'] = 'A felt&ouml;lt&ouml;tt file nem megfelel&ccedil;';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = '&sup2;v&eacute;nytelen WebsiteBaker telep&iacute;t&agrave;f&aacute;jl. K&eacute;rlek ellen-?-?izd a *.zip form&aacute;tumot.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = '&sup2;v&eacute;nytelen WebsiteBaker nyelvi f&aacute;jl. K&eacute;rlek ellen-?-?izd a sz&ouml;veges f&aacute;jlt.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nincs telp&iacute;tve';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'K&eacute;rem v&aacute;rjon, ez eltarthat egy ideig.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'K&eacute;rem t&eacute;rjen vissza k&eacute;s-?-?b!';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Elt&aacute;vol&iacute;t&aacute;s sikeres';
+$MESSAGE['GENERIC_UPGRADED'] = 'Upgraded successfully';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'A Weboldal Karbantart&aacute;s Alatt';
+$MESSAGE['GROUPS_ADDED'] = 'Csoport sikeresen hozz&aacute;adva';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Biztos, hogy t&ouml;r&ouml;lni akarja a kijel&ouml;lt csoportot? (Minden felhaszn&aacute;l&oacute;ja t&ouml;rl-?-?ik)';
+$MESSAGE['GROUPS_DELETED'] = 'Csoport t&ouml;r&ouml;lve';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = '&sup2;es a csoportn&eacute;v';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Csoport n&eacute;v m&aacute;r l&eacute;tezik';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Nincs csoport';
+$MESSAGE['GROUPS_SAVED'] = 'Csoport elmentve';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Please enter a password';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'T&uacute;l hossz&uacute; jelsz&oacute;';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'T&uacute;l r&ouml;vid jelsz&oacute;';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Nem adott meg file kiterjeszt&eacute;st';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Nem adott meg &uacute;j nevet';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Nem lehet t&ouml;r&ouml;lni a kiv&aacute;lasztott k&ouml;nyvt&aacute;rat';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Nem lehet t&ouml;r&ouml;lni a kiv&aacute;lasztott file-t';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Nem siker&uuml;lt &aacute;tnevezni';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Biztos hogy t&ouml;rli a k&ouml;vetkez&agrave;file-t vagy k&ouml;nyvt&aacute;rat?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'K&ouml;nyvt&aacute;r t&ouml;r&ouml;lve';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'File t&ouml;r&ouml;lve';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Nem lehet ../ a c&eacute;l mez-?-?en';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Nem tartalmazhat ../ -t a k&ouml;nyvt&aacute;r n&eacute;v';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Ilyen nev-?-¦ k&ouml;nyvt&aacute;r m&aacute;r l&eacute;tezik';
+$MESSAGE['MEDIA_DIR_MADE'] = 'A k&ouml;nyvt&aacute;r sikeresen l&eacute;trehozva';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'nem siker&uuml;lt l&eacute;trehozni a k&ouml;nyvt&aacute;rat';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Ilyen nev-?-¦ file m&aacute;r l&eacute;tezik';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'File nem tal&aacute;lhat&oacute;';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Nem lehet ../ a n&eacute;vben';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nem lehet index.php a n&eacute;v';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nem tal&aacute;lhat&oacute; semmilyen m&eacute;dia file az aktu&aacute;lis k&ouml;nyvt&aacute;rban';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = '&acute;nevez&eacute;s sikeres';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' file sikeresen felt&ouml;ltve';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Nem lehet ../ in k&ouml;nyvt&aacute;r n&eacute;vben';
+$MESSAGE['MEDIA_UPLOADED'] = ' file sikeresen felt&ouml;ltve';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Sajn&aacute;ljuk, de ez az -?-¦rlap t&uacute;l sokszor lett kit&ouml;ltve egy &oacute;ran bel&uuml;l! K&eacute;rem pr&oacute;b&aacute;lja meg egy &oacute;ra m&uacute;lva';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'A megadott ellen&ouml;rz&agrave;k&oacute;d (vagy m&aacute;s n&eacute;ven Captcha) hib&aacute;s. Ha probl&eacute;m&aacute;d van elolvasni a Captcha k&oacute;dot, k&uuml;mailt ide: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'A k&ouml;vetkez&agrave;mez-?-?et k&ouml;telez&agrave;kit&ouml;ltenie';
+$MESSAGE['PAGES_ADDED'] = 'Lap sikeresen hozz&aacute;adva';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Lap c&iacute;msor sikeresen hozz&aacute;adva';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'K&eacute;rem adjon meg men&uuml; nevet';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'K&eacute;rem adjon meg Lap c&iacute;met';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Nem lehet l&eacute;trehozni az access filet a /pages k&ouml;nyvt&aacute;rban (nem megfelel&agrave;jogosults&aacute;gok)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Nem lehet t&ouml;r&ouml;lni az access filet a /pages k&ouml;nyvt&aacute;rban (nem megfelel&agrave;jogosults&aacute;gok)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Hiba a Lap &aacute;trendez&eacute;s k&ouml;zben';
+$MESSAGE['PAGES_DELETED'] = 'Lap t&ouml;r&ouml;lve';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Biztos, hogy t&ouml;r&ouml;lni akarja az adott lapot? (&eacute;s az &ouml;sszes al lapj&aacute;t)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Nincs joga m&oacute;dos&iacute;tani ezt a lapot';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Kattintson ide az Bevezet&agrave;Lap m&oacute;dos&iacute;t&aacute;s&aacute;hoz';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Nem lehet l&eacute;trehozni /pages/intro.php file-t (nincs megfelel&agrave;jogosults&aacute;g)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Bevezet&agrave;lap sikeresen elmentve';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Utolj&aacute;ra m&oacute;dos&iacute;totta:';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Lap nem tal&aacute;lhat&oacute;';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Hiba a lap ment&eacute;se k&ouml;zben';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Ilyen lap m&aacute;r l&eacute;tezik';
+$MESSAGE['PAGES_REORDERED'] = 'Lap sikeresen &aacute;trendezve';
+$MESSAGE['PAGES_RESTORED'] = 'lap vissza&aacute;ll&iacute;tva';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Visszat&eacute;r&eacute;s a lapokhoz';
+$MESSAGE['PAGES_SAVED'] = 'Lap sikeresen elmentve';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Lap be&aacute;ll&iacute;t&aacute;sok elmentve';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Szakasz tulajdons&aacute;gok elmentve';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'A jelenlegi jelsz&oacute; hib&aacute;s';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Sikeres ment&eacute;s';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-mail friss&iacute;tve';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'A jelsz&oacute; sikeresen megv&aacute;ltozott';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Figyelmeztet&eacute;s: A nem mentett v&aacute;ltoz&aacute;sok elvesznek';
+$MESSAGE['SETTINGS_SAVED'] = 'Be&aacute;ll&iacute;t&aacute;sok sikeresen elmentve';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'A konfigur&aacute;ci&oacute;s file nem nyithat&oacute; meg';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Nem lehets&eacute;ges a konfigur&aacute;ci&oacute;s file &iacute;r&aacute;sa';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Figyelmeztet&eacute;s: Ez csak tesztk&ouml;rnyezetben javasolt';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Bejelentkez&eacute;si r&eacute;szletek...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'E-mail c&iacute;met meg kell adnia';
+$MESSAGE['START_CURRENT_USER'] = 'Bejelentkezve mint:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Figyelmeztet&eacute;s! A telep&iacute;t&eacute;si k&ouml;nyvt&aacute;r m&eacute;g nem lett t&ouml;r&ouml;lve!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = '&curren;v a WebsiteBaker Admin fel&uuml;let&eacute;n';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Figyelem: A sablon megv&aacute;ltoztat&aacute;s&aacute;t a be&aacute;ll&iacute;t&aacute;sokban teheti meg';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Felhaszn&aacute;l&oacute; sikeresen hozz&aacute;adva';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Figyelem: A jelsz&oacute;t itt csak annak megv&aacute;ltoztat&aacute;sakor kell megadni';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Biztos, hogy t&ouml;r&ouml;lni a kiv&aacute;lasztott felhaszn&aacute;l&oacute;t?';
+$MESSAGE['USERS_DELETED'] = 'Felhaszn&aacute;l&oacute; t&ouml;r&ouml;lve';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Sajnos a megadott E-mail c&iacute;met m&aacute;r haszn&aacute;latban van';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Az E-mail c&iacute;m nem val&oacute;s';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Csoport nincs kiv&aacute;lasztva';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'A be&iacute;rt jelsz&oacute; nem eggyezik';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'A be&iacute;rt jelsz&oacute; t&uacute;l r&ouml;vid';
+$MESSAGE['USERS_SAVED'] = 'Felhaszn&aacute;l&oacute; sikeresen mentve';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'WebsiteBaker adminisztr&aacute;ci&oacute;s eszk&ouml;z&ouml;k...';
+$OVERVIEW['GROUPS'] = 'Csoportok &eacute;s azok rendszer jogainak kezel&eacute;se...';
+$OVERVIEW['HELP'] = 'K&eacute;rd&eacute;sed van? itt tal&aacute;lsz v&aacute;laszt...  (Angol)';
+$OVERVIEW['LANGUAGES'] = 'WebsiteBaker nyelvi be&aacute;ll&iacute;t&aacute;sok...';
+$OVERVIEW['MEDIA'] = 'A "media" k&ouml;nyvt&aacute;rban t&aacute;rolt fileok kezel&eacute;se...';
+$OVERVIEW['MODULES'] = 'WebsiteBaker modulok kezel&eacute;se...';
+$OVERVIEW['PAGES'] = 'A Port&aacute;l Weblapjainak kezel&eacute;se...';
+$OVERVIEW['PREFERENCES'] = 'Be&aacute;ll&iacute;t&aacute;sok megv&aacute;ltoztat&aacute;sa mint: email, jelsz&oacute;, stb... ';
+$OVERVIEW['SETTINGS'] = 'A rendszer glob&aacute;lis be&aacute;ll&iacute;t&aacute;sa...';
+$OVERVIEW['START'] = 'Admin &aacute;ttekint&eacute;s';
+$OVERVIEW['TEMPLATES'] = 'A Honlap megjelen&eacute;s&eacute;nek v&aacute;ltoztat&aacute;sa Sablonokkal...';
+$OVERVIEW['USERS'] = 'Felhaszn&aacute;l&oacute;k bejelentkez&eacute;si enged&eacute;lyei...';
+$OVERVIEW['VIEW'] = 'A k&eacute;sz Port&aacute;l megtekint&eacute;se &uacute;j ablakban...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/HU.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/IT.php
===================================================================
--- tags/2.8.3/wb/languages/IT.php	(nonexistent)
+++ tags/2.8.3/wb/languages/IT.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'IT';
+$language_name = 'Italiano';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Roberto Rossi';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Accesso';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Add-ons';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Recupera dati di login';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Gruppi';
+$MENU['HELP'] = 'Aiuto';
+$MENU['LANGUAGES'] = 'Lingua';
+$MENU['LOGIN'] = 'Login';
+$MENU['LOGOUT'] = 'Log-out';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Moduli';
+$MENU['PAGES'] = 'Pagine';
+$MENU['PREFERENCES'] = 'Preferenze';
+$MENU['SETTINGS'] = 'Impostazioni';
+$MENU['START'] = 'Avvio';
+$MENU['TEMPLATES'] = 'Templates';
+$MENU['USERS'] = 'Utenti';
+$MENU['VIEW'] = 'Visualizza';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Iscrizione Account';
+$TEXT['ACTIONS'] = 'Azioni';
+$TEXT['ACTIVE'] = 'Attivo';
+$TEXT['ADD'] = 'Aggiungi';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Aggiungi Sezione';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Amministrazione';
+$TEXT['ADMINISTRATION_TOOL'] = 'Tool di Amministrazione';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Amministratori';
+$TEXT['ADVANCED'] = 'Avanzato';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Permetti selezioni multiple';
+$TEXT['ALL_WORDS'] = 'Tutte le parole';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonimo';
+$TEXT['ANY_WORDS'] = 'Qualsiasi parola';
+$TEXT['APP_NAME'] = 'Nome Applicazione';
+$TEXT['ARE_YOU_SURE'] = 'Sei sicuro?';
+$TEXT['AUTHOR'] = 'Autore';
+$TEXT['BACK'] = 'Indietro';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Backup del Database';
+$TEXT['BACKUP_MEDIA'] = 'Backup Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'Base';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Annulla';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'verificaCaptcha ';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Cambia';
+$TEXT['CHANGES'] = 'Modifiche';
+$TEXT['CHANGE_SETTINGS'] = 'Cambia Impostazioni';
+$TEXT['CHARSET'] = 'Caratteri';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox Gruppo';
+$TEXT['CLOSE'] = 'Chiudi';
+$TEXT['CODE'] = 'Codice';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Restringi';
+$TEXT['COMMENT'] = 'Commento';
+$TEXT['COMMENTING'] = 'Commentare';
+$TEXT['COMMENTS'] = 'Commenti';
+$TEXT['CREATE_FOLDER'] = 'Crea Cartella';
+$TEXT['CURRENT'] = 'Corrente';
+$TEXT['CURRENT_FOLDER'] = 'Cartella corrente';
+$TEXT['CURRENT_PAGE'] = 'Pagina corrente';
+$TEXT['CURRENT_PASSWORD'] = 'Password corrente';
+$TEXT['CUSTOM'] = 'Custom';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Data';
+$TEXT['DATE_FORMAT'] = 'Formato data';
+$TEXT['DEFAULT'] = 'Default';
+$TEXT['DEFAULT_CHARSET'] = 'Carattere di Default';
+$TEXT['DEFAULT_TEXT'] = 'Testo di default';
+$TEXT['DELETE'] = 'Elimina';
+$TEXT['DELETED'] = 'Eliminato';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Descrizione';
+$TEXT['DESIGNED_FOR'] = 'Progettato per';
+$TEXT['DIRECTORIES'] = 'Directories';
+$TEXT['DIRECTORY_MODE'] = 'Modalit&agrave; Directory';
+$TEXT['DISABLED'] = 'Disabilitato';
+$TEXT['DISPLAY_NAME'] = 'Mostra il nome';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Indirizzo Email';
+$TEXT['EMPTY_TRASH'] = 'Svuota Cestino';
+$TEXT['ENABLED'] = 'Abilitato';
+$TEXT['END'] = 'Fine';
+$TEXT['ERROR'] = 'Errore';
+$TEXT['EXACT_MATCH'] = 'Confronto Esatto';
+$TEXT['EXECUTE'] = 'Esecuzione';
+$TEXT['EXPAND'] = 'Espandi';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Campo';
+$TEXT['FILE'] = 'File';
+$TEXT['FILES'] = 'Files';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Permessi del Filesystem';
+$TEXT['FILE_MODE'] = 'Modalit&agrave; File';
+$TEXT['FINISH_PUBLISHING'] = 'Fine publicazione';
+$TEXT['FOLDER'] = 'Cartella';
+$TEXT['FOLDERS'] = 'Folders';
+$TEXT['FOOTER'] = 'Pi&egrave; di pagina';
+$TEXT['FORGOTTEN_DETAILS'] = 'Dimenticati i dati?';
+$TEXT['FORGOT_DETAILS'] = 'Dimenticato i dati?';
+$TEXT['FROM'] = 'Da';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Nome completo';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Gruppo';
+$TEXT['HEADER'] = 'Intestazione';
+$TEXT['HEADING'] = 'Intestazione';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Altezza';
+$TEXT['HIDDEN'] = 'Nascosto';
+$TEXT['HIDE'] = 'Nascondi';
+$TEXT['HIDE_ADVANCED'] = 'Nascondi opzioni avanzate';
+$TEXT['HOME'] = 'Home';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage Redirezione';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = 'Icona';
+$TEXT['IMAGE'] = 'Immagine';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Installa';
+$TEXT['INSTALLATION'] = 'Installazione';
+$TEXT['INSTALLATION_PATH'] = 'Path di installazione';
+$TEXT['INSTALLATION_URL'] = 'URL di installazione';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Introduzione';
+$TEXT['INTRO_PAGE'] = 'Pagina d\'introduzione';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Parole chiave';
+$TEXT['LANGUAGE'] = 'Lingua';
+$TEXT['LAST_UPDATED_BY'] = 'Ultima modifica di';
+$TEXT['LENGTH'] = 'Lunghezza';
+$TEXT['LEVEL'] = 'Livello';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix based';
+$TEXT['LIST_OPTIONS'] = 'Opzioni di elenco';
+$TEXT['LOGGED_IN'] = 'Logged-In';
+$TEXT['LOGIN'] = 'Login';
+$TEXT['LONG'] = 'Estesa';
+$TEXT['LONG_TEXT'] = 'Testo lungo';
+$TEXT['LOOP'] = 'Loop';
+$TEXT['MAIN'] = 'Principale';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Gestisci';
+$TEXT['MANAGE_GROUPS'] = 'Gestisci i Gruppi';
+$TEXT['MANAGE_USERS'] = 'Gestisci gli Utenti';
+$TEXT['MATCH'] = 'Confronto';
+$TEXT['MATCHING'] = 'Confronto';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Iscizioni per ora';
+$TEXT['MEDIA_DIRECTORY'] = 'Media Directory';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Titolo Menu';
+$TEXT['MESSAGE'] = 'Messaggio';
+$TEXT['MODIFY'] = 'Modifica';
+$TEXT['MODIFY_CONTENT'] = 'Modifica Contenuto';
+$TEXT['MODIFY_SETTINGS'] = 'Modifica Impostazioni';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Permessi del Modulo';
+$TEXT['MORE'] = 'Continua';
+$TEXT['MOVE_DOWN'] = 'Muovi gi&Atilde;&sup1;';
+$TEXT['MOVE_UP'] = 'Muovi su';
+$TEXT['MULTIPLE_MENUS'] = 'Menu multipli';
+$TEXT['MULTISELECT'] = 'Multi-selezione';
+$TEXT['NAME'] = 'Nome';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Bisogno di login?';
+$TEXT['NEW_PASSWORD'] = 'Nuova Password';
+$TEXT['NEW_WINDOW'] = 'Nuova finestra';
+$TEXT['NEXT'] = 'Successivo';
+$TEXT['NEXT_PAGE'] = 'Pagina successiva';
+$TEXT['NO'] = 'No';
+$TEXT['NONE'] = 'Nessuna';
+$TEXT['NONE_FOUND'] = 'Nessuno trovato';
+$TEXT['NOT_FOUND'] = 'Non trovato';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Nessun risultato';
+$TEXT['OF'] = 'Di';
+$TEXT['ON'] = 'Su';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Opzioni';
+$TEXT['OTHERS'] = 'Altri';
+$TEXT['OUT_OF'] = 'Di';
+$TEXT['OVERWRITE_EXISTING'] = 'Sovrascrivi esistenti';
+$TEXT['PAGE'] = 'Pagina';
+$TEXT['PAGES_DIRECTORY'] = 'Pagine Directory';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Estensione di Pagina';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Pagina Lingue';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limite del livello di pagina';
+$TEXT['PAGE_SPACER'] = 'Separatore di Pagina';
+$TEXT['PAGE_TITLE'] = 'Titolo Pagina';
+$TEXT['PAGE_TRASH'] = 'Cestino';
+$TEXT['PARENT'] = 'Parente';
+$TEXT['PASSWORD'] = 'Password';
+$TEXT['PATH'] = 'Path';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Prego seleziona';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Post Per Pagina';
+$TEXT['POST_FOOTER'] = 'Post Pi&egrave; di pagina';
+$TEXT['POST_HEADER'] = 'Post Intestazione';
+$TEXT['PREVIOUS'] = 'Precedente';
+$TEXT['PREVIOUS_PAGE'] = 'Pagina precedente';
+$TEXT['PRIVATE'] = 'Privato';
+$TEXT['PRIVATE_VIEWERS'] = 'Visione privata';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Pubblico';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button Gruppo';
+$TEXT['READ'] = 'Lettura';
+$TEXT['READ_MORE'] = 'Continua a leggere';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrato';
+$TEXT['REGISTERED_VIEWERS'] = 'Utenti registrati';
+$TEXT['RELOAD'] = 'Ricarica';
+$TEXT['REMEMBER_ME'] = 'Ricordami';
+$TEXT['RENAME'] = 'Rinomina';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Obbligatorio';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Resetta';
+$TEXT['RESIZE'] = 'Ridimensiona';
+$TEXT['RESIZE_IMAGE_TO'] = 'Ridimensiona immagine a';
+$TEXT['RESTORE'] = 'Restore';
+$TEXT['RESTORE_DATABASE'] = 'Restore del Database';
+$TEXT['RESTORE_MEDIA'] = 'Restore Media';
+$TEXT['RESULTS'] = 'Risultati';
+$TEXT['RESULTS_FOOTER'] = 'Risultati Pi&egrave; di pagina';
+$TEXT['RESULTS_FOR'] = 'Risultati per';
+$TEXT['RESULTS_HEADER'] = 'Risultati Intestazione';
+$TEXT['RESULTS_LOOP'] = 'Risultati Loop';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Riscrivi Nuova Password';
+$TEXT['RETYPE_PASSWORD'] = 'Riscrivi Password';
+$TEXT['SAME_WINDOW'] = 'Stessa finestra';
+$TEXT['SAVE'] = 'Salva';
+$TEXT['SEARCH'] = 'Ricerca';
+$TEXT['SEARCHING'] = 'Ricerca';
+$TEXT['SECTION'] = 'Sezione';
+$TEXT['SECTION_BLOCKS'] = 'Blocchi di Sezione';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Campo di selezione';
+$TEXT['SEND_DETAILS'] = 'Invia i dati';
+$TEXT['SEPARATE'] = 'Separa';
+$TEXT['SEPERATOR'] = 'Separatore';
+$TEXT['SERVER_EMAIL'] = 'Server Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server Operating System';
+$TEXT['SESSION_IDENTIFIER'] = 'Identificazione della sessione';
+$TEXT['SETTINGS'] = 'Settings';
+$TEXT['SHORT'] = 'Breve';
+$TEXT['SHORT_TEXT'] = 'Testo breve';
+$TEXT['SHOW'] = 'Mostra';
+$TEXT['SHOW_ADVANCED'] = 'Mostra opzioni avanzate';
+$TEXT['SIGNUP'] = 'Iscrizione';
+$TEXT['SIZE'] = 'Dimensione';
+$TEXT['SMART_LOGIN'] = 'Smart Login';
+$TEXT['START'] = 'Avvio';
+$TEXT['START_PUBLISHING'] = 'Inizio pubblicazione';
+$TEXT['SUBJECT'] = 'Soggetto';
+$TEXT['SUBMISSIONS'] = 'Iscrizioni';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Iscrizioni memorizzate nel Database';
+$TEXT['SUBMISSION_ID'] = 'Iscrizione ID';
+$TEXT['SUBMITTED'] = 'Iscritto';
+$TEXT['SUCCESS'] = 'Successo';
+$TEXT['SYSTEM_DEFAULT'] = 'Default di sistema';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Permessi di sistema';
+$TEXT['TABLE_PREFIX'] = 'Table Prefix';
+$TEXT['TARGET'] = 'Destinazione';
+$TEXT['TARGET_FOLDER'] = 'Cartella di destinazione';
+$TEXT['TEMPLATE'] = 'Template';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Permessi dei Template';
+$TEXT['TEXT'] = 'Testo';
+$TEXT['TEXTAREA'] = 'Area di testo';
+$TEXT['TEXTFIELD'] = 'Campo di testo';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Ora';
+$TEXT['TIMEZONE'] = 'Fuso orario';
+$TEXT['TIME_FORMAT'] = 'Formato ora';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Titolo';
+$TEXT['TO'] = 'A';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = 'Cestino Svuotato';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tipo';
+$TEXT['UNDER_CONSTRUCTION'] = 'In costruzione';
+$TEXT['UNINSTALL'] = 'Disinstalla';
+$TEXT['UNKNOWN'] = 'Sconosciuto';
+$TEXT['UNLIMITED'] = 'Illimitato';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Su';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Carica File(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'User';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifica';
+$TEXT['VERSION'] = 'Versione';
+$TEXT['VIEW'] = 'Vedi';
+$TEXT['VIEW_DELETED_PAGES'] = 'Vedi Pagine Eliminate';
+$TEXT['VIEW_DETAILS'] = 'Vedi dettagli';
+$TEXT['VISIBILITY'] = 'Visibilit&agrave;';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Website Descrizione';
+$TEXT['WEBSITE_FOOTER'] = 'Website Pi&egrave; di pagina';
+$TEXT['WEBSITE_HEADER'] = 'Website Intestazione';
+$TEXT['WEBSITE_KEYWORDS'] = 'Website Parole chiave';
+$TEXT['WEBSITE_TITLE'] = 'Website Titolo';
+$TEXT['WELCOME_BACK'] = 'Bentornato';
+$TEXT['WIDTH'] = 'Larghezza';
+$TEXT['WINDOW'] = 'Finestra';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Permesso di scrittura file a chiunque';
+$TEXT['WRITE'] = 'Scrittura';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['YES'] = 'S&igrave;';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Aggiungi Gruppo';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Aggiungi una Intestazione';
+$HEADING['ADD_PAGE'] = 'Aggiungi una pagina';
+$HEADING['ADD_USER'] = 'Aggiungi Utente';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Tool di Amministrazione';
+$HEADING['BROWSE_MEDIA'] = 'Sfoglia i Media';
+$HEADING['CREATE_FOLDER'] = 'Crea cartella';
+$HEADING['DEFAULT_SETTINGS'] = 'Impostazioni Default';
+$HEADING['DELETED_PAGES'] = 'Pagine cancellate';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Impostazioni del Filesystem';
+$HEADING['GENERAL_SETTINGS'] = 'Impostazioni Generali';
+$HEADING['INSTALL_LANGUAGE'] = 'Installa lingua';
+$HEADING['INSTALL_MODULE'] = 'Installa il Modulo';
+$HEADING['INSTALL_TEMPLATE'] = 'Installa un Template';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Dettagli lingua';
+$HEADING['MANAGE_SECTIONS'] = 'Gestisci le sezioni';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modifica impostazioni avanzate';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modifica/Elimina Gruppo';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modifica/Elimina una pagina';
+$HEADING['MODIFY_DELETE_USER'] = 'Modifica/Elimina Utente';
+$HEADING['MODIFY_GROUP'] = 'Modifica Gruppo';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modifica la pagina d\'introduzione';
+$HEADING['MODIFY_PAGE'] = 'Modifica la pagina';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modifica Page Settings';
+$HEADING['MODIFY_USER'] = 'Modifica Utente';
+$HEADING['MODULE_DETAILS'] = 'Dettagli del Modulo';
+$HEADING['MY_EMAIL'] = 'Mia Email';
+$HEADING['MY_PASSWORD'] = 'Mia Password';
+$HEADING['MY_SETTINGS'] = 'Mie impostazioni';
+$HEADING['SEARCH_SETTINGS'] = 'Impostazioni di Ricerca';
+$HEADING['SERVER_SETTINGS'] = 'Impostazioni del Server ';
+$HEADING['TEMPLATE_DETAILS'] = 'Dettagli Template';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Disinstalla lingua';
+$HEADING['UNINSTALL_MODULE'] = 'Disinstalla il Modulo';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Disinstalla il Template';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Carica i File';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Privilegi insufficienti per essere qui';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'La Password non pu&Atilde;&sup2; essere modificata pi&Atilde;&sup1; di una volta all\'ora';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Impossibile inviare l\'email. Contattare l\'ammnistratore';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'L\'Email inserita non &egrave; stata trovata nel database';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Prego inserire email';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Spaicente, non ha i permessi per vedere la pagina';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Gi&agrave; installato';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Impossibile scrivere sulla directory';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Impossibile disinstallare';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Impossibile disisntallare: file in uso';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'impossibile decomprimere il file';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Impossibile caricare i file';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Errore nella apertura del file.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Nota che il file caricato deve essere dei seguenti formati:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Nota che i file caricati devono essere dei seguenti formati:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Prego torna indietro e compila tutti i campi';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installato con successo';
+$MESSAGE['GENERIC_INVALID'] = 'Il file caricato &egrave; non valido';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Non installato';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Attendi pazientemente...';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Torna presto...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Disinstallato con successo';
+$MESSAGE['GENERIC_UPGRADED'] = 'Aggiornato con successo';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Under Construction';
+$MESSAGE['GROUPS_ADDED'] = 'Gruppo aggiunto';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Sei sicuro di voler eliminare il gruppo selezionato e tutti i suoi utenti?';
+$MESSAGE['GROUPS_DELETED'] = 'Gruppo eliminato';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Il nome del Gruppo &egrave; vuoto';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Nome di Gruppo gia Esistente';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Nessun gruppo trovato';
+$MESSAGE['GROUPS_SAVED'] = 'Gruppo salvato';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Prego inserire una password';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Password troppo lunga';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Password troppo corta';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Non hai inserito una estensione del file';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Non hai inserito un nuovo nome';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'impossibile eliminare la cartella';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Impossibile eliminare il file';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Impossibile rinominare';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Sei sicuro di voler eliminare il file o la cartella corrente?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Cartella eliminata';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'File eliminato';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'La Cartella non esiste';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Impossibile includere ../ nel nome della cartella';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Esiste gi&agrave; una cartella con lo stesso nome';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Cartella creata';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Impossibile creare la cartella';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Esiste gi&agrave; un file con lo stesso nome';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'File non trovato';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Impossibile includere ../ nel nome';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Impossibile usare index.php come nome';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nessun Media trovato nella cartella corrente';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Rinominato con successo';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' file caricato con successo';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Impossibile avere ../ nella cartella di destinazione';
+$MESSAGE['MEDIA_UPLOADED'] = ' file sono stati caricati con successo';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Spiacente: hai compilato questa form troppe volte nell\'ultima ora.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Il numero di controllo (chiama Captcha) che hai inserito non &egrave; valido. Se hai problemi con la lettura del Captcha, invia un email email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Devi inserire tutti i dati nei seguenti campi';
+$MESSAGE['PAGES_ADDED'] = 'Pagina aggiunta';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Pagina intestazione aggiunta';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Prego inserisci un titolo';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Prego inserisci un titolo';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Errore nel creare un file di permessi (privilegi insufficienti)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Errore nel cancellare un file di permessi (privilegi insufficienti)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Errore nel riordinare la pagina';
+$MESSAGE['PAGES_DELETED'] = 'Pagina eliminata';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Sei sicuro di voler eliminare la pagina e tutte le sotto-pagine?';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Non hai i permessi per modificare la pagina';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Clicca qui per modificare la pagina d\'introduzione';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Impossibile scrivere sul file /pages/intro.php (privilegi insufficienti)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Pagina di introduzione salvata';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Ultima modifica di';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Pagina non trovata';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Errore nel salvare la pagina';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Esiste gi&agrave; una pagina con lo stesso nome';
+$MESSAGE['PAGES_REORDERED'] = 'Pagina riordinata';
+$MESSAGE['PAGES_RESTORED'] = 'Pagina recuperata';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Ritorna alle pagine';
+$MESSAGE['PAGES_SAVED'] = 'Pagina salvata';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Impostazioni della pagina salvate';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Propriet&agrave; di sezione salvate';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'La password corrente inserita &egrave; errata';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Dettagli salvati';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email aggiornata';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Password cambiata';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Attenzione: premendo questo pulsante si resettano le impostazioni modificate e non salvate';
+$MESSAGE['SETTINGS_SAVED'] = 'Impostazioni salvate con successo';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Impossibile aprire il file di configurazione';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Impossibile scrivere il file di configurazione';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Raccomandato solo in fase di test';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Deve inserire un indirizzo di email';
+$MESSAGE['START_CURRENT_USER'] = 'Sei registrato come:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Attenzione, la directory di installazione esiste gi&agrave;!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Benvenuto alla pagina di Amministrazione di WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Per cambiare il Template andare alla sezione Impostazioni';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Utente aggiunto';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Attenzione: devi inserire solo valori validi se vuoi cambiare la password utente';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Sei sicuro di voler eliminare gli utenti selezionati?';
+$MESSAGE['USERS_DELETED'] = 'Utente eliminato';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Email gi&agrave; in uso';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Email non valida';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Nessun gruppo selezionato';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Le password non coincidono';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Password troppo corta';
+$MESSAGE['USERS_SAVED'] = 'Utente salvato';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Gestisci gruppi utenti e permessi...';
+$OVERVIEW['HELP'] = 'Trova risposte alle tue domande...';
+$OVERVIEW['LANGUAGES'] = 'Gestisci le lingue del sito...';
+$OVERVIEW['MEDIA'] = 'Gestisci i file nella cartella Media...';
+$OVERVIEW['MODULES'] = 'Gestisci i moduli di WebsiteBaker...';
+$OVERVIEW['PAGES'] = 'Gestisci le pagine del sito...';
+$OVERVIEW['PREFERENCES'] = 'Cambia preferenze come email, password, etc... ';
+$OVERVIEW['SETTINGS'] = 'Cambia le impostazioni di WebsiteBaker...';
+$OVERVIEW['START'] = 'Funzioni di amministrazione';
+$OVERVIEW['TEMPLATES'] = 'Cambia la grafica del sito con i templates...';
+$OVERVIEW['USERS'] = 'Gestisci gli utenti che possono collegarsi a WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Visualizza il sito in una nuova finestra...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/IT.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/NO.php
===================================================================
--- tags/2.8.3/wb/languages/NO.php	(nonexistent)
+++ tags/2.8.3/wb/languages/NO.php	(revision 1610)
@@ -0,0 +1,677 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'NO';
+$language_name = 'Norsk';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Odd Egil Hansen (oeh)';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Tilgang';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Tillegg';
+$MENU['ADMINTOOLS'] = 'Admin-verkt&oslash;y';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Hent innloggings informasjon';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupper';
+$MENU['HELP'] = 'Hjelp';
+$MENU['LANGUAGES'] = 'Spr&aring;k';
+$MENU['LOGIN'] = 'Logg inn';
+$MENU['LOGOUT'] = 'Logg ut';
+$MENU['MEDIA'] = 'Media';
+$MENU['MODULES'] = 'Moduler';
+$MENU['PAGES'] = 'Sider';
+$MENU['PREFERENCES'] = 'Bruker innstillinger';
+$MENU['SETTINGS'] = 'Innstillinger';
+$MENU['START'] = 'Start';
+$MENU['TEMPLATES'] = 'Maler';
+$MENU['USERS'] = 'Brukere';
+$MENU['VIEW'] = 'Forh&aring;ndsvis';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Konto Registrering';
+$TEXT['ACTIONS'] = 'Valg';
+$TEXT['ACTIVE'] = 'Aktivt';
+$TEXT['ADD'] = 'Tilf&oslash;y';
+$TEXT['ADDON'] = 'Tillegg';
+$TEXT['ADD_SECTION'] = 'Legg Til Seksjon';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administrasjon';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administrasjonsverkt&oslash;y';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratorer';
+$TEXT['ADVANCED'] = 'Avansert';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Tillatte filtyper ved opplasting';
+$TEXT['ALLOWED_VIEWERS'] = 'Tillatte lesere';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Tillat Flere Valg';
+$TEXT['ALL_WORDS'] = 'Alle Ord';
+$TEXT['ANCHOR'] = 'Anker';
+$TEXT['ANONYMOUS'] = 'Anonym';
+$TEXT['ANY_WORDS'] = 'Samme Hvilke Ord';
+$TEXT['APP_NAME'] = 'Applikasjonsnavn';
+$TEXT['ARE_YOU_SURE'] = 'Er du sikker?';
+$TEXT['AUTHOR'] = 'Skribent';
+$TEXT['BACK'] = 'Tilbake';
+$TEXT['BACKUP'] = 'Sikkerhetskopiere';
+$TEXT['BACKUP_ALL_TABLES'] = 'Sikkerhetskopiere alle tabeller i databasen';
+$TEXT['BACKUP_DATABASE'] = 'Sikkerhetskopiere database';
+$TEXT['BACKUP_MEDIA'] = 'Sikkerhetskopi Medie';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Sikkerhetskopiere bare WB- spesifikke tabeller';
+$TEXT['BASIC'] = 'Grunnleggende';
+$TEXT['BLOCK'] = 'Blokker';
+$TEXT['CALENDAR'] = 'Kalender';
+$TEXT['CANCEL'] = 'Avbryt';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Kan slette egen bruker';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha bekreftelse';
+$TEXT['CAP_EDIT_CSS'] = 'Rediger CSS koden';
+$TEXT['CHANGE'] = 'Forandre';
+$TEXT['CHANGES'] = 'Endringer';
+$TEXT['CHANGE_SETTINGS'] = 'Endre Innstillinger';
+$TEXT['CHARSET'] = 'Tegnsett';
+$TEXT['CHECKBOX_GROUP'] = 'Valgboks Gruppe';
+$TEXT['CLOSE'] = 'Lukk';
+$TEXT['CODE'] = 'Kode';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Skjul';
+$TEXT['COMMENT'] = 'Kommentar';
+$TEXT['COMMENTING'] = 'Kommenterer';
+$TEXT['COMMENTS'] = 'Kommentarer';
+$TEXT['CREATE_FOLDER'] = 'Opprett Katalog';
+$TEXT['CURRENT'] = 'Aktuell';
+$TEXT['CURRENT_FOLDER'] = 'Gjelende Katalog';
+$TEXT['CURRENT_PAGE'] = 'Aktuell Side';
+$TEXT['CURRENT_PASSWORD'] = 'Gjeldende Passord';
+$TEXT['CUSTOM'] = 'Egendefinert';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Dato';
+$TEXT['DATE_FORMAT'] = 'Dato format';
+$TEXT['DEFAULT'] = 'Standard';
+$TEXT['DEFAULT_CHARSET'] = 'Standard Charset';
+$TEXT['DEFAULT_TEXT'] = 'Standard Tekst';
+$TEXT['DELETE'] = 'Slett';
+$TEXT['DELETED'] = 'Slettet';
+$TEXT['DELETE_DATE'] = 'Slette dato';
+$TEXT['DELETE_ZIP'] = 'Slett .zip arkivet etter at den er pakket ut';
+$TEXT['DESCRIPTION'] = 'Beskrivelse';
+$TEXT['DESIGNED_FOR'] = 'Laget For';
+$TEXT['DIRECTORIES'] = 'Kataloger';
+$TEXT['DIRECTORY_MODE'] = 'Katalog Modus';
+$TEXT['DISABLED'] = 'Deaktivert';
+$TEXT['DISPLAY_NAME'] = 'Vis Navn';
+$TEXT['EMAIL'] = 'E-post';
+$TEXT['EMAIL_ADDRESS'] = 'E-post Adresse';
+$TEXT['EMPTY_TRASH'] = 'T&oslash;m S&oslash;ppel';
+$TEXT['ENABLED'] = 'Aktivert';
+$TEXT['END'] = 'Slutt';
+$TEXT['ERROR'] = 'Feil';
+$TEXT['EXACT_MATCH'] = 'Eksakt Treff';
+$TEXT['EXECUTE'] = 'Utf&oslash;re';
+$TEXT['EXPAND'] = 'Utvid';
+$TEXT['EXTENSION'] = 'Utvidelse';
+$TEXT['FIELD'] = 'Felt';
+$TEXT['FILE'] = 'Fil';
+$TEXT['FILES'] = 'Filer';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Filsystem Tillgang';
+$TEXT['FILE_MODE'] = 'Fil Modus';
+$TEXT['FINISH_PUBLISHING'] = 'Avslutt Publisering';
+$TEXT['FOLDER'] = 'Katalog';
+$TEXT['FOLDERS'] = 'Kataloger';
+$TEXT['FOOTER'] = 'Bunntekst ';
+$TEXT['FORGOTTEN_DETAILS'] = 'Glemt dine detaljer?';
+$TEXT['FORGOT_DETAILS'] = 'Glemt detaljer?';
+$TEXT['FROM'] = 'Fra';
+$TEXT['FRONTEND'] = 'Forside';
+$TEXT['FULL_NAME'] = 'Fult Navn';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Gruppe';
+$TEXT['HEADER'] = 'Topptekst';
+$TEXT['HEADING'] = 'Overskrift';
+$TEXT['HEADING_CSS_FILE'] = 'Faktisk modul fil: ';
+$TEXT['HEIGHT'] = 'H&oslash;yde';
+$TEXT['HIDDEN'] = 'Skjult';
+$TEXT['HIDE'] = 'Skjul';
+$TEXT['HIDE_ADVANCED'] = 'Skjul Avanserte Valg';
+$TEXT['HOME'] = 'Hjem';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Hjemmeside Omadressering';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Vert';
+$TEXT['ICON'] = 'Ikon';
+$TEXT['IMAGE'] = 'Bilde';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Innstaller';
+$TEXT['INSTALLATION'] = 'Installsjon';
+$TEXT['INSTALLATION_PATH'] = 'Innstallasjons Sti';
+$TEXT['INSTALLATION_URL'] = 'Installasjons URL';
+$TEXT['INSTALLED'] = 'installert';
+$TEXT['INTRO'] = 'Introduksjon';
+$TEXT['INTRO_PAGE'] = 'Intro Side';
+$TEXT['INVALID_SIGNS'] = 'm&aring; begynne med en bokstav eller har ugyldige tegn';
+$TEXT['KEYWORDS'] = 'N&oslash;kkelord';
+$TEXT['LANGUAGE'] = 'Spr&aring;k';
+$TEXT['LAST_UPDATED_BY'] = 'Sist Endret Av';
+$TEXT['LENGTH'] = 'Lengde';
+$TEXT['LEVEL'] = 'Niv&aring;';
+$TEXT['LINK'] = 'Lenke';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix bassert';
+$TEXT['LIST_OPTIONS'] = 'Vis Valg';
+$TEXT['LOGGED_IN'] = 'Innlogget';
+$TEXT['LOGIN'] = 'Logg inn';
+$TEXT['LONG'] = 'Langt';
+$TEXT['LONG_TEXT'] = 'Lang Tekst';
+$TEXT['LOOP'] = 'L&oslash;kke';
+$TEXT['MAIN'] = 'Hoved';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Administrer';
+$TEXT['MANAGE_GROUPS'] = 'Administrer Grupper';
+$TEXT['MANAGE_USERS'] = 'Administrer Brukere';
+$TEXT['MATCH'] = 'Treff';
+$TEXT['MATCHING'] = 'Finner Motstykke';
+$TEXT['MAX_EXCERPT'] = 'Maksimalt antall linjer for utdrag';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Maks Avgivelser Per Time';
+$TEXT['MEDIA_DIRECTORY'] = 'Media Katalog';
+$TEXT['MENU'] = 'Meny';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Meny Tittel';
+$TEXT['MESSAGE'] = 'Melding';
+$TEXT['MODIFY'] = 'Endre';
+$TEXT['MODIFY_CONTENT'] = 'Endre innhold';
+$TEXT['MODIFY_SETTINGS'] = 'Endre innstillinger';
+$TEXT['MODULE_ORDER'] = 'Modul-rekkef&oslash;lge for s&oslash;king';
+$TEXT['MODULE_PERMISSIONS'] = 'Modul Adgang';
+$TEXT['MORE'] = 'Mer';
+$TEXT['MOVE_DOWN'] = 'Flytt ned';
+$TEXT['MOVE_UP'] = 'Flytt opp';
+$TEXT['MULTIPLE_MENUS'] = 'Flere Menyer';
+$TEXT['MULTISELECT'] = 'Flere Valg';
+$TEXT['NAME'] = 'Navn';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'Bekreft med gjeldende passord';
+$TEXT['NEED_TO_LOGIN'] = 'Trenger du &aring; logge inn?';
+$TEXT['NEW_PASSWORD'] = 'Nytt Passord';
+$TEXT['NEW_WINDOW'] = 'Nytt Vindu';
+$TEXT['NEXT'] = 'Neste';
+$TEXT['NEXT_PAGE'] = 'Neste Side';
+$TEXT['NO'] = 'Nei';
+$TEXT['NONE'] = 'Ingen';
+$TEXT['NONE_FOUND'] = 'Ingen funnet';
+$TEXT['NOT_FOUND'] = 'Ikke Funnet';
+$TEXT['NOT_INSTALLED'] = 'ikke installert';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Ingen Resultater';
+$TEXT['OF'] = 'Av';
+$TEXT['ON'] = 'P&aring;';
+$TEXT['OPEN'] = '&Aring;pne';
+$TEXT['OPTION'] = 'Valg';
+$TEXT['OTHERS'] = 'Andre';
+$TEXT['OUT_OF'] = 'Av antall';
+$TEXT['OVERWRITE_EXISTING'] = 'Overskriv eksisterende';
+$TEXT['PAGE'] = 'Side';
+$TEXT['PAGES_DIRECTORY'] = 'Side Katalog';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Side Tillegg';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Side Spr&aring;k';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Side Niv&aring; Begrensning';
+$TEXT['PAGE_SPACER'] = 'Side Mellomrom';
+$TEXT['PAGE_TITLE'] = 'Side Tittel';
+$TEXT['PAGE_TRASH'] = 'Sides&oslash;ppel';
+$TEXT['PARENT'] = 'Hovedkategori';
+$TEXT['PASSWORD'] = 'Passord';
+$TEXT['PATH'] = 'Sti';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Feil rapporteringsniv&aring;';
+$TEXT['PLEASE_LOGIN'] = 'Venligst log p&aring;';
+$TEXT['PLEASE_SELECT'] = 'Vennligst velg';
+$TEXT['POST'] = 'Innlegg';
+$TEXT['POSTS_PER_PAGE'] = 'Innlegg Per Side';
+$TEXT['POST_FOOTER'] = 'Legg Til Bunntekst';
+$TEXT['POST_HEADER'] = 'Legg Til Topptekst';
+$TEXT['PREVIOUS'] = 'Forrige';
+$TEXT['PREVIOUS_PAGE'] = 'Forrige Side';
+$TEXT['PRIVATE'] = 'Privat';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Seere';
+$TEXT['PROFILES_EDIT'] = 'Endre profilen';
+$TEXT['PUBLIC'] = 'Offentlig';
+$TEXT['PUBL_END_DATE'] = 'Slutt dato';
+$TEXT['PUBL_START_DATE'] = 'Start dato';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radioknapp Gruppe';
+$TEXT['READ'] = 'Les';
+$TEXT['READ_MORE'] = 'Les Mer';
+$TEXT['REDIRECT_AFTER'] = 'Videresend etter';
+$TEXT['REGISTERED'] = 'Registrert';
+$TEXT['REGISTERED_VIEWERS'] = 'Registrerte Seere';
+$TEXT['RELOAD'] = 'Oppdater';
+$TEXT['REMEMBER_ME'] = 'Husk Meg';
+$TEXT['RENAME'] = 'Endre navn';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'P&aring;budt';
+$TEXT['REQUIREMENT'] = 'Krav';
+$TEXT['RESET'] = 'Tilbakestill';
+$TEXT['RESIZE'] = 'Endre St&oslash;rrelse';
+$TEXT['RESIZE_IMAGE_TO'] = 'Endre Bilde St&oslash;rrelse Til';
+$TEXT['RESTORE'] = 'Gjenopprett';
+$TEXT['RESTORE_DATABASE'] = 'Gjenopprett Database';
+$TEXT['RESTORE_MEDIA'] = 'Gjenopprett Media';
+$TEXT['RESULTS'] = 'Resultat';
+$TEXT['RESULTS_FOOTER'] = 'Resultat Bunntekst ';
+$TEXT['RESULTS_FOR'] = 'Resultat For';
+$TEXT['RESULTS_HEADER'] = 'Resultat Topptekst';
+$TEXT['RESULTS_LOOP'] = 'Resultat L&oslash;kke';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Skriv Passordet P&aring; Nytt';
+$TEXT['RETYPE_PASSWORD'] = 'Skriv Passord P&aring; Nytt';
+$TEXT['SAME_WINDOW'] = 'Samme Vindu';
+$TEXT['SAVE'] = 'Lagre';
+$TEXT['SEARCH'] = 'S&oslash;k';
+$TEXT['SEARCHING'] = 'S&oslash;ker';
+$TEXT['SECTION'] = 'Seksjon';
+$TEXT['SECTION_BLOCKS'] = 'Sekjsons Blokker';
+$TEXT['SEC_ANCHOR'] = 'Seksjonsanker tekst';
+$TEXT['SELECT_BOX'] = 'Velg Boks';
+$TEXT['SEND_DETAILS'] = 'Send detaljer';
+$TEXT['SEPARATE'] = 'Separat';
+$TEXT['SEPERATOR'] = 'Mellomrom';
+$TEXT['SERVER_EMAIL'] = 'Server E-post';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Serveren Operativ System';
+$TEXT['SESSION_IDENTIFIER'] = 'Sesjons id-navn';
+$TEXT['SETTINGS'] = 'Innstillinger';
+$TEXT['SHORT'] = 'Kort';
+$TEXT['SHORT_TEXT'] = 'Kort tekst';
+$TEXT['SHOW'] = 'Vis';
+$TEXT['SHOW_ADVANCED'] = 'Vis Avanserte Valg';
+$TEXT['SIGNUP'] = 'Registrer';
+$TEXT['SIZE'] = 'St&oslash;rrelse';
+$TEXT['SMART_LOGIN'] = 'Smart Innlogging';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Start Publisering';
+$TEXT['SUBJECT'] = 'Emne';
+$TEXT['SUBMISSIONS'] = 'Avgivelser';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Avgivelser Lagret i Database';
+$TEXT['SUBMISSION_ID'] = 'Avgitt ID';
+$TEXT['SUBMITTED'] = 'Avgitt';
+$TEXT['SUCCESS'] = 'Suksess';
+$TEXT['SYSTEM_DEFAULT'] = 'System Standard';
+$TEXT['SYSTEM_PERMISSIONS'] = 'System Adgang';
+$TEXT['TABLE_PREFIX'] = 'Tabell Prefiks';
+$TEXT['TARGET'] = 'M&aring;l';
+$TEXT['TARGET_FOLDER'] = 'Gjelende katalog';
+$TEXT['TEMPLATE'] = 'Mal';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Mal Tillgang';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Tekstomr&aring;de';
+$TEXT['TEXTFIELD'] = 'Tekstfelt';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Tid';
+$TEXT['TIMEZONE'] = 'Tidssone';
+$TEXT['TIME_FORMAT'] = 'Tids format';
+$TEXT['TIME_LIMIT'] = 'Maksimal tid for &aring; samle utrag per modul';
+$TEXT['TITLE'] = 'Tittel';
+$TEXT['TO'] = 'Til';
+$TEXT['TOP_FRAME'] = 'Topp ramme';
+$TEXT['TRASH_EMPTIED'] = 'S&oslash;ppelet er T&oslash;mt';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Rediger  CSS koden i tekst viduet nedenfor.';
+$TEXT['TYPE'] = 'Type';
+$TEXT['UNDER_CONSTRUCTION'] = 'Under Konstruksjon';
+$TEXT['UNINSTALL'] = 'Avinstaller';
+$TEXT['UNKNOWN'] = 'Ukjent';
+$TEXT['UNLIMITED'] = 'Ubegrenset';
+$TEXT['UNZIP_FILE'] = 'Last opp og pakk ut et .zip arkiv';
+$TEXT['UP'] = 'Opp';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Last opp fil(er)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Bruker';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Bekreftelse';
+$TEXT['VERSION'] = 'Versjon';
+$TEXT['VIEW'] = 'Se';
+$TEXT['VIEW_DELETED_PAGES'] = 'Vis Slettete Sider';
+$TEXT['VIEW_DETAILS'] = 'Se Detaljer';
+$TEXT['VISIBILITY'] = 'Synlighet';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Standard Fra e-post';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Standard Avsender Navn';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Spesifiser en standard "FRA" addresse og "AVSENDER" navn under. Det er annbefalt &aring; bruke en FRA adresse som: <strong>admin@yourdomain.com</strong>. Noen e-post leverand&oslash;rer(f.eks. <em>mail.com</em>) kan muligens avvise e-poster med en FRA: addresse som <em>name@mail.com</em> sendt igjennom en frmmed sent via en fremmed "relay" for &aring; unng&aring; spam.<br /><br />Standard verdiene brukes kun hvis det ikke er spessifisert andre verdier av WebsiteBaker. Hvis serveren din st&oslash;tter <acronym title="Simple mail transfer protocol">SMTP</acronym>, b&oslash;r du muligens benytte denne muligheten for utg&aring;ende e-post.';
+$TEXT['WBMAILER_FUNCTION'] = 'e-post rutine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP e-post innstillinger:</strong><br />Innstillingene under er kun p&aring;krevet hvis du vil sende e-post via <acronym title="Simple mail transfer protocol">SMTP</acronym>. Hvis du ikke vet hvem som er din "SMTP" leverand&oslash;r, eller du ikke er sikker p&aring; innstillingene som kreves, b&oslash;r du bruke standard e-post rutinen: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Autentifisering';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'aktiveres kun hvis din SMTP v&aelig;rt krever autentifisering';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP V&aelig;rt';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Passord';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Internett Side';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Nettstedets Beskrivelse';
+$TEXT['WEBSITE_FOOTER'] = 'Nettsted Bunntekst ';
+$TEXT['WEBSITE_HEADER'] = 'Nettsted Topptekst';
+$TEXT['WEBSITE_KEYWORDS'] = 'Nettsted N&oslash;kkelord';
+$TEXT['WEBSITE_TITLE'] = 'Nettstedets Tittel';
+$TEXT['WELCOME_BACK'] = 'Velkommen tilbake';
+$TEXT['WIDTH'] = 'Bredde';
+$TEXT['WINDOW'] = 'Vindu';
+$TEXT['WINDOWS'] = 'WINDOWS';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Global skrivetilgang til filer';
+$TEXT['WRITE'] = 'Skriv';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Stil';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Kravene for installering av denne modulen er ikke oppfylt';
+$HEADING['ADD_CHILD_PAGE'] = 'Legg til ny underside';
+$HEADING['ADD_GROUP'] = 'Legg til Gruppe';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Tilf&oslash;y overskrift';
+$HEADING['ADD_PAGE'] = 'Legg til side';
+$HEADING['ADD_USER'] = 'Legg til Bruker';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administrasjonsverkt&oslash;y';
+$HEADING['BROWSE_MEDIA'] = 'Utforsk Media';
+$HEADING['CREATE_FOLDER'] = 'Opprett Katalog';
+$HEADING['DEFAULT_SETTINGS'] = 'Standard Innstillinger';
+$HEADING['DELETED_PAGES'] = 'Slettede sider';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Filsystem Innstillinger';
+$HEADING['GENERAL_SETTINGS'] = 'Generelle Instillinger';
+$HEADING['INSTALL_LANGUAGE'] = 'Installer Spr&aring;k';
+$HEADING['INSTALL_MODULE'] = 'Innstaller Modul';
+$HEADING['INSTALL_TEMPLATE'] = 'Installer Mal';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Start modul filene mauelt';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Spr&aring;k Detaljer';
+$HEADING['MANAGE_SECTIONS'] = 'Administrer seksjoner';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Endre avansert sideinnstillinger';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Endre/Slette Gruppe';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Endre/Slett side';
+$HEADING['MODIFY_DELETE_USER'] = 'Endre/Slette Bruker';
+$HEADING['MODIFY_GROUP'] = 'Endre Gruppe';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Endre introduksjons side';
+$HEADING['MODIFY_PAGE'] = 'Endre side';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Endre sideinnstillinger';
+$HEADING['MODIFY_USER'] = 'Endre Bruker';
+$HEADING['MODULE_DETAILS'] = 'Modul Detaljer';
+$HEADING['MY_EMAIL'] = 'Min E-post';
+$HEADING['MY_PASSWORD'] = 'Mitt Passord';
+$HEADING['MY_SETTINGS'] = 'Mine Innstillinger';
+$HEADING['SEARCH_SETTINGS'] = 'S&oslash;ke Innstillinger';
+$HEADING['SERVER_SETTINGS'] = 'Server Innstillinger';
+$HEADING['TEMPLATE_DETAILS'] = 'Mal Detaljer';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Avinstaller Spr&aring;k';
+$HEADING['UNINSTALL_MODULE'] = 'Avinstaller Modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Avinstaller Mal';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Last opp fil(er)';
+$HEADING['WBMAILER_SETTINGS'] = 'Innstillinger for e-post senderen';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Mangelfull tillgangs rettigheter';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Beklager, men passord kan ikke tilbakestilles mer enn en gang i timen.';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Kunne ikke sende passord. Kontakt system administrator';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'E-post adressen ble ikke funnet i databasen';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Vennligst skriv e-post adressen nedenfor';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Beklager, ikke noe aktivt innhold &aring; vise.';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Beklager, du har ikke tillgang til &aring; se denne siden';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Allerede installert';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kunne ikke skrive til m&aring;l katalogen';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Kan ikke avinstallere';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Kan ikke avinstallere: Valgte fil er i bruk';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> kunne ikke avinstalleres, da den fortsatt benyttes p&aring; siden {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'denne siden;disse sidene';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Kan ikke avinstallere designmalen <b>{{name}}</b>, da den benyttes som standard designmal!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Kan ikke pakke ut .zip filen';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Kan ikke laste opp fil';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Feil ved &aring;pningen av filen.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Vennligst merk at filen du vil laste opp m&aring; v&aelig;re av f&oslash;lgende format:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Vennligst merk at filen du vil laste opp m&aring; v&aelig;re en av f&oslash;lgende formater:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Vennligst g&aring; tilbake og fyll inn alle felter';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Lykkes &aring; installere';
+$MESSAGE['GENERIC_INVALID'] = 'Filen du lastet opp er ikke gyldig';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Feil i WebsiteBaker installasjons filen. Vennligst sjekk formatet &aring; *.zip filen.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Feil i WebsiteBaker spr&aring;k filen. Vennligst sjekk tekst filen.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Ikke installert';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Vennligst v&aelig;r t&aring;lmodig, dette kan ta en stund.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Vennligst kom tilbake p&aring; et annet tidspunkt...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Brudd p&aring; sikkerheten!! Lagring av data ble nektet!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Lykkes &aring; avinstallere';
+$MESSAGE['GENERIC_UPGRADED'] = 'Lykkes &aring; oppdatere';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Nettstedet er under konstruksjon';
+$MESSAGE['GROUPS_ADDED'] = 'Lykkes &aring; legge til gruppe';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Slette valgte gruppe (og dermed ogs&aring; alle tilh&oslash;rende brukere)?';
+$MESSAGE['GROUPS_DELETED'] = 'Lykkes &aring; slette gruppe';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Gruppe navn ikke angitt';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Gruppenavn finnes allerede';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Ingen gruppe funnet';
+$MESSAGE['GROUPS_SAVED'] = 'Lykkes &aring; lagre gruppe';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Vennligst skriv et passord';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Det angitte passordet er for langt';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Det angitte passordet er for kort';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Du tastet ikke inn en fil utvidelse';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Du anga ikke et nytt navn';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Kan ikke slette valgte katalog';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Kan ikke slette valgte fil';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Mislykkes &aring; endre navn';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Vil du virkelig slette filen eller katalogen?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Lykkes &aring; slette katalog';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Lykkes &aring; slette fil';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Katalogen finnes ikke';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Kan ikke benytte ../ i katalog navnet';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'En katalog med samme navn eksisterer allerede';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Lykkes &aring; opprette katalogen';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Mislykkes &aring; opprette katalogen';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'En fil med samme navn eksisterer allerede';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Fant ingen fil';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Kan ikke benytte ../ i navnet';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Kan ikke benytte index.php som navnet';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Det ble ikke funnet noen media i den angitte katalogen';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Lykkes &aring; endre navn';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' Lykkes &aring; laste opp filen';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Kan ikke ha ../ i katalog m&aring;let';
+$MESSAGE['MEDIA_UPLOADED'] = ' Lykkes &aring; laste opp filene';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Beklager, dette skjemaet har blitt sendt for mange ganger denne timen. Vennligst pr&oslash;v igjen om en time.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Bekreftelsesnummeret (ogs&aring; kjent som Captcha) som du skrev inn er feil. Hvis du har problemer med &aring; lese Captcha, vennligst kontakt: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Du m&aring; skrive inn detaljer for f&oslash;lgende felt';
+$MESSAGE['PAGES_ADDED'] = 'Lykkes &aring; legge til siden';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Lykkes &aring; legge til side overskrift';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Vennligst skriv inn meny tittel';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Vennligst skriv inn side tittel';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Feilet &aring; opprette adgang fil i /pages katalog (manglende rettigheter)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Feilet &aring; slette adgang fil i /pages katalog (manglende rettigheter)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Feilet &aring; endre rekkef&oslash;lge';
+$MESSAGE['PAGES_DELETED'] = 'Lykkes &aring; slette side';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Er du sikker p&aring; at du vil slette valgte side (og dermed alle under-sider)?';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Du har ikke rettigheter til &aring; endre denne siden';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Klikk HER for &aring; endre intro siden';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Kunne ikke skrive til fil /pages/intro.php (manglende rettigheter)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Lykkes &aring; lagre intro side';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Sist modifisert av';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Fant ikke siden';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Kunne ikke lagre side';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'En side med lik eller tilsvarende tittel eksisterer';
+$MESSAGE['PAGES_REORDERED'] = 'Lykkes &aring; endre side rekkef&oslash;lge';
+$MESSAGE['PAGES_RESTORED'] = 'Lykkes &aring; gjenopprette side';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Tilbake til sider';
+$MESSAGE['PAGES_SAVED'] = 'Lykkes &aring; lagre side';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Lykkes &aring; lagre side innstillinger';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Lykkes &aring; lagre seksjons innstillinger';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Passordet du skrev inn er ikke korrekt';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Lykkes &aring; lagre detaljer';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Lykkes &aring; oppdatere e-post';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Ugyldige karakterer er benyttet i passordet';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Lykkes &aring; endre passord';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'Endring av oppf&oslash;ringen feilet.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'Den endrede oppf&oslash;ringen ble lagret.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Innlegging av ny oppf&oslash;ring feilet.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'Ny oppf&oslash;ring ble lagt til.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Merk: Ved &aring; klikke denne knappen lagres ikke endringer';
+$MESSAGE['SETTINGS_SAVED'] = 'Lykkes &aring; lagre endringer';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Kunne ikke &aring;pne konfigurasjons filen';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Kunne ikke skrive til konfigurasjons filen';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Merk: Dette er kun ment for teste milj&oslash;er';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+En ny bruker ble registrert.
+
+Loginname: {LOGIN_NAME}
+BrukerID: {LOGIN_ID}
+e-post: {LOGIN_EMAIL}
+IP-Adresse: {LOGIN_IP}
+Registrasjons dateo: {SIGNUP_DATE}
+----------------------------------------
+Denne meldingen ble automatisk generert!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hei {LOGIN_DISPLAY_NAME},
+
+Denne e-posten ble sendt til deg fordi \'glemt passord\' funksjonen er blitt benyttet p&aring; din konto.
+Dine nye \'{LOGIN_WEBSITE_TITLE}\' p&aring;loggingsdetalejer er:
+
+Loginname: {LOGIN_NAME}
+Passord: {LOGIN_PASSWORD}
+
+Passordet dit er endret til det som st&aring;r over.
+Dette betyr at det gamle passordet dit ikke virker lenger!
+Hvis du har sp&oslash;rsm&aring;le eller problemer med de nye p&aring;loggingsdataene
+b&oslash;r du ta kontakt med \'{LOGIN_WEBSITE_TITLE}\' sine administratorer.
+Venligst husk &aring; t&oslash;mme nettleserens cache f&oslash;r du benytter deg av de nye p&aring;loggingsdetaljene dine, slik at du unng&aring;r uventede feil.
+Med hilsen
+------------------------------------
+Denne meldingen ble automatisk generert!
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hei {LOGIN_DISPLAY_NAME},
+
+Velkommen til v&aring;r hjemmeside \'{LOGIN_WEBSITE_TITLE}\'.
+
+Dine \'{LOGIN_WEBSITE_TITLE}\' p&aring;loggingsdetaljer er:
+Loginname: {LOGIN_NAME}
+Passord: {LOGIN_PASSWORD}
+
+Med hilsen
+OBS!:
+Hvis du har mottatt denne e-posten ved en feiltakelse, vennligst slett den med en gang!
+-------------------------------------
+Denne meldingen ble automatisk generert!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Dine p&aring;-loggings detaljer...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Du m&aring; skrive inn en e-post adresse';
+$MESSAGE['START_CURRENT_USER'] = 'Du er logget inn som:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Advarsel, installasjonskatalogen eksisterer forsatt!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Velkommen til WebsiteBaker Administrasjon';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Merk: For &aring; endre malen m&aring; man gj&oslash;re dette i Instillinger seksjonen';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Lykkes &aring; opprette ny bruker';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Handlingen ble forkastet. Du kan ikke slette deg selv!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Merk: Skriv kun inn verdier i feltene ovenfor hvis du vil endre passordet til denne brukeren';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Vil du virkelig slette den valgte brukeren?';
+$MESSAGE['USERS_DELETED'] = 'Lykkes &aring; slette bruker';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'E-post adresse allerede i bruk';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'E-post adresse ikke gyldig';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Ingen gruppe ble valgt';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Passordene er ikke like';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Angitt passord for kort';
+$MESSAGE['USERS_SAVED'] = 'Lykkes &aring; lagre bruker';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'G&aring; inn p&aring; WebsiteBaker sine administrasjonsverkt&oslash;y...';
+$OVERVIEW['GROUPS'] = 'Administrer grupper og deres system adgang...';
+$OVERVIEW['HELP'] = 'Har du et sp&oslash;rsm&aring;l? Finn svaret...';
+$OVERVIEW['LANGUAGES'] = 'Administrer WebsiteBaker spr&aring;k...';
+$OVERVIEW['MEDIA'] = 'Administrer filer lagret i media katalogen...';
+$OVERVIEW['MODULES'] = 'Administrer WebsiteBaker moduler...';
+$OVERVIEW['PAGES'] = 'Administrer dine internett sider...';
+$OVERVIEW['PREFERENCES'] = 'Forandre innstillinger som e-post adresse, passord, o.l....';
+$OVERVIEW['SETTINGS'] = 'Forandre instillinger for WebsiteBaker...';
+$OVERVIEW['START'] = 'Administrasjons oversikt';
+$OVERVIEW['TEMPLATES'] = 'Forandre utseende p&aring; internett siden med maler...';
+$OVERVIEW['USERS'] = 'Velg hvilke brukere som kan logge inn i WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Forh&aring;ndsvis internett siden din i et nytt vindu...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/NO.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/SK.php
===================================================================
--- tags/2.8.3/wb/languages/SK.php	(nonexistent)
+++ tags/2.8.3/wb/languages/SK.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'SK';
+$language_name = 'Slovensky';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Michal Kurtulik - YONIX.SK';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Pr&iacute;stup';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Roz&#353;&iacute;renie';
+$MENU['ADMINTOOLS'] = 'N&aacute;stroje';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Z&iacute;ska&#357; zabudnut&eacute; prihlasovacie &uacute;daje';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Skupiny';
+$MENU['HELP'] = 'N&aacute;poveda';
+$MENU['LANGUAGES'] = 'Jazyky';
+$MENU['LOGIN'] = 'Prihl&aacute;senie';
+$MENU['LOGOUT'] = 'Odhl&aacute;si&#357;';
+$MENU['MEDIA'] = 'M&eacute;dia';
+$MENU['MODULES'] = 'Moduly';
+$MENU['PAGES'] = 'Str&aacute;nky';
+$MENU['PREFERENCES'] = 'Mo&#382;nosti';
+$MENU['SETTINGS'] = 'Nastavenia';
+$MENU['START'] = '&Uacute;vod';
+$MENU['TEMPLATES'] = '&#352;ablony';
+$MENU['USERS'] = 'U&#382;&iacute;vatelia';
+$MENU['VIEW'] = 'Zobrazi&#357;';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registr&aacute;cia &uacute;&#269;tu';
+$TEXT['ACTIONS'] = 'Akcia';
+$TEXT['ACTIVE'] = 'Akt&iacute;vny';
+$TEXT['ADD'] = 'Prida&#357;';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Prida&#357; sekciu';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administrat&iacute;va';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administrat&iacute;vne n&aacute;stroje';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Spr&aacute;vcovia';
+$TEXT['ADVANCED'] = 'Pokro&#269;il&yacute;';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Opr&aacute;vnenie k prezeraniu';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Povolit viacn&aacute;sobn&eacute; v&yacute;bery';
+$TEXT['ALL_WORDS'] = 'V&#353;etky slov&aacute;';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonymn&eacute;';
+$TEXT['ANY_WORDS'] = '&#268;oko&#318;vek';
+$TEXT['APP_NAME'] = 'N&aacute;zov aplik&aacute;cie';
+$TEXT['ARE_YOU_SURE'] = 'Ste si ist&iacute;?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Sp&auml;&#357;';
+$TEXT['BACKUP'] = 'Z&aacute;lohovanie';
+$TEXT['BACKUP_ALL_TABLES'] = 'Z&aacute;lohova&#357; v&#353;etky tabu&#318;ky v datab&aacute;ze';
+$TEXT['BACKUP_DATABASE'] = 'Z&aacute;lohova&#357; datab&aacute;zu';
+$TEXT['BACKUP_MEDIA'] = 'Zaz&aacute;lohova&#357;  m&eacute;dia';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Z&aacute;lohova&#357; iba tabu&#318;ky CMS Syst&eacute;mu';
+$TEXT['BASIC'] = 'Z&aacute;kladn&yacute;';
+$TEXT['BLOCK'] = 'Blok';
+$TEXT['CALENDAR'] = 'Kalend&aacute;r';
+$TEXT['CANCEL'] = 'Zru&#353;i&#357;';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Kontrola obr. k&oacute;dom';
+$TEXT['CAP_EDIT_CSS'] = 'Uprav CSS';
+$TEXT['CHANGE'] = 'Zmeni&#357;';
+$TEXT['CHANGES'] = 'Zmeny';
+$TEXT['CHANGE_SETTINGS'] = 'Zmeni&#357; nastavenie';
+$TEXT['CHARSET'] = 'K&oacute;dov&aacute; str&aacute;nka';
+$TEXT['CHECKBOX_GROUP'] = 'Skupina za&#353;krt&aacute;vac&iacute;ch pol&iacute;';
+$TEXT['CLOSE'] = 'Zavrie&#357;';
+$TEXT['CODE'] = 'K&oacute;d jazyka';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Zbali&#357;';
+$TEXT['COMMENT'] = 'Koment&aacute;r';
+$TEXT['COMMENTING'] = 'Koment&aacute;re';
+$TEXT['COMMENTS'] = 'Koment&aacute;re';
+$TEXT['CREATE_FOLDER'] = 'Vytvorit adres&aacute;r';
+$TEXT['CURRENT'] = 'S&uacute;&#269;asn&yacute;';
+$TEXT['CURRENT_FOLDER'] = 'S&uacute;&#269;asn&yacute; adres&aacute;r';
+$TEXT['CURRENT_PAGE'] = 'Str&aacute;nka';
+$TEXT['CURRENT_PASSWORD'] = 'S&uacute;&#269;asn&eacute; heslo';
+$TEXT['CUSTOM'] = 'Vlastn&eacute; nastavenie';
+$TEXT['DATABASE'] = 'Datab&aacute;za';
+$TEXT['DATE'] = 'D&aacute;tum';
+$TEXT['DATE_FORMAT'] = 'Form&aacute;t d&aacute;tumu';
+$TEXT['DEFAULT'] = 'V&yacute;chodz&iacute;';
+$TEXT['DEFAULT_CHARSET'] = 'V&yacute;chodzia k&oacute;dov&aacute; str&aacute;nka';
+$TEXT['DEFAULT_TEXT'] = 'Prednastaven&yacute; text';
+$TEXT['DELETE'] = 'Vymaza&#357;';
+$TEXT['DELETED'] = 'Vymazan&eacute;';
+$TEXT['DELETE_DATE'] = 'Zmaza&#357; d&aacute;tum';
+$TEXT['DELETE_ZIP'] = 'Zmaza&#357; zip s&uacute;bor po rozbalen&iacute;';
+$TEXT['DESCRIPTION'] = 'Popis';
+$TEXT['DESIGNED_FOR'] = 'Vyvinut&eacute; pre';
+$TEXT['DIRECTORIES'] = 'Adres&aacute;re';
+$TEXT['DIRECTORY_MODE'] = 'M&oacute;d adres&aacute;rov';
+$TEXT['DISABLED'] = 'Vypnut&eacute;';
+$TEXT['DISPLAY_NAME'] = 'Meno';
+$TEXT['EMAIL'] = 'E-mail';
+$TEXT['EMAIL_ADDRESS'] = 'E-mailov&aacute; adresa';
+$TEXT['EMPTY_TRASH'] = 'Vypr&aacute;zdni&#357; k&ocirc;&#353;';
+$TEXT['ENABLED'] = 'Zapnut&eacute;';
+$TEXT['END'] = 'Koniec';
+$TEXT['ERROR'] = 'Chyba';
+$TEXT['EXACT_MATCH'] = 'Presn&aacute; zhoda';
+$TEXT['EXECUTE'] = 'Spustenie';
+$TEXT['EXPAND'] = 'Rozbali&#357;';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Pole';
+$TEXT['FILE'] = 's&uacute;bor';
+$TEXT['FILES'] = 's&uacute;bory';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Pr&aacute;va s&uacute;borov&eacute;ho syst&eacute;mu';
+$TEXT['FILE_MODE'] = 'M&oacute;d s&uacute;borov';
+$TEXT['FINISH_PUBLISHING'] = 'Koniec publik&aacute;cie';
+$TEXT['FOLDER'] = 'adres&aacute;r';
+$TEXT['FOLDERS'] = 'adres&aacute;re';
+$TEXT['FOOTER'] = 'Z&aacute;p&auml;tie';
+$TEXT['FORGOTTEN_DETAILS'] = 'Zabudli ste svoje prihlasovanie &uacute;daje ?';
+$TEXT['FORGOT_DETAILS'] = 'Zabudnut&eacute; heslo?';
+$TEXT['FROM'] = 'od';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Cel&eacute; meno';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Skupina';
+$TEXT['HEADER'] = 'Z&aacute;hlavie';
+$TEXT['HEADING'] = 'Z&aacute;hlavie';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'V&yacute;&#353;ka';
+$TEXT['HIDDEN'] = 'Skryt&aacute;';
+$TEXT['HIDE'] = 'Skry&#357;';
+$TEXT['HIDE_ADVANCED'] = 'Skry&#357; pokro&#269;il&eacute; vo&#318;by';
+$TEXT['HOME'] = 'Domov';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Presmerovanie hlavnej str&aacute;nky';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Hostite&#318;';
+$TEXT['ICON'] = 'Ikona';
+$TEXT['IMAGE'] = 'Obr&aacute;zok';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'In&#353;talovat';
+$TEXT['INSTALLATION'] = 'In&#353;tal&aacute;cia';
+$TEXT['INSTALLATION_PATH'] = 'Cesta in&#353;tal&aacute;cie';
+$TEXT['INSTALLATION_URL'] = 'URL in&#353;tal&aacute;cia';
+$TEXT['INSTALLED'] = 'Nain&#353;talovan&eacute;';
+$TEXT['INTRO'] = 'Intro';
+$TEXT['INTRO_PAGE'] = '&Uacute;vodn&aacute; (intro) str&aacute;nka';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'K&#318;&uacute;&#269;ov&eacute; slov&aacute;';
+$TEXT['LANGUAGE'] = 'Jazyk';
+$TEXT['LAST_UPDATED_BY'] = 'Posledn&aacute;  zmena:';
+$TEXT['LENGTH'] = 'D&#314;&#382;ka';
+$TEXT['LEVEL'] = '&Uacute;rove&#328;';
+$TEXT['LINK'] = 'Odkaz';
+$TEXT['LINUX_UNIX_BASED'] = 'Zalo&#382;en&yacute; na Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Zoznam volieb';
+$TEXT['LOGGED_IN'] = 'prihl&aacute;senie';
+$TEXT['LOGIN'] = 'Prihl&aacute;si&#357;';
+$TEXT['LONG'] = 'Dlh&yacute; popis';
+$TEXT['LONG_TEXT'] = 'Dlh&yacute; text';
+$TEXT['LOOP'] = 'Telo';
+$TEXT['MAIN'] = 'Hlavn&yacute;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Spravova&#357;';
+$TEXT['MANAGE_GROUPS'] = 'Spravova&#357; skupiny';
+$TEXT['MANAGE_USERS'] = 'Spravova&#357; u&#382;ivate&#318;ov';
+$TEXT['MATCH'] = 'Zhoda';
+$TEXT['MATCHING'] = 'Zodpovedaj&uacute;ci';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. po&#269;et odoslan&yacute;ch za hodinu';
+$TEXT['MEDIA_DIRECTORY'] = 'Adres&aacute;r m&eacute;di&iacute;';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Titulok menu';
+$TEXT['MESSAGE'] = 'Spr&aacute;va';
+$TEXT['MODIFY'] = 'Zmeni&#357;';
+$TEXT['MODIFY_CONTENT'] = 'Zmeni&#357; obsah';
+$TEXT['MODIFY_SETTINGS'] = 'Zmeni&#357; nastavenie';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Opr&aacute;vnenie k modulom';
+$TEXT['MORE'] = 'Viacej';
+$TEXT['MOVE_DOWN'] = 'Posun&uacute;&#357; dole';
+$TEXT['MOVE_UP'] = 'Posun&uacute;&#357; nahor';
+$TEXT['MULTIPLE_MENUS'] = 'Viacn&aacute;sobn&eacute; menu';
+$TEXT['MULTISELECT'] = 'Viacn&aacute;sobn&eacute; v&yacute;berov&eacute; pole';
+$TEXT['NAME'] = 'N&aacute;zov';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Chcete sa prihl&aacute;si&#357;?';
+$TEXT['NEW_PASSWORD'] = 'Nov&eacute; heslo';
+$TEXT['NEW_WINDOW'] = 'nov&eacute;ho okna';
+$TEXT['NEXT'] = 'Nasleduj&uacute;ci';
+$TEXT['NEXT_PAGE'] = 'Nasleduj&uacute;ca str&aacute;nka';
+$TEXT['NO'] = 'Nie';
+$TEXT['NONE'] = 'Nie je';
+$TEXT['NONE_FOUND'] = 'Ni&#269; sa nena&#353;lo';
+$TEXT['NOT_FOUND'] = 'Nen&aacute;jdene';
+$TEXT['NOT_INSTALLED'] = 'Nenain&#353;talovan&eacute;';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = '&#381;iadny v&yacute;sledok';
+$TEXT['OF'] = 'Z';
+$TEXT['ON'] = 'Na';
+$TEXT['OPEN'] = 'Otvori&#357;';
+$TEXT['OPTION'] = 'Vo&#318;by';
+$TEXT['OTHERS'] = 'Ostatn&yacute;';
+$TEXT['OUT_OF'] = 'Z';
+$TEXT['OVERWRITE_EXISTING'] = 'Prep&iacute;sa&#357; existuj&uacute;ci';
+$TEXT['PAGE'] = 'Str&aacute;nka';
+$TEXT['PAGES_DIRECTORY'] = 'Adres&aacute;r str&aacute;nok';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Pr&iacute;pona str&aacute;nok';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Jazykov&eacute; verzie str&aacute;nok';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limit &uacute;rovne str&aacute;nok';
+$TEXT['PAGE_SPACER'] = 'Znak medzery';
+$TEXT['PAGE_TITLE'] = 'Titulok str&aacute;nky';
+$TEXT['PAGE_TRASH'] = 'K&ocirc;&#353; str&aacute;nok';
+$TEXT['PARENT'] = 'Nadraden&yacute;';
+$TEXT['PASSWORD'] = 'Heslo';
+$TEXT['PATH'] = 'Cesta';
+$TEXT['PHP_ERROR_LEVEL'] = '&Uacute;rove&#328; hl&aacute;senia ch&yacute;b PHP';
+$TEXT['PLEASE_LOGIN'] = 'Pros&iacute;m prihl&aacute;ste sa';
+$TEXT['PLEASE_SELECT'] = 'Vyberte pros&iacute;m';
+$TEXT['POST'] = 'pr&iacute;spevok';
+$TEXT['POSTS_PER_PAGE'] = 'Pr&iacute;spevky na str&aacute;nku';
+$TEXT['POST_FOOTER'] = 'Z&aacute;p&auml;tie pr&iacute;spevku';
+$TEXT['POST_HEADER'] = 'Z&aacute;hlavie pr&iacute;spevku';
+$TEXT['PREVIOUS'] = 'Predch&aacute;dzaj&uacute;ci';
+$TEXT['PREVIOUS_PAGE'] = 'Predch&aacute;dzaj&uacute;ca str&aacute;nka';
+$TEXT['PRIVATE'] = 'S&uacute;kromn&aacute;';
+$TEXT['PRIVATE_VIEWERS'] = 'Opr&aacute;vnenie k prezeraniu';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Verejn&aacute;';
+$TEXT['PUBL_END_DATE'] = 'Kone&#269;n&yacute; d&aacute;tum';
+$TEXT['PUBL_START_DATE'] = 'Po&#269;iato&#269;n&yacute; d&aacute;tum';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Skupina radio-pol&iacute;';
+$TEXT['READ'] = '&#268;&iacute;tanie';
+$TEXT['READ_MORE'] = '&#269;&iacute;taj viac...';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Pre registrovan&yacute;ch';
+$TEXT['REGISTERED_VIEWERS'] = 'Opr&aacute;vnenie k prezeraniu';
+$TEXT['RELOAD'] = 'Obnovi&#357;';
+$TEXT['REMEMBER_ME'] = 'Zapam&auml;ta&#357; &uacute;daje';
+$TEXT['RENAME'] = 'Premenova&#357;.';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Povinn&yacute;';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Vy&#269;isti&#357;';
+$TEXT['RESIZE'] = 'Zmena ve&#318;kosti';
+$TEXT['RESIZE_IMAGE_TO'] = 'Zmeni&#357; ve&#318;kos&#357; obr&aacute;zku na';
+$TEXT['RESTORE'] = 'Obnova zo z&aacute;lohy';
+$TEXT['RESTORE_DATABASE'] = 'Obnovi&#357; datab&aacute;zu zo z&aacute;lohy';
+$TEXT['RESTORE_MEDIA'] = 'Obnovi&#357; m&eacute;dia zo z&aacute;lohy';
+$TEXT['RESULTS'] = 'V&yacute;sledky';
+$TEXT['RESULTS_FOOTER'] = 'Z&aacute;p&auml;tie v&yacute;sledkov';
+$TEXT['RESULTS_FOR'] = 'V&yacute;sledky pre';
+$TEXT['RESULTS_HEADER'] = 'Z&aacute;hlavie v&yacute;sledkov';
+$TEXT['RESULTS_LOOP'] = 'Polo&#382;ka v&yacute;sledkov';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Znovu nov&eacute; heslo';
+$TEXT['RETYPE_PASSWORD'] = 'Znovu heslo';
+$TEXT['SAME_WINDOW'] = 'p&ocirc;vodn&eacute;ho okna';
+$TEXT['SAVE'] = 'Ulo&#382;i&#357;';
+$TEXT['SEARCH'] = 'Vyh&#318;ad&aacute;vanie';
+$TEXT['SEARCHING'] = 'Vyh&#318;ad&aacute;vanie';
+$TEXT['SECTION'] = 'Sekcia';
+$TEXT['SECTION_BLOCKS'] = 'Bloky sekci&iacute;';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'V&yacute;berov&eacute; pole';
+$TEXT['SEND_DETAILS'] = 'Zasla&#357; prihlasovanie &uacute;daje';
+$TEXT['SEPARATE'] = 'Oddelene';
+$TEXT['SEPERATOR'] = 'Odde&#318;ova&#269;';
+$TEXT['SERVER_EMAIL'] = 'Syt&eacute;mov&yacute; e-mail';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Opera&#269;n&yacute; syst&eacute;m serveru';
+$TEXT['SESSION_IDENTIFIER'] = 'Identifik&aacute;tor session';
+$TEXT['SETTINGS'] = 'Nastavenie';
+$TEXT['SHORT'] = 'Kr&aacute;tky popis';
+$TEXT['SHORT_TEXT'] = 'Kr&aacute;tk&yacute; text';
+$TEXT['SHOW'] = 'Zobrazi&#357;';
+$TEXT['SHOW_ADVANCED'] = 'Zobrazi&#357; pokro&#269;il&eacute; vo&#318;by';
+$TEXT['SIGNUP'] = 'Registr&aacute;cia';
+$TEXT['SIZE'] = 'Ve&#318;kos&#357;';
+$TEXT['SMART_LOGIN'] = 'M&uacute;dre prihl&aacute;senie';
+$TEXT['START'] = '&#352;tart';
+$TEXT['START_PUBLISHING'] = 'Za&#269;iatok publik&aacute;cie';
+$TEXT['SUBJECT'] = 'Predmet';
+$TEXT['SUBMISSIONS'] = 'Odoslan&eacute; formul&aacute;re';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Odoslan&eacute; formul&aacute;re';
+$TEXT['SUBMISSION_ID'] = 'ID formul&aacute;re';
+$TEXT['SUBMITTED'] = 'Odoslan&eacute;';
+$TEXT['SUCCESS'] = '&Uacute;spe&#353;ne preveden&eacute;';
+$TEXT['SYSTEM_DEFAULT'] = 'Implicitn&eacute; v syst&eacute;me';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Syst&eacute;mov&eacute; opr&aacute;vnenie';
+$TEXT['TABLE_PREFIX'] = 'Prefix tabuliek';
+$TEXT['TARGET'] = 'Smeruje do';
+$TEXT['TARGET_FOLDER'] = 'Cie&#318;ov&yacute; adres&aacute;r';
+$TEXT['TEMPLATE'] = '&#352;ablona';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Pr&aacute;va k &#353;ablone';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = 'Vstupn&eacute; pole';
+$TEXT['TEXTFIELD'] = 'Vstupn&yacute; riadok';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = '&#268;as';
+$TEXT['TIMEZONE'] = '&#268;asov&eacute; p&aacute;smo';
+$TEXT['TIME_FORMAT'] = 'Form&aacute;t &#269;asu';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'N&aacute;zov';
+$TEXT['TO'] = 'na';
+$TEXT['TOP_FRAME'] = 'vrchn&eacute;ho r&aacute;mu';
+$TEXT['TRASH_EMPTIED'] = 'K&ocirc;&#353; vypr&aacute;zdnen&yacute;';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Typ';
+$TEXT['UNDER_CONSTRUCTION'] = 'Vo v&yacute;stavbe';
+$TEXT['UNINSTALL'] = 'Odin&#353;talovat';
+$TEXT['UNKNOWN'] = 'Nezn&aacute;m&yacute;';
+$TEXT['UNLIMITED'] = 'Neobmedzen&yacute;';
+$TEXT['UNZIP_FILE'] = 'Nahraj a rozba&#318; zip s&uacute;bor';
+$TEXT['UP'] = 'Nahor';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Nahra&#357; s&uacute;bor(y)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'U&#382;&iacute;vate&#318;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifik&aacute;cia';
+$TEXT['VERSION'] = 'Verzia';
+$TEXT['VIEW'] = 'Zobrazi&#357;';
+$TEXT['VIEW_DELETED_PAGES'] = 'Zobrazi&#357; vymazan&eacute; str&aacute;nky';
+$TEXT['VIEW_DETAILS'] = 'Zobrazi&#357;';
+$TEXT['VISIBILITY'] = 'Vidite&#318;nos&#357;';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Prednastaven&yacute; E-Mail odosielatela';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Prednastaven&eacute; meno odosielatela';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default FROM address and SENDER name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Sp&ocirc;sob odoslania e-mailu';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title=Simple mail transfer protocol>SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP skript';
+$TEXT['WBMAILER_SMTP'] = 'SMTP server';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Overenie';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP server';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP heslo';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'WWW';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Popis webu';
+$TEXT['WEBSITE_FOOTER'] = 'Z&aacute;p&auml;tie webu';
+$TEXT['WEBSITE_HEADER'] = 'Z&aacute;hlavie webu';
+$TEXT['WEBSITE_KEYWORDS'] = 'K&#318;&uacute;&#269;ov&eacute; slov&aacute;';
+$TEXT['WEBSITE_TITLE'] = 'N&aacute;zov webu';
+$TEXT['WELCOME_BACK'] = 'Vitajte';
+$TEXT['WIDTH'] = '&#352;&iacute;rka';
+$TEXT['WINDOW'] = 'Okno';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Pr&aacute;va z&aacute;pisu &quot;pre cel&yacute; svet&quot;';
+$TEXT['WRITE'] = 'Z&aacute;pis';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG styl';
+$TEXT['YES'] = 'Ano';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Nie s&uacute; splnen&eacute; po&#382;iadavky pre roz&#353;&iacute;renie';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Prida&#357; skupinu';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Prida&#357; z&aacute;hlavie';
+$HEADING['ADD_PAGE'] = 'Prida&#357; str&aacute;nku';
+$HEADING['ADD_USER'] = 'Prida&#357; u&#382;&iacute;vate&#318;ov';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administra&#269;n&eacute; n&aacute;stroje';
+$HEADING['BROWSE_MEDIA'] = 'Prehliada&#269; m&eacute;di&iacute;';
+$HEADING['CREATE_FOLDER'] = 'Vytvori&#357; adres&aacute;r';
+$HEADING['DEFAULT_SETTINGS'] = 'Implicitn&eacute; nastavenie';
+$HEADING['DELETED_PAGES'] = 'Vymazan&eacute; str&aacute;nky';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Nastavenie syst&eacute;mu s&uacute;borov';
+$HEADING['GENERAL_SETTINGS'] = 'Obecn&eacute; nastavenie';
+$HEADING['INSTALL_LANGUAGE'] = 'Nain&#353;talovat jazyk';
+$HEADING['INSTALL_MODULE'] = 'Nain&#353;talovat modul';
+$HEADING['INSTALL_TEMPLATE'] = 'Nain&#353;talovat &#353;ablonu';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Spustite  in&#353;tal&aacute;ciu modulu ru&#269;ne';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detaily jazyka';
+$HEADING['MANAGE_SECTIONS'] = 'Spravova&#357; sekcie';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Zmeni&#357; pokro&#269;il&eacute; nastavenie str&aacute;nky';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Zmeni&#357;/Vymaza&#357; skupinu';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Zmenit/Vymaza&#357; str&aacute;nku';
+$HEADING['MODIFY_DELETE_USER'] = 'Zmeni&#357;/Vymaza&#357; u&#382;&iacute;vatelov';
+$HEADING['MODIFY_GROUP'] = 'Zmeni&#357; skupinu';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Zmeni&#357; &uacute;vodn&uacute; (intro) str&aacute;nku';
+$HEADING['MODIFY_PAGE'] = 'Upravi&#357; str&aacute;nku';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Zmeni&#357; nastavenie str&aacute;nky';
+$HEADING['MODIFY_USER'] = 'Zmeni&#357; u&#382;&iacute;vatelov';
+$HEADING['MODULE_DETAILS'] = 'Detaily modulu';
+$HEADING['MY_EMAIL'] = 'M&ocirc;j e-mail';
+$HEADING['MY_PASSWORD'] = 'Moje heslo';
+$HEADING['MY_SETTINGS'] = 'Moje nastavenie';
+$HEADING['SEARCH_SETTINGS'] = 'Nastavenie vyh&#318;ad&aacute;vania';
+$HEADING['SERVER_SETTINGS'] = 'Nastavenie serveru';
+$HEADING['TEMPLATE_DETAILS'] = 'Detaily &#353;ablony';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Odin&#353;talovat jazyk';
+$HEADING['UNINSTALL_MODULE'] = 'Odin&#353;talovat modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Odi&#353;talovat &#353;ablonu';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Nahra&#357; s&uacute;bor(y)';
+$HEADING['WBMAILER_SETTINGS'] = 'Nastavenia E-Mailu';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Nedostato&#269;n&eacute; opr&aacute;vnenie';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Heslo nem&ocirc;&#382;e by&#357; prenastaven&eacute; viackr&aacute;t  behom jednej hodiny';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Nejde odosla&#357;  heslo e-mailom, kontaktujte pros&iacute;m spr&aacute;vcu syst&eacute;mu';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Zadan&aacute; e-mailov&aacute; adresa alebola n&aacute;jden&aacute;';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Zadajte svoju e-mailovou adresu:';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Nem&aacute;te opr&aacute;vnenie prezera&#357; t&uacute;to str&aacute;nku';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'U&#382; nain&#353;talovan&eacute;';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Ned&aacute; sa zapisovat do cielov&eacute;ho adres&aacute;ra';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Ned&aacute; sa odin&#353;talova&#357;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Ned&aacute; sa odin&#353;talova&#357;: s&uacute;bor je pr&aacute;ve pou&#382;&iacute;van&yacute;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> ned&aacute; sa odin&#353;talova&#357;, preto&#382;e sa pou&#382;&iacute;va na {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 't&aacute;to str&aacute;nka; tieto str&aacute;nky';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Nem&ocirc;&#382;e&#357;e odin&#353;talova&#357; &#353;abl&oacute;nu <b>{{name}}</b>, preto&#382;e je nastaven&aacute; ako predvolen&aacute; &#353;abl&oacute;na!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Ned&aacute; sa rozbali&#357; (rozzipova&#357;) s&uacute;bor';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Ned&aacute; sa nahra&#357; s&uacute;bor';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Do&#353;lo k chybe pri otvaran&iacute; s&uacute;boru.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Nahr&aacute;van&eacute; s&uacute;bory musia by&#357; n&aacute;sleduj&uacute;ceho form&aacute;tu:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Nahr&aacute;van&yacute; soubor mus&iacute; ma&#357; jeden z n&aacute;sleduj&uacute;c&iacute;ch form&aacute;tov:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Pros&iacute;m vra&#357;te se sp&auml;&#357; a vypl&#328;te v&#353;etky polia';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'In&#353;tal&aacute;cia prebehla &uacute;spe&#353;ne';
+$MESSAGE['GENERIC_INVALID'] = 'Nahr&aacute;van&yacute; s&uacute;bor je neplatn&yacute;';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nenain&#353;talovan&eacute;';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = '&#268;ekejte pros&iacute;m, operacia m&ocirc;&#382;e chv&iacute;&#318;u trva&#357;.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Pros&iacute;m, nav&#353;t&iacute;vte n&aacute;s nesk&ocirc;r...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Odin&#353;tal&aacute;cia prebehla &uacute;spe&#353;ne';
+$MESSAGE['GENERIC_UPGRADED'] = 'Aktualiz&aacute;cia prebehla &uacute;spe&#353;ne';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Str&aacute;nky sa moment&aacute;lne pripravuj&uacute;';
+$MESSAGE['GROUPS_ADDED'] = 'Skupina bola &uacute;spe&#353;ne pridan&aacute;';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Ste si isti, &#382;e chcete zmaza&#357; t&uacute;to skupimu (a v&#353;etk&yacute;ch jej u&#382;ivatelov)?';
+$MESSAGE['GROUPS_DELETED'] = 'Skupina bola &uacute;spe&#353;ne zmazan&aacute;';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'N&aacute;zov skupiny je pr&aacute;zdny';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Tato skupina u&#382; existuje';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Nen&aacute;jden&aacute; &#382;iadn&aacute; skupina';
+$MESSAGE['GROUPS_SAVED'] = 'Skupina bola &uacute;spe&#353;ne ulo&#382;en&aacute;';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Zadejte svoje heslo';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Zadan&eacute; heslo je pr&iacute;li&#353; dlh&eacute;';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Zadan&eacute; heslo je pr&iacute;li&#353; kr&aacute;tke';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Nezadali ste pr&iacute;ponu s&uacute;boru';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Nezadali ste nov&yacute; n&aacute;zov';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Ned&aacute; sa zmaza&#357; vybran&yacute; adres&aacute;r';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Ned&aacute; sa zmaza&#357; vybran&yacute; soubor';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Premenovanie sa nepodarilo';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Ste si ist&iacute;, &#382;e chcete zmaza&#357; n&aacute;sleduj&uacute;ce s&uacute;bory alebo adres&aacute;re?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Adres&aacute;r bol &uacute;spe&#353;ne zmazan&yacute;';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'S&uacute;bor bol &uacute;spe&#353;ne zmazan&yacute;';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Adres&aacute;r neexistuje';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Nejde pou&#382;i&#357; ../ v n&aacute;zve adres&aacute;ra';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Adres&aacute;r z rovnak&yacute;m n&aacute;zvem u&#382; existuje';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Adres&aacute;r bol &uacute;spe&#353;ne vytvoren&yacute;';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Ned&aacute; sa vytvori&#357; adres&aacute;r';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'S&uacute;bor z rovnak&yacute;m n&aacute;zvom u&#382; existuje';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'S&uacute;bor nen&aacute;jden&yacute;';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Nejde pou&#382;i&#357; ../ v n&aacute;zvu';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nejde pou&#382;i&#357; index.php ako n&aacute;zov';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nen&aacute;jden&yacute; &#382;iadn&yacute; s&uacute;bor';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Premenovanie prebehlo &uacute;spe&#353;ne';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' s&uacute;bor bol &uacute;spe&#353;ne nahran&yacute;';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Nejde pou&#382;i&#357; ../ v cielovom adres&aacute;ry';
+$MESSAGE['MEDIA_UPLOADED'] = ' s&uacute;bory boly &uacute;spe&#353;ne nahr&aacute;n&eacute;';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Ospravedl&#328;ujeme sa, ale tento formul&aacute;r dosiahol limitu povolen&yacute;ch odeslan&iacute; pre t&uacute;to hodinu. Pros&iacute;m sk&uacute;ste to znovu v dal&#353;iej hodine..';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Kontroln&yacute; k&oacute;d (zn&aacute;m&yacute; ako Captcha) nezodpoved&aacute;. Pokia&#318; m&aacute;te probl&eacute;my s pre&#269;&iacute;tan&iacute;m tohoto k&oacute;du, kontaktujte <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Mus&iacute;te vyplni&#357; n&aacute;sleduj&uacute;ce pole';
+$MESSAGE['PAGES_ADDED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne pridan&aacute;';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Z&aacute;hlavie str&aacute;nky bolo &uacute;spe&#353;ne pridan&eacute;';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Zadajte n&aacute;zov v menu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Zadajte n&aacute;zov str&aacute;nky';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Do&#353;lo k chybe pri vytv&aacute;ran&iacute; pr&iacute;stupov&eacute;ho s&uacute;boru v adres&aacute;ri str&aacute;nok (nedostato&#269;n&eacute; opr&aacute;vnenie)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Do&#353;lo k chybe pri maz&aacute;n&iacute; pr&iacute;supov&eacute;ho s&uacute;boru v adres&aacute;ri str&aacute;nek (nedostato&#269;n&eacute; opr&aacute;vnenie)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Do&#353;lo k chybe pri zmene poradia str&aacute;nky';
+$MESSAGE['PAGES_DELETED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne zmazan&aacute;';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Ste si ist&iacute;, &#382;e chcete zmaza&#357; tuto str&aacute;nku (a v&#353;etky podstr&aacute;nky)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Nem&aacute;te opr&aacute;vnenie k zmene tejto str&aacute;nky';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Zmeni&#357; &uacute;vodn&uacute; (intro) str&aacute;nku';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Ned&aacute; sa zapisova&#357; do s&uacute;boru /pages/intro.php (nedostato&#269;n&eacute; opr&aacute;vnenia)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne ulo&#382;en&aacute;';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Posledn&aacute; zmena:';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Str&aacute;nka nen&aacute;jden&aacute;';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Do&#353;lo k chybe pri ukl&aacute;d&aacute;n&iacute; str&aacute;nky';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Str&aacute;nka z rovnak&yacute;m alebo podobn&yacute;m n&aacute;zvom u&#382; existuje';
+$MESSAGE['PAGES_REORDERED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne presunut&aacute;';
+$MESSAGE['PAGES_RESTORED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne obnoven&aacute;';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Sp&auml;&#357; na str&aacute;nky';
+$MESSAGE['PAGES_SAVED'] = 'Str&aacute;nka bola &uacute;spe&#353;ne ulo&#382;ena';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Nastavenie str&aacute;nky bolo &uacute;spe&#353;ne ulo&#382;en&eacute;';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Nastavenia sekcie boli &uacute;spe&#353;ne ulo&#382;en&eacute;';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'S&uacute;&#269;asn&eacute; heslo nezodpoved&aacute;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detaily boly &uacute;spe&#353;ne ulo&#382;en&eacute;';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-mail bol &uacute;spe&#353;ne ulo&#382;en&yacute;';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Heslo bolo &uacute;spe&#353;ne zmenen&eacute;';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Pozn.: stla&#269;en&iacute;m tohto tla&#269;&iacute;tka d&ocirc;jde k zahodeniu neulo&#382;en&yacute;ch zmien';
+$MESSAGE['SETTINGS_SAVED'] = 'Nastavenie bolo &uacute;&#353;spene ulo&#382;en&eacute;';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Nejde otvori s&uacute;bor s konfigurciou';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Nejde zapisova&#357; do s&uacute;boru s konfigur&aacute;ciou';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Pozn.: zapnutie tejto vo&#318;by sa doporu&#269;uje  len v testovacom prostred&iacute;';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Vase prihlasovacie udaje...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Mus&iacute;te zada&#357; e-mailovou adresu';
+$MESSAGE['START_CURRENT_USER'] = 'Ste prihl&aacute;sen&yacute; ako:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Pozor, st&aacute;le existuje in&#353;tala&#269;n&yacute; adres&aacute;r!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Vitajte v administrat&iacute;vnej &#269;asti';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Pozn.: zmena &#353;ablony sa prov&aacute;dza v sekcii Nastavenia';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'U&#382;&iacute;vate&#318; bol &uacute;spe&#353;ne pridan&yacute;';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Pozn.: vypl&#328;te iba hodnoty hore pokia&#318; si prajete zmeni&#357; heslo';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Ste si ist&yacute;, &#382;e chcete vymaza&#357; tohoto u&#382;&iacute;vate&#318;a?';
+$MESSAGE['USERS_DELETED'] = 'U&#382;&iacute;vate&#318; bol &uacute;spe&#353;ne zmazan&yacute;';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Zadan&aacute; e-mailov&aacute; adresa je u&#382; pou&#382;&iacute;van&aacute;';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Zadan&aacute; e-mailov&aacute; adresa je neplatn&aacute;';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'alebola vybran&aacute; skupina';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Zadan&eacute; hesl&aacute; nie s&uacute; zhodn&eacute;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Zadan&eacute; heslo je pr&iacute;li&#353; kr&aacute;tk&eacute;';
+$MESSAGE['USERS_SAVED'] = 'U&#382;&iacute;vate&#318; bol &uacute;spe&#353;ne ulo&#382;en&yacute;';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Administra&#269;n&eacute; n&aacute;stroje...';
+$OVERVIEW['GROUPS'] = 'Spravova&#357; skupiny u&#382;ivatelov a ich opr&aacute;vnen&iacute;...';
+$OVERVIEW['HELP'] = 'M&aacute;te ot&aacute;zku? H&#318;adajte odpove&#271;...';
+$OVERVIEW['LANGUAGES'] = 'Spravova&#357; jazyky...';
+$OVERVIEW['MEDIA'] = 'Spravova&#357; s&uacute;bory v adres&aacute;ri m&eacute;di&iacute;...';
+$OVERVIEW['MODULES'] = 'Spravova&#357; moduly...';
+$OVERVIEW['PAGES'] = 'Spravova&#357; webov&eacute; str&aacute;nky...';
+$OVERVIEW['PREFERENCES'] = 'Zmena nastavenia e-mailovej adresy, hesla, atd... ';
+$OVERVIEW['SETTINGS'] = 'Zmena nastavenia...';
+$OVERVIEW['START'] = 'Administrat&iacute;vny prehlad';
+$OVERVIEW['TEMPLATES'] = 'Zmeni&#357; vzh&#318;ad a chovanie webu pomocou &#353;ablon...';
+$OVERVIEW['USERS'] = 'Spravova&#357; u&#382;ivatelov...';
+$OVERVIEW['VIEW'] = 'R&yacute;chlo prezrie&#357; str&aacute;nky v novom okne...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/SK.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/LV.php
===================================================================
--- tags/2.8.3/wb/languages/LV.php	(nonexistent)
+++ tags/2.8.3/wb/languages/LV.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'LV';
+$language_name = 'Latvie&scaron;u';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Kri&scaron;janis Rijnieks';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Piekluve';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Papildinajumi';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Informacija par kontu';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupas';
+$MENU['HELP'] = 'Palidziba';
+$MENU['LANGUAGES'] = 'Valodas';
+$MENU['LOGIN'] = 'Ielogoties';
+$MENU['LOGOUT'] = 'Izlogoties';
+$MENU['MEDIA'] = 'Mediji';
+$MENU['MODULES'] = 'Moduli';
+$MENU['PAGES'] = 'Lapas';
+$MENU['PREFERENCES'] = 'Preferences';
+$MENU['SETTINGS'] = 'Iestatijumi';
+$MENU['START'] = 'Sakums';
+$MENU['TEMPLATES'] = '&scaron;abloni';
+$MENU['USERS'] = 'Lietotaji';
+$MENU['VIEW'] = 'Apskatit';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registreties';
+$TEXT['ACTIONS'] = 'Darbibas';
+$TEXT['ACTIVE'] = 'Aktivs';
+$TEXT['ADD'] = 'Pievienot';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Pievienot sadalu';
+$TEXT['ADMIN'] = 'Admins';
+$TEXT['ADMINISTRATION'] = 'Administracija';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administracijas riks';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratori';
+$TEXT['ADVANCED'] = 'Papla&scaron;inats';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Atlauti lukotaji';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Atlaut multiiezime&scaron;anu';
+$TEXT['ALL_WORDS'] = 'Visi vardi';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'Anonims';
+$TEXT['ANY_WORDS'] = 'Jebkuri vardi';
+$TEXT['APP_NAME'] = 'Programmas nosaukums';
+$TEXT['ARE_YOU_SURE'] = 'Esi parliecinats?';
+$TEXT['AUTHOR'] = 'Autors';
+$TEXT['BACK'] = 'Atpakal';
+$TEXT['BACKUP'] = 'Duble&scaron;ana';
+$TEXT['BACKUP_ALL_TABLES'] = 'Atjaunot visas tabulas datu baze';
+$TEXT['BACKUP_DATABASE'] = 'Dublet datu bazi';
+$TEXT['BACKUP_MEDIA'] = 'Dublet medijus';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Atjaunot tikai WB raksturigas tabulas';
+$TEXT['BASIC'] = 'Pamata';
+$TEXT['BLOCK'] = 'Bloks';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Atcelt';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Parbaudes kods';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Mainit';
+$TEXT['CHANGES'] = 'Izmainas';
+$TEXT['CHANGE_SETTINGS'] = 'Mainit iestatijumus';
+$TEXT['CHARSET'] = 'Simbolu kopa';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox grupa';
+$TEXT['CLOSE'] = 'Aizvert';
+$TEXT['CODE'] = 'Kods';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Aizvert';
+$TEXT['COMMENT'] = 'Komentars';
+$TEXT['COMMENTING'] = 'Tiek komentets';
+$TEXT['COMMENTS'] = 'Komentari';
+$TEXT['CREATE_FOLDER'] = 'Izveidot mapi';
+$TEXT['CURRENT'] = 'Eso&scaron;ais';
+$TEXT['CURRENT_FOLDER'] = 'Pa&scaron;reizeja mape';
+$TEXT['CURRENT_PAGE'] = 'Pa&scaron;reizeja lapa';
+$TEXT['CURRENT_PASSWORD'] = 'Eso&scaron;a parole';
+$TEXT['CUSTOM'] = 'Savs';
+$TEXT['DATABASE'] = 'Datu baze';
+$TEXT['DATE'] = 'Datums';
+$TEXT['DATE_FORMAT'] = 'Datuma formats';
+$TEXT['DEFAULT'] = 'Noklusetais';
+$TEXT['DEFAULT_CHARSET'] = 'Nokluseta simbolu kopa';
+$TEXT['DEFAULT_TEXT'] = 'Noklusetais teksts';
+$TEXT['DELETE'] = 'Dzest';
+$TEXT['DELETED'] = 'Dzests';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Apraksts';
+$TEXT['DESIGNED_FOR'] = 'Dizainets priek&scaron;';
+$TEXT['DIRECTORIES'] = 'Mapes';
+$TEXT['DIRECTORY_MODE'] = 'Mapju re&#382;ims';
+$TEXT['DISABLED'] = 'Izslegts';
+$TEXT['DISPLAY_NAME'] = 'Vards';
+$TEXT['EMAIL'] = 'E-pasta adrese';
+$TEXT['EMAIL_ADDRESS'] = 'E-pasta adrese';
+$TEXT['EMPTY_TRASH'] = 'Iztuk&scaron;ot musaru';
+$TEXT['ENABLED'] = 'Ieslegts';
+$TEXT['END'] = 'Beigas';
+$TEXT['ERROR'] = 'Keza';
+$TEXT['EXACT_MATCH'] = 'Viens pret vienu';
+$TEXT['EXECUTE'] = 'Izpildit';
+$TEXT['EXPAND'] = 'Atvert';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Lauks';
+$TEXT['FILE'] = 'Datne';
+$TEXT['FILES'] = 'Datnes';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Datnu sistemas atlaujas';
+$TEXT['FILE_MODE'] = 'Datnu re&#382;ims';
+$TEXT['FINISH_PUBLISHING'] = 'Beigt publicet';
+$TEXT['FOLDER'] = 'Mape';
+$TEXT['FOLDERS'] = 'Mapes';
+$TEXT['FOOTER'] = 'Kajene';
+$TEXT['FORGOTTEN_DETAILS'] = 'Kaut ko nevari atcereties?';
+$TEXT['FORGOT_DETAILS'] = 'Aizmirsi detalas?';
+$TEXT['FROM'] = 'No';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Vards';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupa';
+$TEXT['HEADER'] = 'Galvene';
+$TEXT['HEADING'] = 'Virsraksts';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Augstums';
+$TEXT['HIDDEN'] = 'Slepts';
+$TEXT['HIDE'] = 'Slept';
+$TEXT['HIDE_ADVANCED'] = 'Slept papla&scaron;inatas opcijas';
+$TEXT['HOME'] = 'Galvena lapa';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirekcija';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Hosts';
+$TEXT['ICON'] = 'Ikona';
+$TEXT['IMAGE'] = 'Attels';
+$TEXT['INLINE'] = 'Ieslegts';
+$TEXT['INSTALL'] = 'Instalet';
+$TEXT['INSTALLATION'] = 'Instalacija';
+$TEXT['INSTALLATION_PATH'] = 'Cel&scaron; uz instalaciju';
+$TEXT['INSTALLATION_URL'] = 'Instalacijas URL';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Ievads';
+$TEXT['INTRO_PAGE'] = 'Ievada lapa';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Atslegvardi';
+$TEXT['LANGUAGE'] = 'Valoda';
+$TEXT['LAST_UPDATED_BY'] = 'Pedejo reizi mainits';
+$TEXT['LENGTH'] = 'Garums';
+$TEXT['LEVEL'] = 'Limenis';
+$TEXT['LINK'] = 'Links';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Listes opcijas';
+$TEXT['LOGGED_IN'] = 'Ielogojies';
+$TEXT['LOGIN'] = 'Ielogo&scaron;anas';
+$TEXT['LONG'] = 'Gar&scaron;s';
+$TEXT['LONG_TEXT'] = 'Gar&scaron; teksts';
+$TEXT['LOOP'] = 'Cikls';
+$TEXT['MAIN'] = 'Galvenais';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Mened&#382;et';
+$TEXT['MANAGE_GROUPS'] = 'Mened&#382;et grupas';
+$TEXT['MANAGE_USERS'] = 'Mened&#382;et lietotajus';
+$TEXT['MATCH'] = 'Sakritiba';
+$TEXT['MATCHING'] = 'Saskan';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Pieteikumi stunda';
+$TEXT['MEDIA_DIRECTORY'] = 'Mediju mape';
+$TEXT['MENU'] = 'Izvelne';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'Izvelnes nosaukums';
+$TEXT['MESSAGE'] = 'Zina';
+$TEXT['MODIFY'] = 'Mainit';
+$TEXT['MODIFY_CONTENT'] = 'Mainit saturu';
+$TEXT['MODIFY_SETTINGS'] = 'Mainir iestatijumus';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Atlaujas attieciba uz moduliem';
+$TEXT['MORE'] = 'Vel';
+$TEXT['MOVE_DOWN'] = 'Bidit lejup';
+$TEXT['MOVE_UP'] = 'Bidit aug&scaron;up';
+$TEXT['MULTIPLE_MENUS'] = 'Vairakas izvelnes';
+$TEXT['MULTISELECT'] = 'Multiiezime&scaron;ana';
+$TEXT['NAME'] = 'Nosaukums';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Gribi ielogoties?';
+$TEXT['NEW_PASSWORD'] = 'Jauna parole';
+$TEXT['NEW_WINDOW'] = 'Jauns logs';
+$TEXT['NEXT'] = 'Nakamais';
+$TEXT['NEXT_PAGE'] = 'Nakama lapa';
+$TEXT['NO'] = 'Ne';
+$TEXT['NONE'] = 'Tuk&scaron;s';
+$TEXT['NONE_FOUND'] = 'Nekas netika atrasts';
+$TEXT['NOT_FOUND'] = 'Netika atrasts';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Rezultatu nav';
+$TEXT['OF'] = 'No';
+$TEXT['ON'] = 'ieslegts';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Opcija';
+$TEXT['OTHERS'] = 'Citi';
+$TEXT['OUT_OF'] = 'Ara no';
+$TEXT['OVERWRITE_EXISTING'] = 'Parrakstit eso&scaron;as';
+$TEXT['PAGE'] = 'Lapa';
+$TEXT['PAGES_DIRECTORY'] = 'Lapu mape';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Lapas papla&scaron;inajums';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Lapas valodas';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Lapu apak&scaron;limenu limits';
+$TEXT['PAGE_SPACER'] = 'Lapas starplika';
+$TEXT['PAGE_TITLE'] = 'Lapas nosaukums';
+$TEXT['PAGE_TRASH'] = 'Atkritumu tvertne lapam';
+$TEXT['PARENT'] = 'Vecaks';
+$TEXT['PASSWORD'] = 'Parole';
+$TEXT['PATH'] = 'Cel&scaron;';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Kludu zino&scaron;anas limenis';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Izvelies, ludzu';
+$TEXT['POST'] = 'Pievienot';
+$TEXT['POSTS_PER_PAGE'] = 'Puksti lapa';
+$TEXT['POST_FOOTER'] = 'Puksta kajene';
+$TEXT['POST_HEADER'] = 'Puksta galvene';
+$TEXT['PREVIOUS'] = 'Iepriek&scaron;ejais';
+$TEXT['PREVIOUS_PAGE'] = 'Iepriek&scaron;eja lapa';
+$TEXT['PRIVATE'] = 'Privats';
+$TEXT['PRIVATE_VIEWERS'] = 'Iek&scaron;ejie verotaji';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'Publisks';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio pogu grupa';
+$TEXT['READ'] = 'Lasit';
+$TEXT['READ_MORE'] = 'Lasit vel';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrets';
+$TEXT['REGISTERED_VIEWERS'] = 'Registreti lukotaji';
+$TEXT['RELOAD'] = 'Parladet';
+$TEXT['REMEMBER_ME'] = 'Atmineties mani';
+$TEXT['RENAME'] = 'Parsaukt';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Obligats';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Parladet';
+$TEXT['RESIZE'] = 'Mainit izmeru';
+$TEXT['RESIZE_IMAGE_TO'] = 'Mainit attela izmeru uz';
+$TEXT['RESTORE'] = 'Atjaunot';
+$TEXT['RESTORE_DATABASE'] = 'Atjaunot datu bazi';
+$TEXT['RESTORE_MEDIA'] = 'Atjaunot medijus';
+$TEXT['RESULTS'] = 'Rezultati';
+$TEXT['RESULTS_FOOTER'] = 'Rezultatu kajene';
+$TEXT['RESULTS_FOR'] = 'Rezultati';
+$TEXT['RESULTS_HEADER'] = 'Rezultatu galvene';
+$TEXT['RESULTS_LOOP'] = 'Rezultatu cikls';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Parole velreiz';
+$TEXT['RETYPE_PASSWORD'] = 'Parole velreiz';
+$TEXT['SAME_WINDOW'] = 'Tas pats logs';
+$TEXT['SAVE'] = 'Saglabat';
+$TEXT['SEARCH'] = 'Meklet';
+$TEXT['SEARCHING'] = 'Tiek meklets';
+$TEXT['SECTION'] = 'Sadala';
+$TEXT['SECTION_BLOCKS'] = 'Sadalu bloki';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Select kaste (Select Box)';
+$TEXT['SEND_DETAILS'] = 'Sutit konta datus';
+$TEXT['SEPARATE'] = 'Atsevi&scaron;ki';
+$TEXT['SEPERATOR'] = 'Atdalitajs';
+$TEXT['SERVER_EMAIL'] = 'Servera e-pasta adrese';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Servera Operetajsistema';
+$TEXT['SESSION_IDENTIFIER'] = 'Sesijas identifikators';
+$TEXT['SETTINGS'] = 'Iestatijumi';
+$TEXT['SHORT'] = 'Iss';
+$TEXT['SHORT_TEXT'] = 'Iss teksts';
+$TEXT['SHOW'] = 'Radit';
+$TEXT['SHOW_ADVANCED'] = 'Radit papla&scaron;inatas opcijas';
+$TEXT['SIGNUP'] = 'Registracija';
+$TEXT['SIZE'] = 'Izmers';
+$TEXT['SMART_LOGIN'] = 'Atjautiga ielogo&scaron;anas';
+$TEXT['START'] = 'Sakums';
+$TEXT['START_PUBLISHING'] = 'Sakt publicet';
+$TEXT['SUBJECT'] = 'Nosaukums';
+$TEXT['SUBMISSIONS'] = 'Pieteikumi';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Pieteikumi tiek glabati datu baze';
+$TEXT['SUBMISSION_ID'] = 'Pieteikuma ID';
+$TEXT['SUBMITTED'] = 'Pieteikts';
+$TEXT['SUCCESS'] = 'Kartibnieks';
+$TEXT['SYSTEM_DEFAULT'] = 'Sistemas noklusetais';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Atlaujas attieciba uz sistemu';
+$TEXT['TABLE_PREFIX'] = 'Tabulas prefikss';
+$TEXT['TARGET'] = 'Merkis';
+$TEXT['TARGET_FOLDER'] = 'Merkmape';
+$TEXT['TEMPLATE'] = '&scaron;ablons';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Atlaujas attieciba uz &scaron;abloniem';
+$TEXT['TEXT'] = 'Teksts';
+$TEXT['TEXTAREA'] = 'Teksta lauks (Textarea)';
+$TEXT['TEXTFIELD'] = 'Teksta laucin&scaron; (Textfield)';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Laiks';
+$TEXT['TIMEZONE'] = 'Laika zona';
+$TEXT['TIME_FORMAT'] = 'Laika formats';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'Nosaukums';
+$TEXT['TO'] = 'Uz';
+$TEXT['TOP_FRAME'] = 'Freims vienu limeni augstak';
+$TEXT['TRASH_EMPTIED'] = 'Miskaste tira';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tips';
+$TEXT['UNDER_CONSTRUCTION'] = 'Lapa vel nav gatava';
+$TEXT['UNINSTALL'] = 'Atinstalet';
+$TEXT['UNKNOWN'] = 'Nezinams';
+$TEXT['UNLIMITED'] = 'Neierobe&#382;ots';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Uz aug&scaron;u';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Aug&scaron;upieladet failus';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Lietotajs';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Parbaude';
+$TEXT['VERSION'] = 'Versija';
+$TEXT['VIEW'] = 'Radit';
+$TEXT['VIEW_DELETED_PAGES'] = 'Radit izdzestas lapas';
+$TEXT['VIEW_DETAILS'] = 'Radit detalas';
+$TEXT['VISIBILITY'] = 'Redzamiba';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Timekla vietne';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Tikla vietnes apraksts';
+$TEXT['WEBSITE_FOOTER'] = 'Tikla vietnes kajene';
+$TEXT['WEBSITE_HEADER'] = 'Tikla vietnes galvene';
+$TEXT['WEBSITE_KEYWORDS'] = 'Tikla vietnes atslegvardi';
+$TEXT['WEBSITE_TITLE'] = 'Tikla vietnes nosaukums';
+$TEXT['WELCOME_BACK'] = 'Ar atgrie&scaron;anos';
+$TEXT['WIDTH'] = 'Platums';
+$TEXT['WINDOW'] = 'Logs';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Datnu permicijas iespejams mainit visiem, kam tas ienak prata';
+$TEXT['WRITE'] = 'Rakstit';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG redaktors';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG stils';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Pievienot grupu';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Pievienot virsrakstu';
+$HEADING['ADD_PAGE'] = 'Pievienot lapu';
+$HEADING['ADD_USER'] = 'Pievienot lietotaju';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administre&scaron;anas riki';
+$HEADING['BROWSE_MEDIA'] = 'Parlukot medijus';
+$HEADING['CREATE_FOLDER'] = 'Izveidot mapi';
+$HEADING['DEFAULT_SETTINGS'] = 'Noklusetie iestatijumi';
+$HEADING['DELETED_PAGES'] = 'Izdzestas lapas';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Datnu sistemas iestatijumi';
+$HEADING['GENERAL_SETTINGS'] = 'Visparigie iestatijumi';
+$HEADING['INSTALL_LANGUAGE'] = 'Instalet valodu';
+$HEADING['INSTALL_MODULE'] = 'Instalet moduli';
+$HEADING['INSTALL_TEMPLATE'] = 'Instalet &scaron;ablonu';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Informacija par valodu';
+$HEADING['MANAGE_SECTIONS'] = 'Mened&#382;et sadalas';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Mainit papla&scaron;inatos lapas iestatijumus';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Mainit/dzest grupu';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Mainit/Izdzest lapu';
+$HEADING['MODIFY_DELETE_USER'] = 'Mainit/dzest lietotaju';
+$HEADING['MODIFY_GROUP'] = 'Mainit grupu';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Mainit pirmo lapu';
+$HEADING['MODIFY_PAGE'] = 'Mainit lapu';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Mainit lapas iestatijumus';
+$HEADING['MODIFY_USER'] = 'Mainit lietotaju';
+$HEADING['MODULE_DETAILS'] = 'Informacija par moduli';
+$HEADING['MY_EMAIL'] = 'Mana e-pasta adrese';
+$HEADING['MY_PASSWORD'] = 'Mana parole';
+$HEADING['MY_SETTINGS'] = 'Mani iestatijumi';
+$HEADING['SEARCH_SETTINGS'] = 'Mekle&scaron;anas iestatijumi';
+$HEADING['SERVER_SETTINGS'] = 'Servera iestatijumi';
+$HEADING['TEMPLATE_DETAILS'] = 'Informacija par &scaron;ablonu';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Atinstalet valodu';
+$HEADING['UNINSTALL_MODULE'] = 'Atinstalet moduli';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Atinstalet &scaron;ablonu';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Aug&scaron;upieladet datni(-es)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Nepietiekams atlauju limenis';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Paroli nav iespejams atkalatjaunot bie&#382;ak ka reizi stunda';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Lietotajvardu un paroli pa e-pastu nebija iespejams nosutit, ludzu sakontakte sistemas administratoru';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Ievadito e-pasta adresi nebija iespejams atrast datu baze';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Ludzu ievadi savu e-pasta adresi zemak redzamaja lauka';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Piedod, bet Tev nav tiesibu aplukot &scaron;o lapu';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Jau uzinstalets';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Nav iespejams ierakstit noraditaja mape';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Nav iespejams atinstalet';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Nav iespejams atinstalet: iezimetais fails tiek lietots';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Datni nav iespejams atzipot';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Nebija iespejams aug&scaron;upieladet datni';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Keza atverot datni';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Ludzu iegaume, ka datnei, ko gribi aug&scaron;upieladet jabut &scaron;aja formata:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Ludzu iegaume, ka failam, ko gribi aug&scaron;upieladet jabu viena no &scaron;iem formatiem:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Ludzu atgriezies un aizpildi visus laukus';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Uzinstalets veiksmigi';
+$MESSAGE['GENERIC_INVALID'] = 'Datne, ko nupat aug&scaron;upieladeji, ir invalids';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Nav instalets';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Esi paceitigs, tas var kadu bridi ievilkties.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Nac driz atkal!';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Atinstalets veiksmigi';
+$MESSAGE['GENERIC_UPGRADED'] = 'Apgreidots veiksmigi';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Lapa tiek veidota';
+$MESSAGE['GROUPS_ADDED'] = 'Grupa veiksmigi pievienota';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Vai patie&scaron;am gribi izdzest iezimeto grupu (un visus lietotajus taja)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupa veiksmigi izdzesta';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Grupas nosaukums ir tuk&scaron;s';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = '&scaron;ads grupas nosaukums jau ir';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Netika atrasta neviena grupa';
+$MESSAGE['GROUPS_SAVED'] = 'Grupa veiksmigi saglabata';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Ludzu ievadi paroli';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Ievadita parole par garu';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Ievadita parole par isu';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Netika ievadits datnes papla&scaron;inajums';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Netika ievadits jauns nosaukums';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Nav iespejams izdzest iezimeto mapi';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Nav iespejams izdzest iezimeto datni';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Parsauk&scaron;ana neveiksmiga';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Vai esi parliecinats, ka gribi izdzest &scaron;o datni vai mapi?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Mape izdzesta veikmigi';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Datne veiksmigi izdzesta';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Mape neeksiste';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Nevar ieklaut ../ mapes nosaukuma';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Mape ar &scaron;adu naosaukumu jau eksiste';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Mape veiksmigi izveidota';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Nav iespejams izveidot mapi';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Datne ar &scaron;adu nosaukumu jau eksiste';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Datne netika atrasta';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Nav iespejams ieklaut ../ nosaukuma';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Nedrikst lietot index.php ka nosaukumu';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Mape netika atrasts neviena mediju datne';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Parsauk&scaron;ana veiksmiga';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' datne veiksmigi aug&scaron;upieladeta';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Nav iespejams ieklaut ../ mapes merki (target)';
+$MESSAGE['MEDIA_UPLOADED'] = ' datnes tika veiksmigi aug&scaron;upieladetas';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Atvaino, &scaron;i forma ir tikusi aizpildita parak daudz rei&#382;u &scaron;is stundas laika. Ludzu pamegini velreiz pec stundas.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Ievaditais parbaudes numurs ir nepareizs. Ja radu&scaron;as problemas ar parbaudes koda nolasi&scaron;anu, suti zinu uz: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Ievadi detalas sekojo&scaron;ajos laukos';
+$MESSAGE['PAGES_ADDED'] = 'Lapa veiksmigi pievienota';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Lapas virsraksts pievienots veiksmigi';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Ludzu ievadiet izvelnes nosaukumu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Ludzu ievadiet lapas nosaukumu';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Keza radot piekluves datni /pages mape (nepietiekamas privilegijas)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Keza dze&scaron;ot piekluves datni /pages mape';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Keza parkartojot lapu';
+$MESSAGE['PAGES_DELETED'] = 'Lapa veiksmigi izdzesta';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Vai esi parliecinats, ka velies izdzest iezimeto lapu (un visas tas apak&scaron;lapas)?';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Tev nav atlaujas &scaron;o lapu mainit';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Klik&scaron;kini &scaron;eit, lai veiktu izmainas ievada lapa';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Nav iespejams ierakstit datne /pages/intro.php (nepietiekamas privilegijas)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Ievada lapa saglabata veiksmigi';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Pedejas izmainas veicis';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Lapa netika atrasta';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Keza saglabajot lapue';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Lapa ar tadu pa&scaron;u vai lidzigu virsrakstu jau eksiste';
+$MESSAGE['PAGES_REORDERED'] = 'Lapa veiksmigi parkartota';
+$MESSAGE['PAGES_RESTORED'] = 'Lapa atjaunota veiksmigi';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Atgriezties pie lapam';
+$MESSAGE['PAGES_SAVED'] = 'Lapa saglabata veiksmigi';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Lapas iestatijumi saglabati veiksmigi';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Sadalas parametri veiksmigi saglabati';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Ievadita (eso&scaron;a) parole nav pareiza';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detalas tika veiksmigi noglabatas';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'E-pasta adrese tika veiksmigi atjauninata';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Parole veiksmigi nomainita';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Ludzu iegaume: spie&#382;ot &scaron;o pogu, visas nesaglabatas izmainas tiks neatgriezeniski dzestas';
+$MESSAGE['SETTINGS_SAVED'] = 'Iestatijumi tika veiksmigi noglabati';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Nebija iespejams atvert konfiguracijas datni';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Nebija iespejams ierakstit konfiguracijas datne';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Ludzu iegaume: &scaron;is te ir ieteicams vienigi teste&scaron;anas re&#382;ima';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Jaievada e-pasta adrese';
+$MESSAGE['START_CURRENT_USER'] = 'Tu &scaron;obrid esi ielogojies ka:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Bridinajums, instalacijas mape vel arvien eksiste!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Esi sveicinats WebsiteBaker administracija';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Ludzu iegaume: lai mainitu &scaron;ablonu, jadotas uz iestatijumu sadalu';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Lietotajs veiksmigi pievienots';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Ludzu iegaume: Vertibas jaievada augstak redzamajos laukos, ja gribas nomainit &scaron;i lietotaja paroli';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Vai patie&scaron;am gribi izdzest iezimeto lietotaju?';
+$MESSAGE['USERS_DELETED'] = 'Lietotajs veiksmigi izdzests';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'ievadita e-pasta adrese jau tiek &scaron;eit lietota';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Ievadita e-pasta adrese nav pareiza';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Netika iezimeta neviena grupa';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'Ievaditas paroles nesakrit';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Ievadita parole bija par isu';
+$MESSAGE['USERS_SAVED'] = 'Lietotajs veiksmigi saglabats';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Mened&#382;et lietotaju grupas un noteikt to atlaujas...';
+$OVERVIEW['HELP'] = 'Jautajumi? Atrodi atbildi...';
+$OVERVIEW['LANGUAGES'] = 'Mened&#382;et WebsiteBaker valodas...';
+$OVERVIEW['MEDIA'] = 'Mened&#382;et failus iek&scaron; media mapes...';
+$OVERVIEW['MODULES'] = 'Mened&#382;et WebsiteBaker modulus...';
+$OVERVIEW['PAGES'] = 'Mened&#382;et lapas...';
+$OVERVIEW['PREFERENCES'] = 'Mainit preferences - e-pasta adresi, paroli, utt...';
+$OVERVIEW['SETTINGS'] = 'Mainit WebsiteBaker iestatijumus...';
+$OVERVIEW['START'] = 'Administracijas parskats';
+$OVERVIEW['TEMPLATES'] = 'Mened&#382;et &scaron;ablonus...';
+$OVERVIEW['USERS'] = 'Mened&#382;et lietotajus, kas var ielogties WebsiteBaker sistema...';
+$OVERVIEW['VIEW'] = 'Apskatit majas lapu jauna loga...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/LV.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/CA.php
===================================================================
--- tags/2.8.3/wb/languages/CA.php	(nonexistent)
+++ tags/2.8.3/wb/languages/CA.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'CA';
+$language_name = 'Catalan';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Carles Escrig (simkin)';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Acc&eacute;s';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Afegits';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Demanar Dades del Compte';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grups';
+$MENU['HELP'] = 'Ajuda';
+$MENU['LANGUAGES'] = 'Idiomes';
+$MENU['LOGIN'] = 'Entrar';
+$MENU['LOGOUT'] = 'Eixir';
+$MENU['MEDIA'] = 'Fitxers';
+$MENU['MODULES'] = 'M&ograve;duls';
+$MENU['PAGES'] = 'P&agrave;gines';
+$MENU['PREFERENCES'] = 'Perfil';
+$MENU['SETTINGS'] = 'Par&agrave;metres';
+$MENU['START'] = 'Inici';
+$MENU['TEMPLATES'] = 'Plantilles';
+$MENU['USERS'] = 'Usuaris';
+$MENU['VIEW'] = 'Veure';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Registre de Compte';
+$TEXT['ACTIONS'] = 'Accions';
+$TEXT['ACTIVE'] = 'Actiu';
+$TEXT['ADD'] = 'Afegeix';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Afegeix Secci&oacute;';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administraci&oacute;';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administration tool';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administradors';
+$TEXT['ADVANCED'] = 'Avan&ccedil;at';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Permetre Diverses Seleccions';
+$TEXT['ALL_WORDS'] = 'Totes les Paraules';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'An&ograve;nim';
+$TEXT['ANY_WORDS'] = 'Qualsevol Paraula';
+$TEXT['APP_NAME'] = 'Application Name';
+$TEXT['ARE_YOU_SURE'] = 'Esteu segur?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Arrere';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup all tables in database';
+$TEXT['BACKUP_DATABASE'] = 'Backup Database';
+$TEXT['BACKUP_MEDIA'] = 'Backup Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup only WB-specific tables';
+$TEXT['BASIC'] = 'B&agrave;sic';
+$TEXT['BLOCK'] = 'Bloc';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Cancel&middot;la';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha Verification';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Canvia';
+$TEXT['CHANGES'] = 'Canvis';
+$TEXT['CHANGE_SETTINGS'] = 'Canvia Par&agrave;metres';
+$TEXT['CHARSET'] = 'Charset';
+$TEXT['CHECKBOX_GROUP'] = 'Grup de quadres de verificaci&oacute;';
+$TEXT['CLOSE'] = 'Tanca';
+$TEXT['CODE'] = 'Codi';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Contrau';
+$TEXT['COMMENT'] = 'Comentari';
+$TEXT['COMMENTING'] = 'Comentaris';
+$TEXT['COMMENTS'] = 'Comentaris';
+$TEXT['CREATE_FOLDER'] = 'Crea Carpeta';
+$TEXT['CURRENT'] = 'Actual';
+$TEXT['CURRENT_FOLDER'] = 'Carpeta Actual';
+$TEXT['CURRENT_PAGE'] = 'P&agrave;gina Actual';
+$TEXT['CURRENT_PASSWORD'] = 'Contrasenya Actual';
+$TEXT['CUSTOM'] = 'Personalitzat';
+$TEXT['DATABASE'] = 'Base de Dades';
+$TEXT['DATE'] = 'Data';
+$TEXT['DATE_FORMAT'] = 'Format de Data';
+$TEXT['DEFAULT'] = 'Per defecte';
+$TEXT['DEFAULT_CHARSET'] = 'Default Charset';
+$TEXT['DEFAULT_TEXT'] = 'Text per defecte';
+$TEXT['DELETE'] = 'Esborra';
+$TEXT['DELETED'] = 'Esborrat';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Descripci&oacute;';
+$TEXT['DESIGNED_FOR'] = 'Dissenyat Per';
+$TEXT['DIRECTORIES'] = 'Directoris';
+$TEXT['DIRECTORY_MODE'] = 'Mode Directori';
+$TEXT['DISABLED'] = 'Inhabilitat';
+$TEXT['DISPLAY_NAME'] = 'Nom a Mostrar';
+$TEXT['EMAIL'] = 'Correu';
+$TEXT['EMAIL_ADDRESS'] = 'Adre&ccedil;a de Correu';
+$TEXT['EMPTY_TRASH'] = 'Buida la Paperera';
+$TEXT['ENABLED'] = 'Habilitat';
+$TEXT['END'] = 'Fi';
+$TEXT['ERROR'] = 'Error';
+$TEXT['EXACT_MATCH'] = 'Coincid&egrave;ncia Exacta';
+$TEXT['EXECUTE'] = 'Execuci&oacute;';
+$TEXT['EXPAND'] = 'Expandeix';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Camp';
+$TEXT['FILE'] = 'fitxer';
+$TEXT['FILES'] = 'fitxers';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Permisos del Sistema de Fitxers';
+$TEXT['FILE_MODE'] = 'Mode Fitxer';
+$TEXT['FINISH_PUBLISHING'] = 'Fi de Publicaci&oacute;';
+$TEXT['FOLDER'] = 'carpeta';
+$TEXT['FOLDERS'] = 'carpetes';
+$TEXT['FOOTER'] = 'Peu';
+$TEXT['FORGOTTEN_DETAILS'] = 'Heu oblidat la contrasenya?';
+$TEXT['FORGOT_DETAILS'] = 'Heu oblidat els Detalls?';
+$TEXT['FROM'] = 'des de';
+$TEXT['FRONTEND'] = 'Frontal';
+$TEXT['FULL_NAME'] = 'Nom Complet';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grup';
+$TEXT['HEADER'] = 'Cap&ccedil;alera';
+$TEXT['HEADING'] = 'Encap&ccedil;alament';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Al&ccedil;ada';
+$TEXT['HIDDEN'] = 'Amagat';
+$TEXT['HIDE'] = 'Amaga';
+$TEXT['HIDE_ADVANCED'] = 'Oculta Opcions Avan&ccedil;ades';
+$TEXT['HOME'] = 'Inici';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirecci&oacute; de P&agrave;gina Inicial';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Servidor';
+$TEXT['ICON'] = 'Icona';
+$TEXT['IMAGE'] = 'Imatge';
+$TEXT['INLINE'] = 'Inserida';
+$TEXT['INSTALL'] = 'Instal&middot;la';
+$TEXT['INSTALLATION'] = 'Instal&middot;laci&oacute;';
+$TEXT['INSTALLATION_PATH'] = 'Ruta d\'Instal&middot;laci&oacute;';
+$TEXT['INSTALLATION_URL'] = 'URL d\'Instal&middot;laci&oacute;';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Entrada';
+$TEXT['INTRO_PAGE'] = 'P&agrave;gina d\'Entrada';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Paraules Clau';
+$TEXT['LANGUAGE'] = 'Idioma';
+$TEXT['LAST_UPDATED_BY'] = '&Uacute;ltima Actualitzaci&oacute; Per';
+$TEXT['LENGTH'] = 'Longitud';
+$TEXT['LEVEL'] = 'Nivell';
+$TEXT['LINK'] = 'Enlla&ccedil;';
+$TEXT['LINUX_UNIX_BASED'] = 'Basat en Linux/Unix';
+$TEXT['LIST_OPTIONS'] = 'Llista Opcions';
+$TEXT['LOGGED_IN'] = 'Identificat';
+$TEXT['LOGIN'] = 'Identificaci&oacute;';
+$TEXT['LONG'] = 'Llarg';
+$TEXT['LONG_TEXT'] = 'Text Llarg';
+$TEXT['LOOP'] = 'Repetici&oacute;';
+$TEXT['MAIN'] = 'Principal';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Administreu';
+$TEXT['MANAGE_GROUPS'] = 'Administra els Grups';
+$TEXT['MANAGE_USERS'] = 'Administra els Usuaris';
+$TEXT['MATCH'] = 'Coincidir';
+$TEXT['MATCHING'] = 'Matching';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Trameses M&agrave;x. Per Hora';
+$TEXT['MEDIA_DIRECTORY'] = 'Directori de Fitxers';
+$TEXT['MENU'] = 'Men&uacute;';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'T&iacute;tol del Men&uacute;';
+$TEXT['MESSAGE'] = 'Missatge';
+$TEXT['MODIFY'] = 'Modifica';
+$TEXT['MODIFY_CONTENT'] = 'Modifica Contingut';
+$TEXT['MODIFY_SETTINGS'] = 'Modifica Par&agrave;metres';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Permisos de M&ograve;dul';
+$TEXT['MORE'] = 'M&eacute;s';
+$TEXT['MOVE_DOWN'] = 'Mou Avall';
+$TEXT['MOVE_UP'] = 'Mou Amunt';
+$TEXT['MULTIPLE_MENUS'] = 'Diversos Men&uacute;s';
+$TEXT['MULTISELECT'] = 'Multi-selecci&oacute;';
+$TEXT['NAME'] = 'Nom';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Voleu identificar-vos?';
+$TEXT['NEW_PASSWORD'] = 'Nova Contrasenya';
+$TEXT['NEW_WINDOW'] = 'Nova Finestra';
+$TEXT['NEXT'] = 'Seg&uuml;ent';
+$TEXT['NEXT_PAGE'] = 'P&agrave;gina Seg&uuml;ent';
+$TEXT['NO'] = 'No';
+$TEXT['NONE'] = 'Cap';
+$TEXT['NONE_FOUND'] = 'No s\'ha trobat cap';
+$TEXT['NOT_FOUND'] = 'No Trobat';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Cap Resultat';
+$TEXT['OF'] = 'De';
+$TEXT['ON'] = 'A';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Opci&oacute;';
+$TEXT['OTHERS'] = 'Altres';
+$TEXT['OUT_OF'] = 'Fora De';
+$TEXT['OVERWRITE_EXISTING'] = 'Sobreescriure';
+$TEXT['PAGE'] = 'P&agrave;gina';
+$TEXT['PAGES_DIRECTORY'] = 'Directori de P&agrave;gines';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Extensi&oacute; de P&agrave;gina';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Idiomes de la p&agrave;gina';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'L&iacute;mit de Nivell de P&agrave;gina';
+$TEXT['PAGE_SPACER'] = 'Separador de P&agrave;gina';
+$TEXT['PAGE_TITLE'] = 'T&iacute;tol de la P&agrave;gina';
+$TEXT['PAGE_TRASH'] = 'Paperera';
+$TEXT['PARENT'] = 'Mare';
+$TEXT['PASSWORD'] = 'Contrasenya';
+$TEXT['PATH'] = 'Ruta';
+$TEXT['PHP_ERROR_LEVEL'] = 'Nivell d\'Informe d\'Error de PHP';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Per favor trieu';
+$TEXT['POST'] = 'Missatge';
+$TEXT['POSTS_PER_PAGE'] = 'Posts Per Page';
+$TEXT['POST_FOOTER'] = 'Post Footer';
+$TEXT['POST_HEADER'] = 'Post Header';
+$TEXT['PREVIOUS'] = 'Anterior';
+$TEXT['PREVIOUS_PAGE'] = 'P&agrave;gina Anterior';
+$TEXT['PRIVATE'] = 'Privat';
+$TEXT['PRIVATE_VIEWERS'] = 'Visualitzadors Privats';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'P&uacute;blic';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Grup de Botons';
+$TEXT['READ'] = 'Lectura';
+$TEXT['READ_MORE'] = 'Llegir M&eacute;s';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrat';
+$TEXT['REGISTERED_VIEWERS'] = 'Visualitzadors Registrats';
+$TEXT['RELOAD'] = 'Recarrega';
+$TEXT['REMEMBER_ME'] = 'Recorda les meues dades';
+$TEXT['RENAME'] = 'Reanomena';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Requerit';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Reinicia';
+$TEXT['RESIZE'] = 'Redimensiona';
+$TEXT['RESIZE_IMAGE_TO'] = 'Redimensiona Imatge A';
+$TEXT['RESTORE'] = 'Restore';
+$TEXT['RESTORE_DATABASE'] = 'Restore Database';
+$TEXT['RESTORE_MEDIA'] = 'Restore Media';
+$TEXT['RESULTS'] = 'Resultats';
+$TEXT['RESULTS_FOOTER'] = 'Peu de Resultats';
+$TEXT['RESULTS_FOR'] = 'Resultats De';
+$TEXT['RESULTS_HEADER'] = 'Cap&ccedil;alera de Resultats';
+$TEXT['RESULTS_LOOP'] = 'Bucle de Resultats';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Nova Contrasenya (de nou)';
+$TEXT['RETYPE_PASSWORD'] = 'Contrasenya (de nou)';
+$TEXT['SAME_WINDOW'] = 'La Mateixa Finestra';
+$TEXT['SAVE'] = 'Desa';
+$TEXT['SEARCH'] = 'Cerca';
+$TEXT['SEARCHING'] = 'Recerca';
+$TEXT['SECTION'] = 'Secci&oacute;';
+$TEXT['SECTION_BLOCKS'] = 'Blocs de la Secci&oacute;';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Quadre de Selecci&oacute;';
+$TEXT['SEND_DETAILS'] = 'Envia les Dades';
+$TEXT['SEPARATE'] = 'Separada';
+$TEXT['SEPERATOR'] = 'Separador';
+$TEXT['SERVER_EMAIL'] = 'Correu del Servidor';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Sistema Operatiu del Servidor';
+$TEXT['SESSION_IDENTIFIER'] = 'Session Identifier';
+$TEXT['SETTINGS'] = 'Par&agrave;metres';
+$TEXT['SHORT'] = 'Curt';
+$TEXT['SHORT_TEXT'] = 'Text Curt';
+$TEXT['SHOW'] = 'Mostra';
+$TEXT['SHOW_ADVANCED'] = 'Mostra Opcions Avan&ccedil;ades';
+$TEXT['SIGNUP'] = 'Registre';
+$TEXT['SIZE'] = 'Mida';
+$TEXT['SMART_LOGIN'] = 'Identificaci&oacute; R&agrave;pida';
+$TEXT['START'] = 'Inici';
+$TEXT['START_PUBLISHING'] = 'Inici de Publicaci&oacute;';
+$TEXT['SUBJECT'] = 'Assumpte';
+$TEXT['SUBMISSIONS'] = 'Trameses';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Trameses Emmagatzemades a la Base de Dades';
+$TEXT['SUBMISSION_ID'] = 'ID de Tramesa';
+$TEXT['SUBMITTED'] = 'Tram&eacute;s';
+$TEXT['SUCCESS'] = '&Egrave;xit';
+$TEXT['SYSTEM_DEFAULT'] = 'Per Defecte del Sistema';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Permisos de Sistema';
+$TEXT['TABLE_PREFIX'] = 'Prefix de Taula';
+$TEXT['TARGET'] = 'Dest&iacute;';
+$TEXT['TARGET_FOLDER'] = 'Carpeta de dest&iacute;';
+$TEXT['TEMPLATE'] = 'Plantilla';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Permisos de Plantilla';
+$TEXT['TEXT'] = 'Text';
+$TEXT['TEXTAREA'] = '&Agrave;rea de text';
+$TEXT['TEXTFIELD'] = 'Camp de text';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Temps';
+$TEXT['TIMEZONE'] = 'Fus Horari';
+$TEXT['TIME_FORMAT'] = 'Format de Temps';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'T&iacute;tol';
+$TEXT['TO'] = 'a';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = 'Paperera Buidada';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tipus';
+$TEXT['UNDER_CONSTRUCTION'] = 'En Construcci&oacute;';
+$TEXT['UNINSTALL'] = 'Desinstal&middot;la';
+$TEXT['UNKNOWN'] = 'Desconegut';
+$TEXT['UNLIMITED'] = 'Il&middot;limitat';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Amunt';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Penja Fitxer(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Usuari';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verification';
+$TEXT['VERSION'] = 'Versi&oacute;';
+$TEXT['VIEW'] = 'Veure';
+$TEXT['VIEW_DELETED_PAGES'] = 'Mostra P&agrave;gines Esborrades';
+$TEXT['VIEW_DETAILS'] = 'Veure Detalls';
+$TEXT['VISIBILITY'] = 'Visibilitat';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'P&agrave;gina Web';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Descripci&oacute; del Lloc Web';
+$TEXT['WEBSITE_FOOTER'] = 'Peu del Lloc Web';
+$TEXT['WEBSITE_HEADER'] = 'Cap&ccedil;alera del Lloc Web';
+$TEXT['WEBSITE_KEYWORDS'] = 'Paraules clau del Lloc Web';
+$TEXT['WEBSITE_TITLE'] = 'T&iacute;tol del Lloc Web';
+$TEXT['WELCOME_BACK'] = 'Benvingut de nou';
+$TEXT['WIDTH'] = 'Amplada';
+$TEXT['WINDOW'] = 'Finestra';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Permisos d\'escriptura de fitxer per a tothom';
+$TEXT['WRITE'] = 'Escriptura';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'Estil WYSIWYG';
+$TEXT['YES'] = 'S&iacute;';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Afegeix Grup';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Afegeix Encap&ccedil;alament';
+$HEADING['ADD_PAGE'] = 'Afegeix P&agrave;gina';
+$HEADING['ADD_USER'] = 'Afegeix Usuari';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administration Tools';
+$HEADING['BROWSE_MEDIA'] = 'Explorar Fitxers';
+$HEADING['CREATE_FOLDER'] = 'Crea Carpeta';
+$HEADING['DEFAULT_SETTINGS'] = 'Par&agrave;metres per Defecte';
+$HEADING['DELETED_PAGES'] = 'P&agrave;gines Esborrades';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Par&agrave;metres del Sistema de Fitxers';
+$HEADING['GENERAL_SETTINGS'] = 'Par&agrave;metres Generals';
+$HEADING['INSTALL_LANGUAGE'] = 'Instal&middot;la Idioma';
+$HEADING['INSTALL_MODULE'] = 'Instal&middot;la M&ograve;dul';
+$HEADING['INSTALL_TEMPLATE'] = 'Instal&middot;la Plantilla';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detalls de l\'Idioma';
+$HEADING['MANAGE_SECTIONS'] = 'Administra les Seccions';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modifica els Par&agrave;metres Avan&ccedil;ats de la P&agrave;gina';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modifica/Esborra Grup';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modifica/Esborra P&agrave;gina';
+$HEADING['MODIFY_DELETE_USER'] = 'Modifica/Esborra Usuari';
+$HEADING['MODIFY_GROUP'] = 'Modifica Grup';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modifica P&agrave;gina Introduct&ograve;ria';
+$HEADING['MODIFY_PAGE'] = 'Modifica P&agrave;gina';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modifica els Par&agrave;metres de la P&agrave;gina';
+$HEADING['MODIFY_USER'] = 'Modifica Usuari';
+$HEADING['MODULE_DETAILS'] = 'Detalls del M&ograve;dul';
+$HEADING['MY_EMAIL'] = 'El meu Correu';
+$HEADING['MY_PASSWORD'] = 'La meua Contrasenya';
+$HEADING['MY_SETTINGS'] = 'Els meus Par&agrave;metres';
+$HEADING['SEARCH_SETTINGS'] = 'Par&agrave;metres de Cerca';
+$HEADING['SERVER_SETTINGS'] = 'Server Settings';
+$HEADING['TEMPLATE_DETAILS'] = 'Detalls de la Plantilla';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Desinstal&middot;la Idioma';
+$HEADING['UNINSTALL_MODULE'] = 'Desinstal&middot;la M&ograve;dul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Desinstal&middot;la Plantilla';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Penja Fitxer(s)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'No teniu privilegis suficients per estar ac&iacute;';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'La contrasenya no es pot reiniciar m&eacute;s d\'un cop per hora, disculpeu';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'No ha estat possible enviar la contrasenya, per favor contacteu amb l\'administrador del sistema';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'El correu que heu introdu&iuml;t no s\'ha trobat a la base de dades';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Per favor introdu&iuml;u la vostra adre&ccedil;a de correu a baix';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Ho sentim, no teniu permisos per a veure aquesta p&agrave;gina';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Ja est&agrave; instal&middot;lat';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'No s\'ha pogut escriure al directori de dest&iacute;';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'No s\'ha pogut desinstal&middot;lar';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'No s\'ha pogut desinstal&middot;lar: s\'est&agrave; usant el fitxer seleccionat';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'No s\'ha pogut descomprimir el fitxer';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'No s\'ha pogut penjar el fitxer';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Error opening file.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'Per favor recordeu que el fitxer que pengeu ha d\'estar en un dels seg&uuml;ents formats:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'Per favor recordeu que els fitxers que pengeu han d\'estar en un dels seg&uuml;ents formats:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Per favor torneu arrere i completeu tots els camps';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Instal&middot;lat amb &egrave;xit';
+$MESSAGE['GENERIC_INVALID'] = 'El fitxer que heu penjat no &eacute;s v&agrave;lid';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'No est&agrave; instal&middot;lat';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Please be patient, this might take a while.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Per favor torneu-ho a intentar prompte...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Desinstal&middot;lat amb &egrave;xit';
+$MESSAGE['GENERIC_UPGRADED'] = 'Upgraded successfully';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Lloc Web en Construcci&oacute;';
+$MESSAGE['GROUPS_ADDED'] = 'Grup afegit amb &egrave;xit';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Esteu segur de voler esborrar el grup seleccionat (i qualsevol usuari que pertanyi a aquest)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grup esborrat amb &egrave;xit';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'El nom del grup &eacute;s buit';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Group name already exists';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'No s\'han trobat grups';
+$MESSAGE['GROUPS_SAVED'] = 'Grup desat amb &egrave;xit';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Per favor introdu&iuml;u una contrasenya';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'La contrasenya &eacute;s massa llarga';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'La contrasenya &eacute;s massa curta';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'No heu introdu&iuml;t una extensi&oacute; de fitxer';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'No heu introdu&iuml;t un nou nom';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'No es pot esborrar la carpeta seleccionada';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'No es pot esborrar el fitxer seleccionat';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'No s\'ha pogut canviar el nom';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Esteu segur que voleu esborrar el seg&uuml;ent fitxer o carpeta?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Carpeta esborrada amb &egrave;xit';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Fitxer esborrat amb &egrave;xit';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Directory does not exist';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'No es pot incloure ../ al nom de la carpeta';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Ja existeix una carpeta amb el nom que heu introdu&iuml;t';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Carpeta creada amb &egrave;xit';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'No s\'ha pogut crear la carpeta';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Ja existeix un fitxer amb el nom que heu introdu&iuml;t';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Fitxer no trobat';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'No es pot incloure ../ al nom';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'No es pot usar index.php com a nom';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'No s\'han trobat fitxers a la carpeta actual';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'S\'ha canviat el nom amb &egrave;xit';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' fitxer s\'ha penjat amb &egrave;xit';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'No es pot tenir ../ a la carpeta de dest&iacute;';
+$MESSAGE['MEDIA_UPLOADED'] = ' fitxers han estat penjats amb &egrave;xit';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Ho sentim, aquest formulari ha estat enviat massa vegades durant l\'&uacute;ltima hora. Per favor torneu-ho a intentar d\'ac&iacute; una hora.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'The verification number (also known as Captcha) that you entered is incorrect. If you are having problems reading the Captcha, please email: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Heu d\'introduir les dades per als seg&uuml;ents camps';
+$MESSAGE['PAGES_ADDED'] = 'P&agrave;gina afegida amb &egrave;xit';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Cap&ccedil;alera de p&agrave;gina afegida amb &egrave;xit';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Per favor introdu&iuml;u un t&iacute;tol per al men&uacute;';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Per favor introdu&iuml;u un t&iacute;tol de p&agrave;gina';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Error creant el fitxer d\'acc&eacute;s al directori /pages (privilegis insuficients)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Error esborrant el fitxer d\'acc&eacute;s al directori /pages (privilegis insuficients)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Error re-ordenant p&agrave;gina';
+$MESSAGE['PAGES_DELETED'] = 'P&agrave;gina esborrada amb &egrave;xit';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Esteu segur de voler esborrar la p&agrave;gina seleccionada';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'No teniu permisos per a modificar aquesta p&agrave;gina';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Premeu AC&Iacute; per a modificar la p&agrave;gina d\'entrada';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'No s\'ha pogut escriure al fitxer /pages/intro.php (privilegis insuficients)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'P&agrave;gina d\'entrada desada amb &egrave;xit';
+$MESSAGE['PAGES_LAST_MODIFIED'] = '&Uacute;ltima modificaci&oacute; per';
+$MESSAGE['PAGES_NOT_FOUND'] = 'No s\'ha trobat la p&agrave;gina';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Error desant la p&agrave;gina';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Existeix una p&agrave;gina amb el mateix t&iacute;tol o similar';
+$MESSAGE['PAGES_REORDERED'] = 'P&agrave;gina re-ordenada amb &egrave;xit';
+$MESSAGE['PAGES_RESTORED'] = 'P&agrave;gina restaurada amb &egrave;xit';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Torna a les p&agrave;gines';
+$MESSAGE['PAGES_SAVED'] = 'P&agrave;gina desada amb &egrave;xit';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Par&agrave;metres de p&agrave;gina desats amb &egrave;xit';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Propietats de la secci&oacute; desades amb &egrave;xit';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'La contrasenya (actual) que heu introdu&iuml;t &eacute;s incorrecta';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Dades desades amb &egrave;xit';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Correu actualitzat amb &egrave;xit';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Contrasenya canviada amb &egrave;xit';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Av&iacute;s: Pr&eacute;mer aquest bot&oacute; reinicia tots els canvis no desats';
+$MESSAGE['SETTINGS_SAVED'] = 'Par&agrave;metres desats amb &egrave;xit';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'No ha estat possible obrir el fitxer de configuraci&oacute;';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'No es pot escriure al fitxer de configuraci&oacute;';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Av&iacute;s: a&ccedil;&ograve; nom&eacute;s &eacute;s recomana per a entorns de proves';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Heu d\'Introduir una adre&ccedil;a de correu';
+$MESSAGE['START_CURRENT_USER'] = 'Actualment esteu identificat com a:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Atenci&oacute;, el Directori d\'Instal&middot;laci&oacute; Encara Existeix!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Benvingut/da al Panell de Control de WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Av&iacute;s: per a canviar la plantilla heu d\'anar a la secci&oacute; Par&agrave;metres';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Usuari afegit amb &egrave;xit';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Av&iacute;s: Nom&eacute;s haur&iacute;eu d\'introduir valors als camps superiors si voleu canviar aquestes contrasenyes d\'usuari';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Esteu segur de voler esborrar l\'usuari seleccionat?';
+$MESSAGE['USERS_DELETED'] = 'Usuari esborrat amb &egrave;xit';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'L\'adre&ccedil;a de correu que heu introdu&iuml;t ja est&agrave; en &uacute;s';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'L\'adre&ccedil;a de correu introdu&iuml;da &eacute;s inv&agrave;lida';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'No s\'ha seleccionat cap grup';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'La contrasenya introdu&iuml;da no coincideix';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'La contrasenya introdu&iuml;da &eacute;s massa curta';
+$MESSAGE['USERS_SAVED'] = 'Usuari desat amb &egrave;xit';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Administreu els grups d\'usuaris i els seus permisos de sistema...';
+$OVERVIEW['HELP'] = 'Teniu una pregunta? Trobeu la vostra resposta...';
+$OVERVIEW['LANGUAGES'] = 'Administreu els idiomes de WebsiteBaker...';
+$OVERVIEW['MEDIA'] = 'Administreu la carpeta de fitxers...';
+$OVERVIEW['MODULES'] = 'Administreu els m&ograve;duls de WebsiteBaker...';
+$OVERVIEW['PAGES'] = 'Administreu les p&agrave;gines de la vostra web...';
+$OVERVIEW['PREFERENCES'] = 'Canvieu les prefer&egrave;ncies com l\'adre&ccedil;a de correu electr&ograve;nic, contrasenya, etc... ';
+$OVERVIEW['SETTINGS'] = 'Canvieu els par&agrave;metres de WebsiteBaker...';
+$OVERVIEW['START'] = '&Iacute;ndex d\'Administraci&oacute;';
+$OVERVIEW['TEMPLATES'] = 'Canvieu l\'aspecte i estil de la vostra p&agrave;gina amb plantilles...';
+$OVERVIEW['USERS'] = 'Administreu els usuaris que poden identificar-se a WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Veure i navegar r&agrave;pidament la vostra p&agrave;gina web en una nova finestra...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/CA.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/PT.php
===================================================================
--- tags/2.8.3/wb/languages/PT.php	(nonexistent)
+++ tags/2.8.3/wb/languages/PT.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'PT';
+$language_name = 'Portuguese (Brazil)';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Daniel Neto';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Acessos';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = 'Add-ons';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = 'Receber Detalhes do Login';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = 'Grupos';
+$MENU['HELP'] = 'Ajuda';
+$MENU['LANGUAGES'] = 'Idiomas';
+$MENU['LOGIN'] = 'Login';
+$MENU['LOGOUT'] = 'Log-out';
+$MENU['MEDIA'] = 'M&iacute;dia';
+$MENU['MODULES'] = 'M&oacute;dulos';
+$MENU['PAGES'] = 'P&aacute;ginas';
+$MENU['PREFERENCES'] = 'Prefer&ecirc;ncias';
+$MENU['SETTINGS'] = 'Configura&ccdil;&otilde;es';
+$MENU['START'] = 'In&iacute;cio';
+$MENU['TEMPLATES'] = 'Temas (Templates)';
+$MENU['USERS'] = 'Usu&aacute;rios';
+$MENU['VIEW'] = 'Visualizar';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Assinatura de Conta';
+$TEXT['ACTIONS'] = 'A&ccdil;&otilde;es';
+$TEXT['ACTIVE'] = 'Ativo';
+$TEXT['ADD'] = 'Adicionar';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Adicionar Sess&atilde;o';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administra&ccdil;&atilde;o';
+$TEXT['ADMINISTRATION_TOOL'] = 'Ferramenta de Administra&ccdil;&atilde;o';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administrators';
+$TEXT['ADVANCED'] = 'Avan&ccdil;ado';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = 'Allowed Viewers';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Permitir Multipla Sele&ccdil;&atilde;o';
+$TEXT['ALL_WORDS'] = 'Todas as Palavras';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = 'An&ocirc;nimo';
+$TEXT['ANY_WORDS'] = 'Qualquer Palavra';
+$TEXT['APP_NAME'] = 'Nome da Aplica&ccdil;&atilde;o';
+$TEXT['ARE_YOU_SURE'] = 'Voc&ecirc; tem certeza?';
+$TEXT['AUTHOR'] = 'Autor';
+$TEXT['BACK'] = 'Volta';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Backup de Todas as Tabelas no Banco de Dados';
+$TEXT['BACKUP_DATABASE'] = 'Backup do Banco de Dados';
+$TEXT['BACKUP_MEDIA'] = 'Backup M&iacute;dia';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Backup somente tabelas espec&iacute;ficas';
+$TEXT['BASIC'] = 'B&aacute;sico';
+$TEXT['BLOCK'] = 'Block';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = 'Cancelar';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Verifica&ccdil;&atilde;o Captcha';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = 'Alterar';
+$TEXT['CHANGES'] = 'Altera&ccdil;&otilde;es';
+$TEXT['CHANGE_SETTINGS'] = 'Alterar Configura&ccdil;&otilde;es';
+$TEXT['CHARSET'] = 'Charset';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox Group';
+$TEXT['CLOSE'] = 'Fechar';
+$TEXT['CODE'] = 'C&oacute;digo';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = 'Collapse';
+$TEXT['COMMENT'] = 'Coment&aacute;rio';
+$TEXT['COMMENTING'] = 'Coment&aacute;rios';
+$TEXT['COMMENTS'] = 'Coment&aacute;rios';
+$TEXT['CREATE_FOLDER'] = 'Criar Pasta';
+$TEXT['CURRENT'] = 'Atual';
+$TEXT['CURRENT_FOLDER'] = 'Pasta Atual';
+$TEXT['CURRENT_PAGE'] = 'P&aacute;gina Atual';
+$TEXT['CURRENT_PASSWORD'] = 'Senha Atual';
+$TEXT['CUSTOM'] = 'Pr&oacute;prio';
+$TEXT['DATABASE'] = 'Banco de Dados';
+$TEXT['DATE'] = 'Data';
+$TEXT['DATE_FORMAT'] = 'Formato de Data';
+$TEXT['DEFAULT'] = 'Padr&atilde;o';
+$TEXT['DEFAULT_CHARSET'] = 'Codifica&ccdil;&atilde;o Padr&atilde;o';
+$TEXT['DEFAULT_TEXT'] = 'Testo Padr&atilde;o';
+$TEXT['DELETE'] = 'Apagar';
+$TEXT['DELETED'] = 'Apagado';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = 'Descri&ccdil;&atilde;o';
+$TEXT['DESIGNED_FOR'] = 'Designado para';
+$TEXT['DIRECTORIES'] = 'Diret&oacute;rios';
+$TEXT['DIRECTORY_MODE'] = 'Modo de Diret&oacute;rio';
+$TEXT['DISABLED'] = 'Desabilitado';
+$TEXT['DISPLAY_NAME'] = 'Nome de Exibi&ccdil;&atilde;o';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Endre&ccdil;or de Email';
+$TEXT['EMPTY_TRASH'] = 'Esvaziar Lixeira';
+$TEXT['ENABLED'] = 'Habilitado';
+$TEXT['END'] = 'Fim';
+$TEXT['ERROR'] = 'Erro';
+$TEXT['EXACT_MATCH'] = 'Express&atilde;o Exata';
+$TEXT['EXECUTE'] = 'Executar';
+$TEXT['EXPAND'] = 'Expand';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = 'Campo';
+$TEXT['FILE'] = 'Arquivo';
+$TEXT['FILES'] = 'Arquivos';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Permiss&otilde;es de Sistema de Arquivos';
+$TEXT['FILE_MODE'] = 'Modo de Arquivo';
+$TEXT['FINISH_PUBLISHING'] = 'Finish Publishing';
+$TEXT['FOLDER'] = 'Pasta';
+$TEXT['FOLDERS'] = 'Pastas';
+$TEXT['FOOTER'] = 'Rodap&eacute;';
+$TEXT['FORGOTTEN_DETAILS'] = 'Esqueceu suas credenciais?';
+$TEXT['FORGOT_DETAILS'] = 'Esqueceu as credenciais?';
+$TEXT['FROM'] = 'De';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = 'Nome Completo';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = 'Grupo';
+$TEXT['HEADER'] = 'Cabe&ccdil;alho';
+$TEXT['HEADING'] = 'Cabe&ccdil;alho';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = 'Largura';
+$TEXT['HIDDEN'] = 'Oculto';
+$TEXT['HIDE'] = 'Ocultar';
+$TEXT['HIDE_ADVANCED'] = 'Ocultar Op&ccdil;&otilde;es Avan&ccdil;adas';
+$TEXT['HOME'] = 'Home';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Redirecionamento de P&aacute;gina';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = '&Iacute;cone';
+$TEXT['IMAGE'] = 'Imagem';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = 'Instalar';
+$TEXT['INSTALLATION'] = 'Instala&ccdil;&atilde;o';
+$TEXT['INSTALLATION_PATH'] = 'Caminho de Instala&ccdil;&atilde;o';
+$TEXT['INSTALLATION_URL'] = 'URL de Instala&ccdil;&atilde;o';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = 'Introdu&ccdil;&atilde;o';
+$TEXT['INTRO_PAGE'] = 'P&aacute;gina de Introdu&ccdil;&atilde;o';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = 'Keywords';
+$TEXT['LANGUAGE'] = 'Idioma';
+$TEXT['LAST_UPDATED_BY'] = '&Uacute;ltima atualiza&ccdil;&atilde;o por';
+$TEXT['LENGTH'] = 'Tamanho';
+$TEXT['LEVEL'] = 'N&iacute;vel';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix based';
+$TEXT['LIST_OPTIONS'] = 'Op&ccdil;&otilde;es de Lista';
+$TEXT['LOGGED_IN'] = 'Logado';
+$TEXT['LOGIN'] = 'Login';
+$TEXT['LONG'] = 'Longo';
+$TEXT['LONG_TEXT'] = 'Texto Longo';
+$TEXT['LOOP'] = 'La&ccdil;o de Repeti&ccdil;&atilde;o';
+$TEXT['MAIN'] = 'Principal';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = 'Gerenciar';
+$TEXT['MANAGE_GROUPS'] = 'Gerenciar Grupos';
+$TEXT['MANAGE_USERS'] = 'Gerenciar Usu&aacute;rios';
+$TEXT['MATCH'] = 'Possua';
+$TEXT['MATCHING'] = 'Matching';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. Submiss&otilde;es por Hora';
+$TEXT['MEDIA_DIRECTORY'] = 'Diret&oacute;rio de M&iacute;dia';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = 'T&iacute;tulo do Menu';
+$TEXT['MESSAGE'] = 'Mensagem';
+$TEXT['MODIFY'] = 'Modificar';
+$TEXT['MODIFY_CONTENT'] = 'Modificar Conte&uacute;do';
+$TEXT['MODIFY_SETTINGS'] = 'Modificar Configura&ccdil;&otilde;es';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = 'Permiss&otilde;es de M&oacute;dulo';
+$TEXT['MORE'] = 'Mais';
+$TEXT['MOVE_DOWN'] = 'Mover para Baixo';
+$TEXT['MOVE_UP'] = 'Mover para Cima';
+$TEXT['MULTIPLE_MENUS'] = 'M&uacute;ltiplos Menus';
+$TEXT['MULTISELECT'] = 'Multipla-Sele&ccdil;&atilde;o';
+$TEXT['NAME'] = 'Nome';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = 'Precisar fazer log-in?';
+$TEXT['NEW_PASSWORD'] = 'Nova Senha';
+$TEXT['NEW_WINDOW'] = 'New Window';
+$TEXT['NEXT'] = 'Pr&oacute;ximo';
+$TEXT['NEXT_PAGE'] = 'Pr&oacute;xima P&aacute;gina';
+$TEXT['NO'] = 'N&atilde;o';
+$TEXT['NONE'] = 'Nenhum';
+$TEXT['NONE_FOUND'] = 'Nada Encontrado';
+$TEXT['NOT_FOUND'] = 'N&atilde;o Encotnrado';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = 'Sem Resultados';
+$TEXT['OF'] = 'de';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = 'Op&ccdil;&atilde;o';
+$TEXT['OTHERS'] = 'Outros';
+$TEXT['OUT_OF'] = 'Out Of';
+$TEXT['OVERWRITE_EXISTING'] = 'Substituir Existente';
+$TEXT['PAGE'] = 'P&aacute;gina';
+$TEXT['PAGES_DIRECTORY'] = 'Diret&oacute;rio de P&aacute;ginas';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = 'Extens&atilde;o da P&aacute;gina';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = 'Idioma da P&aacute;gina';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Limite de N&iacute;veis de P&aacute;gina';
+$TEXT['PAGE_SPACER'] = 'Espa&ccdil;ador de P&aacute;gina';
+$TEXT['PAGE_TITLE'] = 'T&iacute;tulo da P&aacute;gina';
+$TEXT['PAGE_TRASH'] = 'Page Trash';
+$TEXT['PARENT'] = 'Parent';
+$TEXT['PASSWORD'] = 'Senha';
+$TEXT['PATH'] = 'Caminho';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = 'Por Favor escolha';
+$TEXT['POST'] = 'Post';
+$TEXT['POSTS_PER_PAGE'] = 'Posts por P&aacute;gina';
+$TEXT['POST_FOOTER'] = 'Rodap&eacute; do Post';
+$TEXT['POST_HEADER'] = 'Cabe&ccdil;alho do Post';
+$TEXT['PREVIOUS'] = 'Anterior';
+$TEXT['PREVIOUS_PAGE'] = 'P&aacute;gina Anterior';
+$TEXT['PRIVATE'] = 'Privado';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Viewers';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = 'P&uacute;blico';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button Group';
+$TEXT['READ'] = 'Ler';
+$TEXT['READ_MORE'] = 'Leia Mais';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = 'Registrado';
+$TEXT['REGISTERED_VIEWERS'] = 'Registered Viewers';
+$TEXT['RELOAD'] = 'Recarregar';
+$TEXT['REMEMBER_ME'] = 'Lembrar-me';
+$TEXT['RENAME'] = 'Renomear';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = 'Requerido';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = 'Redefinir';
+$TEXT['RESIZE'] = 'Redimentsionar';
+$TEXT['RESIZE_IMAGE_TO'] = 'Redimensionar Imagem Para';
+$TEXT['RESTORE'] = 'Restaurar';
+$TEXT['RESTORE_DATABASE'] = 'Restaurar Banco de Dados';
+$TEXT['RESTORE_MEDIA'] = 'Restaurar M&iacute;dia';
+$TEXT['RESULTS'] = 'Resultados';
+$TEXT['RESULTS_FOOTER'] = 'Rodap&eacute; dos Resultados';
+$TEXT['RESULTS_FOR'] = 'Resultados para';
+$TEXT['RESULTS_HEADER'] = 'Cabe&ccdil;alho dos Resultados';
+$TEXT['RESULTS_LOOP'] = 'La&ccdil;o de Repeti&ccdil;&atilde;o dos Resultados';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Confirme a Nova Senha';
+$TEXT['RETYPE_PASSWORD'] = 'Confirme a Senha';
+$TEXT['SAME_WINDOW'] = 'Same Window';
+$TEXT['SAVE'] = 'Salvar';
+$TEXT['SEARCH'] = 'Busca';
+$TEXT['SEARCHING'] = 'Buscando';
+$TEXT['SECTION'] = 'Sess&atilde;o';
+$TEXT['SECTION_BLOCKS'] = 'Section Blocks';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Select Box';
+$TEXT['SEND_DETAILS'] = 'Enviar credenciais';
+$TEXT['SEPARATE'] = 'Separado';
+$TEXT['SEPERATOR'] = 'Separador';
+$TEXT['SERVER_EMAIL'] = 'Servidor de Email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Sistema Operacional do Servidor';
+$TEXT['SESSION_IDENTIFIER'] = 'Identificador de Sess&atilde;o';
+$TEXT['SETTINGS'] = 'Configura&ccdil;&otilde;es';
+$TEXT['SHORT'] = 'Curto';
+$TEXT['SHORT_TEXT'] = 'Texto Curto';
+$TEXT['SHOW'] = 'Exibir';
+$TEXT['SHOW_ADVANCED'] = 'Exibir Op&ccdil;&otilde;es Avan&ccdil;adas';
+$TEXT['SIGNUP'] = 'Inscrever';
+$TEXT['SIZE'] = 'Tamanho';
+$TEXT['SMART_LOGIN'] = 'Login Inteligente';
+$TEXT['START'] = 'In&iacute;cio';
+$TEXT['START_PUBLISHING'] = 'Start Publishing';
+$TEXT['SUBJECT'] = 'Assunto';
+$TEXT['SUBMISSIONS'] = 'Submiss&otilde;es';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Submiss&otilde;es armazenadas no banco de dados';
+$TEXT['SUBMISSION_ID'] = 'Submission ID';
+$TEXT['SUBMITTED'] = 'Submetido';
+$TEXT['SUCCESS'] = 'Sucesso';
+$TEXT['SYSTEM_DEFAULT'] = 'Padr&atilde;o do Sistema';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Permiss&otilde;es de Sistema';
+$TEXT['TABLE_PREFIX'] = 'Prefixo da Tabela';
+$TEXT['TARGET'] = 'Target';
+$TEXT['TARGET_FOLDER'] = 'Pasta Alvo';
+$TEXT['TEMPLATE'] = 'Tema (Template)';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Permiss&otilde;es do Tema (Template)';
+$TEXT['TEXT'] = 'Texto';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['TEXTFIELD'] = 'Textfield';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = 'Hora';
+$TEXT['TIMEZONE'] = 'Fuso Hor&aacute;rio';
+$TEXT['TIME_FORMAT'] = 'Formato de Hora';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = 'T&iacute;tulo';
+$TEXT['TO'] = 'Para';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = 'Lixiera Vazia';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = 'Tipo';
+$TEXT['UNDER_CONSTRUCTION'] = 'Em Constru&ccdil;&atilde;o';
+$TEXT['UNINSTALL'] = 'Desinstalar';
+$TEXT['UNKNOWN'] = 'Desconhecido';
+$TEXT['UNLIMITED'] = 'Ilimitado';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = 'Cima';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Enviar Arquivo(s)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Usu&aacute;rio';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = 'Verifica&ccdil;&atilde;o';
+$TEXT['VERSION'] = 'Vers&atilde;o';
+$TEXT['VIEW'] = 'Ver';
+$TEXT['VIEW_DELETED_PAGES'] = 'Exibir P&aacute;ginas Exclu&iacute;das';
+$TEXT['VIEW_DETAILS'] = 'Ver Detalhes';
+$TEXT['VISIBILITY'] = 'Visibilidade';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Website';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Descri&ccdil;&atilde;o do Website';
+$TEXT['WEBSITE_FOOTER'] = 'Rodap&eacute; do Website';
+$TEXT['WEBSITE_HEADER'] = 'Cabe&ccdil;alho do Website';
+$TEXT['WEBSITE_KEYWORDS'] = 'Website Keywords';
+$TEXT['WEBSITE_TITLE'] = 'T&iacute;tulo do Website';
+$TEXT['WELCOME_BACK'] = 'Bem-Vindo';
+$TEXT['WIDTH'] = 'Altura';
+$TEXT['WINDOW'] = 'Window';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
+$TEXT['WRITE'] = 'Escrever';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG Editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG Style';
+$TEXT['YES'] = 'Sim';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Adicionar Grupo';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = 'Adicionar Cabe&ccdil;alho';
+$HEADING['ADD_PAGE'] = 'Adicionar P&aacute;gina';
+$HEADING['ADD_USER'] = 'Adicionar Usu&aacute;rio';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Ferramentas de Administra&ccdil;&atilde;o';
+$HEADING['BROWSE_MEDIA'] = 'Navegar pela M&iacute;dia';
+$HEADING['CREATE_FOLDER'] = 'Criar Pasta';
+$HEADING['DEFAULT_SETTINGS'] = 'Configura&ccdil;&otilde;es Padr&atilde;o';
+$HEADING['DELETED_PAGES'] = 'P&aacute;ginas apagadas';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Configura&ccdil;&otilde;es de Sistema de Arquivos';
+$HEADING['GENERAL_SETTINGS'] = 'Configura&ccdil;&otilde;es Gerais';
+$HEADING['INSTALL_LANGUAGE'] = 'Instalar Idioma';
+$HEADING['INSTALL_MODULE'] = 'Instalar M&oacute;dulo';
+$HEADING['INSTALL_TEMPLATE'] = 'Instalar Tema (Template)';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = 'Detalhes do Idioma';
+$HEADING['MANAGE_SECTIONS'] = 'Gerenciar Sess&otilde;es';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Modificar Configura&ccdil;&otilde;es Avan&ccdil;adas da P&aacute;gina';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Modificar/Apagar Grupo';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Modificar/Apagar P&aacute;gina';
+$HEADING['MODIFY_DELETE_USER'] = 'Modificar/Apagar Usu&aacute;rio';
+$HEADING['MODIFY_GROUP'] = 'Modificar Grupo';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Modificar P&aacute;gina de Introdu&ccdil;&atilde;o';
+$HEADING['MODIFY_PAGE'] = 'Modificar P&aacute;gina';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Modificar Configura&ccdil;&otilde;es da P&aacute;gina';
+$HEADING['MODIFY_USER'] = 'Modificar Usu&aacute;rio';
+$HEADING['MODULE_DETAILS'] = 'Detalhes do M&oacute;dulo';
+$HEADING['MY_EMAIL'] = 'Meu Email';
+$HEADING['MY_PASSWORD'] = 'Minha Senha';
+$HEADING['MY_SETTINGS'] = 'Minhas Configura&ccdil;&otilde;es';
+$HEADING['SEARCH_SETTINGS'] = 'Configura&ccdil;&otilde;es de Busca';
+$HEADING['SERVER_SETTINGS'] = 'Configura&ccdil;&otilde;es do Servidor';
+$HEADING['TEMPLATE_DETAILS'] = 'Detalhes do Tema (Template)';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Desinstalar Idioma';
+$HEADING['UNINSTALL_MODULE'] = 'Desinstalar M&oacute;dulo';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Desinstalar Tema (Template)';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = 'Enviar Arquivo(s)';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Privil&eacute;gios Insuficientes para estar aqui';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'A senha n&atilde;o pode ser redefinida mais de uma vez por hora, desculpe';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'N&atilde;o foi poss&iacute;vel enviar a senha, favor contatar o administrador do sistema';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'O email informado n&atilde;o pode ser encontrado no banco de dados';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Favor inserir seu email abaixo';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Desculpe, voc&ecirc; n&atilde;o tem permiss&atilde;o para ver essa p&aacute;gina';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'J&aacute; est&aacute; instalado';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'N&atilde;o foi poss&iacute;vel gravar no diret&oacute;rio de destino';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'N&atilde;o foi poss&iacute;vel desinstalar';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'N&atilde;o foi poss&iacute;vel desinstalar: O arquivo selecionado est&aacute; em uso';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />O m&oacute;dulo n&atilde;o <b>{{type_name}}</b> pode ser desinstalado porque est&aacute; a ser utilizado {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'na seguinte p&aacute;gina;nas seguintes p&aacute;ginas';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'O Template n&atilde;o pode ser desinstalado porque &eacute; o Template padr&atilde;o';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'N&atilde;o foi poss&iacute;vel descompactar';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'N&atilde;o foi poss&iacute;vel enviar o arquivo';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Erro ao abrir o arquivo.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'O arquivo a ser enviado precisa ser do seguinte formato:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'O arquivo a ser enviado precisa ser de algum dos seguintes formatos:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'Favor retornar e preencher todos os campos';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Instalado com Sucesso';
+$MESSAGE['GENERIC_INVALID'] = 'O arquivo enviado &eacute; inv&aacute;lido';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'N&atilde;o Instalado';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'Aguarde, isso pode levar algum tempo.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Favor retornar em breve...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Desinstalado com Sucesso';
+$MESSAGE['GENERIC_UPGRADED'] = 'Atualizado com Sucesso';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Website Em Constru&ccdil;&atilde;o';
+$MESSAGE['GROUPS_ADDED'] = 'Grupo adicionado com sucesso';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Voc&ecirc; tem certeza que deseja apagar o grupo selecionado (e usu&aacute;rios pertencentes ao grupo)?';
+$MESSAGE['GROUPS_DELETED'] = 'Grupo apagado com sucesso';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'O nome do grupo est&aacute; em branco';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Nome do Grupo j&aacute; existe';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'N&atilde;o foram encotrados grupos';
+$MESSAGE['GROUPS_SAVED'] = 'Grupo armazenado com sucesso';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Favor Inserir a senha';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'A senha fornecida &eacute; longa demais';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'A senha fornecida &eacute; curta demais';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Voc&ecirc; n&atilde;o inseriou uma extens&atilde;o de arquivo';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Voc&ecirc; n&atilde;o inseriu um nome novo';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'N&atilde;o foi poss&iacute;vel apagar a pasta selecionada';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'N&atilde;o foi poss&iacute;vel apagar o arquivo selecionado';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Erro ao Renomear';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Tem certeza que deseja apagar o seguinte arquivo ou pasta?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Pasta apagada com sucesso';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Arquivo apagado com sucesso';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Diret&oacute;rio n&atilde;o existe';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'N&atilde;o foi poss&iacute;vel incluir ../ no nome da pasta';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Uma pasta com esse nome j&aacute; existe';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Pasta criada com sucesso';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'N&atilde;o foi poss&iacute;vel criar a pasta';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Um arquivo com esse nome j&aacute; existe';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Arquivo n&atilde;o encontrado';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'N&atilde;o foi possivel incluir ../ no nome';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'N&atilde;o &eacute; possivel usar index.php como nome';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Nenhuma arquivo de m&iacute;dia encontrado na pasta atual';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = 'Renomeado com sucesso';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' arquivo enviado com sucesso';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'N&atilde;o pode possuir ../ na pasta alvo';
+$MESSAGE['MEDIA_UPLOADED'] = ' arquivos enviados com sucesso';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Desculpe, este formul&aacute;rio foi submetido v&aacute;rias vezes nessa hora. Favor tentar novamente dentro de uma hora.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'O N&uacute;mero de Verifica&ccdil;&atilde;o (conhecido como Captcha) que voc&ecirc; entrou, &eacute; inv&aacute;lido. Se estiver tendo problemas usando o Captcha, envie uma mensagem para: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Voc&ecirc; precisa preencher os seguintes campos';
+$MESSAGE['PAGES_ADDED'] = 'P&aacute;gina adicionada com sucesso';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Cabe&ccdil;alho da P&aacute;gina adicionado com sucesso.';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Favor Inserir T&iacute;tulo do Menu';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Favor Inserir T&iacute;tulo da P&aacute;gina';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Erro ao criar o arquivo no diret&oacute;rio /pages (Privil&eacute;gios Insuficientes)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Erro ao apagar o arquivo no diret&oacute;rio /pages (Privil&eacute;gios Insuficientes)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Erro na re-ordena&ccdil;&atilde;o da p&aacute;gina';
+$MESSAGE['PAGES_DELETED'] = 'P&aacute;gina apagada com sucesso';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Tem certeza que deseja apagar a p&aacute;gina selecionada(e todas as suas sub-p&aacute;ginas)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Voc&ecirc; n&atilde;o tem permiss&atilde;o para Modificar essa p&aacute;gina';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Clique AQUI para modificar a P&aacute;gina de Introdu&ccdil;&atilde;o';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'N&atilde;o foi poss&iacute;vel gravar o arquivo /pages/intro.php (Privil&eacute;gios Insuficientes)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'P&aacute;gina de Introdu&ccdil;&atilde;o armazenada com sucesso';
+$MESSAGE['PAGES_LAST_MODIFIED'] = '&Uacute;ltima modifica&ccdil;&atilde;o por';
+$MESSAGE['PAGES_NOT_FOUND'] = 'P&aacute;gina n&atilde;o encontrada';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Erro ao armazenar a p&aacute;gina';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Uma p&aacute;gina com o mesmo nome ou similar j&aacute; existe';
+$MESSAGE['PAGES_REORDERED'] = 'Re-ordena&ccdil;&atilde;o feita com sucesso';
+$MESSAGE['PAGES_RESTORED'] = 'Pagina Restaurada com sucesso';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Retornar &agrave; P&aacute;ginas';
+$MESSAGE['PAGES_SAVED'] = 'P&aacute;gina armazenada com sucesso';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Configura&ccdil;&otilde;es de P&aacute;gina armazenadas com sucesso';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Propriedades da Sess&atilde;o foram armazenadas com sucesso';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'A senha(atual) informada n&atilde;o est&aacute; correta';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Detalhes armazenados  com sucesso';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email atualizado com sucesso';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Senha alterada com sucesso';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = 'Aten&ccdil;&atilde;o: Pressionando esse bot&atilde;o, todas as altera&ccdil;&otilde;es n&atilde;o salvas, ser&atilde;o perdidas';
+$MESSAGE['SETTINGS_SAVED'] = 'Altera&ccdil;&otilde;es armazenadas com sucesso';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'N&atilde;o foi possivel abrir o arquivo de configura&ccdil;&atilde;o';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'N&atilde;o foi possivel gravar no aquivo de configura&ccdil;&atilde;o';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'Aten&ccdil;&atilde;o: Somente recomendado para ambientes de teste';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Voc&ecirc; precisa informar um endere&ccdil;o de email';
+$MESSAGE['START_CURRENT_USER'] = 'Voc&ecirc; est&aacute; logado como:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'Aviso, O diret&oacute;rio "INSTALL" ainda existe!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Bem-Vindo &agrave; Administra&ccdil;&atilde;o do WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'Aten&ccdil;&atilde;o: para alterar o tema (template) voc&ecirc; precisa ir at&eacute; a sess&atilde;o Configura&ccdil;&otilde;es';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Usu&aacute;rio adicionado com sucesso';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'Aten&ccdil;&atilde;o: Voc&ecirc; deve preencher os campos abaixo se deseja alterar a senha';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Voc&ecirc; tem certeza que deseja apagar o usu&aacute;rio selecionado?';
+$MESSAGE['USERS_DELETED'] = 'Usu&aacute;rio apagado com sucesso';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'O endere&ccdil;o de email informado j&aacute; est&aacute; sendo utilizado';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'O email fornecido &eacute; inv&aacute;lido';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Nenhum grupo selecionado';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'As senhas fornecidas n&atilde;o conferem';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'A senha fornecida &eacute; curta demais';
+$MESSAGE['USERS_SAVED'] = 'Usu&aacute;rio armazenado com sucesso';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = 'Gerencie os grupos de usu&aacute;rios e suas permiss&otilde;es de sistema...';
+$OVERVIEW['HELP'] = 'D&uacute;vidas? Encontre respostas...';
+$OVERVIEW['LANGUAGES'] = 'Gerencie os idiomas do seu website...';
+$OVERVIEW['MEDIA'] = 'Gerencie os arquivos armazenados na pasta Media...';
+$OVERVIEW['MODULES'] = 'Gerencie os M&oacute;dulos do WebsiteBaker...';
+$OVERVIEW['PAGES'] = 'Gerencie as P&aacute;ginas do seu site...';
+$OVERVIEW['PREFERENCES'] = 'Altere suas prefer&ecirc;ncias como email, senha, etc... ';
+$OVERVIEW['SETTINGS'] = 'Altere as configura&ccdil;&otilde;es do WebsiteBaker...';
+$OVERVIEW['START'] = 'Vis&atilde;o Geral da Administra&ccdil;&atilde;o';
+$OVERVIEW['TEMPLATES'] = 'Altere a apar&ecirc;ncia do seu site com temas(templates)...';
+$OVERVIEW['USERS'] = 'Gerencie os usu&aacute;rios que podem logar no WebsiteBaker...';
+$OVERVIEW['VIEW'] = 'Visualize e navegue em seu website atrav&eacute;s de uma nova janela...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/PT.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/DA.php
===================================================================
--- tags/2.8.3/wb/languages/DA.php	(nonexistent)
+++ tags/2.8.3/wb/languages/DA.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Du kan ikke få direkte adgang til denne fil"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'DA';
+$language_name = 'Dansk';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Allan Christensen';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = 'Adgang';
+$MENU['ADDON'] = 'Tilf&oslash;jelse';
+$MENU['ADDONS'] = 'Tilf&oslash;jelser';
+$MENU['ADMINTOOLS'] = 'Admin-v&aelig;rkt&oslash;jer';
+$MENU['BREADCRUMB'] = 'Du er her: ';
+$MENU['FORGOT'] = 'Send login oplysninger';
+$MENU['GROUP'] = 'Gruppe';
+$MENU['GROUPS'] = 'Grupper';
+$MENU['HELP'] = 'Hj&aelig;lp';
+$MENU['LANGUAGES'] = 'Sprog';
+$MENU['LOGIN'] = 'Log ind';
+$MENU['LOGOUT'] = 'Log ud';
+$MENU['MEDIA'] = 'Medie-filer';
+$MENU['MODULES'] = 'Moduler';
+$MENU['PAGES'] = 'Sider';
+$MENU['PREFERENCES'] = 'Pr&aelig;ferencer';
+$MENU['SETTINGS'] = 'Indstillinger';
+$MENU['START'] = 'Hjem';
+$MENU['TEMPLATES'] = 'Skabeloner';
+$MENU['USERS'] = 'Brugere';
+$MENU['VIEW'] = 'Vis';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Kontoregistrering';
+$TEXT['ACTIONS'] = 'Handlinger';
+$TEXT['ACTIVE'] = 'Aktiv';
+$TEXT['ADD'] = 'Tilf&oslash;j';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = 'Tilf&oslash;j sektion';
+$TEXT['ADMIN'] = 'Admin';
+$TEXT['ADMINISTRATION'] = 'Administr&eacute;r';
+$TEXT['ADMINISTRATION_TOOL'] = 'Administrationsv&aelig;rkt&oslash;jer';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = 'Administratorer';
+$TEXT['ADVANCED'] = 'Avanceret';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Tilladte filtyper ved overf&oslash;rsel';
+$TEXT['ALLOWED_VIEWERS'] = 'Tilladte brugere';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = 'Tillad flere valg samtidig';
+$TEXT['ALL_WORDS'] = 'Alle ordene';
+$TEXT['ANCHOR'] = 'Bogm&aelig;rke';
+$TEXT['ANONYMOUS'] = 'Anonym';
+$TEXT['ANY_WORDS'] = 'Kun et af ordene';
+$TEXT['APP_NAME'] = 'Applikationsnavn';
+$TEXT['ARE_YOU_SURE'] = 'Er du sikker?';
+$TEXT['AUTHOR'] = 'Udvikler/forfatter';
+$TEXT['BACK'] = 'Tilbage';
+$TEXT['BACKUP'] = 'Backup';
+$TEXT['BACKUP_ALL_TABLES'] = 'Lav backup af alle tabeller i databasen';
+$TEXT['BACKUP_DATABASE'] = 'Backup af database';
+$TEXT['BACKUP_MEDIA'] = 'Lav backup af medie-filer';
+$TEXT['BACKUP_WB_SPECIFIC'] = 'Lav kun backup af WB-specifikke tabeller';
+$TEXT['BASIC'] = 'Basisindstillinger';
+$TEXT['BLOCK'] = 'Blok';
+$TEXT['CALENDAR'] = 'Kalender';
+$TEXT['CANCEL'] = 'Annull&eacute;r';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Kan slette sig selv';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha verifikation';
+$TEXT['CAP_EDIT_CSS'] = 'Rediger CSS';
+$TEXT['CHANGE'] = 'Ret';
+$TEXT['CHANGES'] = '&AElig;ndringer';
+$TEXT['CHANGE_SETTINGS'] = 'Skift indstillinger';
+$TEXT['CHARSET'] = 'Tegns&aelig;t';
+$TEXT['CHECKBOX_GROUP'] = 'Afkrydsningsgruppe';
+$TEXT['CLOSE'] = 'Luk';
+$TEXT['CODE'] = 'Kode';
+$TEXT['CODE_SNIPPET'] = 'Kodestump';
+$TEXT['COLLAPSE'] = 'Fold sammen';
+$TEXT['COMMENT'] = 'Kommentar';
+$TEXT['COMMENTING'] = 'Kommentere';
+$TEXT['COMMENTS'] = 'Kommentarer';
+$TEXT['CREATE_FOLDER'] = 'Opret mappe';
+$TEXT['CURRENT'] = 'Nuv&aelig;rende';
+$TEXT['CURRENT_FOLDER'] = 'Nuv&aelig;rende mappe';
+$TEXT['CURRENT_PAGE'] = 'Nuv&aelig;rende side';
+$TEXT['CURRENT_PASSWORD'] = 'Nuv&aelig;rende adgangskode';
+$TEXT['CUSTOM'] = 'Brugerdefineret';
+$TEXT['DATABASE'] = 'Database';
+$TEXT['DATE'] = 'Dato';
+$TEXT['DATE_FORMAT'] = 'Datoformat';
+$TEXT['DEFAULT'] = 'Standard';
+$TEXT['DEFAULT_CHARSET'] = 'Standard tegns&aelig;t';
+$TEXT['DEFAULT_TEXT'] = 'Standardtekst';
+$TEXT['DELETE'] = 'Slet';
+$TEXT['DELETED'] = 'Slettet';
+$TEXT['DELETE_DATE'] = 'Slet dato';
+$TEXT['DELETE_ZIP'] = 'Slet zip-arkiv efter udpakning';
+$TEXT['DESCRIPTION'] = 'Beskrivelse';
+$TEXT['DESIGNED_FOR'] = 'Designet til';
+$TEXT['DIRECTORIES'] = 'Biblioteker (mapper)';
+$TEXT['DIRECTORY_MODE'] = 'Bibliotekstilstand';
+$TEXT['DISABLED'] = 'Deaktiveret';
+$TEXT['DISPLAY_NAME'] = 'Vis navn';
+$TEXT['EMAIL'] = 'Email-adresse';
+$TEXT['EMAIL_ADDRESS'] = 'Email-adresse';
+$TEXT['EMPTY_TRASH'] = 'T&oslash;m papirkurv';
+$TEXT['ENABLED'] = 'Aktiveret';
+$TEXT['END'] = 'Slut';
+$TEXT['ERROR'] = 'Der opstod en fejl';
+$TEXT['EXACT_MATCH'] = 'Eksakt s&oslash;gning';
+$TEXT['EXECUTE'] = 'Udf&oslash;r';
+$TEXT['EXPAND'] = 'Fold ud';
+$TEXT['EXTENSION'] = 'Udvidelse';
+$TEXT['FIELD'] = 'Felt';
+$TEXT['FILE'] = 'Fil';
+$TEXT['FILES'] = 'Filer';
+$TEXT['FILESYSTEM_PERMISSIONS'] = 'Filesystem - Tilladelser';
+$TEXT['FILE_MODE'] = 'Filtilstand';
+$TEXT['FINISH_PUBLISHING'] = 'Afslut offentligg&oslash;relse';
+$TEXT['FOLDER'] = 'Mappe';
+$TEXT['FOLDERS'] = 'Mapper';
+$TEXT['FOOTER'] = 'Fod (bund)';
+$TEXT['FORGOTTEN_DETAILS'] = 'Har du glemt dine login-oplysninger?';
+$TEXT['FORGOT_DETAILS'] = 'Glemt login-oplysninger?';
+$TEXT['FROM'] = 'Fra';
+$TEXT['FRONTEND'] = 'Websted (vis siden)';
+$TEXT['FULL_NAME'] = 'Fulde navn';
+$TEXT['FUNCTION'] = 'Funktion';
+$TEXT['GROUP'] = 'Gruppe';
+$TEXT['HEADER'] = 'Hoved (overligger)';
+$TEXT['HEADING'] = 'Overskrift';
+$TEXT['HEADING_CSS_FILE'] = 'Aktuel modulfil: ';
+$TEXT['HEIGHT'] = 'H&oslash;jde';
+$TEXT['HIDDEN'] = 'Skjult';
+$TEXT['HIDE'] = 'Skjul';
+$TEXT['HIDE_ADVANCED'] = 'Skjul avancerede indstillinger';
+$TEXT['HOME'] = 'Hjem';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Viderestilling af hjemmeside';
+$TEXT['HOME_FOLDER'] = 'Personlig folder';
+$TEXT['HOME_FOLDERS'] = 'Personlige foldere';
+$TEXT['HOST'] = 'V&aelig;rt';
+$TEXT['ICON'] = 'Ikon';
+$TEXT['IMAGE'] = 'Billede';
+$TEXT['INLINE'] = 'Indbygget';
+$TEXT['INSTALL'] = 'Install&eacute;r';
+$TEXT['INSTALLATION'] = 'Installation';
+$TEXT['INSTALLATION_PATH'] = 'Installationssti';
+$TEXT['INSTALLATION_URL'] = 'Installations URL';
+$TEXT['INSTALLED'] = 'installeret';
+$TEXT['INTRO'] = 'Introduktion';
+$TEXT['INTRO_PAGE'] = 'Intro-side';
+$TEXT['INVALID_SIGNS'] = 'skal begynde med et bogstav eller indeholder ugyldige tegn';
+$TEXT['KEYWORDS'] = 'N&oslash;gleord';
+$TEXT['LANGUAGE'] = 'Sprog';
+$TEXT['LAST_UPDATED_BY'] = 'Sidst opdateret af:';
+$TEXT['LENGTH'] = 'L&aelig;ngde';
+$TEXT['LEVEL'] = 'Niveau';
+$TEXT['LINK'] = 'Link';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix baseret';
+$TEXT['LIST_OPTIONS'] = 'Vis valgmuligheder';
+$TEXT['LOGGED_IN'] = 'Logget ind';
+$TEXT['LOGIN'] = 'Log ind';
+$TEXT['LONG'] = 'Lang';
+$TEXT['LONG_TEXT'] = 'Lang tekst';
+$TEXT['LOOP'] = 'Liste';
+$TEXT['MAIN'] = 'Hovedoversigt';
+$TEXT['MAINTENANCE_OFF'] = 'Vedligeholdelse tilvalgt';
+$TEXT['MAINTENANCE_ON'] = 'MaVedligeholdelse fravalgt';
+$TEXT['MANAGE'] = 'Administr&eacute;r';
+$TEXT['MANAGE_GROUPS'] = 'Administr&eacute;r grupper';
+$TEXT['MANAGE_USERS'] = 'Administr&eacute;r brugere';
+$TEXT['MATCH'] = 'Match';
+$TEXT['MATCHING'] = 'Matchende';
+$TEXT['MAX_EXCERPT'] = 'Max linier i udsnit';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. indsendte bidrag pr. time';
+$TEXT['MEDIA_DIRECTORY'] = 'Mediebibliotek (mappe)';
+$TEXT['MENU'] = 'Menu';
+$TEXT['MENU_ICON_0'] = 'Menu-ikon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-ikon sv&aelig;rende';
+$TEXT['MENU_TITLE'] = 'Menutitel';
+$TEXT['MESSAGE'] = 'Indl&aelig;g';
+$TEXT['MODIFY'] = 'Ret';
+$TEXT['MODIFY_CONTENT'] = 'Ret indhold';
+$TEXT['MODIFY_SETTINGS'] = 'Skift indstillinger';
+$TEXT['MODULE_ORDER'] = 'Modul-r&aelig;kkef&oslash;lge ved s&oslash;gning';
+$TEXT['MODULE_PERMISSIONS'] = 'Modulrettigheder';
+$TEXT['MORE'] = 'Mere';
+$TEXT['MOVE_DOWN'] = 'Flyt ned';
+$TEXT['MOVE_UP'] = 'Flyt op';
+$TEXT['MULTIPLE_MENUS'] = 'Flere menuer';
+$TEXT['MULTISELECT'] = 'Multi-valg';
+$TEXT['NAME'] = 'Navn';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'Bekr&aelig;ft med nuv&aelig;rende adgangskode';
+$TEXT['NEED_TO_LOGIN'] = 'Brug for at logge ind?';
+$TEXT['NEW_PASSWORD'] = 'Ny adgangskode';
+$TEXT['NEW_WINDOW'] = 'Nyt vindue';
+$TEXT['NEXT'] = 'N&aelig;ste';
+$TEXT['NEXT_PAGE'] = 'N&aelig;ste side';
+$TEXT['NO'] = 'Nej';
+$TEXT['NONE'] = 'Usynlig';
+$TEXT['NONE_FOUND'] = 'Ingen fundet';
+$TEXT['NOT_FOUND'] = 'Ikke fundet';
+$TEXT['NOT_INSTALLED'] = 'ikke installeret';
+$TEXT['NO_IMAGE_SELECTED'] = 'intet billede valgt';
+$TEXT['NO_RESULTS'] = 'Intet fundet';
+$TEXT['OF'] = 'af';
+$TEXT['ON'] = 'D.';
+$TEXT['OPEN'] = '&Aring;ben';
+$TEXT['OPTION'] = 'Mulighed';
+$TEXT['OTHERS'] = 'Andre';
+$TEXT['OUT_OF'] = 'ud af i alt';
+$TEXT['OVERWRITE_EXISTING'] = 'Overskriv eksisterende';
+$TEXT['PAGE'] = 'Side';
+$TEXT['PAGES_DIRECTORY'] = 'Sidebibliotek (mappe)';
+$TEXT['PAGES_PERMISSION'] = 'Sideadgang';
+$TEXT['PAGES_PERMISSIONS'] = 'Sideadgange';
+$TEXT['PAGE_EXTENSION'] = 'Side-udvidelse';
+$TEXT['PAGE_ICON'] = 'Sidebillede';
+$TEXT['PAGE_ICON_DIR'] = 'Sti til sider/menu billeder';
+$TEXT['PAGE_LANGUAGES'] = 'Sprog';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Max. sideantal';
+$TEXT['PAGE_SPACER'] = 'Side pladsmark&oslash;r';
+$TEXT['PAGE_TITLE'] = 'Titel p&aring; side';
+$TEXT['PAGE_TRASH'] = 'Papirkurv til sider';
+$TEXT['PARENT'] = 'Overliggende niveau';
+$TEXT['PASSWORD'] = 'Adgangskode';
+$TEXT['PATH'] = 'Sti';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP fejlrapporteringsniveau';
+$TEXT['PLEASE_LOGIN'] = 'Log ind';
+$TEXT['PLEASE_SELECT'] = 'V&aelig;lg venligst';
+$TEXT['POST'] = 'Indl&aelig;g';
+$TEXT['POSTS_PER_PAGE'] = 'Indl&aelig;g pr. side';
+$TEXT['POST_FOOTER'] = 'Fod (bund) p&aring; indl&aelig;g';
+$TEXT['POST_HEADER'] = 'Hoved p&aring; indl&aelig;g';
+$TEXT['PREVIOUS'] = 'Forrige';
+$TEXT['PREVIOUS_PAGE'] = 'Forrige side';
+$TEXT['PRIVATE'] = 'Privat';
+$TEXT['PRIVATE_VIEWERS'] = 'Private bes&oslash;gende';
+$TEXT['PROFILES_EDIT'] = 'Ret profil';
+$TEXT['PUBLIC'] = 'Offentlig';
+$TEXT['PUBL_END_DATE'] = 'Slutdato';
+$TEXT['PUBL_START_DATE'] = 'Startdato';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radioknap-gruppe';
+$TEXT['READ'] = 'L&aelig;s';
+$TEXT['READ_MORE'] = 'L&aelig;s mere';
+$TEXT['REDIRECT_AFTER'] = 'Videresend efter';
+$TEXT['REGISTERED'] = 'Registrerede';
+$TEXT['REGISTERED_VIEWERS'] = 'Registrerede brugere';
+$TEXT['RELOAD'] = 'Opdat&eacute;r';
+$TEXT['REMEMBER_ME'] = 'Husk mig';
+$TEXT['RENAME'] = 'Omd&oslash;b';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'Omd&oslash;b filer under opload';
+$TEXT['REQUIRED'] = 'Kr&aelig;vet';
+$TEXT['REQUIREMENT'] = 'Krav';
+$TEXT['RESET'] = 'Nulstil';
+$TEXT['RESIZE'] = 'Skift st&oslash;rrelse';
+$TEXT['RESIZE_IMAGE_TO'] = 'Forst&oslash;r/formindsk billede til';
+$TEXT['RESTORE'] = 'Gendannelse';
+$TEXT['RESTORE_DATABASE'] = 'Gendan database';
+$TEXT['RESTORE_MEDIA'] = 'Gendan medie-filer';
+$TEXT['RESULTS'] = 'Resultater';
+$TEXT['RESULTS_FOOTER'] = 'Resultatfod (bund)';
+$TEXT['RESULTS_FOR'] = 'Resultater for';
+$TEXT['RESULTS_HEADER'] = 'Resultathoved';
+$TEXT['RESULTS_LOOP'] = 'Resultatliste';
+$TEXT['RETYPE_NEW_PASSWORD'] = 'Skriv ny adgangskode igen';
+$TEXT['RETYPE_PASSWORD'] = 'Indtast adgangskode igen';
+$TEXT['SAME_WINDOW'] = 'Samme vindue';
+$TEXT['SAVE'] = 'Gem';
+$TEXT['SEARCH'] = 'S&oslash;g';
+$TEXT['SEARCHING'] = 'S&oslash;gefunktion';
+$TEXT['SECTION'] = 'Sektion';
+$TEXT['SECTION_BLOCKS'] = 'Sektionsblokke';
+$TEXT['SEC_ANCHOR'] = 'Sektionsankertekst';
+$TEXT['SELECT_BOX'] = 'Afkrydsningsboks';
+$TEXT['SEND_DETAILS'] = 'Send oplysninger';
+$TEXT['SEPARATE'] = 'Separat';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'Server email';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'Server operativsystem';
+$TEXT['SESSION_IDENTIFIER'] = 'Sessions-ID';
+$TEXT['SETTINGS'] = 'Indstillinger';
+$TEXT['SHORT'] = 'Kort';
+$TEXT['SHORT_TEXT'] = 'Kort tekst';
+$TEXT['SHOW'] = 'Vis';
+$TEXT['SHOW_ADVANCED'] = 'Vis avancerede indstillnger';
+$TEXT['SIGNUP'] = 'Registrering';
+$TEXT['SIZE'] = 'St&oslash;rrelse';
+$TEXT['SMART_LOGIN'] = 'Smart Log-ind';
+$TEXT['START'] = 'Start';
+$TEXT['START_PUBLISHING'] = 'Start offentligg&oslash;relse';
+$TEXT['SUBJECT'] = 'Emne';
+$TEXT['SUBMISSIONS'] = 'Indsendte bidrag';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = 'Indsendte bidrag gemt i databasen';
+$TEXT['SUBMISSION_ID'] = 'Tilmeldings-ID';
+$TEXT['SUBMITTED'] = 'Indsendt';
+$TEXT['SUCCESS'] = 'Oplysninger gemt';
+$TEXT['SYSTEM_DEFAULT'] = 'Systemstandard';
+$TEXT['SYSTEM_PERMISSIONS'] = 'Systemrettigheder';
+$TEXT['TABLE_PREFIX'] = 'Tabelpr&aelig;fix';
+$TEXT['TARGET'] = 'M&aring;l';
+$TEXT['TARGET_FOLDER'] = 'Mappeplacering';
+$TEXT['TEMPLATE'] = 'Skabelon';
+$TEXT['TEMPLATE_PERMISSIONS'] = 'Skabelon-tilladelser';
+$TEXT['TEXT'] = 'Tekst';
+$TEXT['TEXTAREA'] = 'Tekstomr&aring;de';
+$TEXT['TEXTFIELD'] = 'Tekstfelt';
+$TEXT['THEME'] = 'Backend-tema';
+$TEXT['TIME'] = 'Tid';
+$TEXT['TIMEZONE'] = 'Tidszone';
+$TEXT['TIME_FORMAT'] = 'Tidsformat';
+$TEXT['TIME_LIMIT'] = 'Max tid til uddrag per modul';
+$TEXT['TITLE'] = 'Titel';
+$TEXT['TO'] = 'Til';
+$TEXT['TOP_FRAME'] = 'Top frame';
+$TEXT['TRASH_EMPTIED'] = 'Papirkurv t&oslash;mt';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Rediger CSS definitioner i tekstfeltet nedenfor';
+$TEXT['TYPE'] = 'Type';
+$TEXT['UNDER_CONSTRUCTION'] = 'Under konstruktion';
+$TEXT['UNINSTALL'] = 'Afinstall&eacute;r';
+$TEXT['UNKNOWN'] = 'Ukendt';
+$TEXT['UNLIMITED'] = 'Ubegr&aelig;nset';
+$TEXT['UNZIP_FILE'] = 'Overf&oslash;r og udpak et zip-arkiv';
+$TEXT['UP'] = 'Op';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = 'Overf&oslash;r fil(er)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = 'Bruger';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'Brugeren er sat aktiv';
+$TEXT['USERS_CAN_SELFDELETE'] = 'Brugeren kan slette sig selv';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'Brugeren kan slette egne indstillinger';
+$TEXT['USERS_DELETED'] = 'Brugeren er slettemarkeret';
+$TEXT['USERS_FLAGS'] = 'Brugerm&aelig;rker';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'Brugeren kan lave udvidet profil';
+$TEXT['VERIFICATION'] = 'Indtast verifikationstal';
+$TEXT['VERSION'] = 'Version';
+$TEXT['VIEW'] = 'Se';
+$TEXT['VIEW_DELETED_PAGES'] = 'Vis slettede sider';
+$TEXT['VIEW_DETAILS'] = 'Se oplysninger';
+$TEXT['VISIBILITY'] = 'Synlighed';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Standard fra-adresse';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Standard afsendernavn';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Angiv standard "FRA"-adresse og "AFSENDER"-navn nedenfor. Det anbefales at angive FRA-adresse som: <strong>admin@dit-dom&aelig;ne.dk</strong>. Nogle udbydere (f.eks. <em>mail.com</em>) kan afvise emails med en FRA-adresse som <em>navn@mail.com</em>, hvis de er sendt via en anden udbyder, for at undg&aring; spam.<br /><br />Standardv&aelig;rdierne benyttes kun, hvis ingen andre v&aelig;rdier angives i WebsiteBaker. Hvis din server underst&oslash;tter <acronym title="Simple mail transfer protocol">SMTP</acronym>, kan du v&aelig;lge at bruge denne til udg&aring;ende emails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mailprogram';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP mail-program indstillinger:</strong><br />Indstillingerne nedenfor er kun n&oslash;dvendige, hvis du vil sende emails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. Hvis du ikke kender adressen p&aring; din SMTP-v&aelig;rt eller de kr&aelig;vede indstillinger, s&aring; hold dig til standardprogrammet, PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP brugeradgangskontrol';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = '- skal kun anvendes hvis din SMTP-v&aelig;rt bruger adgangskontrol';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP-v&aelig;rt';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP adgangskode';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = 'Websted';
+$TEXT['WEBSITE_DESCRIPTION'] = 'Beskrivelse af dit websted';
+$TEXT['WEBSITE_FOOTER'] = 'Webstedsfod (bund)';
+$TEXT['WEBSITE_HEADER'] = 'Webstedshoved';
+$TEXT['WEBSITE_KEYWORDS'] = 'Webstedsn&oslash;gleord';
+$TEXT['WEBSITE_TITLE'] = 'Titel p&aring; dit websted';
+$TEXT['WELCOME_BACK'] = 'Velkommen igen';
+$TEXT['WIDTH'] = 'Bredde';
+$TEXT['WINDOW'] = 'Vindue';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'Globale skriverettigheder';
+$TEXT['WRITE'] = 'Skriv';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG-editor';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG-stil';
+$TEXT['YES'] = 'Ja';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On krav er ikke opfyldt';
+$HEADING['ADD_CHILD_PAGE'] = 'Tilf&oslash;j underside';
+$HEADING['ADD_GROUP'] = 'Tilf&oslash;j gruppe';
+$HEADING['ADD_GROUPS'] = 'Tilf&oslash;j grupper';
+$HEADING['ADD_HEADING'] = 'Tilf&oslash;j overskrift';
+$HEADING['ADD_PAGE'] = 'Tilf&oslash;j side';
+$HEADING['ADD_USER'] = 'Tilf&oslash;j bruger';
+$HEADING['ADMINISTRATION_TOOLS'] = 'Administrationsv&aelig;rkt&oslash;jer';
+$HEADING['BROWSE_MEDIA'] = 'Gennemse medie-mappe';
+$HEADING['CREATE_FOLDER'] = 'Opret mappe';
+$HEADING['DEFAULT_SETTINGS'] = 'Standard indstillinger';
+$HEADING['DELETED_PAGES'] = 'Slettede sider';
+$HEADING['FILESYSTEM_SETTINGS'] = 'Filsystem-indstillinger';
+$HEADING['GENERAL_SETTINGS'] = 'Generelle indstillinger';
+$HEADING['INSTALL_LANGUAGE'] = 'Install&eacute;r sprog';
+$HEADING['INSTALL_MODULE'] = 'Install&eacute;r modul';
+$HEADING['INSTALL_TEMPLATE'] = 'Install&eacute;r skabelon';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'H&aring;ndter sprogfiler manuelt';
+$HEADING['INVOKE_MODULE_FILES'] = 'H&aring;ndter modulfiler manuelt';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'H&aring;ndter skabelonfiler manuelt';
+$HEADING['LANGUAGE_DETAILS'] = 'Info om sprog';
+$HEADING['MANAGE_SECTIONS'] = 'Administr&eacute;r sektioner';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = 'Rediger avancerede indstillinger for hjemmesiden';
+$HEADING['MODIFY_DELETE_GROUP'] = 'Ret/slet gruppe';
+$HEADING['MODIFY_DELETE_PAGE'] = 'Ret/slet side';
+$HEADING['MODIFY_DELETE_USER'] = 'Ret/slet bruger';
+$HEADING['MODIFY_GROUP'] = 'Ret gruppe';
+$HEADING['MODIFY_GROUPS'] = 'Ret grupper';
+$HEADING['MODIFY_INTRO_PAGE'] = 'Rediger intro-side';
+$HEADING['MODIFY_PAGE'] = 'Rediger side';
+$HEADING['MODIFY_PAGE_SETTINGS'] = 'Rediger side-indstillinger';
+$HEADING['MODIFY_USER'] = 'Ret bruger';
+$HEADING['MODULE_DETAILS'] = 'Info om modul';
+$HEADING['MY_EMAIL'] = 'Min email-adresse';
+$HEADING['MY_PASSWORD'] = 'Min adgangskode';
+$HEADING['MY_SETTINGS'] = 'Mine indstillinger';
+$HEADING['SEARCH_SETTINGS'] = 'S&oslash;ge-indstillinger';
+$HEADING['SERVER_SETTINGS'] = 'Server-indstillinger';
+$HEADING['TEMPLATE_DETAILS'] = 'Info om skabelon';
+$HEADING['UNINSTALL_LANGUAGE'] = 'Afinstall&eacute;r sprog';
+$HEADING['UNINSTALL_MODULE'] = 'Afinstall&eacute;r modul';
+$HEADING['UNINSTALL_TEMPLATE'] = 'Afinstall&eacute;r skabelon';
+$HEADING['UPGRADE_LANGUAGE'] = 'Sprogopgradering';
+$HEADING['UPLOAD_FILES'] = 'Overf&oslash;r fil(er)';
+$HEADING['WBMAILER_SETTINGS'] = 'E-mail-indstillinger';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Fejl under opdatering af tilf&oslash;jelse.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Sprog indl&aelig;st';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>PAS P&aring;!</strong> Af sikkerhedsgrunde b&oslash;r sprogfiler kun indl&aelig;ses i folderen /languages/ med FTP, og opgraderingsfunktionen b&oslash;r bruges til registrering/opdatering.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Advarsel: Eksisterende moduler i databasen vil g&aring; tabt. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'N&aring;r moduler overf&oslash;res med FTP (anbefales ikke), udf&oslash;res installatonsfunktionerne  <tt>installer</tt>, <tt>opgrader</tt> eller <tt>afinstaller</tt> ikke automatisk. Modulerne vil m&aring;ske ikke fungere korrekt eller bliver rigtigt afinstallerett.<br /><br />Du kan nedenfor udf&oslash;re modulfunktionerne manuelt for moduler, der er overf&oslash;rt via FTP.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Advarsel: Eksisterende moduler i databasen vil g&aring; tabt. Brug kun denne funktion, hvis du oplever problemer med moduler, der er overf&oslash;rt med FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Advarsel: Eksisterende moduler i databasen vil g&aring; tabt. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Moduler er genindl&aelig;st';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overskriv nyere filer';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Installation af tilf&oring;jelsen mislykkedes. Dit system opfylder ikke kravene til denne tilf&oring;jelse. For at f&aring; denne tilf&oslash;jelse til at virke i dit system, skal du rette de forhold, der opregnes nedenfor.';
+$MESSAGE['ADDON_RELOAD'] = 'Opdater databasen med information fra tilf&oslash;jelsesfiler (f.eks. efter FTP-overf&oslash;rsel).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Skabeloner genindl&aelig;st';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = 'Du har ikke den n&oslash;dvendige adgang til dette omr&aring;de';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = 'Adgangskode kan kun nulstilles 1 gang i timen - beklager!';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = 'Kunne ikke sende din adgangskode til din email-adresse - Kontakt en systemadministrator';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Den email-adresse du indtastede findes ikke i vores database';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = 'Indtast din email-adresse nedenfor';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Beklager - intet aktivit indhold at vise';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = 'Beklager - du har ikke adgang til at se denne side';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = 'Er allerede installeret';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = 'Kan ikke skrive i det valgte modtagebibliotek (mappe)';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Hav lidt t&aring;lmodighed';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = 'Kan ikke afinstallere';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = 'Kan ikke afinstallere: Den valgte fil er i brug';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> kan ikke afinstalleres, da den stadig bruges p&aring; {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'denne side/disse sider';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Kan ikke afinstallere skabelonen <b>{{name}}</b>, da den er standardskabelonen!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'kan ikek afinstallere skabelonen <b>{{name}}</b>, da den er standard administrator-skabelon!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'Kan ikke udpakke fil';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = 'Kunne ikke overf&oslash;re filen';
+$MESSAGE['GENERIC_COMPARE'] = ' uden fejl';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = 'Fejl ved &aring;bning af filen.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' mislykkedes';
+$MESSAGE['GENERIC_FILE_TYPE'] = 'OBS: V&aelig;r opm&aelig;rksom p&aring; at den fil du vil overf&oslash;re skal v&aelig;re i flg. format:';
+$MESSAGE['GENERIC_FILE_TYPES'] = 'OBS: V&aelig;r opm&aelig;rksom p&aring; at den fil du vil overf&oslash;re skal v&aelig;re i et af flg. formater:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = 'G&aring; venligst tilbage og udfyld alle felter';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'Du har intet valgt!';
+$MESSAGE['GENERIC_INSTALLED'] = 'Installeret';
+$MESSAGE['GENERIC_INVALID'] = 'Filen du overf&oslash;rte er fejlbeh&aelig;ftet';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'WebsiteBaker installationsfil ikke i korrekt format. Kontroller *.zip formatet.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'WebsiteBaker sprogfil ikke i korrekt format. Kontroller tekstfilen.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'WebsiteBaker modulfil ikke gyldig. Kontroller tekstfilen.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'WebsiteBaker skabelon ikke gyldig. Kontroller tekstfilen.';
+$MESSAGE['GENERIC_IN_USE'] = ' men bruges i ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Arkivfil mangler!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'Modulet er ikke korrekt installeret!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' ikke mulig';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = 'Ikke installeret';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Opdatering ikke mulig';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = 'V&aelig;r t&aring;lmodig, dette kan godt vare et stykke tid.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = 'Kom venligst igen senere...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Sikerhedsbrud! Adgang afsl&aring;et!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Sikerhedsbrud! Lagring n&aelig;gtet!';
+$MESSAGE['GENERIC_UNINSTALLED'] = 'Afinstalleret';
+$MESSAGE['GENERIC_UPGRADED'] = 'Opgraderet';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Versionssammenligning';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Opgraderng n&oslash;dvending!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Nedgraderng';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'Dette websted er midlertidigt lukket p&aring; grund af vedligeholdelse';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = 'Websted under konstruktion';
+$MESSAGE['GROUPS_ADDED'] = 'Gruppen er tilf&oslash;jet';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = 'Er du helt sikker p&aring; du vil slette denne gruppe (og alle brugere som tilh&oslash;rer den)?';
+$MESSAGE['GROUPS_DELETED'] = 'Gruppen er slettet';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = 'Gruppenavn er ikke udfyldt';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = 'Gruppens navn findes allerede';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = 'Der blev ikke fundet nogen grupper';
+$MESSAGE['GROUPS_SAVED'] = 'Gruppen er gemt';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = 'Angiv en adgangskode ';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = 'Den indtastede adgangskode er for LANG';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = 'Den indtastede adgangskode er for KORT';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = 'Du har ikke angivet en filtype';
+$MESSAGE['MEDIA_BLANK_NAME'] = 'Du indtastede ikke et nyt navn';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = 'Kan ikke slette valgte bibliotek (mappe)';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = 'Kan ikke slette den valgte fil';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = 'Omd&oslash;bning kunne ikke udf&oslash;res';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = 'Er du sikker p&aring; du &oslash;nsker at slette flg. fil/bibliotek (mappe)?';
+$MESSAGE['MEDIA_DELETED_DIR'] = 'Bibliotek (mappe) slettet';
+$MESSAGE['MEDIA_DELETED_FILE'] = 'Filen er slettet';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = 'Mappen eksisterer ikke';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = 'Kan ikke inkludere ../ i mappenavnet';
+$MESSAGE['MEDIA_DIR_EXISTS'] = 'Der findes allerede et bibliotek (en mappe) med det navn du indtastede!';
+$MESSAGE['MEDIA_DIR_MADE'] = 'Bibliotek (mappe) blev oprettet';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = 'Kunne ikke oprette biblioteket (mappen)';
+$MESSAGE['MEDIA_FILE_EXISTS'] = 'Der findes allerede en fil med det navn du indtastede';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = 'Filen ikke fundet';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = 'Kan ikke inkludere ../ i navnet';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = 'Kan ikke anvende index.php som navn';
+$MESSAGE['MEDIA_NONE_FOUND'] = 'Der blev ikke fundet medie-filer i det p&aring;g&aelig;ldende bibliotek (mappe)';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'Ingen fil overf&oslash;rt';
+$MESSAGE['MEDIA_RENAMED'] = 'Omd&oslash;bning udf&oslash;rt';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = 'fil blev overf&oslash;rt';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = 'Kan ikke have ../ i placeringen af biblioteket (mappen)';
+$MESSAGE['MEDIA_UPLOADED'] = 'filer blev overf&oslash;rt';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = 'Beklager! Denne formular er blevet afsendt for mange gange indenfor den sidste time, og du vil derfor blive afvist - Pr&oslash;v igen om en times tid!';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = 'Verifikationstallene (ogs&aring; kendt som Captcha) som du tastede er ikke korrekte. Hvis du har problemer med at l&aelig;se Captha tallene, s&aring; kontakt venligst sidens Administrator p&aring; denne mailadresse: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = 'Du skal udfylde f&oslash;lgende felter:';
+$MESSAGE['PAGES_ADDED'] = 'Siden er tilf&oslash;jet';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Overskrift til side tilf&oslash;jet';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = 'Indtast venligst en overskrift til menuen';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = 'Indtast venligst en overskrift til siden';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = 'Fejl under oprettelse af adgangsfil i /pages biblioteket (mappen) (utilstr&aelig;kkelige rettigheder)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = 'Fejl under sletning af adgangsfil i /pages biblioteket  (utilstr&aelig;kkelige rettigheder)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = 'Fejl ved fors&oslash;g p&aring; at omorganisere siden';
+$MESSAGE['PAGES_DELETED'] = 'Siden er slettet';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = 'Er du sikker p&aring; du &oslash;nsker at slette den valgte side (og alle dens undersider)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = 'Du har ikke rettigheder til at &aelig;ndre denne side';
+$MESSAGE['PAGES_INTRO_LINK'] = 'Klik HER for at &aelig;ndre din intro-side!';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = 'Kan ikke skrive til filen /pages/intro.php (utilstr&aelig;kkelige rettigheder)';
+$MESSAGE['PAGES_INTRO_SAVED'] = 'Introside gemt';
+$MESSAGE['PAGES_LAST_MODIFIED'] = 'Sidste &aelig;ndring blev foretaget af:';
+$MESSAGE['PAGES_NOT_FOUND'] = 'Siden blev ikke fundet';
+$MESSAGE['PAGES_NOT_SAVED'] = 'Der opstod en fejl under fors&oslash;get p&aring; at gemme siden';
+$MESSAGE['PAGES_PAGE_EXISTS'] = 'Der findes allerede en side med dette eller lign. navn';
+$MESSAGE['PAGES_REORDERED'] = 'Siden er omorganiseret';
+$MESSAGE['PAGES_RESTORED'] = 'Siden er gendannet';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = 'Tilbage til sider';
+$MESSAGE['PAGES_SAVED'] = 'Siden er gemt';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = 'Side-indstillinger er gemt';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = 'Egenskaber for sektion er &aelig;ndret';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = 'Den (nuv&aelig;rende) adgangskode som du indtastede er ikke korrekt';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = 'Oplysningerne er gemt';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email-adresse opdateret';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Ugyldige tegn i adgangskode';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = 'Adgangskode &aelig;ndret';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = '&Aelig;ndring mislykket';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = '&Aelig;ndring udf&oslash;rt.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Tilf&oslash;jelse af nu post mislykkedes.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'Ny post tilf&oslash;jet.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = '<br>OBS: Ved at klikke p&aring; denne knap tabes alle &aelig;ndringer, der ikke er gemt!';
+$MESSAGE['SETTINGS_SAVED'] = 'Indstillingerne er gemt';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = 'Er ikke i stand til at &aring;bne konfigurationsfilen';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = 'Kan ikke skrive til konfigurationsfilen (check rettigheder for filen)';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = 'OBS! Dette anbefales kun i testmilj&oslash;er ';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+En ny bruger er registreret.
+
+Loginname: {LOGIN_NAME}
+BrugerId: {LOGIN_ID}
+Email: {LOGIN_EMAIL}
+IP-adresse: {LOGIN_IP}
+Registreringsdato: {SIGNUP_DATE}
+----------------------------------------
+Denne meddelselse er sendt automatisk.
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hej {LOGIN_DISPLAY_NAME},
+
+Denne besked er sendt, fordi funktionen  \'Glemt adgangskode\' er blevet anvendt.
+
+Dine nye \'{LOGIN_WEBSITE_TITLE}\' logind-oplysninger er:
+
+Loginname: {LOGIN_NAME}
+Adgangskode: {LOGIN_PASSWORD}
+
+Din adgangskode er &aelig;ndret til ovenst&aring;ende.
+Det betyder, at din gamle adgangskode ikke kan anvendes mere.
+hvis du har sp&oslash;rgsm&aring;l til eller problemer med dine nye adgangsoplysninger
+b&oslash;r du kontakte webstedet eller administatoren for \'{LOGIN_WEBSITE_TITLE}\'.
+Husk at slette din browsers hukommelse (cache) for at undg&aring; problemer med at logge ind.
+
+Venlig hilsen
+------------------------------------
+Denne besked er sendt automatisk
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hej {LOGIN_DISPLAY_NAME},
+
+Velkommen til \'{LOGIN_WEBSITE_TITLE}\'.
+
+Dine adgangsoplysninger til \'{LOGIN_WEBSITE_TITLE}\' er:
+Loginname: {LOGIN_NAME}
+Adgangskode: {LOGIN_PASSWORD}
+
+Venlig hilsen
+
+Hvis du har modtaget denne besked ved en fejl, bedes du straks slette den.
+------------------------------------
+Denne besked er sendt automatisk
+
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Dine login-oplysninger...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = 'Du skal indtaste en gyldig email-adresse';
+$MESSAGE['START_CURRENT_USER'] = 'Du er lige nu logget ind som:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = 'ADVARSEL! Installationsbiblioteket (mappen) findes stadig p&aring; serveren. Du b&oslash;r slette den straks af hensyn til sikkerheden!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = 'Velkommen til administration af din WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = 'OBS: For at &aelig;ndre skabelonen skal du g&aring; til punktet indstillinger';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = 'Brugeren er oprettet';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Funktionen udf&oslash;res ikke - du kan ikke slette dig selv';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = 'OBS! Du skal kun indtaste v&aelig;rdier i felterne ovenfor, s&aring;fremt du &oslash;nsker at &aelig;ndre denne brugers adgangskode';
+$MESSAGE['USERS_CONFIRM_DELETE'] = 'Er du sikker p&aring; at du vil slette den valgte bruger?';
+$MESSAGE['USERS_DELETED'] = 'Brugeren er slettet';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Den email-adresse du indtastede findes i forvejen';
+$MESSAGE['USERS_INVALID_EMAIL'] = 'Email-adressen du indtastede er ugyldig';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = 'Ingen gruppe er valgt';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = 'De to adgangskoder du indtastede  er ikke ens';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = 'Den angivne adgangskode er for kort';
+$MESSAGE['USERS_SAVED'] = 'Brugeren er gemt';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'WebsiteBaker administrationsv&aelig;rkt&oslash;jer...';
+$OVERVIEW['GROUPS'] = 'Administr&eacute;r brugergrupper og deres systemrettigheder...';
+$OVERVIEW['HELP'] = 'Sp&oslash;rgsm&aring;l? Find dine svar her...';
+$OVERVIEW['LANGUAGES'] = 'Administration af sprog i WebsiteBaker...';
+$OVERVIEW['MEDIA'] = 'Administr&eacute;r filer i mappen medier...';
+$OVERVIEW['MODULES'] = 'Administr&eacute;r WebsiteBaker moduler...';
+$OVERVIEW['PAGES'] = 'Administr&eacute;r dine websider...';
+$OVERVIEW['PREFERENCES'] = 'Tilpas pr&aelig;ferencer s&aring;som email-adresse, adgangskode, etc... ';
+$OVERVIEW['SETTINGS'] = 'Tilpas indstillinger for WebsiteBaker...';
+$OVERVIEW['START'] = 'Administrationsoversigt';
+$OVERVIEW['TEMPLATES'] = 'Skift udseende og layout/design p&aring; din webside v.h.a. skabeloner....';
+$OVERVIEW['USERS'] = 'Administr&eacute;r brugere som kan logge ind p&aring; WebsiteBaker systemet...';
+$OVERVIEW['VIEW'] = 'Hurtig visning og gennemsyn af dit Websted i et nyt vindue..';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/DA.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/RU.php
===================================================================
--- tags/2.8.3/wb/languages/RU.php	(nonexistent)
+++ tags/2.8.3/wb/languages/RU.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'RU';
+$language_name = 'Russian';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Kirill Karakulko (kirill@nadosoft.com)';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = '&#1044;&#1086;&#1089;&#1090;&#1091;&#1087;';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = '&#1044;&#1086;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1077; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1080;';
+$MENU['ADMINTOOLS'] = '&#1040;&#1076;&#1084;&#1080;&#1085;-&#1087;&#1072;&#1085;&#1077;&#1083;&#1100;';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = '&#1047;&#1072;&#1073;&#1099;&#1083;&#1080; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;?';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1099;';
+$MENU['HELP'] = '&#1055;&#1086;&#1084;&#1086;&#1097;&#1100;';
+$MENU['LANGUAGES'] = '&#1071;&#1079;&#1099;&#1082;&#1080;';
+$MENU['LOGIN'] = '&#1042;&#1093;&#1086;&#1076;';
+$MENU['LOGOUT'] = '&#1042;&#1099;&#1093;&#1086;&#1076;';
+$MENU['MEDIA'] = '&#1060;&#1072;&#1081;&#1083;&#1099;';
+$MENU['MODULES'] = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1080;';
+$MENU['PAGES'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$MENU['PREFERENCES'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072;';
+$MENU['SETTINGS'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$MENU['START'] = '&#1057;&#1090;&#1072;&#1088;&#1090;';
+$MENU['TEMPLATES'] = '&#1064;&#1072;&#1073;&#1083;&#1086;&#1085;&#1099;';
+$MENU['USERS'] = '&#1055;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1080;';
+$MENU['VIEW'] = '&#1055;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100;';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = 'Account Sign-Up';
+$TEXT['ACTIONS'] = '&#1044;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1103;';
+$TEXT['ACTIVE'] = '&#1040;&#1082;&#1090;&#1080;&#1074;&#1085;&#1072;&#1103;';
+$TEXT['ADD'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100;';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1089;&#1077;&#1082;&#1094;&#1080;&#1102;';
+$TEXT['ADMIN'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;';
+$TEXT['ADMINISTRATION'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['ADMINISTRATION_TOOL'] = '&#1057;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1072; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103;';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;&#1099;';
+$TEXT['ADVANCED'] = '&#1056;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1085;&#1099;&#1077;';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = '&#1056;&#1072;&#1079;&#1088;&#1077;&#1096;&#1077;&#1085;&#1085;&#1099;&#1077; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1080;';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = '&#1056;&#1072;&#1079;&#1088;&#1077;&#1096;&#1080;&#1090;&#1100; &#1084;&#1091;&#1083;&#1100;&#1090;&#1080;-&#1074;&#1099;&#1073;&#1086;&#1088;';
+$TEXT['ALL_WORDS'] = '&#1042;&#1089;&#1077; &#1089;&#1083;&#1086;&#1074;&#1072;';
+$TEXT['ANCHOR'] = '&#1071;&#1082;&#1086;&#1088;&#1100;';
+$TEXT['ANONYMOUS'] = 'Anonymous';
+$TEXT['ANY_WORDS'] = '&#1051;&#1102;&#1073;&#1086;&#1077; &#1089;&#1083;&#1086;&#1074;&#1086;';
+$TEXT['APP_NAME'] = '&#1048;&#1084;&#1103; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['ARE_YOU_SURE'] = '&#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;?';
+$TEXT['AUTHOR'] = '&#1040;&#1074;&#1090;&#1086;&#1088;';
+$TEXT['BACK'] = '&#1053;&#1072;&#1079;&#1072;&#1076;';
+$TEXT['BACKUP'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086;&#1077; &#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['BACKUP_ALL_TABLES'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086;&#1077; &#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1074;&#1089;&#1077;&#1093; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094; &#1073;&#1072;&#1079;&#1099;';
+$TEXT['BACKUP_DATABASE'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086;&#1077; &#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1073;&#1072;&#1079;&#1099; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;';
+$TEXT['BACKUP_MEDIA'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086;&#1077; &#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; Media';
+$TEXT['BACKUP_WB_SPECIFIC'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086;&#1077; &#1082;&#1086;&#1087;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094; CMS';
+$TEXT['BASIC'] = '&#1054;&#1089;&#1085;&#1086;&#1074;&#1085;&#1099;&#1077;';
+$TEXT['BLOCK'] = '&#1041;&#1083;&#1086;&#1082;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$TEXT['CALENDAR'] = '&#1050;&#1072;&#1083;&#1077;&#1085;&#1076;&#1072;&#1088;&#1100;';
+$TEXT['CANCEL'] = '&#1054;&#1090;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = '&#1043;&#1088;&#1072;&#1092;&#1080;&#1095;&#1077;&#1089;&#1082;&#1072;&#1103; &#1074;&#1077;&#1088;&#1080;&#1092;&#1080;&#1082;&#1080;&#1094;&#1080;&#1103;';
+$TEXT['CAP_EDIT_CSS'] = '&#1056;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; CSS';
+$TEXT['CHANGE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;';
+$TEXT['CHANGES'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['CHANGE_SETTINGS'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1077; &#1089;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;';
+$TEXT['CHARSET'] = '&#1050;&#1086;&#1076;&#1080;&#1088;&#1086;&#1074;&#1082;&#1072;';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox &#1075;&#1088;&#1091;&#1087;&#1087;&#1072;';
+$TEXT['CLOSE'] = '&#1047;&#1072;&#1082;&#1088;&#1099;&#1090;&#1100;';
+$TEXT['CODE'] = '&#1050;&#1086;&#1076;';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = '&#1057;&#1074;&#1077;&#1088;&#1085;&#1091;&#1090;&#1100;';
+$TEXT['COMMENT'] = '&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$TEXT['COMMENTING'] = '&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1080;&#1088;&#1091;&#1102;';
+$TEXT['COMMENTS'] = '&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1080;';
+$TEXT['CREATE_FOLDER'] = '&#1057;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1087;&#1072;&#1087;&#1082;&#1091;';
+$TEXT['CURRENT'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072;&#1103;';
+$TEXT['CURRENT_FOLDER'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072;&#1103; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['CURRENT_PAGE'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['CURRENT_PASSWORD'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1080;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['CUSTOM'] = '&#1047;&#1072;&#1076;&#1072;&#1090;&#1100; e-mail';
+$TEXT['DATABASE'] = '&#1041;&#1072;&#1079;&#1072; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;';
+$TEXT['DATE'] = '&#1044;&#1072;&#1090;&#1072;';
+$TEXT['DATE_FORMAT'] = '&#1060;&#1086;&#1088;&#1084;&#1072;&#1090; &#1076;&#1072;&#1090;&#1099;';
+$TEXT['DEFAULT'] = '&#1055;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;';
+$TEXT['DEFAULT_CHARSET'] = '&#1050;&#1086;&#1076;&#1080;&#1088;&#1086;&#1074;&#1082;&#1072; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;';
+$TEXT['DEFAULT_TEXT'] = '&#1058;&#1077;&#1082;&#1089;&#1090; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;';
+$TEXT['DELETE'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;';
+$TEXT['DELETED'] = '&#1059;&#1076;&#1072;&#1083;&#1077;&#1085;&#1085;&#1072;&#1103;';
+$TEXT['DELETE_DATE'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1076;&#1072;&#1090;&#1091;';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = '&#1054;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['DESIGNED_FOR'] = '&#1057;&#1086;&#1079;&#1076;&#1072;&#1085;&#1086; &#1076;&#1083;&#1103;';
+$TEXT['DIRECTORIES'] = '&#1055;&#1072;&#1087;&#1082;&#1080;';
+$TEXT['DIRECTORY_MODE'] = 'Directory Mode';
+$TEXT['DISABLED'] = '&#1054;&#1090;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$TEXT['DISPLAY_NAME'] = '&#1042;&#1099;&#1074;&#1077;&#1089;&#1090;&#1080; &#1053;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Email &#1072;&#1076;&#1088;&#1077;&#1089;';
+$TEXT['EMPTY_TRASH'] = '&#1054;&#1095;&#1080;&#1089;&#1090;&#1080;&#1090;&#1100; &#1082;&#1086;&#1088;&#1079;&#1080;&#1085;&#1091;';
+$TEXT['ENABLED'] = '&#1055;&#1088;&#1080;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$TEXT['END'] = '&#1047;&#1072;&#1082;&#1086;&#1085;&#1095;&#1080;&#1090;&#1100;';
+$TEXT['ERROR'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;';
+$TEXT['EXACT_MATCH'] = '&#1058;&#1086;&#1095;&#1085;&#1086;&#1077; &#1089;&#1086;&#1074;&#1087;&#1072;&#1076;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['EXECUTE'] = '&#1047;&#1072;&#1087;&#1091;&#1089;&#1082;';
+$TEXT['EXPAND'] = '&#1056;&#1072;&#1089;&#1082;&#1088;&#1099;&#1090;&#1100;';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = '&#1055;&#1086;&#1083;&#1077;';
+$TEXT['FILE'] = '&#1060;&#1072;&#1081;&#1083;';
+$TEXT['FILES'] = '&#1060;&#1072;&#1081;&#1083;&#1099;';
+$TEXT['FILESYSTEM_PERMISSIONS'] = '&#1055;&#1088;&#1072;&#1074;&#1072; &#1085;&#1072; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1086;&#1081; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1077;';
+$TEXT['FILE_MODE'] = 'File Mode';
+$TEXT['FINISH_PUBLISHING'] = '&#1047;&#1072;&#1082;&#1086;&#1085;&#1095;&#1080;&#1090;&#1100; &#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1072;&#1094;&#1080;&#1102;';
+$TEXT['FOLDER'] = '&#1055;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['FOLDERS'] = '&#1055;&#1072;&#1087;&#1082;&#1080;';
+$TEXT['FOOTER'] = '&#1053;&#1080;&#1078;&#1085;&#1103;&#1103; &#1095;&#1072;&#1089;&#1090;&#1100;';
+$TEXT['FORGOTTEN_DETAILS'] = '&#1047;&#1072;&#1073;&#1099;&#1083;&#1080; &#1074;&#1072;&#1096;&#1080; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;?';
+$TEXT['FORGOT_DETAILS'] = '&#1047;&#1072;&#1073;&#1099;&#1083;&#1080; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;?';
+$TEXT['FROM'] = '&#1080;&#1079;';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = '&#1055;&#1086;&#1083;&#1085;&#1086;&#1077; &#1080;&#1084;&#1103;';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1072;';
+$TEXT['HEADER'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;';
+$TEXT['HEADING'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;';
+$TEXT['HEADING_CSS_FILE'] = '&#1048;&#1084;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072;: ';
+$TEXT['HEIGHT'] = '&#1042;&#1099;&#1089;&#1086;&#1090;&#1072;';
+$TEXT['HIDDEN'] = '&#1057;&#1082;&#1088;&#1099;&#1090;&#1099;&#1081;(&#1072;&#1103;)';
+$TEXT['HIDE'] = '&#1057;&#1087;&#1088;&#1103;&#1090;&#1072;&#1090;&#1100;';
+$TEXT['HIDE_ADVANCED'] = '&#1057;&#1087;&#1088;&#1103;&#1090;&#1103;&#1090;&#1100; &#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1085;&#1099;&#1077; &#1086;&#1087;&#1094;&#1080;&#1080;';
+$TEXT['HOME'] = '&#1043;&#1083;&#1072;&#1074;&#1085;&#1072;&#1103;';
+$TEXT['HOMEPAGE_REDIRECTION'] = '&#1055;&#1077;&#1088;&#1077;&#1085;&#1072;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1076;&#1086;&#1084;&#1072;&#1096;&#1085;&#1077;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = '&#1048;&#1082;&#1086;&#1085;&#1082;&#1072;';
+$TEXT['IMAGE'] = '&#1050;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1091;';
+$TEXT['INLINE'] = '&#1042;&#1089;&#1090;&#1088;&#1086;&#1077;&#1085;&#1085;&#1072;&#1103;';
+$TEXT['INSTALL'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100;';
+$TEXT['INSTALLATION'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1072;';
+$TEXT['INSTALLATION_PATH'] = '&#1055;&#1091;&#1090;&#1100; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$TEXT['INSTALLATION_URL'] = 'URL &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = '&#1047;&#1072;&#1089;&#1090;&#1072;&#1074;&#1082;&#1072;';
+$TEXT['INTRO_PAGE'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;-&#1079;&#1072;&#1089;&#1090;&#1072;&#1074;&#1082;&#1072;';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = '&#1050;&#1083;&#1102;&#1095;&#1077;&#1074;&#1099;&#1077; &#1089;&#1083;&#1086;&#1074;&#1072;';
+$TEXT['LANGUAGE'] = '&#1071;&#1079;&#1099;&#1082;';
+$TEXT['LAST_UPDATED_BY'] = '&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1077;&#1077; &#1086;&#1073;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;: ';
+$TEXT['LENGTH'] = '&#1044;&#1083;&#1080;&#1085;&#1072;';
+$TEXT['LEVEL'] = '&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100;';
+$TEXT['LINK'] = '&#1057;&#1089;&#1099;&#1083;&#1082;&#1072;';
+$TEXT['LINUX_UNIX_BASED'] = 'Linux/Unix';
+$TEXT['LIST_OPTIONS'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1089;&#1087;&#1080;&#1089;&#1082;&#1072;';
+$TEXT['LOGGED_IN'] = '&#1042;&#1093;&#1086;&#1076; &#1086;&#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1083;&#1077;&#1085;';
+$TEXT['LOGIN'] = '&#1042;&#1093;&#1086;&#1076;';
+$TEXT['LONG'] = '&#1055;&#1086;&#1083;&#1085;&#1086;&#1089;&#1090;&#1100;&#1102;';
+$TEXT['LONG_TEXT'] = '&#1058;&#1077;&#1082;&#1089;&#1090; &#1087;&#1086;&#1083;&#1085;&#1086;&#1089;&#1090;&#1100;&#1102;';
+$TEXT['LOOP'] = '&#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1072;&#1103; &#1095;&#1072;&#1089;&#1090;&#1100;';
+$TEXT['MAIN'] = '&#1043;&#1083;&#1072;&#1074;&#1085;&#1072;&#1103;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;:';
+$TEXT['MANAGE_GROUPS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1075;&#1088;&#1091;&#1087;&#1087;&#1072;&#1084;&#1080;';
+$TEXT['MANAGE_USERS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;&#1084;&#1080;';
+$TEXT['MATCH'] = '&#1057;&#1086;&#1074;&#1087;&#1072;&#1076;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['MATCHING'] = '&#1057;&#1086;&#1074;&#1087;&#1072;&#1076;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['MAX_EXCERPT'] = 'Max &#1089;&#1090;&#1088;&#1086;&#1082; &#1089; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1072;&#1084;&#1080;';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = 'Max. &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1081; &#1074; &#1095;&#1072;&#1089;';
+$TEXT['MEDIA_DIRECTORY'] = '&#1044;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;';
+$TEXT['MENU'] = '&#1052;&#1077;&#1085;&#1102;';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1084;&#1077;&#1085;&#1102;';
+$TEXT['MESSAGE'] = '&#1057;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['MODIFY'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;';
+$TEXT['MODIFY_CONTENT'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['MODIFY_SETTINGS'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$TEXT['MODULE_ORDER'] = '&#1055;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1084;&#1086;&#1076;&#1091;&#1083;&#1077;&#1081; &#1087;&#1088;&#1080; &#1087;&#1086;&#1080;&#1089;&#1082;&#1077;';
+$TEXT['MODULE_PERMISSIONS'] = '&#1055;&#1088;&#1072;&#1074;&#1072; &#1074; &#1084;&#1086;&#1076;&#1091;&#1083;&#1077;';
+$TEXT['MORE'] = '&#1041;&#1086;&#1083;&#1100;&#1096;&#1077;';
+$TEXT['MOVE_DOWN'] = '&#1055;&#1077;&#1088;&#1077;&#1076;&#1074;&#1080;&#1085;&#1091;&#1090;&#1100; &#1074;&#1085;&#1080;&#1079;';
+$TEXT['MOVE_UP'] = '&#1055;&#1077;&#1088;&#1077;&#1076;&#1074;&#1080;&#1085;&#1091;&#1090;&#1100; &#1074;&#1074;&#1077;&#1088;&#1093;';
+$TEXT['MULTIPLE_MENUS'] = '&#1052;&#1091;&#1083;&#1100;&#1090;&#1080;-&#1084;&#1077;&#1085;&#1102;';
+$TEXT['MULTISELECT'] = '&#1052;&#1091;&#1083;&#1100;&#1090;&#1080;-&#1074;&#1099;&#1073;&#1086;&#1088;';
+$TEXT['NAME'] = '&#1048;&#1084;&#1103;';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = '&#1053;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086; &#1074;&#1086;&#1081;&#1090;&#1080;?';
+$TEXT['NEW_PASSWORD'] = '&#1053;&#1086;&#1074;&#1099;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['NEW_WINDOW'] = '&#1053;&#1086;&#1074;&#1086;&#1077; &#1086;&#1082;&#1085;&#1086;';
+$TEXT['NEXT'] = '&#1076;&#1072;&#1083;&#1077;&#1077;';
+$TEXT['NEXT_PAGE'] = '&#1057;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1072;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['NO'] = '&#1053;&#1077;&#1090;';
+$TEXT['NONE'] = '&#1053;&#1077;&#1090;';
+$TEXT['NONE_FOUND'] = '&#1053;&#1080;&#1095;&#1077;&#1075;&#1086; &#1053;&#1077; &#1053;&#1072;&#1081;&#1076;&#1077;&#1085;&#1086;';
+$TEXT['NOT_FOUND'] = '&#1053;&#1077; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;&#1086;';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = '&#1053;&#1077;&#1090; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1086;&#1074;';
+$TEXT['OF'] = '&#1080;&#1079;';
+$TEXT['ON'] = '&#1085;&#1072;';
+$TEXT['OPEN'] = '&#1054;&#1090;&#1082;&#1088;&#1099;&#1090;&#1100;';
+$TEXT['OPTION'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1086;';
+$TEXT['OTHERS'] = '&#1054;&#1089;&#1090;&#1072;&#1083;&#1100;&#1085;&#1099;&#1077;';
+$TEXT['OUT_OF'] = '&#1089;&#1074;&#1099;&#1096;&#1077;';
+$TEXT['OVERWRITE_EXISTING'] = '&#1055;&#1077;&#1088;&#1077;&#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1090;&#1100; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1102;&#1097;&#1080;&#1081;(&#1091;&#1102;)';
+$TEXT['PAGE'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['PAGES_DIRECTORY'] = '&#1044;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = '&#1056;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = '&#1071;&#1079;&#1099;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$TEXT['PAGE_LEVEL_LIMIT'] = '&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100; &#1074;&#1083;&#1086;&#1078;&#1077;&#1085;&#1085;&#1086;&#1089;&#1090;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;';
+$TEXT['PAGE_SPACER'] = '&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#1080;&#1090;&#1077;&#1083;&#1100;';
+$TEXT['PAGE_TITLE'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$TEXT['PAGE_TRASH'] = '&#1050;&#1086;&#1088;&#1079;&#1080;&#1085;&#1072;';
+$TEXT['PARENT'] = '&#1056;&#1086;&#1076;&#1080;&#1090;&#1077;&#1083;&#1100;';
+$TEXT['PASSWORD'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['PATH'] = '&#1055;&#1091;&#1090;&#1100;';
+$TEXT['PHP_ERROR_LEVEL'] = '&#1059;&#1088;&#1086;&#1074;&#1077;&#1085;&#1100; &#1074;&#1099;&#1074;&#1086;&#1076;&#1072; &#1086;&#1096;&#1080;&#1073;&#1086;&#1082; PHP';
+$TEXT['PLEASE_LOGIN'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1074;&#1099;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1093;&#1086;&#1076;';
+$TEXT['PLEASE_SELECT'] = '&#1042;&#1099;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077;';
+$TEXT['POST'] = '&#1054;&#1090;&#1087;&#1088;&#1072;&#1074;&#1080;&#1090;&#1100;';
+$TEXT['POSTS_PER_PAGE'] = '&#1057;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1081; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091;';
+$TEXT['POST_FOOTER'] = '&#1053;&#1080;&#1078;&#1085;&#1103;&#1103; &#1095;&#1072;&#1089;&#1090;&#1100; &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['POST_HEADER'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1103;';
+$TEXT['PREVIOUS'] = '&#1085;&#1072;&#1079;&#1072;&#1076;';
+$TEXT['PREVIOUS_PAGE'] = '&#1055;&#1088;&#1077;&#1076;&#1099;&#1076;&#1091;&#1097;&#1072;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['PRIVATE'] = '&#1047;&#1072;&#1082;&#1088;&#1099;&#1090;&#1072;&#1103;';
+$TEXT['PRIVATE_VIEWERS'] = 'Private Viewers';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = '&#1044;&#1083;&#1103; &#1054;&#1073;&#1097;&#1077;&#1075;&#1086; &#1044;&#1086;&#1089;&#1090;&#1091;&#1087;&#1072;';
+$TEXT['PUBL_END_DATE'] = '&#1044;&#1072;&#1090;&#1072; &#1086;&#1082;&#1086;&#1085;&#1095;&#1072;&#1085;&#1080;&#1103;';
+$TEXT['PUBL_START_DATE'] = '&#1044;&#1072;&#1090;&#1072; &#1089;&#1090;&#1072;&#1088;&#1090;&#1072;';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button &#1075;&#1088;&#1091;&#1087;&#1087;&#1072;';
+$TEXT['READ'] = '&#1063;&#1090;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['READ_MORE'] = '&#1063;&#1080;&#1090;&#1072;&#1090;&#1100; &#1076;&#1072;&#1083;&#1100;&#1096;&#1077;';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = '&#1047;&#1072;&#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1099;&#1077;';
+$TEXT['REGISTERED_VIEWERS'] = '&#1047;&#1072;&#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1099;&#1077; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1080;';
+$TEXT['RELOAD'] = '&#1055;&#1077;&#1088;&#1077;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1100;';
+$TEXT['REMEMBER_ME'] = '&#1047;&#1072;&#1087;&#1086;&#1084;&#1085;&#1080;&#1090;&#1100; &#1084;&#1077;&#1085;&#1103;';
+$TEXT['RENAME'] = '&#1055;&#1077;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = '&#1053;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099;&#1077;';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = '&#1057;&#1073;&#1088;&#1086;&#1089;&#1080;&#1090;&#1100;';
+$TEXT['RESIZE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1088;&#1072;&#1079;&#1084;&#1077;&#1088;';
+$TEXT['RESIZE_IMAGE_TO'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; &#1088;&#1072;&#1079;&#1084;&#1077;&#1088; &#1082;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1080; &#1085;&#1072;';
+$TEXT['RESTORE'] = '&#1042;&#1086;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['RESTORE_DATABASE'] = '&#1042;&#1086;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1073;&#1072;&#1079;&#1091; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;';
+$TEXT['RESTORE_MEDIA'] = '&#1042;&#1086;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; Media';
+$TEXT['RESULTS'] = '&#1056;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1099;';
+$TEXT['RESULTS_FOOTER'] = '&#1053;&#1080;&#1078;&#1085;&#1103;&#1103; &#1095;&#1072;&#1089;&#1090;&#1100; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1086;&#1074;';
+$TEXT['RESULTS_FOR'] = '&#1056;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1099; &#1076;&#1083;&#1103;';
+$TEXT['RESULTS_HEADER'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1086;&#1074;';
+$TEXT['RESULTS_LOOP'] = '&#1054;&#1089;&#1085;&#1086;&#1074;&#1085;&#1086;&#1081; &#1073;&#1083;&#1086;&#1082;';
+$TEXT['RETYPE_NEW_PASSWORD'] = '&#1055;&#1086;&#1074;&#1090;&#1086;&#1088;&#1080;&#1090;&#1100; &#1085;&#1086;&#1074;&#1099;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['RETYPE_PASSWORD'] = '&#1055;&#1086;&#1074;&#1090;&#1086;&#1088;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['SAME_WINDOW'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1077;&#1077; &#1086;&#1082;&#1085;&#1086;';
+$TEXT['SAVE'] = '&#1057;&#1086;&#1093;&#1088;&#1072;&#1085;&#1080;&#1090;&#1100;';
+$TEXT['SEARCH'] = '&#1055;&#1086;&#1080;&#1089;&#1082;';
+$TEXT['SEARCHING'] = '&#1048;&#1076;&#1077;&#1090; &#1087;&#1086;&#1080;&#1089;&#1082;';
+$TEXT['SECTION'] = '&#1057;&#1077;&#1082;&#1094;&#1080;&#1103;';
+$TEXT['SECTION_BLOCKS'] = '&#1041;&#1083;&#1086;&#1082;&#1080; &#1089;&#1077;&#1082;&#1094;&#1080;&#1081;';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = 'Select Box';
+$TEXT['SEND_DETAILS'] = '&#1055;&#1086;&#1089;&#1083;&#1072;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;';
+$TEXT['SEPARATE'] = '&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1081;';
+$TEXT['SEPERATOR'] = '&#1056;&#1072;&#1079;&#1076;&#1077;&#1083;&#1080;&#1090;&#1077;&#1083;&#1100;';
+$TEXT['SERVER_EMAIL'] = 'Email &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072;';
+$TEXT['SERVER_OPERATING_SYSTEM'] = 'OS &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072;';
+$TEXT['SESSION_IDENTIFIER'] = '&#1048;&#1076;&#1077;&#1085;&#1090;&#1080;&#1092;&#1080;&#1082;&#1072;&#1090;&#1086;&#1088; &#1089;&#1077;&#1089;&#1089;&#1080;&#1080;';
+$TEXT['SETTINGS'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$TEXT['SHORT'] = '&#1042; &#1082;&#1088;&#1072;&#1090;&#1094;&#1077;';
+$TEXT['SHORT_TEXT'] = '&#1050;&#1088;&#1072;&#1090;&#1082;&#1080;&#1081; &#1090;&#1077;&#1082;&#1089;&#1090;';
+$TEXT['SHOW'] = '&#1055;&#1086;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100;';
+$TEXT['SHOW_ADVANCED'] = '&#1055;&#1086;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; &#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1085;&#1099;&#1077; &#1086;&#1087;&#1094;&#1080;&#1080;';
+$TEXT['SIGNUP'] = '&#1056;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['SIZE'] = '&#1056;&#1072;&#1079;&#1084;&#1077;&#1088;';
+$TEXT['SMART_LOGIN'] = '&#1059;&#1084;&#1085;&#1099;&#1081; Login';
+$TEXT['START'] = '&#1057;&#1090;&#1072;&#1088;&#1090;';
+$TEXT['START_PUBLISHING'] = '&#1053;&#1072;&#1095;&#1072;&#1090;&#1100; &#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1072;&#1094;&#1080;&#1102;';
+$TEXT['SUBJECT'] = '&#1058;&#1077;&#1084;&#1072;';
+$TEXT['SUBMISSIONS'] = '&#1055;&#1086;&#1076;&#1087;&#1080;&#1089;&#1082;&#1080;';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = '&#1057;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1081;, &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1103;&#1077;&#1084;&#1099;&#1093; &#1074; &#1073;&#1072;&#1079;&#1077;';
+$TEXT['SUBMISSION_ID'] = 'ID &#1087;&#1086;&#1076;&#1087;&#1080;&#1089;&#1082;&#1080;';
+$TEXT['SUBMITTED'] = '&#1054;&#1090;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1086;';
+$TEXT['SUCCESS'] = '&#1059;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$TEXT['SYSTEM_DEFAULT'] = '&#1055;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;';
+$TEXT['SYSTEM_PERMISSIONS'] = '&#1057;&#1080;&#1089;&#1090;&#1077;&#1084;&#1085;&#1099;&#1077; &#1087;&#1088;&#1072;&#1074;&#1072;';
+$TEXT['TABLE_PREFIX'] = '&#1055;&#1088;&#1077;&#1092;&#1080;&#1082;&#1089; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;';
+$TEXT['TARGET'] = '&#1054;&#1090;&#1082;&#1088;&#1099;&#1074;&#1072;&#1090;&#1100; &#1074;';
+$TEXT['TARGET_FOLDER'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072;&#1103; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['TEMPLATE'] = '&#1064;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$TEXT['TEMPLATE_PERMISSIONS'] = '&#1055;&#1088;&#1072;&#1074;&#1072; &#1074; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1072;&#1093;';
+$TEXT['TEXT'] = '&#1058;&#1077;&#1082;&#1089;&#1090;';
+$TEXT['TEXTAREA'] = 'Textarea';
+$TEXT['TEXTFIELD'] = 'Textfield';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = '&#1042;&#1088;&#1077;&#1084;&#1103;';
+$TEXT['TIMEZONE'] = '&#1042;&#1088;&#1077;&#1084;&#1077;&#1085;&#1085;&#1072;&#1103; &#1079;&#1086;&#1085;&#1072;';
+$TEXT['TIME_FORMAT'] = '&#1060;&#1086;&#1088;&#1084;&#1072;&#1090; &#1074;&#1088;&#1077;&#1084;&#1077;&#1085;&#1080;';
+$TEXT['TIME_LIMIT'] = 'Max &#1074;&#1088;&#1077;&#1084;&#1103; &#1087;&#1086;&#1080;&#1089;&#1082;&#1072; &#1074; &#1084;&#1086;&#1076;&#1091;&#1083;&#1077;';
+$TEXT['TITLE'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;';
+$TEXT['TO'] = '&#1074;';
+$TEXT['TOP_FRAME'] = '&#1043;&#1083;&#1072;&#1074;&#1085;&#1099;&#1081; &#1092;&#1088;&#1077;&#1081;&#1084;';
+$TEXT['TRASH_EMPTIED'] = '&#1050;&#1086;&#1088;&#1079;&#1080;&#1085;&#1072; &#1086;&#1095;&#1080;&#1097;&#1077;&#1085;&#1072;';
+$TEXT['TXT_EDIT_CSS_FILE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1077; CSS &#1092;&#1072;&#1081;&#1083;, &#1077;&#1089;&#1083;&#1080; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1086;:';
+$TEXT['TYPE'] = '&#1058;&#1080;&#1087;';
+$TEXT['UNDER_CONSTRUCTION'] = '&#1042; &#1089;&#1090;&#1072;&#1076;&#1080;&#1080; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1080;';
+$TEXT['UNINSTALL'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;';
+$TEXT['UNKNOWN'] = '&#1053;&#1077;&#1080;&#1079;&#1074;&#1077;&#1089;&#1090;&#1085;&#1086;';
+$TEXT['UNLIMITED'] = '&#1053;&#1077;&#1086;&#1075;&#1088;&#1072;&#1085;&#1080;&#1095;&#1077;&#1085;&#1085;&#1086;';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = '&#1042;&#1074;&#1077;&#1088;&#1093;';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = '&#1047;&#1072;&#1082;&#1072;&#1095;&#1072;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083;(&#1099;)';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = '&#1042;&#1083;&#1072;&#1076;&#1077;&#1083;&#1077;&#1094;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = '&#1048;&#1079;&#1086;&#1073;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1082;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1077;';
+$TEXT['VERSION'] = '&#1042;&#1077;&#1088;&#1089;&#1080;&#1103;';
+$TEXT['VIEW'] = '&#1055;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100;';
+$TEXT['VIEW_DELETED_PAGES'] = '&#1055;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1085;&#1099;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$TEXT['VIEW_DETAILS'] = '&#1055;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100; &#1076;&#1077;&#1090;&#1072;&#1083;&#1080;';
+$TEXT['VISIBILITY'] = '&#1042;&#1080;&#1076;&#1080;&#1084;&#1086;&#1089;&#1090;&#1100;';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = '&#1055;&#1080;&#1089;&#1100;&#1084;&#1086; &#1086;&#1090;';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = '&#1048;&#1084;&#1103; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1080;&#1090;&#1077;&#1083;&#1103;';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1079;&#1072;&#1076;&#1072;&#1081;&#1090;&#1077; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1084;&#1086;&#1077; &#1087;&#1086;&#1083;&#1103; "&#1055;&#1080;&#1089;&#1100;&#1084;&#1086; &#1086;&#1090;" &#1080; "&#1048;&#1084;&#1103; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1080;&#1090;&#1077;&#1083;&#1103;". &#1044;&#1083;&#1103; &#1087;&#1086;&#1083;&#1103; "&#1055;&#1080;&#1089;&#1100;&#1084;&#1086; &#1086;&#1090;" &#1088;&#1077;&#1082;&#1086;&#1084;&#1077;&#1085;&#1076;&#1091;&#1077;&#1090;&#1089;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1072;&#1076;&#1088;&#1077;&#1089;&#1072; &#1074;&#1080;&#1076;&#1072;: <strong>admin@yourdomain.com</strong>. &#1053;&#1077;&#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1099;&#1077; &#1087;&#1088;&#1086;&#1074;&#1072;&#1081;&#1076;&#1077;&#1088;&#1099; (&#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088; <em>mail.com</em>) &#1084;&#1086;&#1075;&#1091;&#1090; &#1080;&#1075;&#1085;&#1086;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1072;&#1076;&#1088;&#1077;&#1089;&#1072; &#1074;&#1080;&#1076;&#1072; <em>name@mail.com</em>, &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1085;&#1099;&#1077; &#1089; &#1095;&#1091;&#1078;&#1086;&#1075;&#1086; &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072;, &#1076;&#1083;&#1103; &#1073;&#1086;&#1088;&#1100;&#1073;&#1099; &#1089;&#1086; &#1089;&#1087;&#1072;&#1084;&#1086;&#1084;.<br /><br />&#1044;&#1072;&#1085;&#1085;&#1099;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1073;&#1091;&#1076;&#1091;&#1090; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1077;&#1089;&#1083;&#1080; &#1074; CMS &#1085;&#1077; &#1079;&#1072;&#1076;&#1072;&#1085;&#1099; &#1076;&#1088;&#1091;&#1075;&#1080;&#1077; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099;. &#1045;&#1089;&#1083;&#1080; &#1042;&#1072;&#1096; &#1089;&#1077;&#1088;&#1074;&#1077;&#1088; &#1087;&#1086;&#1076;&#1076;&#1077;&#1088;&#1078;&#1080;&#1074;&#1072;&#1077;&#1090; <acronym title="Simple mail transfer protocol">SMTP</acronym>, &#1074;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1101;&#1090;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1076;&#1083;&#1103; &#1080;&#1089;&#1093;&#1086;&#1076;&#1103;&#1097;&#1077;&#1081; &#1087;&#1086;&#1095;&#1090;&#1099;.';
+$TEXT['WBMAILER_FUNCTION'] = '&#1055;&#1086;&#1095;&#1090;&#1086;&#1074;&#1072;&#1103; &#1089;&#1083;&#1091;&#1078;&#1073;&#1072;';
+$TEXT['WBMAILER_NOTICE'] = '<strong>&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; SMTP:</strong><br />&#1044;&#1072;&#1085;&#1085;&#1099;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1077;&#1089;&#1083;&#1080; &#1042;&#1099; &#1087;&#1083;&#1072;&#1085;&#1080;&#1088;&#1091;&#1077;&#1090;&#1077; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1083;&#1103;&#1090;&#1100; &#1087;&#1080;&#1089;&#1100;&#1084;&#1072;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; <acronym title="Simple mail transfer protocol">SMTP</acronym>. &#1045;&#1089;&#1083;&#1080; &#1074;&#1099; &#1085;&#1077; &#1079;&#1085;&#1072;&#1077;&#1090;&#1077; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1042;&#1072;&#1096;&#1077;&#1075;&#1086; SMTP &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1072; &#1080;&#1083;&#1080; &#1085;&#1077; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099; &#1074; &#1074;&#1099;&#1073;&#1086;&#1088;&#1077;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1081;&#1090;&#1077; PHP MAIL &#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1086;&#1081; &#1089;&#1083;&#1091;&#1078;&#1073;&#1099;.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP &#1072;&#1074;&#1090;&#1086;&#1088;&#1080;&#1079;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = '&#1086;&#1090;&#1084;&#1077;&#1090;&#1100;&#1090;&#1077;, &#1077;&#1089;&#1083;&#1080; &#1042;&#1072;&#1096; SMTP &#1089;&#1077;&#1088;&#1074;&#1077;&#1088; &#1090;&#1088;&#1077;&#1073;&#1091;&#1077;&#1090; &#1072;&#1074;&#1090;&#1086;&#1088;&#1080;&#1079;&#1072;&#1094;&#1080;&#1102;';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = '&#1042;&#1077;&#1073;&#1089;&#1072;&#1081;&#1090;';
+$TEXT['WEBSITE_DESCRIPTION'] = '&#1054;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_FOOTER'] = '&#1053;&#1080;&#1078;&#1085;&#1103;&#1103; &#1095;&#1072;&#1089;&#1090;&#1100; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_HEADER'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_KEYWORDS'] = '&#1050;&#1083;&#1102;&#1095;&#1077;&#1074;&#1099;&#1077; &#1089;&#1083;&#1086;&#1074;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_TITLE'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WELCOME_BACK'] = '&#1044;&#1086;&#1073;&#1088;&#1086; &#1087;&#1086;&#1078;&#1072;&#1083;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$TEXT['WIDTH'] = '&#1064;&#1080;&#1088;&#1080;&#1085;&#1072;';
+$TEXT['WINDOW'] = '&#1054;&#1082;&#1085;&#1086;';
+$TEXT['WINDOWS'] = 'Windows';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = '&#1047;&#1072;&#1087;&#1080;&#1089;&#1100; &#1088;&#1072;&#1079;&#1088;&#1077;&#1096;&#1077;&#1085;&#1072; &#1074;&#1089;&#1077;&#1084;';
+$TEXT['WRITE'] = '&#1047;&#1072;&#1087;&#1080;&#1089;&#1100;';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1086;&#1088;';
+$TEXT['WYSIWYG_STYLE'] = 'WYSIWYG &#1089;&#1090;&#1080;&#1083;&#1100;';
+$TEXT['YES'] = '&#1044;&#1072;';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1075;&#1088;&#1091;&#1087;&#1087;&#1091;';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;';
+$HEADING['ADD_PAGE'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091;';
+$HEADING['ADD_USER'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;';
+$HEADING['ADMINISTRATION_TOOLS'] = '&#1057;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1072; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103;';
+$HEADING['BROWSE_MEDIA'] = '&#1055;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083;&#1099;';
+$HEADING['CREATE_FOLDER'] = '&#1057;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1087;&#1072;&#1087;&#1082;&#1091;';
+$HEADING['DEFAULT_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;';
+$HEADING['DELETED_PAGES'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$HEADING['FILESYSTEM_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1086;&#1081; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099;';
+$HEADING['GENERAL_SETTINGS'] = '&#1054;&#1073;&#1097;&#1080;&#1077; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$HEADING['INSTALL_LANGUAGE'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1103;&#1079;&#1099;&#1082;';
+$HEADING['INSTALL_MODULE'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1084;&#1086;&#1076;&#1091;&#1083;&#1100;';
+$HEADING['INSTALL_TEMPLATE'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1103;&#1079;&#1099;&#1082;&#1072;';
+$HEADING['MANAGE_SECTIONS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1089;&#1077;&#1082;&#1094;&#1080;&#1103;&#1084;&#1080;';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1085;&#1099;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$HEADING['MODIFY_DELETE_GROUP'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;/&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1075;&#1088;&#1091;&#1087;&#1087;&#1091;';
+$HEADING['MODIFY_DELETE_PAGE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;/&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091;';
+$HEADING['MODIFY_DELETE_USER'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100;/&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;';
+$HEADING['MODIFY_GROUP'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1075;&#1088;&#1091;&#1087;&#1087;&#1091;';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1075;&#1083;&#1072;&#1074;&#1085;&#1091;&#1102; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091;';
+$HEADING['MODIFY_PAGE'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091;';
+$HEADING['MODIFY_PAGE_SETTINGS'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$HEADING['MODIFY_USER'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;';
+$HEADING['MODULE_DETAILS'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1084;&#1086;&#1076;&#1091;&#1083;&#1103;';
+$HEADING['MY_EMAIL'] = '&#1052;&#1086;&#1081; &#1072;&#1076;&#1088;&#1077;&#1089; e-mail';
+$HEADING['MY_PASSWORD'] = '&#1052;&#1086;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$HEADING['MY_SETTINGS'] = '&#1052;&#1086;&#1080; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;';
+$HEADING['SEARCH_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1087;&#1086;&#1080;&#1089;&#1082;&#1072;';
+$HEADING['SERVER_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1089;&#1088;&#1077;&#1074;&#1077;&#1088;&#1072;';
+$HEADING['TEMPLATE_DETAILS'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1072;';
+$HEADING['UNINSTALL_LANGUAGE'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1103;&#1079;&#1099;&#1082;';
+$HEADING['UNINSTALL_MODULE'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1084;&#1086;&#1076;&#1091;&#1083;&#1100;';
+$HEADING['UNINSTALL_TEMPLATE'] = '&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = '&#1047;&#1072;&#1082;&#1072;&#1095;&#1072;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083;(&#1099;)';
+$HEADING['WBMAILER_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1087;&#1086;&#1095;&#1090;&#1086;&#1074;&#1086;&#1081; &#1087;&#1088;&#1086;&#1075;&#1088;&#1072;&#1084;&#1084;&#1099;';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = '&#1053;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1087;&#1088;&#1072;&#1074; &#1076;&#1083;&#1103; &#1085;&#1072;&#1093;&#1086;&#1078;&#1076;&#1077;&#1085;&#1080;&#1103; &#1074; &#1101;&#1090;&#1086;&#1081; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080;';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = '&#1048;&#1079;&#1074;&#1080;&#1085;&#1080;&#1090;&#1077;, &#1085;&#1086; &#1074;&#1099; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1084;&#1077;&#1085;&#1103;&#1090;&#1100; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100; &#1085;&#1077; &#1095;&#1072;&#1097;&#1077; 1 &#1088;&#1072;&#1079;&#1072; &#1074; &#1095;&#1072;&#1089;';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1074;&#1099;&#1089;&#1083;&#1072;&#1090;&#1100; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;, &#1086;&#1073;&#1088;&#1072;&#1090;&#1080;&#1090;&#1077;&#1089;&#1100; &#1082; &#1074;&#1072;&#1096;&#1077;&#1084;&#1091; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;&#1091;';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = 'Email, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1074;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080;, &#1085;&#1077; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085; &#1074; &#1073;&#1072;&#1079;&#1077;';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1074;&#1074;&#1077;&#1076;&#1080;&#1090;&#1077; &#1074;&#1072;&#1096; email';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = '&#1048;&#1079;&#1074;&#1080;&#1085;&#1080;&#1090;&#1077;, &#1085;&#1077;&#1090; &#1072;&#1082;&#1090;&#1080;&#1074;&#1085;&#1099;&#1093; &#1089;&#1077;&#1082;&#1094;&#1080;&#1081;';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = '&#1048;&#1079;&#1074;&#1080;&#1085;&#1080;&#1090;&#1077;, &#1091; &#1074;&#1072;&#1089; &#1085;&#1077;&#1090; &#1087;&#1088;&#1072;&#1074; &#1076;&#1083;&#1103; &#1087;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1072; &#1101;&#1090;&#1086;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = '&#1059;&#1078;&#1077; &#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1086;';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1090;&#1100; &#1074; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1091;&#1102; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1102;';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;: &#1092;&#1072;&#1081;&#1083; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1088;&#1072;&#1079;&#1072;&#1088;&#1093;&#1080;&#1074;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1079;&#1072;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1100; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1086;&#1090;&#1082;&#1088;&#1099;&#1090;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072;.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = '&#1047;&#1072;&#1075;&#1088;&#1091;&#1078;&#1072;&#1077;&#1084;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1080;&#1084;&#1077;&#1090;&#1100; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1080;&#1081; &#1092;&#1086;&#1088;&#1084;&#1072;&#1090;:';
+$MESSAGE['GENERIC_FILE_TYPES'] = '&#1047;&#1072;&#1075;&#1088;&#1091;&#1078;&#1072;&#1077;&#1084;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1080;&#1084;&#1077;&#1090;&#1100; &#1090;&#1080;&#1087;:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1074;&#1077;&#1088;&#1085;&#1080;&#1090;&#1077;&#1089;&#1100; &#1080; &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1089;&#1077; &#1087;&#1086;&#1083;&#1103;';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1072; &#1087;&#1088;&#1086;&#1096;&#1083;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1072;';
+$MESSAGE['GENERIC_INVALID'] = '&#1047;&#1072;&#1075;&#1088;&#1091;&#1078;&#1077;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1087;&#1086;&#1074;&#1088;&#1077;&#1078;&#1076;&#1077;&#1085;';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = '&#1053;&#1077;&#1091;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1086;';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1087;&#1086;&#1076;&#1086;&#1078;&#1076;&#1080;&#1090;&#1077;, &#1101;&#1090;&#1086; &#1084;&#1086;&#1078;&#1077;&#1090; &#1079;&#1072;&#1085;&#1103;&#1090;&#1100; &#1085;&#1077;&#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103;.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = '&#1047;&#1072;&#1081;&#1076;&#1080;&#1090;&#1077; &#1087;&#1086;&#1087;&#1086;&#1079;&#1078;&#1077;...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = '&#1059;&#1076;&#1072;&#1083;&#1077;&#1085;&#1086; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GENERIC_UPGRADED'] = '&#1054;&#1073;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1087;&#1088;&#1086;&#1096;&#1083;&#1086; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = '&#1042;&#1077;&#1073;&#1089;&#1072;&#1081;&#1090; &#1074; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1077;';
+$MESSAGE['GROUPS_ADDED'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1072; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = '&#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1074;&#1099; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1091;&#1102; &#1075;&#1088;&#1091;&#1087;&#1087;&#1091; (&#1080; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1081; &#1074; &#1085;&#1077;&#1081;)?';
+$MESSAGE['GROUPS_DELETED'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072;';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = '&#1048;&#1084;&#1103; &#1075;&#1088;&#1091;&#1087;&#1087;&#1099; &#1087;&#1091;&#1089;&#1090;&#1086;&#1077;';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1072; &#1089; &#1090;&#1072;&#1082;&#1080;&#1084; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1091;&#1078;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = '&#1043;&#1088;&#1091;&#1087;&#1087; &#1085;&#1077; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;&#1086;';
+$MESSAGE['GROUPS_SAVED'] = '&#1043;&#1088;&#1091;&#1087;&#1087;&#1072; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = '&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1074;&#1074;&#1077;&#1076;&#1080;&#1090;&#1077; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = '&#1059;&#1082;&#1072;&#1079;&#1072;&#1085;&#1085;&#1099;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100; &#1089;&#1083;&#1080;&#1096;&#1082;&#1086;&#1084; &#1076;&#1083;&#1080;&#1085;&#1085;&#1099;&#1081;';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = '&#1059;&#1082;&#1072;&#1079;&#1072;&#1085;&#1085;&#1099;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100; &#1089;&#1083;&#1080;&#1096;&#1082;&#1086;&#1084; &#1082;&#1086;&#1088;&#1086;&#1090;&#1082;&#1080;&#1081;';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = '&#1042;&#1099; &#1085;&#1077; &#1074;&#1074;&#1077;&#1083;&#1080; &#1088;&#1072;&#1089;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1077; &#1092;&#1072;&#1081;&#1083;&#1072;';
+$MESSAGE['MEDIA_BLANK_NAME'] = '&#1042;&#1099; &#1085;&#1077; &#1074;&#1074;&#1077;&#1083;&#1080; &#1085;&#1086;&#1074;&#1086;&#1077; &#1080;&#1084;&#1103;';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1091;&#1102; &#1087;&#1072;&#1087;&#1082;&#1091;';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1087;&#1077;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1086;&#1074;&#1072;&#1090;&#1100;';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = '&#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083; &#1080;&#1083;&#1080; &#1087;&#1072;&#1087;&#1082;&#1091;?';
+$MESSAGE['MEDIA_DELETED_DIR'] = '&#1055;&#1072;&#1087;&#1082;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072;';
+$MESSAGE['MEDIA_DELETED_FILE'] = '&#1060;&#1072;&#1081;&#1083; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = '&#1044;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103; &#1085;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = '&#1053;&#1077;&#1083;&#1100;&#1079;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; ../ &#1074; &#1080;&#1084;&#1077;&#1085;&#1080; &#1087;&#1072;&#1087;&#1082;&#1080;';
+$MESSAGE['MEDIA_DIR_EXISTS'] = '&#1055;&#1072;&#1087;&#1082;&#1072; &#1089; &#1090;&#1072;&#1082;&#1080;&#1084; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1091;&#1078;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$MESSAGE['MEDIA_DIR_MADE'] = '&#1055;&#1072;&#1087;&#1082;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1072;';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1087;&#1072;&#1087;&#1082;&#1091;';
+$MESSAGE['MEDIA_FILE_EXISTS'] = '&#1060;&#1072;&#1081;&#1083; &#1089; &#1090;&#1072;&#1082;&#1080;&#1084; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1091;&#1078;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = '&#1060;&#1072;&#1081;&#1083; &#1085;&#1077; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = '&#1053;&#1077;&#1083;&#1100;&#1079;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; ../ &#1074; &#1080;&#1084;&#1077;&#1085;&#1080;';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = '&#1053;&#1077;&#1083;&#1100;&#1079;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; index.php &#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1080;&#1084;&#1077;&#1085;&#1080;';
+$MESSAGE['MEDIA_NONE_FOUND'] = '&#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1087;&#1072;&#1087;&#1082;&#1077; &#1085;&#1077;&#1090; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = '&#1059;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1087;&#1077;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1086;&#1074;&#1072;&#1085;&#1086;';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' &#1092;&#1072;&#1081;&#1083; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1079;&#1072;&#1082;&#1072;&#1095;&#1072;&#1085;';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = '&#1053;&#1077;&#1083;&#1100;&#1079;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; ../ &#1074; &#1080;&#1084;&#1077;&#1085;&#1080;';
+$MESSAGE['MEDIA_UPLOADED'] = ' &#1092;&#1072;&#1081;&#1083;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1079;&#1072;&#1082;&#1072;&#1095;&#1072;&#1085;&#1099;';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = '&#1048;&#1079;&#1074;&#1080;&#1085;&#1080;&#1090;&#1077;, &#1089;&#1083;&#1080;&#1096;&#1082;&#1086;&#1084; &#1084;&#1085;&#1086;&#1075;&#1086; &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1081; &#1079;&#1072; &#1087;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1080;&#1081; &#1095;&#1072;&#1089;. &#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1087;&#1086;&#1087;&#1088;&#1086;&#1073;&#1091;&#1081;&#1090;&#1077; &#1087;&#1086;&#1074;&#1090;&#1086;&#1088;&#1080;&#1090;&#1100; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1082;&#1091; &#1095;&#1077;&#1088;&#1077;&#1079; &#1085;&#1077;&#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1077; &#1074;&#1088;&#1077;&#1084;&#1103;.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = '&#1050;&#1086;&#1076; &#1087;&#1086;&#1076;&#1090;&#1074;&#1077;&#1088;&#1078;&#1076;&#1077;&#1085;&#1080;&#1103; &#1074;&#1074;&#1077;&#1076;&#1077;&#1085; &#1085;&#1077;&#1074;&#1077;&#1088;&#1085;&#1086;. &#1045;&#1089;&#1083;&#1080; &#1074;&#1099; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077;&#1090;&#1077; &#1087;&#1088;&#1086;&#1095;&#1077;&#1089;&#1090;&#1100; &#1082;&#1086;&#1076;, &#1087;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072; &#1089;&#1086;&#1086;&#1073;&#1097;&#1080;&#1090;&#1077; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1095;&#1080;&#1082;&#1072;&#1084;: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = '&#1042;&#1053;&#1048;&#1052;&#1040;&#1053;&#1048;&#1045;! &#1042;&#1099; &#1076;&#1086;&#1083;&#1078;&#1085;&#1099; &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1100; &#1087;&#1086;&#1083;&#1077;';
+$MESSAGE['PAGES_ADDED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_ADDED_HEADING'] = '&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = '&#1042;&#1074;&#1077;&#1076;&#1080;&#1090;&#1077; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1084;&#1077;&#1085;&#1102;';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = '&#1042;&#1074;&#1077;&#1076;&#1080;&#1090;&#1077; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072; &#1074; &#1087;&#1072;&#1087;&#1082;&#1077; /pages  (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1087;&#1088;&#1072;&#1074;)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;&#1072; &#1074; &#1087;&#1072;&#1087;&#1082;&#1077; /pages  (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1087;&#1088;&#1072;&#1074;)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1087;&#1086;&#1088;&#1103;&#1076;&#1082;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;';
+$MESSAGE['PAGES_DELETED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = '&#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1091;&#1102; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1091; (&#1080; &#1074;&#1089;&#1077; &#1077;&#1105; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1076;&#1077;&#1083;&#1099;)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = '&#1059; &#1074;&#1072;&#1089; &#1085;&#1077;&#1090; &#1087;&#1088;&#1072;&#1074; &#1076;&#1083;&#1103; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1101;&#1090;&#1086;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$MESSAGE['PAGES_INTRO_LINK'] = '&#1053;&#1072;&#1078;&#1084;&#1080;&#1090;&#1077; &#1047;&#1044;&#1045;&#1057;&#1068; &#1076;&#1083;&#1103; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;-&#1079;&#1072;&#1089;&#1090;&#1072;&#1074;&#1082;&#1080;';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1090;&#1100; &#1074; /pages/intro.php (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086; &#1087;&#1088;&#1072;&#1074;)';
+$MESSAGE['PAGES_INTRO_SAVED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;-&#1079;&#1072;&#1089;&#1090;&#1072;&#1074;&#1082;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_LAST_MODIFIED'] = '&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1077;&#1077; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1077;:';
+$MESSAGE['PAGES_NOT_FOUND'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1085;&#1077; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_NOT_SAVED'] = '&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1080;&#1103; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099;';
+$MESSAGE['PAGES_PAGE_EXISTS'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1089; &#1090;&#1072;&#1082;&#1080;&#1084; &#1080;&#1083;&#1080; &#1089;&#1093;&#1086;&#1078;&#1080;&#1084; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1091;&#1078;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090;';
+$MESSAGE['PAGES_REORDERED'] = '&#1055;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;';
+$MESSAGE['PAGES_RESTORED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1074;&#1086;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = '&#1050; &#1089;&#1087;&#1080;&#1089;&#1082;&#1091; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;';
+$MESSAGE['PAGES_SAVED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1099;';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = '&#1057;&#1074;&#1086;&#1081;&#1089;&#1090;&#1074;&#1072; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1099;';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1080;&#1081; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1074;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080;, &#1085;&#1077;&#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1100;&#1085;&#1099;&#1081;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = '&#1044;&#1072;&#1085;&#1085;&#1099;&#1077; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email &#1086;&#1073;&#1085;&#1086;&#1074;&#1083;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1100; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = '&#1048;&#1084;&#1077;&#1081;&#1090;&#1077; &#1074;&#1074;&#1080;&#1076;&#1091;, &#1095;&#1090;&#1086; &#1087;&#1088;&#1080; &#1085;&#1072;&#1078;&#1072;&#1090;&#1080;&#1080; &#1085;&#1072; &#1101;&#1090;&#1091; &#1082;&#1085;&#1086;&#1087;&#1082;&#1091; &#1087;&#1088;&#1086;&#1080;&#1079;&#1086;&#1081;&#1076;&#1077;&#1090; &#1089;&#1073;&#1088;&#1086;&#1089; &#1085;&#1077;&#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1085;&#1099;&#1093; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;';
+$MESSAGE['SETTINGS_SAVED'] = '&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1086;&#1090;&#1082;&#1088;&#1099;&#1090;&#1100; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = '&#1053;&#1077;&#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1072; &#1079;&#1072;&#1087;&#1080;&#1089;&#1100; &#1074; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = '&#1048;&#1084;&#1077;&#1081;&#1090;&#1077; &#1074;&#1074;&#1080;&#1076;&#1091;, &#1095;&#1090;&#1086; &#1101;&#1090;&#1086; &#1088;&#1077;&#1082;&#1086;&#1084;&#1077;&#1085;&#1076;&#1086;&#1074;&#1072;&#1085;&#1086; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1076;&#1083;&#1103; &#1090;&#1077;&#1089;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103;';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = '&#1042;&#1099; &#1076;&#1086;&#1083;&#1078;&#1085;&#1099; &#1074;&#1074;&#1077;&#1089;&#1090;&#1080; email &#1072;&#1076;&#1088;&#1077;&#1089;';
+$MESSAGE['START_CURRENT_USER'] = '&#1042;&#1099; &#1074;&#1086;&#1096;&#1083;&#1080; &#1082;&#1072;&#1082;:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;, &#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1103;&#1094;&#1080;&#1086;&#1085;&#1085;&#1072;&#1103; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103; &#1074;&#1089;&#1077; &#1077;&#1097;&#1077; &#1085;&#1077; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;&#1072;!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = '&#1044;&#1086;&#1073;&#1088;&#1086; &#1087;&#1086;&#1078;&#1072;&#1083;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074; &#1052;&#1077;&#1085;&#1102; &#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103; &#1057;&#1072;&#1081;&#1090;&#1072;';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;! &#1063;&#1090;&#1086;&#1073;&#1099; &#1095;&#1090;&#1086;&#1073;&#1099; &#1089;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085; &#1087;&#1077;&#1088;&#1077;&#1081;&#1076;&#1080;&#1090;&#1077; &#1074; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; "&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1082;&#1080;"';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = '&#1055;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = '&#1048;&#1084;&#1077;&#1081;&#1090;&#1077; &#1074;&#1074;&#1080;&#1076;&#1091;, &#1095;&#1090;&#1086; &#1074;&#1072;&#1084; &#1089;&#1083;&#1077;&#1076;&#1091;&#1077;&#1090; &#1074;&#1074;&#1077;&#1089;&#1090;&#1080; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1074; &#1074;&#1077;&#1088;&#1093;&#1085;&#1080;&#1093; &#1087;&#1086;&#1083;&#1103;&#1093; &#1077;&#1089;&#1083;&#1080; &#1074;&#1099; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;';
+$MESSAGE['USERS_CONFIRM_DELETE'] = '&#1042;&#1099; &#1091;&#1074;&#1077;&#1088;&#1077;&#1085;&#1099;, &#1095;&#1090;&#1086; &#1093;&#1086;&#1090;&#1080;&#1090;&#1077; &#1091;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1086;&#1075;&#1086; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;?';
+$MESSAGE['USERS_DELETED'] = '&#1055;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100; &#1073;&#1099;&#1083; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1091;&#1076;&#1072;&#1083;&#1077;&#1085;';
+$MESSAGE['USERS_EMAIL_TAKEN'] = 'Email, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1074;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080;, &#1091;&#1078;&#1077; &#1077;&#1089;&#1090;&#1100; &#1074; &#1073;&#1072;&#1079;&#1077;';
+$MESSAGE['USERS_INVALID_EMAIL'] = '&#1042;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080; &#1085;&#1077;&#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1100;&#1085;&#1099;&#1081; email';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = '&#1053;&#1077; &#1086;&#1076;&#1085;&#1086;&#1081; &#1075;&#1088;&#1091;&#1087;&#1087;&#1099; &#1085;&#1077; &#1073;&#1099;&#1083;&#1086; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1086;';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1080;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1074;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080;, &#1085;&#1077; &#1089;&#1086;&#1074;&#1087;&#1072;&#1076;&#1072;&#1102;&#1090;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1100;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1073;&#1099;&#1083; &#1074;&#1074;&#1077;&#1076;&#1077;&#1085;, &#1089;&#1083;&#1080;&#1096;&#1082;&#1086;&#1084; &#1082;&#1086;&#1088;&#1086;&#1090;&#1086;&#1082;';
+$MESSAGE['USERS_SAVED'] = '&#1044;&#1072;&#1085;&#1085;&#1099;&#1077; &#1086; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1077;&#1085;&#1099; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = '&#1044;&#1086;&#1089;&#1090;&#1091;&#1087; &#1082; &#1089;&#1088;&#1077;&#1076;&#1089;&#1090;&#1074;&#1072;&#1084; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103;';
+$OVERVIEW['GROUPS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1075;&#1088;&#1091;&#1087;&#1087;&#1072;&#1084;&#1080; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1081; &#1080; &#1087;&#1088;&#1072;&#1074;&#1072; &#1076;&#1086;&#1089;&#1090;&#1091;&#1087;&#1072;';
+$OVERVIEW['HELP'] = '&#1054;&#1090;&#1074;&#1077;&#1090;&#1099; &#1085;&#1072; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099;';
+$OVERVIEW['LANGUAGES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1103;&#1079;&#1099;&#1082;&#1086;&#1074;&#1099;&#1084;&#1080; &#1087;&#1072;&#1082;&#1077;&#1090;&#1072;&#1084;&#1080;';
+$OVERVIEW['MEDIA'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1092;&#1072;&#1081;&#1083;&#1072;&#1084;&#1080;';
+$OVERVIEW['MODULES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103;&#1084;&#1080; &#1084;&#1086;&#1076;&#1091;&#1083;&#1103;&#1084;&#1080;';
+$OVERVIEW['PAGES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1084;&#1080; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$OVERVIEW['PREFERENCES'] = '&#1048;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;, &#1090;&#1072;&#1082;&#1080;&#1077; &#1082;&#1072;&#1082; &#1072;&#1076;&#1088;&#1077;&#1089; e-mail, &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;...';
+$OVERVIEW['SETTINGS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1072;&#1084;';
+$OVERVIEW['START'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077;';
+$OVERVIEW['TEMPLATES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1072;&#1084;&#1080;';
+$OVERVIEW['USERS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;&#1084;&#1080;';
+$OVERVIEW['VIEW'] = '&#1055;&#1088;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100; &#1080;&#1079;&#1084;&#1077;&#1085;&#1077;&#1085;&#1080;&#1103; &#1085;&#1072; &#1089;&#1072;&#1081;&#1090;&#1077; &#1074; &#1085;&#1086;&#1074;&#1086;&#1084; &#1086;&#1082;&#1085;&#1077;';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/RU.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/BG.php
===================================================================
--- tags/2.8.3/wb/languages/BG.php	(nonexistent)
+++ tags/2.8.3/wb/languages/BG.php	(revision 1610)
@@ -0,0 +1,681 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          Website Baker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+// Define that this file is loaded
+if(!defined('LANGUAGE_LOADED')) {
+define('LANGUAGE_LOADED', true);
+}
+
+// Set the language information
+$language_code = 'BG';
+$language_name = 'Bulgarian';
+$language_version = '2.8';
+$language_platform = '2.8.x';
+$language_author = 'Hristo Benev(&#1061;&#1088;&#1080;&#1089;&#1090;&#1086; &#1041;&#1077;&#1085;&#1077;&#1074;)';
+$language_license = 'GNU General Public License';
+
+/* MENU */
+$MENU['ACCESS'] = '&#1044;&#1086;&#1089;&#1090;&#1098;&#1087;';
+$MENU['ADDON'] = 'Add-on';
+$MENU['ADDONS'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1082;&#1080;';
+$MENU['ADMINTOOLS'] = 'Admin-Tools';
+$MENU['BREADCRUMB'] = 'You are here: ';
+$MENU['FORGOT'] = '&#1047;&#1072;&#1073;&#1088;&#1072;&#1074;&#1080;&#1093; &#1076;&#1072;&#1085;&#1085;&#1080;&#1090;&#1077; &#1079;&#1072; &#1074;&#1093;&#1086;&#1076;';
+$MENU['GROUP'] = 'Group';
+$MENU['GROUPS'] = '&#1043;&#1088;&#1091;&#1087;&#1080;';
+$MENU['HELP'] = '&#1055;&#1086;&#1084;&#1086;&#1097;';
+$MENU['LANGUAGES'] = '&#1045;&#1079;&#1080;&#1094;&#1080;';
+$MENU['LOGIN'] = '&#1042;&#1093;&#1086;&#1076;';
+$MENU['LOGOUT'] = '&#1048;&#1079;&#1093;&#1086;&#1076;';
+$MENU['MEDIA'] = '&#1052;&#1077;&#1076;&#1080;&#1072;';
+$MENU['MODULES'] = '&#1052;&#1086;&#1076;&#1091;&#1083;&#1080;';
+$MENU['PAGES'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;';
+$MENU['PREFERENCES'] = '&#1055;&#1088;&#1077;&#1076;&#1087;&#1086;&#1095;&#1080;&#1090;&#1072;&#1085;&#1080;&#1103;';
+$MENU['SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$MENU['START'] = '&#1053;&#1072;&#1095;&#1072;&#1083;&#1086;';
+$MENU['TEMPLATES'] = '&#1064;&#1072;&#1073;&#1083;&#1086;&#1085;&#1080;';
+$MENU['USERS'] = '&#1055;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080;';
+$MENU['VIEW'] = '&#1042;&#1080;&#1078;';
+
+/* TEXT */
+$TEXT['ACCOUNT_SIGNUP'] = '&#1056;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['ACTIONS'] = '&#1044;&#1077;&#1081;&#1089;&#1090;&#1074;&#1080;&#1103;';
+$TEXT['ACTIVE'] = '&#1040;&#1082;&#1090;&#1080;&#1074;&#1080;&#1088;&#1072;&#1085;';
+$TEXT['ADD'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080;';
+$TEXT['ADDON'] = 'Add-On';
+$TEXT['ADD_SECTION'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080; &#1089;&#1077;&#1082;&#1094;&#1080;&#1103;';
+$TEXT['ADMIN'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;';
+$TEXT['ADMINISTRATION'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['ADMINISTRATION_TOOL'] = '&#1048;&#1085;&#1089;&#1090;&#1088;&#1091;&#1084;&#1077;&#1085;&#1090; &#1079;&#1072; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$TEXT['ADMINISTRATOR'] = 'Administrator';
+$TEXT['ADMINISTRATORS'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;&#1080;';
+$TEXT['ADVANCED'] = '&#1056;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1072;';
+$TEXT['ALLOWED_FILETYPES_ON_UPLOAD'] = 'Allowed filetypes on upload';
+$TEXT['ALLOWED_VIEWERS'] = '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1077;&#1085;&#1080; &#1079;&#1088;&#1080;&#1090;&#1077;&#1083;&#1080;';
+$TEXT['ALLOW_MULTIPLE_SELECTIONS'] = '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1080; &#1084;&#1085;&#1086;&#1078;&#1077;&#1089;&#1090;&#1074;&#1077;&#1085; &#1080;&#1079;&#1073;&#1086;&#1088;';
+$TEXT['ALL_WORDS'] = '&#1042;&#1089;&#1080;&#1095;&#1082;&#1080; &#1076;&#1091;&#1084;&#1080;';
+$TEXT['ANCHOR'] = 'Anchor';
+$TEXT['ANONYMOUS'] = '&#1040;&#1085;&#1086;&#1085;&#1080;&#1084;&#1077;&#1085;';
+$TEXT['ANY_WORDS'] = '&#1050;&#1086;&#1103;&#1090;&#1086; &#1080; &#1076;&#1072; &#1077; &#1076;&#1091;&#1084;&#1072;';
+$TEXT['APP_NAME'] = '&#1048;&#1084;&#1077; &#1085;&#1072; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;&#1090;&#1086;';
+$TEXT['ARE_YOU_SURE'] = '&#1057;&#1080;&#1075;&#1091;&#1088;&#1085;&#1080; &#1083;&#1080; &#1089;&#1090;&#1077;?';
+$TEXT['AUTHOR'] = '&#1040;&#1074;&#1090;&#1086;&#1088;';
+$TEXT['BACK'] = '&#1053;&#1072;&#1079;&#1072;&#1076;';
+$TEXT['BACKUP'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086; &#1082;&#1086;&#1087;&#1080;&#1077;';
+$TEXT['BACKUP_ALL_TABLES'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086; &#1082;&#1086;&#1087;&#1080;&#1077; &#1085;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1080;&#1090;&#1077; &#1074; &#1073;&#1072;&#1079;&#1072;&#1090;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$TEXT['BACKUP_DATABASE'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086; &#1082;&#1086;&#1087;&#1080;&#1077; &#1085;&#1072; &#1073;&#1072;&#1079;&#1072;&#1090;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$TEXT['BACKUP_MEDIA'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086; &#1082;&#1086;&#1087;&#1080;&#1077; - &#1084;&#1077;&#1076;&#1080;&#1103;';
+$TEXT['BACKUP_WB_SPECIFIC'] = '&#1056;&#1077;&#1079;&#1077;&#1088;&#1074;&#1085;&#1086; &#1082;&#1086;&#1087;&#1080;&#1077; &#1089;&#1072;&#1084;&#1086; &#1085;&#1072; WB-&#1089;&#1087;&#1077;&#1094;&#1080;&#1092;&#1080;&#1095;&#1085;&#1080; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1080;';
+$TEXT['BASIC'] = '&#1054;&#1089;&#1085;&#1086;&#1074;&#1085;&#1072;';
+$TEXT['BLOCK'] = '&#1041;&#1083;&#1086;&#1082;&#1080;&#1088;&#1072;&#1081;';
+$TEXT['CALENDAR'] = 'Calender';
+$TEXT['CANCEL'] = '&#1054;&#1090;&#1082;&#1072;&#1079;';
+$TEXT['CAN_DELETE_HIMSELF'] = 'Can delete himself';
+$TEXT['CAPTCHA_VERIFICATION'] = 'Captcha &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1082;&#1072;';
+$TEXT['CAP_EDIT_CSS'] = 'Edit CSS';
+$TEXT['CHANGE'] = '&#1057;&#1084;&#1077;&#1085;&#1080;';
+$TEXT['CHANGES'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;';
+$TEXT['CHANGE_SETTINGS'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077;';
+$TEXT['CHARSET'] = '&#1050;&#1086;&#1076;&#1086;&#1074;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;';
+$TEXT['CHECKBOX_GROUP'] = 'Checkbox &#1075;&#1088;&#1091;&#1087;&#1072;';
+$TEXT['CLOSE'] = '&#1047;&#1072;&#1090;&#1074;&#1086;&#1088;&#1080;';
+$TEXT['CODE'] = '&#1050;&#1086;&#1076;';
+$TEXT['CODE_SNIPPET'] = 'Code-snippet';
+$TEXT['COLLAPSE'] = '&#1057;&#1074;&#1080;&#1081;';
+$TEXT['COMMENT'] = '&#1050;&#1086;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;';
+$TEXT['COMMENTING'] = '&#1050;&#1086;&#1084;&#1077;&#1085;&#1090;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$TEXT['COMMENTS'] = '&#1050;&#1086;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;';
+$TEXT['CREATE_FOLDER'] = '&#1057;&#1098;&#1079;&#1076;&#1072;&#1081; &#1087;&#1072;&#1087;&#1082;&#1072;/&#1080;/';
+$TEXT['CURRENT'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072;';
+$TEXT['CURRENT_FOLDER'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['CURRENT_PAGE'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['CURRENT_PASSWORD'] = '&#1058;&#1077;&#1082;&#1091;&#1097;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$TEXT['CUSTOM'] = '&#1055;&#1086; &#1084;&#1103;&#1088;&#1082;&#1072;';
+$TEXT['DATABASE'] = '&#1041;&#1072;&#1079;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$TEXT['DATE'] = '&#1044;&#1072;&#1090;&#1072;';
+$TEXT['DATE_FORMAT'] = '&#1060;&#1086;&#1088;&#1084;&#1072;&#1090; &#1076;&#1072;&#1090;&#1072;';
+$TEXT['DEFAULT'] = '&#1055;&#1086; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1073;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$TEXT['DEFAULT_CHARSET'] = '&#1050;&#1086;&#1076;&#1086;&#1074;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072; &#1087;&#1086; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1073;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$TEXT['DEFAULT_TEXT'] = '&#1058;&#1077;&#1082;&#1089;&#1090; &#1087;&#1086; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1073;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$TEXT['DELETE'] = '&#1048;&#1079;&#1090;&#1088;&#1080;&#1081;';
+$TEXT['DELETED'] = '&#1048;&#1079;&#1090;&#1088;&#1080;&#1090;&#1072;';
+$TEXT['DELETE_DATE'] = 'Delete date';
+$TEXT['DELETE_ZIP'] = 'Delete zip archive after unpacking';
+$TEXT['DESCRIPTION'] = '&#1054;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077;';
+$TEXT['DESIGNED_FOR'] = '&#1053;&#1072;&#1087;&#1088;&#1072;&#1074;&#1077;&#1085; &#1079;&#1072;';
+$TEXT['DIRECTORIES'] = '&#1055;&#1072;&#1087;&#1082;&#1080;';
+$TEXT['DIRECTORY_MODE'] = '&#1056;&#1077;&#1078;&#1080;&#1084; &#1087;&#1072;&#1087;&#1082;&#1080;';
+$TEXT['DISABLED'] = '&#1044;&#1077;&#1072;&#1082;&#1090;&#1080;&#1074;&#1080;&#1088;&#1072;&#1085;';
+$TEXT['DISPLAY_NAME'] = '&#1055;&#1086;&#1082;&#1072;&#1078;&#1080; &#1080;&#1084;&#1077;';
+$TEXT['EMAIL'] = 'Email';
+$TEXT['EMAIL_ADDRESS'] = 'Email &#1072;&#1076;&#1088;&#1077;&#1089;';
+$TEXT['EMPTY_TRASH'] = '&#1048;&#1079;&#1087;&#1088;&#1072;&#1079;&#1085;&#1080; &#1082;&#1086;&#1096;&#1095;&#1077;&#1090;&#1086;';
+$TEXT['ENABLED'] = '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1077;&#1085;';
+$TEXT['END'] = '&#1050;&#1088;&#1072;&#1081;';
+$TEXT['ERROR'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072;';
+$TEXT['EXACT_MATCH'] = '&#1058;&#1086;&#1095;&#1085;&#1086; &#1089;&#1098;&#1074;&#1087;&#1072;&#1076;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['EXECUTE'] = '&#1048;&#1079;&#1087;&#1098;&#1083;&#1085;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['EXPAND'] = '&#1056;&#1072;&#1079;&#1096;&#1080;&#1088;&#1080;';
+$TEXT['EXTENSION'] = 'Extension';
+$TEXT['FIELD'] = '&#1055;&#1086;&#1083;&#1077;';
+$TEXT['FILE'] = '&#1060;&#1072;&#1081;&#1083;';
+$TEXT['FILES'] = '&#1060;&#1072;&#1081;&#1083;&#1086;&#1074;&#1077;';
+$TEXT['FILESYSTEM_PERMISSIONS'] = '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1077;&#1085;&#1080;&#1103; - &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1072; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072;';
+$TEXT['FILE_MODE'] = '&#1060;&#1072;&#1081;&#1083;&#1086;&#1074; &#1088;&#1077;&#1078;&#1080;&#1084;';
+$TEXT['FINISH_PUBLISHING'] = '&#1050;&#1088;&#1072;&#1081; &#1085;&#1072; &#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1091;&#1074;&#1072;&#1085;&#1077;';
+$TEXT['FOLDER'] = '&#1055;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['FOLDERS'] = '&#1055;&#1072;&#1087;&#1082;&#1080;';
+$TEXT['FOOTER'] = 'Footer';
+$TEXT['FORGOTTEN_DETAILS'] = '&#1047;&#1072;&#1073;&#1088;&#1072;&#1074;&#1077;&#1085;&#1080; &#1076;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080;?';
+$TEXT['FORGOT_DETAILS'] = '&#1047;&#1072;&#1073;&#1088;&#1072;&#1074;&#1077;&#1085;&#1080; &#1076;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080;?';
+$TEXT['FROM'] = '&#1054;&#1090;';
+$TEXT['FRONTEND'] = 'Front-end';
+$TEXT['FULL_NAME'] = '&#1055;&#1098;&#1083;&#1085;&#1086; &#1080;&#1084;&#1077;';
+$TEXT['FUNCTION'] = 'Function';
+$TEXT['GROUP'] = '&#1043;&#1088;&#1091;&#1087;&#1072;';
+$TEXT['HEADER'] = 'Header';
+$TEXT['HEADING'] = 'Heading';
+$TEXT['HEADING_CSS_FILE'] = 'Actual module file: ';
+$TEXT['HEIGHT'] = '&#1042;&#1080;&#1089;&#1086;&#1095;&#1080;&#1085;&#1072;';
+$TEXT['HIDDEN'] = '&#1057;&#1082;&#1088;&#1080;&#1090;';
+$TEXT['HIDE'] = '&#1057;&#1082;&#1088;&#1080;&#1081;';
+$TEXT['HIDE_ADVANCED'] = '&#1057;&#1082;&#1088;&#1080;&#1081; &#1088;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1090;&#1077; &#1086;&#1087;&#1094;&#1080;&#1080;';
+$TEXT['HOME'] = '&#1053;&#1072;&#1095;&#1072;&#1083;&#1086;';
+$TEXT['HOMEPAGE_REDIRECTION'] = 'Homepage Redirection';
+$TEXT['HOME_FOLDER'] = 'Personal Folder';
+$TEXT['HOME_FOLDERS'] = 'Personal Folders';
+$TEXT['HOST'] = 'Host';
+$TEXT['ICON'] = '&#1048;&#1082;&#1086;&#1085;&#1072;';
+$TEXT['IMAGE'] = '&#1050;&#1072;&#1088;&#1090;&#1080;&#1085;&#1082;&#1072;';
+$TEXT['INLINE'] = 'In-line';
+$TEXT['INSTALL'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081;';
+$TEXT['INSTALLATION'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['INSTALLATION_PATH'] = '&#1055;&#1098;&#1090; - &#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['INSTALLATION_URL'] = 'URL - &#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1072;&#1094;&#1080;&#1103;';
+$TEXT['INSTALLED'] = 'installed';
+$TEXT['INTRO'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['INTRO_PAGE'] = '&#1042;&#1098;&#1074;&#1077;&#1078;&#1076;&#1072;&#1097;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['INVALID_SIGNS'] = 'must begin with a letter or has invalid signs';
+$TEXT['KEYWORDS'] = '&#1050;&#1083;&#1102;&#1095;&#1086;&#1074;&#1080; &#1076;&#1091;&#1084;&#1080;';
+$TEXT['LANGUAGE'] = '&#1045;&#1079;&#1080;&#1082;';
+$TEXT['LAST_UPDATED_BY'] = '&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1086; &#1086;&#1073;&#1085;&#1086;&#1074;&#1077;&#1085; &#1086;&#1090;';
+$TEXT['LENGTH'] = '&#1044;&#1098;&#1083;&#1078;&#1080;&#1085;&#1072;';
+$TEXT['LEVEL'] = '&#1053;&#1080;&#1074;&#1086;';
+$TEXT['LINK'] = '&#1042;&#1088;&#1098;&#1079;&#1082;&#1072;';
+$TEXT['LINUX_UNIX_BASED'] = '&#1051;&#1080;&#1085;&#1091;&#1082;&#1089;/&#1070;&#1085;&#1080;&#1082;&#1089; &#1073;&#1072;&#1079;&#1080;&#1088;&#1072;&#1085;&#1072;';
+$TEXT['LIST_OPTIONS'] = '&#1057;&#1087;&#1080;&#1089;&#1098;&#1082; - &#1086;&#1087;&#1094;&#1080;&#1080;';
+$TEXT['LOGGED_IN'] = 'Logged-In';
+$TEXT['LOGIN'] = '&#1042;&#1093;&#1086;&#1076;';
+$TEXT['LONG'] = '&#1044;&#1098;&#1083;&#1098;&#1075;';
+$TEXT['LONG_TEXT'] = '&#1044;&#1098;&#1083;&#1098;&#1075; &#1090;&#1077;&#1082;&#1089;&#1090;';
+$TEXT['LOOP'] = 'Loop';
+$TEXT['MAIN'] = '&#1054;&#1089;&#1085;&#1086;&#1074;&#1077;&#1085;';
+$TEXT['MAINTENANCE_OFF'] = 'Maintenance off';
+$TEXT['MAINTENANCE_ON'] = 'Maintenance on';
+$TEXT['MANAGE'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['MANAGE_GROUPS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1075;&#1088;&#1091;&#1087;&#1080;';
+$TEXT['MANAGE_USERS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080;';
+$TEXT['MATCH'] = '&#1055;&#1086;&#1076;&#1086;&#1073;&#1077;&#1085;';
+$TEXT['MATCHING'] = '&#1057;&#1098;&#1074;&#1087;&#1072;&#1076;&#1072;';
+$TEXT['MAX_EXCERPT'] = 'Max lines of excerpt';
+$TEXT['MAX_SUBMISSIONS_PER_HOUR'] = '&#1052;&#1072;&#1082;&#1089;. &#1055;&#1086;&#1076;&#1072;&#1074;&#1072;&#1085;&#1080;&#1103; &#1079;&#1072; &#1095;&#1072;&#1089;';
+$TEXT['MEDIA_DIRECTORY'] = '&#1055;&#1072;&#1087;&#1082;&#1072; &#1084;&#1077;&#1076;&#1080;&#1103;';
+$TEXT['MENU'] = '&#1052;&#1077;&#1085;&#1102;';
+$TEXT['MENU_ICON_0'] = 'Menu-Icon normal';
+$TEXT['MENU_ICON_1'] = 'Menu-Icon hover';
+$TEXT['MENU_TITLE'] = '&#1047;&#1072;&#1075;&#1083;&#1072;&#1074;&#1080;&#1077; &#1085;&#1072; &#1084;&#1077;&#1085;&#1102;&#1090;&#1086;';
+$TEXT['MESSAGE'] = '&#1057;&#1098;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1077;';
+$TEXT['MODIFY'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;';
+$TEXT['MODIFY_CONTENT'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1089;&#1098;&#1076;&#1098;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077;&#1090;&#1086;';
+$TEXT['MODIFY_SETTINGS'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077;';
+$TEXT['MODULE_ORDER'] = 'Module-order for searching';
+$TEXT['MODULE_PERMISSIONS'] = '&#1055;&#1088;&#1072;&#1074;&#1072; &#1084;&#1086;&#1076;&#1091;&#1083;&#1080;';
+$TEXT['MORE'] = '&#1055;&#1086;&#1074;&#1077;&#1095;&#1077;';
+$TEXT['MOVE_DOWN'] = '&#1053;&#1072;&#1076;&#1086;&#1083;&#1091;';
+$TEXT['MOVE_UP'] = '&#1053;&#1072;&#1075;&#1086;&#1088;&#1077;';
+$TEXT['MULTIPLE_MENUS'] = '&#1052;&#1085;&#1086;&#1078;&#1077;&#1089;&#1090;&#1074;&#1086; &#1084;&#1077;&#1085;&#1102;&#1090;&#1072;';
+$TEXT['MULTISELECT'] = 'Multi-select';
+$TEXT['NAME'] = '&#1048;&#1084;&#1077;';
+$TEXT['NEED_CURRENT_PASSWORD'] = 'confirm with current password';
+$TEXT['NEED_TO_LOGIN'] = '&#1048;&#1089;&#1082;&#1072;&#1090;&#1077; &#1076;&#1072; &#1074;&#1083;&#1077;&#1079;&#1077;&#1090;&#1077;?';
+$TEXT['NEW_PASSWORD'] = '&#1053;&#1086;&#1074;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$TEXT['NEW_WINDOW'] = '&#1053;&#1086;&#1074; &#1087;&#1088;&#1086;&#1079;&#1086;&#1088;&#1077;&#1094;';
+$TEXT['NEXT'] = '&#1057;&#1083;&#1077;&#1076;&#1074;&#1072;&#1097;';
+$TEXT['NEXT_PAGE'] = '&#1057;&#1083;&#1076;&#1074;&#1072;&#1097;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['NO'] = '&#1053;&#1077;';
+$TEXT['NONE'] = '&#1053;&#1080;&#1097;&#1086;';
+$TEXT['NONE_FOUND'] = '&#1053;&#1080;&#1097;&#1086; &#1085;&#1077; &#1077; &#1085;&#1072;&#1084;&#1077;&#1088;&#1077;&#1085;&#1086;';
+$TEXT['NOT_FOUND'] = '&#1053;&#1077; &#1077; &#1085;&#1072;&#1084;&#1077;&#1088;&#1077;&#1085;';
+$TEXT['NOT_INSTALLED'] = 'not installed';
+$TEXT['NO_IMAGE_SELECTED'] = 'no image selected';
+$TEXT['NO_RESULTS'] = '&#1053;&#1103;&#1084;&#1072; &#1088;&#1077;&#1079;&#1091;&#1083;&#1090;&#1072;&#1090;&#1080;';
+$TEXT['OF'] = '&#1054;&#1090;';
+$TEXT['ON'] = 'On';
+$TEXT['OPEN'] = 'Open';
+$TEXT['OPTION'] = '&#1054;&#1087;&#1094;&#1080;&#1103;';
+$TEXT['OTHERS'] = '&#1044;&#1088;&#1091;&#1075;&#1080;';
+$TEXT['OUT_OF'] = '&#1086;&#1090;';
+$TEXT['OVERWRITE_EXISTING'] = '&#1055;&#1088;&#1077;&#1079;&#1072;&#1087;&#1080;&#1096;&#1080; &#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1074;&#1072;&#1097;';
+$TEXT['PAGE'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['PAGES_DIRECTORY'] = '&#1055;&#1072;&#1087;&#1082;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;';
+$TEXT['PAGES_PERMISSION'] = 'Pages Permission';
+$TEXT['PAGES_PERMISSIONS'] = 'Pages Permissions';
+$TEXT['PAGE_EXTENSION'] = '&#1056;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['PAGE_ICON'] = 'Page Image';
+$TEXT['PAGE_ICON_DIR'] = 'Path pages/menu images';
+$TEXT['PAGE_LANGUAGES'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1077;&#1079;&#1080;&#1094;&#1080;';
+$TEXT['PAGE_LEVEL_LIMIT'] = 'Page Level Limit';
+$TEXT['PAGE_SPACER'] = 'Page Spacer';
+$TEXT['PAGE_TITLE'] = '&#1047;&#1072;&#1075;&#1083;&#1072;&#1074;&#1080;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072;';
+$TEXT['PAGE_TRASH'] = 'Page Trash';
+$TEXT['PARENT'] = '&#1056;&#1086;&#1076;&#1080;&#1090;&#1077;&#1083;';
+$TEXT['PASSWORD'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$TEXT['PATH'] = '&#1055;&#1098;&#1090;';
+$TEXT['PHP_ERROR_LEVEL'] = 'PHP Error Reporting Level';
+$TEXT['PLEASE_LOGIN'] = 'Please login';
+$TEXT['PLEASE_SELECT'] = '&#1052;&#1086;&#1083;&#1103; &#1080;&#1079;&#1073;&#1077;&#1088;&#1077;&#1090;&#1077;';
+$TEXT['POST'] = '&#1054;&#1089;&#1090;&#1072;&#1074;&#1080;';
+$TEXT['POSTS_PER_PAGE'] = 'Posts Per Page';
+$TEXT['POST_FOOTER'] = 'Post Footer';
+$TEXT['POST_HEADER'] = 'Post Header';
+$TEXT['PREVIOUS'] = '&#1055;&#1088;&#1077;&#1076;&#1080;&#1096;&#1077;&#1085;';
+$TEXT['PREVIOUS_PAGE'] = '&#1055;&#1088;&#1077;&#1076;&#1080;&#1096;&#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$TEXT['PRIVATE'] = '&#1047;&#1072;&#1082;&#1088;&#1080;&#1090; &#1076;&#1086;&#1089;&#1090;&#1098;&#1087;';
+$TEXT['PRIVATE_VIEWERS'] = '&#1047;&#1072;&#1082;&#1088;&#1080;&#1090; &#1076;&#1086;&#1089;&#1090;&#1098;&#1087;';
+$TEXT['PROFILES_EDIT'] = 'Change the profile';
+$TEXT['PUBLIC'] = '&#1055;&#1091;&#1073;&#1083;&#1080;&#1095;&#1085;&#1072;';
+$TEXT['PUBL_END_DATE'] = 'End date';
+$TEXT['PUBL_START_DATE'] = 'Start date';
+$TEXT['RADIO_BUTTON_GROUP'] = 'Radio Button &#1075;&#1088;&#1091;&#1087;&#1072;';
+$TEXT['READ'] = '&#1063;&#1077;&#1090;&#1077;&#1085;&#1077;';
+$TEXT['READ_MORE'] = '&#1055;&#1088;&#1086;&#1095;&#1077;&#1090;&#1080; &#1087;&#1086;&#1074;&#1077;&#1095;&#1077;';
+$TEXT['REDIRECT_AFTER'] = 'Redirect after';
+$TEXT['REGISTERED'] = '&#1056;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1072;&#1085;';
+$TEXT['REGISTERED_VIEWERS'] = '&#1056;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1072;&#1085;&#1080; &#1079;&#1088;&#1080;&#1090;&#1077;&#1083;&#1080;';
+$TEXT['RELOAD'] = '&#1054;&#1073;&#1085;&#1086;&#1074;&#1080;';
+$TEXT['REMEMBER_ME'] = '&#1047;&#1072;&#1087;&#1086;&#1084;&#1085;&#1080; &#1084;&#1077;';
+$TEXT['RENAME'] = '&#1055;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1091;&#1074;&#1072;&#1081;';
+$TEXT['RENAME_FILES_ON_UPLOAD'] = 'No upload for this filetypes';
+$TEXT['REQUIRED'] = '&#1047;&#1072;&#1076;&#1098;&#1083;&#1078;&#1080;&#1090;&#1077;&#1083;&#1085;&#1086;';
+$TEXT['REQUIREMENT'] = 'Requirement';
+$TEXT['RESET'] = '&#1053;&#1091;&#1083;&#1080;&#1088;&#1072;&#1081;';
+$TEXT['RESIZE'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1088;&#1072;&#1079;&#1084;&#1077;&#1088;&#1072;';
+$TEXT['RESIZE_IMAGE_TO'] = 'Resize Image To';
+$TEXT['RESTORE'] = '&#1042;&#1098;&#1079;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;';
+$TEXT['RESTORE_DATABASE'] = '&#1042;&#1098;&#1079;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080; &#1073;&#1072;&#1079;&#1072;&#1090;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$TEXT['RESTORE_MEDIA'] = '&#1042;&#1098;&#1079;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080; &#1084;&#1077;&#1076;&#1080;&#1103;';
+$TEXT['RESULTS'] = '&#1056;&#1077;&#1079;&#1091;&#1083;&#1090;&#1072;&#1090;&#1080;';
+$TEXT['RESULTS_FOOTER'] = 'Results Footer';
+$TEXT['RESULTS_FOR'] = '&#1056;&#1077;&#1079;&#1091;&#1083;&#1090;&#1072;&#1090;&#1080; &#1079;&#1072;';
+$TEXT['RESULTS_HEADER'] = 'Results Header';
+$TEXT['RESULTS_LOOP'] = 'Results Loop';
+$TEXT['RETYPE_NEW_PASSWORD'] = '&#1054;&#1097;&#1077; &#1074;&#1077;&#1076;&#1085;&#1098;&#1078; &#1085;&#1086;&#1074;&#1072;&#1090;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$TEXT['RETYPE_PASSWORD'] = '&#1054;&#1097;&#1077; &#1074;&#1077;&#1076;&#1085;&#1098;&#1078; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;&#1090;&#1072;';
+$TEXT['SAME_WINDOW'] = '&#1057;&#1098;&#1097;&#1080;&#1103; &#1087;&#1088;&#1086;&#1079;&#1086;&#1088;&#1077;&#1094;';
+$TEXT['SAVE'] = '&#1047;&#1072;&#1087;&#1072;&#1079;&#1080;';
+$TEXT['SEARCH'] = '&#1058;&#1098;&#1088;&#1089;&#1080;';
+$TEXT['SEARCHING'] = '&#1058;&#1098;&#1088;&#1089;&#1103;';
+$TEXT['SECTION'] = '&#1057;&#1077;&#1082;&#1094;&#1080;&#1103;';
+$TEXT['SECTION_BLOCKS'] = 'Section Blocks';
+$TEXT['SEC_ANCHOR'] = 'Section-Anchor text';
+$TEXT['SELECT_BOX'] = '&#1050;&#1091;&#1090;&#1080;&#1103; &#1080;&#1079;&#1073;&#1086;&#1088;';
+$TEXT['SEND_DETAILS'] = '&#1048;&#1079;&#1087;&#1088;&#1072;&#1090;&#1080; &#1076;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080;&#1090;&#1077;';
+$TEXT['SEPARATE'] = 'Separate';
+$TEXT['SEPERATOR'] = 'Separator';
+$TEXT['SERVER_EMAIL'] = 'Email &#1085;&#1072; &#1089;&#1098;&#1088;&#1074;&#1098;&#1088;&#1072;';
+$TEXT['SERVER_OPERATING_SYSTEM'] = '&#1054;&#1087;&#1077;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1072; &#1089;&#1080;&#1090;&#1077;&#1084;&#1072; &#1085;&#1072; &#1089;&#1098;&#1088;&#1074;&#1098;&#1088;&#1072;';
+$TEXT['SESSION_IDENTIFIER'] = '&#1048;&#1076;&#1077;&#1085;&#1090;&#1080;&#1092;&#1080;&#1082;&#1072;&#1090;&#1086;&#1088; &#1089;&#1077;&#1089;&#1080;&#1103;';
+$TEXT['SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$TEXT['SHORT'] = '&#1050;&#1098;&#1089;';
+$TEXT['SHORT_TEXT'] = '&#1050;&#1088;&#1072;&#1090;&#1098;&#1082; &#1090;&#1077;&#1082;&#1089;&#1090;';
+$TEXT['SHOW'] = '&#1055;&#1086;&#1082;&#1072;&#1078;&#1080;';
+$TEXT['SHOW_ADVANCED'] = '&#1055;&#1086;&#1082;&#1072;&#1078;&#1080; &#1088;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080; &#1086;&#1087;&#1094;&#1080;&#1080;';
+$TEXT['SIGNUP'] = '&#1047;&#1072;&#1087;&#1080;&#1097;&#1080; &#1089;&#1077;';
+$TEXT['SIZE'] = '&#1043;&#1086;&#1083;&#1077;&#1084;&#1080;&#1085;&#1072;';
+$TEXT['SMART_LOGIN'] = 'Smart Login';
+$TEXT['START'] = '&#1053;&#1072;&#1095;&#1072;&#1083;&#1086;';
+$TEXT['START_PUBLISHING'] = '&#1047;&#1072;&#1087;&#1086;&#1095;&#1085;&#1080; &#1087;&#1091;&#1073;&#1083;&#1080;&#1082;&#1091;&#1074;&#1072;&#1085;&#1077;';
+$TEXT['SUBJECT'] = '&#1057;&#1102;&#1078;&#1077;&#1090;';
+$TEXT['SUBMISSIONS'] = '&#1055;&#1086;&#1076;&#1072;&#1076;&#1077;&#1085;&#1080;';
+$TEXT['SUBMISSIONS_STORED_IN_DATABASE'] = '&#1055;&#1086;&#1076;&#1072;&#1074;&#1072;&#1085;&#1080;&#1103;&#1090;&#1072; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1080; &#1074; &#1073;&#1072;&#1079;&#1072;&#1090;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$TEXT['SUBMISSION_ID'] = '&#1055;&#1086;&#1076;&#1072;&#1076;&#1077;&#1085; ID';
+$TEXT['SUBMITTED'] = '&#1055;&#1086;&#1076;&#1072;&#1076;&#1077;&#1085;';
+$TEXT['SUCCESS'] = '&#1059;&#1089;&#1087;&#1077;&#1093;';
+$TEXT['SYSTEM_DEFAULT'] = '&#1055;&#1086; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1073;&#1080;&#1088;&#1072;&#1085;&#1077; &#1085;&#1072; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072;&#1090;&#1072;';
+$TEXT['SYSTEM_PERMISSIONS'] = '&#1057;&#1080;&#1089;&#1090;&#1077;&#1084;&#1085;&#1080; &#1087;&#1088;&#1072;&#1074;&#1072;';
+$TEXT['TABLE_PREFIX'] = '&#1055;&#1088;&#1077;&#1092;&#1080;&#1082;&#1089; &#1085;&#1072; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072;';
+$TEXT['TARGET'] = '&#1062;&#1077;&#1083;';
+$TEXT['TARGET_FOLDER'] = '&#1050;&#1098;&#1084; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$TEXT['TEMPLATE'] = '&#1064;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$TEXT['TEMPLATE_PERMISSIONS'] = '&#1055;&#1086;&#1079;&#1074;&#1086;&#1083;&#1077;&#1085;&#1080;&#1103; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$TEXT['TEXT'] = '&#1058;&#1077;&#1082;&#1089;&#1090;';
+$TEXT['TEXTAREA'] = '&#1058;&#1077;&#1082;&#1089;&#1090;&#1086;&#1074;&#1086; &#1087;&#1088;&#1086;&#1089;&#1090;&#1088;&#1072;&#1085;&#1089;&#1090;&#1074;&#1086;';
+$TEXT['TEXTFIELD'] = '&#1058;&#1077;&#1082;&#1089;&#1090;&#1086;&#1074;&#1086; &#1087;&#1086;&#1083;&#1077;';
+$TEXT['THEME'] = 'Backend-Theme';
+$TEXT['TIME'] = '&#1063;&#1072;&#1089;';
+$TEXT['TIMEZONE'] = '&#1042;&#1088;&#1077;&#1084;&#1077;&#1074;&#1072; &#1079;&#1086;&#1085;&#1072;';
+$TEXT['TIME_FORMAT'] = '&#1060;&#1086;&#1088;&#1084;&#1072;&#1090; &#1074;&#1088;&#1077;&#1084;&#1077;';
+$TEXT['TIME_LIMIT'] = 'Max time to gather excerpts per module';
+$TEXT['TITLE'] = '&#1058;&#1080;&#1090;&#1083;&#1072;';
+$TEXT['TO'] = '&#1044;&#1086;';
+$TEXT['TOP_FRAME'] = 'Top Frame';
+$TEXT['TRASH_EMPTIED'] = '&#1050;&#1086;&#1096;&#1095;&#1077;&#1090;&#1086; &#1080;&#1079;&#1087;&#1088;&#1072;&#1079;&#1085;&#1077;&#1085;&#1086;';
+$TEXT['TXT_EDIT_CSS_FILE'] = 'Edit the CSS definitions in the textarea below.';
+$TEXT['TYPE'] = '&#1058;&#1080;&#1087;';
+$TEXT['UNDER_CONSTRUCTION'] = '&#1042; &#1087;&#1088;&#1086;&#1094;&#1077;&#1089; &#1085;&#1072; &#1089;&#1098;&#1079;&#1076;&#1072;&#1074;&#1072;&#1085;&#1077;';
+$TEXT['UNINSTALL'] = '&#1044;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081;';
+$TEXT['UNKNOWN'] = '&#1053;&#1077;&#1080;&#1079;&#1074;&#1077;&#1089;&#1090;&#1085;&#1086;';
+$TEXT['UNLIMITED'] = '&#1041;&#1077;&#1079; &#1083;&#1080;&#1084;&#1080;&#1090;';
+$TEXT['UNZIP_FILE'] = 'Upload and unpack a zip archive';
+$TEXT['UP'] = '&#1053;&#1072;&#1075;&#1086;&#1088;&#1077;';
+$TEXT['UPGRADE'] = 'Upgrade';
+$TEXT['UPLOAD_FILES'] = '&#1050;&#1072;&#1095;&#1080; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1077;';
+$TEXT['URL'] = 'URL';
+$TEXT['USER'] = '&#1055;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;';
+$TEXT['USERNAME'] = 'Loginname';
+$TEXT['USERS_ACTIVE'] = 'User is set active';
+$TEXT['USERS_CAN_SELFDELETE'] = 'User can delete himself';
+$TEXT['USERS_CHANGE_SETTINGS'] = 'User can change his own settings';
+$TEXT['USERS_DELETED'] = 'User is marked as deleted';
+$TEXT['USERS_FLAGS'] = 'User-Flags';
+$TEXT['USERS_PROFILE_ALLOWED'] = 'User can create extended profile';
+$TEXT['VERIFICATION'] = '&#1055;&#1088;&#1086;&#1074;&#1077;&#1088;&#1082;&#1072;';
+$TEXT['VERSION'] = '&#1042;&#1077;&#1088;&#1089;&#1080;&#1103;';
+$TEXT['VIEW'] = '&#1055;&#1088;&#1077;&#1075;&#1083;&#1077;&#1076;';
+$TEXT['VIEW_DELETED_PAGES'] = '&#1042;&#1080;&#1079; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;&#1080;&#1090;&#1077; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;';
+$TEXT['VIEW_DETAILS'] = '&#1042;&#1080;&#1078; &#1076;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080;&#1090;&#1077;';
+$TEXT['VISIBILITY'] = '&#1042;&#1080;&#1076;&#1080;&#1084;&#1086;&#1089;&#1090;';
+$TEXT['WBMAILER_DEFAULT_SENDER_MAIL'] = 'Default From Mail';
+$TEXT['WBMAILER_DEFAULT_SENDER_NAME'] = 'Default Sender Name';
+$TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'] = 'Please specify a default "FROM" address and "SENDER" name below. It is recommended to use a FROM address like: <strong>admin@yourdomain.com</strong>. Some mail provider (e.g. <em>mail.com</em>) may reject mails with a FROM: address like <em>name@mail.com</em> sent via a foreign relay to avoid spam.<br /><br />The default values are only used if no other values are specified by WebsiteBaker. If your server supports <acronym title="Simple mail transfer protocol">SMTP</acronym>, you may want use this option for outgoing mails.';
+$TEXT['WBMAILER_FUNCTION'] = 'Mail Routine';
+$TEXT['WBMAILER_NOTICE'] = '<strong>SMTP Mailer Settings:</strong><br />The settings below are only required if you want to send mails via <acronym title="Simple mail transfer protocol">SMTP</acronym>. If you do not know your SMTP host or you are not sure about the required settings, simply stay with the default mail routine: PHP MAIL.';
+$TEXT['WBMAILER_PHP'] = 'PHP MAIL';
+$TEXT['WBMAILER_SMTP'] = 'SMTP';
+$TEXT['WBMAILER_SMTP_AUTH'] = 'SMTP Authentification';
+$TEXT['WBMAILER_SMTP_AUTH_NOTICE'] = 'only activate if your SMTP host requires authentification';
+$TEXT['WBMAILER_SMTP_HOST'] = 'SMTP Host';
+$TEXT['WBMAILER_SMTP_PASSWORD'] = 'SMTP Password';
+$TEXT['WBMAILER_SMTP_USERNAME'] = 'SMTP Loginname';
+$TEXT['WEBSITE'] = '&#1057;&#1072;&#1081;&#1090;';
+$TEXT['WEBSITE_DESCRIPTION'] = '&#1054;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077; &#1085;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_FOOTER'] = 'Website Footer';
+$TEXT['WEBSITE_HEADER'] = 'Website Header';
+$TEXT['WEBSITE_KEYWORDS'] = '&#1050;&#1083;&#1102;&#1095;&#1086;&#1074;&#1080; &#1076;&#1091;&#1084;&#1072; &#1085;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WEBSITE_TITLE'] = '&#1047;&#1072;&#1075;&#1083;&#1072;&#1074;&#1080;&#1077; &#1085;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072;';
+$TEXT['WELCOME_BACK'] = '&#1044;&#1086;&#1073;&#1088;&#1077; &#1076;&#1086;&#1096;&#1083;&#1080;';
+$TEXT['WIDTH'] = '&#1064;&#1080;&#1088;&#1080;&#1085;&#1072;';
+$TEXT['WINDOW'] = '&#1055;&#1088;&#1086;&#1079;&#1086;&#1088;&#1077;&#1094;';
+$TEXT['WINDOWS'] = '&#1059;&#1080;&#1085;&#1076;&#1086;&#1091;&#1089;';
+$TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'] = 'World-writeable file permissions';
+$TEXT['WRITE'] = '&#1047;&#1072;&#1087;&#1080;&#1089;';
+$TEXT['WYSIWYG_EDITOR'] = 'WYSIWYG &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1086;&#1088;';
+$TEXT['WYSIWYG_STYLE'] = '&#1057;&#1090;&#1080;&#1083; WYSIWYG';
+$TEXT['YES'] = '&#1044;&#1072;';
+
+/* HEADING */
+$HEADING['ADDON_PRECHECK_FAILED'] = 'Add-On requirements not met';
+$HEADING['ADD_CHILD_PAGE'] = 'Add child page';
+$HEADING['ADD_GROUP'] = 'Add Group';
+$HEADING['ADD_GROUPS'] = 'Add Groups';
+$HEADING['ADD_HEADING'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080; &#1079;&#1072;&#1075;&#1083;&#1072;&#1074;&#1080;&#1077;';
+$HEADING['ADD_PAGE'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['ADD_USER'] = '&#1044;&#1086;&#1073;&#1072;&#1074;&#1080; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;';
+$HEADING['ADMINISTRATION_TOOLS'] = '&#1040;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1080; &#1080;&#1085;&#1089;&#1090;&#1088;&#1091;&#1084;&#1077;&#1085;&#1090;&#1080;';
+$HEADING['BROWSE_MEDIA'] = '&#1055;&#1088;&#1077;&#1075;&#1083;&#1077;&#1076; &#1085;&#1072; &#1052;&#1077;&#1076;&#1080;&#1103;';
+$HEADING['CREATE_FOLDER'] = '&#1057;&#1098;&#1079;&#1076;&#1072;&#1081; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$HEADING['DEFAULT_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1087;&#1086; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1073;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$HEADING['DELETED_PAGES'] = '&#1048;&#1079;&#1090;&#1088;&#1080;&#1090;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;';
+$HEADING['FILESYSTEM_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1081;&#1082;&#1080; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1072; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072;';
+$HEADING['GENERAL_SETTINGS'] = '&#1054;&#1073;&#1097;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$HEADING['INSTALL_LANGUAGE'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1077;&#1079;&#1080;&#1082;';
+$HEADING['INSTALL_MODULE'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1084;&#1086;&#1076;&#1091;&#1083;';
+$HEADING['INSTALL_TEMPLATE'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$HEADING['INVOKE_LANGUAGE_FILES'] = 'Execute language files manually';
+$HEADING['INVOKE_MODULE_FILES'] = 'Execute module files manually';
+$HEADING['INVOKE_TEMPLATE_FILES'] = 'Execute template files manually';
+$HEADING['LANGUAGE_DETAILS'] = '&#1044;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080; &#1079;&#1072; &#1077;&#1079;&#1080;&#1082;';
+$HEADING['MANAGE_SECTIONS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1089;&#1077;&#1082;&#1094;&#1080;&#1080;&#1090;&#1077;';
+$HEADING['MODIFY_ADVANCED_PAGE_SETTINGS'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1088;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1090;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['MODIFY_DELETE_GROUP'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;/&#1048;&#1079;&#1090;&#1088;&#1080;&#1081; &#1075;&#1088;&#1091;&#1087;&#1072;';
+$HEADING['MODIFY_DELETE_PAGE'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;/&#1048;&#1079;&#1090;&#1088;&#1080;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['MODIFY_DELETE_USER'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;/&#1048;&#1079;&#1090;&#1088;&#1080;&#1081; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;';
+$HEADING['MODIFY_GROUP'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1075;&#1088;&#1091;&#1087;&#1072;';
+$HEADING['MODIFY_GROUPS'] = 'Modify Groups';
+$HEADING['MODIFY_INTRO_PAGE'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1074;&#1098;&#1074;&#1077;&#1078;&#1076;&#1072;&#1097;&#1072;&#1090;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['MODIFY_PAGE'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['MODIFY_PAGE_SETTINGS'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$HEADING['MODIFY_USER'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;';
+$HEADING['MODULE_DETAILS'] = '&#1044;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080; &#1079;&#1072; &#1084;&#1086;&#1076;&#1091;&#1083;';
+$HEADING['MY_EMAIL'] = '&#1052;&#1086;&#1103;&#1090; e-mail';
+$HEADING['MY_PASSWORD'] = '&#1052;&#1086;&#1103;&#1090;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$HEADING['MY_SETTINGS'] = '&#1052;&#1086;&#1080;&#1090;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$HEADING['SEARCH_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1090;&#1098;&#1088;&#1089;&#1077;&#1085;&#1077;';
+$HEADING['SERVER_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1089;&#1098;&#1088;&#1074;&#1098;&#1088;';
+$HEADING['TEMPLATE_DETAILS'] = '&#1044;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080; &#1079;&#1072; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$HEADING['UNINSTALL_LANGUAGE'] = '&#1044;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1077;&#1079;&#1080;&#1082;';
+$HEADING['UNINSTALL_MODULE'] = '&#1044;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1084;&#1086;&#1076;&#1091;&#1083;';
+$HEADING['UNINSTALL_TEMPLATE'] = '&#1044;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1081; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;';
+$HEADING['UPGRADE_LANGUAGE'] = 'Language register/upgrading';
+$HEADING['UPLOAD_FILES'] = '&#1050;&#1072;&#1095;&#1074;&#1072;&#1085;&#1077; &#1085;&#1072; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1077;';
+$HEADING['WBMAILER_SETTINGS'] = 'Mailer Settings';
+
+/* MESSAGE */
+$MESSAGE['ADDON_ERROR_RELOAD'] = 'Error while updating the Add-On information.';
+$MESSAGE['ADDON_LANGUAGES_RELOADED'] = 'Languages reloaded successfully';
+$MESSAGE['ADDON_MANUAL_FTP_LANGUAGE'] = '<strong>ATTENTION!</strong> For safety reasons uploading languages files in the folder/languages/ only by FTP and use the Upgrade function for registering or updating.';
+$MESSAGE['ADDON_MANUAL_FTP_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MANUAL_INSTALLATION'] = 'When modules are uploaded via FTP (not recommended), the module installation functions <tt>install</tt>, <tt>upgrade</tt> or <tt>uninstall</tt> will not be executed automatically. Those modules may not work correct or do not uninstall properly.<br /><br />You can execute the module functions manually for modules uploaded via FTP below.';
+$MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] = 'Warning: Existing module database entries will get lost. Only use this option if you experience problems with modules uploaded via FTP.';
+$MESSAGE['ADDON_MANUAL_RELOAD_WARNING'] = 'Warning: Existing module database entries will get lost. ';
+$MESSAGE['ADDON_MODULES_RELOADED'] = 'Modules reloaded successfully';
+$MESSAGE['ADDON_OVERWRITE_NEWER_FILES'] = 'Overwrite newer Files';
+$MESSAGE['ADDON_PRECHECK_FAILED'] = 'Add-on installation failed. Your system does not fulfill the requirements of this Add-on. To make this Add-on working on your system, please fix the issues summarized below.';
+$MESSAGE['ADDON_RELOAD'] = 'Update database with information from Add-on files (e.g. after FTP upload).';
+$MESSAGE['ADDON_TEMPLATES_RELOADED'] = 'Templates reloaded successfully';
+$MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] = '&#1053;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1098;&#1095;&#1085;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1080; &#1079;&#1072; &#1076;&#1072; &#1089;&#1090;&#1077; &#1090;&#1091;&#1082;';
+$MESSAGE['FORGOT_PASS_ALREADY_RESET'] = '&#1057;&#1098;&#1078;&#1072;&#1083;&#1103;&#1074;&#1072;&#1084;&#1077;, &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;&#1090;&#1072; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1085;&#1091;&#1083;&#1080;&#1088;&#1072; &#1087;&#1086;-&#1095;&#1077;&#1089;&#1090;&#1086; &#1086;&#1090; &#1077;&#1076;&#1080;&#1085; &#1087;&#1098;&#1090; &#1085;&#1072; &#1095;&#1072;&#1089;';
+$MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] = '&#1055;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084; &#1089; &#1080;&#1079;&#1087;&#1088;&#1072;&#1097;&#1072;&#1085;&#1077;&#1090;&#1086; &#1085;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;&#1090;&#1072; &#1087;&#1086; email - &#1082;&#1086;&#1085;&#1090;&#1072;&#1082;&#1090;&#1091;&#1074;&#1072;&#1081;&#1090;&#1077; &#1089;&#1098;&#1089; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1085;&#1080;&#1103; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1086;&#1088;';
+$MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1103; email &#1085;&#1077; &#1077; &#1074; &#1073;&#1072;&#1079;&#1072;&#1090;&#1072; &#1076;&#1072;&#1085;&#1085;&#1080;';
+$MESSAGE['FORGOT_PASS_NO_DATA'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; email &#1072;&#1076;&#1088;&#1077;&#1089;';
+$MESSAGE['FORGOT_PASS_PASSWORD_RESET'] = 'Your loginname and password have been sent to your email address';
+$MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] = 'Sorry, no active content to display';
+$MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] = '&#1057;&#1098;&#1078;&#1072;&#1083;&#1103;&#1074;&#1072;&#1084;&#1077; ,&#1085;&#1086; &#1085;&#1103;&#1084;&#1072;&#1090;&#1077; &#1088;&#1072;&#1079;&#1088;&#1077;&#1096;&#1077;&#1085;&#1080;&#1077; &#1076;&#1072; &#1074;&#1080;&#1076;&#1080;&#1090;&#1077; &#1090;&#1072;&#1079;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$MESSAGE['GENERIC_ALREADY_INSTALLED'] = '&#1042;&#1077;&#1095;&#1077; &#1077; &#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1085;';
+$MESSAGE['GENERIC_BAD_PERMISSIONS'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1079;&#1072;&#1087;&#1080;&#1089;&#1074;&#1072; &#1074; &#1094;&#1077;&#1083;&#1077;&#1074;&#1072;&#1090;&#1072; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103;';
+$MESSAGE['GENERIC_BE_PATIENT'] = 'Please be patient.';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1076;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1076;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;: &#1080;&#1079;&#1087;&#1088;&#1072;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083; &#1089;&#1077; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072; &#1074; &#1084;&#1086;&#1084;&#1077;&#1085;&#1090;&#1072;';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] = '<br /><br />{{type}} <b>{{type_name}}</b> could not be uninstalled, because it is still in use on {{pages}}.<br /><br />';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] = 'this page;these pages';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default template!';
+$MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_THEME'] = 'Can\'t uninstall the template <b>{{name}}</b>, because it is the default backend theme!';
+$MESSAGE['GENERIC_CANNOT_UNZIP'] = 'unzip &#1085;&#1072; &#1092;&#1072;&#1081;&#1083;&#1072; &#1085;&#1077;&#1074;&#1098;&#1079;&#1084;&#1086;&#1078;&#1077;&#1085;';
+$MESSAGE['GENERIC_CANNOT_UPLOAD'] = '&#1060;&#1072;&#1081;&#1083;&#1072; &#1085;&#1077; &#1073;&#1077;&#1096;&#1077; &#1082;&#1072;&#1095;&#1077;&#1085;';
+$MESSAGE['GENERIC_COMPARE'] = ' successfully';
+$MESSAGE['GENERIC_ERROR_OPENING_FILE'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072; &#1087;&#1088;&#1080; &#1086;&#1090;&#1074;&#1072;&#1088;&#1103;&#1085;&#1077; &#1085;&#1072; &#1092;&#1072;&#1081;&#1083;.';
+$MESSAGE['GENERIC_FAILED_COMPARE'] = ' failed';
+$MESSAGE['GENERIC_FILE_TYPE'] = '&#1060;&#1072;&#1081;&#1083;&#1072;, &#1082;&#1086;&#1081;&#1090;&#1086; &#1082;&#1072;&#1095;&#1074;&#1072;&#1090;&#1077; &#1090;&#1088;&#1103;&#1073;&#1074;&#1072; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1074; &#1089;&#1083;&#1077;&#1076;&#1085;&#1080;&#1103; &#1092;&#1086;&#1088;&#1084;&#1072;&#1090;:';
+$MESSAGE['GENERIC_FILE_TYPES'] = '&#1060;&#1072;&#1081;&#1083;&#1072;, &#1082;&#1086;&#1081;&#1090;&#1086; &#1082;&#1072;&#1095;&#1074;&#1072;&#1090;&#1077; &#1090;&#1088;&#1103;&#1073;&#1074;&#1072; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1074; &#1089;&#1083;&#1077;&#1076;&#1085;&#1080;&#1090;&#1077; &#1092;&#1086;&#1088;&#1084;&#1072;&#1090;&#1080;:';
+$MESSAGE['GENERIC_FILL_IN_ALL'] = '&#1042;&#1098;&#1088;&#1085;&#1077;&#1090;&#1077; &#1089;&#1077; &#1080; &#1087;&#1086;&#1095;&#1080;&#1083;&#1085;&#1077;&#1090;&#1077; &#1074;&#1089;&#1080;&#1095;&#1082;&#1080; &#1087;&#1086;&#1083;&#1077;&#1090;&#1072;';
+$MESSAGE['GENERIC_FORGOT_OPTIONS'] = 'You have selected no choice!';
+$MESSAGE['GENERIC_INSTALLED'] = '&#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GENERIC_INVALID'] = '&#1053;&#1077;&#1074;&#1072;&#1083;&#1080;&#1076;&#1077;&#1085; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['GENERIC_INVALID_ADDON_FILE'] = 'Invalid WebsiteBaker installation file. Please check the *.zip format.';
+$MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] = 'Invalid WebsiteBaker language file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_MODULE_FILE'] = 'Invalid WebsiteBaker module file. Please check the text file.';
+$MESSAGE['GENERIC_INVALID_TEMPLATE_FILE'] = 'Invalid WebsiteBaker template file. Please check the text file.';
+$MESSAGE['GENERIC_IN_USE'] = ' but used in ';
+$MESSAGE['GENERIC_MISSING_ARCHIVE_FILE'] = 'Missing Archiv file!';
+$MESSAGE['GENERIC_MODULE_VERSION_ERROR'] = 'The module is not installed properly!';
+$MESSAGE['GENERIC_NOT_COMPARE'] = ' not possibly';
+$MESSAGE['GENERIC_NOT_INSTALLED'] = '&#1053;&#1077; &#1077; &#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1085;';
+$MESSAGE['GENERIC_NOT_UPGRADED'] = 'Actualization not possibly';
+$MESSAGE['GENERIC_PLEASE_BE_PATIENT'] = '&#1041;&#1098;&#1076;&#1077;&#1090;&#1077; &#1090;&#1098;&#1088;&#1087;&#1077;&#1083;&#1080;&#1074;&#1080;, &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1086;&#1090;&#1085;&#1077;&#1084;&#1077; &#1074;&#1088;&#1077;&#1084;&#1077;.';
+$MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] = '&#1055;&#1088;&#1086;&#1074;&#1077;&#1088;&#1077;&#1090;&#1077; &#1087;&#1072;&#1082;...';
+$MESSAGE['GENERIC_SECURITY_ACCESS'] = 'Security offense!! Access denied!';
+$MESSAGE['GENERIC_SECURITY_OFFENSE'] = 'Security offense!! data storing was refused!!';
+$MESSAGE['GENERIC_UNINSTALLED'] = '&#1044;&#1077;&#1080;&#1085;&#1089;&#1090;&#1072;&#1083;&#1080;&#1088;&#1072;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GENERIC_UPGRADED'] = '&#1054;&#1073;&#1085;&#1086;&#1074;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GENERIC_VERSION_COMPARE'] = 'Version comparison';
+$MESSAGE['GENERIC_VERSION_GT'] = 'Upgrade necessary!';
+$MESSAGE['GENERIC_VERSION_LT'] = 'Downgrade';
+$MESSAGE['GENERIC_WEBSITE_LOCKED'] = 'this site is temporarily down for maintenance';
+$MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] = '&#1057;&#1072;&#1081;&#1090;&#1072; &#1077; &#1074; &#1087;&#1088;&#1086;&#1094;&#1077;&#1089; &#1085;&#1072; &#1089;&#1098;&#1079;&#1076;&#1072;&#1074;&#1072;&#1085;&#1077;';
+$MESSAGE['GROUPS_ADDED'] = '&#1043;&#1088;&#1091;&#1087;&#1072;&#1090;&#1072; &#1077; &#1076;&#1086;&#1073;&#1072;&#1074;&#1077;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GROUPS_CONFIRM_DELETE'] = '&#1048;&#1089;&#1082;&#1072;&#1090;&#1077; &#1083;&#1080; &#1076;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1077;&#1090;&#1077; &#1080;&#1079;&#1073;&#1088;&#1072;&#1085;&#1072;&#1090;&#1072; &#1075;&#1088;&#1091;&#1087;&#1072; (&#1080; &#1074;&#1089;&#1080;&#1095;&#1082;&#1080; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080; &#1074; &#1085;&#1077;&#1103;)?';
+$MESSAGE['GROUPS_DELETED'] = '&#1043;&#1088;&#1091;&#1087;&#1072;&#1090;&#1072; &#1073;&#1077; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['GROUPS_GROUP_NAME_BLANK'] = '&#1053;&#1103;&#1084;&#1072; &#1080;&#1084;&#1077; &#1085;&#1072; &#1075;&#1088;&#1091;&#1087;&#1072;&#1090;&#1072;';
+$MESSAGE['GROUPS_GROUP_NAME_EXISTS'] = '&#1043;&#1088;&#1091;&#1087;&#1072; &#1089; &#1090;&#1086;&#1074;&#1072; &#1080;&#1084;&#1077; &#1074;&#1077;&#1095;&#1077; &#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1074;&#1072;';
+$MESSAGE['GROUPS_NO_GROUPS_FOUND'] = '&#1053;&#1103;&#1084;&#1072; &#1075;&#1088;&#1091;&#1087;&#1080;';
+$MESSAGE['GROUPS_SAVED'] = '&#1043;&#1088;&#1091;&#1087;&#1072;&#1090;&#1072; &#1077; &#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['LOGIN_AUTHENTICATION_FAILED'] = 'Loginname or password incorrect';
+$MESSAGE['LOGIN_BOTH_BLANK'] = 'Please enter your loginname and password below';
+$MESSAGE['LOGIN_PASSWORD_BLANK'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072;';
+$MESSAGE['LOGIN_PASSWORD_TOO_LONG'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1072;&#1090;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072; &#1077; &#1084;&#1085;&#1086;&#1075;&#1086; &#1076;&#1098;&#1083;&#1075;&#1072;';
+$MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1072;&#1090;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072; &#1077; &#1084;&#1085;&#1086;&#1075;&#1086; &#1082;&#1098;&#1089;&#1072;';
+$MESSAGE['LOGIN_USERNAME_BLANK'] = 'Please enter a loginname';
+$MESSAGE['LOGIN_USERNAME_TOO_LONG'] = 'Supplied loginname to long';
+$MESSAGE['LOGIN_USERNAME_TOO_SHORT'] = 'Supplied loginname to short';
+$MESSAGE['MEDIA_BLANK_EXTENSION'] = '&#1053;&#1077; &#1074;&#1098;&#1074;&#1077;&#1076;&#1086;&#1093;&#1090;&#1077; &#1088;&#1072;&#1079;&#1096;&#1080;&#1088;&#1077;&#1085;&#1080;&#1077;';
+$MESSAGE['MEDIA_BLANK_NAME'] = '&#1053;&#1077; &#1074;&#1098;&#1074;&#1077;&#1076;&#1086;&#1093;&#1090;&#1077; &#1085;&#1086;&#1074;&#1086; &#1080;&#1084;&#1077;';
+$MESSAGE['MEDIA_CANNOT_DELETE_DIR'] = '&#1048;&#1079;&#1073;&#1088;&#1072;&#1085;&#1072;&#1090;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;&#1072;';
+$MESSAGE['MEDIA_CANNOT_DELETE_FILE'] = '&#1048;&#1079;&#1073;&#1088;&#1072;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;';
+$MESSAGE['MEDIA_CANNOT_RENAME'] = '&#1055;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1091;&#1074;&#1072;&#1085;&#1077;&#1090;&#1086; &#1085;&#1077;&#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['MEDIA_CONFIRM_DELETE'] = '&#1057;&#1098;&#1075;&#1091;&#1088;&#1085;&#1080; &#1083;&#1080; &#1089;&#1090;&#1077; &#1095;&#1077; &#1080;&#1089;&#1082;&#1072;&#1090;&#1077; &#1076;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1077;&#1090;&#1077;?';
+$MESSAGE['MEDIA_DELETED_DIR'] = '&#1055;&#1072;&#1087;&#1082;&#1072;&#1090;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;&#1072; &#1091;&#1089;&#1087;&#1103;&#1096;&#1085;&#1086;';
+$MESSAGE['MEDIA_DELETED_FILE'] = '&#1060;&#1072;&#1081;&#1083;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['MEDIA_DIR_ACCESS_DENIED'] = 'Specified directory does not exist or is not allowed.';
+$MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] = '&#1055;&#1072;&#1087;&#1082;&#1072;&#1090;&#1072; &#1085;&#1077; &#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1074;&#1072;';
+$MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1074;&#1082;&#1083;&#1102;&#1095;&#1080;&#1090;&#1077; ../ &#1074; &#1080;&#1084;&#1077; &#1085;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$MESSAGE['MEDIA_DIR_EXISTS'] = '&#1042;&#1077;&#1095;&#1077; &#1080;&#1084;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072; &#1089; &#1090;&#1072;&#1082;&#1086;&#1074;&#1072; &#1080;&#1084;&#1077;';
+$MESSAGE['MEDIA_DIR_MADE'] = '&#1055;&#1072;&#1087;&#1082;&#1072;&#1090;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1089;&#1098;&#1079;&#1076;&#1072;&#1076;&#1077;&#1085;&#1072;';
+$MESSAGE['MEDIA_DIR_NOT_MADE'] = '&#1055;&#1072;&#1087;&#1082;&#1072;&#1090;&#1077; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1089;&#1098;&#1079;&#1076;&#1072;&#1076;&#1077;&#1085;&#1072;';
+$MESSAGE['MEDIA_FILE_EXISTS'] = '&#1042;&#1077;&#1095;&#1077; &#1080;&#1084;&#1072; &#1092;&#1072;&#1081;&#1083; &#1089; &#1090;&#1072;&#1082;&#1086;&#1074;&#1072; &#1080;&#1084;&#1077;';
+$MESSAGE['MEDIA_FILE_NOT_FOUND'] = '&#1053;&#1103;&#1084;&#1072; &#1090;&#1072;&#1082;&#1098;&#1074; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1074;&#1082;&#1083;&#1102;&#1095;&#1080;&#1090;&#1077; ../ &#1074; &#1080;&#1084;&#1077;&#1090;&#1086;';
+$MESSAGE['MEDIA_NAME_INDEX_PHP'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072;&#1090;&#1077; index.php &#1082;&#1072;&#1090;&#1086; &#1080;&#1084;&#1077;';
+$MESSAGE['MEDIA_NONE_FOUND'] = '&#1053;&#1103;&#1084;&#1072; &#1084;&#1077;&#1076;&#1080;&#1103; &#1074; &#1090;&#1077;&#1082;&#1091;&#1097;&#1072;&#1090;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$MESSAGE['MEDIA_NO_FILE_UPLOADED'] = 'No file was recieved';
+$MESSAGE['MEDIA_RENAMED'] = '&#1055;&#1088;&#1077;&#1080;&#1084;&#1077;&#1085;&#1091;&#1074;&#1072;&#1085;&#1077;&#1090;&#1086; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['MEDIA_SINGLE_UPLOADED'] = ' &#1092;&#1072;&#1081;&#1083;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1082;&#1072;&#1095;&#1077;&#1085;';
+$MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1074;&#1082;&#1083;&#1102;&#1095;&#1080;&#1090;&#1077; ../ &#1082;&#1072;&#1090;&#1086; &#1094;&#1077;&#1083; &#1085;&#1072; &#1087;&#1072;&#1087;&#1082;&#1072;';
+$MESSAGE['MEDIA_UPLOADED'] = ' &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1077;&#1090;&#1077; &#1073;&#1103;&#1093;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1082;&#1072;&#1095;&#1077;&#1085;&#1080;';
+$MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] = '&#1057;&#1098;&#1078;&#1072;&#1083;&#1103;&#1074;&#1072;&#1084;&#1077;, &#1090;&#1086;&#1079;&#1080; &#1092;&#1086;&#1088;&#1091;&#1083;&#1103;&#1088; &#1077; &#1087;&#1086;&#1076;&#1072;&#1076;&#1077;&#1085; &#1087;&#1086;&#1074;&#1077;&#1095;&#1077; &#1087;&#1098;&#1090;&#1080; &#1086;&#1090; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1077;&#1085;&#1086;&#1090;&#1086; &#1087;&#1088;&#1077;&#1079; &#1090;&#1086;&#1079;&#1080; &#1095;&#1072;&#1089;. &#1054;&#1087;&#1080;&#1090;&#1072;&#1081;&#1090;&#1077; &#1086;&#1090;&#1085;&#1086;&#1074;&#1077; &#1087;&#1086; &#1074;&#1088;&#1077;&#1084;&#1077; &#1085;&#1072; &#1089;&#1083;&#1077;&#1076;&#1074;&#1072;&#1097;&#1080; &#1095;&#1072;&#1089;.';
+$MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] = '&#1050;&#1086;&#1085;&#1090;&#1088;&#1086;&#1083;&#1085;&#1080;&#1103; &#1085;&#1086;&#1084;&#1077;&#1088; (&#1087;&#1086;&#1079;&#1072;&#1085;&#1090; &#1082;&#1072;&#1090;&#1086; Captcha) &#1077; &#1075;&#1088;&#1077;&#1096;&#1077;&#1085;. &#1040;&#1082;&#1086; &#1080;&#1084;&#1072;&#1090;&#1077; &#1087;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084; &#1089; &#1095;&#1077;&#1090;&#1077;&#1085;&#1077;&#1090;&#1086; &#1085;&#1072; Captcha, &#1080;&#1079;&#1087;&#1088;&#1072;&#1090;&#1077;&#1090;&#1077; e-mail &#1085;&#1072;: <a href="mailto:'.SERVER_EMAIL.'">'.SERVER_EMAIL.'</a>';
+$MESSAGE['MOD_FORM_REQUIRED_FIELDS'] = '&#1058;&#1088;&#1103;&#1073;&#1074;&#1072; &#1076;&#1072; &#1087;&#1086;&#1087;&#1098;&#1083;&#1085;&#1080;&#1090;&#1077; &#1089;&#1083;&#1077;&#1076;&#1085;&#1080;&#1090;&#1077; &#1087;&#1086;&#1083;&#1077;&#1090;&#1072;';
+$MESSAGE['PAGES_ADDED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1076;&#1086;&#1073;&#1072;&#1074;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_ADDED_HEADING'] = 'Page heading &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1076;&#1086;&#1073;&#1072;&#1074;&#1077;&#1085;';
+$MESSAGE['PAGES_BLANK_MENU_TITLE'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; &#1080;&#1084;&#1077; &#1085;&#1072; &#1084;&#1077;&#1085;&#1102;&#1090;&#1086;';
+$MESSAGE['PAGES_BLANK_PAGE_TITLE'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; &#1080;&#1084;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072;';
+$MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072; &#1087;&#1088;&#1080; &#1089;&#1098;&#1079;&#1076;&#1072;&#1074;&#1072;&#1085;&#1077; &#1085;&#1072; access &#1092;&#1072;&#1081;&#1083; &#1077; &#1087;&#1072;&#1087;&#1082;&#1072; /pages (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1098;&#1095;&#1085;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1080;)';
+$MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072; &#1087;&#1088;&#1080; &#1080;&#1079;&#1090;&#1088;&#1080;&#1074;&#1072;&#1085;&#1077; &#1085;&#1072; access &#1092;&#1072;&#1081;&#1083; &#1077; &#1087;&#1072;&#1087;&#1082;&#1072; /pages (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1098;&#1095;&#1085;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1080;)';
+$MESSAGE['PAGES_CANNOT_REORDER'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072; &#1087;&#1088;&#1080; &#1087;&#1088;&#1077;&#1087;&#1086;&#1076;&#1088;&#1077;&#1078;&#1076;&#1072;&#1085;&#1077;&#1090;&#1086; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072;';
+$MESSAGE['PAGES_DELETED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090;&#1072; &#1091;&#1089;&#1087;&#1103;&#1096;&#1085;&#1086;';
+$MESSAGE['PAGES_DELETE_CONFIRM'] = '&#1057;&#1080;&#1075;&#1091;&#1088;&#1085;&#1080; &#1083;&#1080; &#1089;&#1090;&#1077; &#1095;&#1077; &#1080;&#1089;&#1082;&#1072;&#1090;&#1077; &#1076;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1077;&#1090;&#1077; &#1080;&#1079;&#1073;&#1088;&#1072;&#1085;&#1072;&#1090;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; (&#1080; &#1074;&#1089;&#1080;&#1095;&#1082;&#1080; &#1087;&#1086;&#1076;&#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;)';
+$MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] = '&#1053;&#1103;&#1084;&#1072;&#1090;&#1077; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1080; &#1079;&#1072; &#1084;&#1086;&#1076;&#1080;&#1092;&#1080;&#1094;&#1080;&#1088;&#1072;&#1085;&#1077; &#1085;&#1072; &#1090;&#1072;&#1079;&#1080; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$MESSAGE['PAGES_INTRO_LINK'] = '&#1053;&#1072;&#1090;&#1080;&#1089;&#1085;&#1077;&#1090;&#1077; &#1090;&#1091;&#1082; &#1079;&#1072; &#1076;&#1072; &#1084;&#1086;&#1076;&#1080;&#1092;&#1080;&#1094;&#1080;&#1088;&#1072;&#1090;&#1077; &#1042;&#1098;&#1074;&#1077;&#1078;&#1076;&#1072;&#1097;&#1072;&#1090;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;';
+$MESSAGE['PAGES_INTRO_NOT_WRITABLE'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1079;&#1072;&#1087;&#1080;&#1089;&#1074;&#1072; &#1074; &#1092;&#1072;&#1081;&#1083;&#1072; /pages/intro.php (&#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1098;&#1095;&#1085;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1080;)';
+$MESSAGE['PAGES_INTRO_SAVED'] = '&#1042;&#1098;&#1074;&#1077;&#1078;&#1076;&#1072;&#1097;&#1072;&#1090;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PAGES_LAST_MODIFIED'] = '&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1086; &#1084;&#1086;&#1076;&#1080;&#1092;&#1080;&#1094;&#1080;&#1088;&#1072;&#1085;&#1072; &#1086;&#1090;';
+$MESSAGE['PAGES_NOT_FOUND'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1085;&#1077; &#1077; &#1085;&#1072;&#1084;&#1077;&#1088;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_NOT_SAVED'] = '&#1043;&#1088;&#1077;&#1096;&#1082;&#1072; &#1087;&#1088;&#1080; &#1079;&#1072;&#1087;&#1072;&#1079;&#1074;&#1072;&#1085;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072;';
+$MESSAGE['PAGES_PAGE_EXISTS'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1089; &#1090;&#1072;&#1082;&#1086;&#1074;&#1072; &#1080;&#1084;&#1077; &#1074;&#1077;&#1095;&#1077; &#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1074;&#1072;';
+$MESSAGE['PAGES_REORDERED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1077; &#1087;&#1088;&#1077;&#1087;&#1086;&#1076;&#1088;&#1077;&#1076;&#1077;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PAGES_RESTORED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1074;&#1098;&#1079;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PAGES_RETURN_TO_PAGES'] = '&#1042;&#1098;&#1088;&#1085;&#1080; &#1089;&#1077; &#1082;&#1098;&#1084; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;';
+$MESSAGE['PAGES_SAVED'] = '&#1057;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1072;';
+$MESSAGE['PAGES_SAVED_SETTINGS'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1090;&#1072; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1080; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077; &#1085;&#1072; &#1089;&#1077;&#1082;&#1094;&#1080;&#1103;&#1090;&#1072; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1080; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1072;&#1090;&#1072; &#1090;&#1077;&#1082;&#1091;&#1097;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072; &#1085;&#1077; &#1077; &#1082;&#1086;&#1088;&#1077;&#1082;&#1090;&#1085;&#1072;';
+$MESSAGE['PREFERENCES_DETAILS_SAVED'] = '&#1044;&#1077;&#1090;&#1072;&#1081;&#1083;&#1080;&#1090;&#1077; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1080; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PREFERENCES_EMAIL_UPDATED'] = 'Email-&#1072; &#1086;&#1073;&#1085;&#1086;&#1074;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['PREFERENCES_INVALID_CHARS'] = 'Invalid password chars used';
+$MESSAGE['PREFERENCES_PASSWORD_CHANGED'] = '&#1055;&#1072;&#1088;&#1086;&#1083;&#1072;&#1090;&#1072; &#1089;&#1084;&#1077;&#1085;&#1077;&#1085;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['RECORD_MODIFIED_FAILED'] = 'The change of the record has missed.';
+$MESSAGE['RECORD_MODIFIED_SAVED'] = 'The changed record was updated successfully.';
+$MESSAGE['RECORD_NEW_FAILED'] = 'Adding a new record has missed.';
+$MESSAGE['RECORD_NEW_SAVED'] = 'New record was added successfully.';
+$MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;: &#1040;&#1082;&#1086; &#1085;&#1072;&#1090;&#1080;&#1089;&#1085;&#1077;&#1090;&#1077; &#1090;&#1086;&#1079;&#1080; &#1073;&#1091;&#1090;&#1086;&#1085; &#1075;&#1091;&#1073;&#1080;&#1090;&#1077; &#1074;&#1089;&#1080;&#1095;&#1082;&#1080; &#1085;&#1077;&#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080; &#1087;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080;';
+$MESSAGE['SETTINGS_SAVED'] = '&#1053;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077; &#1089;&#1072; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086; &#1079;&#1072;&#1087;&#1072;&#1079;&#1077;&#1085;&#1080;';
+$MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] = '&#1050;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083; &#1085;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1073;&#1098;&#1076;&#1077; &#1086;&#1090;&#1074;&#1086;&#1088;&#1077;&#1085;';
+$MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] = '&#1053;&#1077; &#1084;&#1086;&#1078;&#1077; &#1076;&#1072; &#1089;&#1077; &#1079;&#1072;&#1087;&#1080;&#1089;&#1074;&#1072; &#1074; &#1082;&#1086;&#1085;&#1092;&#1080;&#1075;&#1091;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1080;&#1103; &#1092;&#1072;&#1081;&#1083;';
+$MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;: &#1090;&#1086;&#1074;&#1072; &#1089;&#1077; &#1087;&#1088;&#1077;&#1087;&#1086;&#1088;&#1098;&#1095;&#1074;&#1072; &#1089;&#1072;&#1084;&#1086; &#1074; &#1090;&#1077;&#1089;&#1090;&#1086;&#1074;&#1086; &#1086;&#1073;&#1082;&#1088;&#1098;&#1078;&#1077;&#1085;&#1080;&#1077;';
+$MESSAGE['SIGNUP2_ADMIN_INFO'] = '
+A new user was registered.
+
+Loginname: {LOGIN_NAME}
+UserId: {LOGIN_ID}
+E-Mail: {LOGIN_EMAIL}
+IP-Adress: {LOGIN_IP}
+Registration date: {SIGNUP_DATE}
+----------------------------------------
+This message was automatic generated!
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+This mail was sent because the \'forgot password\' function has been applied to your account.
+
+Your new \'{LOGIN_WEBSITE_TITLE}\' login details are:
+
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Your password has been reset to the one above.
+This means that your old password will no longer work anymore!
+If you\'ve got any questions or problems within the new login-data
+you should contact the website-team or the admin of \'{LOGIN_WEBSITE_TITLE}\'.
+Please remember to clean you browser-cache before using the new one to avoid unexpected fails.
+
+Regards
+------------------------------------
+This message was automatic generated
+
+';
+$MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] = '
+Hello {LOGIN_DISPLAY_NAME},
+
+Welcome to our \'{LOGIN_WEBSITE_TITLE}\'.
+
+Your \'{LOGIN_WEBSITE_TITLE}\' login details are:
+Loginname: {LOGIN_NAME}
+Password: {LOGIN_PASSWORD}
+
+Regards
+
+Please:
+if you have received this message by an error, please delete it immediately!
+-------------------------------------
+This message was automatic generated!
+';
+$MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] = 'Your login details...';
+$MESSAGE['SIGNUP_NO_EMAIL'] = '&#1058;&#1088;&#1103;&#1073;&#1074;&#1072; &#1076;&#1072; &#1074;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; e-mail &#1072;&#1076;&#1088;&#1077;&#1089;';
+$MESSAGE['START_CURRENT_USER'] = '&#1042;&#1080;&#1077; &#1074;&#1083;&#1103;&#1079;&#1086;&#1093;&#1090;&#1077; &#1082;&#1072;&#1090;&#1086;:';
+$MESSAGE['START_INSTALL_DIR_EXISTS'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;, &#1048;&#1085;&#1089;&#1090;&#1072;&#1083;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1072;&#1090;&#1072; &#1076;&#1080;&#1088;&#1077;&#1082;&#1090;&#1086;&#1088;&#1080;&#1103; &#1074;&#1089;&#1077; &#1086;&#1097;&#1077; &#1089;&#1098;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1074;&#1072;!';
+$MESSAGE['START_UPGRADE_SCRIPT_EXISTS'] = 'Please delete the file "upgrade-script.php" from your webspace.';
+$MESSAGE['START_WELCOME_MESSAGE'] = '&#1044;&#1086;&#1073;&#1088;&#1077; &#1076;&#1086;&#1096;&#1083;&#1080; &#1074; &#1040;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1072;&#1090;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072; &#1085;&#1072; WebsiteBaker';
+$MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;: &#1079;&#1072; &#1076;&#1072; &#1089;&#1084;&#1077;&#1085;&#1080;&#1090;&#1077; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1072; &#1086;&#1090;&#1080;&#1076;&#1077;&#1090;&#1077; &#1074; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;';
+$MESSAGE['UNKNOW_UPLOAD_ERROR'] = 'Unknown upload error';
+$MESSAGE['UPLOAD_ERR_CANT_WRITE'] = 'Failed to write file to disk';
+$MESSAGE['UPLOAD_ERR_EXTENSION'] = 'File upload stopped by extension';
+$MESSAGE['UPLOAD_ERR_FORM_SIZE'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
+$MESSAGE['UPLOAD_ERR_INI_SIZE'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
+$MESSAGE['UPLOAD_ERR_NO_FILE'] = 'No file was uploaded';
+$MESSAGE['UPLOAD_ERR_NO_TMP_DIR'] = 'Missing a temporary folder';
+$MESSAGE['UPLOAD_ERR_OK'] = 'File were successful uploaded';
+$MESSAGE['UPLOAD_ERR_PARTIAL'] = 'The uploaded file was only partially uploaded';
+$MESSAGE['USERS_ADDED'] = '&#1055;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1103; &#1077; &#1076;&#1086;&#1073;&#1072;&#1074;&#1077;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['USERS_CANT_SELFDELETE'] = 'Function rejected, You can not delete yourself!';
+$MESSAGE['USERS_CHANGING_PASSWORD'] = '&#1042;&#1085;&#1080;&#1084;&#1072;&#1085;&#1080;&#1077;: &#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1090;&#1077; &#1076;&#1072;&#1085;&#1085;&#1080; &#1074; &#1087;&#1086;&#1083;&#1077;&#1090;&#1072;&#1090;&#1072; &#1072;&#1082;&#1086; &#1080;&#1089;&#1082;&#1072;&#1090;&#1077; &#1076;&#1072; &#1089;&#1084;&#1077;&#1085;&#1080;&#1090;&#1077; &#1087;&#1072;&#1088;&#1086;&#1083;&#1080;&#1090;&#1077; &#1085;&#1072; &#1090;&#1077;&#1079;&#1080; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080;';
+$MESSAGE['USERS_CONFIRM_DELETE'] = '&#1048;&#1089;&#1082;&#1072;&#1090;&#1077; &#1083;&#1080; &#1076;&#1072; &#1080;&#1079;&#1090;&#1088;&#1080;&#1077;&#1090;&#1077; &#1080;&#1079;&#1073;&#1088;&#1072;&#1085;&#1080;&#1103; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;?';
+$MESSAGE['USERS_DELETED'] = '&#1055;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1103; &#1077; &#1080;&#1079;&#1090;&#1088;&#1080;&#1090; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['USERS_EMAIL_TAKEN'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1103; email &#1074;&#1077;&#1095;&#1077; &#1089;&#1077; &#1080;&#1079;&#1087;&#1086;&#1083;&#1079;&#1074;&#1072;';
+$MESSAGE['USERS_INVALID_EMAIL'] = '&#1053;&#1077;&#1074;&#1072;&#1083;&#1080;&#1076;&#1077;&#1085; email &#1072;&#1076;&#1088;&#1077;&#1089;';
+$MESSAGE['USERS_NAME_INVALID_CHARS'] = 'Invalid chars for Loginname found';
+$MESSAGE['USERS_NO_GROUP'] = '&#1053;&#1077; &#1073;&#1077;&#1096;&#1077; &#1080;&#1079;&#1073;&#1088;&#1072;&#1085;&#1072; &#1075;&#1088;&#1091;&#1087;&#1072;';
+$MESSAGE['USERS_PASSWORD_MISMATCH'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1080;&#1090;&#1077; &#1087;&#1072;&#1088;&#1086;&#1083;&#1080; &#1085;&#1077; &#1089;&#1098;&#1074;&#1087;&#1072;&#1076;&#1072;&#1090;';
+$MESSAGE['USERS_PASSWORD_TOO_SHORT'] = '&#1042;&#1098;&#1074;&#1077;&#1076;&#1077;&#1085;&#1072;&#1090;&#1072; &#1087;&#1072;&#1088;&#1086;&#1083;&#1072; &#1077; &#1090;&#1074;&#1098;&#1088;&#1076;&#1077; &#1082;&#1098;&#1089;&#1072;';
+$MESSAGE['USERS_SAVED'] = '&#1055;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1103; &#1077; &#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085; &#1091;&#1089;&#1087;&#1077;&#1096;&#1085;&#1086;';
+$MESSAGE['USERS_USERNAME_TAKEN'] = 'The loginname you entered is already taken';
+$MESSAGE['USERS_USERNAME_TOO_SHORT'] = 'The loginname you entered was too short';
+
+/* OVERVIEW */
+$OVERVIEW['ADMINTOOLS'] = 'Access the WebsiteBaker administration tools...';
+$OVERVIEW['GROUPS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1089;&#1082;&#1080;&#1090;&#1077; &#1075;&#1088;&#1091;&#1087;&#1080; &#1080; &#1090;&#1103;&#1093;&#1085;&#1080;&#1090;&#1077; &#1087;&#1088;&#1072;&#1074;&#1072;...';
+$OVERVIEW['HELP'] = '&#1048;&#1084;&#1072;&#1090;&#1077; &#1074;&#1098;&#1087;&#1088;&#1086;&#1089;&#1080;? &#1053;&#1072;&#1084;&#1077;&#1088;&#1077;&#1090;&#1077; &#1086;&#1090;&#1075;&#1086;&#1074;&#1086;&#1088;...';
+$OVERVIEW['LANGUAGES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1077;&#1079;&#1080;&#1094;&#1080;&#1090;&#1077; &#1085;&#1072; WebsiteBaker...';
+$OVERVIEW['MEDIA'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;&#1077;&#1090;&#1077; &#1074; &#1087;&#1072;&#1087;&#1082;&#1072; &#1084;&#1077;&#1076;&#1080;&#1103;...';
+$OVERVIEW['MODULES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1084;&#1086;&#1076;&#1091;&#1083;&#1080;&#1090;&#1077; &#1085;&#1072; WebsiteBaker...';
+$OVERVIEW['PAGES'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1080;&#1090;&#1077;...';
+$OVERVIEW['PREFERENCES'] = '&#1057;&#1084;&#1077;&#1085;&#1080; &#1087;&#1088;&#1077;&#1076;&#1087;&#1086;&#1095;&#1080;&#1090;&#1072;&#1085;&#1080;&#1103;&#1090;&#1072; &#1086;&#1090;&#1085;&#1086;&#1089;&#1085;&#1086; email &#1072;&#1076;&#1088;&#1077;&#1089;, &#1087;&#1072;&#1088;&#1086;&#1083;&#1072; &#1080; &#1076;&#1088;. ';
+$OVERVIEW['SETTINGS'] = '&#1057;&#1084;&#1077;&#1085;&#1080; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080;&#1090;&#1077; &#1085;&#1072; WebsiteBaker...';
+$OVERVIEW['START'] = '&#1055;&#1088;&#1077;&#1075;&#1083;&#1077;&#1076; &#1085;&#1072; &#1072;&#1076;&#1084;&#1080;&#1085;&#1080;&#1089;&#1090;&#1088;&#1080;&#1088;&#1072;&#1085;&#1077;';
+$OVERVIEW['TEMPLATES'] = '&#1055;&#1088;&#1086;&#1084;&#1077;&#1085;&#1080; &#1080;&#1079;&#1075;&#1083;&#1077;&#1076;&#1072; &#1085;&#1072; &#1089;&#1072;&#1081;&#1090;&#1072; &#1095;&#1088;&#1077;&#1079; &#1096;&#1072;&#1073;&#1083;&#1086;&#1085;&#1080;...';
+$OVERVIEW['USERS'] = '&#1059;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; &#1085;&#1072; &#1087;&#1086;&#1090;&#1088;&#1077;&#1073;&#1080;&#1090;&#1077;&#1083;&#1080;&#1090;&#1077; &#1084;&#1086;&#1078;&#1077;&#1097;&#1080; &#1076;&#1072; &#1074;&#1083;&#1103;&#1079;&#1072;&#1090; &#1074; WebsiteBaker...';
+$OVERVIEW['VIEW'] = '&#1042;&#1080;&#1078; &#1089;&#1074;&#1086;&#1103; &#1089;&#1072;&#1081;&#1090; &#1074; &#1085;&#1086;&#1074; &#1087;&#1088;&#1086;&#1079;&#1086;&#1088;&#1077;&#1094;...';
+
+/* include old languages format */
+if(file_exists(WB_PATH.'/languages/old.format.inc.php'))
+{
+	include(WB_PATH.'/languages/old.format.inc.php');
+}

Property changes on: tags/2.8.3/wb/languages/BG.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/old.format.inc.php
===================================================================
--- tags/2.8.3/wb/languages/old.format.inc.php	(nonexistent)
+++ tags/2.8.3/wb/languages/old.format.inc.php	(revision 1610)
@@ -0,0 +1,155 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+
+$MESSAGE['FRONTEND']['SORRY_NO_VIEWING_PERMISSIONS']  = $MESSAGE['FRONTEND_SORRY_NO_VIEWING_PERMISSIONS'] ;
+$MESSAGE['FRONTEND']['SORRY_NO_ACTIVE_SECTIONS']  = $MESSAGE['FRONTEND_SORRY_NO_ACTIVE_SECTIONS'] ;
+$MESSAGE['ADMIN']['INSUFFICIENT_PRIVELLIGES']  = $MESSAGE['ADMIN_INSUFFICIENT_PRIVELLIGES'] ;
+$MESSAGE['LOGIN']['BOTH_BLANK']  = $MESSAGE['LOGIN_BOTH_BLANK'] ;
+$MESSAGE['LOGIN']['USERNAME_BLANK']  = $MESSAGE['LOGIN_USERNAME_BLANK'] ;
+$MESSAGE['LOGIN']['PASSWORD_BLANK']  = $MESSAGE['LOGIN_PASSWORD_BLANK'] ;
+$MESSAGE['LOGIN']['USERNAME_TOO_SHORT']  = $MESSAGE['LOGIN_USERNAME_TOO_SHORT'] ;
+$MESSAGE['LOGIN']['PASSWORD_TOO_SHORT']  = $MESSAGE['LOGIN_PASSWORD_TOO_SHORT'] ;
+$MESSAGE['LOGIN']['USERNAME_TOO_LONG']  = $MESSAGE['LOGIN_USERNAME_TOO_LONG'] ;
+$MESSAGE['LOGIN']['PASSWORD_TOO_LONG']  = $MESSAGE['LOGIN_PASSWORD_TOO_LONG'] ;
+$MESSAGE['LOGIN']['AUTHENTICATION_FAILED']  = $MESSAGE['LOGIN_AUTHENTICATION_FAILED'] ;
+$MESSAGE['SIGNUP']['NO_EMAIL']  = $MESSAGE['SIGNUP_NO_EMAIL'] ;
+$MESSAGE['SIGNUP2']['SUBJECT_LOGIN_INFO']  = $MESSAGE['SIGNUP2_SUBJECT_LOGIN_INFO'] ;
+$MESSAGE['SIGNUP2']['BODY_LOGIN_INFO']  = $MESSAGE['SIGNUP2_BODY_LOGIN_INFO'] ;
+$MESSAGE['SIGNUP2']['BODY_LOGIN_FORGOT']  = $MESSAGE['SIGNUP2_BODY_LOGIN_FORGOT'] ;
+$MESSAGE['FORGOT_PASS']['NO_DATA']  = $MESSAGE['FORGOT_PASS_NO_DATA'] ;
+$MESSAGE['FORGOT_PASS']['EMAIL_NOT_FOUND']  = $MESSAGE['FORGOT_PASS_EMAIL_NOT_FOUND'] ;
+$MESSAGE['FORGOT_PASS']['CANNOT_EMAIL']  = $MESSAGE['FORGOT_PASS_CANNOT_EMAIL'] ;
+$MESSAGE['FORGOT_PASS']['PASSWORD_RESET']  = $MESSAGE['FORGOT_PASS_PASSWORD_RESET'] ;
+$MESSAGE['FORGOT_PASS']['ALREADY_RESET']  = $MESSAGE['FORGOT_PASS_ALREADY_RESET'] ;
+$MESSAGE['START']['WELCOME_MESSAGE']  = $MESSAGE['START_WELCOME_MESSAGE'] ;
+$MESSAGE['START']['INSTALL_DIR_EXISTS']  = $MESSAGE['START_INSTALL_DIR_EXISTS'] ;
+$MESSAGE['START']['CURRENT_USER']  = $MESSAGE['START_CURRENT_USER'] ;
+$MESSAGE['SETTINGS']['UNABLE_OPEN_CONFIG']  = $MESSAGE['SETTINGS_UNABLE_OPEN_CONFIG'] ;
+$MESSAGE['SETTINGS']['UNABLE_WRITE_CONFIG']  = $MESSAGE['SETTINGS_UNABLE_WRITE_CONFIG'] ;
+$MESSAGE['SETTINGS']['SAVED']  = $MESSAGE['SETTINGS_SAVED'] ;
+$MESSAGE['SETTINGS']['MODE_SWITCH_WARNING']  = $MESSAGE['SETTINGS_MODE_SWITCH_WARNING'] ;
+$MESSAGE['SETTINGS']['WORLD_WRITEABLE_WARNING']  = $MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'] ;
+$MESSAGE['USERS']['ADDED']  = $MESSAGE['USERS_ADDED'] ;
+$MESSAGE['USERS']['SAVED']  = $MESSAGE['USERS_SAVED'] ;
+$MESSAGE['USERS']['DELETED']  = $MESSAGE['USERS_DELETED'] ;
+$MESSAGE['USERS']['NO_GROUP']  = $MESSAGE['USERS_NO_GROUP'] ;
+$MESSAGE['USERS']['USERNAME_TOO_SHORT']  = $MESSAGE['USERS_USERNAME_TOO_SHORT'] ;
+$MESSAGE['USERS']['PASSWORD_TOO_SHORT']  = $MESSAGE['USERS_PASSWORD_TOO_SHORT'] ;
+$MESSAGE['USERS']['PASSWORD_MISMATCH']  = $MESSAGE['USERS_PASSWORD_MISMATCH'] ;
+$MESSAGE['USERS']['INVALID_EMAIL']  = $MESSAGE['USERS_INVALID_EMAIL'] ;
+$MESSAGE['USERS']['EMAIL_TAKEN']  = $MESSAGE['USERS_EMAIL_TAKEN'] ;
+$MESSAGE['USERS']['USERNAME_TAKEN']  = $MESSAGE['USERS_USERNAME_TAKEN'] ;
+$MESSAGE['USERS']['CHANGING_PASSWORD']  = $MESSAGE['USERS_CHANGING_PASSWORD'] ;
+$MESSAGE['USERS']['CONFIRM_DELETE']  = $MESSAGE['USERS_CONFIRM_DELETE'] ;
+$MESSAGE['GROUPS']['ADDED']  = $MESSAGE['GROUPS_ADDED'] ;
+$MESSAGE['GROUPS']['SAVED']  = $MESSAGE['GROUPS_SAVED'] ;
+$MESSAGE['GROUPS']['DELETED']  = $MESSAGE['GROUPS_DELETED'] ;
+$MESSAGE['GROUPS']['GROUP_NAME_BLANK']  = $MESSAGE['GROUPS_GROUP_NAME_BLANK'] ;
+$MESSAGE['GROUPS']['CONFIRM_DELETE']  = $MESSAGE['GROUPS_CONFIRM_DELETE'] ;
+$MESSAGE['GROUPS']['NO_GROUPS_FOUND']  = $MESSAGE['GROUPS_NO_GROUPS_FOUND'] ;
+$MESSAGE['GROUPS']['GROUP_NAME_EXISTS']  = $MESSAGE['GROUPS_GROUP_NAME_EXISTS'] ;
+$MESSAGE['PREFERENCES']['DETAILS_SAVED']  = $MESSAGE['PREFERENCES_DETAILS_SAVED'] ;
+$MESSAGE['PREFERENCES']['EMAIL_UPDATED']  = $MESSAGE['PREFERENCES_EMAIL_UPDATED'] ;
+$MESSAGE['PREFERENCES']['CURRENT_PASSWORD_INCORRECT']  = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'] ;
+$MESSAGE['PREFERENCES']['PASSWORD_CHANGED']  = $MESSAGE['PREFERENCES_PASSWORD_CHANGED'] ;
+$MESSAGE['PREFERENCES']['INVALID_CHARS']  = $MESSAGE['PREFERENCES_INVALID_CHARS'] ;
+$MESSAGE['TEMPLATES']['CHANGE_TEMPLATE_NOTICE']  = $MESSAGE['TEMPLATES_CHANGE_TEMPLATE_NOTICE'] ;
+$MESSAGE['MEDIA']['DIR_DOT_DOT_SLASH']  = $MESSAGE['MEDIA_DIR_DOT_DOT_SLASH'] ;
+$MESSAGE['MEDIA']['DIR_DOES_NOT_EXIST']  = $MESSAGE['MEDIA_DIR_DOES_NOT_EXIST'] ;
+$MESSAGE['MEDIA']['TARGET_DOT_DOT_SLASH']  = $MESSAGE['MEDIA_TARGET_DOT_DOT_SLASH'] ;
+$MESSAGE['MEDIA']['NAME_DOT_DOT_SLASH']  = $MESSAGE['MEDIA_NAME_DOT_DOT_SLASH'] ;
+$MESSAGE['MEDIA']['NAME_INDEX_PHP']  = $MESSAGE['MEDIA_NAME_INDEX_PHP'] ;
+$MESSAGE['MEDIA']['NONE_FOUND']  = $MESSAGE['MEDIA_NONE_FOUND'] ;
+$MESSAGE['MEDIA']['FILE_NOT_FOUND']  = $MESSAGE['MEDIA_FILE_NOT_FOUND'] ;
+$MESSAGE['MEDIA']['DELETED_FILE']  = $MESSAGE['MEDIA_DELETED_FILE'] ;
+$MESSAGE['MEDIA']['DELETED_DIR']  = $MESSAGE['MEDIA_DELETED_DIR'] ;
+$MESSAGE['MEDIA']['CONFIRM_DELETE']  = $MESSAGE['MEDIA_CONFIRM_DELETE'] ;
+$MESSAGE['MEDIA']['CANNOT_DELETE_FILE']  = $MESSAGE['MEDIA_CANNOT_DELETE_FILE'] ;
+$MESSAGE['MEDIA']['CANNOT_DELETE_DIR']  = $MESSAGE['MEDIA_CANNOT_DELETE_DIR'] ;
+$MESSAGE['MEDIA']['BLANK_NAME']  = $MESSAGE['MEDIA_BLANK_NAME'] ;
+$MESSAGE['MEDIA']['BLANK_EXTENSION']  = $MESSAGE['MEDIA_BLANK_EXTENSION'] ;
+$MESSAGE['MEDIA']['RENAMED']  = $MESSAGE['MEDIA_RENAMED'] ;
+$MESSAGE['MEDIA']['CANNOT_RENAME']  = $MESSAGE['MEDIA_CANNOT_RENAME'] ;
+$MESSAGE['MEDIA']['FILE_EXISTS']  = $MESSAGE['MEDIA_FILE_EXISTS'] ;
+$MESSAGE['MEDIA']['DIR_EXISTS']  = $MESSAGE['MEDIA_DIR_EXISTS'] ;
+$MESSAGE['MEDIA']['DIR_MADE']  = $MESSAGE['MEDIA_DIR_MADE'] ;
+$MESSAGE['MEDIA']['DIR_NOT_MADE']  = $MESSAGE['MEDIA_DIR_NOT_MADE'] ;
+$MESSAGE['MEDIA']['SINGLE_UPLOADED']  = $MESSAGE['MEDIA_SINGLE_UPLOADED'] ;
+$MESSAGE['MEDIA']['UPLOADED']  = $MESSAGE['MEDIA_UPLOADED'] ;
+$MESSAGE['PAGES']['ADDED']  = $MESSAGE['PAGES_ADDED'] ;
+$MESSAGE['PAGES']['ADDED_HEADING']  = $MESSAGE['PAGES_ADDED_HEADING'] ;
+$MESSAGE['PAGES']['PAGE_EXISTS']  = $MESSAGE['PAGES_PAGE_EXISTS'] ;
+$MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']  = $MESSAGE['PAGES_CANNOT_CREATE_ACCESS_FILE'] ;
+$MESSAGE['PAGES']['CANNOT_DELETE_ACCESS_FILE']  = $MESSAGE['PAGES_CANNOT_DELETE_ACCESS_FILE'] ;
+$MESSAGE['PAGES']['NOT_FOUND']  = $MESSAGE['PAGES_NOT_FOUND'] ;
+$MESSAGE['PAGES']['SAVED']  = $MESSAGE['PAGES_SAVED'] ;
+$MESSAGE['PAGES']['SAVED_SETTINGS']  = $MESSAGE['PAGES_SAVED_SETTINGS'] ;
+$MESSAGE['PAGES']['NOT_SAVED']  = $MESSAGE['PAGES_NOT_SAVED'] ;
+$MESSAGE['PAGES']['DELETE_CONFIRM']  = $MESSAGE['PAGES_DELETE_CONFIRM'] ;
+$MESSAGE['PAGES']['DELETED']  = $MESSAGE['PAGES_DELETED'] ;
+$MESSAGE['PAGES']['RESTORED']  = $MESSAGE['PAGES_RESTORED'] ;
+$MESSAGE['PAGES']['BLANK_PAGE_TITLE']  = $MESSAGE['PAGES_BLANK_PAGE_TITLE'] ;
+$MESSAGE['PAGES']['BLANK_MENU_TITLE']  = $MESSAGE['PAGES_BLANK_MENU_TITLE'] ;
+$MESSAGE['PAGES']['REORDERED']  = $MESSAGE['PAGES_REORDERED'] ;
+$MESSAGE['PAGES']['CANNOT_REORDER']  = $MESSAGE['PAGES_CANNOT_REORDER'] ;
+$MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']  = $MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS'] ;
+$MESSAGE['PAGES']['INTRO_NOT_WRITABLE']  = $MESSAGE['PAGES_INTRO_NOT_WRITABLE'] ;
+$MESSAGE['PAGES']['INTRO_SAVED']  = $MESSAGE['PAGES_INTRO_SAVED'] ;
+$MESSAGE['PAGES']['LAST_MODIFIED']  = $MESSAGE['PAGES_LAST_MODIFIED'] ;
+$MESSAGE['PAGES']['INTRO_LINK']  = $MESSAGE['PAGES_INTRO_LINK'] ;
+$MESSAGE['PAGES']['SECTIONS_PROPERTIES_SAVED']  = $MESSAGE['PAGES_SECTIONS_PROPERTIES_SAVED'] ;
+$MESSAGE['PAGES']['RETURN_TO_PAGES']  = $MESSAGE['PAGES_RETURN_TO_PAGES'] ;
+$MESSAGE['GENERIC']['FILL_IN_ALL']  = $MESSAGE['GENERIC_FILL_IN_ALL'] ;
+$MESSAGE['GENERIC']['FILE_TYPE']  = $MESSAGE['GENERIC_FILE_TYPE'] ;
+$MESSAGE['GENERIC']['FILE_TYPES']  = $MESSAGE['GENERIC_FILE_TYPES'] ;
+$MESSAGE['GENERIC']['CANNOT_UPLOAD']  = $MESSAGE['GENERIC_CANNOT_UPLOAD'] ;
+$MESSAGE['GENERIC']['ALREADY_INSTALLED']  = $MESSAGE['GENERIC_ALREADY_INSTALLED'] ;
+$MESSAGE['GENERIC']['NOT_INSTALLED']  = $MESSAGE['GENERIC_NOT_INSTALLED'] ;
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL']  = $MESSAGE['GENERIC_CANNOT_UNINSTALL'] ;
+$MESSAGE['GENERIC']['CANNOT_UNZIP']  = $MESSAGE['GENERIC_CANNOT_UNZIP'] ;
+$MESSAGE['GENERIC']['INSTALLED']  = $MESSAGE['GENERIC_INSTALLED'] ;
+$MESSAGE['GENERIC']['UPGRADED']  = $MESSAGE['GENERIC_UPGRADED'] ;
+$MESSAGE['GENERIC']['UNINSTALLED']  = $MESSAGE['GENERIC_UNINSTALLED'] ;
+$MESSAGE['GENERIC']['BAD_PERMISSIONS']  = $MESSAGE['GENERIC_BAD_PERMISSIONS'] ;
+$MESSAGE['GENERIC']['INVALID']  = $MESSAGE['GENERIC_INVALID'] ;
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE']  = $MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE'] ;
+$MESSAGE['GENERIC']['SECURITY_OFFENSE']  = $MESSAGE['GENERIC_SECURITY_OFFENSE'] ;
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL']  = $MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL'] ;
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IN_USE_TMPL_PAGES']  = $MESSAGE['GENERIC_CANNOT_UNINSTALL_IN_USE_TMPL_PAGES'] ;
+$MESSAGE['GENERIC']['CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE']  = $MESSAGE['GENERIC_CANNOT_UNINSTALL_IS_DEFAULT_TEMPLATE'] ;
+$MESSAGE['GENERIC']['WEBSITE_UNDER_CONSTRUCTION']  = $MESSAGE['GENERIC_WEBSITE_UNDER_CONSTRUCTION'] ;
+$MESSAGE['GENERIC']['PLEASE_CHECK_BACK_SOON']  = $MESSAGE['GENERIC_PLEASE_CHECK_BACK_SOON'] ;
+$MESSAGE['GENERIC']['PLEASE_BE_PATIENT']  = $MESSAGE['GENERIC_PLEASE_BE_PATIENT'] ;
+$MESSAGE['GENERIC']['ERROR_OPENING_FILE']  = $MESSAGE['GENERIC_ERROR_OPENING_FILE'] ;
+$MESSAGE['GENERIC']['INVALID_ADDON_FILE']  = $MESSAGE['GENERIC_INVALID_ADDON_FILE'] ;
+$MESSAGE['GENERIC']['INVALID_LANGUAGE_FILE']  = $MESSAGE['GENERIC_INVALID_LANGUAGE_FILE'] ;
+$MESSAGE['MOD_FORM']['REQUIRED_FIELDS']  = $MESSAGE['MOD_FORM_REQUIRED_FIELDS'] ;
+$MESSAGE['MOD_FORM']['EXCESS_SUBMISSIONS']  = $MESSAGE['MOD_FORM_EXCESS_SUBMISSIONS'] ;
+$MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA']  = $MESSAGE['MOD_FORM_INCORRECT_CAPTCHA'] ;
+$MESSAGE['ADDON']['RELOAD']  = $MESSAGE['ADDON_RELOAD'] ;
+$MESSAGE['ADDON']['ERROR_RELOAD']  = $MESSAGE['ADDON_ERROR_RELOAD'] ;
+$MESSAGE['ADDON']['MODULES_RELOADED']  = $MESSAGE['ADDON_MODULES_RELOADED'] ;
+$MESSAGE['ADDON']['TEMPLATES_RELOADED']  = $MESSAGE['ADDON_TEMPLATES_RELOADED'] ;
+$MESSAGE['ADDON']['LANGUAGES_RELOADED']  = $MESSAGE['ADDON_LANGUAGES_RELOADED'] ;
+$MESSAGE['ADDON']['PRECHECK_FAILED']  = $MESSAGE['ADDON_PRECHECK_FAILED'] ;
+$MESSAGE['ADDON']['MANUAL_INSTALLATION']  = $MESSAGE['ADDON_MANUAL_INSTALLATION'] ;
+$MESSAGE['ADDON']['MANUAL_INSTALLATION_WARNING']  = $MESSAGE['ADDON_MANUAL_INSTALLATION_WARNING'] ;
+

Property changes on: tags/2.8.3/wb/languages/old.format.inc.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages/index.php
===================================================================
--- tags/2.8.3/wb/languages/index.php	(nonexistent)
+++ tags/2.8.3/wb/languages/index.php	(revision 1610)
@@ -0,0 +1,21 @@
+<?php
+/**
+ *
+ * @category        framework
+ * @package         language
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+require('../config.php');
+header('Location: '.WB_URL.'/');
+exit;
\ No newline at end of file

Property changes on: tags/2.8.3/wb/languages/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/languages
===================================================================
--- tags/2.8.3/wb/languages	(nonexistent)
+++ tags/2.8.3/wb/languages	(revision 1610)

Property changes on: tags/2.8.3/wb/languages
___________________________________________________________________
Added: svn:ignore
## -0,0 +1 ##
+check_languages.php
Index: tags/2.8.3/wb/temp/index.php
===================================================================
--- tags/2.8.3/wb/temp/index.php	(nonexistent)
+++ tags/2.8.3/wb/temp/index.php	(revision 1610)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header("Location: ../index.php");
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/temp/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/media/index.php
===================================================================
--- tags/2.8.3/wb/media/index.php	(nonexistent)
+++ tags/2.8.3/wb/media/index.php	(revision 1610)
@@ -0,0 +1,9 @@
+<?php
+// *** This file is generated by WebsiteBaker Ver.2.8.2
+// *** Creation date: 2011-11-09T20:06:57+00:00
+// *** Do not modify this file manually
+// *** WB will rebuild this file from time to time!!
+// *************************************************
+	header('HTTP/1.1 301 Moved Permanently');
+	header('Location: http://wb282.wdsnet/2.8.x/wb/index.php');
+// *************************************************

Property changes on: tags/2.8.3/wb/media/index.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/index.php
===================================================================
--- tags/2.8.3/wb/index.php	(nonexistent)
+++ tags/2.8.3/wb/index.php	(revision 1610)
@@ -0,0 +1,155 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         page
+ * @author          WebsiteBaker Project
+ * @copyright       2009-, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+$starttime = array_sum(explode(" ",microtime()));
+
+define('DEBUG', false);
+// Include config file
+$config_file = dirname(__FILE__).'/config.php';
+if(file_exists($config_file))
+{
+	require_once($config_file);
+}
+
+// Check if the config file has been set-up
+if(!defined('TABLE_PREFIX'))
+{
+/*
+ * Remark:  HTTP/1.1 requires a qualified URI incl. the scheme, name
+ * of the host and absolute path as the argument of location. Some, but
+ * not all clients will accept relative URIs also.
+ */
+	$host       = $_SERVER['HTTP_HOST'];
+	$uri        = rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\');
+	$file       = 'install/index.php';
+	$target_url = 'http://'.$host.$uri.'/'.$file;
+	$sResponse  = $_SERVER['SERVER_PROTOCOL'].' 307 Temporary Redirect';
+	header($sResponse);
+	header('Location: '.$target_url);
+	exit;	// make sure that subsequent code will not be executed
+}
+
+require_once(WB_PATH.'/framework/class.frontend.php');
+// Create new frontend object
+$wb = new frontend();
+
+// Figure out which page to display
+// Stop processing if intro page was shown
+$wb->page_select() or die();
+
+// Collect info about the currently viewed page
+// and check permissions
+$wb->get_page_details();
+
+// Collect general website settings
+$wb->get_website_settings();
+
+// Load functions available to templates, modules and code sections
+// also, set some aliases for backward compatibility
+require(WB_PATH.'/framework/frontend.functions.php');
+
+// redirect menu-link
+$this_page_id = PAGE_ID;
+
+$php43 = version_compare(phpversion(), '4.3', '>=');
+
+$sql  = 'SELECT `module`, `block` FROM `'.TABLE_PREFIX.'sections` ';
+$sql .= 'WHERE `page_id` = '.(int)$this_page_id.' AND `module` = "menu_link"';
+$query_this_module = $database->query($sql);
+if($query_this_module->numRows() == 1)  // This is a menu_link. Get link of target-page and redirect
+{
+	// get target_page_id
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'mod_menu_link` WHERE `page_id` = '.(int)$this_page_id;
+	$query_tpid = $database->query($sql);
+	if($query_tpid->numRows() == 1)
+	{
+		$res = $query_tpid->fetchRow();
+		$target_page_id = $res['target_page_id'];
+		$redirect_type = $res['redirect_type'];
+		$anchor = ($res['anchor'] != '0' ? '#'.(string)$res['anchor'] : '');
+		$extern = $res['extern'];
+		// set redirect-type
+		if($redirect_type == 301)
+		{
+			if($php43)
+			{
+				@header('HTTP/1.1 301 Moved Permanently', TRUE, 301);
+			}
+			else
+			{
+				@header('HTTP/1.1 301 Moved Permanently');
+			}
+		}
+		if($target_page_id == -1)
+		{
+			if($extern != '')
+			{
+				$target_url = $extern.$anchor;
+				header('Location: '.$target_url);
+				exit;
+			}
+		}
+		else
+		{
+			// get link of target-page
+			$sql  = 'SELECT `link` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$target_page_id;
+			$target_page_link = $database->get_one($sql);
+			if($target_page_link != null)
+			{
+				$target_url = WB_URL.PAGES_DIRECTORY.$target_page_link.PAGE_EXTENSION.$anchor;
+				header('Location: '.$target_url);
+				exit;
+			}
+		}
+	}
+}
+//Get pagecontent in buffer for Droplets and/or Filter operations
+ob_start();
+require(WB_PATH.'/templates/'.TEMPLATE.'/index.php');
+$output = ob_get_contents();
+if(ob_get_length() > 0) { ob_end_clean(); }
+
+// wb->preprocess() -- replace all [wblink123] with real, internal links
+if( method_exists($wb, 'preprocess') )
+{
+   $wb->preprocess($output);
+}
+// Load Droplet engine and process
+	if(file_exists(WB_PATH .'/modules/droplets/droplets.php')) {
+		include_once(WB_PATH .'/modules/droplets/droplets.php');
+		if(function_exists('evalDroplets')) {
+			$output = evalDroplets($output);
+		}
+	}
+// Load backwards compatible frontend filter support and process
+	if(file_exists(WB_PATH .'/modules/output_filter/filter-routines.php')) {
+		include_once(WB_PATH .'/modules/output_filter/filter-routines.php');
+		if(function_exists('executeFrontendOutputFilter')) {
+			$output = executeFrontendOutputFilter($output);
+		}elseif(function_exists('filter_frontend_output')) {
+			$output = filter_frontend_output($output);
+		}
+
+	}
+// move css definitions into head section
+	if(function_exists('moveCssToHead')) {
+		$output = moveCssToHead($output);
+	}
+// now send complete page to the browser
+echo $output;
+// end of wb-script
+exit;

Property changes on: tags/2.8.3/wb/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/pages/index.php
===================================================================
--- tags/2.8.3/wb/pages/index.php	(nonexistent)
+++ tags/2.8.3/wb/pages/index.php	(revision 1610)
@@ -0,0 +1,26 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');

Property changes on: tags/2.8.3/wb/pages/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb/pages
===================================================================
--- tags/2.8.3/wb/pages	(nonexistent)
+++ tags/2.8.3/wb/pages	(revision 1610)

Property changes on: tags/2.8.3/wb/pages
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,14 ##
+de
+de.php
+en
+en.php
+fr.php
+intro.php
+links
+links.php
+login.php
+nl
+nl.php
+page.php
+posts
+songlist.php
Index: tags/2.8.3/wb/config.php.new
===================================================================
--- tags/2.8.3/wb/config.php.new	(nonexistent)
+++ tags/2.8.3/wb/config.php.new	(revision 1610)
@@ -0,0 +1 @@
+<?php
Index: tags/2.8.3/wb/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/2.8.3/wb/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tags/2.8.3/wb/search/search_modext.php
===================================================================
--- tags/2.8.3/wb/search/search_modext.php	(nonexistent)
+++ tags/2.8.3/wb/search/search_modext.php	(revision 1610)
@@ -0,0 +1,469 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         search
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2010, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 4.3.4 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// make the url-string for highlighting
+function make_url_searchstring($search_match, $search_url_array) {
+	$link = "";
+	if ($search_match != 'exact') {
+		$str = implode(" ", $search_url_array);
+		$link = "?searchresult=1&amp;sstring=".urlencode($str);
+	} else {
+		$str = str_replace(' ', '_', $search_url_array[0]);
+		$link = "?searchresult=2&amp;sstring=".urlencode($str);
+	}
+	return $link;
+}
+
+// make date and time for "last modified by... on ..."-string
+function get_page_modified($page_modified_when) {
+	global $TEXT;
+	if($page_modified_when > 0) {
+		$date = gmdate(DATE_FORMAT, $page_modified_when+TIMEZONE);
+		$time = gmdate(TIME_FORMAT, $page_modified_when+TIMEZONE);
+	} else {
+		$date = $TEXT['UNKNOWN'].' '.$TEXT['DATE'];
+		$time = $TEXT['UNKNOWN'].' '.$TEXT['TIME'];
+	}
+	return array($date, $time);
+}
+
+// make username and displayname for "last modified by... on ..."-string
+function get_page_modified_by($page_modified_by, $users) {
+	global $TEXT;
+	if($page_modified_by>0) {
+		$username = $users[$page_modified_by]['username'];
+		$displayname = $users[$page_modified_by]['display_name'];
+	} else {
+		$username = "";
+		$displayname = $TEXT['UNKNOWN'];
+	}
+	return array($username, $displayname);
+}
+
+// checks if _all_ searchwords matches
+function is_all_matched($text, $search_words) {
+	$all_matched = true;
+	foreach ($search_words AS $word) {
+		if(!preg_match('/'.$word.'/i', $text)) {
+			$all_matched = false;
+			break;
+		}
+	}
+	return $all_matched;
+}
+
+// checks if _any_ of the searchwords matches
+function is_any_matched($text, $search_words) {
+	$any_matched = false;
+	$word = '('.implode('|', $search_words).')';
+	if(preg_match('/'.$word.'/i', $text)) {
+		$any_matched = true;
+	}
+	return $any_matched;
+}
+
+// collects the matches from text in excerpt_array
+function get_excerpts($text, $search_words, $max_excerpt_num) {
+	$excerpt_array = FALSE;
+	$word = '('.implode('|', $search_words).')';
+	// start-sign: .!?; + INVERTED EXCLAMATION MARK - INVERTED QUESTION MARK - DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
+	$p_start=".!?;"."\xC2\xA1"."\xC2\xBF"."\xE2\x80\xBC"."\xE2\x80\xBD"."\xE2\x81\x89"."\xE2\x81\x88"."\xE2\x81\x87"."\xEF\xBD\xA1"."\xE3\x80\x82"."\xE3\x80\x81";
+	// stop-sign: .!?; + DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
+	$p_stop=".!?;"."\xE2\x80\xBC"."\xE2\x80\xBD"."\xE2\x81\x89"."\xE2\x81\x88"."\xE2\x81\x87"."\xEF\xBD\xA1"."\xE3\x80\x82"."\xE3\x80\x81";
+	// jump from match to match, get excerpt, stop if $max_excerpt_num is reached
+	$match_array = $matches = array();
+	$startpos = $wordpos = $endpos = 0; // although preg_match with u-switch handles unicode correctly, the ...pos-variables will count bytes (not chars) 
+	while(preg_match("/$word/i", $text, $match_array, PREG_OFFSET_CAPTURE, $startpos)) {
+		$wordpos = $match_array[0][1];
+		$startpos = ($wordpos-200 < $endpos)?$endpos:$wordpos-200;
+		$endpos = $wordpos+200;
+		// look for better start position
+		if(preg_match_all("/[$p_start]/u", substr($text, $startpos, $wordpos-$startpos), $matches, PREG_OFFSET_CAPTURE))
+			$startpos += $matches[0][count($matches[0])-1][1]; // set startpos at last punctuation before word
+		// look for better end position
+		if(preg_match_all("/[$p_stop]/u", substr($text, $wordpos, $endpos-$wordpos), $matches, PREG_OFFSET_CAPTURE))
+			$endpos = $wordpos+$matches[0][0][1]; // set endpos at first punctuation after word
+		$match = substr($text, $startpos+1, $endpos-$startpos);
+		if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./', $match)) // skip excerpts with email-addresses
+			$excerpt_array[] = trim($match);
+		if(count($excerpt_array)>=$max_excerpt_num) {
+			$excerpt_array = array_unique($excerpt_array);
+			if(count($excerpt_array) >= $max_excerpt_num)
+				break;
+		}
+		// restart at last endpos
+		$startpos = $endpos;
+	}
+	return $excerpt_array;
+}
+
+// makes excerpt_array a string ready to print out
+function prepare_excerpts($excerpt_array, $search_words, $max_excerpt_num) {
+	// excerpts: text before and after a single excerpt, html-tag for markup
+	$EXCERPT_BEFORE =       '...&nbsp;';
+	$EXCERPT_AFTER =        '&nbsp;...<br />';
+	$EXCERPT_MARKUP_START = '<b>';
+	$EXCERPT_MARKUP_END =   '</b>';
+	// remove duplicate matches from $excerpt_array, if any.
+	$excerpt_array = array_unique($excerpt_array);
+	// use the first $max_excerpt_num excerpts only
+	if(count($excerpt_array) > $max_excerpt_num) {
+		$excerpt_array = array_slice($excerpt_array, 0, $max_excerpt_num);
+	}
+	// prepare search-string
+	$string = "(".implode("|", $search_words).")";
+	// we want markup on search-results page,
+	// but we need some 'magic' to prevent <br />, <b>... from being highlighted
+	$excerpt = '';
+	foreach($excerpt_array as $str) {
+		$excerpt .= '#,,#'.preg_replace("/($string)/i","#,,,,#$1#,,,,,#",$str).'#,,,#';
+	}
+	$excerpt = str_replace(array('&','<','>','"','\'',"\xC2\xA0"), array('&amp;','&lt;','&gt;','&quot;','&#039;',' '), $excerpt);
+	$excerpt = str_replace(array('#,,,,#','#,,,,,#'), array($EXCERPT_MARKUP_START,$EXCERPT_MARKUP_END), $excerpt);
+	$excerpt = str_replace(array('#,,#','#,,,#'), array($EXCERPT_BEFORE,$EXCERPT_AFTER), $excerpt);
+	// prepare to write out
+	if(DEFAULT_CHARSET != 'utf-8') {
+		$excerpt = umlauts_to_entities($excerpt, 'UTF-8');
+	}
+	return $excerpt;
+}
+
+// work out what the link-anchor should be
+function make_url_target($page_link_target, $text, $search_words) {
+	// 1. e.g. $page_link_target=="&monthno=5&year=2007" - module-dependent target. Do nothing.
+	// 2. $page_link_target=="#!wb_section_..." - the user wants the section-target, so do nothing.
+	// 3. $page_link_target=="#wb_section_..." - try to find a better target, use the section-target as fallback.
+	// 4. $page_link_target=="" - do nothing
+	if(version_compare(PHP_VERSION, '4.3.3', ">=") && substr($page_link_target,0,12)=='#wb_section_') {
+		$word = '('.implode('|', $search_words).')';
+		preg_match('/'.$word.'/i', $text, $match, PREG_OFFSET_CAPTURE);
+		if($match && is_array($match[0])) {
+			$x=$match[0][1]; // position of first match
+			// is there an anchor nearby?
+			if(preg_match_all('/<\s*(?:a[^>]+?name|[^>]+?id)\s*=\s*"([^"]+)"/i', substr($text,0,$x), $match)) {
+				$page_link_target = '#'.$match[1][count($match[1])-1];
+			}
+		}
+	}
+	elseif(substr($page_link_target,0,13)=='#!wb_section_') {
+		$page_link_target = '#'.substr($page_link_target, 2);
+	}
+	
+	// since wb 2.7.1 the section-anchor is configurable - SEC_ANCHOR holds the anchor name
+	if(substr($page_link_target,0,12)=='#wb_section_') {
+		if(defined('SEC_ANCHOR') && SEC_ANCHOR!='') {
+			$sec_id = substr($page_link_target, 12);
+			$page_link_target = '#'.SEC_ANCHOR.$sec_id;
+		} else { // section-anchors are disabled
+			$page_link_target = '';
+		}
+	}
+	
+	return $page_link_target;
+}
+
+// wrapper for compatibility with old print_excerpt()
+function print_excerpt($page_link, $page_link_target, $page_title, $page_description, $page_modified_when, $page_modified_by, $text, $max_excerpt_num, $func_vars, $pic_link="") {
+	$mod_vars = array(
+		'page_link' => $page_link,
+		'page_link_target' => $page_link_target,
+		'page_title' => $page_title,
+		'page_description' => $page_description,
+		'page_modified_when' => $page_modified_when,
+		'page_modified_by' => $page_modified_by,
+		'text' => $text,
+		'max_excerpt_num' => $max_excerpt_num,
+		'pic_link' => $pic_link
+	);
+	print_excerpt2($mod_vars, $func_vars);
+}
+
+/* These functions can be used in module-supplied search_funcs
+ * -----------------------------------------------------------
+ * print_excerpt2() - the main-function to use in all search_funcs
+ * print_excerpt() - wrapper for compatibility-reason. Use print_excerpt2() instead.
+ * list_files_dirs() - lists all files and dirs below a given directory
+ * clear_filelist() - keeps only wanted or removes unwanted entries in file-list.
+ */
+ 
+// prints the excerpts for one section
+function print_excerpt2($mod_vars, $func_vars) {
+	extract($func_vars, EXTR_PREFIX_ALL, 'func');
+	extract($mod_vars, EXTR_PREFIX_ALL, 'mod');
+	global $TEXT;
+	// check $mod_...vars
+	if(!isset($mod_page_link))          $mod_page_link = $func_page_link;
+	if(!isset($mod_page_link_target))   $mod_page_link_target = "";
+	if(!isset($mod_page_title))         $mod_page_title = $func_page_title;
+	if(!isset($mod_page_description))   $mod_page_description = $func_page_description;
+	if(!isset($mod_page_modified_when)) $mod_page_modified_when = $func_page_modified_when;
+	if(!isset($mod_page_modified_by))   $mod_page_modified_by = $func_page_modified_by;
+	if(!isset($mod_text))               $mod_text = "";
+	if(!isset($mod_max_excerpt_num))    $mod_max_excerpt_num = $func_default_max_excerpt;
+	if(!isset($mod_pic_link))           $mod_pic_link = "";
+	if(!isset($mod_no_highlight))       $mod_no_highlight = false;
+	if(!isset($func_enable_flush))      $func_enable_flush = false; // set this in db: wb_search.cfg_enable_flush [READ THE DOC BEFORE]
+	if(isset($mod_ext_charset)) $mod_ext_charset = strtolower($mod_ext_charset);
+	else $mod_ext_charset = '';
+
+	if($mod_text == "") // nothing to do
+		{ return false; }
+
+	if($mod_no_highlight) // no highlighting
+		{ $mod_page_link_target = "&amp;nohighlight=1".$mod_page_link_target; }
+	// clean the text:
+	$mod_text = preg_replace('#<(br|dt|/dd|/?(?:h[1-6]|tr|table|p|li|ul|pre|code|div|hr))[^>]*>#i', '.', $mod_text);
+	$mod_text = preg_replace('#<(!--.*--|style.*</style|script.*</script)>#iU', ' ', $mod_text);
+	$mod_text = preg_replace('#\[\[.*?\]\]#', '', $mod_text); //Filter droplets from the page data
+	// strip_tags() is called below
+	if($mod_ext_charset!='') { // data from external database may have a different charset
+		require_once(WB_PATH.'/framework/functions-utf8.php');
+		switch($mod_ext_charset) {
+		case 'latin1':
+		case 'cp1252':
+			$mod_text = charset_to_utf8($mod_text, 'CP1252');
+			break;
+		case 'cp1251':
+			$mod_text = charset_to_utf8($mod_text, 'CP1251');
+			break;
+		case 'latin2':
+			$mod_text = charset_to_utf8($mod_text, 'ISO-8859-2');
+			break;
+		case 'hebrew':
+			$mod_text = charset_to_utf8($mod_text, 'ISO-8859-8');
+			break;
+		case 'greek':
+			$mod_text = charset_to_utf8($mod_text, 'ISO-8859-7');
+			break;
+		case 'latin5':
+			$mod_text = charset_to_utf8($mod_text, 'ISO-8859-9');
+			break;
+		case 'latin7':
+			$mod_text = charset_to_utf8($mod_text, 'ISO-8859-13');
+			break;
+		case 'utf8':
+		default:
+			$mod_text = charset_to_utf8($mod_text, 'UTF-8');
+		}
+	} else {
+		$mod_text = entities_to_umlauts($mod_text, 'UTF-8');
+	}
+	$anchor_text = $mod_text; // make an copy containing html-tags
+	$mod_text = strip_tags($mod_text);
+	$mod_text = str_replace(array('&gt;','&lt;','&amp;','&quot;','&#039;','&apos;','&nbsp;'), array('>','<','&','"','\'','\'',' '), $mod_text);
+	$mod_text = '.'.trim($mod_text).'.';
+	// Do a fast scan over $mod_text first. This may speedup things a lot.
+	if($func_search_match == 'all') {
+		if(!is_all_matched($mod_text, $func_search_words))
+			return false;
+	}
+	elseif(!is_any_matched($mod_text, $func_search_words)) {
+		return false;
+	}
+	// search for an better anchor - this have to be done before strip_tags() (may fail if search-string contains <, &, amp, gt, lt, ...)
+	$anchor =  make_url_target($mod_page_link_target, $anchor_text, $func_search_words);
+	// make the link from $mod_page_link, add anchor
+	$link = "";
+	$link = page_link($mod_page_link);
+	if(strpos($mod_page_link, 'http:')===FALSE)
+		$link .= make_url_searchstring($func_search_match, $func_search_url_array);
+	$link .= $anchor;
+
+	// now get the excerpt
+	$excerpt = "";
+	$excerpt_array = array();
+	if($mod_max_excerpt_num > 0) {
+		if(!$excerpt_array = get_excerpts($mod_text, $func_search_words, $mod_max_excerpt_num)) {
+			return false;
+		}
+		$excerpt = prepare_excerpts($excerpt_array, $func_search_words, $mod_max_excerpt_num);
+	}
+	// handle thumbs - to deactivate this look in the module's search.php: $show_thumb (or maybe in the module's settings-page)
+	if($mod_pic_link != "") {
+		if(isset($mod_special) && $mod_special=='lightbox2_plus')
+			$excerpt = '<table class="excerpt_thumb" width="100%" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="110" valign="top">'.$mod_special_piclink.'<img src="'.WB_URL.'/'.MEDIA_DIRECTORY.$mod_pic_link.'" alt="" /></a></td><td>'.$excerpt.'</td></tr></tbody></table>';
+		else
+			$excerpt = '<table class="excerpt_thumb" width="100%" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="110" valign="top"><a href="'.$link.'"><img src="'.WB_URL.'/'.MEDIA_DIRECTORY.$mod_pic_link.'" alt="" /></a></td><td>'.$excerpt.'</td></tr></tbody></table>';
+	}
+
+	// print-out the excerpt
+	$vars = array();
+	$values = array();
+	list($date, $time) = get_page_modified($mod_page_modified_when);
+	list($username, $displayname) = get_page_modified_by($mod_page_modified_by, $func_users);
+	$vars = array('[LINK]', '[TITLE]','[PAGE_TITLE]' ,'[MENU_TITLE]' , '[DESCRIPTION]', '[USERNAME]','[DISPLAY_NAME]','[DATE]','[TIME]','[TEXT_LAST_UPDATED_BY]','[TEXT_ON]','[EXCERPT]');
+	$values = array(
+		$link,
+		$mod_page_title,
+		$func_page_title,
+		$func_page_menu_title,
+		$mod_page_description,
+		$username,
+		$displayname,
+		$date,
+		$time,
+		$TEXT['LAST_UPDATED_BY'],
+		$TEXT['ON'],
+		$excerpt
+	);
+	echo str_replace($vars, $values, $func_results_loop_string);
+	if($func_enable_flush) { // ATTN: this will bypass output-filters and may break template-layout or -filters
+		ob_flush();flush();
+	}
+	return true;
+}
+
+// list all files and dirs in $dir (recursive), omits '.', '..', and hidden files/dirs
+// returns an array of two arrays ($files[] and $dirs[]).
+// usage: list($files,$dirs) = list_files_dirs($directory);
+//        $depth: get subdirs (true/false)
+function list_files_dirs($dir, $depth=true, $files=array(), $dirs=array()) {
+	$dh=opendir($dir);
+	while(($file = readdir($dh)) !== false) {
+		if($file{0} == '.' || $file == '..') {
+			continue;
+		}
+		if(is_dir($dir.'/'.$file)) {
+			if($depth) {
+				$dirs[] = $dir.'/'.$file;
+				list($files, $dirs) = list_files_dirs($dir.'/'.$file, $depth, $files, $dirs);
+			}
+		} else {
+			$files[] = $dir.'/'.$file;
+		}
+	}
+	closedir($dh);
+	natcasesort($files);
+	natcasesort($dirs);
+	return(array($files, $dirs));
+}
+
+// keeps only wanted entries in array $files. $str have to be an eregi()-compatible regex
+function clear_filelist($files, $str, $keep=true) {
+	// options: $keep = true  : remove all non-matching entries
+	//          $keep = false : remove all matching entries
+	$c_filelist = array();
+	if($str == '')
+		return $files;
+	foreach($files as $file) {
+		if($keep) {
+			if(preg_match("~$str~i", $file)) {
+				$c_filelist[] = $file;
+			}
+		} else {
+			if(!preg_match("~$str~i", $file)) {
+				$c_filelist[] = $file;
+			}
+		}
+	}
+	return($c_filelist);
+}
+
+function search_make_sql_part($words, $match, $columns) {
+	// $words are utf-8 encoded, will be converted to DEFAULT_CHARSET below
+	if(empty($words) || empty($columns)) return('(1=1)');
+	global $database;
+
+	// check if we can use SQL'S "LIKE"
+	// work-around for WB'S missing-SET-NAMES-problem
+	static $checked = FALSE;
+	if($checked===FALSE) {
+		$checked = TRUE;
+		$lowers = array('utf8'=>"\xc3\xa1", 'iso'=>"\xe1");
+		$uppers = array('utf8'=>"\xc3\x81", 'iso'=>"\xc1");
+		switch(DEFAULT_CHARSET) {
+			case 'utf-8':
+				$lo = $lowers['utf8'];
+				$up = $uppers['utf8'];
+				break;
+			case 'iso-8859-1':
+			case 'iso-8859-2':
+			case 'iso-8859-3':
+			case 'iso-8859-4':
+			case 'iso-8859-5':
+			case 'iso-8859-7':
+			case 'iso-8859-9':
+			case 'iso-8859-10':
+				$lo = $lowers['iso'];
+				$up = $uppers['iso'];
+				break;
+			default:
+				$checked = 'check failed'; // we can't handle arabic,hebrew,thai
+		}
+		if($checked===TRUE && $query = $database->query("SELECT UPPER('$lo')='$up'")) {
+			$res = $query->fetchRow();
+			if($res[0]==0) {
+				$checked = 'check failed';
+			}
+		} else
+			$checked = 'check failed';
+	}
+
+	require_once(WB_PATH.'/framework/functions-utf8.php');
+	global $search_table_sql_local;
+	$altnum = count($search_table_sql_local);
+
+	if($match=='all') $op = 'AND';
+	else $op = ' OR'; // keep the leading space!
+
+	// create sql-template
+	$sql = '';
+	$i = 0;
+	foreach($words as $w) {
+		if(empty($w)) continue;
+		$w_alts = $e_alts = array();
+		if($altnum) {
+			for($x=0;$x<$altnum;$x++)
+				$w_alts[$x] = strtr($w, $search_table_sql_local[$x]);
+		} else {
+			$w_alts[0] = $w;
+		}
+		$w_alts = array_unique($w_alts);
+		foreach($w_alts as $a) {
+			$tmp = htmlentities($a, ENT_COMPAT, 'UTF-8');
+			// if the missing-SET-NAMES-issue appears and $tmp contains non-ascii characters: exit and use the normal (slow) search-function instead
+			if($checked!==TRUE && preg_match('/[\x80-\xFF]/', $tmp)) return('(1=1)'); // missing-SET-NAMES-issue
+			$e_alts[] = $tmp;
+		}
+		$sql .= "";
+		foreach($w_alts as $a)
+			$sql .= "{{COL}} LIKE '%".addslashes(utf8_to_charset($a))."%' OR ";
+		if(isset($e_alts[$i]) && $e_alts[$i]!=$w)
+			$sql .= " {{COL}} LIKE '%".addslashes($e_alts[$i])."%'";
+		else {
+			$sql = substr($sql, 0, strlen($sql)-4);
+			$sql .= '';
+		}
+		$sql .= " $op ";
+		$i++;
+	}
+	$sql = substr($sql, 0, strlen($sql)-5);
+	$sql_template = $sql;
+
+	// create SQL-string from template
+	$sql = '(';
+	foreach($columns as $c) {
+		$sql .= '(';
+		$sql .= str_replace('{{COL}}', $c, $sql_template);
+		$sql .= ")  OR ";
+	}
+	$sql = substr($sql, 0, strlen($sql)-4);
+	$sql .= ')';
+
+	return($sql);
+}

Property changes on: tags/2.8.3/wb/search/search_modext.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/search/search.php
===================================================================
--- tags/2.8.3/wb/search/search.php	(nonexistent)
+++ tags/2.8.3/wb/search/search.php	(revision 1610)
@@ -0,0 +1,709 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         search
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Must include code to stop this file being access directly
+if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
+
+// Check if search is enabled
+if(SHOW_SEARCH != true) {
+	echo $TEXT['SEARCH'].' '.$TEXT['DISABLED'];
+	return;
+}
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get search settings
+$table=TABLE_PREFIX.'search';
+$query = $database->query("SELECT value FROM $table WHERE name = 'header' LIMIT 1");
+$fetch_header = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'footer' LIMIT 1");
+$fetch_footer = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'results_header' LIMIT 1");
+$fetch_results_header = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'results_footer' LIMIT 1");
+$fetch_results_footer = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'results_loop' LIMIT 1");
+$fetch_results_loop = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'no_results' LIMIT 1");
+$fetch_no_results = $query->fetchRow();
+$query = $database->query("SELECT value FROM $table WHERE name = 'module_order' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value']='faqbaker,manual,wysiwyg'; }
+$search_module_order = $res['value'];
+$query = $database->query("SELECT value FROM $table WHERE name = 'max_excerpt' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = '15'; }
+$search_max_excerpt = (int)($res['value']);
+if(!is_numeric($search_max_excerpt)) { $search_max_excerpt = 15; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'cfg_show_description' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = 'true'; }
+if($res['value'] == 'false') { $cfg_show_description = false; } else { $cfg_show_description = true; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'cfg_search_description' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = 'true'; }
+if($res['value'] == 'false') { $cfg_search_description = false; } else { $cfg_search_description = true; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'cfg_search_keywords' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = 'true'; }
+if($res['value'] == 'false') { $cfg_search_keywords = false; } else { $cfg_search_keywords = true; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'cfg_enable_old_search' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = 'true'; }
+if($res['value'] == 'false') { $cfg_enable_old_search = false; } else { $cfg_enable_old_search = true; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'cfg_enable_flush' LIMIT 1");
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = 'false'; }
+if($res['value'] == 'false') { $cfg_enable_flush = false; } else { $cfg_enable_flush = true; }
+$query = $database->query("SELECT value FROM $table WHERE name = 'time_limit' LIMIT 1"); // time-limit per module
+if($query->numRows() > 0) { $res = $query->fetchRow(); } else { $res['value'] = '0'; }
+$search_time_limit = (int)($res['value']);
+if($search_time_limit < 1) $search_time_limit = 0;
+
+// search-module-extension: get helper-functions
+require_once(WB_PATH.'/search/search_modext.php');
+// search-module-extension: Get "search.php" for each module, if present
+// looks in modules/module/ and modules/module_searchext/
+$search_funcs = array();$search_funcs['__before'] = array();$search_funcs['__after'] = array();
+$query = $database->query("SELECT DISTINCT directory FROM ".TABLE_PREFIX."addons WHERE type = 'module' AND directory NOT LIKE '%_searchext'");
+if($query->numRows() > 0) {
+	while($module = $query->fetchRow()) {
+		$file = WB_PATH.'/modules/'.$module['directory'].'/search.php';
+		if(!file_exists($file)) {
+			$file = WB_PATH.'/modules/'.$module['directory'].'_searchext/search.php';
+			if(!file_exists($file)) {
+				$file='';
+			}
+		}
+		if($file!='') {
+			include_once($file);
+			if(function_exists($module['directory']."_search")) {
+				$search_funcs[$module['directory']] = $module['directory']."_search";
+			}
+			if(function_exists($module['directory']."_search_before")) {
+				$search_funcs['__before'][] = $module['directory']."_search_before";
+			}
+			if(function_exists($module['directory']."_search_after")) {
+				$search_funcs['__after'][] = $module['directory']."_search_after";
+			}
+		}
+	}
+}
+
+// Get list of usernames and display names
+$query = $database->query("SELECT user_id,username,display_name FROM ".TABLE_PREFIX."users");
+$users = array('0' => array('display_name' => $TEXT['UNKNOWN'], 'username' => strtolower($TEXT['UNKNOWN'])));
+if($query->numRows() > 0) {
+	while($user = $query->fetchRow()) {
+		$users[$user['user_id']] = array('display_name' => $user['display_name'], 'username' => $user['username']);
+	}
+}
+
+// Get search language, used for special umlaut handling (DE: ß=ss, ...)
+$search_lang = '';
+if(isset($_REQUEST['search_lang'])) {
+	$search_lang = $_REQUEST['search_lang'];
+	if(!preg_match('~^[A-Z]{2}$~', $search_lang))
+		$search_lang = LANGUAGE;
+} else {
+	$search_lang = LANGUAGE;
+}
+
+// Get the path to search into. Normally left blank
+// ATTN: since wb2.7.1 the path is evaluated as SQL: LIKE "/path%" - which will find "/path.php", "/path/info.php", ...; But not "/de/path.php"
+// Add a '%' in front of each path to get SQL: LIKE "%/path%"
+/* possible values:
+ * - a single path: "/en/" - search only pages whose link contains 'path' ("/en/machinery/bender-x09")
+ * - a single path not to search into: "-/help" - search all, exclude /help...
+ * - a bunch of alternative pathes: "/en/,%/machinery/,/docs/" - alternatives paths, seperated by comma
+ * - a bunch of paths to exclude: "-/about,%/info,/jp/,/light" - search all, exclude these.
+ * These different styles can't be mixed.
+ */
+// ATTN: in wb2.7.0 "/en/" matched all links with "/en/" somewhere in the link: "/info/en/intro.php", "/en/info.php", ...
+// since wb2.7.1 "/en/" matches only links _starting_  with "/en/": "/en/intro/info.php"
+// use "%/en/" (or "%/en/, %/info", ...) to get the old behavior
+$search_path_SQL = '';
+$search_path = '';
+if(isset($_REQUEST['search_path'])) {
+	$search_path = addslashes(htmlspecialchars(strip_tags($wb->strip_slashes($_REQUEST['search_path'])), ENT_QUOTES));
+	if(!preg_match('~^%?[-a-zA-Z0-9_,/ ]+$~', $search_path))
+		$search_path = '';
+	if($search_path != '') {
+		$search_path_SQL = 'AND ( ';
+		$not = '';
+		$op = 'OR';
+		if($search_path[0] == '-') {
+			$not = 'NOT';
+			$op = 'AND';
+			$paths = explode(',', substr($search_path, 1) );
+		} else {
+			$paths = explode(',',$search_path);
+		}
+		$i=0;
+		foreach($paths as $p) {
+			if($i++ > 0) {
+				$search_path_SQL .= ' $op';
+			}
+			$search_path_SQL .= " link $not LIKE '".$p."%'";			
+		}
+		$search_path_SQL .= ' )';
+	}
+}
+
+// use page_languages?
+if(PAGE_LANGUAGES) {
+	$table = TABLE_PREFIX."pages";
+	$search_language_SQL_t = "AND $table.`language` = '".LANGUAGE."'";
+	$search_language_SQL = "AND `language` = '".LANGUAGE."'";
+} else {
+	$search_language_SQL_t = '';
+	$search_language_SQL = '';
+}
+
+// Get the search type
+$match = '';
+if(isset($_REQUEST['match'])) {
+	if($_REQUEST['match']=='any') $match = 'any';
+	elseif($_REQUEST['match']=='all') $match = 'all';
+	elseif($_REQUEST['match']=='exact') $match = 'exact';
+	else $match = 'all';
+} else {
+	$match = 'all';
+}
+
+// Get search string
+$search_normal_string = '';
+$search_entities_string = ''; // for SQL's LIKE
+$search_display_string = ''; // for displaying
+$search_url_string = ''; // for $_GET -- ATTN: unquoted! Will become urldecoded later
+$string = '';
+if(isset($_REQUEST['string'])) {
+	if($match!='exact') { // $string will be cleaned below 
+		$string=str_replace(',', '', $_REQUEST['string']);
+	} else {
+		$string=$_REQUEST['string'];
+	}
+    // redo possible magic quotes
+    $string = $wb->strip_slashes($string);
+    $string = preg_replace('/\s+/', ' ', $string);
+    $string = trim($string);
+	// remove some bad chars
+	$string = str_replace ( array('[[',']]'),'', $string);
+	$string = preg_replace('/(^|\s+)[|.]+(?=\s+|$)/', '', $string);
+	$search_display_string = htmlspecialchars($string);
+	// convert string to utf-8
+	$string = entities_to_umlauts($string, 'UTF-8');
+	$search_url_string = $string;
+	$search_entities_string = addslashes(htmlentities($string, ENT_COMPAT, 'UTF-8'));
+	// mySQL needs four backslashes to match one in LIKE comparisons)
+	$search_entities_string = str_replace('\\\\', '\\\\\\\\', $search_entities_string);
+	$string = preg_quote($string);
+	// quote ' " and /  -we need quoted / for regex
+	$search_normal_string = str_replace(array('\'','"','/'), array('\\\'','\"','\/'), $string);
+}
+// make arrays from the search_..._strings above
+if($match == 'exact')
+	$search_url_array[] = $search_url_string;
+else
+	$search_url_array = explode(' ', $search_url_string);
+$search_normal_array = array();
+$search_entities_array = array();
+if($match == 'exact') {
+	$search_normal_array[]=$search_normal_string;
+	$search_entities_array[]=$search_entities_string;
+} else {
+	$exploded_string = explode(' ', $search_normal_string);
+	// Make sure there is no blank values in the array
+	foreach($exploded_string AS $each_exploded_string) {
+		if($each_exploded_string != '') {
+			$search_normal_array[] = $each_exploded_string;
+		}
+	}
+	$exploded_string = explode(' ', $search_entities_string);
+	// Make sure there is no blank values in the array
+	foreach($exploded_string AS $each_exploded_string) {
+		if($each_exploded_string != '') {
+			$search_entities_array[] = $each_exploded_string;
+		}
+	}
+}
+// make an extra copy of search_normal_array for use in regex
+$search_words = array();
+require_once(WB_PATH.'/search/search_convert.php');
+global $search_table_umlauts_local;
+require_once(WB_PATH.'/search/search_convert_ul.php');
+global $search_table_ul_umlauts;
+foreach($search_normal_array AS $str) {
+	$str = strtr($str, $search_table_umlauts_local);
+	$str = strtr($str, $search_table_ul_umlauts);
+	$search_words[] = $str;
+}
+
+// Work-out what to do (match all words, any words, or do exact match), and do relevant with query settings
+$all_checked = '';
+$any_checked = '';
+$exact_checked = '';
+if ($match == 'any') {
+	$any_checked = ' checked="checked"';
+	$logical_operator = ' OR';
+} elseif($match == 'all') {
+	$all_checked = ' checked="checked"';
+	$logical_operator = ' AND';
+} else {
+	$exact_checked = ' checked="checked"';
+}
+
+// Replace vars in search settings with values
+$vars = array('[SEARCH_STRING]', '[WB_URL]', '[PAGE_EXTENSION]', '[TEXT_RESULTS_FOR]');
+$values = array($search_display_string, WB_URL, PAGE_EXTENSION, $TEXT['RESULTS_FOR']);
+$search_footer = str_replace($vars, $values, ($fetch_footer['value']));
+$search_results_header = str_replace($vars, $values, ($fetch_results_header['value']));
+$search_results_footer = str_replace($vars, $values, ($fetch_results_footer['value']));
+
+// Do extra vars/values replacement
+$vars = array('[SEARCH_STRING]', '[WB_URL]', '[PAGE_EXTENSION]', '[TEXT_SEARCH]', '[TEXT_ALL_WORDS]', '[TEXT_ANY_WORDS]', '[TEXT_EXACT_MATCH]', '[TEXT_MATCH]', '[TEXT_MATCHING]', '[ALL_CHECKED]', '[ANY_CHECKED]', '[EXACT_CHECKED]', '[REFERRER_ID]', '[SEARCH_PATH]');
+$values = array($search_display_string, WB_URL, PAGE_EXTENSION, $TEXT['SEARCH'], $TEXT['ALL_WORDS'], $TEXT['ANY_WORDS'], $TEXT['EXACT_MATCH'], $TEXT['MATCH'], $TEXT['MATCHING'], $all_checked, $any_checked, $exact_checked, REFERRER_ID, $search_path);
+$search_header = str_replace($vars, $values, ($fetch_header['value']));
+$vars = array('[TEXT_NO_RESULTS]');
+$values = array($TEXT['NO_RESULTS']);
+$search_no_results = str_replace($vars, $values, ($fetch_no_results['value']));
+
+/*
+ * Start of output
+ */
+
+// Show search header
+echo $search_header;
+// Show search results_header
+echo $search_results_header;
+
+// Work-out if the user has already entered their details or not
+if($search_normal_string != '') {
+
+	// Get modules
+	$table = TABLE_PREFIX."sections";
+	$get_modules = $database->query("SELECT DISTINCT module FROM $table WHERE module != '' ");
+	$modules = array();
+	if($get_modules->numRows() > 0) {
+		while($module = $get_modules->fetchRow()) {
+			$modules[] = $module['module'];
+		}
+	}
+	// sort module search-order
+	// get the modules from $search_module_order first ...
+	$sorted_modules = array();
+	$m = count($modules);
+	$search_modules = explode(',', $search_module_order);
+	foreach($search_modules AS $item) {
+		$item = trim($item);
+		for($i=0; $i < $m; $i++) {
+			if(isset($modules[$i]) && $modules[$i] == $item) {
+				$sorted_modules[] = $modules[$i];
+				unset($modules[$i]);
+				break;
+			}
+		}
+	}
+	// ... then add the rest
+	foreach($modules AS $item) {
+		$sorted_modules[] = $item;
+	}
+
+
+	// Use the module's search-extensions.
+	// This is somewhat slower than the orginial method.
+	// call $search_funcs['__before'] first
+	$search_func_vars = array(
+		'database' => $database, // database-handle
+		'page_id' => 0,
+		'section_id' => 0,
+		'page_title' => '',
+		'page_menu_title' => '',
+		'page_description' => '',
+		'page_keywords' => '',
+		'page_link' => '',
+		'page_modified_when' => 0,
+		'page_modified_by' => 0,
+		'users' => $users, // array of known user-id/user-name
+		'search_words' => $search_words, // array of strings, prepared for regex
+		'search_match' => $match, // match-type
+		'search_url_array' => $search_url_array, // array of strings from the original search-string. ATTN: strings are not quoted!
+		'search_entities_array' => $search_entities_array, // entities
+		'results_loop_string' => $fetch_results_loop['value'],
+		'default_max_excerpt' => $search_max_excerpt,
+		'time_limit' => $search_time_limit, // time-limit in secs
+		'search_path' => $search_path // see docu
+	);
+	foreach($search_funcs['__before'] as $func) {
+		$uf_res = call_user_func($func, $search_func_vars);
+	}
+	// now call module-based $search_funcs[]
+	$seen_pages = array(); // seen pages per module.
+	$pages_listed = array(); // seen pages.
+	if($search_max_excerpt!=0) { // skip this search if $search_max_excerpt==0
+		foreach($sorted_modules AS $module_name) {
+			$start_time = time();	// get start-time to check time-limit; not very accurate, but ok
+			$seen_pages[$module_name] = array();
+			if(!isset($search_funcs[$module_name])) {
+				continue; // there is no search_func for this module
+			}
+			// get each section for $module_name
+			$table_s = TABLE_PREFIX."sections";	
+			$table_p = TABLE_PREFIX."pages";
+			$sections_query = $database->query("
+				SELECT s.section_id, s.page_id, s.module, s.publ_start, s.publ_end,
+							 p.page_title, p.menu_title, p.link, p.description, p.keywords, p.modified_when, p.modified_by,
+							 p.visibility, p.viewing_groups, p.viewing_users
+				FROM $table_s AS s INNER JOIN $table_p AS p ON s.page_id = p.page_id
+				WHERE s.module = '$module_name' AND p.visibility NOT IN ('none','deleted') AND p.searching = '1' $search_path_SQL $search_language_SQL
+				ORDER BY s.page_id, s.position ASC
+			");
+			if($sections_query->numRows() > 0) {
+				while($res = $sections_query->fetchRow()) {
+					// check if time-limit is exceeded for this module
+					if($search_time_limit > 0 && (time()-$start_time > $search_time_limit)) {
+						break;
+					}
+					// Only show this section if it is not "out of publication-date"
+					$now = time();
+					if( !( $now<$res['publ_end'] && ($now>$res['publ_start'] || $res['publ_start']==0) ||
+						$now>$res['publ_start'] && $res['publ_end']==0) ) {
+						continue;
+					}
+					$search_func_vars = array(
+						'database' => $database,
+						'page_id' => $res['page_id'],
+						'section_id' => $res['section_id'],
+						'page_title' => $res['page_title'],
+						'page_menu_title' => $res['menu_title'],
+						'page_description' => ($cfg_show_description?$res['description']:""),
+						'page_keywords' => $res['keywords'],
+						'page_link' => $res['link'],
+						'page_modified_when' => $res['modified_when'],
+						'page_modified_by' => $res['modified_by'],
+						'users' => $users,
+						'search_words' => $search_words, // needed for preg_match
+						'search_match' => $match,
+						'search_url_array' => $search_url_array, // needed for url-string only
+						'search_entities_array' => $search_entities_array, // entities
+						'results_loop_string' => $fetch_results_loop['value'],
+						'default_max_excerpt' => $search_max_excerpt,
+						'enable_flush' => $cfg_enable_flush,
+						'time_limit' => $search_time_limit // time-limit in secs
+					);
+					// Only show this page if we are allowed to see it
+					if($admin->page_is_visible($res) == false) {
+						if($res['visibility'] == 'registered') { // don't show excerpt
+							$search_func_vars['default_max_excerpt'] = 0;
+							$search_func_vars['page_description'] = $TEXT['REGISTERED'];
+						} else { // private
+							continue;
+						}
+					}
+					$uf_res = call_user_func($search_funcs[$module_name], $search_func_vars);
+					if($uf_res) {
+						$pages_listed[$res['page_id']] = true;
+						$seen_pages[$module_name][$res['page_id']] = true;
+					} else {
+						$seen_pages[$module_name][$res['page_id']] = true;
+					}
+				}
+			}
+		}
+	}
+	// now call $search_funcs['__after']
+	$search_func_vars = array(
+		'database' => $database, // database-handle
+		'page_id' => 0,
+		'section_id' => 0,
+		'page_title' => '',
+		'page_menu_title' => '',
+		'page_description' => '',
+		'page_keywords' => '',
+		'page_link' => '',
+		'page_modified_when' => 0,
+		'page_modified_by' => 0,
+		'users' => $users, // array of known user-id/user-name
+		'search_words' => $search_words, // array of strings, prepared for regex
+		'search_match' => $match, // match-type
+		'search_url_array' => $search_url_array, // array of strings from the original search-string. ATTN: strings are not quoted!
+		'search_entities_array' => $search_entities_array, // entities
+		'results_loop_string' => $fetch_results_loop['value'],
+		'default_max_excerpt' => $search_max_excerpt,
+		'time_limit' => $search_time_limit, // time-limit in secs
+		'search_path' => $search_path // see docu
+	);
+	foreach($search_funcs['__after'] as $func) {
+		$uf_res = call_user_func($func, $search_func_vars);
+	}
+
+
+	// Search page details only, such as description, keywords, etc, but only of unseen pages.
+	$max_excerpt_num = 0; // we don't want excerpt here
+	$divider = ".";
+	$table = TABLE_PREFIX."pages";
+	$query_pages = $database->query("
+		SELECT page_id, page_title, menu_title, link, description, keywords, modified_when, modified_by,
+		       visibility, viewing_groups, viewing_users
+		FROM $table
+		WHERE visibility NOT IN ('none','deleted') AND searching = '1' $search_path_SQL $search_language_SQL
+	");
+	if($query_pages->numRows() > 0) {
+		while($page = $query_pages->fetchRow()) {
+			if (isset($pages_listed[$page['page_id']])) {
+				continue;
+			}
+			$func_vars = array(
+				'database' => $database,
+				'page_id' => $page['page_id'],
+				'page_title' => $page['page_title'],
+				'page_menu_title' => $page['menu_title'],
+				'page_description' => ($cfg_show_description?$page['description']:""),
+				'page_keywords' => $page['keywords'],
+				'page_link' => $page['link'],
+				'page_modified_when' => $page['modified_when'],
+				'page_modified_by' => $page['modified_by'],
+				'users' => $users,
+				'search_words' => $search_words, // needed for preg_match_all
+				'search_match' => $match,
+				'search_url_array' => $search_url_array, // needed for url-string only
+				'search_entities_array' => $search_entities_array, // entities
+				'results_loop_string' => $fetch_results_loop['value'],
+				'default_max_excerpt' => $max_excerpt_num,
+				'enable_flush' => $cfg_enable_flush
+			);
+			// Only show this page if we are allowed to see it
+			if($admin->page_is_visible($page) == false) {
+				if($page['visibility'] != 'registered') {
+					continue;
+				} else { // page: registered, user: access denied
+					$func_vars['page_description'] = $TEXT['REGISTERED'];
+				}
+			}
+			if($admin->page_is_active($page) == false) {
+				continue;
+			}
+			$text = $func_vars['page_title'].$divider
+				.$func_vars['page_menu_title'].$divider
+				.($cfg_search_description?$func_vars['page_description']:"").$divider
+				.($cfg_search_keywords?$func_vars['page_keywords']:"").$divider;
+			$mod_vars = array(
+				'page_link' => $func_vars['page_link'],
+				'page_link_target' => "",
+				'page_title' => $func_vars['page_title'],
+				'page_description' => $func_vars['page_description'],
+				'page_modified_when' => $func_vars['page_modified_when'],
+				'page_modified_by' => $func_vars['page_modified_by'],
+				'text' => $text,
+				'max_excerpt_num' => $func_vars['default_max_excerpt']
+			);
+			if(print_excerpt2($mod_vars, $func_vars)) {
+				$pages_listed[$page['page_id']] = true;
+			}
+		}
+	}
+
+	// Now use the old method for pages not displayed by the new method above
+	// in case someone has old modules without search.php.
+
+	// Get modules
+	$table_search = TABLE_PREFIX."search";
+	$table_sections = TABLE_PREFIX."sections";
+	$get_modules = $database->query("
+		SELECT DISTINCT s.value, s.extra
+		FROM $table_search AS s INNER JOIN $table_sections AS sec
+			ON s.value = sec.module
+		WHERE s.name = 'module'
+	");
+	$modules = array();
+	if($get_modules->numRows() > 0) {
+		while($module = $get_modules->fetchRow()) {
+			$modules[] = $module; // $modules in an array of arrays
+		}
+	}
+	// sort module search-order
+	// get the modules from $search_module_order first ...
+	$sorted_modules = array();
+	$m = count($modules);
+	$search_modules = explode(',', $search_module_order);
+	foreach($search_modules AS $item) {
+		$item = trim($item);
+		for($i=0; $i < $m; $i++) {
+			if(isset($modules[$i]) && $modules[$i]['value'] == $item) {
+				$sorted_modules[] = $modules[$i];
+				unset($modules[$i]);
+				break;
+			}
+		}
+	}
+	// ... then add the rest
+	foreach($modules AS $item) {
+		$sorted_modules[] = $item;
+	}
+
+	if($cfg_enable_old_search) { // this is the old (wb <= 2.6.7) search-function
+		$search_path_SQL = str_replace(' link ', ' '.TABLE_PREFIX.'pages.link ', $search_path_SQL);
+		foreach($sorted_modules AS $module) {
+			if(isset($seen_pages[$module['value']]) && count($seen_pages[$module['value']])>0) // skip modules handled by new search-func
+				continue;
+			$query_start = '';
+			$query_body = '';
+			$query_end = '';
+			$prepared_query = '';
+			// Get module name
+			$module_name = $module['value'];
+			if(!isset($seen_pages[$module_name])) {
+				$seen_pages[$module_name]=array();
+			}
+			// skip module 'code' - it doesn't make sense to search in a code section
+			if($module_name=="code")
+				continue;
+			// Get fields to use for title, link, etc.
+			$fields = unserialize($module['extra']);
+			// Get query start
+			$get_query_start = $database->query("SELECT value FROM ".TABLE_PREFIX."search WHERE name = 'query_start' AND extra = '$module_name' LIMIT 1");
+			if($get_query_start->numRows() > 0) {
+				// Fetch query start
+				$fetch_query_start = $get_query_start->fetchRow();
+				// Prepare query start for execution by replacing {TP} with the TABLE_PREFIX
+				$query_start = str_replace('[TP]', TABLE_PREFIX, ($fetch_query_start['value']));
+			}
+			// Get query end
+			$get_query_end = $database->query("SELECT value FROM ".TABLE_PREFIX."search WHERE name = 'query_end' AND extra = '$module_name' LIMIT 1");
+			if($get_query_end->numRows() > 0) {
+				// Fetch query end
+				$fetch_query_end = $get_query_end->fetchRow();
+				// Set query end
+				$query_end = ($fetch_query_end['value']);
+			}
+			// Get query body
+			$get_query_body = $database->query("SELECT value FROM ".TABLE_PREFIX."search WHERE name = 'query_body' AND extra = '$module_name' LIMIT 1");
+			if($get_query_body->numRows() > 0) {
+				// Fetch query body
+				$fetch_query_body = $get_query_body->fetchRow();
+				// Prepare query body for execution by replacing {STRING} with the correct one
+				$query_body = str_replace(array('[TP]','[O]','[W]'), array(TABLE_PREFIX,'LIKE','%'), ($fetch_query_body['value']));
+				// Loop through query body for each string, then combine with start and end
+				$prepared_query = $query_start." ( ( ( ";
+				$count = 0;
+				foreach($search_normal_array AS $string) {
+					if($count != 0) {
+						$prepared_query .= " ) ".$logical_operator." ( ";
+					}
+					$prepared_query .= str_replace('[STRING]', $string, $query_body);
+					$count = $count+1;
+				}
+				$count=0;
+				$prepared_query .= ' ) ) OR ( ( ';
+				foreach($search_entities_array AS $string) {
+					if($count != 0) {
+						$prepared_query .= " ) ".$logical_operator." ( ";
+					}
+					$prepared_query .= str_replace('[STRING]', $string, $query_body);
+					$count = $count+1;
+				}
+				$prepared_query .= " ) ) ) ".$query_end;
+				// Execute query
+				$page_query = $database->query($prepared_query." ".$search_path_SQL." ".$search_language_SQL_t);
+				if(!$page_query) continue; // on error, skip the rest of the current loop iteration
+				// Loop through queried items
+				if($page_query->numRows() > 0) {
+					while($page = $page_query->fetchRow()) {
+						// Only show this page if it hasn't already been listed
+						if(isset($seen_pages[$module_name][$page['page_id']]) || isset($pages_listed[$page['page_id']])) {
+							continue;
+						}
+						
+						// don't list pages with visibility == none|deleted and check if user is allowed to see the page
+						$p_table = TABLE_PREFIX."pages";
+						$viewquery = $database->query("
+							SELECT visibility, viewing_groups, viewing_users
+							FROM $p_table
+							WHERE page_id='{$page['page_id']}'
+						");
+						$visibility = 'none'; $viewing_groups="" ; $viewing_users="";
+						if($viewquery->numRows() > 0) {
+							if($res = $viewquery->fetchRow()) {
+								$visibility = $res['visibility'];
+								$viewing_groups = $res['viewing_groups'];
+								$viewing_users = $res['viewing_users'];
+								if($visibility == 'deleted' || $visibility == 'none') {
+									continue;
+								}
+								if($visibility == 'private') {
+									if($admin->page_is_visible(array(
+										'page_id'=>$page[$fields['page_id']],
+										'visibility' =>$visibility,
+										'viewing_groups'=>$viewing_groups,
+										'viewing_users'=>$viewing_users
+									)) == false) {
+										continue;
+									}
+								}
+								if($admin->page_is_active(array('page_id'=>$page[$fields['page_id']]))==false) {
+									continue;
+								}
+							}
+						}
+	
+						// Get page link
+						$link = page_link($page['link']);
+						// Add search string for highlighting
+						if ($match!='exact') {
+							$sstring = implode(" ", $search_normal_array);
+							$link = $link."?searchresult=1&amp;sstring=".urlencode($sstring);
+						} else {
+							$sstring = str_replace(" ", "_",$search_normal_array[0]);
+							$link = $link."?searchresult=2&amp;sstring=".urlencode($sstring);
+						}
+						// Set vars to be replaced by values
+						if(!isset($page['description'])) { $page['description'] = ""; }
+						if(!isset($page['modified_when'])) { $page['modified_when'] = 0; }
+						if(!isset($page['modified_by'])) { $page['modified_by'] = 0; }
+						$vars = array('[LINK]', '[TITLE]', '[DESCRIPTION]', '[USERNAME]','[DISPLAY_NAME]','[DATE]','[TIME]','[TEXT_LAST_UPDATED_BY]','[TEXT_ON]','[EXCERPT]');
+						if($page['modified_when'] > 0) {
+							$date = gmdate(DATE_FORMAT, $page['modified_when']+TIMEZONE);
+							$time = gmdate(TIME_FORMAT, $page['modified_when']+TIMEZONE);
+						} else {
+							$date = $TEXT['UNKNOWN'].' '.$TEXT['DATE'];
+							$time = $TEXT['UNKNOWN'].' '.$TEXT['TIME'];
+						}
+						$excerpt="";
+						if($cfg_show_description == 0) {
+							$page['description'] = "";
+						}
+						$values = array($link, $page['page_title'], $page['description'], $users[$page['modified_by']]['username'], $users[$page['modified_by']]['display_name'], $date, $time, $TEXT['LAST_UPDATED_BY'], strtolower($TEXT['ON']), $excerpt);
+						// Show loop code with vars replaced by values
+						echo str_replace($vars, $values, ($fetch_results_loop['value']));
+						// Say that this page has been listed
+						$seen_pages[$module_name][$page['page_id']] = true;
+						$pages_listed[$page['page_id']] = true;
+					}
+				}
+			}
+		}
+	}
+
+	// Say no items found if we should
+	if(count($pages_listed) == 0) {
+		echo $search_no_results;
+	}
+} else {
+	echo $search_no_results;
+}
+
+// Show search results_footer
+echo $search_results_footer;
+// Show search footer
+echo $search_footer;
+
+?>

Property changes on: tags/2.8.3/wb/search/search.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/search/search_convert.php
===================================================================
--- tags/2.8.3/wb/search/search_convert.php	(nonexistent)
+++ tags/2.8.3/wb/search/search_convert.php	(revision 1610)
@@ -0,0 +1,110 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         search
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+/*
+	ATTN: to include your local changes DO NOT alter this file!
+	Instead, create your own local file search_convert_local.php
+	which will stay intact even after upgrading Website Baker.
+
+	--Example search_convert_local.php --------------------------
+	// allows the user to enter Krasic to find Krašić
+	$t["s"]  = array("š","s");
+	$t["S"]  = array("Š","S");
+	$t["c"]  = array("ć","c");
+	$t["C"]  = array("Ć","C");
+	...
+	--END -------------------------------------------------------
+*/
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+if(!isset($search_lang)) $search_lang = LANGUAGE;
+$t = array();
+
+/*
+	ATTN:
+	This file MUST be UTF-8-encoded
+*/
+// test encoding
+if('á'!="\xc3\xa1") {
+	trigger_error('Wrong encoding for file search_convert.php!', E_USER_NOTICE);
+	return;
+}
+
+// local german settings
+if($search_lang=='DE') { // add special handling for german umlauts (ä==ae, ...)
+	// in german the character 'ß' may be written as 'ss', too. So for each 'ß' look for ('ß' OR 'ss')
+	$t["ß"]  = array("ß" ,"ss"); // german SZ-Ligatur
+	$t["ä"]  = array("ä" ,"ae"); // german ae
+	$t["ö"]  = array("ö" ,"oe"); // german oe
+	$t["ü"]  = array("ü" ,"ue"); // german ue
+	// the search itself is case-insensitiv, but strtr() (which is used to convert the search-string) isn't,
+	// so we have to supply upper-case characters, too!
+	$t["Ä"]  = array("Ä" ,"Ae"); // german Ae
+	$t["Ö"]  = array("Ö" ,"Oe"); // german Oe
+	$t["Ü"]  = array("Ü" ,"Ue"); // german Ue
+	// and for each 'ss' look for ('ß' OR 'ss'), too
+	$t["ss"] = array("ß" ,"ss"); // german SZ-Ligatur
+	$t["ae"] = array("ä" ,"ae"); // german ae
+	$t["oe"] = array("ö" ,"oe"); // german oe
+	$t["ue"] = array("ü" ,"ue"); // german ue
+	$t["Ae"] = array("Ä" ,"Ae"); // german Ae
+	$t["Oe"] = array("Ö" ,"Oe"); // german Oe
+	$t["Ue"] = array("Ü" ,"Ue"); // german Ue
+}
+
+// local Turkish settings
+if($search_lang=='TR') { // add special i/I-handling for Turkish
+	$t["i"] = array("i", "İ");
+	$t["I"] = array("I", "ı");
+}
+
+// include user-supplied file
+if(file_exists(WB_PATH.'/search/search_convert_local.php'))
+	include(WB_PATH.'/search/search_convert_local.php');
+
+// create arrays
+global $search_table_umlauts_local;
+$search_table_umlauts_local = array();
+foreach($t as $o=>$a) {
+	$alt = '';
+	if(empty($o) || empty($a) || !is_array($a)) continue;
+	foreach($a as $c) {
+		if(empty($c)) continue;
+		$alt .= preg_quote($c,'/').'|';
+	}
+	$alt = rtrim($alt, '|');
+	$search_table_umlauts_local[$o] = "($alt)";
+}
+// create array for use with frontent.functions.php (highlighting)
+$string_ul_umlaut = array_keys($search_table_umlauts_local);
+$string_ul_regex = array_values($search_table_umlauts_local);
+
+
+global $search_table_sql_local;
+$search_table_sql_local = array();
+foreach($t as $o=>$a) {
+	if(empty($o) || empty($a) || !is_array($a)) continue;
+	$i = 0;
+	foreach($a as $c) {
+		if(empty($c)) continue;
+		if($o==$c) { $i++; continue; }
+		$search_table_sql_local[$i++][$o] = $c;
+	}
+}
+

Property changes on: tags/2.8.3/wb/search/search_convert.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/search/search_convert_ul.php
===================================================================
--- tags/2.8.3/wb/search/search_convert_ul.php	(nonexistent)
+++ tags/2.8.3/wb/search/search_convert_ul.php	(revision 1610)
@@ -0,0 +1,1465 @@
+<?php
+
+// $Id$
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+/*
+Character Conversion file
+for search-/highlighting-related character-translations
+*/
+
+if(!defined('WB_URL')) {
+	header('Location: ../index.php');
+	exit(0);
+}
+
+//umlauts to '(upper|lower)'
+//as work-around for WB's "missing-SET-NAMES-issue"
+global $search_table_ul_umlauts;
+$search_table_ul_umlauts = array(
+	"\xc2\xb5" => "(\xc2\xb5|\xce\x9c)",
+	"\xc3\x9f" => "(\xc3\x9f|SS|ss)",
+	"\xc3\xa0" => "(\xc3\xa0|\xc3\x80)",
+	"\xc3\xa1" => "(\xc3\xa1|\xc3\x81)",
+	"\xc3\xa2" => "(\xc3\xa2|\xc3\x82)",
+	"\xc3\xa3" => "(\xc3\xa3|\xc3\x83)",
+	"\xc3\xa4" => "(\xc3\xa4|\xc3\x84)",
+	"\xc3\xa5" => "(\xc3\xa5|\xc3\x85|\xe2\x84\xab)",
+	"\xc3\xa6" => "(\xc3\xa6|\xc3\x86)",
+	"\xc3\xa7" => "(\xc3\xa7|\xc3\x87)",
+	"\xc3\xa8" => "(\xc3\xa8|\xc3\x88)",
+	"\xc3\xa9" => "(\xc3\xa9|\xc3\x89)",
+	"\xc3\xaa" => "(\xc3\xaa|\xc3\x8a)",
+	"\xc3\xab" => "(\xc3\xab|\xc3\x8b)",
+	"\xc3\xac" => "(\xc3\xac|\xc3\x8c)",
+	"\xc3\xad" => "(\xc3\xad|\xc3\x8d)",
+	"\xc3\xae" => "(\xc3\xae|\xc3\x8e)",
+	"\xc3\xaf" => "(\xc3\xaf|\xc3\x8f)",
+	"\xc3\xb0" => "(\xc3\xb0|\xc3\x90)",
+	"\xc3\xb1" => "(\xc3\xb1|\xc3\x91)",
+	"\xc3\xb2" => "(\xc3\xb2|\xc3\x92)",
+	"\xc3\xb3" => "(\xc3\xb3|\xc3\x93)",
+	"\xc3\xb4" => "(\xc3\xb4|\xc3\x94)",
+	"\xc3\xb5" => "(\xc3\xb5|\xc3\x95)",
+	"\xc3\xb6" => "(\xc3\xb6|\xc3\x96)",
+	"\xc3\xb8" => "(\xc3\xb8|\xc3\x98)",
+	"\xc3\xb9" => "(\xc3\xb9|\xc3\x99)",
+	"\xc3\xba" => "(\xc3\xba|\xc3\x9a)",
+	"\xc3\xbb" => "(\xc3\xbb|\xc3\x9b)",
+	"\xc3\xbc" => "(\xc3\xbc|\xc3\x9c)",
+	"\xc3\xbd" => "(\xc3\xbd|\xc3\x9d)",
+	"\xc3\xbe" => "(\xc3\xbe|\xc3\x9e)",
+	"\xc3\xbf" => "(\xc3\xbf|\xc5\xb8)",
+	"\xc4\x81" => "(\xc4\x81|\xc4\x80)",
+	"\xc4\x83" => "(\xc4\x83|\xc4\x82)",
+	"\xc4\x85" => "(\xc4\x85|\xc4\x84)",
+	"\xc4\x87" => "(\xc4\x87|\xc4\x86)",
+	"\xc4\x89" => "(\xc4\x89|\xc4\x88)",
+	"\xc4\x8b" => "(\xc4\x8b|\xc4\x8a)",
+	"\xc4\x8d" => "(\xc4\x8d|\xc4\x8c)",
+	"\xc4\x8f" => "(\xc4\x8f|\xc4\x8e)",
+	"\xc4\x91" => "(\xc4\x91|\xc4\x90)",
+	"\xc4\x93" => "(\xc4\x93|\xc4\x92)",
+	"\xc4\x95" => "(\xc4\x95|\xc4\x94)",
+	"\xc4\x97" => "(\xc4\x97|\xc4\x96)",
+	"\xc4\x99" => "(\xc4\x99|\xc4\x98)",
+	"\xc4\x9b" => "(\xc4\x9b|\xc4\x9a)",
+	"\xc4\x9d" => "(\xc4\x9d|\xc4\x9c)",
+	"\xc4\x9f" => "(\xc4\x9f|\xc4\x9e)",
+	"\xc4\xa1" => "(\xc4\xa1|\xc4\xa0)",
+	"\xc4\xa3" => "(\xc4\xa3|\xc4\xa2)",
+	"\xc4\xa5" => "(\xc4\xa5|\xc4\xa4)",
+	"\xc4\xa7" => "(\xc4\xa7|\xc4\xa6)",
+	"\xc4\xa9" => "(\xc4\xa9|\xc4\xa8)",
+	"\xc4\xab" => "(\xc4\xab|\xc4\xaa)",
+	"\xc4\xad" => "(\xc4\xad|\xc4\xac)",
+	"\xc4\xaf" => "(\xc4\xaf|\xc4\xae)",
+	"\xc4\xb1" => "(\xc4\xb1|I)",
+	"\xc4\xb3" => "(\xc4\xb3|\xc4\xb2)",
+	"\xc4\xb5" => "(\xc4\xb5|\xc4\xb4)",
+	"\xc4\xb7" => "(\xc4\xb7|\xc4\xb6)",
+	"\xc4\xba" => "(\xc4\xba|\xc4\xb9)",
+	"\xc4\xbc" => "(\xc4\xbc|\xc4\xbb)",
+	"\xc4\xbe" => "(\xc4\xbe|\xc4\xbd)",
+	"\xc5\x80" => "(\xc5\x80|\xc4\xbf)",
+	"\xc5\x82" => "(\xc5\x82|\xc5\x81)",
+	"\xc5\x84" => "(\xc5\x84|\xc5\x83)",
+	"\xc5\x86" => "(\xc5\x86|\xc5\x85)",
+	"\xc5\x88" => "(\xc5\x88|\xc5\x87)",
+	"\xc5\x8b" => "(\xc5\x8b|\xc5\x8a)",
+	"\xc5\x8d" => "(\xc5\x8d|\xc5\x8c)",
+	"\xc5\x8f" => "(\xc5\x8f|\xc5\x8e)",
+	"\xc5\x91" => "(\xc5\x91|\xc5\x90)",
+	"\xc5\x93" => "(\xc5\x93|\xc5\x92)",
+	"\xc5\x95" => "(\xc5\x95|\xc5\x94)",
+	"\xc5\x97" => "(\xc5\x97|\xc5\x96)",
+	"\xc5\x99" => "(\xc5\x99|\xc5\x98)",
+	"\xc5\x9b" => "(\xc5\x9b|\xc5\x9a)",
+	"\xc5\x9d" => "(\xc5\x9d|\xc5\x9c)",
+	"\xc5\x9f" => "(\xc5\x9f|\xc5\x9e)",
+	"\xc5\xa1" => "(\xc5\xa1|\xc5\xa0)",
+	"\xc5\xa3" => "(\xc5\xa3|\xc5\xa2)",
+	"\xc5\xa5" => "(\xc5\xa5|\xc5\xa4)",
+	"\xc5\xa7" => "(\xc5\xa7|\xc5\xa6)",
+	"\xc5\xa9" => "(\xc5\xa9|\xc5\xa8)",
+	"\xc5\xab" => "(\xc5\xab|\xc5\xaa)",
+	"\xc5\xad" => "(\xc5\xad|\xc5\xac)",
+	"\xc5\xaf" => "(\xc5\xaf|\xc5\xae)",
+	"\xc5\xb1" => "(\xc5\xb1|\xc5\xb0)",
+	"\xc5\xb3" => "(\xc5\xb3|\xc5\xb2)",
+	"\xc5\xb5" => "(\xc5\xb5|\xc5\xb4)",
+	"\xc5\xb7" => "(\xc5\xb7|\xc5\xb6)",
+	"\xc5\xba" => "(\xc5\xba|\xc5\xb9)",
+	"\xc5\xbc" => "(\xc5\xbc|\xc5\xbb)",
+	"\xc5\xbe" => "(\xc5\xbe|\xc5\xbd)",
+	"\xc5\xbf" => "(\xc5\xbf|S)",
+	"\xc6\x83" => "(\xc6\x83|\xc6\x82)",
+	"\xc6\x85" => "(\xc6\x85|\xc6\x84)",
+	"\xc6\x88" => "(\xc6\x88|\xc6\x87)",
+	"\xc6\x8c" => "(\xc6\x8c|\xc6\x8b)",
+	"\xc6\x92" => "(\xc6\x92|\xc6\x91)",
+	"\xc6\x95" => "(\xc6\x95|\xc7\xb6)",
+	"\xc6\x99" => "(\xc6\x99|\xc6\x98)",
+	"\xc6\xa1" => "(\xc6\xa1|\xc6\xa0)",
+	"\xc6\xa3" => "(\xc6\xa3|\xc6\xa2)",
+	"\xc6\xa5" => "(\xc6\xa5|\xc6\xa4)",
+	"\xc6\xa8" => "(\xc6\xa8|\xc6\xa7)",
+	"\xc6\xad" => "(\xc6\xad|\xc6\xac)",
+	"\xc6\xb0" => "(\xc6\xb0|\xc6\xaf)",
+	"\xc6\xb4" => "(\xc6\xb4|\xc6\xb3)",
+	"\xc6\xb6" => "(\xc6\xb6|\xc6\xb5)",
+	"\xc6\xb9" => "(\xc6\xb9|\xc6\xb8)",
+	"\xc6\xbd" => "(\xc6\xbd|\xc6\xbc)",
+	"\xc6\xbf" => "(\xc6\xbf|\xc7\xb7)",
+	"\xc7\x86" => "(\xc7\x86|\xc7\x84|\xc7\x85)",
+	"\xc7\x89" => "(\xc7\x89|\xc7\x87|\xc7\x88)",
+	"\xc7\x8c" => "(\xc7\x8c|\xc7\x8a|\xc7\x8b)",
+	"\xc7\x8e" => "(\xc7\x8e|\xc7\x8d)",
+	"\xc7\x90" => "(\xc7\x90|\xc7\x8f)",
+	"\xc7\x92" => "(\xc7\x92|\xc7\x91)",
+	"\xc7\x94" => "(\xc7\x94|\xc7\x93)",
+	"\xc7\x96" => "(\xc7\x96|\xc7\x95)",
+	"\xc7\x98" => "(\xc7\x98|\xc7\x97)",
+	"\xc7\x9a" => "(\xc7\x9a|\xc7\x99)",
+	"\xc7\x9c" => "(\xc7\x9c|\xc7\x9b)",
+	"\xc7\x9d" => "(\xc7\x9d|\xc6\x8e)",
+	"\xc7\x9f" => "(\xc7\x9f|\xc7\x9e)",
+	"\xc7\xa1" => "(\xc7\xa1|\xc7\xa0)",
+	"\xc7\xa3" => "(\xc7\xa3|\xc7\xa2)",
+	"\xc7\xa5" => "(\xc7\xa5|\xc7\xa4)",
+	"\xc7\xa7" => "(\xc7\xa7|\xc7\xa6)",
+	"\xc7\xa9" => "(\xc7\xa9|\xc7\xa8)",
+	"\xc7\xab" => "(\xc7\xab|\xc7\xaa)",
+	"\xc7\xad" => "(\xc7\xad|\xc7\xac)",
+	"\xc7\xaf" => "(\xc7\xaf|\xc7\xae)",
+	"\xc7\xb2" => "(\xc7\xb2|\xc7\xb1|\xc7\xb3)",
+	"\xc7\xb3" => "(\xc7\xb3|\xc7\xb1|\xc7\xb2)",
+	"\xc7\xb5" => "(\xc7\xb5|\xc7\xb4)",
+	"\xc7\xb9" => "(\xc7\xb9|\xc7\xb8)",
+	"\xc7\xbb" => "(\xc7\xbb|\xc7\xba)",
+	"\xc7\xbd" => "(\xc7\xbd|\xc7\xbc)",
+	"\xc7\xbf" => "(\xc7\xbf|\xc7\xbe)",
+	"\xc8\x81" => "(\xc8\x81|\xc8\x80)",
+	"\xc8\x83" => "(\xc8\x83|\xc8\x82)",
+	"\xc8\x85" => "(\xc8\x85|\xc8\x84)",
+	"\xc8\x87" => "(\xc8\x87|\xc8\x86)",
+	"\xc8\x89" => "(\xc8\x89|\xc8\x88)",
+	"\xc8\x8b" => "(\xc8\x8b|\xc8\x8a)",
+	"\xc8\x8d" => "(\xc8\x8d|\xc8\x8c)",
+	"\xc8\x8f" => "(\xc8\x8f|\xc8\x8e)",
+	"\xc8\x91" => "(\xc8\x91|\xc8\x90)",
+	"\xc8\x93" => "(\xc8\x93|\xc8\x92)",
+	"\xc8\x95" => "(\xc8\x95|\xc8\x94)",
+	"\xc8\x97" => "(\xc8\x97|\xc8\x96)",
+	"\xc8\x99" => "(\xc8\x99|\xc8\x98)",
+	"\xc8\x9b" => "(\xc8\x9b|\xc8\x9a)",
+	"\xc8\x9d" => "(\xc8\x9d|\xc8\x9c)",
+	"\xc8\x9f" => "(\xc8\x9f|\xc8\x9e)",
+	"\xc8\xa3" => "(\xc8\xa3|\xc8\xa2)",
+	"\xc8\xa5" => "(\xc8\xa5|\xc8\xa4)",
+	"\xc8\xa7" => "(\xc8\xa7|\xc8\xa6)",
+	"\xc8\xa9" => "(\xc8\xa9|\xc8\xa8)",
+	"\xc8\xab" => "(\xc8\xab|\xc8\xaa)",
+	"\xc8\xad" => "(\xc8\xad|\xc8\xac)",
+	"\xc8\xaf" => "(\xc8\xaf|\xc8\xae)",
+	"\xc8\xb1" => "(\xc8\xb1|\xc8\xb0)",
+	"\xc8\xb3" => "(\xc8\xb3|\xc8\xb2)",
+	"\xc9\x93" => "(\xc9\x93|\xc6\x81)",
+	"\xc9\x94" => "(\xc9\x94|\xc6\x86)",
+	"\xc9\x96" => "(\xc9\x96|\xc6\x89)",
+	"\xc9\x97" => "(\xc9\x97|\xc6\x8a)",
+	"\xc9\x99" => "(\xc9\x99|\xc6\x8f)",
+	"\xc9\x9b" => "(\xc9\x9b|\xc6\x90)",
+	"\xc9\xa0" => "(\xc9\xa0|\xc6\x93)",
+	"\xc9\xa3" => "(\xc9\xa3|\xc6\x94)",
+	"\xc9\xa8" => "(\xc9\xa8|\xc6\x97)",
+	"\xc9\xa9" => "(\xc9\xa9|\xc6\x96)",
+	"\xc9\xaf" => "(\xc9\xaf|\xc6\x9c)",
+	"\xc9\xb2" => "(\xc9\xb2|\xc6\x9d)",
+	"\xc9\xb5" => "(\xc9\xb5|\xc6\x9f)",
+	"\xca\x80" => "(\xca\x80|\xc6\xa6)",
+	"\xca\x83" => "(\xca\x83|\xc6\xa9)",
+	"\xca\x88" => "(\xca\x88|\xc6\xae)",
+	"\xca\x8a" => "(\xca\x8a|\xc6\xb1)",
+	"\xca\x8b" => "(\xca\x8b|\xc6\xb2)",
+	"\xca\x92" => "(\xca\x92|\xc6\xb7)",
+	"\xcd\x85" => "(\xcd\x85|\xce\x99)",
+	"\xce\xac" => "(\xce\xac|\xce\x86)",
+	"\xce\xad" => "(\xce\xad|\xce\x88)",
+	"\xce\xae" => "(\xce\xae|\xce\x89)",
+	"\xce\xaf" => "(\xce\xaf|\xce\x8a)",
+	"\xce\xb1" => "(\xce\xb1|\xce\x91)",
+	"\xce\xb2" => "(\xce\xb2|\xce\x92)",
+	"\xce\xb3" => "(\xce\xb3|\xce\x93)",
+	"\xce\xb4" => "(\xce\xb4|\xce\x94)",
+	"\xce\xb5" => "(\xce\xb5|\xce\x95)",
+	"\xce\xb6" => "(\xce\xb6|\xce\x96)",
+	"\xce\xb7" => "(\xce\xb7|\xce\x97)",
+	"\xce\xb8" => "(\xce\xb8|\xce\x98|\xcf\xb4)",
+	"\xce\xb9" => "(\xce\xb9|\xce\x99)",
+	"\xce\xba" => "(\xce\xba|\xce\x9a)",
+	"\xce\xbb" => "(\xce\xbb|\xce\x9b)",
+	"\xce\xbc" => "(\xce\xbc|\xce\x9c)",
+	"\xce\xbd" => "(\xce\xbd|\xce\x9d)",
+	"\xce\xbe" => "(\xce\xbe|\xce\x9e)",
+	"\xce\xbf" => "(\xce\xbf|\xce\x9f)",
+	"\xcf\x80" => "(\xcf\x80|\xce\xa0)",
+	"\xcf\x81" => "(\xcf\x81|\xce\xa1)",
+	"\xcf\x82" => "(\xcf\x82|\xce\xa3)",
+	"\xcf\x83" => "(\xcf\x83|\xce\xa3)",
+	"\xcf\x84" => "(\xcf\x84|\xce\xa4)",
+	"\xcf\x85" => "(\xcf\x85|\xce\xa5)",
+	"\xcf\x86" => "(\xcf\x86|\xce\xa6)",
+	"\xcf\x87" => "(\xcf\x87|\xce\xa7)",
+	"\xcf\x88" => "(\xcf\x88|\xce\xa8)",
+	"\xcf\x89" => "(\xcf\x89|\xce\xa9|\xe2\x84\xa6)",
+	"\xcf\x8a" => "(\xcf\x8a|\xce\xaa)",
+	"\xcf\x8b" => "(\xcf\x8b|\xce\xab)",
+	"\xcf\x8c" => "(\xcf\x8c|\xce\x8c)",
+	"\xcf\x8d" => "(\xcf\x8d|\xce\x8e)",
+	"\xcf\x8e" => "(\xcf\x8e|\xce\x8f)",
+	"\xcf\x90" => "(\xcf\x90|\xce\x92)",
+	"\xcf\x91" => "(\xcf\x91|\xce\x98)",
+	"\xcf\x95" => "(\xcf\x95|\xce\xa6)",
+	"\xcf\x96" => "(\xcf\x96|\xce\xa0)",
+	"\xcf\x9b" => "(\xcf\x9b|\xcf\x9a)",
+	"\xcf\x9d" => "(\xcf\x9d|\xcf\x9c)",
+	"\xcf\x9f" => "(\xcf\x9f|\xcf\x9e)",
+	"\xcf\xa1" => "(\xcf\xa1|\xcf\xa0)",
+	"\xcf\xa3" => "(\xcf\xa3|\xcf\xa2)",
+	"\xcf\xa5" => "(\xcf\xa5|\xcf\xa4)",
+	"\xcf\xa7" => "(\xcf\xa7|\xcf\xa6)",
+	"\xcf\xa9" => "(\xcf\xa9|\xcf\xa8)",
+	"\xcf\xab" => "(\xcf\xab|\xcf\xaa)",
+	"\xcf\xad" => "(\xcf\xad|\xcf\xac)",
+	"\xcf\xaf" => "(\xcf\xaf|\xcf\xae)",
+	"\xcf\xb0" => "(\xcf\xb0|\xce\x9a)",
+	"\xcf\xb1" => "(\xcf\xb1|\xce\xa1)",
+	"\xcf\xb2" => "(\xcf\xb2|\xce\xa3)",
+	"\xcf\xb5" => "(\xcf\xb5|\xce\x95)",
+	"\xd0\xb0" => "(\xd0\xb0|\xd0\x90)",
+	"\xd0\xb1" => "(\xd0\xb1|\xd0\x91)",
+	"\xd0\xb2" => "(\xd0\xb2|\xd0\x92)",
+	"\xd0\xb3" => "(\xd0\xb3|\xd0\x93)",
+	"\xd0\xb4" => "(\xd0\xb4|\xd0\x94)",
+	"\xd0\xb5" => "(\xd0\xb5|\xd0\x95)",
+	"\xd0\xb6" => "(\xd0\xb6|\xd0\x96)",
+	"\xd0\xb7" => "(\xd0\xb7|\xd0\x97)",
+	"\xd0\xb8" => "(\xd0\xb8|\xd0\x98)",
+	"\xd0\xb9" => "(\xd0\xb9|\xd0\x99)",
+	"\xd0\xba" => "(\xd0\xba|\xd0\x9a)",
+	"\xd0\xbb" => "(\xd0\xbb|\xd0\x9b)",
+	"\xd0\xbc" => "(\xd0\xbc|\xd0\x9c)",
+	"\xd0\xbd" => "(\xd0\xbd|\xd0\x9d)",
+	"\xd0\xbe" => "(\xd0\xbe|\xd0\x9e)",
+	"\xd0\xbf" => "(\xd0\xbf|\xd0\x9f)",
+	"\xd1\x80" => "(\xd1\x80|\xd0\xa0)",
+	"\xd1\x81" => "(\xd1\x81|\xd0\xa1)",
+	"\xd1\x82" => "(\xd1\x82|\xd0\xa2)",
+	"\xd1\x83" => "(\xd1\x83|\xd0\xa3)",
+	"\xd1\x84" => "(\xd1\x84|\xd0\xa4)",
+	"\xd1\x85" => "(\xd1\x85|\xd0\xa5)",
+	"\xd1\x86" => "(\xd1\x86|\xd0\xa6)",
+	"\xd1\x87" => "(\xd1\x87|\xd0\xa7)",
+	"\xd1\x88" => "(\xd1\x88|\xd0\xa8)",
+	"\xd1\x89" => "(\xd1\x89|\xd0\xa9)",
+	"\xd1\x8a" => "(\xd1\x8a|\xd0\xaa)",
+	"\xd1\x8b" => "(\xd1\x8b|\xd0\xab)",
+	"\xd1\x8c" => "(\xd1\x8c|\xd0\xac)",
+	"\xd1\x8d" => "(\xd1\x8d|\xd0\xad)",
+	"\xd1\x8e" => "(\xd1\x8e|\xd0\xae)",
+	"\xd1\x8f" => "(\xd1\x8f|\xd0\xaf)",
+	"\xd1\x90" => "(\xd1\x90|\xd0\x80)",
+	"\xd1\x91" => "(\xd1\x91|\xd0\x81)",
+	"\xd1\x92" => "(\xd1\x92|\xd0\x82)",
+	"\xd1\x93" => "(\xd1\x93|\xd0\x83)",
+	"\xd1\x94" => "(\xd1\x94|\xd0\x84)",
+	"\xd1\x95" => "(\xd1\x95|\xd0\x85)",
+	"\xd1\x96" => "(\xd1\x96|\xd0\x86)",
+	"\xd1\x97" => "(\xd1\x97|\xd0\x87)",
+	"\xd1\x98" => "(\xd1\x98|\xd0\x88)",
+	"\xd1\x99" => "(\xd1\x99|\xd0\x89)",
+	"\xd1\x9a" => "(\xd1\x9a|\xd0\x8a)",
+	"\xd1\x9b" => "(\xd1\x9b|\xd0\x8b)",
+	"\xd1\x9c" => "(\xd1\x9c|\xd0\x8c)",
+	"\xd1\x9d" => "(\xd1\x9d|\xd0\x8d)",
+	"\xd1\x9e" => "(\xd1\x9e|\xd0\x8e)",
+	"\xd1\x9f" => "(\xd1\x9f|\xd0\x8f)",
+	"\xd1\xa1" => "(\xd1\xa1|\xd1\xa0)",
+	"\xd1\xa3" => "(\xd1\xa3|\xd1\xa2)",
+	"\xd1\xa5" => "(\xd1\xa5|\xd1\xa4)",
+	"\xd1\xa7" => "(\xd1\xa7|\xd1\xa6)",
+	"\xd1\xa9" => "(\xd1\xa9|\xd1\xa8)",
+	"\xd1\xab" => "(\xd1\xab|\xd1\xaa)",
+	"\xd1\xad" => "(\xd1\xad|\xd1\xac)",
+	"\xd1\xaf" => "(\xd1\xaf|\xd1\xae)",
+	"\xd1\xb1" => "(\xd1\xb1|\xd1\xb0)",
+	"\xd1\xb3" => "(\xd1\xb3|\xd1\xb2)",
+	"\xd1\xb5" => "(\xd1\xb5|\xd1\xb4)",
+	"\xd1\xb7" => "(\xd1\xb7|\xd1\xb6)",
+	"\xd1\xb9" => "(\xd1\xb9|\xd1\xb8)",
+	"\xd1\xbb" => "(\xd1\xbb|\xd1\xba)",
+	"\xd1\xbd" => "(\xd1\xbd|\xd1\xbc)",
+	"\xd1\xbf" => "(\xd1\xbf|\xd1\xbe)",
+	"\xd2\x81" => "(\xd2\x81|\xd2\x80)",
+	"\xd2\x8d" => "(\xd2\x8d|\xd2\x8c)",
+	"\xd2\x8f" => "(\xd2\x8f|\xd2\x8e)",
+	"\xd2\x91" => "(\xd2\x91|\xd2\x90)",
+	"\xd2\x93" => "(\xd2\x93|\xd2\x92)",
+	"\xd2\x95" => "(\xd2\x95|\xd2\x94)",
+	"\xd2\x97" => "(\xd2\x97|\xd2\x96)",
+	"\xd2\x99" => "(\xd2\x99|\xd2\x98)",
+	"\xd2\x9b" => "(\xd2\x9b|\xd2\x9a)",
+	"\xd2\x9d" => "(\xd2\x9d|\xd2\x9c)",
+	"\xd2\x9f" => "(\xd2\x9f|\xd2\x9e)",
+	"\xd2\xa1" => "(\xd2\xa1|\xd2\xa0)",
+	"\xd2\xa3" => "(\xd2\xa3|\xd2\xa2)",
+	"\xd2\xa5" => "(\xd2\xa5|\xd2\xa4)",
+	"\xd2\xa7" => "(\xd2\xa7|\xd2\xa6)",
+	"\xd2\xa9" => "(\xd2\xa9|\xd2\xa8)",
+	"\xd2\xab" => "(\xd2\xab|\xd2\xaa)",
+	"\xd2\xad" => "(\xd2\xad|\xd2\xac)",
+	"\xd2\xaf" => "(\xd2\xaf|\xd2\xae)",
+	"\xd2\xb1" => "(\xd2\xb1|\xd2\xb0)",
+	"\xd2\xb3" => "(\xd2\xb3|\xd2\xb2)",
+	"\xd2\xb5" => "(\xd2\xb5|\xd2\xb4)",
+	"\xd2\xb7" => "(\xd2\xb7|\xd2\xb6)",
+	"\xd2\xb9" => "(\xd2\xb9|\xd2\xb8)",
+	"\xd2\xbb" => "(\xd2\xbb|\xd2\xba)",
+	"\xd2\xbd" => "(\xd2\xbd|\xd2\xbc)",
+	"\xd2\xbf" => "(\xd2\xbf|\xd2\xbe)",
+	"\xd3\x82" => "(\xd3\x82|\xd3\x81)",
+	"\xd3\x84" => "(\xd3\x84|\xd3\x83)",
+	"\xd3\x88" => "(\xd3\x88|\xd3\x87)",
+	"\xd3\x8c" => "(\xd3\x8c|\xd3\x8b)",
+	"\xd3\x91" => "(\xd3\x91|\xd3\x90)",
+	"\xd3\x93" => "(\xd3\x93|\xd3\x92)",
+	"\xd3\x95" => "(\xd3\x95|\xd3\x94)",
+	"\xd3\x97" => "(\xd3\x97|\xd3\x96)",
+	"\xd3\x99" => "(\xd3\x99|\xd3\x98)",
+	"\xd3\x9b" => "(\xd3\x9b|\xd3\x9a)",
+	"\xd3\x9d" => "(\xd3\x9d|\xd3\x9c)",
+	"\xd3\x9f" => "(\xd3\x9f|\xd3\x9e)",
+	"\xd3\xa1" => "(\xd3\xa1|\xd3\xa0)",
+	"\xd3\xa3" => "(\xd3\xa3|\xd3\xa2)",
+	"\xd3\xa5" => "(\xd3\xa5|\xd3\xa4)",
+	"\xd3\xa7" => "(\xd3\xa7|\xd3\xa6)",
+	"\xd3\xa9" => "(\xd3\xa9|\xd3\xa8)",
+	"\xd3\xab" => "(\xd3\xab|\xd3\xaa)",
+	"\xd3\xad" => "(\xd3\xad|\xd3\xac)",
+	"\xd3\xaf" => "(\xd3\xaf|\xd3\xae)",
+	"\xd3\xb1" => "(\xd3\xb1|\xd3\xb0)",
+	"\xd3\xb3" => "(\xd3\xb3|\xd3\xb2)",
+	"\xd3\xb5" => "(\xd3\xb5|\xd3\xb4)",
+	"\xd3\xb9" => "(\xd3\xb9|\xd3\xb8)",
+	"\xd5\xa1" => "(\xd5\xa1|\xd4\xb1)",
+	"\xd5\xa2" => "(\xd5\xa2|\xd4\xb2)",
+	"\xd5\xa3" => "(\xd5\xa3|\xd4\xb3)",
+	"\xd5\xa4" => "(\xd5\xa4|\xd4\xb4)",
+	"\xd5\xa5" => "(\xd5\xa5|\xd4\xb5)",
+	"\xd5\xa6" => "(\xd5\xa6|\xd4\xb6)",
+	"\xd5\xa7" => "(\xd5\xa7|\xd4\xb7)",
+	"\xd5\xa8" => "(\xd5\xa8|\xd4\xb8)",
+	"\xd5\xa9" => "(\xd5\xa9|\xd4\xb9)",
+	"\xd5\xaa" => "(\xd5\xaa|\xd4\xba)",
+	"\xd5\xab" => "(\xd5\xab|\xd4\xbb)",
+	"\xd5\xac" => "(\xd5\xac|\xd4\xbc)",
+	"\xd5\xad" => "(\xd5\xad|\xd4\xbd)",
+	"\xd5\xae" => "(\xd5\xae|\xd4\xbe)",
+	"\xd5\xaf" => "(\xd5\xaf|\xd4\xbf)",
+	"\xd5\xb0" => "(\xd5\xb0|\xd5\x80)",
+	"\xd5\xb1" => "(\xd5\xb1|\xd5\x81)",
+	"\xd5\xb2" => "(\xd5\xb2|\xd5\x82)",
+	"\xd5\xb3" => "(\xd5\xb3|\xd5\x83)",
+	"\xd5\xb4" => "(\xd5\xb4|\xd5\x84)",
+	"\xd5\xb5" => "(\xd5\xb5|\xd5\x85)",
+	"\xd5\xb6" => "(\xd5\xb6|\xd5\x86)",
+	"\xd5\xb7" => "(\xd5\xb7|\xd5\x87)",
+	"\xd5\xb8" => "(\xd5\xb8|\xd5\x88)",
+	"\xd5\xb9" => "(\xd5\xb9|\xd5\x89)",
+	"\xd5\xba" => "(\xd5\xba|\xd5\x8a)",
+	"\xd5\xbb" => "(\xd5\xbb|\xd5\x8b)",
+	"\xd5\xbc" => "(\xd5\xbc|\xd5\x8c)",
+	"\xd5\xbd" => "(\xd5\xbd|\xd5\x8d)",
+	"\xd5\xbe" => "(\xd5\xbe|\xd5\x8e)",
+	"\xd5\xbf" => "(\xd5\xbf|\xd5\x8f)",
+	"\xd6\x80" => "(\xd6\x80|\xd5\x90)",
+	"\xd6\x81" => "(\xd6\x81|\xd5\x91)",
+	"\xd6\x82" => "(\xd6\x82|\xd5\x92)",
+	"\xd6\x83" => "(\xd6\x83|\xd5\x93)",
+	"\xd6\x84" => "(\xd6\x84|\xd5\x94)",
+	"\xd6\x85" => "(\xd6\x85|\xd5\x95)",
+	"\xd6\x86" => "(\xd6\x86|\xd5\x96)",
+	"\xe1\xb8\x81" => "(\xe1\xb8\x81|\xe1\xb8\x80)",
+	"\xe1\xb8\x83" => "(\xe1\xb8\x83|\xe1\xb8\x82)",
+	"\xe1\xb8\x85" => "(\xe1\xb8\x85|\xe1\xb8\x84)",
+	"\xe1\xb8\x87" => "(\xe1\xb8\x87|\xe1\xb8\x86)",
+	"\xe1\xb8\x89" => "(\xe1\xb8\x89|\xe1\xb8\x88)",
+	"\xe1\xb8\x8b" => "(\xe1\xb8\x8b|\xe1\xb8\x8a)",
+	"\xe1\xb8\x8d" => "(\xe1\xb8\x8d|\xe1\xb8\x8c)",
+	"\xe1\xb8\x8f" => "(\xe1\xb8\x8f|\xe1\xb8\x8e)",
+	"\xe1\xb8\x91" => "(\xe1\xb8\x91|\xe1\xb8\x90)",
+	"\xe1\xb8\x93" => "(\xe1\xb8\x93|\xe1\xb8\x92)",
+	"\xe1\xb8\x95" => "(\xe1\xb8\x95|\xe1\xb8\x94)",
+	"\xe1\xb8\x97" => "(\xe1\xb8\x97|\xe1\xb8\x96)",
+	"\xe1\xb8\x99" => "(\xe1\xb8\x99|\xe1\xb8\x98)",
+	"\xe1\xb8\x9b" => "(\xe1\xb8\x9b|\xe1\xb8\x9a)",
+	"\xe1\xb8\x9d" => "(\xe1\xb8\x9d|\xe1\xb8\x9c)",
+	"\xe1\xb8\x9f" => "(\xe1\xb8\x9f|\xe1\xb8\x9e)",
+	"\xe1\xb8\xa1" => "(\xe1\xb8\xa1|\xe1\xb8\xa0)",
+	"\xe1\xb8\xa3" => "(\xe1\xb8\xa3|\xe1\xb8\xa2)",
+	"\xe1\xb8\xa5" => "(\xe1\xb8\xa5|\xe1\xb8\xa4)",
+	"\xe1\xb8\xa7" => "(\xe1\xb8\xa7|\xe1\xb8\xa6)",
+	"\xe1\xb8\xa9" => "(\xe1\xb8\xa9|\xe1\xb8\xa8)",
+	"\xe1\xb8\xab" => "(\xe1\xb8\xab|\xe1\xb8\xaa)",
+	"\xe1\xb8\xad" => "(\xe1\xb8\xad|\xe1\xb8\xac)",
+	"\xe1\xb8\xaf" => "(\xe1\xb8\xaf|\xe1\xb8\xae)",
+	"\xe1\xb8\xb1" => "(\xe1\xb8\xb1|\xe1\xb8\xb0)",
+	"\xe1\xb8\xb3" => "(\xe1\xb8\xb3|\xe1\xb8\xb2)",
+	"\xe1\xb8\xb5" => "(\xe1\xb8\xb5|\xe1\xb8\xb4)",
+	"\xe1\xb8\xb7" => "(\xe1\xb8\xb7|\xe1\xb8\xb6)",
+	"\xe1\xb8\xb9" => "(\xe1\xb8\xb9|\xe1\xb8\xb8)",
+	"\xe1\xb8\xbb" => "(\xe1\xb8\xbb|\xe1\xb8\xba)",
+	"\xe1\xb8\xbd" => "(\xe1\xb8\xbd|\xe1\xb8\xbc)",
+	"\xe1\xb8\xbf" => "(\xe1\xb8\xbf|\xe1\xb8\xbe)",
+	"\xe1\xb9\x81" => "(\xe1\xb9\x81|\xe1\xb9\x80)",
+	"\xe1\xb9\x83" => "(\xe1\xb9\x83|\xe1\xb9\x82)",
+	"\xe1\xb9\x85" => "(\xe1\xb9\x85|\xe1\xb9\x84)",
+	"\xe1\xb9\x87" => "(\xe1\xb9\x87|\xe1\xb9\x86)",
+	"\xe1\xb9\x89" => "(\xe1\xb9\x89|\xe1\xb9\x88)",
+	"\xe1\xb9\x8b" => "(\xe1\xb9\x8b|\xe1\xb9\x8a)",
+	"\xe1\xb9\x8d" => "(\xe1\xb9\x8d|\xe1\xb9\x8c)",
+	"\xe1\xb9\x8f" => "(\xe1\xb9\x8f|\xe1\xb9\x8e)",
+	"\xe1\xb9\x91" => "(\xe1\xb9\x91|\xe1\xb9\x90)",
+	"\xe1\xb9\x93" => "(\xe1\xb9\x93|\xe1\xb9\x92)",
+	"\xe1\xb9\x95" => "(\xe1\xb9\x95|\xe1\xb9\x94)",
+	"\xe1\xb9\x97" => "(\xe1\xb9\x97|\xe1\xb9\x96)",
+	"\xe1\xb9\x99" => "(\xe1\xb9\x99|\xe1\xb9\x98)",
+	"\xe1\xb9\x9b" => "(\xe1\xb9\x9b|\xe1\xb9\x9a)",
+	"\xe1\xb9\x9d" => "(\xe1\xb9\x9d|\xe1\xb9\x9c)",
+	"\xe1\xb9\x9f" => "(\xe1\xb9\x9f|\xe1\xb9\x9e)",
+	"\xe1\xb9\xa1" => "(\xe1\xb9\xa1|\xe1\xb9\xa0)",
+	"\xe1\xb9\xa3" => "(\xe1\xb9\xa3|\xe1\xb9\xa2)",
+	"\xe1\xb9\xa5" => "(\xe1\xb9\xa5|\xe1\xb9\xa4)",
+	"\xe1\xb9\xa7" => "(\xe1\xb9\xa7|\xe1\xb9\xa6)",
+	"\xe1\xb9\xa9" => "(\xe1\xb9\xa9|\xe1\xb9\xa8)",
+	"\xe1\xb9\xab" => "(\xe1\xb9\xab|\xe1\xb9\xaa)",
+	"\xe1\xb9\xad" => "(\xe1\xb9\xad|\xe1\xb9\xac)",
+	"\xe1\xb9\xaf" => "(\xe1\xb9\xaf|\xe1\xb9\xae)",
+	"\xe1\xb9\xb1" => "(\xe1\xb9\xb1|\xe1\xb9\xb0)",
+	"\xe1\xb9\xb3" => "(\xe1\xb9\xb3|\xe1\xb9\xb2)",
+	"\xe1\xb9\xb5" => "(\xe1\xb9\xb5|\xe1\xb9\xb4)",
+	"\xe1\xb9\xb7" => "(\xe1\xb9\xb7|\xe1\xb9\xb6)",
+	"\xe1\xb9\xb9" => "(\xe1\xb9\xb9|\xe1\xb9\xb8)",
+	"\xe1\xb9\xbb" => "(\xe1\xb9\xbb|\xe1\xb9\xba)",
+	"\xe1\xb9\xbd" => "(\xe1\xb9\xbd|\xe1\xb9\xbc)",
+	"\xe1\xb9\xbf" => "(\xe1\xb9\xbf|\xe1\xb9\xbe)",
+	"\xe1\xba\x81" => "(\xe1\xba\x81|\xe1\xba\x80)",
+	"\xe1\xba\x83" => "(\xe1\xba\x83|\xe1\xba\x82)",
+	"\xe1\xba\x85" => "(\xe1\xba\x85|\xe1\xba\x84)",
+	"\xe1\xba\x87" => "(\xe1\xba\x87|\xe1\xba\x86)",
+	"\xe1\xba\x89" => "(\xe1\xba\x89|\xe1\xba\x88)",
+	"\xe1\xba\x8b" => "(\xe1\xba\x8b|\xe1\xba\x8a)",
+	"\xe1\xba\x8d" => "(\xe1\xba\x8d|\xe1\xba\x8c)",
+	"\xe1\xba\x8f" => "(\xe1\xba\x8f|\xe1\xba\x8e)",
+	"\xe1\xba\x91" => "(\xe1\xba\x91|\xe1\xba\x90)",
+	"\xe1\xba\x93" => "(\xe1\xba\x93|\xe1\xba\x92)",
+	"\xe1\xba\x95" => "(\xe1\xba\x95|\xe1\xba\x94)",
+	"\xe1\xba\x9b" => "(\xe1\xba\x9b|\xe1\xb9\xa0)",
+	"\xe1\xba\xa1" => "(\xe1\xba\xa1|\xe1\xba\xa0)",
+	"\xe1\xba\xa3" => "(\xe1\xba\xa3|\xe1\xba\xa2)",
+	"\xe1\xba\xa5" => "(\xe1\xba\xa5|\xe1\xba\xa4)",
+	"\xe1\xba\xa7" => "(\xe1\xba\xa7|\xe1\xba\xa6)",
+	"\xe1\xba\xa9" => "(\xe1\xba\xa9|\xe1\xba\xa8)",
+	"\xe1\xba\xab" => "(\xe1\xba\xab|\xe1\xba\xaa)",
+	"\xe1\xba\xad" => "(\xe1\xba\xad|\xe1\xba\xac)",
+	"\xe1\xba\xaf" => "(\xe1\xba\xaf|\xe1\xba\xae)",
+	"\xe1\xba\xb1" => "(\xe1\xba\xb1|\xe1\xba\xb0)",
+	"\xe1\xba\xb3" => "(\xe1\xba\xb3|\xe1\xba\xb2)",
+	"\xe1\xba\xb5" => "(\xe1\xba\xb5|\xe1\xba\xb4)",
+	"\xe1\xba\xb7" => "(\xe1\xba\xb7|\xe1\xba\xb6)",
+	"\xe1\xba\xb9" => "(\xe1\xba\xb9|\xe1\xba\xb8)",
+	"\xe1\xba\xbb" => "(\xe1\xba\xbb|\xe1\xba\xba)",
+	"\xe1\xba\xbd" => "(\xe1\xba\xbd|\xe1\xba\xbc)",
+	"\xe1\xba\xbf" => "(\xe1\xba\xbf|\xe1\xba\xbe)",
+	"\xe1\xbb\x81" => "(\xe1\xbb\x81|\xe1\xbb\x80)",
+	"\xe1\xbb\x83" => "(\xe1\xbb\x83|\xe1\xbb\x82)",
+	"\xe1\xbb\x85" => "(\xe1\xbb\x85|\xe1\xbb\x84)",
+	"\xe1\xbb\x87" => "(\xe1\xbb\x87|\xe1\xbb\x86)",
+	"\xe1\xbb\x89" => "(\xe1\xbb\x89|\xe1\xbb\x88)",
+	"\xe1\xbb\x8b" => "(\xe1\xbb\x8b|\xe1\xbb\x8a)",
+	"\xe1\xbb\x8d" => "(\xe1\xbb\x8d|\xe1\xbb\x8c)",
+	"\xe1\xbb\x8f" => "(\xe1\xbb\x8f|\xe1\xbb\x8e)",
+	"\xe1\xbb\x91" => "(\xe1\xbb\x91|\xe1\xbb\x90)",
+	"\xe1\xbb\x93" => "(\xe1\xbb\x93|\xe1\xbb\x92)",
+	"\xe1\xbb\x95" => "(\xe1\xbb\x95|\xe1\xbb\x94)",
+	"\xe1\xbb\x97" => "(\xe1\xbb\x97|\xe1\xbb\x96)",
+	"\xe1\xbb\x99" => "(\xe1\xbb\x99|\xe1\xbb\x98)",
+	"\xe1\xbb\x9b" => "(\xe1\xbb\x9b|\xe1\xbb\x9a)",
+	"\xe1\xbb\x9d" => "(\xe1\xbb\x9d|\xe1\xbb\x9c)",
+	"\xe1\xbb\x9f" => "(\xe1\xbb\x9f|\xe1\xbb\x9e)",
+	"\xe1\xbb\xa1" => "(\xe1\xbb\xa1|\xe1\xbb\xa0)",
+	"\xe1\xbb\xa3" => "(\xe1\xbb\xa3|\xe1\xbb\xa2)",
+	"\xe1\xbb\xa5" => "(\xe1\xbb\xa5|\xe1\xbb\xa4)",
+	"\xe1\xbb\xa7" => "(\xe1\xbb\xa7|\xe1\xbb\xa6)",
+	"\xe1\xbb\xa9" => "(\xe1\xbb\xa9|\xe1\xbb\xa8)",
+	"\xe1\xbb\xab" => "(\xe1\xbb\xab|\xe1\xbb\xaa)",
+	"\xe1\xbb\xad" => "(\xe1\xbb\xad|\xe1\xbb\xac)",
+	"\xe1\xbb\xaf" => "(\xe1\xbb\xaf|\xe1\xbb\xae)",
+	"\xe1\xbb\xb1" => "(\xe1\xbb\xb1|\xe1\xbb\xb0)",
+	"\xe1\xbb\xb3" => "(\xe1\xbb\xb3|\xe1\xbb\xb2)",
+	"\xe1\xbb\xb5" => "(\xe1\xbb\xb5|\xe1\xbb\xb4)",
+	"\xe1\xbb\xb7" => "(\xe1\xbb\xb7|\xe1\xbb\xb6)",
+	"\xe1\xbb\xb9" => "(\xe1\xbb\xb9|\xe1\xbb\xb8)",
+	"\xe1\xbc\x80" => "(\xe1\xbc\x80|\xe1\xbc\x88)",
+	"\xe1\xbc\x81" => "(\xe1\xbc\x81|\xe1\xbc\x89)",
+	"\xe1\xbc\x82" => "(\xe1\xbc\x82|\xe1\xbc\x8a)",
+	"\xe1\xbc\x83" => "(\xe1\xbc\x83|\xe1\xbc\x8b)",
+	"\xe1\xbc\x84" => "(\xe1\xbc\x84|\xe1\xbc\x8c)",
+	"\xe1\xbc\x85" => "(\xe1\xbc\x85|\xe1\xbc\x8d)",
+	"\xe1\xbc\x86" => "(\xe1\xbc\x86|\xe1\xbc\x8e)",
+	"\xe1\xbc\x87" => "(\xe1\xbc\x87|\xe1\xbc\x8f)",
+	"\xe1\xbc\x90" => "(\xe1\xbc\x90|\xe1\xbc\x98)",
+	"\xe1\xbc\x91" => "(\xe1\xbc\x91|\xe1\xbc\x99)",
+	"\xe1\xbc\x92" => "(\xe1\xbc\x92|\xe1\xbc\x9a)",
+	"\xe1\xbc\x93" => "(\xe1\xbc\x93|\xe1\xbc\x9b)",
+	"\xe1\xbc\x94" => "(\xe1\xbc\x94|\xe1\xbc\x9c)",
+	"\xe1\xbc\x95" => "(\xe1\xbc\x95|\xe1\xbc\x9d)",
+	"\xe1\xbc\xa0" => "(\xe1\xbc\xa0|\xe1\xbc\xa8)",
+	"\xe1\xbc\xa1" => "(\xe1\xbc\xa1|\xe1\xbc\xa9)",
+	"\xe1\xbc\xa2" => "(\xe1\xbc\xa2|\xe1\xbc\xaa)",
+	"\xe1\xbc\xa3" => "(\xe1\xbc\xa3|\xe1\xbc\xab)",
+	"\xe1\xbc\xa4" => "(\xe1\xbc\xa4|\xe1\xbc\xac)",
+	"\xe1\xbc\xa5" => "(\xe1\xbc\xa5|\xe1\xbc\xad)",
+	"\xe1\xbc\xa6" => "(\xe1\xbc\xa6|\xe1\xbc\xae)",
+	"\xe1\xbc\xa7" => "(\xe1\xbc\xa7|\xe1\xbc\xaf)",
+	"\xe1\xbc\xb0" => "(\xe1\xbc\xb0|\xe1\xbc\xb8)",
+	"\xe1\xbc\xb1" => "(\xe1\xbc\xb1|\xe1\xbc\xb9)",
+	"\xe1\xbc\xb2" => "(\xe1\xbc\xb2|\xe1\xbc\xba)",
+	"\xe1\xbc\xb3" => "(\xe1\xbc\xb3|\xe1\xbc\xbb)",
+	"\xe1\xbc\xb4" => "(\xe1\xbc\xb4|\xe1\xbc\xbc)",
+	"\xe1\xbc\xb5" => "(\xe1\xbc\xb5|\xe1\xbc\xbd)",
+	"\xe1\xbc\xb6" => "(\xe1\xbc\xb6|\xe1\xbc\xbe)",
+	"\xe1\xbc\xb7" => "(\xe1\xbc\xb7|\xe1\xbc\xbf)",
+	"\xe1\xbd\x80" => "(\xe1\xbd\x80|\xe1\xbd\x88)",
+	"\xe1\xbd\x81" => "(\xe1\xbd\x81|\xe1\xbd\x89)",
+	"\xe1\xbd\x82" => "(\xe1\xbd\x82|\xe1\xbd\x8a)",
+	"\xe1\xbd\x83" => "(\xe1\xbd\x83|\xe1\xbd\x8b)",
+	"\xe1\xbd\x84" => "(\xe1\xbd\x84|\xe1\xbd\x8c)",
+	"\xe1\xbd\x85" => "(\xe1\xbd\x85|\xe1\xbd\x8d)",
+	"\xe1\xbd\x91" => "(\xe1\xbd\x91|\xe1\xbd\x99)",
+	"\xe1\xbd\x93" => "(\xe1\xbd\x93|\xe1\xbd\x9b)",
+	"\xe1\xbd\x95" => "(\xe1\xbd\x95|\xe1\xbd\x9d)",
+	"\xe1\xbd\x97" => "(\xe1\xbd\x97|\xe1\xbd\x9f)",
+	"\xe1\xbd\xa0" => "(\xe1\xbd\xa0|\xe1\xbd\xa8)",
+	"\xe1\xbd\xa1" => "(\xe1\xbd\xa1|\xe1\xbd\xa9)",
+	"\xe1\xbd\xa2" => "(\xe1\xbd\xa2|\xe1\xbd\xaa)",
+	"\xe1\xbd\xa3" => "(\xe1\xbd\xa3|\xe1\xbd\xab)",
+	"\xe1\xbd\xa4" => "(\xe1\xbd\xa4|\xe1\xbd\xac)",
+	"\xe1\xbd\xa5" => "(\xe1\xbd\xa5|\xe1\xbd\xad)",
+	"\xe1\xbd\xa6" => "(\xe1\xbd\xa6|\xe1\xbd\xae)",
+	"\xe1\xbd\xa7" => "(\xe1\xbd\xa7|\xe1\xbd\xaf)",
+	"\xe1\xbd\xb0" => "(\xe1\xbd\xb0|\xe1\xbe\xba)",
+	"\xe1\xbd\xb1" => "(\xe1\xbd\xb1|\xe1\xbe\xbb)",
+	"\xe1\xbd\xb2" => "(\xe1\xbd\xb2|\xe1\xbf\x88)",
+	"\xe1\xbd\xb3" => "(\xe1\xbd\xb3|\xe1\xbf\x89)",
+	"\xe1\xbd\xb4" => "(\xe1\xbd\xb4|\xe1\xbf\x8a)",
+	"\xe1\xbd\xb5" => "(\xe1\xbd\xb5|\xe1\xbf\x8b)",
+	"\xe1\xbd\xb6" => "(\xe1\xbd\xb6|\xe1\xbf\x9a)",
+	"\xe1\xbd\xb7" => "(\xe1\xbd\xb7|\xe1\xbf\x9b)",
+	"\xe1\xbd\xb8" => "(\xe1\xbd\xb8|\xe1\xbf\xb8)",
+	"\xe1\xbd\xb9" => "(\xe1\xbd\xb9|\xe1\xbf\xb9)",
+	"\xe1\xbd\xba" => "(\xe1\xbd\xba|\xe1\xbf\xaa)",
+	"\xe1\xbd\xbb" => "(\xe1\xbd\xbb|\xe1\xbf\xab)",
+	"\xe1\xbd\xbc" => "(\xe1\xbd\xbc|\xe1\xbf\xba)",
+	"\xe1\xbd\xbd" => "(\xe1\xbd\xbd|\xe1\xbf\xbb)",
+	"\xe1\xbe\x80" => "(\xe1\xbe\x80|\xe1\xbe\x88)",
+	"\xe1\xbe\x81" => "(\xe1\xbe\x81|\xe1\xbe\x89)",
+	"\xe1\xbe\x82" => "(\xe1\xbe\x82|\xe1\xbe\x8a)",
+	"\xe1\xbe\x83" => "(\xe1\xbe\x83|\xe1\xbe\x8b)",
+	"\xe1\xbe\x84" => "(\xe1\xbe\x84|\xe1\xbe\x8c)",
+	"\xe1\xbe\x85" => "(\xe1\xbe\x85|\xe1\xbe\x8d)",
+	"\xe1\xbe\x86" => "(\xe1\xbe\x86|\xe1\xbe\x8e)",
+	"\xe1\xbe\x87" => "(\xe1\xbe\x87|\xe1\xbe\x8f)",
+	"\xe1\xbe\x90" => "(\xe1\xbe\x90|\xe1\xbe\x98)",
+	"\xe1\xbe\x91" => "(\xe1\xbe\x91|\xe1\xbe\x99)",
+	"\xe1\xbe\x92" => "(\xe1\xbe\x92|\xe1\xbe\x9a)",
+	"\xe1\xbe\x93" => "(\xe1\xbe\x93|\xe1\xbe\x9b)",
+	"\xe1\xbe\x94" => "(\xe1\xbe\x94|\xe1\xbe\x9c)",
+	"\xe1\xbe\x95" => "(\xe1\xbe\x95|\xe1\xbe\x9d)",
+	"\xe1\xbe\x96" => "(\xe1\xbe\x96|\xe1\xbe\x9e)",
+	"\xe1\xbe\x97" => "(\xe1\xbe\x97|\xe1\xbe\x9f)",
+	"\xe1\xbe\xa0" => "(\xe1\xbe\xa0|\xe1\xbe\xa8)",
+	"\xe1\xbe\xa1" => "(\xe1\xbe\xa1|\xe1\xbe\xa9)",
+	"\xe1\xbe\xa2" => "(\xe1\xbe\xa2|\xe1\xbe\xaa)",
+	"\xe1\xbe\xa3" => "(\xe1\xbe\xa3|\xe1\xbe\xab)",
+	"\xe1\xbe\xa4" => "(\xe1\xbe\xa4|\xe1\xbe\xac)",
+	"\xe1\xbe\xa5" => "(\xe1\xbe\xa5|\xe1\xbe\xad)",
+	"\xe1\xbe\xa6" => "(\xe1\xbe\xa6|\xe1\xbe\xae)",
+	"\xe1\xbe\xa7" => "(\xe1\xbe\xa7|\xe1\xbe\xaf)",
+	"\xe1\xbe\xb0" => "(\xe1\xbe\xb0|\xe1\xbe\xb8)",
+	"\xe1\xbe\xb1" => "(\xe1\xbe\xb1|\xe1\xbe\xb9)",
+	"\xe1\xbe\xb3" => "(\xe1\xbe\xb3|\xe1\xbe\xbc)",
+	"\xe1\xbe\xbe" => "(\xe1\xbe\xbe|\xce\x99)",
+	"\xe1\xbf\x83" => "(\xe1\xbf\x83|\xe1\xbf\x8c)",
+	"\xe1\xbf\x90" => "(\xe1\xbf\x90|\xe1\xbf\x98)",
+	"\xe1\xbf\x91" => "(\xe1\xbf\x91|\xe1\xbf\x99)",
+	"\xe1\xbf\xa0" => "(\xe1\xbf\xa0|\xe1\xbf\xa8)",
+	"\xe1\xbf\xa1" => "(\xe1\xbf\xa1|\xe1\xbf\xa9)",
+	"\xe1\xbf\xa5" => "(\xe1\xbf\xa5|\xe1\xbf\xac)",
+	"\xe1\xbf\xb3" => "(\xe1\xbf\xb3|\xe1\xbf\xbc)",
+	"\xe2\x85\xb0" => "(\xe2\x85\xb0|\xe2\x85\xa0)",
+	"\xe2\x85\xb1" => "(\xe2\x85\xb1|\xe2\x85\xa1)",
+	"\xe2\x85\xb2" => "(\xe2\x85\xb2|\xe2\x85\xa2)",
+	"\xe2\x85\xb3" => "(\xe2\x85\xb3|\xe2\x85\xa3)",
+	"\xe2\x85\xb4" => "(\xe2\x85\xb4|\xe2\x85\xa4)",
+	"\xe2\x85\xb5" => "(\xe2\x85\xb5|\xe2\x85\xa5)",
+	"\xe2\x85\xb6" => "(\xe2\x85\xb6|\xe2\x85\xa6)",
+	"\xe2\x85\xb7" => "(\xe2\x85\xb7|\xe2\x85\xa7)",
+	"\xe2\x85\xb8" => "(\xe2\x85\xb8|\xe2\x85\xa8)",
+	"\xe2\x85\xb9" => "(\xe2\x85\xb9|\xe2\x85\xa9)",
+	"\xe2\x85\xba" => "(\xe2\x85\xba|\xe2\x85\xaa)",
+	"\xe2\x85\xbb" => "(\xe2\x85\xbb|\xe2\x85\xab)",
+	"\xe2\x85\xbc" => "(\xe2\x85\xbc|\xe2\x85\xac)",
+	"\xe2\x85\xbd" => "(\xe2\x85\xbd|\xe2\x85\xad)",
+	"\xe2\x85\xbe" => "(\xe2\x85\xbe|\xe2\x85\xae)",
+	"\xe2\x85\xbf" => "(\xe2\x85\xbf|\xe2\x85\xaf)",
+	"\xe2\x93\x90" => "(\xe2\x93\x90|\xe2\x92\xb6)",
+	"\xe2\x93\x91" => "(\xe2\x93\x91|\xe2\x92\xb7)",
+	"\xe2\x93\x92" => "(\xe2\x93\x92|\xe2\x92\xb8)",
+	"\xe2\x93\x93" => "(\xe2\x93\x93|\xe2\x92\xb9)",
+	"\xe2\x93\x94" => "(\xe2\x93\x94|\xe2\x92\xba)",
+	"\xe2\x93\x95" => "(\xe2\x93\x95|\xe2\x92\xbb)",
+	"\xe2\x93\x96" => "(\xe2\x93\x96|\xe2\x92\xbc)",
+	"\xe2\x93\x97" => "(\xe2\x93\x97|\xe2\x92\xbd)",
+	"\xe2\x93\x98" => "(\xe2\x93\x98|\xe2\x92\xbe)",
+	"\xe2\x93\x99" => "(\xe2\x93\x99|\xe2\x92\xbf)",
+	"\xe2\x93\x9a" => "(\xe2\x93\x9a|\xe2\x93\x80)",
+	"\xe2\x93\x9b" => "(\xe2\x93\x9b|\xe2\x93\x81)",
+	"\xe2\x93\x9c" => "(\xe2\x93\x9c|\xe2\x93\x82)",
+	"\xe2\x93\x9d" => "(\xe2\x93\x9d|\xe2\x93\x83)",
+	"\xe2\x93\x9e" => "(\xe2\x93\x9e|\xe2\x93\x84)",
+	"\xe2\x93\x9f" => "(\xe2\x93\x9f|\xe2\x93\x85)",
+	"\xe2\x93\xa0" => "(\xe2\x93\xa0|\xe2\x93\x86)",
+	"\xe2\x93\xa1" => "(\xe2\x93\xa1|\xe2\x93\x87)",
+	"\xe2\x93\xa2" => "(\xe2\x93\xa2|\xe2\x93\x88)",
+	"\xe2\x93\xa3" => "(\xe2\x93\xa3|\xe2\x93\x89)",
+	"\xe2\x93\xa4" => "(\xe2\x93\xa4|\xe2\x93\x8a)",
+	"\xe2\x93\xa5" => "(\xe2\x93\xa5|\xe2\x93\x8b)",
+	"\xe2\x93\xa6" => "(\xe2\x93\xa6|\xe2\x93\x8c)",
+	"\xe2\x93\xa7" => "(\xe2\x93\xa7|\xe2\x93\x8d)",
+	"\xe2\x93\xa8" => "(\xe2\x93\xa8|\xe2\x93\x8e)",
+	"\xe2\x93\xa9" => "(\xe2\x93\xa9|\xe2\x93\x8f)",
+	"\xef\xbd\x81" => "(\xef\xbd\x81|\xef\xbc\xa1)",
+	"\xef\xbd\x82" => "(\xef\xbd\x82|\xef\xbc\xa2)",
+	"\xef\xbd\x83" => "(\xef\xbd\x83|\xef\xbc\xa3)",
+	"\xef\xbd\x84" => "(\xef\xbd\x84|\xef\xbc\xa4)",
+	"\xef\xbd\x85" => "(\xef\xbd\x85|\xef\xbc\xa5)",
+	"\xef\xbd\x86" => "(\xef\xbd\x86|\xef\xbc\xa6)",
+	"\xef\xbd\x87" => "(\xef\xbd\x87|\xef\xbc\xa7)",
+	"\xef\xbd\x88" => "(\xef\xbd\x88|\xef\xbc\xa8)",
+	"\xef\xbd\x89" => "(\xef\xbd\x89|\xef\xbc\xa9)",
+	"\xef\xbd\x8a" => "(\xef\xbd\x8a|\xef\xbc\xaa)",
+	"\xef\xbd\x8b" => "(\xef\xbd\x8b|\xef\xbc\xab)",
+	"\xef\xbd\x8c" => "(\xef\xbd\x8c|\xef\xbc\xac)",
+	"\xef\xbd\x8d" => "(\xef\xbd\x8d|\xef\xbc\xad)",
+	"\xef\xbd\x8e" => "(\xef\xbd\x8e|\xef\xbc\xae)",
+	"\xef\xbd\x8f" => "(\xef\xbd\x8f|\xef\xbc\xaf)",
+	"\xef\xbd\x90" => "(\xef\xbd\x90|\xef\xbc\xb0)",
+	"\xef\xbd\x91" => "(\xef\xbd\x91|\xef\xbc\xb1)",
+	"\xef\xbd\x92" => "(\xef\xbd\x92|\xef\xbc\xb2)",
+	"\xef\xbd\x93" => "(\xef\xbd\x93|\xef\xbc\xb3)",
+	"\xef\xbd\x94" => "(\xef\xbd\x94|\xef\xbc\xb4)",
+	"\xef\xbd\x95" => "(\xef\xbd\x95|\xef\xbc\xb5)",
+	"\xef\xbd\x96" => "(\xef\xbd\x96|\xef\xbc\xb6)",
+	"\xef\xbd\x97" => "(\xef\xbd\x97|\xef\xbc\xb7)",
+	"\xef\xbd\x98" => "(\xef\xbd\x98|\xef\xbc\xb8)",
+	"\xef\xbd\x99" => "(\xef\xbd\x99|\xef\xbc\xb9)",
+	"\xef\xbd\x9a" => "(\xef\xbd\x9a|\xef\xbc\xba)",
+	"\xf0\x90\x90\xa8" => "(\xf0\x90\x90\xa8|\xf0\x90\x90\x80)",
+	"\xf0\x90\x90\xa9" => "(\xf0\x90\x90\xa9|\xf0\x90\x90\x81)",
+	"\xf0\x90\x90\xaa" => "(\xf0\x90\x90\xaa|\xf0\x90\x90\x82)",
+	"\xf0\x90\x90\xab" => "(\xf0\x90\x90\xab|\xf0\x90\x90\x83)",
+	"\xf0\x90\x90\xac" => "(\xf0\x90\x90\xac|\xf0\x90\x90\x84)",
+	"\xf0\x90\x90\xad" => "(\xf0\x90\x90\xad|\xf0\x90\x90\x85)",
+	"\xf0\x90\x90\xae" => "(\xf0\x90\x90\xae|\xf0\x90\x90\x86)",
+	"\xf0\x90\x90\xaf" => "(\xf0\x90\x90\xaf|\xf0\x90\x90\x87)",
+	"\xf0\x90\x90\xb0" => "(\xf0\x90\x90\xb0|\xf0\x90\x90\x88)",
+	"\xf0\x90\x90\xb1" => "(\xf0\x90\x90\xb1|\xf0\x90\x90\x89)",
+	"\xf0\x90\x90\xb2" => "(\xf0\x90\x90\xb2|\xf0\x90\x90\x8a)",
+	"\xf0\x90\x90\xb3" => "(\xf0\x90\x90\xb3|\xf0\x90\x90\x8b)",
+	"\xf0\x90\x90\xb4" => "(\xf0\x90\x90\xb4|\xf0\x90\x90\x8c)",
+	"\xf0\x90\x90\xb5" => "(\xf0\x90\x90\xb5|\xf0\x90\x90\x8d)",
+	"\xf0\x90\x90\xb6" => "(\xf0\x90\x90\xb6|\xf0\x90\x90\x8e)",
+	"\xf0\x90\x90\xb7" => "(\xf0\x90\x90\xb7|\xf0\x90\x90\x8f)",
+	"\xf0\x90\x90\xb8" => "(\xf0\x90\x90\xb8|\xf0\x90\x90\x90)",
+	"\xf0\x90\x90\xb9" => "(\xf0\x90\x90\xb9|\xf0\x90\x90\x91)",
+	"\xf0\x90\x90\xba" => "(\xf0\x90\x90\xba|\xf0\x90\x90\x92)",
+	"\xf0\x90\x90\xbb" => "(\xf0\x90\x90\xbb|\xf0\x90\x90\x93)",
+	"\xf0\x90\x90\xbc" => "(\xf0\x90\x90\xbc|\xf0\x90\x90\x94)",
+	"\xf0\x90\x90\xbd" => "(\xf0\x90\x90\xbd|\xf0\x90\x90\x95)",
+	"\xf0\x90\x90\xbe" => "(\xf0\x90\x90\xbe|\xf0\x90\x90\x96)",
+	"\xf0\x90\x90\xbf" => "(\xf0\x90\x90\xbf|\xf0\x90\x90\x97)",
+	"\xf0\x90\x91\x80" => "(\xf0\x90\x91\x80|\xf0\x90\x90\x98)",
+	"\xf0\x90\x91\x81" => "(\xf0\x90\x91\x81|\xf0\x90\x90\x99)",
+	"\xf0\x90\x91\x82" => "(\xf0\x90\x91\x82|\xf0\x90\x90\x9a)",
+	"\xf0\x90\x91\x83" => "(\xf0\x90\x91\x83|\xf0\x90\x90\x9b)",
+	"\xf0\x90\x91\x84" => "(\xf0\x90\x91\x84|\xf0\x90\x90\x9c)",
+	"\xf0\x90\x91\x85" => "(\xf0\x90\x91\x85|\xf0\x90\x90\x9d)",
+	"\xf0\x90\x91\x86" => "(\xf0\x90\x91\x86|\xf0\x90\x90\x9e)",
+	"\xf0\x90\x91\x87" => "(\xf0\x90\x91\x87|\xf0\x90\x90\x9f)",
+	"\xf0\x90\x91\x88" => "(\xf0\x90\x91\x88|\xf0\x90\x90\xa0)",
+	"\xf0\x90\x91\x89" => "(\xf0\x90\x91\x89|\xf0\x90\x90\xa1)",
+	"\xf0\x90\x91\x8a" => "(\xf0\x90\x91\x8a|\xf0\x90\x90\xa2)",
+	"\xf0\x90\x91\x8b" => "(\xf0\x90\x91\x8b|\xf0\x90\x90\xa3)",
+	"\xf0\x90\x91\x8c" => "(\xf0\x90\x91\x8c|\xf0\x90\x90\xa4)",
+	"\xf0\x90\x91\x8d" => "(\xf0\x90\x91\x8d|\xf0\x90\x90\xa5)",
+	"\xc3\x80" => "(\xc3\x80|\xc3\xa0)",
+	"\xc3\x81" => "(\xc3\x81|\xc3\xa1)",
+	"\xc3\x82" => "(\xc3\x82|\xc3\xa2)",
+	"\xc3\x83" => "(\xc3\x83|\xc3\xa3)",
+	"\xc3\x84" => "(\xc3\x84|\xc3\xa4)",
+	"\xc3\x85" => "(\xc3\x85|\xc3\xa5)",
+	"\xc3\x86" => "(\xc3\x86|\xc3\xa6)",
+	"\xc3\x87" => "(\xc3\x87|\xc3\xa7)",
+	"\xc3\x88" => "(\xc3\x88|\xc3\xa8)",
+	"\xc3\x89" => "(\xc3\x89|\xc3\xa9)",
+	"\xc3\x8a" => "(\xc3\x8a|\xc3\xaa)",
+	"\xc3\x8b" => "(\xc3\x8b|\xc3\xab)",
+	"\xc3\x8c" => "(\xc3\x8c|\xc3\xac)",
+	"\xc3\x8d" => "(\xc3\x8d|\xc3\xad)",
+	"\xc3\x8e" => "(\xc3\x8e|\xc3\xae)",
+	"\xc3\x8f" => "(\xc3\x8f|\xc3\xaf)",
+	"\xc3\x90" => "(\xc3\x90|\xc3\xb0)",
+	"\xc3\x91" => "(\xc3\x91|\xc3\xb1)",
+	"\xc3\x92" => "(\xc3\x92|\xc3\xb2)",
+	"\xc3\x93" => "(\xc3\x93|\xc3\xb3)",
+	"\xc3\x94" => "(\xc3\x94|\xc3\xb4)",
+	"\xc3\x95" => "(\xc3\x95|\xc3\xb5)",
+	"\xc3\x96" => "(\xc3\x96|\xc3\xb6)",
+	"\xc3\x98" => "(\xc3\x98|\xc3\xb8)",
+	"\xc3\x99" => "(\xc3\x99|\xc3\xb9)",
+	"\xc3\x9a" => "(\xc3\x9a|\xc3\xba)",
+	"\xc3\x9b" => "(\xc3\x9b|\xc3\xbb)",
+	"\xc3\x9c" => "(\xc3\x9c|\xc3\xbc)",
+	"\xc3\x9d" => "(\xc3\x9d|\xc3\xbd)",
+	"\xc3\x9e" => "(\xc3\x9e|\xc3\xbe)",
+	"\xc4\x80" => "(\xc4\x80|\xc4\x81)",
+	"\xc4\x82" => "(\xc4\x82|\xc4\x83)",
+	"\xc4\x84" => "(\xc4\x84|\xc4\x85)",
+	"\xc4\x86" => "(\xc4\x86|\xc4\x87)",
+	"\xc4\x88" => "(\xc4\x88|\xc4\x89)",
+	"\xc4\x8a" => "(\xc4\x8a|\xc4\x8b)",
+	"\xc4\x8c" => "(\xc4\x8c|\xc4\x8d)",
+	"\xc4\x8e" => "(\xc4\x8e|\xc4\x8f)",
+	"\xc4\x90" => "(\xc4\x90|\xc4\x91)",
+	"\xc4\x92" => "(\xc4\x92|\xc4\x93)",
+	"\xc4\x94" => "(\xc4\x94|\xc4\x95)",
+	"\xc4\x96" => "(\xc4\x96|\xc4\x97)",
+	"\xc4\x98" => "(\xc4\x98|\xc4\x99)",
+	"\xc4\x9a" => "(\xc4\x9a|\xc4\x9b)",
+	"\xc4\x9c" => "(\xc4\x9c|\xc4\x9d)",
+	"\xc4\x9e" => "(\xc4\x9e|\xc4\x9f)",
+	"\xc4\xa0" => "(\xc4\xa0|\xc4\xa1)",
+	"\xc4\xa2" => "(\xc4\xa2|\xc4\xa3)",
+	"\xc4\xa4" => "(\xc4\xa4|\xc4\xa5)",
+	"\xc4\xa6" => "(\xc4\xa6|\xc4\xa7)",
+	"\xc4\xa8" => "(\xc4\xa8|\xc4\xa9)",
+	"\xc4\xaa" => "(\xc4\xaa|\xc4\xab)",
+	"\xc4\xac" => "(\xc4\xac|\xc4\xad)",
+	"\xc4\xae" => "(\xc4\xae|\xc4\xaf)",
+	"\xc4\xb0" => "(\xc4\xb0|i)",
+	"\xc4\xb2" => "(\xc4\xb2|\xc4\xb3)",
+	"\xc4\xb4" => "(\xc4\xb4|\xc4\xb5)",
+	"\xc4\xb6" => "(\xc4\xb6|\xc4\xb7)",
+	"\xc4\xb9" => "(\xc4\xb9|\xc4\xba)",
+	"\xc4\xbb" => "(\xc4\xbb|\xc4\xbc)",
+	"\xc4\xbd" => "(\xc4\xbd|\xc4\xbe)",
+	"\xc4\xbf" => "(\xc4\xbf|\xc5\x80)",
+	"\xc5\x81" => "(\xc5\x81|\xc5\x82)",
+	"\xc5\x83" => "(\xc5\x83|\xc5\x84)",
+	"\xc5\x85" => "(\xc5\x85|\xc5\x86)",
+	"\xc5\x87" => "(\xc5\x87|\xc5\x88)",
+	"\xc5\x8a" => "(\xc5\x8a|\xc5\x8b)",
+	"\xc5\x8c" => "(\xc5\x8c|\xc5\x8d)",
+	"\xc5\x8e" => "(\xc5\x8e|\xc5\x8f)",
+	"\xc5\x90" => "(\xc5\x90|\xc5\x91)",
+	"\xc5\x92" => "(\xc5\x92|\xc5\x93)",
+	"\xc5\x94" => "(\xc5\x94|\xc5\x95)",
+	"\xc5\x96" => "(\xc5\x96|\xc5\x97)",
+	"\xc5\x98" => "(\xc5\x98|\xc5\x99)",
+	"\xc5\x9a" => "(\xc5\x9a|\xc5\x9b)",
+	"\xc5\x9c" => "(\xc5\x9c|\xc5\x9d)",
+	"\xc5\x9e" => "(\xc5\x9e|\xc5\x9f)",
+	"\xc5\xa0" => "(\xc5\xa0|\xc5\xa1)",
+	"\xc5\xa2" => "(\xc5\xa2|\xc5\xa3)",
+	"\xc5\xa4" => "(\xc5\xa4|\xc5\xa5)",
+	"\xc5\xa6" => "(\xc5\xa6|\xc5\xa7)",
+	"\xc5\xa8" => "(\xc5\xa8|\xc5\xa9)",
+	"\xc5\xaa" => "(\xc5\xaa|\xc5\xab)",
+	"\xc5\xac" => "(\xc5\xac|\xc5\xad)",
+	"\xc5\xae" => "(\xc5\xae|\xc5\xaf)",
+	"\xc5\xb0" => "(\xc5\xb0|\xc5\xb1)",
+	"\xc5\xb2" => "(\xc5\xb2|\xc5\xb3)",
+	"\xc5\xb4" => "(\xc5\xb4|\xc5\xb5)",
+	"\xc5\xb6" => "(\xc5\xb6|\xc5\xb7)",
+	"\xc5\xb8" => "(\xc5\xb8|\xc3\xbf)",
+	"\xc5\xb9" => "(\xc5\xb9|\xc5\xba)",
+	"\xc5\xbb" => "(\xc5\xbb|\xc5\xbc)",
+	"\xc5\xbd" => "(\xc5\xbd|\xc5\xbe)",
+	"\xc6\x81" => "(\xc6\x81|\xc9\x93)",
+	"\xc6\x82" => "(\xc6\x82|\xc6\x83)",
+	"\xc6\x84" => "(\xc6\x84|\xc6\x85)",
+	"\xc6\x86" => "(\xc6\x86|\xc9\x94)",
+	"\xc6\x87" => "(\xc6\x87|\xc6\x88)",
+	"\xc6\x89" => "(\xc6\x89|\xc9\x96)",
+	"\xc6\x8a" => "(\xc6\x8a|\xc9\x97)",
+	"\xc6\x8b" => "(\xc6\x8b|\xc6\x8c)",
+	"\xc6\x8e" => "(\xc6\x8e|\xc7\x9d)",
+	"\xc6\x8f" => "(\xc6\x8f|\xc9\x99)",
+	"\xc6\x90" => "(\xc6\x90|\xc9\x9b)",
+	"\xc6\x91" => "(\xc6\x91|\xc6\x92)",
+	"\xc6\x93" => "(\xc6\x93|\xc9\xa0)",
+	"\xc6\x94" => "(\xc6\x94|\xc9\xa3)",
+	"\xc6\x96" => "(\xc6\x96|\xc9\xa9)",
+	"\xc6\x97" => "(\xc6\x97|\xc9\xa8)",
+	"\xc6\x98" => "(\xc6\x98|\xc6\x99)",
+	"\xc6\x9c" => "(\xc6\x9c|\xc9\xaf)",
+	"\xc6\x9d" => "(\xc6\x9d|\xc9\xb2)",
+	"\xc6\x9f" => "(\xc6\x9f|\xc9\xb5)",
+	"\xc6\xa0" => "(\xc6\xa0|\xc6\xa1)",
+	"\xc6\xa2" => "(\xc6\xa2|\xc6\xa3)",
+	"\xc6\xa4" => "(\xc6\xa4|\xc6\xa5)",
+	"\xc6\xa6" => "(\xc6\xa6|\xca\x80)",
+	"\xc6\xa7" => "(\xc6\xa7|\xc6\xa8)",
+	"\xc6\xa9" => "(\xc6\xa9|\xca\x83)",
+	"\xc6\xac" => "(\xc6\xac|\xc6\xad)",
+	"\xc6\xae" => "(\xc6\xae|\xca\x88)",
+	"\xc6\xaf" => "(\xc6\xaf|\xc6\xb0)",
+	"\xc6\xb1" => "(\xc6\xb1|\xca\x8a)",
+	"\xc6\xb2" => "(\xc6\xb2|\xca\x8b)",
+	"\xc6\xb3" => "(\xc6\xb3|\xc6\xb4)",
+	"\xc6\xb5" => "(\xc6\xb5|\xc6\xb6)",
+	"\xc6\xb7" => "(\xc6\xb7|\xca\x92)",
+	"\xc6\xb8" => "(\xc6\xb8|\xc6\xb9)",
+	"\xc6\xbc" => "(\xc6\xbc|\xc6\xbd)",
+	"\xc7\x84" => "(\xc7\x84|\xc7\x86|\xc7\x85)",
+	"\xc7\x85" => "(\xc7\x85|\xc7\x84|\xc7\x86)",
+	"\xc7\x87" => "(\xc7\x87|\xc7\x89|\xc7\x88)",
+	"\xc7\x88" => "(\xc7\x88|\xc7\x87|\xc7\x89)",
+	"\xc7\x8a" => "(\xc7\x8a|\xc7\x8c|\xc7\x8b)",
+	"\xc7\x8b" => "(\xc7\x8b|\xc7\x8a|\xc7\x8c)",
+	"\xc7\x8d" => "(\xc7\x8d|\xc7\x8e)",
+	"\xc7\x8f" => "(\xc7\x8f|\xc7\x90)",
+	"\xc7\x91" => "(\xc7\x91|\xc7\x92)",
+	"\xc7\x93" => "(\xc7\x93|\xc7\x94)",
+	"\xc7\x95" => "(\xc7\x95|\xc7\x96)",
+	"\xc7\x97" => "(\xc7\x97|\xc7\x98)",
+	"\xc7\x99" => "(\xc7\x99|\xc7\x9a)",
+	"\xc7\x9b" => "(\xc7\x9b|\xc7\x9c)",
+	"\xc7\x9e" => "(\xc7\x9e|\xc7\x9f)",
+	"\xc7\xa0" => "(\xc7\xa0|\xc7\xa1)",
+	"\xc7\xa2" => "(\xc7\xa2|\xc7\xa3)",
+	"\xc7\xa4" => "(\xc7\xa4|\xc7\xa5)",
+	"\xc7\xa6" => "(\xc7\xa6|\xc7\xa7)",
+	"\xc7\xa8" => "(\xc7\xa8|\xc7\xa9)",
+	"\xc7\xaa" => "(\xc7\xaa|\xc7\xab)",
+	"\xc7\xac" => "(\xc7\xac|\xc7\xad)",
+	"\xc7\xae" => "(\xc7\xae|\xc7\xaf)",
+	"\xc7\xb1" => "(\xc7\xb1|\xc7\xb3|\xc7\xb2)",
+	"\xc7\xb4" => "(\xc7\xb4|\xc7\xb5)",
+	"\xc7\xb6" => "(\xc7\xb6|\xc6\x95)",
+	"\xc7\xb7" => "(\xc7\xb7|\xc6\xbf)",
+	"\xc7\xb8" => "(\xc7\xb8|\xc7\xb9)",
+	"\xc7\xba" => "(\xc7\xba|\xc7\xbb)",
+	"\xc7\xbc" => "(\xc7\xbc|\xc7\xbd)",
+	"\xc7\xbe" => "(\xc7\xbe|\xc7\xbf)",
+	"\xc8\x80" => "(\xc8\x80|\xc8\x81)",
+	"\xc8\x82" => "(\xc8\x82|\xc8\x83)",
+	"\xc8\x84" => "(\xc8\x84|\xc8\x85)",
+	"\xc8\x86" => "(\xc8\x86|\xc8\x87)",
+	"\xc8\x88" => "(\xc8\x88|\xc8\x89)",
+	"\xc8\x8a" => "(\xc8\x8a|\xc8\x8b)",
+	"\xc8\x8c" => "(\xc8\x8c|\xc8\x8d)",
+	"\xc8\x8e" => "(\xc8\x8e|\xc8\x8f)",
+	"\xc8\x90" => "(\xc8\x90|\xc8\x91)",
+	"\xc8\x92" => "(\xc8\x92|\xc8\x93)",
+	"\xc8\x94" => "(\xc8\x94|\xc8\x95)",
+	"\xc8\x96" => "(\xc8\x96|\xc8\x97)",
+	"\xc8\x98" => "(\xc8\x98|\xc8\x99)",
+	"\xc8\x9a" => "(\xc8\x9a|\xc8\x9b)",
+	"\xc8\x9c" => "(\xc8\x9c|\xc8\x9d)",
+	"\xc8\x9e" => "(\xc8\x9e|\xc8\x9f)",
+	"\xc8\xa2" => "(\xc8\xa2|\xc8\xa3)",
+	"\xc8\xa4" => "(\xc8\xa4|\xc8\xa5)",
+	"\xc8\xa6" => "(\xc8\xa6|\xc8\xa7)",
+	"\xc8\xa8" => "(\xc8\xa8|\xc8\xa9)",
+	"\xc8\xaa" => "(\xc8\xaa|\xc8\xab)",
+	"\xc8\xac" => "(\xc8\xac|\xc8\xad)",
+	"\xc8\xae" => "(\xc8\xae|\xc8\xaf)",
+	"\xc8\xb0" => "(\xc8\xb0|\xc8\xb1)",
+	"\xc8\xb2" => "(\xc8\xb2|\xc8\xb3)",
+	"\xce\x86" => "(\xce\x86|\xce\xac)",
+	"\xce\x88" => "(\xce\x88|\xce\xad)",
+	"\xce\x89" => "(\xce\x89|\xce\xae)",
+	"\xce\x8a" => "(\xce\x8a|\xce\xaf)",
+	"\xce\x8c" => "(\xce\x8c|\xcf\x8c)",
+	"\xce\x8e" => "(\xce\x8e|\xcf\x8d)",
+	"\xce\x8f" => "(\xce\x8f|\xcf\x8e)",
+	"\xce\x91" => "(\xce\x91|\xce\xb1)",
+	"\xce\x92" => "(\xce\x92|\xce\xb2|\xcf\x90)",
+	"\xce\x93" => "(\xce\x93|\xce\xb3)",
+	"\xce\x94" => "(\xce\x94|\xce\xb4)",
+	"\xce\x95" => "(\xce\x95|\xce\xb5|\xcf\xb5)",
+	"\xce\x96" => "(\xce\x96|\xce\xb6)",
+	"\xce\x97" => "(\xce\x97|\xce\xb7)",
+	"\xce\x98" => "(\xce\x98|\xce\xb8|\xcf\x91)",
+	"\xce\x99" => "(\xce\x99|\xce\xb9|\xcd\x85|\xe1\xbe\xbe)",
+	"\xce\x9a" => "(\xce\x9a|\xce\xba|\xcf\xb0)",
+	"\xce\x9b" => "(\xce\x9b|\xce\xbb)",
+	"\xce\x9c" => "(\xce\x9c|\xce\xbc|\xc2\xb5)",
+	"\xce\x9d" => "(\xce\x9d|\xce\xbd)",
+	"\xce\x9e" => "(\xce\x9e|\xce\xbe)",
+	"\xce\x9f" => "(\xce\x9f|\xce\xbf)",
+	"\xce\xa0" => "(\xce\xa0|\xcf\x80|\xcf\x96)",
+	"\xce\xa1" => "(\xce\xa1|\xcf\x81|\xcf\xb1)",
+	"\xce\xa3" => "(\xce\xa3|\xcf\x83|\xcf\x82|\xcf\xb2)",
+	"\xce\xa4" => "(\xce\xa4|\xcf\x84)",
+	"\xce\xa5" => "(\xce\xa5|\xcf\x85)",
+	"\xce\xa6" => "(\xce\xa6|\xcf\x86|\xcf\x95)",
+	"\xce\xa7" => "(\xce\xa7|\xcf\x87)",
+	"\xce\xa8" => "(\xce\xa8|\xcf\x88)",
+	"\xce\xa9" => "(\xce\xa9|\xcf\x89)",
+	"\xce\xaa" => "(\xce\xaa|\xcf\x8a)",
+	"\xce\xab" => "(\xce\xab|\xcf\x8b)",
+	"\xcf\x9a" => "(\xcf\x9a|\xcf\x9b)",
+	"\xcf\x9c" => "(\xcf\x9c|\xcf\x9d)",
+	"\xcf\x9e" => "(\xcf\x9e|\xcf\x9f)",
+	"\xcf\xa0" => "(\xcf\xa0|\xcf\xa1)",
+	"\xcf\xa2" => "(\xcf\xa2|\xcf\xa3)",
+	"\xcf\xa4" => "(\xcf\xa4|\xcf\xa5)",
+	"\xcf\xa6" => "(\xcf\xa6|\xcf\xa7)",
+	"\xcf\xa8" => "(\xcf\xa8|\xcf\xa9)",
+	"\xcf\xaa" => "(\xcf\xaa|\xcf\xab)",
+	"\xcf\xac" => "(\xcf\xac|\xcf\xad)",
+	"\xcf\xae" => "(\xcf\xae|\xcf\xaf)",
+	"\xcf\xb4" => "(\xcf\xb4|\xce\xb8)",
+	"\xd0\x80" => "(\xd0\x80|\xd1\x90)",
+	"\xd0\x81" => "(\xd0\x81|\xd1\x91)",
+	"\xd0\x82" => "(\xd0\x82|\xd1\x92)",
+	"\xd0\x83" => "(\xd0\x83|\xd1\x93)",
+	"\xd0\x84" => "(\xd0\x84|\xd1\x94)",
+	"\xd0\x85" => "(\xd0\x85|\xd1\x95)",
+	"\xd0\x86" => "(\xd0\x86|\xd1\x96)",
+	"\xd0\x87" => "(\xd0\x87|\xd1\x97)",
+	"\xd0\x88" => "(\xd0\x88|\xd1\x98)",
+	"\xd0\x89" => "(\xd0\x89|\xd1\x99)",
+	"\xd0\x8a" => "(\xd0\x8a|\xd1\x9a)",
+	"\xd0\x8b" => "(\xd0\x8b|\xd1\x9b)",
+	"\xd0\x8c" => "(\xd0\x8c|\xd1\x9c)",
+	"\xd0\x8d" => "(\xd0\x8d|\xd1\x9d)",
+	"\xd0\x8e" => "(\xd0\x8e|\xd1\x9e)",
+	"\xd0\x8f" => "(\xd0\x8f|\xd1\x9f)",
+	"\xd0\x90" => "(\xd0\x90|\xd0\xb0)",
+	"\xd0\x91" => "(\xd0\x91|\xd0\xb1)",
+	"\xd0\x92" => "(\xd0\x92|\xd0\xb2)",
+	"\xd0\x93" => "(\xd0\x93|\xd0\xb3)",
+	"\xd0\x94" => "(\xd0\x94|\xd0\xb4)",
+	"\xd0\x95" => "(\xd0\x95|\xd0\xb5)",
+	"\xd0\x96" => "(\xd0\x96|\xd0\xb6)",
+	"\xd0\x97" => "(\xd0\x97|\xd0\xb7)",
+	"\xd0\x98" => "(\xd0\x98|\xd0\xb8)",
+	"\xd0\x99" => "(\xd0\x99|\xd0\xb9)",
+	"\xd0\x9a" => "(\xd0\x9a|\xd0\xba)",
+	"\xd0\x9b" => "(\xd0\x9b|\xd0\xbb)",
+	"\xd0\x9c" => "(\xd0\x9c|\xd0\xbc)",
+	"\xd0\x9d" => "(\xd0\x9d|\xd0\xbd)",
+	"\xd0\x9e" => "(\xd0\x9e|\xd0\xbe)",
+	"\xd0\x9f" => "(\xd0\x9f|\xd0\xbf)",
+	"\xd0\xa0" => "(\xd0\xa0|\xd1\x80)",
+	"\xd0\xa1" => "(\xd0\xa1|\xd1\x81)",
+	"\xd0\xa2" => "(\xd0\xa2|\xd1\x82)",
+	"\xd0\xa3" => "(\xd0\xa3|\xd1\x83)",
+	"\xd0\xa4" => "(\xd0\xa4|\xd1\x84)",
+	"\xd0\xa5" => "(\xd0\xa5|\xd1\x85)",
+	"\xd0\xa6" => "(\xd0\xa6|\xd1\x86)",
+	"\xd0\xa7" => "(\xd0\xa7|\xd1\x87)",
+	"\xd0\xa8" => "(\xd0\xa8|\xd1\x88)",
+	"\xd0\xa9" => "(\xd0\xa9|\xd1\x89)",
+	"\xd0\xaa" => "(\xd0\xaa|\xd1\x8a)",
+	"\xd0\xab" => "(\xd0\xab|\xd1\x8b)",
+	"\xd0\xac" => "(\xd0\xac|\xd1\x8c)",
+	"\xd0\xad" => "(\xd0\xad|\xd1\x8d)",
+	"\xd0\xae" => "(\xd0\xae|\xd1\x8e)",
+	"\xd0\xaf" => "(\xd0\xaf|\xd1\x8f)",
+	"\xd1\xa0" => "(\xd1\xa0|\xd1\xa1)",
+	"\xd1\xa2" => "(\xd1\xa2|\xd1\xa3)",
+	"\xd1\xa4" => "(\xd1\xa4|\xd1\xa5)",
+	"\xd1\xa6" => "(\xd1\xa6|\xd1\xa7)",
+	"\xd1\xa8" => "(\xd1\xa8|\xd1\xa9)",
+	"\xd1\xaa" => "(\xd1\xaa|\xd1\xab)",
+	"\xd1\xac" => "(\xd1\xac|\xd1\xad)",
+	"\xd1\xae" => "(\xd1\xae|\xd1\xaf)",
+	"\xd1\xb0" => "(\xd1\xb0|\xd1\xb1)",
+	"\xd1\xb2" => "(\xd1\xb2|\xd1\xb3)",
+	"\xd1\xb4" => "(\xd1\xb4|\xd1\xb5)",
+	"\xd1\xb6" => "(\xd1\xb6|\xd1\xb7)",
+	"\xd1\xb8" => "(\xd1\xb8|\xd1\xb9)",
+	"\xd1\xba" => "(\xd1\xba|\xd1\xbb)",
+	"\xd1\xbc" => "(\xd1\xbc|\xd1\xbd)",
+	"\xd1\xbe" => "(\xd1\xbe|\xd1\xbf)",
+	"\xd2\x80" => "(\xd2\x80|\xd2\x81)",
+	"\xd2\x8c" => "(\xd2\x8c|\xd2\x8d)",
+	"\xd2\x8e" => "(\xd2\x8e|\xd2\x8f)",
+	"\xd2\x90" => "(\xd2\x90|\xd2\x91)",
+	"\xd2\x92" => "(\xd2\x92|\xd2\x93)",
+	"\xd2\x94" => "(\xd2\x94|\xd2\x95)",
+	"\xd2\x96" => "(\xd2\x96|\xd2\x97)",
+	"\xd2\x98" => "(\xd2\x98|\xd2\x99)",
+	"\xd2\x9a" => "(\xd2\x9a|\xd2\x9b)",
+	"\xd2\x9c" => "(\xd2\x9c|\xd2\x9d)",
+	"\xd2\x9e" => "(\xd2\x9e|\xd2\x9f)",
+	"\xd2\xa0" => "(\xd2\xa0|\xd2\xa1)",
+	"\xd2\xa2" => "(\xd2\xa2|\xd2\xa3)",
+	"\xd2\xa4" => "(\xd2\xa4|\xd2\xa5)",
+	"\xd2\xa6" => "(\xd2\xa6|\xd2\xa7)",
+	"\xd2\xa8" => "(\xd2\xa8|\xd2\xa9)",
+	"\xd2\xaa" => "(\xd2\xaa|\xd2\xab)",
+	"\xd2\xac" => "(\xd2\xac|\xd2\xad)",
+	"\xd2\xae" => "(\xd2\xae|\xd2\xaf)",
+	"\xd2\xb0" => "(\xd2\xb0|\xd2\xb1)",
+	"\xd2\xb2" => "(\xd2\xb2|\xd2\xb3)",
+	"\xd2\xb4" => "(\xd2\xb4|\xd2\xb5)",
+	"\xd2\xb6" => "(\xd2\xb6|\xd2\xb7)",
+	"\xd2\xb8" => "(\xd2\xb8|\xd2\xb9)",
+	"\xd2\xba" => "(\xd2\xba|\xd2\xbb)",
+	"\xd2\xbc" => "(\xd2\xbc|\xd2\xbd)",
+	"\xd2\xbe" => "(\xd2\xbe|\xd2\xbf)",
+	"\xd3\x81" => "(\xd3\x81|\xd3\x82)",
+	"\xd3\x83" => "(\xd3\x83|\xd3\x84)",
+	"\xd3\x87" => "(\xd3\x87|\xd3\x88)",
+	"\xd3\x8b" => "(\xd3\x8b|\xd3\x8c)",
+	"\xd3\x90" => "(\xd3\x90|\xd3\x91)",
+	"\xd3\x92" => "(\xd3\x92|\xd3\x93)",
+	"\xd3\x94" => "(\xd3\x94|\xd3\x95)",
+	"\xd3\x96" => "(\xd3\x96|\xd3\x97)",
+	"\xd3\x98" => "(\xd3\x98|\xd3\x99)",
+	"\xd3\x9a" => "(\xd3\x9a|\xd3\x9b)",
+	"\xd3\x9c" => "(\xd3\x9c|\xd3\x9d)",
+	"\xd3\x9e" => "(\xd3\x9e|\xd3\x9f)",
+	"\xd3\xa0" => "(\xd3\xa0|\xd3\xa1)",
+	"\xd3\xa2" => "(\xd3\xa2|\xd3\xa3)",
+	"\xd3\xa4" => "(\xd3\xa4|\xd3\xa5)",
+	"\xd3\xa6" => "(\xd3\xa6|\xd3\xa7)",
+	"\xd3\xa8" => "(\xd3\xa8|\xd3\xa9)",
+	"\xd3\xaa" => "(\xd3\xaa|\xd3\xab)",
+	"\xd3\xac" => "(\xd3\xac|\xd3\xad)",
+	"\xd3\xae" => "(\xd3\xae|\xd3\xaf)",
+	"\xd3\xb0" => "(\xd3\xb0|\xd3\xb1)",
+	"\xd3\xb2" => "(\xd3\xb2|\xd3\xb3)",
+	"\xd3\xb4" => "(\xd3\xb4|\xd3\xb5)",
+	"\xd3\xb8" => "(\xd3\xb8|\xd3\xb9)",
+	"\xd4\xb1" => "(\xd4\xb1|\xd5\xa1)",
+	"\xd4\xb2" => "(\xd4\xb2|\xd5\xa2)",
+	"\xd4\xb3" => "(\xd4\xb3|\xd5\xa3)",
+	"\xd4\xb4" => "(\xd4\xb4|\xd5\xa4)",
+	"\xd4\xb5" => "(\xd4\xb5|\xd5\xa5)",
+	"\xd4\xb6" => "(\xd4\xb6|\xd5\xa6)",
+	"\xd4\xb7" => "(\xd4\xb7|\xd5\xa7)",
+	"\xd4\xb8" => "(\xd4\xb8|\xd5\xa8)",
+	"\xd4\xb9" => "(\xd4\xb9|\xd5\xa9)",
+	"\xd4\xba" => "(\xd4\xba|\xd5\xaa)",
+	"\xd4\xbb" => "(\xd4\xbb|\xd5\xab)",
+	"\xd4\xbc" => "(\xd4\xbc|\xd5\xac)",
+	"\xd4\xbd" => "(\xd4\xbd|\xd5\xad)",
+	"\xd4\xbe" => "(\xd4\xbe|\xd5\xae)",
+	"\xd4\xbf" => "(\xd4\xbf|\xd5\xaf)",
+	"\xd5\x80" => "(\xd5\x80|\xd5\xb0)",
+	"\xd5\x81" => "(\xd5\x81|\xd5\xb1)",
+	"\xd5\x82" => "(\xd5\x82|\xd5\xb2)",
+	"\xd5\x83" => "(\xd5\x83|\xd5\xb3)",
+	"\xd5\x84" => "(\xd5\x84|\xd5\xb4)",
+	"\xd5\x85" => "(\xd5\x85|\xd5\xb5)",
+	"\xd5\x86" => "(\xd5\x86|\xd5\xb6)",
+	"\xd5\x87" => "(\xd5\x87|\xd5\xb7)",
+	"\xd5\x88" => "(\xd5\x88|\xd5\xb8)",
+	"\xd5\x89" => "(\xd5\x89|\xd5\xb9)",
+	"\xd5\x8a" => "(\xd5\x8a|\xd5\xba)",
+	"\xd5\x8b" => "(\xd5\x8b|\xd5\xbb)",
+	"\xd5\x8c" => "(\xd5\x8c|\xd5\xbc)",
+	"\xd5\x8d" => "(\xd5\x8d|\xd5\xbd)",
+	"\xd5\x8e" => "(\xd5\x8e|\xd5\xbe)",
+	"\xd5\x8f" => "(\xd5\x8f|\xd5\xbf)",
+	"\xd5\x90" => "(\xd5\x90|\xd6\x80)",
+	"\xd5\x91" => "(\xd5\x91|\xd6\x81)",
+	"\xd5\x92" => "(\xd5\x92|\xd6\x82)",
+	"\xd5\x93" => "(\xd5\x93|\xd6\x83)",
+	"\xd5\x94" => "(\xd5\x94|\xd6\x84)",
+	"\xd5\x95" => "(\xd5\x95|\xd6\x85)",
+	"\xd5\x96" => "(\xd5\x96|\xd6\x86)",
+	"\xe1\xb8\x80" => "(\xe1\xb8\x80|\xe1\xb8\x81)",
+	"\xe1\xb8\x82" => "(\xe1\xb8\x82|\xe1\xb8\x83)",
+	"\xe1\xb8\x84" => "(\xe1\xb8\x84|\xe1\xb8\x85)",
+	"\xe1\xb8\x86" => "(\xe1\xb8\x86|\xe1\xb8\x87)",
+	"\xe1\xb8\x88" => "(\xe1\xb8\x88|\xe1\xb8\x89)",
+	"\xe1\xb8\x8a" => "(\xe1\xb8\x8a|\xe1\xb8\x8b)",
+	"\xe1\xb8\x8c" => "(\xe1\xb8\x8c|\xe1\xb8\x8d)",
+	"\xe1\xb8\x8e" => "(\xe1\xb8\x8e|\xe1\xb8\x8f)",
+	"\xe1\xb8\x90" => "(\xe1\xb8\x90|\xe1\xb8\x91)",
+	"\xe1\xb8\x92" => "(\xe1\xb8\x92|\xe1\xb8\x93)",
+	"\xe1\xb8\x94" => "(\xe1\xb8\x94|\xe1\xb8\x95)",
+	"\xe1\xb8\x96" => "(\xe1\xb8\x96|\xe1\xb8\x97)",
+	"\xe1\xb8\x98" => "(\xe1\xb8\x98|\xe1\xb8\x99)",
+	"\xe1\xb8\x9a" => "(\xe1\xb8\x9a|\xe1\xb8\x9b)",
+	"\xe1\xb8\x9c" => "(\xe1\xb8\x9c|\xe1\xb8\x9d)",
+	"\xe1\xb8\x9e" => "(\xe1\xb8\x9e|\xe1\xb8\x9f)",
+	"\xe1\xb8\xa0" => "(\xe1\xb8\xa0|\xe1\xb8\xa1)",
+	"\xe1\xb8\xa2" => "(\xe1\xb8\xa2|\xe1\xb8\xa3)",
+	"\xe1\xb8\xa4" => "(\xe1\xb8\xa4|\xe1\xb8\xa5)",
+	"\xe1\xb8\xa6" => "(\xe1\xb8\xa6|\xe1\xb8\xa7)",
+	"\xe1\xb8\xa8" => "(\xe1\xb8\xa8|\xe1\xb8\xa9)",
+	"\xe1\xb8\xaa" => "(\xe1\xb8\xaa|\xe1\xb8\xab)",
+	"\xe1\xb8\xac" => "(\xe1\xb8\xac|\xe1\xb8\xad)",
+	"\xe1\xb8\xae" => "(\xe1\xb8\xae|\xe1\xb8\xaf)",
+	"\xe1\xb8\xb0" => "(\xe1\xb8\xb0|\xe1\xb8\xb1)",
+	"\xe1\xb8\xb2" => "(\xe1\xb8\xb2|\xe1\xb8\xb3)",
+	"\xe1\xb8\xb4" => "(\xe1\xb8\xb4|\xe1\xb8\xb5)",
+	"\xe1\xb8\xb6" => "(\xe1\xb8\xb6|\xe1\xb8\xb7)",
+	"\xe1\xb8\xb8" => "(\xe1\xb8\xb8|\xe1\xb8\xb9)",
+	"\xe1\xb8\xba" => "(\xe1\xb8\xba|\xe1\xb8\xbb)",
+	"\xe1\xb8\xbc" => "(\xe1\xb8\xbc|\xe1\xb8\xbd)",
+	"\xe1\xb8\xbe" => "(\xe1\xb8\xbe|\xe1\xb8\xbf)",
+	"\xe1\xb9\x80" => "(\xe1\xb9\x80|\xe1\xb9\x81)",
+	"\xe1\xb9\x82" => "(\xe1\xb9\x82|\xe1\xb9\x83)",
+	"\xe1\xb9\x84" => "(\xe1\xb9\x84|\xe1\xb9\x85)",
+	"\xe1\xb9\x86" => "(\xe1\xb9\x86|\xe1\xb9\x87)",
+	"\xe1\xb9\x88" => "(\xe1\xb9\x88|\xe1\xb9\x89)",
+	"\xe1\xb9\x8a" => "(\xe1\xb9\x8a|\xe1\xb9\x8b)",
+	"\xe1\xb9\x8c" => "(\xe1\xb9\x8c|\xe1\xb9\x8d)",
+	"\xe1\xb9\x8e" => "(\xe1\xb9\x8e|\xe1\xb9\x8f)",
+	"\xe1\xb9\x90" => "(\xe1\xb9\x90|\xe1\xb9\x91)",
+	"\xe1\xb9\x92" => "(\xe1\xb9\x92|\xe1\xb9\x93)",
+	"\xe1\xb9\x94" => "(\xe1\xb9\x94|\xe1\xb9\x95)",
+	"\xe1\xb9\x96" => "(\xe1\xb9\x96|\xe1\xb9\x97)",
+	"\xe1\xb9\x98" => "(\xe1\xb9\x98|\xe1\xb9\x99)",
+	"\xe1\xb9\x9a" => "(\xe1\xb9\x9a|\xe1\xb9\x9b)",
+	"\xe1\xb9\x9c" => "(\xe1\xb9\x9c|\xe1\xb9\x9d)",
+	"\xe1\xb9\x9e" => "(\xe1\xb9\x9e|\xe1\xb9\x9f)",
+	"\xe1\xb9\xa0" => "(\xe1\xb9\xa0|\xe1\xb9\xa1|\xe1\xba\x9b)",
+	"\xe1\xb9\xa2" => "(\xe1\xb9\xa2|\xe1\xb9\xa3)",
+	"\xe1\xb9\xa4" => "(\xe1\xb9\xa4|\xe1\xb9\xa5)",
+	"\xe1\xb9\xa6" => "(\xe1\xb9\xa6|\xe1\xb9\xa7)",
+	"\xe1\xb9\xa8" => "(\xe1\xb9\xa8|\xe1\xb9\xa9)",
+	"\xe1\xb9\xaa" => "(\xe1\xb9\xaa|\xe1\xb9\xab)",
+	"\xe1\xb9\xac" => "(\xe1\xb9\xac|\xe1\xb9\xad)",
+	"\xe1\xb9\xae" => "(\xe1\xb9\xae|\xe1\xb9\xaf)",
+	"\xe1\xb9\xb0" => "(\xe1\xb9\xb0|\xe1\xb9\xb1)",
+	"\xe1\xb9\xb2" => "(\xe1\xb9\xb2|\xe1\xb9\xb3)",
+	"\xe1\xb9\xb4" => "(\xe1\xb9\xb4|\xe1\xb9\xb5)",
+	"\xe1\xb9\xb6" => "(\xe1\xb9\xb6|\xe1\xb9\xb7)",
+	"\xe1\xb9\xb8" => "(\xe1\xb9\xb8|\xe1\xb9\xb9)",
+	"\xe1\xb9\xba" => "(\xe1\xb9\xba|\xe1\xb9\xbb)",
+	"\xe1\xb9\xbc" => "(\xe1\xb9\xbc|\xe1\xb9\xbd)",
+	"\xe1\xb9\xbe" => "(\xe1\xb9\xbe|\xe1\xb9\xbf)",
+	"\xe1\xba\x80" => "(\xe1\xba\x80|\xe1\xba\x81)",
+	"\xe1\xba\x82" => "(\xe1\xba\x82|\xe1\xba\x83)",
+	"\xe1\xba\x84" => "(\xe1\xba\x84|\xe1\xba\x85)",
+	"\xe1\xba\x86" => "(\xe1\xba\x86|\xe1\xba\x87)",
+	"\xe1\xba\x88" => "(\xe1\xba\x88|\xe1\xba\x89)",
+	"\xe1\xba\x8a" => "(\xe1\xba\x8a|\xe1\xba\x8b)",
+	"\xe1\xba\x8c" => "(\xe1\xba\x8c|\xe1\xba\x8d)",
+	"\xe1\xba\x8e" => "(\xe1\xba\x8e|\xe1\xba\x8f)",
+	"\xe1\xba\x90" => "(\xe1\xba\x90|\xe1\xba\x91)",
+	"\xe1\xba\x92" => "(\xe1\xba\x92|\xe1\xba\x93)",
+	"\xe1\xba\x94" => "(\xe1\xba\x94|\xe1\xba\x95)",
+	"\xe1\xba\xa0" => "(\xe1\xba\xa0|\xe1\xba\xa1)",
+	"\xe1\xba\xa2" => "(\xe1\xba\xa2|\xe1\xba\xa3)",
+	"\xe1\xba\xa4" => "(\xe1\xba\xa4|\xe1\xba\xa5)",
+	"\xe1\xba\xa6" => "(\xe1\xba\xa6|\xe1\xba\xa7)",
+	"\xe1\xba\xa8" => "(\xe1\xba\xa8|\xe1\xba\xa9)",
+	"\xe1\xba\xaa" => "(\xe1\xba\xaa|\xe1\xba\xab)",
+	"\xe1\xba\xac" => "(\xe1\xba\xac|\xe1\xba\xad)",
+	"\xe1\xba\xae" => "(\xe1\xba\xae|\xe1\xba\xaf)",
+	"\xe1\xba\xb0" => "(\xe1\xba\xb0|\xe1\xba\xb1)",
+	"\xe1\xba\xb2" => "(\xe1\xba\xb2|\xe1\xba\xb3)",
+	"\xe1\xba\xb4" => "(\xe1\xba\xb4|\xe1\xba\xb5)",
+	"\xe1\xba\xb6" => "(\xe1\xba\xb6|\xe1\xba\xb7)",
+	"\xe1\xba\xb8" => "(\xe1\xba\xb8|\xe1\xba\xb9)",
+	"\xe1\xba\xba" => "(\xe1\xba\xba|\xe1\xba\xbb)",
+	"\xe1\xba\xbc" => "(\xe1\xba\xbc|\xe1\xba\xbd)",
+	"\xe1\xba\xbe" => "(\xe1\xba\xbe|\xe1\xba\xbf)",
+	"\xe1\xbb\x80" => "(\xe1\xbb\x80|\xe1\xbb\x81)",
+	"\xe1\xbb\x82" => "(\xe1\xbb\x82|\xe1\xbb\x83)",
+	"\xe1\xbb\x84" => "(\xe1\xbb\x84|\xe1\xbb\x85)",
+	"\xe1\xbb\x86" => "(\xe1\xbb\x86|\xe1\xbb\x87)",
+	"\xe1\xbb\x88" => "(\xe1\xbb\x88|\xe1\xbb\x89)",
+	"\xe1\xbb\x8a" => "(\xe1\xbb\x8a|\xe1\xbb\x8b)",
+	"\xe1\xbb\x8c" => "(\xe1\xbb\x8c|\xe1\xbb\x8d)",
+	"\xe1\xbb\x8e" => "(\xe1\xbb\x8e|\xe1\xbb\x8f)",
+	"\xe1\xbb\x90" => "(\xe1\xbb\x90|\xe1\xbb\x91)",
+	"\xe1\xbb\x92" => "(\xe1\xbb\x92|\xe1\xbb\x93)",
+	"\xe1\xbb\x94" => "(\xe1\xbb\x94|\xe1\xbb\x95)",
+	"\xe1\xbb\x96" => "(\xe1\xbb\x96|\xe1\xbb\x97)",
+	"\xe1\xbb\x98" => "(\xe1\xbb\x98|\xe1\xbb\x99)",
+	"\xe1\xbb\x9a" => "(\xe1\xbb\x9a|\xe1\xbb\x9b)",
+	"\xe1\xbb\x9c" => "(\xe1\xbb\x9c|\xe1\xbb\x9d)",
+	"\xe1\xbb\x9e" => "(\xe1\xbb\x9e|\xe1\xbb\x9f)",
+	"\xe1\xbb\xa0" => "(\xe1\xbb\xa0|\xe1\xbb\xa1)",
+	"\xe1\xbb\xa2" => "(\xe1\xbb\xa2|\xe1\xbb\xa3)",
+	"\xe1\xbb\xa4" => "(\xe1\xbb\xa4|\xe1\xbb\xa5)",
+	"\xe1\xbb\xa6" => "(\xe1\xbb\xa6|\xe1\xbb\xa7)",
+	"\xe1\xbb\xa8" => "(\xe1\xbb\xa8|\xe1\xbb\xa9)",
+	"\xe1\xbb\xaa" => "(\xe1\xbb\xaa|\xe1\xbb\xab)",
+	"\xe1\xbb\xac" => "(\xe1\xbb\xac|\xe1\xbb\xad)",
+	"\xe1\xbb\xae" => "(\xe1\xbb\xae|\xe1\xbb\xaf)",
+	"\xe1\xbb\xb0" => "(\xe1\xbb\xb0|\xe1\xbb\xb1)",
+	"\xe1\xbb\xb2" => "(\xe1\xbb\xb2|\xe1\xbb\xb3)",
+	"\xe1\xbb\xb4" => "(\xe1\xbb\xb4|\xe1\xbb\xb5)",
+	"\xe1\xbb\xb6" => "(\xe1\xbb\xb6|\xe1\xbb\xb7)",
+	"\xe1\xbb\xb8" => "(\xe1\xbb\xb8|\xe1\xbb\xb9)",
+	"\xe1\xbc\x88" => "(\xe1\xbc\x88|\xe1\xbc\x80)",
+	"\xe1\xbc\x89" => "(\xe1\xbc\x89|\xe1\xbc\x81)",
+	"\xe1\xbc\x8a" => "(\xe1\xbc\x8a|\xe1\xbc\x82)",
+	"\xe1\xbc\x8b" => "(\xe1\xbc\x8b|\xe1\xbc\x83)",
+	"\xe1\xbc\x8c" => "(\xe1\xbc\x8c|\xe1\xbc\x84)",
+	"\xe1\xbc\x8d" => "(\xe1\xbc\x8d|\xe1\xbc\x85)",
+	"\xe1\xbc\x8e" => "(\xe1\xbc\x8e|\xe1\xbc\x86)",
+	"\xe1\xbc\x8f" => "(\xe1\xbc\x8f|\xe1\xbc\x87)",
+	"\xe1\xbc\x98" => "(\xe1\xbc\x98|\xe1\xbc\x90)",
+	"\xe1\xbc\x99" => "(\xe1\xbc\x99|\xe1\xbc\x91)",
+	"\xe1\xbc\x9a" => "(\xe1\xbc\x9a|\xe1\xbc\x92)",
+	"\xe1\xbc\x9b" => "(\xe1\xbc\x9b|\xe1\xbc\x93)",
+	"\xe1\xbc\x9c" => "(\xe1\xbc\x9c|\xe1\xbc\x94)",
+	"\xe1\xbc\x9d" => "(\xe1\xbc\x9d|\xe1\xbc\x95)",
+	"\xe1\xbc\xa8" => "(\xe1\xbc\xa8|\xe1\xbc\xa0)",
+	"\xe1\xbc\xa9" => "(\xe1\xbc\xa9|\xe1\xbc\xa1)",
+	"\xe1\xbc\xaa" => "(\xe1\xbc\xaa|\xe1\xbc\xa2)",
+	"\xe1\xbc\xab" => "(\xe1\xbc\xab|\xe1\xbc\xa3)",
+	"\xe1\xbc\xac" => "(\xe1\xbc\xac|\xe1\xbc\xa4)",
+	"\xe1\xbc\xad" => "(\xe1\xbc\xad|\xe1\xbc\xa5)",
+	"\xe1\xbc\xae" => "(\xe1\xbc\xae|\xe1\xbc\xa6)",
+	"\xe1\xbc\xaf" => "(\xe1\xbc\xaf|\xe1\xbc\xa7)",
+	"\xe1\xbc\xb8" => "(\xe1\xbc\xb8|\xe1\xbc\xb0)",
+	"\xe1\xbc\xb9" => "(\xe1\xbc\xb9|\xe1\xbc\xb1)",
+	"\xe1\xbc\xba" => "(\xe1\xbc\xba|\xe1\xbc\xb2)",
+	"\xe1\xbc\xbb" => "(\xe1\xbc\xbb|\xe1\xbc\xb3)",
+	"\xe1\xbc\xbc" => "(\xe1\xbc\xbc|\xe1\xbc\xb4)",
+	"\xe1\xbc\xbd" => "(\xe1\xbc\xbd|\xe1\xbc\xb5)",
+	"\xe1\xbc\xbe" => "(\xe1\xbc\xbe|\xe1\xbc\xb6)",
+	"\xe1\xbc\xbf" => "(\xe1\xbc\xbf|\xe1\xbc\xb7)",
+	"\xe1\xbd\x88" => "(\xe1\xbd\x88|\xe1\xbd\x80)",
+	"\xe1\xbd\x89" => "(\xe1\xbd\x89|\xe1\xbd\x81)",
+	"\xe1\xbd\x8a" => "(\xe1\xbd\x8a|\xe1\xbd\x82)",
+	"\xe1\xbd\x8b" => "(\xe1\xbd\x8b|\xe1\xbd\x83)",
+	"\xe1\xbd\x8c" => "(\xe1\xbd\x8c|\xe1\xbd\x84)",
+	"\xe1\xbd\x8d" => "(\xe1\xbd\x8d|\xe1\xbd\x85)",
+	"\xe1\xbd\x99" => "(\xe1\xbd\x99|\xe1\xbd\x91)",
+	"\xe1\xbd\x9b" => "(\xe1\xbd\x9b|\xe1\xbd\x93)",
+	"\xe1\xbd\x9d" => "(\xe1\xbd\x9d|\xe1\xbd\x95)",
+	"\xe1\xbd\x9f" => "(\xe1\xbd\x9f|\xe1\xbd\x97)",
+	"\xe1\xbd\xa8" => "(\xe1\xbd\xa8|\xe1\xbd\xa0)",
+	"\xe1\xbd\xa9" => "(\xe1\xbd\xa9|\xe1\xbd\xa1)",
+	"\xe1\xbd\xaa" => "(\xe1\xbd\xaa|\xe1\xbd\xa2)",
+	"\xe1\xbd\xab" => "(\xe1\xbd\xab|\xe1\xbd\xa3)",
+	"\xe1\xbd\xac" => "(\xe1\xbd\xac|\xe1\xbd\xa4)",
+	"\xe1\xbd\xad" => "(\xe1\xbd\xad|\xe1\xbd\xa5)",
+	"\xe1\xbd\xae" => "(\xe1\xbd\xae|\xe1\xbd\xa6)",
+	"\xe1\xbd\xaf" => "(\xe1\xbd\xaf|\xe1\xbd\xa7)",
+	"\xe1\xbe\x88" => "(\xe1\xbe\x88|\xe1\xbe\x80)",
+	"\xe1\xbe\x89" => "(\xe1\xbe\x89|\xe1\xbe\x81)",
+	"\xe1\xbe\x8a" => "(\xe1\xbe\x8a|\xe1\xbe\x82)",
+	"\xe1\xbe\x8b" => "(\xe1\xbe\x8b|\xe1\xbe\x83)",
+	"\xe1\xbe\x8c" => "(\xe1\xbe\x8c|\xe1\xbe\x84)",
+	"\xe1\xbe\x8d" => "(\xe1\xbe\x8d|\xe1\xbe\x85)",
+	"\xe1\xbe\x8e" => "(\xe1\xbe\x8e|\xe1\xbe\x86)",
+	"\xe1\xbe\x8f" => "(\xe1\xbe\x8f|\xe1\xbe\x87)",
+	"\xe1\xbe\x98" => "(\xe1\xbe\x98|\xe1\xbe\x90)",
+	"\xe1\xbe\x99" => "(\xe1\xbe\x99|\xe1\xbe\x91)",
+	"\xe1\xbe\x9a" => "(\xe1\xbe\x9a|\xe1\xbe\x92)",
+	"\xe1\xbe\x9b" => "(\xe1\xbe\x9b|\xe1\xbe\x93)",
+	"\xe1\xbe\x9c" => "(\xe1\xbe\x9c|\xe1\xbe\x94)",
+	"\xe1\xbe\x9d" => "(\xe1\xbe\x9d|\xe1\xbe\x95)",
+	"\xe1\xbe\x9e" => "(\xe1\xbe\x9e|\xe1\xbe\x96)",
+	"\xe1\xbe\x9f" => "(\xe1\xbe\x9f|\xe1\xbe\x97)",
+	"\xe1\xbe\xa8" => "(\xe1\xbe\xa8|\xe1\xbe\xa0)",
+	"\xe1\xbe\xa9" => "(\xe1\xbe\xa9|\xe1\xbe\xa1)",
+	"\xe1\xbe\xaa" => "(\xe1\xbe\xaa|\xe1\xbe\xa2)",
+	"\xe1\xbe\xab" => "(\xe1\xbe\xab|\xe1\xbe\xa3)",
+	"\xe1\xbe\xac" => "(\xe1\xbe\xac|\xe1\xbe\xa4)",
+	"\xe1\xbe\xad" => "(\xe1\xbe\xad|\xe1\xbe\xa5)",
+	"\xe1\xbe\xae" => "(\xe1\xbe\xae|\xe1\xbe\xa6)",
+	"\xe1\xbe\xaf" => "(\xe1\xbe\xaf|\xe1\xbe\xa7)",
+	"\xe1\xbe\xb8" => "(\xe1\xbe\xb8|\xe1\xbe\xb0)",
+	"\xe1\xbe\xb9" => "(\xe1\xbe\xb9|\xe1\xbe\xb1)",
+	"\xe1\xbe\xba" => "(\xe1\xbe\xba|\xe1\xbd\xb0)",
+	"\xe1\xbe\xbb" => "(\xe1\xbe\xbb|\xe1\xbd\xb1)",
+	"\xe1\xbe\xbc" => "(\xe1\xbe\xbc|\xe1\xbe\xb3)",
+	"\xe1\xbf\x88" => "(\xe1\xbf\x88|\xe1\xbd\xb2)",
+	"\xe1\xbf\x89" => "(\xe1\xbf\x89|\xe1\xbd\xb3)",
+	"\xe1\xbf\x8a" => "(\xe1\xbf\x8a|\xe1\xbd\xb4)",
+	"\xe1\xbf\x8b" => "(\xe1\xbf\x8b|\xe1\xbd\xb5)",
+	"\xe1\xbf\x8c" => "(\xe1\xbf\x8c|\xe1\xbf\x83)",
+	"\xe1\xbf\x98" => "(\xe1\xbf\x98|\xe1\xbf\x90)",
+	"\xe1\xbf\x99" => "(\xe1\xbf\x99|\xe1\xbf\x91)",
+	"\xe1\xbf\x9a" => "(\xe1\xbf\x9a|\xe1\xbd\xb6)",
+	"\xe1\xbf\x9b" => "(\xe1\xbf\x9b|\xe1\xbd\xb7)",
+	"\xe1\xbf\xa8" => "(\xe1\xbf\xa8|\xe1\xbf\xa0)",
+	"\xe1\xbf\xa9" => "(\xe1\xbf\xa9|\xe1\xbf\xa1)",
+	"\xe1\xbf\xaa" => "(\xe1\xbf\xaa|\xe1\xbd\xba)",
+	"\xe1\xbf\xab" => "(\xe1\xbf\xab|\xe1\xbd\xbb)",
+	"\xe1\xbf\xac" => "(\xe1\xbf\xac|\xe1\xbf\xa5)",
+	"\xe1\xbf\xb8" => "(\xe1\xbf\xb8|\xe1\xbd\xb8)",
+	"\xe1\xbf\xb9" => "(\xe1\xbf\xb9|\xe1\xbd\xb9)",
+	"\xe1\xbf\xba" => "(\xe1\xbf\xba|\xe1\xbd\xbc)",
+	"\xe1\xbf\xbb" => "(\xe1\xbf\xbb|\xe1\xbd\xbd)",
+	"\xe1\xbf\xbc" => "(\xe1\xbf\xbc|\xe1\xbf\xb3)",
+	"\xe2\x84\xa6" => "(\xe2\x84\xa6|\xcf\x89)",
+	"\xe2\x84\xaa" => "(\xe2\x84\xaa|k)",
+	"\xe2\x84\xab" => "(\xe2\x84\xab|\xc3\xa5)",
+	"\xe2\x85\xa0" => "(\xe2\x85\xa0|\xe2\x85\xb0)",
+	"\xe2\x85\xa1" => "(\xe2\x85\xa1|\xe2\x85\xb1)",
+	"\xe2\x85\xa2" => "(\xe2\x85\xa2|\xe2\x85\xb2)",
+	"\xe2\x85\xa3" => "(\xe2\x85\xa3|\xe2\x85\xb3)",
+	"\xe2\x85\xa4" => "(\xe2\x85\xa4|\xe2\x85\xb4)",
+	"\xe2\x85\xa5" => "(\xe2\x85\xa5|\xe2\x85\xb5)",
+	"\xe2\x85\xa6" => "(\xe2\x85\xa6|\xe2\x85\xb6)",
+	"\xe2\x85\xa7" => "(\xe2\x85\xa7|\xe2\x85\xb7)",
+	"\xe2\x85\xa8" => "(\xe2\x85\xa8|\xe2\x85\xb8)",
+	"\xe2\x85\xa9" => "(\xe2\x85\xa9|\xe2\x85\xb9)",
+	"\xe2\x85\xaa" => "(\xe2\x85\xaa|\xe2\x85\xba)",
+	"\xe2\x85\xab" => "(\xe2\x85\xab|\xe2\x85\xbb)",
+	"\xe2\x85\xac" => "(\xe2\x85\xac|\xe2\x85\xbc)",
+	"\xe2\x85\xad" => "(\xe2\x85\xad|\xe2\x85\xbd)",
+	"\xe2\x85\xae" => "(\xe2\x85\xae|\xe2\x85\xbe)",
+	"\xe2\x85\xaf" => "(\xe2\x85\xaf|\xe2\x85\xbf)",
+	"\xe2\x92\xb6" => "(\xe2\x92\xb6|\xe2\x93\x90)",
+	"\xe2\x92\xb7" => "(\xe2\x92\xb7|\xe2\x93\x91)",
+	"\xe2\x92\xb8" => "(\xe2\x92\xb8|\xe2\x93\x92)",
+	"\xe2\x92\xb9" => "(\xe2\x92\xb9|\xe2\x93\x93)",
+	"\xe2\x92\xba" => "(\xe2\x92\xba|\xe2\x93\x94)",
+	"\xe2\x92\xbb" => "(\xe2\x92\xbb|\xe2\x93\x95)",
+	"\xe2\x92\xbc" => "(\xe2\x92\xbc|\xe2\x93\x96)",
+	"\xe2\x92\xbd" => "(\xe2\x92\xbd|\xe2\x93\x97)",
+	"\xe2\x92\xbe" => "(\xe2\x92\xbe|\xe2\x93\x98)",
+	"\xe2\x92\xbf" => "(\xe2\x92\xbf|\xe2\x93\x99)",
+	"\xe2\x93\x80" => "(\xe2\x93\x80|\xe2\x93\x9a)",
+	"\xe2\x93\x81" => "(\xe2\x93\x81|\xe2\x93\x9b)",
+	"\xe2\x93\x82" => "(\xe2\x93\x82|\xe2\x93\x9c)",
+	"\xe2\x93\x83" => "(\xe2\x93\x83|\xe2\x93\x9d)",
+	"\xe2\x93\x84" => "(\xe2\x93\x84|\xe2\x93\x9e)",
+	"\xe2\x93\x85" => "(\xe2\x93\x85|\xe2\x93\x9f)",
+	"\xe2\x93\x86" => "(\xe2\x93\x86|\xe2\x93\xa0)",
+	"\xe2\x93\x87" => "(\xe2\x93\x87|\xe2\x93\xa1)",
+	"\xe2\x93\x88" => "(\xe2\x93\x88|\xe2\x93\xa2)",
+	"\xe2\x93\x89" => "(\xe2\x93\x89|\xe2\x93\xa3)",
+	"\xe2\x93\x8a" => "(\xe2\x93\x8a|\xe2\x93\xa4)",
+	"\xe2\x93\x8b" => "(\xe2\x93\x8b|\xe2\x93\xa5)",
+	"\xe2\x93\x8c" => "(\xe2\x93\x8c|\xe2\x93\xa6)",
+	"\xe2\x93\x8d" => "(\xe2\x93\x8d|\xe2\x93\xa7)",
+	"\xe2\x93\x8e" => "(\xe2\x93\x8e|\xe2\x93\xa8)",
+	"\xe2\x93\x8f" => "(\xe2\x93\x8f|\xe2\x93\xa9)",
+	"\xef\xbc\xa1" => "(\xef\xbc\xa1|\xef\xbd\x81)",
+	"\xef\xbc\xa2" => "(\xef\xbc\xa2|\xef\xbd\x82)",
+	"\xef\xbc\xa3" => "(\xef\xbc\xa3|\xef\xbd\x83)",
+	"\xef\xbc\xa4" => "(\xef\xbc\xa4|\xef\xbd\x84)",
+	"\xef\xbc\xa5" => "(\xef\xbc\xa5|\xef\xbd\x85)",
+	"\xef\xbc\xa6" => "(\xef\xbc\xa6|\xef\xbd\x86)",
+	"\xef\xbc\xa7" => "(\xef\xbc\xa7|\xef\xbd\x87)",
+	"\xef\xbc\xa8" => "(\xef\xbc\xa8|\xef\xbd\x88)",
+	"\xef\xbc\xa9" => "(\xef\xbc\xa9|\xef\xbd\x89)",
+	"\xef\xbc\xaa" => "(\xef\xbc\xaa|\xef\xbd\x8a)",
+	"\xef\xbc\xab" => "(\xef\xbc\xab|\xef\xbd\x8b)",
+	"\xef\xbc\xac" => "(\xef\xbc\xac|\xef\xbd\x8c)",
+	"\xef\xbc\xad" => "(\xef\xbc\xad|\xef\xbd\x8d)",
+	"\xef\xbc\xae" => "(\xef\xbc\xae|\xef\xbd\x8e)",
+	"\xef\xbc\xaf" => "(\xef\xbc\xaf|\xef\xbd\x8f)",
+	"\xef\xbc\xb0" => "(\xef\xbc\xb0|\xef\xbd\x90)",
+	"\xef\xbc\xb1" => "(\xef\xbc\xb1|\xef\xbd\x91)",
+	"\xef\xbc\xb2" => "(\xef\xbc\xb2|\xef\xbd\x92)",
+	"\xef\xbc\xb3" => "(\xef\xbc\xb3|\xef\xbd\x93)",
+	"\xef\xbc\xb4" => "(\xef\xbc\xb4|\xef\xbd\x94)",
+	"\xef\xbc\xb5" => "(\xef\xbc\xb5|\xef\xbd\x95)",
+	"\xef\xbc\xb6" => "(\xef\xbc\xb6|\xef\xbd\x96)",
+	"\xef\xbc\xb7" => "(\xef\xbc\xb7|\xef\xbd\x97)",
+	"\xef\xbc\xb8" => "(\xef\xbc\xb8|\xef\xbd\x98)",
+	"\xef\xbc\xb9" => "(\xef\xbc\xb9|\xef\xbd\x99)",
+	"\xef\xbc\xba" => "(\xef\xbc\xba|\xef\xbd\x9a)",
+	"\xf0\x90\x90\x80" => "(\xf0\x90\x90\x80|\xf0\x90\x90\xa8)",
+	"\xf0\x90\x90\x81" => "(\xf0\x90\x90\x81|\xf0\x90\x90\xa9)",
+	"\xf0\x90\x90\x82" => "(\xf0\x90\x90\x82|\xf0\x90\x90\xaa)",
+	"\xf0\x90\x90\x83" => "(\xf0\x90\x90\x83|\xf0\x90\x90\xab)",
+	"\xf0\x90\x90\x84" => "(\xf0\x90\x90\x84|\xf0\x90\x90\xac)",
+	"\xf0\x90\x90\x85" => "(\xf0\x90\x90\x85|\xf0\x90\x90\xad)",
+	"\xf0\x90\x90\x86" => "(\xf0\x90\x90\x86|\xf0\x90\x90\xae)",
+	"\xf0\x90\x90\x87" => "(\xf0\x90\x90\x87|\xf0\x90\x90\xaf)",
+	"\xf0\x90\x90\x88" => "(\xf0\x90\x90\x88|\xf0\x90\x90\xb0)",
+	"\xf0\x90\x90\x89" => "(\xf0\x90\x90\x89|\xf0\x90\x90\xb1)",
+	"\xf0\x90\x90\x8a" => "(\xf0\x90\x90\x8a|\xf0\x90\x90\xb2)",
+	"\xf0\x90\x90\x8b" => "(\xf0\x90\x90\x8b|\xf0\x90\x90\xb3)",
+	"\xf0\x90\x90\x8c" => "(\xf0\x90\x90\x8c|\xf0\x90\x90\xb4)",
+	"\xf0\x90\x90\x8d" => "(\xf0\x90\x90\x8d|\xf0\x90\x90\xb5)",
+	"\xf0\x90\x90\x8e" => "(\xf0\x90\x90\x8e|\xf0\x90\x90\xb6)",
+	"\xf0\x90\x90\x8f" => "(\xf0\x90\x90\x8f|\xf0\x90\x90\xb7)",
+	"\xf0\x90\x90\x90" => "(\xf0\x90\x90\x90|\xf0\x90\x90\xb8)",
+	"\xf0\x90\x90\x91" => "(\xf0\x90\x90\x91|\xf0\x90\x90\xb9)",
+	"\xf0\x90\x90\x92" => "(\xf0\x90\x90\x92|\xf0\x90\x90\xba)",
+	"\xf0\x90\x90\x93" => "(\xf0\x90\x90\x93|\xf0\x90\x90\xbb)",
+	"\xf0\x90\x90\x94" => "(\xf0\x90\x90\x94|\xf0\x90\x90\xbc)",
+	"\xf0\x90\x90\x95" => "(\xf0\x90\x90\x95|\xf0\x90\x90\xbd)",
+	"\xf0\x90\x90\x96" => "(\xf0\x90\x90\x96|\xf0\x90\x90\xbe)",
+	"\xf0\x90\x90\x97" => "(\xf0\x90\x90\x97|\xf0\x90\x90\xbf)",
+	"\xf0\x90\x90\x98" => "(\xf0\x90\x90\x98|\xf0\x90\x91\x80)",
+	"\xf0\x90\x90\x99" => "(\xf0\x90\x90\x99|\xf0\x90\x91\x81)",
+	"\xf0\x90\x90\x9a" => "(\xf0\x90\x90\x9a|\xf0\x90\x91\x82)",
+	"\xf0\x90\x90\x9b" => "(\xf0\x90\x90\x9b|\xf0\x90\x91\x83)",
+	"\xf0\x90\x90\x9c" => "(\xf0\x90\x90\x9c|\xf0\x90\x91\x84)",
+	"\xf0\x90\x90\x9d" => "(\xf0\x90\x90\x9d|\xf0\x90\x91\x85)",
+	"\xf0\x90\x90\x9e" => "(\xf0\x90\x90\x9e|\xf0\x90\x91\x86)",
+	"\xf0\x90\x90\x9f" => "(\xf0\x90\x90\x9f|\xf0\x90\x91\x87)",
+	"\xf0\x90\x90\xa0" => "(\xf0\x90\x90\xa0|\xf0\x90\x91\x88)",
+	"\xf0\x90\x90\xa1" => "(\xf0\x90\x90\xa1|\xf0\x90\x91\x89)",
+	"\xf0\x90\x90\xa2" => "(\xf0\x90\x90\xa2|\xf0\x90\x91\x8a)",
+	"\xf0\x90\x90\xa3" => "(\xf0\x90\x90\xa3|\xf0\x90\x91\x8b)",
+	"\xf0\x90\x90\xa4" => "(\xf0\x90\x90\xa4|\xf0\x90\x91\x8c)",
+	"\xf0\x90\x90\xa5" => "(\xf0\x90\x90\xa5|\xf0\x90\x91\x8d)"
+);

Property changes on: tags/2.8.3/wb/search/search_convert_ul.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Revision Id HeadURL
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: tags/2.8.3/wb/search/index.php
===================================================================
--- tags/2.8.3/wb/search/index.php	(nonexistent)
+++ tags/2.8.3/wb/search/index.php	(revision 1610)
@@ -0,0 +1,56 @@
+<?php
+/**
+ *
+ * @category        frontend
+ * @package         search
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// Include the config file
+require('../config.php');
+
+// Required page details
+$page_id = 0;
+$page_description = '';
+$page_keywords = '';
+define('PAGE_ID', 0);
+define('ROOT_PARENT', 0);
+define('PARENT', 0);
+define('LEVEL', 0);
+define('PAGE_TITLE', $TEXT['SEARCH']);
+define('MENU_TITLE', $TEXT['SEARCH']);
+define('MODULE', '');
+define('VISIBILITY', 'public');
+define('PAGE_CONTENT', 'search.php');
+
+// Find out what the search template is
+// $database = new database();
+$query_template = $database->query("SELECT value FROM ".TABLE_PREFIX."search WHERE name = 'template' LIMIT 1");
+$fetch_template = $query_template->fetchRow();
+$template = $fetch_template['value'];
+if($template != '') {
+	define('TEMPLATE', $template);
+}
+unset($template);
+
+//Get the referrer page ID if it exists
+if(isset($_REQUEST['referrer']) && is_numeric($_REQUEST['referrer']) && intval($_REQUEST['referrer']) > 0) {
+	define('REFERRER_ID', intval($_REQUEST['referrer']));
+} else {
+	define('REFERRER_ID', 0);
+}
+
+// Include index (wrapper) file
+require(WB_PATH.'/index.php');
+
+?>
\ No newline at end of file

Property changes on: tags/2.8.3/wb/search/index.php
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/wb/htaccess.txt
===================================================================
--- tags/2.8.3/wb/htaccess.txt	(nonexistent)
+++ tags/2.8.3/wb/htaccess.txt	(revision 1610)
@@ -0,0 +1,2 @@
+# Example .htaccess wich allows to parse .html as php
+AddType application/x-httpd-php .html
\ No newline at end of file

Property changes on: tags/2.8.3/wb/htaccess.txt
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: tags/2.8.3/wb
===================================================================
--- tags/2.8.3/wb	(nonexistent)
+++ tags/2.8.3/wb	(revision 1610)

Property changes on: tags/2.8.3/wb
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,7 ##
+Kopie von upgrade-script.php
+config.php
+media
+pages
+pwgen.php
+robots.txt
+warten.gif
Index: tags/2.8.3/INSTALL
===================================================================
--- tags/2.8.3/INSTALL	(nonexistent)
+++ tags/2.8.3/INSTALL	(revision 1610)
@@ -0,0 +1,34 @@
+WebsiteBaker 2.8.2 SP2 Installation Instructions
+=================================================
+
+Step 1 - Preparing your existing webspace:
+- Login to your webspace account and create a database.
+
+Step 2 - Download WebsiteBaker from http://www.websitebaker2.org/en/download/latest-version.php
+- Download "WebsiteBaker 2.8.2 [R1528] including ServicePack 2"
+- Unzip the package to your lokal machine
+- Download "Hotfix 2011/11/29"
+- Unzip the package to your lokal machine and overwrite "WebsiteBaker 2.8.2 [R1528] including ServicePack 2"
+- rename config.php.new to config.php
+- change favicon to your own
+- upload all files to your Webspace.
+
+Step 3 - Installation:
+- call in your Browser www.yourdomainname.com
+- follow the Installation Instructions
+
+Step 4 - Installation folder:
+- Delete folder install
+
+Step 5 - Upgrade-script:
+- Delete File upgrade-script.php
+
+Step 6 Fill in Admintool Droplets if empty after install
+- After login to the backend, check droplet by menu admin-tools
+- if droplet is empty go to Menu Add-ons advanced
+- in Execute module files manually File: "upgrade.php" or File: "install.php"
+- select droplets and click Execute
+
+Have fun with WB 2.8.2 SP2
+
+

Property changes on: tags/2.8.3/INSTALL
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/UPGRADE
===================================================================
--- tags/2.8.3/UPGRADE	(nonexistent)
+++ tags/2.8.3/UPGRADE	(revision 1610)
@@ -0,0 +1,51 @@
+WebsiteBaker 2.8.2 SP2 UPGRADE Instructions
+=================================================
+
+Upgrade from WB 2.8.0 to WB 2.8.2 SP2
+Upgrade from WB 2.8.1 to WB 2.8.2 SP2
+- need full package "WebsiteBaker 2.8.2 [R1528] including ServicePack 2"
+
+Upgrade from WB 2.8.2 to WB 2.8.2 SP2
+- download "ServicePack 2 for WebsiteBaker 2.8.2 all fixes"
+
+Download WebsiteBaker from http://www.websitebaker2.org/en/download/latest-version.php
+
+Step 1 - Preparing your existing system:
+- Login to your backend and set "Settings" - "Backend-Theme" to "wb_theme" and don't forget to store.
+- Backup your changed Files in modules and templates folder like .css, .js, wb_config.js for the Editor
+
+Step 2 - Download Instructions
+- Download "WebsiteBaker 2.8.2 [R1528] including ServicePack 2"
+- If you already installed WB 2.8.2
+  Download "ServicePack 2 for WebsiteBaker 2.8.2 all fixes"
+
+Step 3 - upgrading
+- Unzip the packages to your lokal machine
+- upload all files to your Webspace.
+- Be shure that existing files are overwritten.
+
+Step 4 - Cleanup Files and Folders (if exist) on your Webspace:
+- Delete File admin/preferences/details.php
+- Delete File admin/preferences/email.php
+- Delete File admin/preferences/password.php
+- Delete Folder modules/backup
+- Delete Folder modules/droplets/js
+- Delete Folder templates/classic_theme
+
+Step 5 - Upgrade the database:
+- call in your Browser www.yourdomainname. com/upgrade-script.php
+
+Step 6 - Delete the upgrade-script:
+- Delete File upgrade-script.php
+
+Step 7 - Delete the config.php.new:
+- to solve the problem with overwritten config.php by upgrade to 2.8.2  we upload a config.php.new.
+
+Step 8 Upgrade Admintool Droplets
+- do a backup from your droplets
+- unzip your backup local and upload your own droplets to /modules/droplets/example
+- go to Menu Add-ons advanced
+- in Execute module files manually File: File: "install.php"
+- select droplets and click Execute
+
+Have fun with WB 2.8.2 SP2
Index: tags/2.8.3/LICENSE
===================================================================
--- tags/2.8.3/LICENSE	(nonexistent)
+++ tags/2.8.3/LICENSE	(revision 1610)
@@ -0,0 +1,22 @@
+License
+=======
+WebsiteBaker is released under the GNU General Public License,
+Copyright by Ryan Djurovich.
+All changes since 2009 copyright by Website Baker Org. e.V.
+Please refer to the COPYING file for a copy of the license.
+
+LICENSE INFORMATION
+
+WebsiteBaker is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+WebsiteBaker is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. 
\ No newline at end of file

Property changes on: tags/2.8.3/LICENSE
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/COPYING
===================================================================
--- tags/2.8.3/COPYING	(nonexistent)
+++ tags/2.8.3/COPYING	(revision 1610)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Property changes on: tags/2.8.3/COPYING
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3/README
===================================================================
--- tags/2.8.3/README	(nonexistent)
+++ tags/2.8.3/README	(revision 1610)
@@ -0,0 +1,45 @@
+General Information
+===================
+WebsiteBaker is a PHP-based content management system
+which enables users to produce websites with ease.
+Features include a template-based front-end, modulated
+and multi-level page support, multi-user administration,
+and much much more!
+
+License
+=======
+WebsiteBaker is released under the GNU General Public License,
+Copyright (C) 2004-2009 Ryan Djurovich.
+Copyright (C) 2009-2011 Website Baker Org. e.V.
+Please refer to the COPYING file for a copy of the license.
+
+Installation
+============
+Please refer to the INSTALL file for instructions on installation.
+
+Usage
+=====
+Before using WebsiteBaker please note: you must not remove/change any
+copyright notices in the any code contained in this package.
+Also, it is appreciated if you leave a link somewhere on your website,
+which links to the WebsiteBaker website. (http://www.websitebaker2.org/) 
+
+Support
+=======
+For information about finding help:
+http://www.websitebaker2.org/forum/
+
+Community
+=========
+For more information about finding help:
+http://www.websitebaker2.org/forum/
+
+Bugs
+====
+To submit a bug:
+http://www.websitebaker2.org/
+
+Contribute
+==========
+For information about how to contribute (donating, etc):
+http://www.websitebaker2.org

Property changes on: tags/2.8.3/README
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1,4 ##
+Id
+Revision
+HeadURL
+Date
\ No newline at end of property
Index: tags/2.8.3
===================================================================
--- tags/2.8.3	(nonexistent)
+++ tags/2.8.3	(revision 1610)

Property changes on: tags/2.8.3
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+.project
+favicon.ico
+nbproject
